@xaendar/core 0.1.6 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xaendar/core",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "description": "A library containing core utils such as webcomponent base classes and theming support",
5
5
  "type": "module",
6
6
  "main": "./xaendar-core.es.js",
@@ -16,6 +16,6 @@
16
16
  },
17
17
  "peerDependencies": {},
18
18
  "dependencies": {
19
- "@xaendar/common": "0.1.6"
19
+ "@xaendar/common": "0.1.8"
20
20
  }
21
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"xaendar-core.es.js","names":[],"sources":["../../../packages/core/src/decorators/event.decorator.ts","../../../packages/core/src/costants.ts","../../../packages/core/src/decorators/property.decorator.ts","../../../packages/core/src/decorators/web-component/web-component.decorator.ts","../../../packages/core/src/directives/base-web-component.ts"],"sourcesContent":["import { AccessorDecorator, ClassAccessorDecoratorValue } from '@xaendar/common';\r\nimport { BaseWebComponent } from '../directives/base-web-component';\r\nimport { EventParams } from '../models/event/event-params.type';\r\nimport { Output } from '../models/event/output.type';\r\n\r\nfunction isEventParams(value: EventParams | unknown): value is EventParams {\r\n return !!value && typeof value === 'object' && ('bubbles' in value || 'cancelable' in value || 'composed' in value);\r\n}\r\n\r\nexport function Event<\r\n Class extends BaseWebComponent,\r\n Field,\r\n Data = void,\r\n>(params?: EventParams): AccessorDecorator<Class, Field, Output<Data>> {\r\n return (_value: ClassAccessorDecoratorValue<Field>, context: ClassAccessorDecoratorContext<Class, Output<Data>>): ReturnType<AccessorDecorator<Class, Field, Output<Data>>> => {\r\n const output: Output<Data> = {\r\n emit: (_valueOrOverrideParams?: Data | EventParams, _overrideParams?: EventParams) => { }\r\n };\r\n\r\n return {\r\n get(): Output<Data> {\r\n output.emit = (valueOrOverrideParams?: Data | EventParams, overrideParams?: EventParams) => {\r\n let eventParams: CustomEventInit<Data> = {};\r\n\r\n eventParams = isEventParams(valueOrOverrideParams)\r\n ? { ...params, ...valueOrOverrideParams } \r\n : { ...params, ...overrideParams, detail: valueOrOverrideParams }\r\n\r\n const event = new CustomEvent(context.name as string, eventParams);\r\n const classInstance = (this as Class);\r\n classInstance.dispatchEvent(event);\r\n };\r\n return output;\r\n }\r\n }\r\n }\r\n }","export const INTERNAL_PREFIX = '⛔';\r\nexport const INTERNAL_OBSERVED_ATTRIBUTES = `${INTERNAL_PREFIX}observedAttributes`;","import { AccessorDecorator, ClassAccessorDecoratorValue, Constructor } from '@xaendar/common';\r\nimport { INTERNAL_OBSERVED_ATTRIBUTES, INTERNAL_PREFIX } from '../costants';\r\nimport { BaseWebComponent } from '../directives/base-web-component';\r\nimport { PropertyDecoratorParams } from '../models/property-decorator-params.type';\r\n\r\nexport function Property<\r\n Class extends BaseWebComponent,\r\n Field\r\n >(params?: PropertyDecoratorParams): AccessorDecorator<Class, Field> {\r\n return function (_value: ClassAccessorDecoratorValue<Field>, context: ClassAccessorDecoratorContext<Class, Field>): ReturnType<AccessorDecorator<Class, Field>> {\r\n context.metadata![INTERNAL_OBSERVED_ATTRIBUTES] ??= new Array<string>;\r\n (context.metadata![INTERNAL_OBSERVED_ATTRIBUTES] as string[]).push(context.name as string);\r\n \r\n const propertyKey = context.name as string;\r\n const internalPropertyKey = `${INTERNAL_PREFIX}${propertyKey}`\r\n \r\n return {\r\n get() {\r\n const classInstance = (this as BaseWebComponent & Record<typeof internalPropertyKey, Field>);\r\n return classInstance[`${INTERNAL_PREFIX}${propertyKey}`]!;\r\n },\r\n set(value: Field) {\r\n const classInstance = (this as BaseWebComponent & Record<typeof internalPropertyKey, Field>);\r\n\r\n if (params?.required && !value) {\r\n throw new Error(`Property '${propertyKey}' is required, current value: ${value}`);\r\n }\r\n\r\n const oldValue = classInstance[internalPropertyKey]!;\r\n if (oldValue !== value) {\r\n classInstance[internalPropertyKey] = value;\r\n classInstance.internalRender();\r\n }\r\n },\r\n init(initialValue: Field) {\r\n const classInstance = (this as BaseWebComponent & Record<typeof internalPropertyKey, Field>);\r\n classInstance[internalPropertyKey] = initialValue;\r\n return initialValue;\r\n }\r\n };\r\n }\r\n}\r\n","import { ClassDecorator, Constructor } from '@xaendar/common';\r\nimport { INTERNAL_OBSERVED_ATTRIBUTES } from '../../costants';\r\nimport { BaseWebComponent } from '../../directives/base-web-component';\r\n\r\n/**\r\n * Decorator to define a web component\r\n * @param selector Name or names of the custom element\r\n */\r\nexport function WebComponent<T extends BaseWebComponent>(options: { selector: string | string[], templateUrl: string }): ClassDecorator<T> {\r\n return function (klass: Constructor<T>, context: ClassDecoratorContext<Constructor<T>>): void {\r\n defineObservedAttributes(klass, context);\r\n setSelectors(klass, options.selector);\r\n };\r\n}\r\n\r\n/**\r\n * Function to define the observedAttributes static property on the class.\r\n * We define static get observedAttributes programmatically\r\n * to abstract the manual definition from the user.\r\n *\r\n * We could not define the property in the base class due to the fact\r\n * that is static and each derived class would override the value of the others\r\n * @param klass The class to set the observedAttributes on\r\n * @param attributes The attributes to observe\r\n */\r\nfunction defineObservedAttributes<T extends BaseWebComponent>(klass: Constructor<T>, context: ClassDecoratorContext<Constructor<T>>): void {\r\n Object.defineProperty(klass, 'observedAttributes', {\r\n get: () => context.metadata![INTERNAL_OBSERVED_ATTRIBUTES],\r\n configurable: false,\r\n enumerable: false\r\n });\r\n}\r\n\r\n/**\r\n * Function to add the custom element definition to the browser using the passed selectors.\r\n * @param klass The class to define as a web component\r\n * @param selectors The selector or selectors to reference the web component in HTML\r\n */\r\nfunction setSelectors<T extends BaseWebComponent>(klass: Constructor<T>, selectors: string | string[]): void {\r\n Array.isArray(selectors)\r\n ? selectors.forEach(selector => customElements.define(selector, klass))\r\n : customElements.define(selectors, klass);\r\n}","/**\r\n * Base class for all Web Components in the framework\r\n * \r\n * This class internally has an `observedAttributes` property\r\n * add programmaticaly by the @WebComponent decorator. \r\n * It won't appear by intellisense but it's there.\r\n */\r\nexport class BaseWebComponent extends HTMLElement {\r\n\r\n public static rendererTimes = 0;\r\n\r\n /**\r\n * Flag to track if the component has been initialized\r\n * When istance is created, the flag is false\r\n * After the connectedCallback has been called and all the attributes\r\n * have been reflected on the relatives properties, the flag is set to true\r\n * \r\n * This prevents the render method to be called by the properties setters\r\n * before the component is fully initialized.\r\n * \r\n * Otherwise the render function would be called N times where N is the\r\n * number of properties decorated with @Property and specified as attributes\r\n * on the CustomElement tag in the HTML\r\n */\r\n private _initialized = false;\r\n\r\n private readonly _root: ShadowRoot;\r\n\r\n constructor() {\r\n super();\r\n this._root = this.attachShadow({ mode: 'open' });\r\n }\r\n\r\n /**\r\n * Method called by the @Property decorator to\r\n * update the rendering of the component\r\n * @internal \r\n */\r\n public internalRender(): void {\r\n if (this._initialized) {\r\n console.warn('Render times:', ++BaseWebComponent.rendererTimes);\r\n }\r\n }\r\n\r\n /**\r\n * Method automatically called by the JavascriptEngine when an attribute\r\n * on the host element is changed\r\n * \r\n * This method runs before the connectedCallback method if any observed attribute\r\n * is specified on the CustomElement tag in the HTML\r\n * \r\n * @param name Name of the attribute changed\r\n * @param _oldValue Old value of the attribute\r\n * @param newValue New value of the attribute\r\n */\r\n private attributeChangedCallback(name: string, _oldValue: unknown, newValue: unknown): void {\r\n /*\r\n Since the 'Property Decorator add the property key to the ObservedAttributes\r\n We are sure that the property with the given name exists on the instance of the subclass\r\n */\r\n const context = this as BaseWebComponent & Record<string, unknown>;\r\n context[name] = newValue;\r\n }\r\n\r\n /**\r\n * Method automatically called by the JavascriptEngine when a CustomElement\r\n * is added to the DOM\r\n * \r\n * This method is called EVERY time the element is added\r\n */\r\n private connectedCallback(): void {\r\n this._initialized = true;\r\n this.internalRender();\r\n }\r\n\r\n /**\r\n * Method automatically called by the JavascriptEngine when a CustomElement\r\n * is removed from the DOM\r\n * \r\n * This method is called EVERY time the element is removed\r\n * \r\n * We use this method to reset the _initialized flag\r\n * so that if the element is re-added to the DOM\r\n * the properties initialization won't call the render method\r\n */\r\n private disconnectedCallback(): void {\r\n this._initialized = false\r\n }\r\n}"],"mappings":";AAKA,SAAS,EAAc,GAAoD;AACzE,QAAO,CAAC,CAAC,KAAS,OAAO,KAAU,aAAa,aAAa,KAAS,gBAAgB,KAAS,cAAc;;AAG/G,SAAgB,EAId,GAAqE;AACrE,SAAQ,GAA4C,MAA2H;EAC7K,IAAM,IAAuB,EAC3B,OAAO,GAA6C,MAAkC,IACtF;AAEF,SAAO,EACL,MAAoB;AAYhB,UAXF,EAAO,QAAQ,GAA4C,MAAiC;IAC1F,IAAI,IAAqC,EAAE;AAEzC,QAAc,EAAc,EAAsB,GAC9C;KAAE,GAAG;KAAQ,GAAG;KAAuB,GACvC;KAAE,GAAG;KAAQ,GAAG;KAAgB,QAAQ;KAAuB;IAEnE,IAAM,IAAQ,IAAI,YAAY,EAAQ,MAAgB,EAAY;AAElE,SAAc,cAAc,EAAM;MAE7B;KAEV;;;ACjCP,IAAa,IAA+B;;;ACI5C,SAAgB,EAGZ,GAAmE;AACrE,QAAO,SAAU,GAA4C,GAAmG;AAE7J,EADD,EAAQ,SAAU,OAAkC,EAAiB,EACpE,EAAQ,SAAU,GAA2C,KAAK,EAAQ,KAAe;EAE1F,IAAM,IAAc,EAAQ,MACtB,IAAsB,IAAqB;AAEjD,SAAO;GACL,MAAM;AAEJ,WAAO,KAAc,IAAqB;;GAE5C,IAAI,GAAc;IAChB,IAAM,IAAiB;AAEvB,QAAI,GAAQ,YAAY,CAAC,EACvB,OAAU,MAAM,aAAa,EAAY,gCAAgC,IAAQ;AAInF,IADiB,EAAc,OACd,MACf,EAAc,KAAuB,GACrC,EAAc,gBAAgB;;GAGlC,KAAK,GAAqB;IACxB,IAAM,IAAiB;AAEvB,WADA,EAAc,KAAuB,GAC9B;;GAEV;;;;;AC/BL,SAAgB,EAAyC,GAAkF;AACzI,QAAO,SAAU,GAAuB,GAAsD;AAE5F,EADA,EAAyB,GAAO,EAAQ,EACxC,EAAa,GAAO,EAAQ,SAAS;;;AAczC,SAAS,EAAqD,GAAuB,GAAsD;AACzI,QAAO,eAAe,GAAO,sBAAsB;EACjD,WAAW,EAAQ,SAAU;EAC7B,cAAc;EACd,YAAY;EACb,CAAC;;AAQJ,SAAS,EAAyC,GAAuB,GAAoC;AAC3G,OAAM,QAAQ,EAAU,GACpB,EAAU,SAAQ,MAAY,eAAe,OAAO,GAAU,EAAM,CAAC,GACrE,eAAe,OAAO,GAAW,EAAM;;;;AClC7C,IAAa,IAAb,MAAa,UAAyB,YAAY;CAEhD,OAAc,gBAAgB;CAe9B,eAAuB;CAEvB;CAEA,cAAc;AAEZ,EADA,OAAO,EACP,KAAK,QAAQ,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;;CAQlD,iBAA8B;AAC5B,EAAI,KAAK,gBACP,QAAQ,KAAK,iBAAiB,EAAE,EAAiB,cAAc;;CAenE,yBAAiC,GAAc,GAAoB,GAAyB;EAK1F,IAAM,IAAU;AAChB,IAAQ,KAAQ;;CASlB,oBAAkC;AAEhC,EADA,KAAK,eAAe,IACpB,KAAK,gBAAgB;;CAavB,uBAAqC;AACnC,OAAK,eAAe"}
1
+ {"version":3,"file":"xaendar-core.es.js","names":[],"sources":["../../../packages/core/src/decorators/event.decorator.ts","../../../packages/core/src/costants.ts","../../../packages/core/src/decorators/property.decorator.ts","../../../packages/core/src/decorators/web-component/web-component.decorator.ts","../../../packages/core/src/directives/base-web-component.ts"],"sourcesContent":["import { AccessorDecorator, ClassAccessorDecoratorValue } from '@xaendar/common';\r\nimport { BaseWebComponent } from '../directives/base-web-component';\r\nimport { EventParams } from '../models/event/event-params.type';\r\nimport { Output } from '../models/event/output.type';\r\n\r\nfunction isEventParams(value: EventParams | unknown): value is EventParams {\r\n return !!value && typeof value === 'object' && ('bubbles' in value || 'cancelable' in value || 'composed' in value);\r\n}\r\n\r\nexport function Event<\r\n Class extends BaseWebComponent,\r\n Field,\r\n Data = void,\r\n>(params?: EventParams): AccessorDecorator<Class, Field, Output<Data>> {\r\n return (_value: ClassAccessorDecoratorValue<Field>, context: ClassAccessorDecoratorContext<Class, Output<Data>>): ReturnType<AccessorDecorator<Class, Field, Output<Data>>> => {\r\n const output: Output<Data> = {\r\n emit: (_valueOrOverrideParams?: Data | EventParams, _overrideParams?: EventParams) => { }\r\n };\r\n\r\n return {\r\n get(): Output<Data> {\r\n output.emit = (valueOrOverrideParams?: Data | EventParams, overrideParams?: EventParams) => {\r\n let eventParams: CustomEventInit<Data> = {};\r\n\r\n eventParams = isEventParams(valueOrOverrideParams)\r\n ? { ...params, ...valueOrOverrideParams } \r\n : { ...params, ...overrideParams, detail: valueOrOverrideParams }\r\n\r\n const event = new CustomEvent(context.name as string, eventParams);\r\n const classInstance = (this as Class);\r\n classInstance.dispatchEvent(event);\r\n };\r\n return output;\r\n }\r\n }\r\n }\r\n }","export const INTERNAL_PREFIX = '⛔';\r\nexport const INTERNAL_OBSERVED_ATTRIBUTES = `${INTERNAL_PREFIX}observedAttributes`;","import { AccessorDecorator, ClassAccessorDecoratorValue, Constructor } from '@xaendar/common';\r\nimport { INTERNAL_OBSERVED_ATTRIBUTES, INTERNAL_PREFIX } from '../costants';\r\nimport { BaseWebComponent } from '../directives/base-web-component';\r\nimport { PropertyDecoratorParams } from '../models/property-decorator-params.type';\r\n\r\nexport function Property<\r\n Class extends BaseWebComponent,\r\n Field\r\n >(params?: PropertyDecoratorParams): AccessorDecorator<Class, Field> {\r\n return function (_value: ClassAccessorDecoratorValue<Field>, context: ClassAccessorDecoratorContext<Class, Field>): ReturnType<AccessorDecorator<Class, Field>> {\r\n context.metadata![INTERNAL_OBSERVED_ATTRIBUTES] ??= new Array<string>;\r\n (context.metadata![INTERNAL_OBSERVED_ATTRIBUTES] as string[]).push(context.name as string);\r\n \r\n const propertyKey = context.name as string;\r\n const internalPropertyKey = `${INTERNAL_PREFIX}${propertyKey}`\r\n \r\n return {\r\n get() {\r\n const classInstance = (this as BaseWebComponent & Record<typeof internalPropertyKey, Field>);\r\n return classInstance[`${INTERNAL_PREFIX}${propertyKey}`]!;\r\n },\r\n set(value: Field) {\r\n const classInstance = (this as BaseWebComponent & Record<typeof internalPropertyKey, Field>);\r\n\r\n if (params?.required && !value) {\r\n throw new Error(`Property '${propertyKey}' is required, current value: ${value}`);\r\n }\r\n\r\n const oldValue = classInstance[internalPropertyKey]!;\r\n if (oldValue !== value) {\r\n classInstance[internalPropertyKey] = value;\r\n classInstance.internalRender();\r\n }\r\n },\r\n init(initialValue: Field) {\r\n const classInstance = (this as BaseWebComponent & Record<typeof internalPropertyKey, Field>);\r\n classInstance[internalPropertyKey] = initialValue;\r\n return initialValue;\r\n }\r\n };\r\n }\r\n}\r\n","import { ClassDecorator, Constructor } from '@xaendar/common';\r\nimport { INTERNAL_OBSERVED_ATTRIBUTES } from '../../costants';\r\nimport { BaseWebComponent } from '../../directives/base-web-component';\r\n\r\n/**\r\n * Decorator to define a web component\r\n * @param selector Name or names of the custom element\r\n */\r\nexport function WebComponent<T extends BaseWebComponent>(options: { selector: string | string[], templateUrl: string }): ClassDecorator<T> {\r\n return function (klass: Constructor<T>, context: ClassDecoratorContext<Constructor<T>>): void {\r\n defineObservedAttributes(klass, context);\r\n setSelectors(klass, options.selector);\r\n };\r\n}\r\n\r\n/**\r\n * Function to define the observedAttributes static property on the class.\r\n * We define static get observedAttributes programmatically\r\n * to abstract the manual definition from the user.\r\n *\r\n * We could not define the property in the base class due to the fact\r\n * that is static and each derived class would override the value of the others\r\n * @param klass The class to set the observedAttributes on\r\n * @param attributes The attributes to observe\r\n */\r\nfunction defineObservedAttributes<T extends BaseWebComponent>(klass: Constructor<T>, context: ClassDecoratorContext<Constructor<T>>): void {\r\n Object.defineProperty(klass, 'observedAttributes', {\r\n get: () => context.metadata![INTERNAL_OBSERVED_ATTRIBUTES],\r\n configurable: false,\r\n enumerable: false\r\n });\r\n}\r\n\r\n/**\r\n * Function to add the custom element definition to the browser using the passed selectors.\r\n * @param klass The class to define as a web component\r\n * @param selectors The selector or selectors to reference the web component in HTML\r\n */\r\nfunction setSelectors<T extends BaseWebComponent>(klass: Constructor<T>, selectors: string | string[]): void {\r\n Array.isArray(selectors)\r\n ? selectors.forEach(selector => customElements.define(selector, klass))\r\n : customElements.define(selectors, klass);\r\n}","/**\r\n * Base class for all Web Components in the framework\r\n * \r\n * This class internally has an `observedAttributes` property\r\n * add programmaticaly by the @WebComponent decorator. \r\n * It won't appear by intellisense but it's there.\r\n */\r\nexport class BaseWebComponent extends HTMLElement {\r\n\r\n public static rendererTimes = 0;\r\n\r\n /**\r\n * Flag to track if the component has been initialized\r\n * When istance is created, the flag is false\r\n * After the connectedCallback has been called and all the attributes\r\n * have been reflected on the relatives properties, the flag is set to true\r\n * \r\n * This prevents the render method to be called by the properties setters\r\n * before the component is fully initialized.\r\n * \r\n * Otherwise the render function would be called N times where N is the\r\n * number of properties decorated with @Property and specified as attributes\r\n * on the CustomElement tag in the HTML\r\n */\r\n private _initialized = false;\r\n\r\n private readonly _root: ShadowRoot;\r\n\r\n constructor() {\r\n super();\r\n this._root = this.attachShadow({ mode: 'open' });\r\n }\r\n\r\n /**\r\n * Method called by the @Property decorator to\r\n * update the rendering of the component\r\n * @internal \r\n */\r\n public internalRender(): void {\r\n if (this._initialized) {\r\n console.warn('Render times:', ++BaseWebComponent.rendererTimes);\r\n }\r\n }\r\n\r\n /**\r\n * Method automatically called by the JavascriptEngine when an attribute\r\n * on the host element is changed\r\n * \r\n * This method runs before the connectedCallback method if any observed attribute\r\n * is specified on the CustomElement tag in the HTML\r\n * \r\n * @param name Name of the attribute changed\r\n * @param _oldValue Old value of the attribute\r\n * @param newValue New value of the attribute\r\n */\r\n private attributeChangedCallback(name: string, _oldValue: unknown, newValue: unknown): void {\r\n /*\r\n Since the 'Property Decorator add the property key to the ObservedAttributes\r\n We are sure that the property with the given name exists on the instance of the subclass\r\n */\r\n const context = this as BaseWebComponent & Record<string, unknown>;\r\n context[name] = newValue;\r\n }\r\n\r\n /**\r\n * Method automatically called by the JavascriptEngine when a CustomElement\r\n * is added to the DOM\r\n * \r\n * This method is called EVERY time the element is added\r\n */\r\n private connectedCallback(): void {\r\n this._initialized = true;\r\n this.internalRender();\r\n }\r\n\r\n /**\r\n * Method automatically called by the JavascriptEngine when a CustomElement\r\n * is removed from the DOM\r\n * \r\n * This method is called EVERY time the element is removed\r\n * \r\n * We use this method to reset the _initialized flag\r\n * so that if the element is re-added to the DOM\r\n * the properties initialization won't call the render method\r\n */\r\n private disconnectedCallback(): void {\r\n this._initialized = false\r\n }\r\n}"],"mappings":";AAKA,SAAS,EAAc,GAAoD;CACzE,OAAO,CAAC,CAAC,KAAS,OAAO,KAAU,aAAa,aAAa,KAAS,gBAAgB,KAAS,cAAc;;AAG/G,SAAgB,EAId,GAAqE;CACrE,QAAQ,GAA4C,MAA2H;EAC7K,IAAM,IAAuB,EAC3B,OAAO,GAA6C,MAAkC,IACtF;EAEF,OAAO,EACL,MAAoB;GAYhB,OAXF,EAAO,QAAQ,GAA4C,MAAiC;IAC1F,IAAI,IAAqC,EAAE;IAEzC,IAAc,EAAc,EAAsB,GAC9C;KAAE,GAAG;KAAQ,GAAG;KAAuB,GACvC;KAAE,GAAG;KAAQ,GAAG;KAAgB,QAAQ;KAAuB;IAEnE,IAAM,IAAQ,IAAI,YAAY,EAAQ,MAAgB,EAAY;IAElE,KAAc,cAAc,EAAM;MAE7B;KAEV;;;ACjCP,IAAa,IAA+B;;;ACI5C,SAAgB,EAGZ,GAAmE;CACrE,OAAO,SAAU,GAA4C,GAAmG;EAE9J,AADA,EAAQ,SAAU,OAAkC,EAAiB,EACrE,EAAS,SAAU,GAA2C,KAAK,EAAQ,KAAe;EAE1F,IAAM,IAAc,EAAQ,MACtB,IAAsB,IAAqB;EAEjD,OAAO;GACL,MAAM;IAEJ,OAAO,KAAc,IAAqB;;GAE5C,IAAI,GAAc;IAChB,IAAM,IAAiB;IAEvB,IAAI,GAAQ,YAAY,CAAC,GACvB,MAAU,MAAM,aAAa,EAAY,gCAAgC,IAAQ;IAInF,AADiB,EAAc,OACd,MACf,EAAc,KAAuB,GACrC,EAAc,gBAAgB;;GAGlC,KAAK,GAAqB;IACxB,IAAM,IAAiB;IAEvB,OADA,EAAc,KAAuB,GAC9B;;GAEV;;;;;AC/BL,SAAgB,EAAyC,GAAkF;CACzI,OAAO,SAAU,GAAuB,GAAsD;EAE5F,AADA,EAAyB,GAAO,EAAQ,EACxC,EAAa,GAAO,EAAQ,SAAS;;;AAczC,SAAS,EAAqD,GAAuB,GAAsD;CACzI,OAAO,eAAe,GAAO,sBAAsB;EACjD,WAAW,EAAQ,SAAU;EAC7B,cAAc;EACd,YAAY;EACb,CAAC;;AAQJ,SAAS,EAAyC,GAAuB,GAAoC;CAC3G,MAAM,QAAQ,EAAU,GACpB,EAAU,SAAQ,MAAY,eAAe,OAAO,GAAU,EAAM,CAAC,GACrE,eAAe,OAAO,GAAW,EAAM;;;;AClC7C,IAAa,IAAb,MAAa,UAAyB,YAAY;CAEhD,OAAc,gBAAgB;CAe9B,eAAuB;CAEvB;CAEA,cAAc;EAEZ,AADA,OAAO,EACP,KAAK,QAAQ,KAAK,aAAa,EAAE,MAAM,QAAQ,CAAC;;CAQlD,iBAA8B;EAC5B,AAAI,KAAK,gBACP,QAAQ,KAAK,iBAAiB,EAAE,EAAiB,cAAc;;CAenE,yBAAiC,GAAc,GAAoB,GAAyB;EAK1F,IAAM,IAAU;EAChB,EAAQ,KAAQ;;CASlB,oBAAkC;EAEhC,AADA,KAAK,eAAe,IACpB,KAAK,gBAAgB;;CAavB,uBAAqC;EACnC,KAAK,eAAe"}