{"version":3,"file":"ngx-dynamic-components-core.mjs","sources":["../../../../projects/core/src/lib/utils/parsers.ts","../../../../projects/core/src/lib/utils/helpers.ts","../../../../projects/core/src/lib/utils/component-data-context.ts","../../../../projects/core/src/lib/properties/descriptor.ts","../../../../projects/core/src/lib/properties/models.ts","../../../../projects/core/src/lib/properties/maps.ts","../../../../projects/core/src/lib/services/core.service.ts","../../../../projects/core/src/lib/components/base-dynamic-component.ts","../../../../projects/core/src/lib/services/renderer.service.ts","../../../../projects/core/src/lib/models.ts","../../../../projects/core/src/lib/components/base-ui-component.ts","../../../../projects/core/src/lib/components/ngx-dynamic-component.ts","../../../../projects/core/src/lib/ui-components/container/container.component.ts","../../../../projects/core/src/lib/ui-components/container/container.component.html","../../../../projects/core/src/lib/ui-components/text/text.component.ts","../../../../projects/core/src/lib/ui-components/button/button.component.ts","../../../../projects/core/src/lib/components/form-element-component.ts","../../../../projects/core/src/lib/ui-components/input/input.examples.ts","../../../../projects/core/src/lib/ui-components/input/input.component.ts","../../../../projects/core/src/lib/ui-components/icon/icon.component.ts","../../../../projects/core/src/lib/ui-components/label/label.component.ts","../../../../projects/core/src/lib/ui-components/radio-group/radio-group.component.ts","../../../../projects/core/src/lib/ui-components/textarea/textarea.component.ts","../../../../projects/core/src/lib/ui-components/form/form.component.ts","../../../../projects/core/src/lib/ui-components/form/form.component.html","../../../../projects/core/src/lib/ui-components/select/select.component.ts","../../../../projects/core/src/lib/components/base-html-element.ts","../../../../projects/core/src/lib/html-elements/a/a.component.ts","../../../../projects/core/src/lib/html-elements/ul/ul.element.ts","../../../../projects/core/src/lib/html-elements/li/li.element.ts","../../../../projects/core/src/lib/html-elements/ol/ol.element.ts","../../../../projects/core/src/lib/html-elements/index.ts","../../../../projects/core/src/lib/ui-components/repeater/repeater.examples.ts","../../../../projects/core/src/lib/ui-components/repeater/repeater.component.ts","../../../../projects/core/src/lib/ui-components/repeater/repeater.component.html","../../../../projects/core/src/lib/ui-components/register.ts","../../../../projects/core/src/lib/core.module.ts","../../../../projects/core/src/lib/utils/renderer.ts","../../../../projects/core/src/lib/designer/components/draggable-component.ts","../../../../projects/core/src/lib/designer/creators/component-creator.ts","../../../../projects/core/src/lib/designer/creators/html-creator.ts","../../../../projects/core/src/lib/designer/creators/dc-creator.ts","../../../../projects/core/src/lib/designer/creators/dc-container-creator.ts","../../../../projects/core/src/lib/designer/designer-renderer.service.ts","../../../../projects/core/src/lib/designer/components/ngx-dynamic-designer-component.ts","../../../../projects/core/src/lib/designer/components/designer/component-properties/component-properties.component.ts","../../../../projects/core/src/lib/designer/components/designer/component-properties/component-properties.component.html","../../../../projects/core/src/lib/designer/components/designer/designer.component.ts","../../../../projects/core/src/lib/designer/components/designer/designer.component.html","../../../../projects/core/src/lib/designer/ui-components/designer-form.component.ts","../../../../projects/core/src/lib/designer/ui-components/designer-container.component.ts","../../../../projects/core/src/lib/designer/ui-components/index.ts","../../../../projects/core/src/lib/designer/designer.module.ts","../../../../projects/core/src/public_api.ts","../../../../projects/core/src/ngx-dynamic-components-core.ts"],"sourcesContent":["import * as iXml from 'isomorphic-xml2js';\r\nimport { BaseDynamicComponent } from '../components/base-dynamic-component';\r\nimport { UIModel } from '../models';\r\n\r\n/**\r\n * Gets component from uiModel by id\r\n * @param uiModel UIModel.\r\n * @param id Component identifier.\r\n */\r\nexport function getComponentById(\r\n  uiModel: UIModel,\r\n  id: string\r\n): BaseDynamicComponent | undefined {\r\n  function traverseUiModel(\r\n    uModel: UIModel,\r\n    predicate: (u) => boolean\r\n  ): UIModel {\r\n    if (predicate(uModel)) {\r\n      return uModel;\r\n    }\r\n\r\n    if (uModel.children?.length) {\r\n      for (const chileModel of uModel.children) {\r\n        const res = traverseUiModel(chileModel, predicate);\r\n        if (res) {\r\n          return res;\r\n        }\r\n      }\r\n    }\r\n\r\n    return null;\r\n  }\r\n  const componentUIModel = traverseUiModel(uiModel, (uim) => uim.id === id);\r\n  return componentUIModel?.getComponent();\r\n}\r\n\r\n/**\r\n * A helper method that sets value based on path.\r\n * e.g. setValue({}, 'obj.prop1.value', 22) will create a corresponding object and assign value = 22\r\n */\r\nexport function setValue(\r\n  objectValue: Record<string, unknown>,\r\n  path: string,\r\n  value: any\r\n): void {\r\n  if (!objectValue) {\r\n    objectValue = {};\r\n  }\r\n\r\n  if (path === '$' || path === '') {\r\n    Object.assign(objectValue, value);\r\n    return;\r\n  }\r\n\r\n  if (path.startsWith('$.')) {\r\n    path = path.substring(2);\r\n  }\r\n\r\n  const props = path.indexOf('/') > 0 ? path.split('/') : path.split('.');\r\n  let res: any = objectValue;\r\n\r\n  for (let i = 0; i < props.length - 1; i++) {\r\n    if (typeof res[props[i]] !== 'object') {\r\n      res[props[i]] = {};\r\n    }\r\n    res = res[props[i]];\r\n  }\r\n\r\n  res[props[props.length - 1]] = value;\r\n}\r\n\r\n/**\r\n * a helper methods that query JS Object for a value based on path. obj.subObject.value\r\n */\r\nexport function queryValue(\r\n  obj: any,\r\n  path: string,\r\n  defaultValue: any = null\r\n): any {\r\n  if (!path) {\r\n    return defaultValue;\r\n  }\r\n\r\n  if (path === '$') {\r\n    return obj;\r\n  }\r\n\r\n  if (path.startsWith('$.')) {\r\n    path = path.substring(2);\r\n  }\r\n  path = path.replace('}', '');\r\n  path = path.replace('{', '');\r\n\r\n  const props = path.indexOf('/') > 0 ? path.split('/') : path.split('.');\r\n\r\n  let res = obj;\r\n  for (const p of props) {\r\n    res = res[p];\r\n    if (!res && res !== 0) {\r\n      return res || defaultValue;\r\n    }\r\n  }\r\n\r\n  return res;\r\n}\r\n\r\nexport function parseXmlString(xmlString: string): any {\r\n  let result = null;\r\n\r\n  const ops = {\r\n    explicitChildren: true,\r\n    preserveChildrenOrder: true,\r\n  };\r\n\r\n  iXml.parseString(xmlString, ops, (err, res) => {\r\n    if (res) {\r\n      // need to clone result as it would mutate instance\r\n      result = JSON.parse(JSON.stringify(res));\r\n    }\r\n    if (err) {\r\n      // quite dirty way to get meaningful error message\r\n      let msg = err.message.substring(err.message.indexOf('12px\">') + 6);\r\n      msg = msg.substring(0, msg.indexOf('</div>'));\r\n      throw new Error(msg);\r\n    }\r\n  });\r\n\r\n  return result;\r\n}\r\n\r\n\r\nexport function parseXmlStringPromise(xmlString: string): Promise<any> {\r\n\r\n  return new Promise((s, e) => {\r\n    const ops = {\r\n      explicitChildren: true,\r\n      preserveChildrenOrder: true,\r\n    };\r\n\r\n    iXml.parseString(xmlString, ops, (err, res) => {\r\n      if (res) {\r\n        // need to clone result as it would mutate instance\r\n        const xmlObject = JSON.parse(JSON.stringify(res));\r\n        return s(xmlObject);\r\n      }\r\n      if (err) {\r\n        // quite dirty way to get meaningful error message\r\n        let msg = err.message.substring(err.message.indexOf('12px\">') + 6);\r\n        msg = msg.substring(0, msg.indexOf('</div>'));\r\n        return e(msg);\r\n      }\r\n      return null;\r\n    });\r\n  });\r\n}\r\n","import { XMLResult } from '../models';\r\n\r\n/**\r\n * Safe get item by index from array.\r\n * @param arr - array.\r\n * @param idx - index.\r\n */\r\nexport function getItemByIndex(arr: any, idx: number): any {\r\n  if (arr && arr.length > idx) {\r\n    return arr[idx];\r\n  }\r\n}\r\n/**\r\n * Convering Javascript string Map to object\r\n * @param map - map to convert.\r\n * @param excludeKeys - array of keys to exclude from result.\r\n */\r\nexport function mapToObj(map: Map<string, any>, excludeKeys: string[] = []): {[key: string]: any} {\r\n  const obj = {};\r\n  map.forEach((value, key) => {\r\n    if (!excludeKeys.includes(key)) {\r\n      obj[key] = value;\r\n    }\r\n  });\r\n  return obj;\r\n}\r\n\r\n/** TODO: check if still used */\r\nexport function getCssPath(el: Node, parent: Element): string {\r\n  if (el instanceof Element) {\r\n    const path = [];\r\n    while (el !== parent) {\r\n      let selector = el.nodeName.toLowerCase();\r\n      let sib: Node = el;\r\n      let nth = 1;\r\n      while (sib && sib !== parent) {\r\n        sib = sib.previousSibling;\r\n        if (sib instanceof Element) {\r\n          nth++;\r\n        }\r\n      }\r\n      selector += `:nth-child(${nth})`;\r\n      path.unshift(selector);\r\n      el = el.parentNode;\r\n    }\r\n    return path.join(' > ');\r\n  }\r\n}\r\n\r\nexport const kebabStrToCamel = (s: string) => s.replace(/([-][a-z])/ig, ($1) => $1.toUpperCase().replace('-', ''));\r\n\r\nexport function setFields(fields: Array<string|string[]>, data: Record<string, unknown>[]): Record<string, unknown>[] {\r\n  if (!fields) {\r\n    return data;\r\n  }\r\n  return fields.reduce((res: any, field) => {\r\n    if (Array.isArray(field)) {\r\n      res[field[1]] = data[field[0]];\r\n    } else {\r\n      res[field] = data[field];\r\n    }\r\n    return res;\r\n  }, {});\r\n}\r\n\r\nexport function formatObjToJsonStr(obj: any): string {\r\n  if (obj === null || obj === undefined) {\r\n    return '';\r\n  }\r\n\r\n  if (typeof obj === 'string') {\r\n    return obj;\r\n  }\r\n  return JSON.stringify(obj, null, '\\t');\r\n}\r\n\r\nexport function toXMLResult(xmlObj: any): XMLResult {\r\n  return {\r\n    type: xmlObj['#name'],\r\n    attrs: xmlObj.$ || {},\r\n    childNodes: xmlObj.$$,\r\n    content: xmlObj._\r\n  };\r\n}\r\n\r\n/**\r\n * Parses function signature to function name and parameter.\r\n * @param funcSignature Function signature.\r\n */\r\nexport function parseArgFunction(funcSignature = ''): string[] {\r\n  const match = funcSignature.match(/(.{1,})\\((.{0,})\\)/);\r\n  if (!match) {\r\n    return [funcSignature];\r\n  }\r\n\r\n  return [match[1], ...match[2].split(',')];\r\n}\r\n\r\nexport function getStringEventArgs(eventName: string): string | number | undefined {\r\n  const [, fParam] = parseArgFunction(eventName);\r\n  if (fParam && fParam.startsWith('\\'') && fParam.endsWith('\\'')) {\r\n    return fParam.replace(/'/g, '');\r\n  } else if (/^\\d+(\\.{0,1}\\d+)?$/.test(fParam)) {\r\n    return Number(fParam);\r\n  }\r\n}\r\n\r\nexport function kebabToCamelCase(str?: string): string {\r\n  return str?.replace(/-([a-z])/g, (s, char) => char.toUpperCase());\r\n}\r\n","import { Observable, Subject } from 'rxjs';\r\n\r\nexport type DataChanges = { propertyName: string; propertyValue: any }[];\r\n\r\nexport class ComponentDataContext {\r\n    private readonly _uiValueChanged$ = new Subject<DataChanges>();\r\n    readonly uiValueChanged$: Observable<DataChanges> =\r\n      this._uiValueChanged$.asObservable();\r\n    [name: string]: any;\r\n  \r\n    setUIValue(name: string | object, value?: object | undefined): void {\r\n      if (typeof name === 'string') {\r\n        this[name] = value;\r\n        this._uiValueChanged$.next([{ propertyName: name, propertyValue: value }]);\r\n      } else if (typeof name === 'object') {\r\n        const flatObject = name as Record<string, any>;\r\n        const entries = Object.entries(flatObject);\r\n        entries.forEach(([propertyName, propertyValue]) => {\r\n          this[propertyName] = propertyValue;\r\n        });\r\n        this._uiValueChanged$.next(entries.map(([propertyName, propertyValue]) => ({ propertyName, propertyValue })));\r\n      }\r\n    }\r\n  }","import { PropDescriptor } from './models';\r\n\r\nexport function propDescription(description: PropDescriptor): (target: any, key: string) => void {\r\n  function decorate(target: any, key: string): void {\r\n    let properties = Object.hasOwn(target, 'properties') ? target.properties : [];\r\n\r\n    const newProp = {name: key, ...description};\r\n    const existIndex = properties.findIndex(p => p.name === key);\r\n\r\n    if (existIndex === -1) {\r\n      properties.push(newProp);\r\n    } else {\r\n      properties.splice(existIndex, 1, newProp);\r\n    }\r\n\r\n    let proto = Object.getPrototypeOf(target);\r\n\r\n    while (Object.hasOwn(proto, 'properties')) {\r\n      // Filter overridden properties.\r\n      const protoProps = proto.properties.filter(protoP => !properties.map(p => p.name).includes(protoP.name));\r\n      properties = properties.concat(protoProps);\r\n      proto = Object.getPrototypeOf(proto);\r\n    }\r\n\r\n    target.properties = properties.sort((a: any, b: any) => {\r\n      if (a.name < b.name) {\r\n        return -1;\r\n      }\r\n      if (a.name > b.name) {\r\n        return 1;\r\n      }\r\n      return 0;\r\n    });\r\n  }\r\n  return decorate;\r\n}\r\n","/* eslint-disable @typescript-eslint/naming-convention */\r\nimport { OptionValue, AttributesMap, UIModel } from '../models';\r\nimport { propDescription } from './descriptor';\r\n\r\n// eslint-disable-next-line no-shadow\r\nexport enum PropTypes {\r\n  EVENT = 'event',\r\n  PROPERTY = 'property'\r\n}\r\n\r\nexport interface PropDescriptor {\r\n  description: string;\r\n  example: string;\r\n  link?: string;\r\n  type?: PropTypes;\r\n  defaultValue?: string;\r\n}\r\n\r\nexport interface UIModelProperty extends PropDescriptor {\r\n  name: string;\r\n}\r\n\r\n// eslint-disable-next-line no-shadow\r\nexport enum PropertyCategories {\r\n  Layout = 'Layout Properties',\r\n  Container = 'Container Properties',\r\n  Main = 'Main Properties',\r\n  Appearance = 'Appearance Properties',\r\n  Validation = 'Validation Properties'\r\n}\r\n\r\nexport interface ComponentProperty {\r\n  name: string;\r\n  label?: string;\r\n  category?: PropertyCategories;\r\n  values?: Array<string | number | boolean>;\r\n  valuesFn?: (prefix?: string) => Array<string | number | boolean>;\r\n\r\n  // @deprecated\r\n  isContainerProperty?: boolean;\r\n  combo?: Array<(string|number|OptionValue)[]|string>;\r\n  descriptor?: PropDescriptor;\r\n}\r\n\r\nexport abstract class BaseProperties implements AttributesMap {\r\n  @propDescription({\r\n    description: 'On init event handler name.',\r\n    example: 'OnComponentInit',\r\n    type: PropTypes.EVENT\r\n  })\r\n  onInit?: string;\r\n\r\n  @propDescription({\r\n    description: 'On destroy event handler name.',\r\n    example: 'OnComponentDestroy',\r\n    type: PropTypes.EVENT\r\n  })\r\n  onDestroy?: string;\r\n\r\n  @propDescription({\r\n    description: 'Component identifier',\r\n    example: 'component1'\r\n  })\r\n  id?: string;\r\n\r\n  @propDescription({\r\n    description: 'Is component visible',\r\n    example: 'false'\r\n  })\r\n  visible?: boolean;\r\n}\r\n\r\nexport abstract class StyleProperties extends BaseProperties {\r\n  @propDescription({\r\n    description: 'Element\\'s width.',\r\n    example: '100%'\r\n  })\r\n  width?: string;\r\n\r\n  @propDescription({\r\n    description: 'Element\\'s height.',\r\n    example: '100%'\r\n  })\r\n  height?: string;\r\n\r\n  @propDescription({\r\n    description: 'Element\\'s padding.',\r\n    example: '10px 5px'\r\n  })\r\n  padding?: string;\r\n\r\n  @propDescription({\r\n    description: 'Element\\'s margin.',\r\n    example: '5px 3px 5px 10px'\r\n  })\r\n  margin?: string;\r\n\r\n  @propDescription({\r\n    description: 'Element\\'s min width.',\r\n    example: '10px'\r\n  })\r\n  'min-width'?: string;\r\n\r\n  @propDescription({\r\n    description: 'Element\\'s min height.',\r\n    example: '10px'\r\n  })\r\n  'min-height'?: string;\r\n\r\n  @propDescription({\r\n    description: 'Element\\'s background.',\r\n    example: '100%'\r\n  })\r\n  background?: string;\r\n\r\n  @propDescription({\r\n    description: 'Element\\'s color.',\r\n    example: '100%'\r\n  })\r\n  color?: string;\r\n\r\n  @propDescription({\r\n    description: 'Element\\'s font weight.',\r\n    example: '100%'\r\n  })\r\n  'font-weight'?: string;\r\n\r\n  @propDescription({\r\n    description: 'Element\\'s font size.',\r\n    example: '100%'\r\n  })\r\n  'font-size'?: string;\r\n\r\n  @propDescription({\r\n    description: 'Element\\'s font style.',\r\n    example: '100%'\r\n  })\r\n  'font-style'?: string;\r\n\r\n  @propDescription({\r\n    description: 'Element\\'s border.',\r\n    example: '100%'\r\n  })\r\n  border?: string;\r\n\r\n  @propDescription({\r\n    description: 'Css class.',\r\n    example: 'btn-primary'\r\n  })\r\n  class?: string;\r\n\r\n  @propDescription({\r\n    description: 'Css styles',\r\n    example: 'overflow-x: hidden;'\r\n  })\r\n  style?: string;\r\n}\r\n\r\nexport abstract class BindingProperties extends StyleProperties {\r\n  @propDescription({\r\n    description: 'Path to data model property.',\r\n    example: 'name'\r\n  })\r\n  binding?: string;\r\n}\r\n\r\nexport abstract class DataModelProperties extends BindingProperties {\r\n  @propDescription({\r\n    description: 'Component Data Source.',\r\n    example: '{{responseContext}}/dataset'\r\n  })\r\n  dataSource?: string;\r\n}\r\n\r\nexport abstract class ContainerProperties extends StyleProperties {\r\n  @propDescription({\r\n    description: 'Array of children ui Models',\r\n    example: '[{type: \\'text\\', itemProperties: {}}]',\r\n  })\r\n  children?: UIModel[];\r\n}\r\n\r\nexport const StylePropertiesList = ['width', 'height', 'padding', 'margin', 'min-height', 'min-width', 'background', 'color',\r\n  'font-size', 'font-weight', 'font-style', 'overflow'];\r\n","import { ComponentProperty, PropertyCategories } from './models';\r\n\r\n// background, color, font\r\n/**\r\n * Item properties can be used in any component.\r\n */\r\nexport const controlProperties = new Map<string, ComponentProperty>([\r\n  // General Component properties\r\n  ['width', { name: 'width', label: 'Width', category: PropertyCategories.Layout }],\r\n  ['height', { name: 'height', label: 'Height', category: PropertyCategories.Layout }],\r\n  ['min-width', { name: 'min-width', label: 'Min width', category: PropertyCategories.Layout }],\r\n  ['min-height', { name: 'min-height', label: 'Min height', category: PropertyCategories.Layout }],\r\n  ['margin', { name: 'margin', label: 'Margin', category: PropertyCategories.Layout }],\r\n  ['padding', { name: 'padding', label: 'Padding', category: PropertyCategories.Layout }],\r\n\r\n  // Field properties\r\n  ['label', { name: 'label', label: 'Label', category: PropertyCategories.Main }],\r\n  ['labelPosition', {\r\n    name: 'labelPosition', label: 'Label Position', category: PropertyCategories.Main,\r\n    values: ['left', 'top', 'right', 'bottom']\r\n  }],\r\n  ['labelWidth', { name: 'labelWidth', label: 'Label Width', category: PropertyCategories.Layout }],\r\n\r\n  // Appearence\r\n  ['background', { name: 'background', label: 'Background', category: PropertyCategories.Appearance }],\r\n  ['color', { name: 'color', label: 'Color', category: PropertyCategories.Appearance }],\r\n  ['font-weight', {\r\n    name: 'font-weight', label: 'Font weight', category: PropertyCategories.Appearance,\r\n    values: ['bold', 'bolder', 'lighter', 100, 200, 300, 400, 500, 600, 700, 800, 900]\r\n  }],\r\n  ['font-size', {\r\n    name: 'font-size', label: 'Font size', category: PropertyCategories.Appearance,\r\n    values: ['large', 'larger', 'medium', 'small', 'smaller', 'x-large', 'xx-large', 'x-small', 'xx-small']\r\n  }],\r\n  ['font-style', {\r\n    name: 'font-style', label: 'Font style', category: PropertyCategories.Appearance,\r\n    values: ['italic', 'oblique', 'normal']\r\n  }],\r\n  ['border', {\r\n    name: 'border', label: 'Border', category: PropertyCategories.Appearance,\r\n    combo: [[{ label: 'all', value: 'border' }, { label: 'top', value: 'border-top' }, { label: 'left', value: 'border-left' },\r\n    { label: 'right', value: 'border-right' }, { label: 'bottom', value: 'border-bottom' }], 'border-value']\r\n  }],\r\n\r\n  // Validation properties\r\n  ['required', {name: 'required', label: 'Required', category: PropertyCategories.Validation,\r\n    values: ['true', 'false']}],\r\n  ['minlength', {name: 'minlength', label: 'Min length', category: PropertyCategories.Validation}],\r\n  ['maxlength', {name: 'maxlength', label: 'Max length', category: PropertyCategories.Validation}],\r\n  ['pattern', {name: 'pattern', label: 'Pattern', category: PropertyCategories.Validation}]\r\n]);\r\n","import { Injectable } from '@angular/core';\r\nimport { ComponentDescriptor, UIModel, XMLResult, BaseUIComponentConstructor, BaseHTMLElementConstructor } from '../models';\r\nimport { toXMLResult, parseXmlString } from '../utils';\r\nimport { controlProperties, UIModelProperty } from '../properties';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class CoreService {\r\n  // eslint-disable-next-line @typescript-eslint/naming-convention\r\n  private static readonly COMPONENTS_REGISTER = new Map<string, ComponentDescriptor>();\r\n\r\n  public static registerComponent(desc: ComponentDescriptor, version?: string): void {\r\n    const { name, propertiesDescriptor } = desc;\r\n    // @deprecated\r\n    if (propertiesDescriptor) {\r\n      propertiesDescriptor.forEach(prop => {\r\n        controlProperties.set(`${name}:${prop[0]}`, prop[1]);\r\n      });\r\n    }\r\n    const key = version ? `${name}:${version}` : name;\r\n    CoreService.COMPONENTS_REGISTER.set(key, desc);\r\n  }\r\n\r\n  public static getComponent(type: string): BaseUIComponentConstructor | BaseHTMLElementConstructor {\r\n    if (CoreService.COMPONENTS_REGISTER.has(type)) {\r\n      return CoreService.COMPONENTS_REGISTER.get(type).component;\r\n    }\r\n\r\n    throw new Error(`Component ${type} is not registered`);\r\n  }\r\n\r\n  public static getComponentDescriptor(type: string, version?: string): ComponentDescriptor {\r\n    if (version && CoreService.COMPONENTS_REGISTER.has(`${type}:${version}`)) {\r\n      return CoreService.COMPONENTS_REGISTER.get(`${type}:${version}`);\r\n    }\r\n\r\n    if (CoreService.COMPONENTS_REGISTER.has(type)) {\r\n      return CoreService.COMPONENTS_REGISTER.get(type);\r\n    }\r\n\r\n    throw new Error(`ComponentDescriptor ${type} is not registered`);\r\n  }\r\n\r\n  public static getComponentProperties(type: string): UIModelProperty[] {\r\n    try {\r\n      const desc = CoreService.getComponentDescriptor(type);\r\n      return desc.itemProperties.prototype.properties;\r\n    } catch (e) {\r\n      console.warn(`Not able to get properties for ${type}`)\r\n      throw e;\r\n    }\r\n  }\r\n\r\n  public static getListOfComponents2(): Array<ComponentDescriptor> {\r\n    return Array.from(CoreService.COMPONENTS_REGISTER.values());\r\n  }\r\n\r\n  public static getComponentsRegistryList(): [string, ComponentDescriptor][] {\r\n    return Array.from(CoreService.COMPONENTS_REGISTER.entries());\r\n  }\r\n\r\n  // skips versions\r\n  public static getListOfComponents(): Array<ComponentDescriptor> {\r\n    return Array.from(CoreService.COMPONENTS_REGISTER.entries())\r\n      .filter((entry) => !entry[0].includes(':'))\r\n      .map(entry => entry[1]);\r\n  }\r\n\r\n  public static parseXMLModel(uiModelXml: string, version?: string): UIModel {\r\n    if (!uiModelXml) {\r\n      return null;\r\n    }\r\n    const res = parseXmlString(uiModelXml);\r\n\r\n    if (res) {\r\n      const type = Object.keys(res)[0];\r\n      let xmlObj = res[type];\r\n      if(typeof xmlObj === 'string' && xmlObj) {\r\n        throw Error(`Invalid XML, please make sure file can't start with comment <!-- -->`);\r\n      }\r\n      if (!xmlObj) {\r\n        xmlObj = { type };\r\n      }\r\n      if (typeof xmlObj === 'object') {\r\n        xmlObj['#name'] = type;\r\n        return CoreService.getUIModel(toXMLResult(xmlObj), version);\r\n      }\r\n    }\r\n  }\r\n\r\n  public static getUIModel(xmlRes: XMLResult, version?: string): UIModel {\r\n    const itemProperties = xmlRes.attrs;\r\n    const type = xmlRes.type;\r\n\r\n      if (itemProperties.disabled === 'true') {\r\n        itemProperties.disabled = true;\r\n        // eslint-disable-next-line no-prototype-builtins\r\n      } else if (Object.hasOwn(itemProperties, 'disabled')) {\r\n        itemProperties.disabled = null;\r\n      }\r\n\r\n      if (CoreService.COMPONENTS_REGISTER.has(type)) {\r\n        const uiModel: UIModel = {\r\n          type,\r\n          itemProperties\r\n        };\r\n\r\n        if (itemProperties.id) {\r\n          uiModel.id = itemProperties.id;\r\n        }\r\n        try {\r\n          const descr = CoreService.getComponentDescriptor(type, version); // CoreService.COMPONENTS_REGISTER.get(type);\r\n          if (typeof descr.parseUIModel === 'function') {\r\n            const typeUIModel = descr.parseUIModel(xmlRes);\r\n            uiModel.itemProperties = { ...itemProperties, ...typeUIModel.itemProperties };\r\n            if (typeUIModel.children) {\r\n              uiModel.children = typeUIModel.children;\r\n            }\r\n          }\r\n        } catch(e) {\r\n          console.error(e);\r\n          throw new Error(`Error parsing <${type} ..> : ${e}`);\r\n        }\r\n        if (xmlRes.childNodes && !uiModel.children) {\r\n          uiModel.children = xmlRes.childNodes\r\n            .filter(n => n['#name'] !== '#comment')\r\n            .map((r: any) => CoreService.getUIModel(toXMLResult(r), 'designer'));\r\n        }\r\n        return uiModel;\r\n      } else {\r\n        throw Error(`No component for tag ${type}`);\r\n      }\r\n\r\n  }\r\n}\r\n","import { OnInit, EventEmitter, OnChanges, SimpleChanges, OnDestroy, Directive, Injector, Output, ViewContainerRef } from '@angular/core';\r\nimport { UIModel, ComponentEvent } from '../models';\r\nimport { getStringEventArgs, kebabToCamelCase, parseArgFunction, queryValue } from '../utils';\r\nimport { StyleProperties, StylePropertiesList, BaseProperties } from '../properties';\r\nimport { Subject } from 'rxjs';\r\nimport { RendererService } from '../services/renderer.service';\r\n\r\n@Directive()\r\nexport abstract class BaseDynamicComponent<T = StyleProperties> implements OnInit, OnChanges, OnDestroy { // eslint-disable-line\r\n    dataModel: any;\r\n    uiModel: UIModel<T> = {\r\n      type: undefined,\r\n      itemProperties: ({} as T)\r\n    };\r\n    containerRef?: ViewContainerRef;\r\n    children?: BaseDynamicComponent[];\r\n    abstract eventHandlers: EventEmitter<ComponentEvent>;\r\n    @Output() render = new EventEmitter();\r\n    changedDataModel = new EventEmitter();\r\n    element?: HTMLElement;\r\n    parent?: BaseDynamicComponent;\r\n    protected eventResults = new Map<string, any>();\r\n    protected eventResults$ = new Subject<string>();\r\n\r\n    constructor(protected rendererService?: RendererService, public injector?: Injector) { }\r\n\r\n    async ngOnInit(): Promise<void> {\r\n      this.setHostStyles();\r\n      this.emitEvent((this.properties as BaseProperties)?.onInit);\r\n    }\r\n\r\n    abstract ngOnChanges(changes: SimpleChanges): Promise<void>;\r\n\r\n    abstract ngOnDestroy(): Promise<void>;\r\n\r\n    abstract create(element: HTMLElement): void;\r\n\r\n    generateUIModel(): UIModel<T> {\r\n      return {\r\n        ...this.uiModel,\r\n        itemProperties: this.properties,\r\n        children: this.children?.map(c => c.generateUIModel())\r\n      };\r\n    }\r\n\r\n    setEventHandlerResult(event: string, result: any): void {\r\n      if (event) {\r\n        this.eventResults.set(event, result);\r\n        this.eventResults$.next(event);\r\n      }\r\n    }\r\n\r\n    get componentType(): string {\r\n      return this.uiModel.type;\r\n    }\r\n\r\n    get properties(): T {\r\n      return this.uiModel.itemProperties;\r\n    }\r\n\r\n    get attrs(): T {\r\n      return this.uiModel.itemProperties;\r\n    }\r\n\r\n    show(): void {\r\n      if (this.element) {\r\n        this.element.classList.remove('hidden');\r\n      }\r\n    }\r\n    hide(): void {\r\n      if (this.element) {\r\n        this.element.classList.add('hidden');\r\n      }\r\n    }\r\n\r\n    protected emitEvent(funcSign?: string, parameters: any = null, eventName?: string): void {\r\n      if (funcSign) {\r\n        const fParsed = parseArgFunction(funcSign);\r\n        const eventHandler = fParsed[0];\r\n        let parameter = fParsed[1];\r\n        if (parameter?.startsWith('$') && parameters === null) {\r\n          parameters = queryValue(this.dataModel, parameter);\r\n          // eslint-disable-next-line\r\n          parameter = parameter.replace('\\$.', '').replace(/\\.\\w/g, (matched) => matched.replace('.', '').toUpperCase());\r\n        }\r\n\r\n        const eventParameters = {\r\n          uiModel: this.uiModel,\r\n          argsKey: parameter,\r\n          argsValue: getStringEventArgs(funcSign) ?? parameters\r\n        };\r\n\r\n        if (parameter) {\r\n          eventParameters[parameter] = eventParameters.argsValue;\r\n        }\r\n\r\n        this.eventHandlers.emit({\r\n          eventHandler,\r\n          eventName,\r\n          parameters: eventParameters,\r\n          sender: this\r\n        });\r\n      }\r\n    }\r\n\r\n    protected setHostStyles(): void {\r\n      if (this.element && this.properties) {\r\n\r\n        const props = this.properties as StyleProperties;\r\n        if (props.class) {\r\n          this.element.className += ' ' + props.class;\r\n        }\r\n\r\n        props.style?.split(';').forEach(s => {\r\n          if (this.element) {\r\n              const [key, val] = s.split(':').map(v => v.trim());\r\n              this.element.style[kebabToCamelCase(key) as any] = val;\r\n          }\r\n        });\r\n\r\n        StylePropertiesList.forEach(b => {\r\n          if (props && Object.hasOwn(props, b) && this.element) {\r\n            const val = (props as any)[b];\r\n            this.element.style[b as any] = val;\r\n          }\r\n        });\r\n      }\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { BaseUIComponentConstructor, Categories, ComponentEvent, UIModel } from '../models';\r\nimport { NGXDynamicComponent } from '../components/ngx-dynamic-component';\r\nimport { BaseDynamicComponent } from '../components/base-dynamic-component';\r\nimport { CoreService } from './core.service';\r\n\r\nexport type UIComponent = BaseDynamicComponent | NGXDynamicComponent;\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class RendererService {\r\n  renderChildren(parentComponent: BaseDynamicComponent): BaseDynamicComponent[] {\r\n    if (!parentComponent.containerRef || !parentComponent.uiModel) {\r\n      return;\r\n    }\r\n    parentComponent.containerRef.clear();\r\n    return parentComponent.uiModel?.children?.map(m => this.createComponent(parentComponent, m));\r\n  }\r\n\r\n  createComponent(\r\n    parentComponent: UIComponent,\r\n    uiModel: UIModel,\r\n    containerRef = parentComponent.containerRef,\r\n    dataModel = parentComponent.dataModel): BaseDynamicComponent  {\r\n    try {\r\n      const descriptor = CoreService.getComponentDescriptor(uiModel.type);\r\n      const componentClass = descriptor.component;\r\n      let component: BaseDynamicComponent;\r\n      if (descriptor.category === Categories.HTML) {\r\n        const baseHtml = componentClass as any;\r\n        component = new baseHtml(this, parentComponent.injector);\r\n        component.dataModel = dataModel;\r\n        component.uiModel = uiModel;\r\n        component.create(containerRef.element.nativeElement);\r\n      } else if (componentClass.prototype instanceof BaseDynamicComponent) {\r\n        const componentRef = containerRef.createComponent(\r\n          componentClass as BaseUIComponentConstructor\r\n        );\r\n        component = componentRef.instance as BaseDynamicComponent;\r\n        component.dataModel = dataModel;\r\n        component.uiModel = uiModel;\r\n        component.create(componentRef.location.nativeElement);\r\n      }\r\n\r\n      if (component) {\r\n        component.element.classList.add('dc-element');\r\n        uiModel.getComponent = () => component;\r\n        component.changedDataModel.subscribe((evt) => {\r\n          parentComponent.changedDataModel.emit(evt);\r\n        });\r\n        component.eventHandlers.subscribe((evt: ComponentEvent) => {\r\n          if (parentComponent as any['root']) {\r\n            evt.rootUIModel = parentComponent.uiModel;\r\n          }\r\n          parentComponent.eventHandlers.emit(evt);\r\n        });\r\n        component.parent = parentComponent as BaseDynamicComponent;\r\n        return component;\r\n      } else {\r\n        throw new Error('Not able to create component');\r\n      }\r\n    } catch (error) {\r\n      console.error(error);\r\n      throw new Error(`Failed to create component ${uiModel.type}`);\r\n    }\r\n  }\r\n}\r\n","/* eslint-disable @typescript-eslint/naming-convention */\r\n// import { BaseUIComponentConstructor, BaseHTMLElementConstructor } from './utils';\r\nimport { ComponentProperty } from './properties';\r\nimport { BaseDynamicComponent } from './components/base-dynamic-component';\r\nimport { BaseHTMLElement } from './components/base-html-element';\r\nimport { BaseUIComponent } from './components/base-ui-component';\r\n\r\ntype UIAction = (sender: UIModel, dataModel: any, uiModel: UIModel) => void;\r\n\r\nexport type BaseUIComponentConstructor = new () => BaseUIComponent;\r\nexport type BaseHTMLElementConstructor = new () => BaseHTMLElement;\r\n\r\nexport interface AttributesMap {\r\n    width?: string;\r\n    height?: string;\r\n    margin?: string;\r\n    padding?: string;\r\n    label?: string;\r\n    [key: string]: any;\r\n}\r\n\r\nexport interface ComponentExample<T = UIModel> {\r\n  uiModel: T|string;\r\n  dataModel: any;\r\n  title: string;\r\n  scripts?: string;\r\n  description?: string;\r\n}\r\n\r\ntype AttributesMapConstructor = new () => AttributesMap;\r\n\r\nexport interface ChildComponent {\r\n  tag: string;\r\n  properties: ComponentProperty[];\r\n  hasChildren?: boolean;\r\n}\r\n\r\nexport interface ComponentDescriptor<ComponentType = BaseUIComponentConstructor|BaseHTMLElementConstructor,\r\n  PropertiesType = AttributesMapConstructor> {\r\n  packageName: string;\r\n  label: string;\r\n  category: string;\r\n  name: string;\r\n  description: string;\r\n  itemProperties: PropertiesType;\r\n  component: ComponentType;\r\n  example?: ComponentExample | ComponentExample[];\r\n  defaultModel?: UIModel | string;\r\n  propertiesDescriptor?: Array<[string, ComponentProperty]>;\r\n  parseUIModel?: (xmlData: XMLResult) => UIModel;\r\n  children?: ChildComponent[] | false;\r\n}\r\n\r\nexport abstract class UIModel<T = AttributesMap> {\r\n  id?: string;\r\n  type: string;\r\n  itemProperties?: T;\r\n  children?: UIModel[];\r\n  getComponent?(): BaseDynamicComponent<T> {\r\n    return null;\r\n  }\r\n}\r\n\r\nexport interface SelectedComponent {\r\n  uiModel: UIModel;\r\n  cssPath: string;\r\n}\r\n\r\nexport interface OptionValue {\r\n  label: string;\r\n  value: any;\r\n}\r\n\r\n// eslint-disable-next-line no-shadow\r\nexport const enum Categories {\r\n  Basic = 'Basic',\r\n  HTML = 'HTML',\r\n  Containers = 'Containers',\r\n  Data = 'Data',\r\n  CustomControls = 'Custom Controls',\r\n  DataTable = 'Data table'\r\n}\r\n\r\n// eslint-disable-next-line no-shadow\r\nexport enum DesignerVisibility {\r\n  // eslint-disable-next-line\r\n  UIModel = 1,\r\n  Scripts = 2,\r\n  All = 3\r\n}\r\n\r\nexport interface XMLResult {\r\n  type: string;\r\n  attrs: AttributesMap;\r\n  content: string;\r\n  childNodes: any[];\r\n}\r\n\r\nexport interface ComponentEvent {\r\n  eventName: string;\r\n  eventHandler: string;\r\n  rootUIModel?: UIModel;\r\n  parameters?: {\r\n    uiModel?: UIModel;\r\n    argsKey?: string;\r\n    argsValue?: any;\r\n    [key: string]: any;\r\n  };\r\n  sender?: BaseDynamicComponent;\r\n}\r\n","import { OnDestroy, HostBinding, SimpleChanges, OnChanges, Directive, Input, Output, EventEmitter,\r\n  ViewContainerRef, OnInit, ViewChild } from '@angular/core';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport { AttributesMap, UIModel, ComponentEvent } from '../models';\r\nimport { kebabStrToCamel, queryValue, setValue, ComponentDataContext, DataChanges } from '../utils';\r\nimport { StyleProperties, DataModelProperties, StylePropertiesList, BaseProperties } from '../properties';\r\nimport { InputProperties } from '../ui-components/input/input.component';\r\nimport { BaseDynamicComponent } from './base-dynamic-component';\r\n\r\n@Directive()\r\n// eslint-disable-next-line\r\nexport class BaseUIComponent<T extends object = StyleProperties> extends BaseDynamicComponent<T> implements OnDestroy, OnChanges, OnInit {\r\n    @HostBinding('style.width') width?: string;\r\n    @HostBinding('style.min-width') minWidth?: string;\r\n    @HostBinding('style.max-width') maxWidth?: string;\r\n    @HostBinding('style.height') height?: string;\r\n    @HostBinding('style.min-height') minHeight?: string;\r\n    @HostBinding('style.max-height') maxHeight?: string;\r\n    @HostBinding('style.padding') padding?: string;\r\n    @HostBinding('style.margin') margin?: string;\r\n    @HostBinding('style.display') display?: string;\r\n    @HostBinding('style.border-left') borderLeft?: string;\r\n    @HostBinding('style.border-top') borderTop?: string;\r\n    @HostBinding('style.border-right') borderRight?: string;\r\n    @HostBinding('style.border-bottom') borderBottom?: string;\r\n    @HostBinding('style.background') background?: string;\r\n    @HostBinding('class') classAttr?: string;\r\n\r\n    @Input() declare dataModel: any;\r\n    @Input() uiModel: UIModel<T> = {\r\n      type: undefined,\r\n      itemProperties: {} as T\r\n    };\r\n    @Output() eventHandlers = new EventEmitter<ComponentEvent>();\r\n    @Output() changedDataModel = new EventEmitter();\r\n    @ViewChild('vc', {read: ViewContainerRef, static: true}) declare containerRef?: ViewContainerRef;\r\n\r\n    private dataModelHandlers = new Map<string, (val: unknown) => void>();\r\n\r\n    protected readonly hostBindings = ['width', 'height', 'padding', 'margin', 'background', 'display',\r\n    'minHeight', 'maxHeight', 'minWidth', 'maxWidth', 'visible'];\r\n    private readonly borders = ['border-left', 'border-top', 'border-right', 'border-bottom'];\r\n    protected destroy$ = new Subject();\r\n\r\n    public declare children?: BaseDynamicComponent[];\r\n\r\n    async ngOnInit(): Promise<void> {\r\n      this.children = this.rendererService.renderChildren(this);\r\n      await super.ngOnInit();\r\n      this.subscribeOnDataModel();\r\n    }\r\n\r\n    async ngOnDestroy(): Promise<void> {\r\n      this.emitEvent((this.properties as BaseProperties).onDestroy);\r\n      this.destroy$.next(null);\r\n      this.destroy$.complete();\r\n    }\r\n\r\n    async ngOnChanges({dataModel, uiModel}: SimpleChanges): Promise<void> {\r\n      if (dataModel && !dataModel.firstChange && this.dataModel !== dataModel.currentValue) {\r\n        this.dataModel = dataModel.currentValue;\r\n      }\r\n\r\n      if (uiModel && !uiModel.firstChange) {\r\n        this.uiModel = uiModel.currentValue;\r\n        this.setHostStyles();\r\n      }\r\n    }\r\n\r\n    create(locationElement: HTMLElement): void {\r\n      this.element = locationElement;\r\n    }\r\n\r\n    get componentDataModel(): any {\r\n      if (Object.hasOwn(this.properties, 'dataSource')) {\r\n        const value = (this.properties as DataModelProperties).dataSource;\r\n        if (typeof value === 'object') {\r\n          return value;\r\n        } else if (typeof value === 'string' && Object.hasOwn(this.dataModel, value)) {\r\n          return this.dataModel[value];\r\n        }\r\n      }\r\n\r\n      if (Object.hasOwn(this.properties, 'binding')) {\r\n        const path = (this.properties as DataModelProperties).binding;\r\n        // TODO: Handle case for Array type.\r\n        if (!Array.isArray(this.dataModel)) {\r\n          return queryValue(this.dataModel, path);\r\n        }\r\n      }\r\n\r\n      if (Object.hasOwn(this.properties, 'value')) {\r\n        return (this.properties as InputProperties).value;\r\n      }\r\n    }\r\n\r\n    set componentDataModel(val) {\r\n      if (Object.hasOwn(this.properties, 'binding')) {\r\n        const path = (this.properties as DataModelProperties).binding;\r\n        setValue(this.dataModel, path, val);\r\n      }\r\n    }\r\n\r\n    get itemStyles(): {[key: string]: string} {\r\n      return this.getStyles(this.properties);\r\n    }\r\n\r\n    getStyles(properties: StyleProperties = {}, stylesList = StylePropertiesList): {[key: string]: string} {\r\n      return stylesList.reduce((styles, prop) => {\r\n        if (Object.hasOwn(properties, prop)) {\r\n          styles[prop] = this.getPropValue(properties, prop);\r\n        }\r\n        return styles;\r\n      }, {});\r\n    }\r\n\r\n    public addDataPropertyHandler(property: string | undefined, handler: (val: unknown) => void): void {\r\n      if (!property || !handler) {\r\n        return;\r\n      }\r\n      this.dataModelHandlers.set(property, handler);\r\n    }\r\n\r\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n    protected onDataChanged(properties: DataChanges): void {}\r\n\r\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n    protected afterComponentDataModelChanged(): void {}\r\n\r\n    protected setHostStyles(): void {\r\n      super.setHostStyles();\r\n      if (this.properties) {\r\n        this.setBorder(this.properties);\r\n      }\r\n    }\r\n\r\n    private getPropValue(properties: AttributesMap, prop: string): any {\r\n      const val = properties[prop];\r\n      if (prop === 'font-size') {\r\n        if (!isNaN(properties[prop])) {\r\n          return `${val}px`;\r\n        }\r\n      }\r\n      return val;\r\n    }\r\n\r\n    private setBorder(properties: StyleProperties): void {\r\n      const border = properties.border;\r\n      if (typeof border === 'string') {\r\n        const [prop, value] = border.split('|');\r\n        if (prop === 'border') {\r\n          this.borders.forEach(b => {\r\n            this[kebabStrToCamel(b)] = value;\r\n          });\r\n        } else {\r\n          this[kebabStrToCamel(prop)] = value;\r\n        }\r\n      }\r\n\r\n      this.hostBindings.forEach(prop => {\r\n        if (Object.hasOwn(properties, prop) && properties[prop]) {\r\n          this[prop] = properties[prop];\r\n        }\r\n      });\r\n    }\r\n\r\n    private subscribeOnDataModel(): void {\r\n      (this.dataModel as ComponentDataContext)?.uiValueChanged$\r\n      ?.pipe(takeUntil(this.destroy$))\r\n      .subscribe(data => {\r\n        this.onDataChanged(data);\r\n\r\n        let hasComponentDataChanged = false;\r\n        data.forEach(({ propertyName, propertyValue }) => {\r\n          const dataModelProp = `$.${propertyName}`;\r\n          if (this.dataModelHandlers.has(dataModelProp)) {\r\n            hasComponentDataChanged = true;\r\n            this.dataModelHandlers.get(dataModelProp)(propertyValue);\r\n          }\r\n        });\r\n        if (hasComponentDataChanged) {\r\n          this.afterComponentDataModelChanged();\r\n        }\r\n      });\r\n    }\r\n}\r\n","import { Component, OnInit, Input, EventEmitter, Output, ViewContainerRef,\r\n  ViewChild, Injector, OnChanges, SimpleChanges } from '@angular/core';\r\nimport { animationFrameScheduler } from 'rxjs';\r\nimport { UIModel, ComponentEvent } from '../models';\r\nimport { CoreService } from '../services/core.service';\r\nimport { RendererService } from '../services/renderer.service';\r\n\r\n@Component({\r\n    selector: 'ngx-dynamic-component', // eslint-disable-line\r\n    template: '<ng-container #vc></ng-container>',\r\n    providers: [RendererService],\r\n})\r\nexport class NGXDynamicComponent implements OnInit, OnChanges {\r\n\r\n    root = true;\r\n    @Input() dataModel: any;\r\n    @Input() xmlUIModel: string;\r\n    @Output() render = new EventEmitter<UIModel>();\r\n    @Output() changedDataModel = new EventEmitter();\r\n    @Output() eventHandlers = new EventEmitter<ComponentEvent>();\r\n    @ViewChild('vc', {read: ViewContainerRef, static: true}) containerRef: ViewContainerRef;\r\n\r\n    uiModel: UIModel;\r\n\r\n    constructor(protected rendererService: RendererService, public injector?: Injector) { }\r\n\r\n    ngOnInit() {\r\n      this.initParsedModel(this.xmlUIModel);\r\n    }\r\n\r\n    ngOnChanges({xmlUIModel, dataModel}: SimpleChanges): void {\r\n      if (xmlUIModel && !xmlUIModel.firstChange && xmlUIModel.currentValue !== xmlUIModel.previousValue) {\r\n        this.initParsedModel(this.xmlUIModel);\r\n      }\r\n    }\r\n\r\n    protected initParsedModel(uiModel: string): void {\r\n      try {\r\n        this.uiModel = CoreService.parseXMLModel(uiModel);\r\n        if (this.uiModel) {\r\n          this.rendererService.createComponent(this, this.uiModel);\r\n          animationFrameScheduler.schedule(() => this.render.emit(this.uiModel));\r\n        }\r\n      } catch (e) {\r\n        this.uiModel = null;\r\n        this.eventHandlers.emit({\r\n          eventHandler: 'parseError',\r\n          eventName: 'error',\r\n          parameters: {\r\n            uiModel: this.uiModel,\r\n            error: e,\r\n          }});\r\n      }\r\n    }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { BaseUIComponent } from '../../components/base-ui-component';\r\nimport { StyleProperties, propDescription } from '../../properties';\r\nimport {\r\n  ComponentExample,\r\n  UIModel,\r\n  ComponentDescriptor,\r\n  Categories,\r\n  XMLResult,\r\n} from '../../models';\r\n\r\n@Component({\r\n  selector: 'dc-container',\r\n  templateUrl: './container.component.html',\r\n  styles: [\r\n    `\r\n      :host:not(.row):not(.input-group) {\r\n        display: block;\r\n      }\r\n    `,\r\n  ]\r\n})\r\nexport class ContainerComponent extends BaseUIComponent<ContainerProperties> { }\r\n\r\nexport class ContainerProperties extends StyleProperties {\r\n  @propDescription({\r\n    description: 'Text value',\r\n    example: 'Information',\r\n  })\r\n  text?: string;\r\n}\r\n\r\nconst example: ComponentExample<UIModel<ContainerProperties>> = {\r\n  title: 'Section example',\r\n  uiModel: `\r\n  <section>\r\n    <section class=\"row align-items-center justify-content-between m-0\" width=\"100%\" height=\"100%\" padding=\"8px\">\r\n      <text class=\"m-0\" text-style=\"h1\">Header 1</text>\r\n      <text class=\"m-0\" text-style=\"h2\">Header 2</text>\r\n      <button class=\"btn btn-secondary\" onСlick=\"consoleLog\" type=\"button\">Click</button>\r\n      <text class=\"m-0\" background=\"red\" text-style=\"h3\">Header 3</text>\r\n    </section>\r\n    <section>Text</section>\r\n  </section>\r\n  `,\r\n  dataModel: {},\r\n};\r\n\r\ntype ContainerComponentConstrutor = new () => ContainerComponent;\r\n\r\ntype ContainerPropertiesConstrutor = new () => ContainerProperties;\r\n\r\nfunction getParseFunction(tag: string): (xmlRes: XMLResult) => UIModel {\r\n  return (xmlRes: XMLResult) => ({\r\n    type: tag,\r\n    itemProperties: {\r\n      text: xmlRes.content,\r\n    },\r\n  });\r\n}\r\n\r\nexport const containerDescriptor: ComponentDescriptor<\r\n  ContainerComponentConstrutor,\r\n  ContainerPropertiesConstrutor\r\n> = {\r\n  name: 'section',\r\n  packageName: 'core',\r\n  label: 'Container',\r\n  category: Categories.Containers,\r\n  description: 'layout component',\r\n  itemProperties: ContainerProperties,\r\n  component: ContainerComponent,\r\n  example,\r\n  parseUIModel: getParseFunction('section'),\r\n  defaultModel: `<section class=\"d-flex\"></section>`,\r\n};\r\n\r\nexport const divDescriptor: ComponentDescriptor<\r\n  ContainerComponentConstrutor,\r\n  ContainerPropertiesConstrutor\r\n> = {\r\n  name: 'div',\r\n  packageName: 'core',\r\n  label: 'Container',\r\n  category: Categories.Containers,\r\n  description: 'layout component',\r\n  itemProperties: ContainerProperties,\r\n  component: ContainerComponent,\r\n  parseUIModel: getParseFunction('div'),\r\n  example: {\r\n    title: 'Div container',\r\n    uiModel: (example.uiModel as string)\r\n      .replace(/<section/g, '<div')\r\n      .replace(/<\\/section>/g, '</div>'),\r\n    dataModel: {},\r\n  },\r\n  defaultModel: `<div class=\"col\"></div>`,\r\n};\r\n","<ng-container #vc></ng-container>\r\n{{properties.text}}\r\n","import { Component, HostBinding } from '@angular/core';\r\nimport { BaseUIComponent } from '../../components/base-ui-component';\r\nimport { BindingProperties, propDescription, PropertyCategories } from '../../properties';\r\nimport { ComponentExample, UIModel, ComponentDescriptor, Categories, AttributesMap, XMLResult } from '../../models';\r\nimport { CdkDrag } from '@angular/cdk/drag-drop';\r\n\r\n@Component({\r\n  selector: 'dc-text',\r\n  template: `\r\n    <ng-container [ngSwitch]=\"txtStyle\">\r\n      <h1 *ngSwitchCase=\"'h1'\" [class]=\"txtClass\" [ngStyle]=\"itemStyles\">{{text}}</h1>\r\n      <h2 *ngSwitchCase=\"'h2'\" [class]=\"txtClass\" [ngStyle]=\"itemStyles\">{{text}}</h2>\r\n      <h3 *ngSwitchCase=\"'h3'\" [class]=\"txtClass\" [ngStyle]=\"itemStyles\">{{text}}</h3>\r\n      <h4 *ngSwitchCase=\"'h4'\" [class]=\"txtClass\" [ngStyle]=\"itemStyles\">{{text}}</h4>\r\n      <h5 *ngSwitchCase=\"'h5'\" [class]=\"txtClass\" [ngStyle]=\"itemStyles\">{{text}}</h5>\r\n      <h6 *ngSwitchCase=\"'h6'\" [class]=\"txtClass\" [ngStyle]=\"itemStyles\">{{text}}</h6>\r\n      <p *ngSwitchCase=\"''\" [ngStyle]=\"itemStyles\">{{text}}</p>\r\n      <ng-container *ngSwitchCase=\"'text'\" [ngStyle]=\"itemStyles\">{{text}}</ng-container>\r\n      <span *ngSwitchDefault [class]=\"txtClass\" [ngStyle]=\"itemStyles\">{{text}}</span>\r\n    </ng-container>\r\n    `,\r\n    hostDirectives: [CdkDrag]\r\n})\r\nexport class TextComponent extends BaseUIComponent<TextProperties> {\r\n  @HostBinding('style.display') display = 'inline-block';\r\n  get txtStyle(): string {\r\n    return this.properties['text-style'];\r\n  }\r\n\r\n  get txtClass(): string {\r\n    return this.properties['text-style'] + ' ' + (this.properties.class || '');\r\n  }\r\n\r\n  get text(): string {\r\n    const val = this.componentDataModel;\r\n    return typeof val === 'undefined' ? this.properties.text : val;\r\n  }\r\n}\r\n\r\nexport class TextProperties extends BindingProperties {\r\n  @propDescription({\r\n    description: 'Displays text data.',\r\n    example: 'Text information',\r\n  })\r\n  text: string;\r\n\r\n  @propDescription({\r\n    description: 'Text style text data.',\r\n    example: 'h2',\r\n  })\r\n  // eslint-disable-next-line @typescript-eslint/naming-convention\r\n  'text-style'?: string;\r\n}\r\n\r\ntype TextComponentConstrutor = new() => TextComponent;\r\n\r\ntype TextPropertiesConstrutor = new() => TextProperties;\r\n\r\nconst example: ComponentExample<UIModel<TextProperties>> = {\r\n  title: 'Text compoent example',\r\n  uiModel: `<div>\r\n  <text text-style=\"h1\">Hello world</text>\r\n  <text text-style=\"h1\">$.title</text>\r\n  <text text-style=\"h1\" binding=\"$.title2\"></text>\r\n</div>`,\r\n  dataModel: {\r\n    title: 'Binded title',\r\n    title2: 'Binded title2'\r\n  }\r\n};\r\n\r\nexport const textDescriptor: ComponentDescriptor<TextComponentConstrutor, TextPropertiesConstrutor> = {\r\n  name: 'text',\r\n  packageName: 'core',\r\n  label: 'Text',\r\n  category: Categories.Basic,\r\n  description: 'Text component',\r\n  itemProperties: TextProperties,\r\n  component: TextComponent,\r\n  example,\r\n  parseUIModel(xmlRes: XMLResult): UIModel {\r\n    const content = xmlRes.content;\r\n    const itemProperties: AttributesMap = {};\r\n    if (typeof content === 'string') {\r\n      if (content.startsWith('$.')) {\r\n        itemProperties.binding = content;\r\n      } else {\r\n        itemProperties.text = content;\r\n      }\r\n    }\r\n    return {type: 'text', itemProperties};\r\n  },\r\n  children: false,\r\n  propertiesDescriptor: [\r\n    ['text-style', {\r\n      name: 'text-style', label: 'Text style', category: PropertyCategories.Main,\r\n      values: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'display-1', 'display-2', 'display-3', 'display-4']\r\n    }]\r\n  ],\r\n  defaultModel: '<text text-style=\"h2\">Hello world</text>'\r\n};\r\n","import { Component, HostBinding, OnInit, HostListener } from '@angular/core';\r\nimport { BaseUIComponent } from '../../components/base-ui-component';\r\nimport { StyleProperties, propDescription, PropertyCategories, PropTypes } from '../../properties';\r\nimport { ComponentExample, UIModel, ComponentDescriptor, Categories, AttributesMap, XMLResult } from '../../models';\r\n\r\n@Component({\r\n  selector: 'button', // eslint-disable-line\r\n  template: `\r\n  <ng-container #vc></ng-container>\r\n  {{properties.label}}\r\n  `\r\n})\r\nexport class ButtonComponent extends BaseUIComponent<ButtonProperties> implements OnInit {\r\n\r\n  @HostBinding('attr.type') type = 'button';\r\n  @HostBinding('attr.disabled') disabled = null;\r\n  @HostListener('click', ['$event'])\r\n  onClick(evt: Event): void {\r\n    this.emitEvent(this.properties.onClick, evt);\r\n    this.changedDataModel.emit(this.dataModel);\r\n  }\r\n\r\n  ngOnInit(): Promise<void> {\r\n    if (this.properties.type) {\r\n      this.type = this.properties.type;\r\n    }\r\n\r\n    if (this.properties.disabled === true) {\r\n      this.disabled = true;\r\n    }\r\n\r\n    return super.ngOnInit();\r\n  }\r\n}\r\n\r\nexport class ButtonProperties extends StyleProperties {\r\n  @propDescription({\r\n    description: 'Button label',\r\n    example: 'Click me!',\r\n  })\r\n  label: string;\r\n\r\n  @propDescription({\r\n    description: 'Key for action that fires onclick',\r\n    example: 'onBtnClick()',\r\n    type: PropTypes.EVENT\r\n  })\r\n  onClick?: string;\r\n\r\n  @propDescription({\r\n    description: 'Button type: button|submit|reset|link. Default: button',\r\n    example: 'submit',\r\n    defaultValue: 'button'\r\n  })\r\n  type?: string;\r\n\r\n  @propDescription({\r\n    description: 'It specifies that the button should be disabled.',\r\n    example: 'true',\r\n    defaultValue: 'false'\r\n  })\r\n  disabled?: boolean;\r\n}\r\n\r\nexport const example: ComponentExample<UIModel<ButtonProperties>> = {\r\n  title: 'Basic button example',\r\n  uiModel: `\r\n  <section>\r\n    <button class=\"btn btn-primary\" type=\"button\"><icon class=\"fa fa-search\"></icon>Search</button>\r\n    <button class=\"btn btn-primary\" width=\"50%\" margin=\"15px\" padding=\"10px 5px 10px 0px\" onClick=\"consoleLog()\">Click</button>\r\n    <button class=\"btn btn-secondary\" disabled=\"true\" onClick=\"consoleLog()\" type=\"submit\">Submit</button>\r\n    <button class=\"btn btn-danger\" display=\"none\">Hidden</button>\r\n  </section>\r\n  `,\r\n  scripts: `\r\n  def consoleLog():\r\n    print(\"test\")\r\n  `,\r\n  dataModel: {}\r\n};\r\n\r\ntype ButtonComponentConstrutor = new () => ButtonComponent;\r\n\r\ntype ButtonPropertiesConstrutor = new () => ButtonProperties;\r\n\r\nexport const buttonDescriptor: ComponentDescriptor<ButtonComponentConstrutor, ButtonPropertiesConstrutor> = {\r\n  name: 'button',\r\n  label: 'Button',\r\n  packageName: 'core',\r\n  category: Categories.Basic,\r\n  description: 'Button component',\r\n  itemProperties: ButtonProperties,\r\n  component: ButtonComponent,\r\n  example,\r\n  parseUIModel(xmlRes: XMLResult): UIModel {\r\n    const content = xmlRes.content;\r\n    const itemProperties: AttributesMap = {};\r\n    if (typeof content === 'string') {\r\n      itemProperties.label = content;\r\n    }\r\n\r\n    return {\r\n      type: 'button',\r\n      itemProperties\r\n    };\r\n  },\r\n  defaultModel: `<button class=\"btn btn-primary\">Click</button>`,\r\n  propertiesDescriptor: [\r\n    ['type', {name: 'type', label: 'Type', category: PropertyCategories.Main,\r\n      values: ['button', 'submit', 'reset']\r\n    }]\r\n  ]\r\n};\r\n","import { HostBinding, HostListener, OnInit, OnDestroy, SimpleChanges, OnChanges, Directive } from '@angular/core';\r\nimport { propDescription, BindingProperties } from '../properties';\r\nimport { BaseUIComponent } from '../components/base-ui-component';\r\n\r\n@Directive()\r\nexport class FormElementComponent<T extends object = FormElementProperties> extends BaseUIComponent<T> implements OnInit, OnDestroy, OnChanges { // eslint-disable-line\r\n  @HostBinding('attr.value') value = null;\r\n  @HostBinding('attr.name') attrName: string;\r\n  @HostBinding('attr.readonly') readonly: boolean;\r\n  @HostBinding('attr.disabled') disabled: boolean;\r\n  @HostBinding('attr.placeholder') placeholder: string;\r\n  @HostBinding('attr.id') id: string;\r\n  @HostBinding('attr.autocomplete') autocomplete: string;\r\n  @HostBinding('attr.required') required: boolean;\r\n  @HostBinding('attr.pattern') pattern: string;\r\n  @HostBinding('attr.maxlength') maxlength: number;\r\n  @HostBinding('attr.minlength') minlength: number;\r\n  @HostBinding('attr.max') max: number;\r\n  @HostBinding('attr.min') min: number;\r\n\r\n  private error: HTMLDivElement;\r\n\r\n  @HostListener('blur', ['$event.target'])\r\n  onBlur(input: HTMLInputElement): void {\r\n    this.validate(input);\r\n  }\r\n\r\n  async ngOnInit(): Promise<void> {\r\n    await super.ngOnInit();\r\n    const properties = this.properties as FormElementProperties;\r\n    this.attrName = properties.name || this.name;\r\n    this.id = properties.id || undefined;\r\n    this.readonly = properties.readonly || undefined;\r\n    this.placeholder = properties.placeholder || '';\r\n    this.disabled = properties.disabled || undefined;\r\n    this.autocomplete = properties.autocomplete || undefined;\r\n    this.required = properties.required || undefined;\r\n    this.pattern = properties.pattern || undefined;\r\n    this.max = properties.max || undefined;\r\n    this.min = properties.min || undefined;\r\n    this.maxlength = properties.maxlength || undefined;\r\n    this.minlength = properties.minlength || undefined;\r\n  }\r\n\r\n  async ngOnDestroy(): Promise<void> {\r\n    if (this.error) {\r\n      this.error.parentNode.removeChild(this.error);\r\n      this.error = null;\r\n    }\r\n    return super.ngOnDestroy();\r\n  }\r\n\r\n  async ngOnChanges(changes: SimpleChanges): Promise<void> {\r\n    await super.ngOnChanges(changes);\r\n  }\r\n\r\n  get name(): string {\r\n    return (this.properties as FormElementProperties).binding?.replace(/[^A-Z]+/gi, '');\r\n  }\r\n\r\n  private validate(input: HTMLInputElement|HTMLTextAreaElement): void {\r\n    if (!input.validity.valid) {\r\n      this.error = this.error || document.createElement('DIV') as HTMLDivElement;\r\n      this.error.className = 'alert alert-danger py-0 px-1 m-0';\r\n      this.error.textContent = input.validationMessage;\r\n      input.parentNode.insertBefore(this.error, input.nextSibling);\r\n    } else if (this.error) {\r\n      input.parentNode.removeChild(this.error);\r\n      this.error = null;\r\n    }\r\n  }\r\n}\r\n\r\nexport class FormElementProperties extends BindingProperties {\r\n  @propDescription({\r\n    description: 'Text shown when field is empty',\r\n    example: 'Type your name',\r\n  })\r\n  placeholder?: string;\r\n\r\n  @propDescription({\r\n    description: 'It specifies that the input value.',\r\n    example: 'option1',\r\n  })\r\n  value?: string;\r\n\r\n  @propDescription({\r\n    description: 'Form element name.',\r\n    example: 'username',\r\n  })\r\n  name?: string;\r\n\r\n  @propDescription({\r\n    description: 'It specifies that the input should be disabled.',\r\n    example: 'true',\r\n  })\r\n  disabled?: boolean;\r\n  @propDescription({\r\n    description: 'It specifies that the input should be read only.',\r\n    example: 'true',\r\n  })\r\n  readonly?: boolean;\r\n\r\n  @propDescription({\r\n    description: 'Is field required',\r\n    example: 'true'\r\n  })\r\n  required?: boolean;\r\n  @propDescription({\r\n    description: 'Min field value length',\r\n    example: '5'\r\n  })\r\n  minlength?: number;\r\n  @propDescription({\r\n    description: 'Max field value length',\r\n    example: '10'\r\n  })\r\n  maxlength?: number;\r\n  @propDescription({\r\n    description: 'Min input number value',\r\n    example: '5'\r\n  })\r\n  min?: number;\r\n  @propDescription({\r\n    description: 'Max input number value',\r\n    example: '10'\r\n  })\r\n  max?: number;\r\n  @propDescription({\r\n    description: 'RegExp pattern',\r\n    example: '[a-zA-Z ]*'\r\n  })\r\n  pattern?: string;\r\n\r\n  @propDescription({\r\n    description: 'Key for action that fires on input',\r\n    example: 'onInput()',\r\n  })\r\n  onInput?: string;\r\n\r\n  @propDescription({\r\n    description: 'Specifies permission to provide automated form field values.',\r\n    example: 'name',\r\n  })\r\n  autocomplete?: string;\r\n}\r\n","import { ComponentExample, UIModel } from '../../models';\r\nimport { InputProperties } from './input.component';\r\n\r\nexport const example1: ComponentExample<UIModel<InputProperties>> = {\r\n  title: 'Text input example',\r\n  uiModel: `\r\n  <div class=\"d-flex flex-column\">\r\n\r\n    <div class=\"form-group\">\r\n      <label class=\"col-form-label\" width=\"80px\">Name</label>\r\n      <input onInput=\"onNameInput(name)\" placeholder=\"Enter your name\" binding=\"$.name\"/>\r\n    </div>\r\n\r\n    <div class=\"form-group\">\r\n      <label class=\"col-form-label\" width=\"80px\">Last name</label>\r\n      <input disabled=\"true\" id=\"lastName\" placeholder=\"Enter your last name\" binding=\"$.lastName\"/>\r\n    </div>\r\n\r\n    <div class=\"form-group\">\r\n      <label class=\"col-form-label\" width=\"80px\">Debounced Input</label>\r\n      <input\r\n        placeholder=\"Enter text here\"\r\n        binding=\"$.text\"\r\n        debouncedInput=\"onDebouncedInput(searchText)\"\r\n        debounceTime=\"2000\"\r\n        />\r\n      <text binding=\"$.debouncedText\" class=\"ml-2\"></text>\r\n    </div>\r\n\r\n  </div>\r\n  `,\r\n  scripts: `\r\n  def onNameInput(name):\r\n    disabled = name == \"\"\r\n    comp = getComponentById(rootUIModel, \"lastName\")\r\n    comp.disabled = disabled or null # should set null not false\r\n\r\n  async def onDebouncedInput():\r\n    dataModel.debouncedText = searchText\r\n  `,\r\n  dataModel: {},\r\n  description: 'Input \"Last name\" is disabled while input \"Name\" is empty.'\r\n};\r\n\r\nexport const example2: ComponentExample<UIModel<InputProperties>> = {\r\n  title: 'Checkbox example',\r\n  uiModel: `\r\n  <div>\r\n    <div class=\"form-group form-check\">\r\n      <input type=\"checkbox\" class=\"form-check-input\" binding=\"$.subscribed\"/>\r\n      <label class=\"form-check-label\" for=\"subscribed\" width=\"80px\">Subscribe</label>\r\n    </div>\r\n  </div>\r\n  `,\r\n  dataModel: {},\r\n  description: 'Checkbox value is binded to dataModel\\'s <i>subscribed</i> property.'\r\n};\r\n\r\nexport const example3: ComponentExample<UIModel<InputProperties>> = {\r\n  title: 'Radio group example',\r\n  uiModel: `\r\n  <div class=\"d-flex flex-column\">\r\n    <div class=\"form-group form-check mt-5\">\r\n      <input id=\"opt1\" type=\"radio\" class=\"form-check-input\" name=\"option\" onChange=\"onSelect(val)\" value=\"option-1\"/>\r\n      <label for=\"opt1\" class=\"form-check-label\" width=\"80px\">Option 1</label>\r\n    </div>\r\n    <div class=\"form-group form-check\">\r\n      <input id=\"opt2\" type=\"radio\" class=\"form-check-input\" name=\"option\" onChange=\"onSelect(val)\" value=\"option-2\"/>\r\n      <label for=\"opt2\" class=\"form-check-label\" width=\"80px\">Option 2</label>\r\n    </div>\r\n    <div class=\"form-group form-check\">\r\n      <input id=\"opt3\" type=\"radio\" class=\"form-check-input\" name=\"option\" onChange=\"onSelect(val)\" value=\"option-3\"/>\r\n      <label for=\"opt3\" class=\"form-check-label\" width=\"80px\">Option 3</label>\r\n    </div>\r\n  </div>\r\n  `,\r\n  dataModel: {},\r\n  scripts: `\r\n  def onSelect():\r\n    print(val)\r\n    dataModel.selected = val\r\n  `,\r\n  description: 'You can choose one of 3 options.'\r\n};\r\n\r\nexport default [example1, example2, example3];\r\n","import { Component, HostBinding, HostListener, OnInit, OnDestroy, SimpleChanges, OnChanges, DoCheck, ElementRef,\r\n  Injector } from '@angular/core';\r\nimport { propDescription, PropertyCategories, PropTypes } from '../../properties';\r\nimport { UIModel, ComponentDescriptor, Categories, AttributesMap, XMLResult } from '../../models';\r\nimport { FormElementComponent, FormElementProperties } from '../../components/form-element-component';\r\nimport example from './input.examples';\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\r\nimport { RendererService } from '../../services/renderer.service';\r\n\r\n@Component({\r\n  selector: 'input', // eslint-disable-line\r\n  template: ''\r\n})\r\n// eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\r\nexport class InputComponent extends FormElementComponent<InputProperties> implements OnInit, OnDestroy, OnChanges, DoCheck {\r\n  @HostBinding('attr.type') type = 'text';\r\n  @HostBinding('attr.step') step: number;\r\n  @HostBinding('attr.checked') checked: boolean;\r\n  @HostBinding('attr.multiple') multiple: boolean;\r\n\r\n  private modelValue: any;\r\n  private dataList: HTMLDataListElement;\r\n  searchText$ = new Subject<string | null>();\r\n\r\n\r\n  constructor(\r\n    protected rendererService?: RendererService,\r\n    public injector?: Injector,\r\n    private inputElement?: ElementRef<HTMLInputElement>) {\r\n    super(rendererService, injector);\r\n  }\r\n\r\n  @HostListener('input', ['$event.target'])\r\n  onInput(input: HTMLInputElement): void {\r\n    if (!['radio', 'checkbox'].includes(this.type)) {\r\n      this.setValue(input, this.properties.onInput);\r\n      this.searchText$.next(input.value);\r\n    }\r\n  }\r\n\r\n  @HostListener('change', ['$event.target'])\r\n  onChange(input: HTMLInputElement): void {\r\n    this.setValue(input, this.properties.onChange);\r\n  }\r\n\r\n  // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\r\n  async ngOnInit(): Promise<void> {\r\n    await super.ngOnInit();\r\n    this.type = this.properties.type || 'text';\r\n    this.multiple = this.properties.multiple || undefined;\r\n    this.step = this.properties.step || undefined;\r\n    this.updateValue();\r\n    if (this.properties.autocomplete) {\r\n      const input = this.inputElement.nativeElement;\r\n      input.setAttribute('autocomplete', 'on');\r\n      this.dataList = document.createElement('DATALIST') as HTMLDataListElement;\r\n      this.dataList.id = `list-${this.name}`;\r\n      input.setAttribute('list', this.dataList.id);\r\n      input.parentNode.insertBefore(this.dataList, input);\r\n      this.setList(this.properties.list);\r\n    }\r\n\r\n    this.searchText$\r\n      .pipe(\r\n        debounceTime(this.debounceTime),\r\n        distinctUntilChanged(),\r\n      )\r\n      .subscribe(data => this.emitEvent(this.properties.debouncedInput, data));\r\n  }\r\n\r\n  // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\r\n  ngDoCheck(): void {\r\n    this.updateValue();\r\n  }\r\n\r\n  setList(list: string[]): void {\r\n    if (this.properties.autocomplete) {\r\n      if (!list) {\r\n        this.dataList.innerHTML = '';\r\n      } else {\r\n        this.dataList.innerHTML = list.map(v => `<option value=\"${v}\">`).join('');\r\n      }\r\n      this.properties.list = list;\r\n    }\r\n  }\r\n\r\n  // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\r\n  async ngOnDestroy(): Promise<void> {\r\n    return super.ngOnDestroy();\r\n  }\r\n\r\n  // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\r\n  async ngOnChanges(changes: SimpleChanges): Promise<void> {\r\n    await super.ngOnChanges(changes);\r\n    if (changes.dataModel) {\r\n      this.updateValue();\r\n    }\r\n  }\r\n  private get debounceTime(): number {\r\n    return this.properties.debounceTime ? parseInt(this.properties.debounceTime, 10) : 500;\r\n  }\r\n\r\n  private updateValue(): void {\r\n    const val = this.componentDataModel;\r\n    if (val !== this.modelValue) {\r\n      this.modelValue = val;\r\n      if (this.type === 'date' && val instanceof Date) {\r\n        this.value = val.toISOString().slice(0, 10);\r\n        this.inputElement.nativeElement.value = this.value;\r\n      } else if (this.type === 'radio') {\r\n        this.value = this.properties.value;\r\n        this.checked = (val && val.toString()) === this.value ? true : undefined;\r\n      } else if (this.type === 'checkbox') {\r\n        this.value = this.properties.value;\r\n        this.checked = val ? true : undefined;\r\n      } else {\r\n        this.value = val;\r\n        this.inputElement.nativeElement.value = val;\r\n      }\r\n    }\r\n  }\r\n\r\n  private setValue(input: HTMLInputElement, prop: string): void {\r\n    if (this.properties.type === 'checkbox') {\r\n      this.componentDataModel = input.checked;\r\n      this.emitEvent(prop, input.checked);\r\n    } else if (this.properties.type === 'radio') {\r\n      if (input.checked) {\r\n        this.componentDataModel = input.value;\r\n        this.emitEvent(prop, this.properties.value);\r\n      }\r\n    } else {\r\n      this.componentDataModel = input.value;\r\n      this.emitEvent(prop, input.value);\r\n    }\r\n    this.changedDataModel.emit(this.dataModel);\r\n  }\r\n}\r\n\r\nexport class InputProperties extends FormElementProperties {\r\n  @propDescription({\r\n    description: 'Input type',\r\n    example: 'text',\r\n  })\r\n  type?: string;\r\n\r\n  @propDescription({\r\n    description: 'Whether to allow multiple values.',\r\n    example: 'true',\r\n  })\r\n  multiple?: boolean;\r\n\r\n  @propDescription({\r\n    description: 'Specifies the granularity that the value must adhere to',\r\n    example: '2'\r\n  })\r\n  step?: number;\r\n\r\n  @propDescription({\r\n    description: 'On change event handler name.',\r\n    example: 'onChange',\r\n    type: PropTypes.EVENT\r\n  })\r\n  onChange?: string;\r\n\r\n  @propDescription({\r\n    description: 'Datalist array',\r\n    example: '[\"option1\" ,\"option2\"]'\r\n  })\r\n  list?: string[];\r\n\r\n  @propDescription({\r\n    description: 'debounceTime in miliseconds. Used only with `typeahead` event handler. Default is 500 (miliseconds)',\r\n    example: '500',\r\n    type: PropTypes.PROPERTY\r\n  })\r\n  debounceTime?: string;\r\n\r\n\r\n  @propDescription({\r\n    description: 'debouncedInput event handler.',\r\n    example: 'onDebouncedInput()',\r\n    type: PropTypes.EVENT\r\n  })\r\n  debouncedInput?: string;\r\n\r\n  @propDescription({\r\n    description: 'Input initial value.',\r\n    example: 'option-1',\r\n    type: PropTypes.PROPERTY\r\n  })\r\n  declare value?: string;\r\n}\r\n\r\ntype InputComponentConstrutor = new () => InputComponent;\r\n\r\ntype InputPropertiesConstrutor = new () => InputProperties;\r\n\r\nexport const inputDescriptor: ComponentDescriptor<InputComponentConstrutor, InputPropertiesConstrutor> = {\r\n  name: 'input',\r\n  label: 'Input field',\r\n  packageName: 'core',\r\n  category: Categories.Basic,\r\n  description: 'Input component',\r\n  itemProperties: InputProperties,\r\n  component: InputComponent,\r\n  example,\r\n  parseUIModel(xmlRes: XMLResult): UIModel {\r\n    const itemProperties: AttributesMap = {\r\n      readonly: xmlRes.attrs.readonly === 'true',\r\n      list: xmlRes.attrs.list?.split(',').map(o => o.trim()),\r\n      ...xmlRes.attrs\r\n    };\r\n\r\n    return {\r\n      type: 'input',\r\n      itemProperties\r\n    };\r\n  },\r\n  defaultModel: `<input onInput=\"onInputHandler(name)\" placeholder=\"Enter your name\" binding=\"$.name\"/>`,\r\n  propertiesDescriptor: [\r\n    ['type', {\r\n      name: 'type', label: 'Data Type', category: PropertyCategories.Main,\r\n      values: ['text', 'number', 'email', 'file', 'url', 'date', 'time', 'datetime-local']\r\n    }],\r\n    ['required', {\r\n      name: 'required', label: 'Required field',\r\n      values: ['true']\r\n    }]\r\n  ],\r\n  children: false\r\n};\r\n","import { Component, HostBinding, OnInit } from '@angular/core';\r\nimport { BaseUIComponent } from '../../components/base-ui-component';\r\nimport { BindingProperties, propDescription } from '../../properties';\r\nimport { ComponentExample, UIModel, ComponentDescriptor, Categories } from '../../models';\r\n\r\n@Component({\r\n  selector: 'dc-icon-ui',\r\n  template: ''\r\n})\r\nexport class IconComponent extends BaseUIComponent<IconProperties> implements OnInit {\r\n  @HostBinding('style.display') display = 'inline-block';\r\n  @HostBinding('style.font-size') fontSize: string;\r\n  async ngOnInit(): Promise<void> {\r\n    await super.ngOnInit();\r\n    this.fontSize = this.properties.size || '1rem';\r\n  }\r\n  get iconClass(): string {\r\n    return this.componentDataModel || this.properties.iconClass;\r\n  }\r\n}\r\n\r\nexport class IconProperties extends BindingProperties {\r\n  @propDescription({\r\n    description: 'Icon size',\r\n    example: '2rem',\r\n  })\r\n  size?: string;\r\n\r\n  @propDescription({\r\n    description: 'Icon class',\r\n    example: 'fa fa-play',\r\n  })\r\n  iconClass: string;\r\n}\r\n\r\ntype IconComponentConstrutor = new() => IconComponent;\r\n\r\ntype IconPropertiesConstrutor = new() => IconProperties;\r\n\r\nconst example: ComponentExample<UIModel<IconProperties>> = {\r\n  title: 'Icon compoent example',\r\n  uiModel: `\r\n  <icon class=\"fa fa-play\" padding=\"20px\" size=\"2rem\"/>\r\n  `,\r\n  dataModel: {}\r\n};\r\n\r\n// const ICONS = ['fa fa-send', 'fa fa-play', 'fa fa-picture-o', 'fa fa-area-chart' , 'fa fa-bank', 'fa fa-beer',\r\n// 'fa fa-automobile', 'fa fa-bag', 'fa fa-book', 'fa fa-bell', 'fa fa-camera', 'fa fa-calendar', 'fa fa-user',\r\n// 'fa fa-globe', 'fa fa-gift', 'fa fa-group', 'fa fa-gear', 'fa fa-info', 'fa fa-money', 'fa fa-print', 'fa fa-registered',\r\n// 'fa fa-share', 'fa fa-shopping-card', 'fa fa-tags', 'fa fa-tasks', 'fa fa-star', 'fa fa-univarsity', 'fa fa-file', 'fa fa-ticket',\r\n// 'fa fa-television', 'fa fa-suitcase', 'fa fa-server', 'fa fa-map', 'fa fa-leptop', 'fa fa-home', 'fa fa-hashtag', 'fa fa-clock-o'];\r\n\r\nexport const iconDescriptor: ComponentDescriptor<IconComponentConstrutor, IconPropertiesConstrutor> = {\r\n  name: 'icon',\r\n  packageName: 'core',\r\n  label: 'Icon',\r\n  category: Categories.Basic,\r\n  description: 'Icon component',\r\n  itemProperties: IconProperties,\r\n  component: IconComponent,\r\n  example,\r\n  defaultModel: '<icon class=\"fa fa-play\"/>',\r\n  children: false\r\n};\r\n\r\n","import { Component, HostBinding, OnInit } from '@angular/core';\r\nimport { BaseUIComponent } from '../../components/base-ui-component';\r\nimport { propDescription } from '../../properties';\r\nimport { ComponentExample, UIModel, ComponentDescriptor, Categories, AttributesMap, XMLResult } from '../../models';\r\nimport { TextProperties } from '../text/text.component';\r\n\r\n@Component({\r\n  // eslint-disable-next-line\r\n  selector: 'label',\r\n  template: `{{text}}`,\r\n  styles: [`\r\n    :host.form-check-label > label {\r\n      margin-bottom: 0;\r\n    }\r\n  `]\r\n})\r\nexport class LabelComponent extends BaseUIComponent<LabelProperties> implements OnInit {\r\n  @HostBinding('style.display') display = 'inline-block';\r\n  @HostBinding('attr.for') for: string;\r\n\r\n  async ngOnInit(): Promise<void> {\r\n    await super.ngOnInit();\r\n    this.for = this.properties.for || undefined;\r\n  }\r\n\r\n  get text(): string {\r\n    return this.componentDataModel || this.properties.text;\r\n  }\r\n}\r\n\r\nexport class LabelProperties extends TextProperties {\r\n  @propDescription({\r\n    description: 'The id of a labelable form-related element',\r\n    example: 'checkboxId'\r\n  })\r\n  for?: string;\r\n}\r\n\r\ntype LabelComponentConstrutor = new() => LabelComponent;\r\n\r\ntype LabelPropertiesConstrutor = new() => LabelProperties;\r\n\r\nconst example: ComponentExample<UIModel<LabelProperties>> = {\r\n  title: 'Label compoent example',\r\n  uiModel: `<label>Hello world</label>`,\r\n  dataModel: {}\r\n};\r\n\r\nexport const labelDescriptor: ComponentDescriptor<LabelComponentConstrutor, LabelPropertiesConstrutor> = {\r\n  name: 'label',\r\n  packageName: 'core',\r\n  label: 'Label',\r\n  category: Categories.Basic,\r\n  description: 'Label component',\r\n  itemProperties: LabelProperties,\r\n  component: LabelComponent,\r\n  example,\r\n  parseUIModel(xmlRes: XMLResult): UIModel {\r\n    const content = xmlRes.content;\r\n    const itemProperties: AttributesMap = {};\r\n    if (typeof content === 'string') {\r\n      if (content.startsWith('$.')) {\r\n        itemProperties.binding = content;\r\n      } else {\r\n        itemProperties.text = content;\r\n      }\r\n    }\r\n    return {type: 'label', itemProperties};\r\n  },\r\n  defaultModel: '<label class=\"label\">Label</label>',\r\n  children: false\r\n};\r\n","import { Component } from '@angular/core';\r\nimport { propDescription, BindingProperties, PropTypes } from '../../properties';\r\nimport { OptionValue, ComponentExample, UIModel, ComponentDescriptor, Categories, XMLResult, AttributesMap } from '../../models';\r\nimport { BaseUIComponent } from '../../components/base-ui-component';\r\nimport { queryValue } from '../../utils';\r\n\r\n@Component({\r\n  selector: 'dc-radio-group',\r\n  template: `\r\n    <ng-container *ngFor=\"let option of options\">\r\n      <div class=\"d-flex align-items-center justify-content-between\">\r\n        <label class=\"my-0 mr-2\" [for]=\"getId(option.value)\" *ngIf=\"option.label\">{{option.label}}</label>\r\n        <input type=\"radio\" (change)=\"onChange(option)\" [attr.id]=\"getId(option.value)\" [name]=\"properties.binding\" [value]=\"option.value\">\r\n      </div>\r\n    </ng-container>\r\n  `,\r\n  styleUrls: ['../../styles/label.scss']\r\n})\r\nexport class RadioGroupComponent extends BaseUIComponent<RadioGroupProperties> {\r\n  onChange(option: OptionValue): void {\r\n    this.componentDataModel = option.value;\r\n    this.changedDataModel.emit(this.dataModel);\r\n    this.emitEvent(this.properties.onChange);\r\n  }\r\n\r\n  getId(val: any): string {\r\n    const selectKey = this.uiModel.id || this.properties.binding;\r\n    return `select-${selectKey || ''}-option-${val}`;\r\n  }\r\n\r\n  get options(): OptionValue[] {\r\n    const src = this.properties.itemsSource;\r\n    if (Array.isArray(src)) {\r\n      return src;\r\n    }\r\n\r\n    if (typeof src === 'string' && src.startsWith('$.')) {\r\n      return queryValue(this.dataModel, src);\r\n    }\r\n  }\r\n}\r\n\r\nexport class RadioGroupProperties extends BindingProperties {\r\n  @propDescription({\r\n    description: 'Radio group options or binding to dataModel.',\r\n    example: '[{label: \"One\", value: 1}]',\r\n  })\r\n  itemsSource: string|OptionValue[];\r\n\r\n  @propDescription({\r\n    description: 'On change event handler name.',\r\n    example: 'onSelect',\r\n    type: PropTypes.EVENT\r\n  })\r\n  onChange?: string;\r\n}\r\n\r\nexport const example: ComponentExample<UIModel<RadioGroupProperties>> = {\r\n  title: 'Radio group example',\r\n  uiModel: `\r\n  <div>\r\n    <radio-group class=\"d-flex flex-column mr-4\" binding=\"$.color\">\r\n      <option value=\"white\">White</option>\r\n      <option value=\"black\">Black</option>\r\n      <option value=\"green\">Green</option>\r\n      <option value=\"blue\">Blue</option>\r\n    </radio-group>\r\n    <radio-group itemsSource=\"$.genderOptions\" binding=\"$.gender\"></radio-group>\r\n  </div>\r\n  `,\r\n  dataModel: {\r\n    genderOptions: [{label: 'Man', value: 'm'}, {label: 'Woman', value: 'w'}]\r\n  }\r\n};\r\n\r\ntype RadioGroupComponentConstrutor = new () => RadioGroupComponent;\r\n\r\ntype RadioGroupPropertiesConstrutor = new () => RadioGroupProperties;\r\n\r\nexport const radioGroupDescriptor: ComponentDescriptor<RadioGroupComponentConstrutor, RadioGroupPropertiesConstrutor> = {\r\n  name: 'radio-group',\r\n  label: 'Single choice boxes',\r\n  packageName: 'core',\r\n  category: Categories.Basic,\r\n  description: 'Radio group component',\r\n  itemProperties: RadioGroupProperties,\r\n  component: RadioGroupComponent,\r\n  example,\r\n  parseUIModel(xmlRes: XMLResult): UIModel {\r\n    const itemProperties: AttributesMap = {};\r\n    if (!xmlRes.attrs.itemsSource && xmlRes.childNodes) {\r\n      itemProperties.itemsSource = xmlRes.childNodes.map(r => ({ label: r._, value: r.$.value }));\r\n      xmlRes.childNodes = null;\r\n    }\r\n    return {\r\n      type: 'radio-group',\r\n      itemProperties\r\n    };\r\n  },\r\n  defaultModel: '<radio-group itemsSource=\"$.options\" binding=\"$.radioValue\"></radio-group>',\r\n  children: [{\r\n    tag: 'option',\r\n    properties: [{\r\n      name: 'value',\r\n      label: 'Radio option value'\r\n    }]\r\n  }]\r\n};\r\n","import { Component, OnInit, HostBinding, HostListener, OnChanges, SimpleChanges, DoCheck } from '@angular/core';\r\nimport { propDescription } from '../../properties';\r\nimport { ComponentExample, UIModel, ComponentDescriptor, Categories, XMLResult } from '../../models';\r\nimport { FormElementComponent, FormElementProperties } from '../../components/form-element-component';\r\n\r\n@Component({\r\n  selector: 'textarea', // eslint-disable-line\r\n  template: '{{value}}'\r\n})\r\n// eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\r\nexport class TextareaComponent extends FormElementComponent<TextareaProperties> implements OnInit, OnChanges, DoCheck {\r\n  @HostBinding('attr.cols') cols: number;\r\n  @HostBinding('attr.rows') rows: number;\r\n\r\n  @HostListener('input', ['$event.target'])\r\n  onInput(txtArea: HTMLTextAreaElement): void {\r\n    this.componentDataModel = txtArea.value;\r\n    this.emitEvent(this.properties.onInput, txtArea.value);\r\n    this.changedDataModel.emit(this.dataModel);\r\n  }\r\n\r\n  // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\r\n  async ngOnInit(): Promise<void> {\r\n    await super.ngOnInit();\r\n    this.cols = this.properties.cols || undefined;\r\n    this.rows = this.properties.rows || undefined;\r\n    this.value = this.componentDataModel;\r\n  }\r\n\r\n  // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\r\n  async ngOnChanges(changes: SimpleChanges): Promise<void> {\r\n    await super.ngOnChanges(changes);\r\n    if (changes.dataModel) {\r\n      this.value = this.componentDataModel;\r\n    }\r\n  }\r\n\r\n  // eslint-disable-next-line @angular-eslint/no-conflicting-lifecycle\r\n  ngDoCheck(): void {\r\n    this.value = this.componentDataModel;\r\n  }\r\n}\r\n\r\nexport class TextareaProperties extends FormElementProperties {\r\n  @propDescription({\r\n    description: 'Number of rows in textarea',\r\n    example: '5',\r\n  })\r\n  rows?: number;\r\n\r\n  @propDescription({\r\n    description: 'The visible width of the text control',\r\n    example: '20',\r\n  })\r\n  cols?: number;\r\n}\r\n\r\nexport const example: ComponentExample<UIModel<TextareaProperties>> = {\r\n  title: 'Text area example',\r\n  uiModel: `\r\n  <textarea binding=\"$.info\" placeholder=\"Type information about yourself\" rows=\"10\"></textarea>\r\n  `,\r\n  dataModel: {\r\n    info: 'Data model textarea value'\r\n  }\r\n};\r\n\r\ntype TextareaComponentConstrutor = new() => TextareaComponent;\r\n\r\ntype TextareaPropertiesConstrutor = new() => TextareaProperties;\r\n\r\nexport const textareaDescriptor: ComponentDescriptor<TextareaComponentConstrutor, TextareaPropertiesConstrutor> = {\r\n  name: 'textarea',\r\n  label: 'Text Area',\r\n  packageName: 'core',\r\n  category: Categories.Basic,\r\n  description: 'Text area component',\r\n  itemProperties: TextareaProperties,\r\n  component: TextareaComponent,\r\n  example,\r\n  parseUIModel(xmlRes: XMLResult): UIModel {\r\n    const itemProperties: TextareaProperties = {\r\n      readonly: xmlRes.attrs.readonly === 'true'\r\n    };\r\n    return {\r\n      type: 'textarea',\r\n      itemProperties\r\n    };\r\n  },\r\n  defaultModel: '<textarea binding=\"$.info\" rows=\"5\"></textarea>',\r\n  children: false\r\n};\r\n","import type { ElementRef } from '@angular/core';\r\nimport { Component, ViewChild } from '@angular/core';\r\nimport { BaseUIComponent } from '../../components/base-ui-component';\r\nimport { StyleProperties, propDescription, PropertyCategories, PropTypes } from '../../properties';\r\nimport { ComponentExample, UIModel, ComponentDescriptor, Categories } from '../../models';\r\n\r\n@Component({\r\n    selector: 'dc-form',\r\n    templateUrl: './form.component.html'\r\n})\r\nexport class FormComponent extends BaseUIComponent<FormProperties> {\r\n  @ViewChild('form', { static: true }) form: ElementRef<HTMLFormElement>;\r\n\r\n  onFormSubmit(): void {\r\n    const formData = new FormData(this.form.nativeElement);\r\n    this.emitEvent(this.properties.onSubmit, { formData });\r\n    // Trigger ui validation messages.\r\n    this.form.nativeElement.querySelectorAll('input,textarea,select').forEach((el: HTMLFormElement, i, list) => {\r\n      el.focus();\r\n      if (list.length - 1 === i) {\r\n        el.blur();\r\n      }\r\n    });\r\n  }\r\n}\r\n\r\nexport class FormProperties extends StyleProperties {\r\n  @propDescription({\r\n    description: 'Submit handler',\r\n    example: 'onFormSubmit(form)',\r\n    type: PropTypes.EVENT\r\n  })\r\n  onSubmit?: string;\r\n}\r\n\r\nconst example: ComponentExample<UIModel<FormProperties>> = {\r\n  title: 'Form example',\r\n  uiModel: `\r\n  <form class=\"flex-column w-50 mx-auto\" onSubmit=\"onSave(form)\">\r\n    <label class=\"mb-0\">User name</label><input name=\"username\" class=\"form-control\" required=\"true\"/>\r\n    <label class=\"mb-0\">Email</label><input name=\"email\" type=\"email\" class=\"form-control\" required=\"true\"/>\r\n    <button class=\"d-flex btn btn-secondary ml-auto my-1\" type=\"submit\">Save</button>\r\n  </form>\r\n  `,\r\n  scripts: `\r\n    def onSave(form):\r\n      print(form)\r\n  `,\r\n  dataModel: {}\r\n};\r\n\r\ntype FormComponentConstrutor = new () => FormComponent;\r\n\r\ntype FormPropertiesConstrutor = new () => FormProperties;\r\n\r\nexport const formDescriptor: ComponentDescriptor<FormComponentConstrutor, FormPropertiesConstrutor> = {\r\n  name: 'form',\r\n  packageName: 'core',\r\n  label: 'Form',\r\n  category: Categories.Containers,\r\n  description: 'layout component',\r\n  itemProperties: FormProperties,\r\n  component: FormComponent,\r\n  example,\r\n  defaultModel: `<form class=\"d-flex row\"></form>`,\r\n  propertiesDescriptor: [['method', {\r\n    name: 'method', label: 'Method', category: PropertyCategories.Main,\r\n    values: ['GET', 'POST', 'PUT', 'DELETE']\r\n  }]]\r\n};\r\n","<form (ngSubmit)=\"onFormSubmit()\" #form [ngStyle]=\"itemStyles\">\r\n  <ng-container #vc></ng-container>\r\n</form>\r\n","import { Component, HostListener, HostBinding, DoCheck } from '@angular/core';\r\nimport { BaseUIComponent } from '../../components/base-ui-component';\r\nimport { AttributesMap, OptionValue, ComponentExample, UIModel, ComponentDescriptor, Categories, XMLResult } from '../../models';\r\nimport { BindingProperties, propDescription, PropertyCategories, PropTypes } from '../../properties';\r\nimport { queryValue } from '../../utils';\r\n\r\n@Component({\r\n  selector: 'select', // eslint-disable-line\r\n  template: `\r\n      <ng-container>\r\n        <option [selected]=\"option.value === value\" *ngFor=\"let option of options\" [value]=\"option.value\">{{option.label}}</option>\r\n      </ng-container>\r\n    `\r\n})\r\n\r\nexport class SelectComponent extends BaseUIComponent<SelectProperties> implements DoCheck {\r\n\r\n  @HostBinding('attr.value') value: string;\r\n  private optionsList: OptionValue[];\r\n  private src: string|OptionValue[];\r\n\r\n  @HostListener('change', ['$event.target'])\r\n  onSelect(select: HTMLSelectElement): void {\r\n    this.componentDataModel = select.value;\r\n    this.emitEvent(this.properties.onSelect, this.optionsList.find(o => o.value === select.value));\r\n    this.changedDataModel.emit(this.dataModel);\r\n  }\r\n\r\n  ngDoCheck(): void {\r\n    if (this.componentDataModel !== this.value) {\r\n      this.value = this.componentDataModel;\r\n    }\r\n  }\r\n\r\n  get selectStyles(): AttributesMap {\r\n    if (this.properties.selectHeight) {\r\n      return {\r\n        height: this.properties.selectHeight\r\n      };\r\n    }\r\n    return null;\r\n  }\r\n\r\n  get options(): OptionValue[] {\r\n    const src = this.properties.itemsSource;\r\n\r\n    if (this.optionsList && typeof src === 'object' && src === this.src) {\r\n      return this.optionsList;\r\n    }\r\n    let list: any[];\r\n    if (Array.isArray(src)) {\r\n      list = src;\r\n    }\r\n\r\n    if (typeof src === 'string' && src.startsWith('$.')) {\r\n      list = queryValue(this.dataModel, src);\r\n    }\r\n\r\n    if (list) {\r\n      const labelProp = this.properties.labelProp || 'label';\r\n      const valueProp = this.properties.valueProp || 'value';\r\n      list = list.map(o => ({\r\n        label: typeof o === 'string' ? o : o[labelProp],\r\n        value: typeof o === 'string' ? o : o[valueProp],\r\n        data: o\r\n      }));\r\n    } else {\r\n      list = list || [];\r\n    }\r\n    this.src = src;\r\n\r\n    if (JSON.stringify(list) !== JSON.stringify(this.optionsList)) {\r\n      this.optionsList = list;\r\n    }\r\n\r\n    return this.optionsList;\r\n  }\r\n}\r\n\r\nexport class SelectProperties extends BindingProperties {\r\n  @propDescription({\r\n    description: 'Select options or binding to dataModel.',\r\n    example: '[{label: \"One\", value: 1}]',\r\n  })\r\n  itemsSource: string|OptionValue[];\r\n\r\n  @propDescription({\r\n    description: 'Select height.',\r\n    example: '30px',\r\n  })\r\n  selectHeight?: string;\r\n\r\n  @propDescription({\r\n    description: 'On Select handler name.',\r\n    example: 'onCountrySelect',\r\n    type: PropTypes.EVENT\r\n  })\r\n  onSelect?: string;\r\n\r\n  @propDescription({\r\n    description: 'Label property.',\r\n    example: 'name',\r\n  })\r\n  labelProp?: string;\r\n\r\n  @propDescription({\r\n    description: 'Value property.',\r\n    example: 'id',\r\n  })\r\n  valueProp?: string;\r\n}\r\n\r\ntype SelectComponentConstrutor = new () => SelectComponent;\r\n\r\ntype SelectPropertiesConstrutor = new () => SelectProperties;\r\n\r\nexport const example: ComponentExample<UIModel<SelectProperties>> = {\r\n  uiModel: `\r\n    <section class=\"flex-column\">\r\n      <section class=\"form-group\">\r\n        <label class=\"col-form-label\" width=\"60px\">Country</label>\r\n        <select class=\"form-control\" onSelect=\"countryChanged(selectedItem)\" width=\"300px\" binding=\"$.country\">\r\n          <option>Select country</option>\r\n          <option value=\"uk\">United Kingdom</option>\r\n          <option value=\"ua\">Ukraine</option>\r\n        </select>\r\n      </section>\r\n      <section class=\"form-group\">\r\n        <label class=\"col-form-label\" width=\"60px\">City</label>\r\n        <select class=\"form-control\" width=\"300px\" itemsSource=\"$.cities\" binding=\"$.city\"></select>\r\n      </section>\r\n    </section>\r\n  `,\r\n  dataModel: {},\r\n  scripts: `\r\n  # Evaluated with JSPython https://jspython.dev/\r\n\r\n  def countryChanged():\r\n    dataModel.city = null\r\n\r\n    if selectedItem?.value == \"uk\":\r\n      dataModel.cities = [\r\n        {label: \"Select city\", value: null},\r\n        {label: \"London\", value: \"lon\"},\r\n        {label: \"Liverpool\", value: \"liv\"}\r\n      ]\r\n\r\n    if selectedItem?.value == \"ua\":\r\n      dataModel.cities = [\r\n        {label: \"Select city\", value: null},\r\n        {label: \"Kyiv\", value: \"kyiv\"},\r\n        {label: \"Lviv\", value: \"lviv\"}\r\n      ]\r\n\r\n  `,\r\n  title: 'Basic select example'\r\n};\r\n\r\nexport const selectDescriptor: ComponentDescriptor<SelectComponentConstrutor, SelectPropertiesConstrutor> = {\r\n  name: 'select',\r\n  label: 'UI Select Input',\r\n  packageName: 'core',\r\n  category: Categories.Basic,\r\n  description: 'Select component',\r\n  itemProperties: SelectProperties,\r\n  component: SelectComponent,\r\n  example,\r\n  parseUIModel(xmlRes: XMLResult): UIModel {\r\n    const itemProperties: AttributesMap = {};\r\n    if (!xmlRes.attrs.itemsSource && xmlRes.childNodes) {\r\n      itemProperties.itemsSource = xmlRes.childNodes.map(r => ({\r\n        label: r._, value: r.$ && Object.hasOwn(r.$, 'value') ? r.$.value : r._\r\n      }));\r\n      xmlRes.childNodes = null;\r\n    }\r\n\r\n    return {\r\n      type: 'select',\r\n      itemProperties\r\n    };\r\n  },\r\n  defaultModel: `<select width=\"100px\" itemsSource=\"$.list\" binding=\"$.value\"></select>`,\r\n  propertiesDescriptor: [\r\n    ['selectHeight', {name: 'selectHeight', label: 'Select Height', category: PropertyCategories.Layout}],\r\n  ],\r\n  children: [{\r\n    tag: 'option',\r\n    properties: [{\r\n      name: 'value',\r\n      label: 'Option value'\r\n    }]\r\n  }]\r\n};\r\n","import { OnInit, OnDestroy, EventEmitter, SimpleChanges, OnChanges, Directive } from '@angular/core';\r\nimport { UIModel, ComponentEvent, XMLResult } from '../models';\r\nimport { StyleProperties, BaseProperties, propDescription } from '../properties';\r\nimport { BaseDynamicComponent } from './base-dynamic-component';\r\n\r\n@Directive()\r\nexport class BaseHTMLElement<T = HTMLProperties> extends BaseDynamicComponent<T> implements OnInit, OnDestroy, OnChanges { // eslint-disable-line\r\n    eventHandlers = new EventEmitter<ComponentEvent>();\r\n    changedDataModel = new EventEmitter();\r\n    declare element: HTMLElement;\r\n    private parentNode: Node;\r\n\r\n    async ngOnDestroy(): Promise<void> {\r\n      this.emitEvent((this.properties as BaseProperties).onDestroy);\r\n      if (this.element) {\r\n        this.element.parentNode.removeChild(this.element);\r\n      }\r\n    }\r\n\r\n    async ngOnChanges({dataModel, uiModel}: SimpleChanges): Promise<void> {\r\n      if (dataModel && !dataModel.firstChange && this.dataModel !== dataModel.currentValue) {\r\n        this.dataModel = dataModel.currentValue;\r\n      }\r\n\r\n      if (uiModel && !uiModel.firstChange) {\r\n        this.uiModel = uiModel.currentValue;\r\n        this.setProperties();\r\n      }\r\n    }\r\n\r\n    create(selectorElement: HTMLElement): void {\r\n      const created = Boolean(this.element);\r\n      this.element = this.element || document.createElement(this.uiModel.type);\r\n      this.element.innerHTML = '';\r\n      this.parentNode = this.parentNode || selectorElement.parentNode;\r\n      this.setProperties();\r\n      if (!created && this.parentNode) {\r\n        this.parentNode.insertBefore(this.element, selectorElement);\r\n      }\r\n      this.uiModel.children?.forEach(uiModel => this.rendererService.createComponent(this, uiModel));\r\n    }\r\n\r\n    private setProperties(): void {\r\n      const htmlProps = this.properties as HTMLProperties;\r\n      if (htmlProps.content) {\r\n        this.element.textContent = htmlProps.content;\r\n      }\r\n      if (htmlProps.title) {\r\n        this.element.title = htmlProps.title;\r\n      }\r\n      this.setHostStyles();\r\n    }\r\n\r\n    get properties(): T {\r\n      return this.uiModel.itemProperties;\r\n    }\r\n\r\n    get attrs(): T {\r\n      return this.uiModel.itemProperties;\r\n    }\r\n}\r\n\r\nexport class HTMLProperties extends StyleProperties {\r\n  @propDescription({\r\n    description: 'HTML element text content',\r\n    example: 'Text'\r\n  })\r\n  content?: string;\r\n\r\n  @propDescription({\r\n    description: 'HTML element html content',\r\n    example: '<span>Text</span>'\r\n  })\r\n  htmlContent?: string;\r\n\r\n  @propDescription({\r\n    description: 'HTML element title',\r\n    example: 'Description text'\r\n  })\r\n  title?: string;\r\n}\r\n\r\nexport type HTMLPropertiesConstrutor = new () => HTMLProperties;\r\n\r\nexport function parseHTMLUIModel(xmlRes: XMLResult): UIModel {\r\n  const content = xmlRes.content;\r\n  return {\r\n    type: xmlRes.type,\r\n    itemProperties: { content }\r\n  };\r\n}\r\n\r\n","import { Directive } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { StyleProperties, propDescription, PropTypes } from '../../properties';\r\nimport { ComponentExample, UIModel, ComponentDescriptor, Categories, XMLResult } from '../../models';\r\nimport { BaseHTMLElement, parseHTMLUIModel } from '../../components/base-html-element';\r\nimport { queryValue } from '../../utils';\r\n\r\n@Directive()\r\nexport class AComponent extends BaseHTMLElement<LinkProperties> { // eslint-disable-line\r\n  create(selectorElement: HTMLElement): void {\r\n    super.create(selectorElement);\r\n\r\n    if (this.properties.href) {\r\n      this.element.setAttribute('href', this.properties.href);\r\n    }\r\n\r\n    if (this.properties.target) {\r\n      this.element.setAttribute('target', this.properties.target);\r\n    }\r\n\r\n    if (this.properties.routerLink) {\r\n      this.element.style.cursor = 'pointer';\r\n      this.element.setAttribute('href', 'javascript:void(0);');\r\n    }\r\n\r\n    this.element.onclick = (evt: MouseEvent) => {\r\n      this.emitEvent(this.properties.onClick, evt);\r\n\r\n      if (this.properties.routerLink) {\r\n        const router = this.injector.get(Router);\r\n\r\n        const navigationExtras = {};\r\n        const queryParams = this.getQueryParams();\r\n\r\n        if (queryParams) {\r\n          (navigationExtras as any).queryParams = queryParams;\r\n        }\r\n        router.navigate([this.getPath()], navigationExtras);\r\n        evt.preventDefault();\r\n      }\r\n    };\r\n  }\r\n\r\n  private getQueryParams(): any {\r\n    let queryParams = this.properties.queryString;\r\n    if (!queryParams) {\r\n      return null;\r\n    }\r\n\r\n    const matches = queryParams.match(/{\\$\\.[\\w/]+}/g);\r\n    if (matches) {\r\n      matches.forEach(m => {\r\n        const path = m.replace(/[{}]+/, '');\r\n        const res = queryValue(this.dataModel, path);\r\n        queryParams = queryParams.replace(m, res);\r\n      });\r\n    }\r\n\r\n    function parseQuery(queryString) {\r\n      const query = {};\r\n      const pairs = (queryString[0] === '?' ? queryString.substr(1) : queryString).split('&');\r\n      for (const pairText of pairs) {\r\n        const pair = pairText.split('=');\r\n        query[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1] || '');\r\n      }\r\n      return query;\r\n    }\r\n\r\n\r\n    return parseQuery(queryParams);\r\n  }\r\n\r\n  private getPath(): string {\r\n    let routerLink = this.properties.routerLink;\r\n    const matches = routerLink.match(/{\\$\\.[\\w/]+}/g);\r\n    if (matches) {\r\n      matches.forEach(m => {\r\n        const path = m.replace(/[{}]+/, '');\r\n        const res = queryValue(this.dataModel, path);\r\n        routerLink = routerLink.replace(m, res);\r\n      });\r\n    }\r\n\r\n    return routerLink;\r\n  }\r\n}\r\n\r\nexport class LinkProperties extends StyleProperties {\r\n  @propDescription({\r\n    description: 'Link label',\r\n    example: 'Click me!',\r\n  })\r\n  label: string;\r\n\r\n  @propDescription({\r\n    description: 'Link href used in case of type=link.',\r\n    example: 'url/to/site',\r\n  })\r\n  href?: string;\r\n\r\n  @propDescription({\r\n    description: 'The target attribute specifies where to open the linked document.',\r\n    example: '_blank',\r\n  })\r\n  target?: string;\r\n\r\n  @propDescription({\r\n    description: 'Key for action that fires onclick',\r\n    example: 'onLinkClick()',\r\n    type: PropTypes.EVENT\r\n  })\r\n  onClick?: string;\r\n\r\n  @propDescription({\r\n    description: 'Router link',\r\n    example: 'path/page',\r\n  })\r\n  routerLink?: string;\r\n\r\n  @propDescription({\r\n    description: 'Query String',\r\n    example: 'id=12&another={$.dataModelProperty}',\r\n  })\r\n  queryString?: string;\r\n\r\n}\r\n\r\nexport const example: ComponentExample<UIModel<LinkProperties>> = {\r\n  title: 'Basic link example',\r\n  uiModel: `\r\n  <section class=\"row align-items-center m-1\">\r\n    <a title=\"Link to Google\" class=\"btn btn-primary mr-2\"\r\n    href=\"https://falconsoft.github.io/ngx-dynamic-components/components/core/button\">Button</a>\r\n    <a target=\"_blank\" href=\"https://www.google.com/\">Google</a>\r\n  </section>\r\n  `,\r\n  dataModel: {}\r\n};\r\n\r\nexport const example2: ComponentExample<UIModel<LinkProperties>> = {\r\n  title: 'Basic router link',\r\n  uiModel: `\r\n  <section class=\"row align-items-center m-1\">\r\n    <a title=\"Examples link\" class=\"btn btn-link mr-2\"\r\n    routerLink=\"/examples/contact-us\">Examples: Contact us</a>\r\n  </section>\r\n  `,\r\n  dataModel: {}\r\n};\r\n\r\ntype AComponentConstrutor = new () => AComponent;\r\n\r\ntype LinkPropertiesConstrutor = new () => LinkProperties;\r\n\r\nexport const aDescriptor: ComponentDescriptor<AComponentConstrutor, LinkPropertiesConstrutor> = {\r\n  name: 'a',\r\n  label: 'Link',\r\n  packageName: 'core',\r\n  category: Categories.HTML,\r\n  description: 'A component',\r\n  itemProperties: LinkProperties,\r\n  component: AComponent,\r\n  example: [example, example2],\r\n  parseUIModel: (xmlRes: XMLResult) => {\r\n    const uiModel = parseHTMLUIModel(xmlRes);\r\n    if (xmlRes.attrs.routerLink) {\r\n      uiModel.itemProperties.routerLink = xmlRes.attrs.routerLink;\r\n    }\r\n    if (xmlRes.attrs.queryParams) {\r\n      uiModel.itemProperties.queryParams = xmlRes.attrs.queryParams;\r\n    }\r\n    return uiModel;\r\n  },\r\n  defaultModel: '<a target=\"_blank\" href=\"https://www.google.com/\">Google</a>'\r\n};\r\n","import { ComponentDescriptor, Categories, BaseHTMLElementConstructor } from '../../models';\r\nimport { BaseHTMLElement, HTMLProperties, HTMLPropertiesConstrutor, parseHTMLUIModel } from '../../components/base-html-element';\r\n\r\nexport const ulDescriptor: ComponentDescriptor<BaseHTMLElementConstructor, HTMLPropertiesConstrutor> = {\r\n  name: 'ul',\r\n  label: 'UL Element',\r\n  packageName: 'core',\r\n  category: Categories.HTML,\r\n  description: 'HTML UL element',\r\n  itemProperties: HTMLProperties,\r\n  component: BaseHTMLElement,\r\n  example: {\r\n    title: 'HTML <ul> example',\r\n    uiModel: `<div>\r\n    <ul>\r\n    <li>item-1</li>\r\n    <li>item-2</li>\r\n    <li>item-3</li>\r\n    </ul>\r\n    </div>`,\r\n    dataModel: {}\r\n  },\r\n  parseUIModel: parseHTMLUIModel,\r\n  defaultModel: '<ul><li>item-1</li><li>item-2</li></ul>'\r\n};\r\n","import { ComponentDescriptor, Categories, BaseHTMLElementConstructor } from '../../models';\r\nimport { BaseHTMLElement, HTMLProperties, HTMLPropertiesConstrutor, parseHTMLUIModel } from '../../components/base-html-element';\r\n\r\nexport const liDescriptor: ComponentDescriptor<BaseHTMLElementConstructor, HTMLPropertiesConstrutor> = {\r\n  name: 'li',\r\n  label: 'LI Element',\r\n  packageName: 'core',\r\n  category: Categories.HTML,\r\n  description: 'HTML LI element',\r\n  itemProperties: HTMLProperties,\r\n  component: BaseHTMLElement,\r\n  example: {\r\n    title: 'HTML <li> example',\r\n    uiModel: `<section>\r\n    <li background=\"gray\" color=\"red\">Text</li>\r\n    <li background=\"green\" color=\"white\"><span>Text in Span</span></li>\r\n    <li background=\"blue\" color=\"yellow\"><a href=\"https://www.google.com\">Google</a></li>\r\n    <li><i class=\"fa fa-play\"/></li>\r\n  </section>`,\r\n    dataModel: {}\r\n  },\r\n  parseUIModel: parseHTMLUIModel,\r\n  defaultModel: '<li><i class=\"fa fa-play\"/></li>'\r\n};\r\n","import { ComponentDescriptor, Categories, BaseHTMLElementConstructor } from '../../models';\r\nimport { BaseHTMLElement, HTMLProperties, HTMLPropertiesConstrutor, parseHTMLUIModel } from '../../components/base-html-element';\r\n\r\nexport const olDescriptor: ComponentDescriptor<BaseHTMLElementConstructor, HTMLPropertiesConstrutor> = {\r\n  name: 'ol',\r\n  label: 'OL Element',\r\n  packageName: 'core',\r\n  category: Categories.HTML,\r\n  description: 'HTML OL element',\r\n  itemProperties: HTMLProperties,\r\n  component: BaseHTMLElement,\r\n  example: {\r\n    title: 'HTML <ol> example',\r\n    uiModel: `\r\n\r\n  <nav aria-label=\"breadcrumb\">\r\n    <ol class=\"breadcrumb px-0\">\r\n      <li class=\"breadcrumb-item\"><a routerLink=\"app/{$.appInfo/ownerName}/{$.appInfo/appName}\">Home</a></li>\r\n      <li class=\"breadcrumb-item\"><a routerLink=\"app/{$.appInfo/ownerName}/{$.appInfo/appName}/orders-list\">Orders</a></li>\r\n      <li class=\"breadcrumb-item active\" aria-current=\"page\">Details</li>\r\n    </ol>\r\n  </nav>\r\n\r\n    `,\r\n    dataModel: {\r\n      appInfo: {\r\n        ownerName: 'TestUser',\r\n        appName: 'LongAppName'\r\n      }\r\n    }\r\n  },\r\n  parseUIModel: parseHTMLUIModel,\r\n  defaultModel: '<ol><li>First</li><li>Second</li></ol>'\r\n};\r\n","import { ComponentDescriptor, Categories, BaseHTMLElementConstructor } from '../models';\r\nimport { BaseHTMLElement, HTMLProperties, HTMLPropertiesConstrutor, parseHTMLUIModel } from '../components/base-html-element';\r\n\r\nconst tags = ['span', 'p', 'i', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'nav', 'small'];\r\n\r\nconst htmlElementDescriptor: ComponentDescriptor<BaseHTMLElementConstructor, HTMLPropertiesConstrutor> = {\r\n  name: 'HTML_ELEMENT_TAG',\r\n  label: 'HTML_ELEMENT_TAG Element',\r\n  packageName: 'core',\r\n  category: Categories.HTML,\r\n  description: 'HTML HTML_ELEMENT_TAG element',\r\n  itemProperties: HTMLProperties,\r\n  component: BaseHTMLElement,\r\n  example: {\r\n    title: 'HTML <HTML_ELEMENT_TAG> example',\r\n    uiModel: `\r\n    <div>\r\n    <HTML_ELEMENT_TAG>Text</HTML_ELEMENT_TAG>\r\n    <HTML_ELEMENT_TAG><i class=\"fa fa-play\"/></HTML_ELEMENT_TAG>\r\n  </div>\r\n    `,\r\n    dataModel: {}\r\n  },\r\n  parseUIModel: parseHTMLUIModel,\r\n  defaultModel: '<HTML_ELEMENT_TAG dc=\"element\">Text</HTML_ELEMENT_TAG>'\r\n};\r\n\r\nexport const htmlDescriptors: ComponentDescriptor<BaseHTMLElementConstructor, HTMLPropertiesConstrutor>[] =\r\n  tags.map(\r\n    tag => replaceStringValues<ComponentDescriptor<BaseHTMLElementConstructor, HTMLPropertiesConstrutor>>(htmlElementDescriptor, tag)\r\n  );\r\n\r\nfunction replaceStringValues<T = Record<string, unknown>>(target: T, tag: string): T {\r\n  const res = {} as T;\r\n  return Object.entries(target).reduce((obj, [key, value]) => {\r\n    obj[key] = value;\r\n    if (typeof value === 'string') {\r\n      obj[key] = value.replace(/HTML_ELEMENT_TAG/g, tag);\r\n    }\r\n\r\n    if (key === 'example') {\r\n      obj[key] = replaceStringValues(obj[key], tag);\r\n    }\r\n\r\n    return obj;\r\n  }, res);\r\n}\r\n","import { ComponentExample, UIModel } from '../../models';\r\nimport { RepeaterProperties } from './repeater.component';\r\n\r\nconst example: ComponentExample<UIModel<RepeaterProperties>> = {\r\n  title: 'Repeater example',\r\n  uiModel: `\r\n  <div class=\"p-2\">\r\n    <h3 class=\"row\">Todo List</h3>\r\n    <div class=\"row w-100 align-items-center mb-3\">\r\n      <input class=\"form-control col\" placeholder=\"Enter todo\" binding=\"$.item\"/>\r\n      <button class=\"btn btn-secondary col-auto mx-2\" onClick=\"addItem()\" type=\"button\">Add</button>\r\n      <button class=\"btn btn-danger col-auto\" onClick=\"removeLast()\" type=\"button\">Remove Last</button>\r\n    </div>\r\n    <repeater class=\"row\" itemsSource=\"$.dataList\">\r\n      <div class=\"col-12 mb-2\">\r\n        <text class=\"col-9\" text-style=\"h4\">$._item.item</text>\r\n        <button class=\"btn btn-danger col-auto\" onClick=\"remove($._index)\" type=\"button\">x</button>\r\n      </div>\r\n    </repeater>\r\n  </div>\r\n  `,\r\n  dataModel: {\r\n    dataList: [{\r\n      item: 'learn JS'\r\n    }, {\r\n      item: 'learn TS'\r\n    }]\r\n  },\r\n  scripts: `def addItem():\r\n  dataModel.dataList.push({\r\n    \"item\": dataModel.item\r\n  })\r\n\r\ndef removeLast():\r\n  dataModel.dataList.pop()\r\n\r\ndef remove(_item):\r\n  index = dataModel.dataList.indexOf(_item)\r\n  dataModel.dataList.splice(index, 1)\r\n  `\r\n};\r\n\r\n\r\nconst inputExample: ComponentExample<UIModel<RepeaterProperties>> = {\r\n  title: 'Repeater input example',\r\n  uiModel: `\r\n  <div class=\"p-2\">\r\n    <h3 class=\"row\">Names</h3>\r\n    <div class=\"row w-100 align-items-center mb-3\">\r\n      <button class=\"btn btn-success col-auto\" onClick=\"addItem()\" type=\"button\">Add</button>\r\n      <button class=\"btn btn-danger col-auto mx-2\" onClick=\"removeLast()\" type=\"button\">Remove Last</button>\r\n      <button class=\"btn btn-secondary col-auto\" onClick=\"printDataModel()\" type=\"button\">Print DataModel</button>\r\n    </div>\r\n    <repeater class=\"row\" itemsSource=\"$.dataList\">\r\n      <input class=\"form-control\" binding=\"$.name\"/>\r\n    </repeater>\r\n  </div>\r\n  `,\r\n  dataModel: {\r\n    dataList: [{\r\n      name: 'John'\r\n    }, {\r\n      name: 'Jane'\r\n    }]\r\n  },\r\n  scripts: `def addItem():\r\n  dataModel.dataList.push({\r\n    name: ''\r\n  })\r\n\r\ndef removeLast():\r\n  dataModel.dataList.pop()\r\n\r\ndef printDataModel():\r\n  print(dataModel)\r\n  `\r\n};\r\n\r\nconst selectExample: ComponentExample<UIModel<RepeaterProperties>> = {\r\n  title: 'Repeater select example',\r\n  uiModel: `\r\n  <div class=\"p-2\">\r\n    <h3 class=\"row\">Countries</h3>\r\n    <div class=\"row w-100 align-items-center mb-3\">\r\n      <button class=\"btn btn-success col-auto\" onClick=\"addItem()\" type=\"button\">Add</button>\r\n      <button class=\"btn btn-danger col-auto mx-2\" onClick=\"removeLast()\" type=\"button\">Remove Last</button>\r\n      <button class=\"btn btn-secondary col-auto\" onClick=\"printDataModel()\" type=\"button\">Print DataModel</button>\r\n    </div>\r\n    <repeater class=\"row\" itemsSource=\"$.dataList\">\r\n      <select class=\"form-control\" width=\"300px\" itemsSource=\"$.countries\" binding=\"$._item.country\"></select>\r\n    </repeater>\r\n  </div>\r\n  `,\r\n  dataModel: {\r\n    countries: ['US', 'UK', 'France', 'Ukraine', 'Germany'],\r\n    dataList: [{\r\n      country: 'US'\r\n    }, {\r\n      country: 'UK'\r\n    }]\r\n  },\r\n  scripts: `def addItem():\r\n  dataModel.dataList.push({\r\n    country: ''\r\n  })\r\n\r\ndef removeLast():\r\n  dataModel.dataList.pop()\r\n\r\ndef printDataModel():\r\n  print(dataModel)\r\n  `\r\n};\r\n\r\nexport default [ example, inputExample, selectExample ];\r\n","import {\r\n  Component,\r\n  HostBinding,\r\n  OnInit,\r\n  QueryList,\r\n  ViewChildren,\r\n  ViewContainerRef,\r\n} from '@angular/core';\r\nimport { BaseUIComponent } from '../../components/base-ui-component';\r\nimport { CoreService } from '../../services/core.service';\r\nimport { StyleProperties, propDescription } from '../../properties';\r\nimport {\r\n  UIModel,\r\n  ComponentDescriptor,\r\n  Categories,\r\n  XMLResult,\r\n} from '../../models';\r\nimport { queryValue, toXMLResult } from '../../utils';\r\nimport example from './repeater.examples';\r\n\r\n@Component({\r\n  selector: 'dc-repeater',\r\n  templateUrl: './repeater.component.html',\r\n  styles: [\r\n    `\r\n      :host:not(.row):not(.input-group) {\r\n        display: block;\r\n      }\r\n    `,\r\n  ],\r\n})\r\nexport class RepeaterComponent\r\n  extends BaseUIComponent<RepeaterProperties>\r\n  implements OnInit\r\n{\r\n  @HostBinding('style.display') display = undefined;\r\n  @ViewChildren('vc', { read: ViewContainerRef })\r\n  vContainers: QueryList<ViewContainerRef>;\r\n\r\n  childUIModel: UIModel;\r\n\r\n  async ngOnInit(): Promise<void> {\r\n    await super.ngOnInit();\r\n    this.childUIModel = CoreService.getUIModel(\r\n      toXMLResult(this.properties.childUIModel)\r\n    );\r\n    const dataList = this.dataList;\r\n    if (this.childUIModel) {\r\n      this.vContainers.forEach((vc, i) => {\r\n        this.rendererService.createComponent(this, this.childUIModel, vc, dataList[i]);\r\n      });\r\n    }\r\n  }\r\n\r\n  get dataList(): any[] {\r\n    const src = this.properties.itemsSource;\r\n    if (typeof src === 'string' && src.startsWith('$.')) {\r\n      return queryValue(this.dataModel, src);\r\n    }\r\n    return [];\r\n  }\r\n\r\n  getDataModel(\r\n    item: Record<string, unknown>,\r\n    index: number\r\n  ): Record<string, unknown> {\r\n    return { ...this.dataModel, _item: item, _index: index };\r\n  }\r\n\r\n  onDataModelChanged(\r\n    evt: Record<string, unknown>,\r\n    item: Record<string, unknown>\r\n  ): void {\r\n    const src = this.properties.itemsSource;\r\n    if (typeof src === 'string' && src.startsWith('$.')) {\r\n      const list = this.dataList;\r\n      // eslint-disable-next-line no-underscore-dangle\r\n      list.splice(list.indexOf(item), 1, evt._item);\r\n    }\r\n    this.changedDataModel.emit(this.dataModel);\r\n  }\r\n}\r\n\r\nexport class RepeaterProperties extends StyleProperties {\r\n  @propDescription({\r\n    description: 'Select options or binding to dataModel.',\r\n    example: '$.dataList',\r\n  })\r\n  itemsSource: string;\r\n\r\n  @propDescription({\r\n    description: 'Child UI Model.',\r\n    example: '$.dataList',\r\n  })\r\n  childUIModel: any;\r\n}\r\n\r\ntype RepeaterComponentConstrutor = new () => RepeaterComponent;\r\n\r\ntype RepeaterPropertiesConstrutor = new () => RepeaterProperties;\r\n\r\nfunction repeaterParser(xmlRes: XMLResult): UIModel<RepeaterProperties> {\r\n  const uiModel = {\r\n    type: 'repeater',\r\n    itemProperties: {\r\n      itemsSource: xmlRes.attrs.itemsSource,\r\n      childUIModel: xmlRes.childNodes?.[0],\r\n    },\r\n  };\r\n\r\n  return uiModel;\r\n}\r\n\r\nexport const repeaterDescriptor: ComponentDescriptor<\r\n  RepeaterComponentConstrutor,\r\n  RepeaterPropertiesConstrutor\r\n> = {\r\n  name: 'repeater',\r\n  packageName: 'core',\r\n  label: 'Repeater',\r\n  category: Categories.Containers,\r\n  description: 'Repeater component',\r\n  itemProperties: RepeaterProperties,\r\n  component: RepeaterComponent,\r\n  example,\r\n  parseUIModel: repeaterParser,\r\n  defaultModel: `<repeater class=\"d-flex\" itemsSource=\"$.dataList\"></repeater>`,\r\n};\r\n","<ng-container #vc *ngFor=\"let item of dataList;\"></ng-container>\r\n","import { CoreService } from '../services/core.service';\r\nimport { ComponentDescriptor } from '../models';\r\nimport { textDescriptor } from './text/text.component';\r\nimport { buttonDescriptor } from './button/button.component';\r\nimport { inputDescriptor } from './input/input.component';\r\nimport { iconDescriptor } from './icon/icon.component';\r\nimport { textareaDescriptor } from './textarea/textarea.component';\r\nimport { containerDescriptor, divDescriptor } from './container/container.component';\r\nimport { labelDescriptor } from './label/label.component';\r\nimport { formDescriptor } from './form/form.component';\r\nimport { selectDescriptor } from './select/select.component';\r\nimport { aDescriptor } from '../html-elements/a/a.component';\r\nimport { ulDescriptor } from '../html-elements/ul/ul.element';\r\nimport { liDescriptor } from '../html-elements/li/li.element';\r\nimport { olDescriptor } from '../html-elements/ol/ol.element';\r\nimport { htmlDescriptors } from '../html-elements';\r\nimport { repeaterDescriptor } from './repeater/repeater.component';\r\n\r\nexport const COMPONENTS_LIST: ComponentDescriptor[] = [\r\n  containerDescriptor,\r\n  divDescriptor,\r\n  formDescriptor,\r\n  repeaterDescriptor,\r\n  textDescriptor,\r\n  labelDescriptor,\r\n  iconDescriptor,\r\n  inputDescriptor,\r\n  textareaDescriptor,\r\n  buttonDescriptor,\r\n  selectDescriptor,\r\n  aDescriptor,\r\n  ulDescriptor,\r\n  olDescriptor,\r\n  liDescriptor,\r\n  ...htmlDescriptors\r\n];\r\n\r\n// Register components.\r\nexport function registerComponents(): void {\r\n  COMPONENTS_LIST.forEach(component => CoreService.registerComponent(component));\r\n}\r\n\r\nexport function getCategories(): { name: string; packageName: string; components: ComponentDescriptor[] }[] {\r\n  const categories = COMPONENTS_LIST.reduce((map, desc) => {\r\n    map[desc.category] = map[desc.category] || [];\r\n    map[desc.category].push(desc);\r\n    return map;\r\n  }, {});\r\n\r\n  return Object.entries(categories).map(([key, val]: [string, ComponentDescriptor[]]) => ({\r\n      name: key,\r\n      components: val,\r\n      packageName: 'core'\r\n    }));\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { AccordionModule } from 'ngx-bootstrap/accordion';\r\nimport { NGXDynamicComponent } from './components/ngx-dynamic-component';\r\n\r\nimport { ContainerComponent } from './ui-components/container/container.component';\r\nimport { TextComponent } from './ui-components/text/text.component';\r\nimport { ButtonComponent } from './ui-components/button/button.component';\r\nimport { InputComponent } from './ui-components/input/input.component';\r\nimport { IconComponent } from './ui-components/icon/icon.component';\r\nimport { RadioGroupComponent } from './ui-components/radio-group/radio-group.component';\r\nimport { TextareaComponent } from './ui-components/textarea/textarea.component';\r\nimport { registerComponents } from './ui-components/register';\r\nimport { LabelComponent } from './ui-components/label/label.component';\r\nimport { FormComponent } from './ui-components/form/form.component';\r\nimport { SelectComponent } from './ui-components/select/select.component';\r\nimport { RepeaterComponent } from './ui-components/repeater/repeater.component';\r\nimport { RendererService } from './services/renderer.service';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    ContainerComponent,\r\n    FormComponent,\r\n    RepeaterComponent,\r\n    TextComponent,\r\n    LabelComponent,\r\n    ButtonComponent,\r\n    InputComponent,\r\n    IconComponent,\r\n    RadioGroupComponent,\r\n    TextareaComponent,\r\n    SelectComponent,\r\n    NGXDynamicComponent\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n    HttpClientModule,\r\n    DragDropModule,\r\n    AccordionModule\r\n  ],\r\n  exports: [NGXDynamicComponent],\r\n  providers: [RendererService],\r\n})\r\nexport class DynamicComponentsCoreModule {\r\n  constructor() {\r\n    registerComponents();\r\n  }\r\n}\r\n","import { BaseUIComponentConstructor, Categories, ComponentEvent, UIModel } from '../models';\r\nimport { CoreService } from '../services/core.service';\r\nimport { NGXDynamicComponent } from '../components/ngx-dynamic-component';\r\nimport { BaseDynamicComponent } from '../components/base-dynamic-component';\r\n\r\ntype UIComponent = BaseDynamicComponent | NGXDynamicComponent;\r\n\r\nexport function renderChildren(parentComponent: BaseDynamicComponent): BaseDynamicComponent[] {\r\n  if (!parentComponent.containerRef || !parentComponent.uiModel) {\r\n    return;\r\n  }\r\n  parentComponent.containerRef.clear();\r\n  return parentComponent.uiModel?.children?.map(m => createComponent(parentComponent, m));\r\n}\r\n\r\nexport function createComponent(\r\n  parentComponent: UIComponent,\r\n  uiModel: UIModel,\r\n  containerRef = parentComponent.containerRef,\r\n  dataModel = parentComponent.dataModel): BaseDynamicComponent  {\r\n  try {\r\n    const descriptor = CoreService.getComponentDescriptor(uiModel.type);\r\n    const componentClass = descriptor.component;\r\n    let component: BaseDynamicComponent;\r\n    if (descriptor.category === Categories.HTML) {\r\n      const baseHtml = componentClass as any;\r\n      component = new baseHtml(parentComponent.injector);\r\n      component.dataModel = dataModel;\r\n      component.uiModel = uiModel;\r\n      component.create(containerRef.element.nativeElement);\r\n    } else if (componentClass.prototype instanceof BaseDynamicComponent) {\r\n      const componentRef = containerRef.createComponent(\r\n        componentClass as BaseUIComponentConstructor\r\n      );\r\n      component = componentRef.instance as BaseDynamicComponent;\r\n      component.dataModel = dataModel;\r\n      component.uiModel = uiModel;\r\n      component.create(componentRef.location.nativeElement);\r\n      return component;\r\n    }\r\n\r\n    if (component) {\r\n      component.element.classList.add('dc-element');\r\n      uiModel.getComponent = () => component;\r\n      component.changedDataModel.subscribe((evt) => {\r\n        parentComponent.changedDataModel.emit(evt);\r\n      });\r\n      component.eventHandlers.subscribe((evt: ComponentEvent) => {\r\n        if (parentComponent instanceof NGXDynamicComponent) {\r\n          evt.rootUIModel = parentComponent.uiModel;\r\n        }\r\n        parentComponent.eventHandlers.emit(evt);\r\n      });\r\n      return component;\r\n    } else {\r\n      throw new Error('Not able to create component');\r\n    }\r\n  } catch (error) {\r\n    console.error(error);\r\n    throw new Error(`Failed to create component ${uiModel.type}`);\r\n  }\r\n}\r\n","import { CdkDrag } from '@angular/cdk/drag-drop';\r\nimport { Component, ViewChild, ViewContainerRef } from '@angular/core';\r\n\r\n@Component({\r\n  // eslint-disable-next-line @angular-eslint/component-selector\r\n  selector: '[dc-draggable]',\r\n  hostDirectives: [CdkDrag],\r\n  styles: [ ':host { display: block; }' ],\r\n  template: '<ng-container #container></ng-container>'\r\n})\r\nexport class DraggableComponent {\r\n  @ViewChild('container', { read: ViewContainerRef, static: true }) container: ViewContainerRef;\r\n}\r\n","import { Subject } from 'rxjs';\r\nimport { CdkDrag } from '@angular/cdk/drag-drop';\r\nimport { BaseDynamicComponent } from '../../components/base-dynamic-component';\r\nimport { UIComponent } from '../designer-renderer.service';\r\nimport { ComponentDescriptor, ComponentEvent, UIModel } from '../../models';\r\nimport { NGXDynamicDesignerComponent } from '../components/ngx-dynamic-designer-component';\r\nimport { CoreService } from '../../services/core.service';\r\n\r\nexport abstract class ComponentCreator {\r\n  component: BaseDynamicComponent;\r\n  selected$ = new Subject<BaseDynamicComponent>();\r\n\r\n  protected descriptor: ComponentDescriptor;\r\n\r\n  constructor(\r\n    private parentComponent: UIComponent,\r\n    private uiModel: UIModel\r\n  ) {\r\n      this.descriptor = CoreService.getComponentDescriptor(this.uiModel.type, 'designer');\r\n  }\r\n\r\n  abstract deselectComponent(): void;\r\n\r\n  abstract selectComponent(): void;\r\n\r\n  abstract get drag(): CdkDrag;\r\n\r\n  protected initComponentProps(): void {\r\n    const component = this.component;\r\n    component.parent = this.parentComponent as BaseDynamicComponent;\r\n    component.element.classList.add('dc-element');\r\n    component.uiModel.getComponent = () => component;\r\n    component.changedDataModel.subscribe((evt) => {\r\n      this.parentComponent.changedDataModel.emit(evt);\r\n    });\r\n    component.eventHandlers.subscribe((evt: ComponentEvent) => {\r\n      if (this.parentComponent instanceof NGXDynamicDesignerComponent) {\r\n        evt.rootUIModel = this.parentComponent.uiModel;\r\n      }\r\n      this.parentComponent.eventHandlers.emit(evt);\r\n    });\r\n  }\r\n}\r\n","import { ViewContainerRef, ComponentRef } from '@angular/core';\r\nimport { CdkDrag } from '@angular/cdk/drag-drop';\r\nimport { UIModel } from '../../models';\r\nimport { DraggableComponent } from '../components/draggable-component';\r\nimport { UIComponent } from '../designer-renderer.service';\r\nimport { ComponentCreator } from './component-creator';\r\n\r\nexport class HTMLCreator extends ComponentCreator {\r\n\r\n  private draggableWrapper: ComponentRef<DraggableComponent>;\r\n\r\n  constructor(\r\n    parentComponent: UIComponent,\r\n    uiModel: UIModel,\r\n    containerRef: ViewContainerRef,\r\n    dataModel: any,\r\n    index: number\r\n  ) {\r\n    super(parentComponent, uiModel);\r\n    const baseHtml = this.descriptor.component as any;\r\n    const component = new baseHtml(parentComponent.injector);\r\n    component.dataModel = dataModel;\r\n    component.uiModel = uiModel;\r\n    this.draggableWrapper = containerRef.createComponent(DraggableComponent, {\r\n      index\r\n    });\r\n    component.create(this.draggableWrapper.instance.container.element.nativeElement);\r\n\r\n    this.drag.data = component.uiModel;\r\n    component.element.onclick = (evt: Event) => {\r\n      evt.stopImmediatePropagation();\r\n      this.selectComponent();\r\n    };\r\n\r\n    this.component = component;\r\n\r\n    this.initComponentProps();\r\n  }\r\n\r\n  deselectComponent(): void {\r\n    this.component.element.classList.remove('selected-component');\r\n  }\r\n\r\n  selectComponent(): void {\r\n    this.component.element.classList.add('selected-component');\r\n    this.selected$.next(this.component);\r\n  }\r\n\r\n  get drag(): CdkDrag {\r\n    return this.draggableWrapper.injector.get(CdkDrag);\r\n  }\r\n}\r\n","import { ViewContainerRef } from '@angular/core';\r\nimport { CdkDrag } from '@angular/cdk/drag-drop';\r\nimport { BaseUIComponentConstructor, UIModel } from '../../models';\r\nimport { UIComponent } from '../designer-renderer.service';\r\nimport { ComponentCreator } from './component-creator';\r\nimport { BaseDynamicComponent } from '../../components/base-dynamic-component';\r\n\r\nexport class DcCreator extends ComponentCreator {\r\n  constructor(\r\n    parentComponent: UIComponent,\r\n    uiModel: UIModel,\r\n    containerRef: ViewContainerRef,\r\n    dataModel: any,\r\n    index: number\r\n  ) {\r\n    super(parentComponent, uiModel);\r\n\r\n    const componentRef = containerRef.createComponent(\r\n      this.descriptor.component as BaseUIComponentConstructor,\r\n      { index }\r\n    );\r\n    const component = componentRef.instance as BaseDynamicComponent;\r\n    component.dataModel = dataModel;\r\n    component.uiModel = uiModel;\r\n    component.create(componentRef.location.nativeElement);\r\n    this.component = component;\r\n    this.initComponentProps();\r\n    this.initDrag(component);\r\n  }\r\n\r\n  deselectComponent(): void {\r\n    this.drag.element.nativeElement.classList.remove('selected-component');\r\n  }\r\n\r\n  selectComponent(): void {\r\n    this.selected$.next(this.component);\r\n    this.drag.element.nativeElement.classList.add('selected-component');\r\n  }\r\n\r\n  get drag(): CdkDrag {\r\n    return this.component.injector.get(CdkDrag);\r\n  }\r\n\r\n  protected initDrag(component: BaseDynamicComponent): void {\r\n    if (!this.drag) {\r\n      console.warn(`${component.uiModel.type} is not draggable`);\r\n      return;\r\n    }\r\n    this.drag.disabled = true;\r\n    this.drag.data = component.uiModel;\r\n    this.drag.started.subscribe(() => {\r\n      this.drag.data = component.generateUIModel();\r\n    });\r\n    component.element.onclick = (evt: Event) => {\r\n      evt.stopImmediatePropagation();\r\n    };\r\n    this.drag.element.nativeElement.onclick = (evt) => {\r\n      evt.stopPropagation();\r\n      this.selectComponent();\r\n    };\r\n  }\r\n}\r\n","import { ViewContainerRef } from '@angular/core';\r\nimport { CdkDrag, CdkDragDrop, CdkDropList } from '@angular/cdk/drag-drop';\r\nimport { Subject } from 'rxjs';\r\nimport { UIModel } from '../../models';\r\nimport { UIComponent } from '../designer-renderer.service';\r\nimport { BaseDynamicComponent } from '../../components/base-dynamic-component';\r\nimport { DcCreator } from './dc-creator';\r\n\r\nexport class DcContainerCreator extends DcCreator {\r\n\r\n  dropped$ = new Subject<CdkDragDrop<Array<any>>>();\r\n\r\n  constructor(\r\n    parentComponent: UIComponent,\r\n    uiModel: UIModel,\r\n    containerRef: ViewContainerRef,\r\n    dataModel: any,\r\n    index: number\r\n  ) {\r\n    super(parentComponent, uiModel, containerRef, dataModel, index);\r\n    this.initDrop(this.component);\r\n  }\r\n\r\n  deselectComponent(): void {\r\n    super.deselectComponent();\r\n    this.drop.element.nativeElement.classList.remove('selected-container');\r\n    this.drop.disabled = true;\r\n  }\r\n\r\n  selectComponent(): void {\r\n    this.selected$.next(this.component);\r\n    this.drop.disabled = false;\r\n    this.drop.element.nativeElement.classList.add('selected-container');\r\n    this.component.children?.filter(child => child.injector).forEach((child) => {\r\n      child.injector.get(CdkDrag).disabled = false;\r\n    });\r\n  }\r\n\r\n  get drop(): CdkDropList {\r\n    return this.component.injector.get(CdkDropList, null, {\r\n      self: true\r\n    });\r\n  }\r\n\r\n  private initDrop(component: BaseDynamicComponent): void {\r\n    try {\r\n      this.drop.element.nativeElement.onclick = (evt) => {\r\n        evt.stopPropagation();\r\n        this.selectComponent();\r\n      };\r\n\r\n      this.drop.orientation = this.isHorizontal(component) ? 'horizontal' : 'vertical';\r\n\r\n      this.drop.dropped.subscribe((event: CdkDragDrop<Array<any>>) => {\r\n        if (event.previousContainer === event.container && event.previousIndex === event.currentIndex) {\r\n          return;\r\n        }\r\n        this.dropped$.next(event);\r\n      });\r\n    } catch (e) {\r\n      console.log(component.uiModel.type, e.message);\r\n    }\r\n  }\r\n\r\n  private isHorizontal(component: BaseDynamicComponent): boolean {\r\n    const cssClass = component.properties.class;\r\n    return cssClass?.includes('row') && !cssClass?.includes('flex-column');\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\r\nimport { BehaviorSubject, filter, map } from 'rxjs';\r\nimport { BaseDynamicComponent } from '../components/base-dynamic-component';\r\nimport { Categories, UIModel } from '../models';\r\nimport { NGXDynamicComponent } from '../components/ngx-dynamic-component';\r\nimport { CoreService } from '../services/core.service';\r\nimport { HTMLCreator } from './creators/html-creator';\r\nimport { DcCreator } from './creators/dc-creator';\r\nimport { DcContainerCreator } from './creators/dc-container-creator';\r\nimport { ComponentCreator } from './creators/component-creator';\r\nimport { NGXDynamicDesignerComponent } from './components/ngx-dynamic-designer-component';\r\n\r\nexport type UIComponent = BaseDynamicComponent | NGXDynamicComponent;\r\n\r\n@Injectable()\r\nexport class DesignerRendererService {\r\n\r\n  selectedCreator$ = new BehaviorSubject<ComponentCreator>(null);\r\n\r\n  selectedContainer$ = this.selectedCreator$.pipe(\r\n    filter(creator => !creator || creator instanceof DcContainerCreator),\r\n    map(creator => creator?.component)\r\n  );\r\n  selectedComponent$ = this.selectedCreator$.pipe(\r\n    filter(creator => !creator || (creator instanceof DcCreator || creator instanceof HTMLCreator)),\r\n    map(creator => creator?.component)\r\n  );\r\n\r\n  selectedElement$ = this.selectedCreator$.pipe(\r\n    filter(creator => !creator || creator instanceof HTMLCreator),\r\n    map(creator => creator?.component)\r\n  );\r\n\r\n  private componentCreatorMap = new Map<BaseDynamicComponent, ComponentCreator>();\r\n\r\n  renderChildren(parentComponent: BaseDynamicComponent): BaseDynamicComponent[] {\r\n    if (!parentComponent.containerRef || !parentComponent.uiModel) {\r\n      return;\r\n    }\r\n    parentComponent.containerRef.clear();\r\n    return parentComponent.uiModel?.children?.map(m => this.createComponent(parentComponent, m));\r\n  }\r\n\r\n  createComponent(\r\n    parentComponent: UIComponent,\r\n    uiModel: UIModel,\r\n    containerRef = parentComponent.containerRef,\r\n    dataModel = parentComponent.dataModel,\r\n    index?: number): BaseDynamicComponent  {\r\n    try {\r\n      const descriptor = CoreService.getComponentDescriptor(uiModel.type, 'designer');\r\n      const componentClass = descriptor.component;\r\n      let componentCreator: ComponentCreator;\r\n      if (descriptor.category === Categories.HTML) {\r\n        componentCreator = new HTMLCreator(\r\n          parentComponent,\r\n          uiModel,\r\n          containerRef,\r\n          dataModel,\r\n          index\r\n        );\r\n      } else if (descriptor.category === Categories.Containers) {\r\n        componentCreator = new DcContainerCreator(\r\n          parentComponent,\r\n          uiModel,\r\n          containerRef,\r\n          dataModel,\r\n          index\r\n        );\r\n        componentCreator.drag.disabled = true;\r\n        setTimeout(() => {\r\n          if (componentCreator.drag.disabled === null) {\r\n            componentCreator.drag.disabled = true;\r\n          }\r\n        });\r\n        (componentCreator as DcContainerCreator).dropped$.subscribe((evt: CdkDragDrop<Array<any>>) => {\r\n          this.onDrop(evt);\r\n        });\r\n      } else if (componentClass.prototype instanceof BaseDynamicComponent) {\r\n        componentCreator = new DcCreator(\r\n          parentComponent,\r\n          uiModel,\r\n          containerRef,\r\n          dataModel,\r\n          index\r\n        );\r\n      }\r\n      const component = componentCreator.component;\r\n      if (component) {\r\n        this.componentCreatorMap.set(component, componentCreator);\r\n        componentCreator.selected$.subscribe(() => {\r\n          this.selectedCreator?.deselectComponent();\r\n          this.selectedCreator$.next(componentCreator);\r\n        });\r\n        componentCreator.drag.disabled = false;\r\n        return component;\r\n      } else {\r\n        throw new Error('Not able to create component');\r\n      }\r\n    } catch (error) {\r\n      console.error(error);\r\n      throw new Error(`Failed to create component ${uiModel.type}`);\r\n    }\r\n  }\r\n\r\n  async updateComponent(component: BaseDynamicComponent, properties: Record<string, string>): Promise<void> {\r\n    const index = component.parent?.children?.indexOf(component) ?? 0;\r\n    this.deleteComponent(component);\r\n    const newComponent = await this.insertComponent(component.parent, {\r\n      ...component.uiModel,\r\n      itemProperties: {\r\n        ...component.uiModel.itemProperties,\r\n        ...properties\r\n      }\r\n    }, index);\r\n    this.componentCreatorMap.get(newComponent)?.selectComponent();\r\n  }\r\n\r\n  deselectComponent(): void {\r\n    if (this.selectedCreator) {\r\n      this.selectedCreator.deselectComponent();\r\n      this.selectedCreator$.next(null);\r\n    }\r\n  }\r\n\r\n  selectComponent(component: BaseDynamicComponent): void {\r\n    const creator = this.componentCreatorMap.get(component);\r\n    creator?.selectComponent();\r\n  }\r\n\r\n  private get selectedContainer(): BaseDynamicComponent {\r\n    if (this.selectedCreator instanceof DcContainerCreator) {\r\n      return this.selectedCreator.component;\r\n    }\r\n  }\r\n\r\n  private get selectedCreator(): ComponentCreator {\r\n    return this.selectedCreator$.value;\r\n  }\r\n\r\n  private async onDrop(event: CdkDragDrop<Array<any>>): Promise<void> {\r\n    const container = this.selectedContainer;\r\n    const item = event.item.data as UIModel;\r\n    try {\r\n      if (event.previousContainer.id !== 'ngx-components-list') {\r\n        this.selectedContainer?.containerRef.remove(event.previousIndex);\r\n        this.selectedContainer?.children.splice(event.previousIndex, 1);\r\n      }\r\n\r\n      await this.insertComponent(container, item, event.currentIndex);\r\n      } catch (e) {\r\n        console.log('failed to remove child', e);\r\n      }\r\n  }\r\n\r\n  private insertComponent(container: UIComponent, uiModel: UIModel, index: number): Promise<BaseDynamicComponent> {\r\n    const newComponent = this.createComponent(container, uiModel, container.containerRef, container.dataModel, index);\r\n    if (container instanceof BaseDynamicComponent) {\r\n      return new Promise((resolve) => {\r\n        setTimeout(() => {\r\n          if (!container.children) {\r\n            container.children = [];\r\n          }\r\n          container.children.splice(index, 0, newComponent);\r\n          this.syncUIModel(container);\r\n          resolve(newComponent);\r\n        });\r\n      });\r\n    }\r\n    return Promise.resolve(newComponent);\r\n  }\r\n\r\n  private syncUIModel(component: BaseDynamicComponent): void {\r\n    let prevComponentUIModel: UIModel;\r\n    while (component) {\r\n      if (component instanceof NGXDynamicDesignerComponent && prevComponentUIModel) {\r\n        component.uiModel = prevComponentUIModel;\r\n        return;\r\n      } else {\r\n        component.uiModel = component.generateUIModel();\r\n        prevComponentUIModel = component.uiModel;\r\n      }\r\n      component = component.parent;\r\n    }\r\n  }\r\n\r\n  deleteComponent(component: BaseDynamicComponent): void {\r\n    if (component.parent as unknown instanceof NGXDynamicDesignerComponent) {\r\n      this.clearDesigner(component.parent as unknown as NGXDynamicDesignerComponent);\r\n    } else {\r\n      const index = component.parent.children.indexOf(component);\r\n      if (index > -1) {\r\n        component.parent.containerRef.remove(index);\r\n        component.parent?.children.splice(index, 1);\r\n        this.selectedCreator$.next(null);\r\n      }\r\n    }\r\n  }\r\n\r\n  clearDesigner(dcDesigner: NGXDynamicDesignerComponent): void {\r\n    dcDesigner.containerRef.clear();\r\n    const newComponent = this.createComponent(dcDesigner, {\r\n      type: 'div',\r\n      itemProperties: {\r\n        class: 'container h-100'\r\n      }\r\n    }, dcDesigner.containerRef, dcDesigner.dataModel);\r\n    this.componentCreatorMap.get(newComponent)?.selectComponent();\r\n  }\r\n}\r\n","import { Component, Input, EventEmitter, Output, ViewContainerRef,\r\n  ViewChild, Injector } from '@angular/core';\r\nimport { Observable, map } from 'rxjs';\r\nimport { CdkDropList } from '@angular/cdk/drag-drop';\r\nimport { RendererService } from '../../services/renderer.service';\r\nimport { DesignerRendererService } from '../designer-renderer.service';\r\nimport { NGXDynamicComponent } from '../../components/ngx-dynamic-component';\r\nimport { ComponentEvent, UIModel } from '../../models';\r\nimport { CoreService } from '../../services/core.service';\r\nimport { DcContainerCreator } from '../creators/dc-container-creator';\r\n\r\n@Component({\r\n    selector: 'ngx-dynamic-designer-component', // eslint-disable-line\r\n    template: '<ng-container #vc></ng-container>',\r\n    providers: [{\r\n      provide: RendererService,\r\n      useClass: DesignerRendererService\r\n    }],\r\n})\r\nexport class NGXDynamicDesignerComponent extends NGXDynamicComponent {\r\n\r\n    @Input() declare dataModel: any;\r\n    @Input() declare xmlUIModel: string;\r\n    @Output() render = new EventEmitter<UIModel>();\r\n    @Output() changedDataModel = new EventEmitter();\r\n    @Output() eventHandlers = new EventEmitter<ComponentEvent>();\r\n    @ViewChild('vc', {read: ViewContainerRef, static: true}) declare containerRef: ViewContainerRef;\r\n\r\n    dropList$: Observable<CdkDropList[]>;\r\n    declare uiModel: UIModel;\r\n\r\n    constructor(public rendererService: RendererService, public injector?: Injector) {\r\n      super(rendererService, injector);\r\n\r\n      this.dropList$ = (this.rendererService as DesignerRendererService).selectedCreator$.pipe(\r\n        map(creator => {\r\n          if (creator instanceof DcContainerCreator) {\r\n            return [creator.drop];\r\n          }\r\n        })\r\n      );\r\n    }\r\n\r\n    clear(): void {\r\n      this.containerRef.clear();\r\n      this.xmlUIModel = '<div class=\"container h-100\"></div>';\r\n      this.initParsedModel(this.xmlUIModel);\r\n    }\r\n\r\n    protected initParsedModel(uiModel: string): void {\r\n      try {\r\n        this.uiModel = CoreService.parseXMLModel(uiModel, 'designer');\r\n        if (this.uiModel) {\r\n          this.rendererService.createComponent(this as unknown as NGXDynamicComponent, this.uiModel);\r\n        }\r\n      } catch (e) {\r\n        this.uiModel = null;\r\n        this.eventHandlers.emit({\r\n          eventHandler: 'parseError',\r\n          eventName: 'error',\r\n          parameters: {\r\n            uiModel: this.uiModel,\r\n            error: e,\r\n          }});\r\n      }\r\n    }\r\n\r\n    // private getDropLists(component: BaseDynamicComponent): CdkDropList[] {\r\n    //   let dropList = [component.injector?.get(CdkDropList)];\r\n    //   component.children?.forEach((childItem) => { dropList = dropList.concat(this.getDropLists(childItem)); });\r\n    //   return dropList.sort((a, b) => b.id.localeCompare(a.id));\r\n    // }\r\n\r\n    // private getIdsRecursive(component: BaseDynamicComponent): string[] {\r\n    //   let ids = [component.injector?.get(CdkDropList).id];\r\n    //   component.children?.forEach((childItem) => { ids = ids.concat(this.getIdsRecursive(childItem)); });\r\n    //   return ids.filter(id => !!id);\r\n    // }\r\n\r\n    // private getComponentsList(component: BaseDynamicComponent): BaseDynamicComponent[] {\r\n    //   let components = [component];\r\n    //   component.children?.forEach((childItem) => { components = components.concat(this.getComponentsList(childItem)); });\r\n    //   return components;\r\n    // }\r\n}\r\n","import { Component, Input, OnChanges, SimpleChanges, Output, EventEmitter, HostListener } from '@angular/core';\r\nimport { FormControl, FormGroup } from '@angular/forms';\r\nimport { CoreService } from '../../../../services/core.service';\r\nimport { BaseDynamicComponent } from '../../../../components/base-dynamic-component';\r\nimport { UIModelProperty } from '../../../../properties';\r\nimport { NGXDynamicDesignerComponent } from '../../ngx-dynamic-designer-component';\r\n\r\n@Component({\r\n  selector: 'dc-component-properties',\r\n  templateUrl: './component-properties.component.html'\r\n})\r\nexport class ComponentPropertiesComponent implements OnChanges {\r\n  @HostListener('window:keyup.enter', ['$event'])\r\n  onEnterKeyPress(): void {\r\n    this.saveComponent();\r\n  }\r\n  @Input() component: BaseDynamicComponent | undefined;\r\n  @Output() delete = new EventEmitter<BaseDynamicComponent>();\r\n  @Output() save = new EventEmitter<{\r\n    component: BaseDynamicComponent;\r\n    properties: Record<string, string>;\r\n  }>();\r\n  @Output() cancel = new EventEmitter<void>();\r\n  @Output() selectComponent = new EventEmitter<BaseDynamicComponent>();\r\n\r\n  form: FormGroup;\r\n  properties: UIModelProperty[] = [];\r\n\r\n  get hasParent(): boolean {\r\n    return !this.component?.parent || !(this.component.parent instanceof NGXDynamicDesignerComponent);\r\n  }\r\n\r\n  ngOnChanges({ component }: SimpleChanges): void {\r\n    if (component && component.currentValue) {\r\n      const properties = CoreService.getComponentDescriptor(this.component.componentType).itemProperties.prototype.properties;\r\n      this.properties = properties;\r\n      const form = new FormGroup({});\r\n      this.properties.forEach(p => form.addControl(p.name, new FormControl(this.component.properties[p.name])));\r\n      this.form = form;\r\n    }\r\n  }\r\n\r\n  deleteComponent(component: BaseDynamicComponent): void {\r\n    this.delete.emit(component);\r\n  }\r\n\r\n  saveComponent(): void {\r\n    this.save.emit({\r\n      component: this.component,\r\n      properties: this.form.value\r\n    });\r\n  }\r\n\r\n  selectParent(): void {\r\n    this.selectComponent.emit(this.component.parent);\r\n  }\r\n}\r\n","<form [formGroup]=\"form\" *ngIf=\"form\" class=\"selected-component-info border p-2\">\r\n  <div class=\"d-flex mb-2 align-items-center\">\r\n    <h5 class=\"mb-0\">Edit selected <b>{{component.uiModel.type}}</b>:</h5>\r\n    <button *ngIf=\"hasParent\" class=\"btn btn-sm btn-primary ms-auto\" type=\"button\" (click)=\"selectParent()\">Select parent</button>\r\n  </div>\r\n  <ul class=\"props-list list-unstyled\">\r\n    <li class=\"row property mb-1 me-0\" *ngFor=\"let prop of properties\">\r\n      <label for=\"prop-{{prop}}\" class=\"col\">{{prop.name}}</label> <input id=\"prop-{{prop}}\" (blur)=\"saveComponent()\" class=\"col form-control form-control-sm\" [formControlName]=\"prop.name\" />\r\n    </li>\r\n  </ul>\r\n  <div class=\"actions d-flex\">\r\n    <button class=\"btn btn-sm btn-primary\" type=\"button\" (click)=\"saveComponent()\">Apply</button>\r\n    <button class=\"btn btn-sm btn-primary-outline ms-1 me-auto\" type=\"button\" (click)=\"cancel.emit()\">Cancel</button>\r\n    <button class=\"btn btn-sm btn-danger\" type=\"button\" (click)=\"deleteComponent(component)\">Delete</button>\r\n  </div>\r\n</form>\r\n","import { CdkDropList } from '@angular/cdk/drag-drop';\r\nimport { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { CoreService } from '../../../services/core.service';\r\nimport { Categories, ComponentDescriptor, ComponentExample, UIModel } from '../../../models';\r\nimport { NGXDynamicDesignerComponent } from '../ngx-dynamic-designer-component';\r\nimport { DesignerRendererService } from '../../designer-renderer.service';\r\nimport { BaseDynamicComponent } from '../../../components/base-dynamic-component';\r\n\r\ntype ComponentsGroup = { name: string; components: ComponentDescriptor[] };\r\ntype Sample = { name: string; xmlModel: string };\r\n\r\n@Component({\r\n  selector: 'dc-designer',\r\n  templateUrl: './designer.component.html',\r\n  styleUrls: ['./designer.component.scss']\r\n})\r\nexport class DesignerComponent implements OnInit {\r\n  @Input() template = '<div class=\"container h-100\"></div>';\r\n\r\n  selectedContainer$: Observable<BaseDynamicComponent>;\r\n  selectedComponent$: Observable<BaseDynamicComponent>;\r\n  @ViewChild(NGXDynamicDesignerComponent, { static: true }) dc?: NGXDynamicDesignerComponent;\r\n  components: ComponentDescriptor[] = [];\r\n  groups: ComponentsGroup[] = [];\r\n  connected$: Observable<CdkDropList[]>;\r\n  form = this.getForm();\r\n\r\n  get designerRendererService(): DesignerRendererService {\r\n    return this.dc?.rendererService as DesignerRendererService;\r\n  }\r\n\r\n  async ngOnInit() {\r\n    this.components = this.getComponents(); // CoreService.getListOfComponents();\r\n    this.groups = this.getCategories();\r\n    this.connected$ = this.dc?.dropList$;\r\n\r\n    this.selectedContainer$ = this.designerRendererService.selectedContainer$;\r\n    this.selectedComponent$ = this.designerRendererService.selectedComponent$;\r\n  }\r\n\r\n  private getComponents(): ComponentDescriptor[] {\r\n    return CoreService.getComponentsRegistryList().filter(([key, component]) => {\r\n      if (component.category === Categories.HTML || key.includes('designer')) {\r\n        return true;\r\n      }\r\n    }).map(([, component]) => component);\r\n  }\r\n\r\n  getUIModel(component: ComponentDescriptor): UIModel {\r\n    const xmlModel: UIModel | string = component.defaultModel ?? this.getUIModelFromExample(component.example);\r\n    if (!xmlModel) {\r\n      return null;\r\n    }\r\n\r\n    if (typeof xmlModel === 'string') {\r\n      return CoreService.parseXMLModel(xmlModel);\r\n    }\r\n    return xmlModel;\r\n  }\r\n\r\n  getUIModelFromXML(xmlModel: string): UIModel {\r\n    return CoreService.parseXMLModel(xmlModel);\r\n  }\r\n\r\n  getUIModelFromExample(example: ComponentExample | ComponentExample[]): UIModel | string {\r\n    if (Array.isArray(example)) {\r\n      return example[0].uiModel;\r\n    }\r\n    return example.uiModel;\r\n  }\r\n\r\n  getCategories(): ComponentsGroup[] {\r\n    const map = new Map<string, ComponentsGroup>(\r\n      [\r\n        ['Containers', { name: 'Containers', components: [] }],\r\n        ['Basic', { name: 'Basic', components: [] }],\r\n      ]);\r\n    this.components.forEach((c) => {\r\n      if (!map.has(c.category)) {\r\n        map.set(c.category, {\r\n          name: c.category, components: []\r\n        });\r\n      }\r\n      const category: ComponentsGroup = map.get(c.category);\r\n      category.components.push(c);\r\n    });\r\n    return Array.from(map.values());\r\n  }\r\n\r\n  deleteComponent(component: BaseDynamicComponent): void {\r\n    this.designerRendererService.deleteComponent(component);\r\n  }\r\n\r\n  saveComponent({\r\n    component,\r\n    properties\r\n  }: {component: BaseDynamicComponent; properties: Record<string, string>}): void {\r\n    this.designerRendererService.updateComponent(component, properties);\r\n  }\r\n\r\n  cancelSelection(): void {\r\n    this.designerRendererService.deselectComponent();\r\n  }\r\n\r\n  selectComponent(component: BaseDynamicComponent): void {\r\n    this.designerRendererService.selectComponent(component);\r\n  }\r\n\r\n  clear(): void {\r\n    this.designerRendererService.clearDesigner(this.dc);\r\n  }\r\n\r\n  getForm(): { name: string; samples: Sample[] } {\r\n    return {\r\n      name: 'Form',\r\n      samples: [{\r\n        name: 'Container',\r\n        xmlModel: `<div class=\"container\"></div>`\r\n      }, {\r\n        name: 'Row',\r\n        xmlModel: `<div class=\"row\"></div>`\r\n      }, {\r\n        name: 'Column',\r\n        xmlModel: `<div class=\"row flex-column\"></div>`\r\n      }, {\r\n        name: 'Cell',\r\n        xmlModel: `<div class=\"col\"></div>`\r\n      }, {\r\n        name: 'Email',\r\n        xmlModel: `\r\n        <div class=\"form-group\">\r\n          <label for=\"exampleInputEmail1\">Email address</label>\r\n          <input id=\"exampleInputEmail1\" type=\"email\" class=\"form-control\" placeholder=\"Enter email\" />\r\n        </div>\r\n        `\r\n      }, {\r\n        name: 'Password',\r\n        xmlModel: `\r\n        <div class=\"form-group\">\r\n          <label for=\"exampleInputPassword1\">Password</label>\r\n          <input id=\"exampleInputPassword1\" type=\"password\" class=\"form-control\" placeholder=\"Password\" />\r\n        </div>`\r\n      }, {\r\n        name: 'Phone',\r\n        xmlModel: `\r\n        <div class=\"form-group\">\r\n          <label for=\"exampleInputPhone1\">Phone</label>\r\n          <input id=\"exampleInputPhone1\" type=\"phone\" class=\"form-control\" placeholder=\"Phone\" />\r\n        </div>`\r\n      }, {\r\n        name: 'Address',\r\n        xmlModel: `\r\n        <div class=\"address-section\">\r\n        <div class=\"row\">\r\n          <div class=\"form-group col-4\">\r\n            <label for=\"exampleInputCountry1\">Country</label>\r\n            <input id=\"exampleInputCountry1\" type=\"text\" class=\"form-control\" placeholder=\"Country\" />\r\n          </div>\r\n          <div class=\"form-group col-4\">\r\n            <label for=\"exampleInputCity1\">City</label>\r\n            <input id=\"exampleInputCity1\" type=\"text\" class=\"form-control\" placeholder=\"City\" />\r\n          </div>\r\n          <div class=\"form-group col-4\">\r\n            <label for=\"exampleInputAddress1\">Address</label>\r\n            <input id=\"exampleInputAddress1\" type=\"address\" class=\"form-control\" placeholder=\"Address\" />\r\n          </div>\r\n        </div>\r\n        <div class=\"row\">\r\n          <div class=\"form-group col-6\">\r\n            <label for=\"exampleInputEmail1\">Email address</label>\r\n            <input id=\"exampleInputEmail1\" type=\"email\" class=\"form-control\" placeholder=\"Enter email\" />\r\n          </div>\r\n          <div class=\"form-group col-6\">\r\n            <label for=\"exampleInputPhone1\">Phone</label>\r\n            <input id=\"exampleInputPhone1\" type=\"phone\" class=\"form-control\" placeholder=\"Phone\" />\r\n          </div>\r\n        </div>\r\n        </div>\r\n        `\r\n      }, {\r\n        name: 'Date',\r\n        xmlModel: `\r\n          <div class=\"form-group\">\r\n            <label for=\"exampleInputDate1\">Date</label>\r\n            <input id=\"exampleInputDate1\" type=\"date\" class=\"form-control\" placeholder=\"Date\" />\r\n          </div>`\r\n      }, {\r\n        name: 'Actions',\r\n        xmlModel: `\r\n          <div class=\"row m-0 justify-content-between align-items-center\">\r\n            <button type=\"reset\" class=\"btn btn-secondary col-auto\">Reset</button>\r\n            <button type=\"submit\" class=\"btn btn-primary col-auto\">Submit</button>\r\n          </div>\r\n          `\r\n      }]\r\n    };\r\n  }\r\n}\r\n","<div class=\"h-100\">\r\n  <div class=\"row h-100 m-0\">\r\n    <div class=\"col-4 col-lg-2 h-100 overflow-y-auto\">\r\n      <accordion [isAnimated]=\"true\" [closeOthers]=\"true\" class=\"d-flex flex-fill flex-column p-0 m-0 w-100\" cdkDropList\r\n      id=\"ngx-components-list\"\r\n  [cdkDropListConnectedTo]=\"(connected$ | async)\" [ngClass]=\"{disabled: (connected$ | async) === undefined}\"\r\n        cdkDropListSortingDisabled>\r\n        <accordion-group *ngFor=\"let g of groups; let first = first\" #accordionGroupRef [isOpen]=\"first\" class=\"p-0\">\r\n          <div class=\"header d-flex align-items-center\" accordion-heading>\r\n            <i class=\"fa text-center me-2\" [ngClass]=\"{\r\n              'fa-chevron-down': accordionGroupRef.isOpen,\r\n              'fa-chevron-right': !accordionGroupRef.isOpen\r\n            }\"></i>\r\n            <h5 class=\"m-0\">{{g.name}}</h5>\r\n          </div>\r\n          <ul class=\"d-flex flex-fill flex-column p-0 m-0\">\r\n            <li class=\"d-flex align-items-baseline cursor-pointer border my-1 p-1\"\r\n              *ngFor=\"let component of g.components\" cdkDrag cdkDragPreview [cdkDragData]=\"getUIModel(component)\">\r\n              {{component.name}}\r\n            </li>\r\n          </ul>\r\n        </accordion-group>\r\n        <accordion-group #accordionGroupRef>\r\n          <div class=\"header d-flex align-items-center\" accordion-heading>\r\n            <i class=\"fa text-center me-2\" [ngClass]=\"{\r\n              'fa-chevron-down': accordionGroupRef.isOpen,\r\n              'fa-chevron-right': !accordionGroupRef.isOpen\r\n            }\"></i>\r\n            <h5 class=\"m-0\">{{form.name}}</h5>\r\n          </div>\r\n          <ul class=\"d-flex flex-fill flex-column p-0 m-0\">\r\n            <li class=\"d-flex align-items-baseline cursor-pointer border my-1 p-1\"\r\n              *ngFor=\"let sample of form.samples\" cdkDrag cdkDragPreview [cdkDragData]=\"getUIModelFromXML(sample.xmlModel)\">\r\n              {{sample.name}}\r\n            </li>\r\n          </ul>\r\n        </accordion-group>\r\n      </accordion>\r\n    </div>\r\n    <div class=\"col-8 col-lg-8\">\r\n      <ngx-dynamic-designer-component id=\"ngx-dynamic-designer\"\r\n        class=\"d-flex flex-column h-100 overflow-hidden\" [xmlUIModel]=\"template\"\r\n        [dataModel]=\"{}\"></ngx-dynamic-designer-component>\r\n    </div>\r\n    <div class=\"col-4 col-lg-2\">\r\n      <button class=\"btn btn-primary-outline\" (click)=\"clear()\">Clear</button>\r\n      <dc-component-properties *ngIf=\"selectedComponent$ | async as component\"\r\n        [component]=\"component\"\r\n        (delete)=\"deleteComponent($event)\"\r\n        (save)=\"saveComponent($event)\"\r\n        (cancel)=\"cancelSelection()\"\r\n        (selectComponent)=\"selectComponent($event)\">\r\n      </dc-component-properties>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { Component, Injector } from '@angular/core';\r\nimport { RendererService } from '../../services/renderer.service';\r\nimport { FormComponent, FormProperties, formDescriptor } from '../../ui-components/form/form.component';\r\nimport { CdkDrag, CdkDropList } from '@angular/cdk/drag-drop';\r\nimport { ComponentDescriptor } from '../../models';\r\n\r\n@Component({\r\n  selector: 'dc-designer-form',\r\n  template: `\r\n    <form novalidate [ngStyle]=\"itemStyles\">\r\n      <ng-container #vc></ng-container>\r\n    </form>\r\n  `,\r\n  hostDirectives: [CdkDropList, CdkDrag],\r\n})\r\nexport class DesignerFormComponent extends FormComponent {\r\n  constructor(protected rendererService?: RendererService, public injector?: Injector) {\r\n    super(rendererService, injector);\r\n    if (injector) {\r\n      injector.get(CdkDropList, null, {\r\n        self: true,\r\n      }).disabled = true;\r\n    }\r\n  }\r\n}\r\n\r\ntype FormComponentConstrutor = new () => DesignerFormComponent;\r\n\r\ntype FormPropertiesConstrutor = new () => FormProperties;\r\n\r\nexport const designerFormDescriptor: ComponentDescriptor<FormComponentConstrutor, FormPropertiesConstrutor> = {\r\n  ...formDescriptor,\r\n  component: DesignerFormComponent\r\n};\r\n","import { Component, Injector } from '@angular/core';\r\nimport { CdkDrag, CdkDropList } from '@angular/cdk/drag-drop';\r\nimport { RendererService } from '../../services/renderer.service';\r\nimport { ComponentDescriptor } from '../../models';\r\nimport { ContainerComponent, containerDescriptor, divDescriptor } from '../../ui-components/container/container.component';\r\nimport { ContainerProperties } from '../../properties';\r\n\r\n@Component({\r\n  selector: 'dc-designer-container',\r\n  template: `\r\n    <ng-container #vc></ng-container>\r\n    {{properties.text}}\r\n  `,\r\n  styles: [\r\n    `\r\n      :host:not(.row):not(.input-group) {\r\n        display: block;\r\n      }\r\n    `,\r\n  ],\r\n  hostDirectives: [CdkDropList, CdkDrag],\r\n})\r\nexport class DesignerContainerComponent extends ContainerComponent {\r\n  constructor(protected rendererService?: RendererService, public injector?: Injector) {\r\n    super(rendererService, injector);\r\n    if (injector) {\r\n      injector.get(CdkDropList, null, {\r\n        self: true,\r\n      }).disabled = true;\r\n    }\r\n  }\r\n}\r\n\r\ntype ContainerComponentConstrutor = new () => DesignerContainerComponent;\r\n\r\ntype ContainerPropertiesConstrutor = new () => ContainerProperties;\r\n\r\nexport const designerContainerDescriptor: ComponentDescriptor<ContainerComponentConstrutor, ContainerPropertiesConstrutor> = {\r\n  ...containerDescriptor,\r\n  component: DesignerContainerComponent\r\n};\r\n\r\nexport const designerDivDescriptor: ComponentDescriptor<ContainerComponentConstrutor, ContainerPropertiesConstrutor> = {\r\n  ...divDescriptor,\r\n  component: DesignerContainerComponent\r\n};\r\n","/* eslint-disable @angular-eslint/component-selector */\r\nimport { Component, HostBinding } from '@angular/core';\r\n\r\nimport { InputComponent, InputProperties, inputDescriptor } from '../../ui-components/input/input.component';\r\nimport { CdkDrag } from '@angular/cdk/drag-drop';\r\nimport { ComponentDescriptor, UIModel, XMLResult } from '../../models';\r\nimport { LabelComponent, LabelProperties, labelDescriptor } from '../../ui-components/label/label.component';\r\nimport { TextareaComponent, textareaDescriptor } from '../../ui-components/textarea/textarea.component';\r\nimport { ButtonComponent, buttonDescriptor } from '../../ui-components/button/button.component';\r\nimport { SelectComponent, selectDescriptor } from '../../ui-components/select/select.component';\r\n\r\nexport * from './designer-container.component';\r\nexport * from './designer-form.component';\r\n\r\n@Component({\r\n  selector: 'input',\r\n  template: '',\r\n  hostDirectives: [CdkDrag]\r\n})\r\nexport class DesignerInputComponent extends InputComponent {\r\n  @HostBinding('attr.novalidate') novalidate = true;\r\n}\r\n\r\ntype DesignerInputComponentConstrutor = new () => DesignerInputComponent;\r\ntype InputPropertiesConstrutor = new () => InputProperties;\r\n\r\nexport const designerInputDescriptor: ComponentDescriptor<DesignerInputComponentConstrutor, InputPropertiesConstrutor> = {\r\n  ...inputDescriptor,\r\n  parseUIModel(xmlRes: XMLResult): UIModel {\r\n    const res = inputDescriptor.parseUIModel(xmlRes);\r\n    res.itemProperties.required = false;\r\n    return res;\r\n  },\r\n  component: DesignerInputComponent\r\n};\r\n\r\n\r\n@Component({\r\n  selector: 'label',\r\n  template: `{{text}}`,\r\n  styles: [`\r\n    :host.form-check-label > label {\r\n      margin-bottom: 0;\r\n    }\r\n  `],\r\n  hostDirectives: [CdkDrag]\r\n})\r\nexport class DesignerLabelComponent extends LabelComponent { }\r\n\r\ntype DesignerLabelComponentConstrutor = new () => DesignerLabelComponent;\r\ntype LabelPropertiesConstrutor = new () => LabelProperties;\r\n\r\nexport const designerLabelDescriptor: ComponentDescriptor<DesignerLabelComponentConstrutor, LabelPropertiesConstrutor> = {\r\n  ...labelDescriptor,\r\n  parseUIModel(xmlRes: XMLResult): UIModel {\r\n    const res = labelDescriptor.parseUIModel(xmlRes);\r\n    res.itemProperties.for = null;\r\n    return res;\r\n  },\r\n  component: DesignerLabelComponent\r\n};\r\n\r\n\r\n@Component({\r\n  selector: 'textarea', // eslint-disable-line\r\n  template: '{{value}}',\r\n  hostDirectives: [CdkDrag]\r\n})\r\nexport class DesignerTextareaComponent extends TextareaComponent { }\r\n\r\nexport const designerTextAreaDescriptor: ComponentDescriptor = {\r\n  ...textareaDescriptor,\r\n  parseUIModel(xmlRes: XMLResult): UIModel {\r\n    const res = textareaDescriptor.parseUIModel(xmlRes);\r\n    res.itemProperties.required = false;\r\n    return res;\r\n  },\r\n  component: DesignerTextareaComponent\r\n};\r\n\r\n@Component({\r\n  selector: 'button',\r\n  template: `\r\n  <ng-container #vc></ng-container>\r\n  {{properties.label}}\r\n  `,\r\n  hostDirectives: [CdkDrag],\r\n})\r\nexport class DesignerButtonComponent extends ButtonComponent { }\r\n\r\nexport const designerButtonDescriptor: ComponentDescriptor = {\r\n  ...buttonDescriptor,\r\n  component: DesignerButtonComponent\r\n};\r\n\r\n@Component({\r\n  selector: 'select',\r\n  template: `\r\n      <ng-container>\r\n        <option [selected]=\"option.value === value\" *ngFor=\"let option of options\" [value]=\"option.value\">{{option.label}}</option>\r\n      </ng-container>\r\n    `,\r\n  hostDirectives: [CdkDrag],\r\n})\r\nexport class DesignerSelectComponent extends SelectComponent { }\r\n\r\nexport const designerSelectDescriptor: ComponentDescriptor = {\r\n  ...selectDescriptor,\r\n  component: DesignerSelectComponent\r\n};\r\n","import { NgModule } from '@angular/core';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\nimport { AccordionModule } from 'ngx-bootstrap/accordion';\r\nimport { DesignerComponent } from './components/designer/designer.component';\r\nimport { NGXDynamicDesignerComponent } from './components/ngx-dynamic-designer-component';\r\nimport { DesignerRendererService } from './designer-renderer.service';\r\nimport { DynamicComponentsCoreModule } from '../core.module';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DraggableComponent } from './components/draggable-component';\r\nimport { ComponentPropertiesComponent } from './components/designer/component-properties/component-properties.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CoreService } from '../services/core.service';\r\nimport { DesignerFormComponent, designerFormDescriptor } from './ui-components/designer-form.component';\r\nimport {\r\n  DesignerContainerComponent,\r\n  designerContainerDescriptor,\r\n  designerDivDescriptor\r\n} from './ui-components/designer-container.component';\r\nimport {\r\n  designerButtonDescriptor,\r\n  designerInputDescriptor,\r\n  designerLabelDescriptor,\r\n  designerSelectDescriptor,\r\n  designerTextAreaDescriptor\r\n} from './ui-components';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    DesignerComponent,\r\n    NGXDynamicDesignerComponent,\r\n    DraggableComponent,\r\n    ComponentPropertiesComponent,\r\n    DesignerFormComponent,\r\n    DesignerContainerComponent\r\n  ],\r\n  imports: [CommonModule, FormsModule, ReactiveFormsModule, DragDropModule, AccordionModule, DynamicComponentsCoreModule],\r\n  exports: [NGXDynamicDesignerComponent, DesignerComponent],\r\n  providers: [DesignerRendererService],\r\n})\r\nexport class DesignerModule {\r\n  constructor() {\r\n    [\r\n      designerFormDescriptor,\r\n      designerContainerDescriptor,\r\n      designerDivDescriptor,\r\n      designerButtonDescriptor,\r\n      designerInputDescriptor,\r\n      designerLabelDescriptor,\r\n      designerTextAreaDescriptor,\r\n      designerSelectDescriptor\r\n    ].forEach(descriptor => CoreService.registerComponent(descriptor, 'designer'));\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of core\r\n */\r\n\r\nexport * from './lib/services/core.service';\r\nexport * from './lib/services/renderer.service';\r\nexport * from './lib/components/base-dynamic-component';\r\nexport * from './lib/components/base-ui-component';\r\nexport * from './lib/components/ngx-dynamic-component';\r\nexport * from './lib/core.module';\r\nexport * from './lib/models';\r\nexport * from './lib/properties';\r\nexport * from './lib/utils';\r\nexport * from './lib/utils/renderer';\r\nexport * from './lib/ui-components/register';\r\nexport * from './lib/ui-components/text/text.component';\r\nexport * from './lib/designer/designer.module';\r\nexport * from './lib/designer/components/designer/designer.component';\r\nexport * from './lib/designer/components/ngx-dynamic-designer-component';\r\nexport * from './lib/ui-components/index'\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["ContainerProperties","i1.RendererService","example","i2","example2","i1","i2.LabelComponent","i3.InputComponent","i4.NGXDynamicDesignerComponent","i5.ComponentPropertiesComponent","i3","i4"],"mappings":"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"}