@studiometa/ui 0.2.19 → 0.2.21

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.
@@ -58,17 +58,21 @@ var Figure = class extends (0, import_js_toolkit.withMountWhenInView)(import_pri
58
58
  this.src = src;
59
59
  tempImg = null;
60
60
  this.enter();
61
+ this.$emit("load");
61
62
  },
62
63
  { once: true }
63
64
  );
64
65
  tempImg.src = src;
65
- this.$terminate();
66
66
  }
67
67
  }
68
+ onLoad() {
69
+ this.$terminate();
70
+ }
68
71
  };
69
72
  __publicField(Figure, "config", {
70
73
  ...import_primitives.Transition.config,
71
74
  name: "Figure",
75
+ emits: ["load"],
72
76
  refs: ["img"],
73
77
  options: {
74
78
  ...import_primitives.Transition.config.options,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/ui/atoms/Figure/Figure.ts"],
4
- "sourcesContent": ["import { withMountWhenInView } from '@studiometa/js-toolkit';\nimport type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport { Transition } from '../../primitives/index.js';\n\nexport interface FigureProps extends BaseProps {\n $refs: {\n img: HTMLImageElement;\n };\n $options: {\n lazy: boolean;\n };\n}\n\n/**\n * Figure class.\n */\nexport class Figure<T extends BaseProps = BaseProps> extends withMountWhenInView<Transition>(Transition, {\n threshold: [0, 1],\n})<T & FigureProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n ...Transition.config,\n name: 'Figure',\n refs: ['img'],\n options: {\n ...Transition.config.options,\n lazy: Boolean,\n },\n };\n\n /**\n * Get the transition target.\n */\n get target() {\n return this.$refs.img;\n }\n\n /**\n * Get the image source.\n */\n get src() {\n return this.$refs.img.src;\n }\n\n /**\n * Set the image source.\n */\n set src(value:string) {\n this.$refs.img.src = value;\n }\n\n /**\n * Load on mount.\n */\n mounted() {\n const { img } = this.$refs;\n\n if (!img) {\n throw new Error('[Figure] The `img` ref is required.');\n }\n\n if (!(img instanceof HTMLImageElement)) {\n throw new Error('[Figure] The `img` ref must be an `<img>` element.');\n }\n\n const { src } = img.dataset;\n\n if (this.$options.lazy && src && src !== this.src) {\n let tempImg = new Image();\n tempImg.addEventListener(\n 'load',\n async () => {\n this.src = src;\n tempImg = null;\n this.enter();\n },\n { once: true },\n );\n tempImg.src = src;\n\n this.$terminate();\n }\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAoC;AAEpC,wBAA2B;AAcpB,IAAM,SAAN,kBAAsD,uCAAgC,8BAAY;AAAA,EACvG,WAAW,CAAC,GAAG,CAAC;AAClB,CAAC,EAAmB;AAAA,EAiBlB,IAAI,SAAS;AACX,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EAKA,IAAI,MAAM;AACR,WAAO,KAAK,MAAM,IAAI;AAAA,EACxB;AAAA,EAKA,IAAI,IAAI,OAAc;AACpB,SAAK,MAAM,IAAI,MAAM;AAAA,EACvB;AAAA,EAKA,UAAU;AACR,UAAM,EAAE,IAAI,IAAI,KAAK;AAErB,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,qCAAqC;AAAA,IACvD;AAEA,QAAI,EAAE,eAAe,mBAAmB;AACtC,YAAM,IAAI,MAAM,oDAAoD;AAAA,IACtE;AAEA,UAAM,EAAE,IAAI,IAAI,IAAI;AAEpB,QAAI,KAAK,SAAS,QAAQ,OAAO,QAAQ,KAAK,KAAK;AACjD,UAAI,UAAU,IAAI,MAAM;AACxB,cAAQ;AAAA,QACN;AAAA,QACA,YAAY;AACV,eAAK,MAAM;AACX,oBAAU;AACV,eAAK,MAAM;AAAA,QACb;AAAA,QACA,EAAE,MAAM,KAAK;AAAA,MACf;AACA,cAAQ,MAAM;AAEd,WAAK,WAAW;AAAA,IAClB;AAAA,EACF;AACF;AA/DE,cANW,QAMJ,UAAqB;AAAA,EAC1B,GAAG,6BAAW;AAAA,EACd,MAAM;AAAA,EACN,MAAM,CAAC,KAAK;AAAA,EACZ,SAAS;AAAA,IACP,GAAG,6BAAW,OAAO;AAAA,IACrB,MAAM;AAAA,EACR;AACF;",
4
+ "sourcesContent": ["import { withMountWhenInView } from '@studiometa/js-toolkit';\nimport type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport { Transition } from '../../primitives/index.js';\n\nexport interface FigureProps extends BaseProps {\n $refs: {\n img: HTMLImageElement;\n };\n $options: {\n lazy: boolean;\n };\n}\n\n/**\n * Figure class.\n */\nexport class Figure<T extends BaseProps = BaseProps> extends withMountWhenInView<Transition>(Transition, {\n threshold: [0, 1],\n})<T & FigureProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n ...Transition.config,\n name: 'Figure',\n emits: ['load'],\n refs: ['img'],\n options: {\n ...Transition.config.options,\n lazy: Boolean,\n },\n };\n\n /**\n * Get the transition target.\n */\n get target() {\n return this.$refs.img;\n }\n\n /**\n * Get the image source.\n */\n get src() {\n return this.$refs.img.src;\n }\n\n /**\n * Set the image source.\n */\n set src(value:string) {\n this.$refs.img.src = value;\n }\n\n /**\n * Load on mount.\n */\n mounted() {\n const { img } = this.$refs;\n\n if (!img) {\n throw new Error('[Figure] The `img` ref is required.');\n }\n\n if (!(img instanceof HTMLImageElement)) {\n throw new Error('[Figure] The `img` ref must be an `<img>` element.');\n }\n\n const { src } = img.dataset;\n\n if (this.$options.lazy && src && src !== this.src) {\n let tempImg = new Image();\n tempImg.addEventListener(\n 'load',\n async () => {\n this.src = src;\n tempImg = null;\n this.enter();\n this.$emit('load');\n },\n { once: true },\n );\n tempImg.src = src;\n }\n }\n\n /**\n * Terminate the component on load.\n */\n onLoad() {\n this.$terminate();\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAoC;AAEpC,wBAA2B;AAcpB,IAAM,SAAN,kBAAsD,uCAAgC,8BAAY;AAAA,EACvG,WAAW,CAAC,GAAG,CAAC;AAClB,CAAC,EAAmB;AAAA,EAkBlB,IAAI,SAAS;AACX,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EAKA,IAAI,MAAM;AACR,WAAO,KAAK,MAAM,IAAI;AAAA,EACxB;AAAA,EAKA,IAAI,IAAI,OAAc;AACpB,SAAK,MAAM,IAAI,MAAM;AAAA,EACvB;AAAA,EAKA,UAAU;AACR,UAAM,EAAE,IAAI,IAAI,KAAK;AAErB,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,qCAAqC;AAAA,IACvD;AAEA,QAAI,EAAE,eAAe,mBAAmB;AACtC,YAAM,IAAI,MAAM,oDAAoD;AAAA,IACtE;AAEA,UAAM,EAAE,IAAI,IAAI,IAAI;AAEpB,QAAI,KAAK,SAAS,QAAQ,OAAO,QAAQ,KAAK,KAAK;AACjD,UAAI,UAAU,IAAI,MAAM;AACxB,cAAQ;AAAA,QACN;AAAA,QACA,YAAY;AACV,eAAK,MAAM;AACX,oBAAU;AACV,eAAK,MAAM;AACX,eAAK,MAAM,MAAM;AAAA,QACnB;AAAA,QACA,EAAE,MAAM,KAAK;AAAA,MACf;AACA,cAAQ,MAAM;AAAA,IAChB;AAAA,EACF;AAAA,EAKA,SAAS;AACP,SAAK,WAAW;AAAA,EAClB;AACF;AAtEE,cANW,QAMJ,UAAqB;AAAA,EAC1B,GAAG,6BAAW;AAAA,EACd,MAAM;AAAA,EACN,OAAO,CAAC,MAAM;AAAA,EACd,MAAM,CAAC,KAAK;AAAA,EACZ,SAAS;AAAA,IACP,GAAG,6BAAW,OAAO;AAAA,IACrB,MAAM;AAAA,EACR;AACF;",
6
6
  "names": []
7
7
  }
@@ -33,5 +33,9 @@ export declare class Figure<T extends BaseProps = BaseProps> extends Figure_base
33
33
  * Load on mount.
34
34
  */
35
35
  mounted(): void;
36
+ /**
37
+ * Terminate the component on load.
38
+ */
39
+ onLoad(): void;
36
40
  }
37
41
  export {};
@@ -6,6 +6,7 @@ class Figure extends withMountWhenInView(Transition, {
6
6
  static config = {
7
7
  ...Transition.config,
8
8
  name: "Figure",
9
+ emits: ["load"],
9
10
  refs: ["img"],
10
11
  options: {
11
12
  ...Transition.config.options,
@@ -38,13 +39,16 @@ class Figure extends withMountWhenInView(Transition, {
38
39
  this.src = src;
39
40
  tempImg = null;
40
41
  this.enter();
42
+ this.$emit("load");
41
43
  },
42
44
  { once: true }
43
45
  );
44
46
  tempImg.src = src;
45
- this.$terminate();
46
47
  }
47
48
  }
49
+ onLoad() {
50
+ this.$terminate();
51
+ }
48
52
  }
49
53
  export {
50
54
  Figure
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/ui/atoms/Figure/Figure.ts"],
4
- "sourcesContent": ["import { withMountWhenInView } from '@studiometa/js-toolkit';\nimport type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport { Transition } from '../../primitives/index.js';\n\nexport interface FigureProps extends BaseProps {\n $refs: {\n img: HTMLImageElement;\n };\n $options: {\n lazy: boolean;\n };\n}\n\n/**\n * Figure class.\n */\nexport class Figure<T extends BaseProps = BaseProps> extends withMountWhenInView<Transition>(Transition, {\n threshold: [0, 1],\n})<T & FigureProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n ...Transition.config,\n name: 'Figure',\n refs: ['img'],\n options: {\n ...Transition.config.options,\n lazy: Boolean,\n },\n };\n\n /**\n * Get the transition target.\n */\n get target() {\n return this.$refs.img;\n }\n\n /**\n * Get the image source.\n */\n get src() {\n return this.$refs.img.src;\n }\n\n /**\n * Set the image source.\n */\n set src(value:string) {\n this.$refs.img.src = value;\n }\n\n /**\n * Load on mount.\n */\n mounted() {\n const { img } = this.$refs;\n\n if (!img) {\n throw new Error('[Figure] The `img` ref is required.');\n }\n\n if (!(img instanceof HTMLImageElement)) {\n throw new Error('[Figure] The `img` ref must be an `<img>` element.');\n }\n\n const { src } = img.dataset;\n\n if (this.$options.lazy && src && src !== this.src) {\n let tempImg = new Image();\n tempImg.addEventListener(\n 'load',\n async () => {\n this.src = src;\n tempImg = null;\n this.enter();\n },\n { once: true },\n );\n tempImg.src = src;\n\n this.$terminate();\n }\n }\n}\n"],
5
- "mappings": "AAAA,SAAS,2BAA2B;AAEpC,SAAS,kBAAkB;AAcpB,MAAM,eAAgD,oBAAgC,YAAY;AAAA,EACvG,WAAW,CAAC,GAAG,CAAC;AAClB,CAAC,EAAmB;AAAA,EAIlB,OAAO,SAAqB;AAAA,IAC1B,GAAG,WAAW;AAAA,IACd,MAAM;AAAA,IACN,MAAM,CAAC,KAAK;AAAA,IACZ,SAAS;AAAA,MACP,GAAG,WAAW,OAAO;AAAA,MACrB,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAKA,IAAI,SAAS;AACX,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EAKA,IAAI,MAAM;AACR,WAAO,KAAK,MAAM,IAAI;AAAA,EACxB;AAAA,EAKA,IAAI,IAAI,OAAc;AACpB,SAAK,MAAM,IAAI,MAAM;AAAA,EACvB;AAAA,EAKA,UAAU;AACR,UAAM,EAAE,IAAI,IAAI,KAAK;AAErB,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,qCAAqC;AAAA,IACvD;AAEA,QAAI,EAAE,eAAe,mBAAmB;AACtC,YAAM,IAAI,MAAM,oDAAoD;AAAA,IACtE;AAEA,UAAM,EAAE,IAAI,IAAI,IAAI;AAEpB,QAAI,KAAK,SAAS,QAAQ,OAAO,QAAQ,KAAK,KAAK;AACjD,UAAI,UAAU,IAAI,MAAM;AACxB,cAAQ;AAAA,QACN;AAAA,QACA,YAAY;AACV,eAAK,MAAM;AACX,oBAAU;AACV,eAAK,MAAM;AAAA,QACb;AAAA,QACA,EAAE,MAAM,KAAK;AAAA,MACf;AACA,cAAQ,MAAM;AAEd,WAAK,WAAW;AAAA,IAClB;AAAA,EACF;AACF;",
4
+ "sourcesContent": ["import { withMountWhenInView } from '@studiometa/js-toolkit';\nimport type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport { Transition } from '../../primitives/index.js';\n\nexport interface FigureProps extends BaseProps {\n $refs: {\n img: HTMLImageElement;\n };\n $options: {\n lazy: boolean;\n };\n}\n\n/**\n * Figure class.\n */\nexport class Figure<T extends BaseProps = BaseProps> extends withMountWhenInView<Transition>(Transition, {\n threshold: [0, 1],\n})<T & FigureProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n ...Transition.config,\n name: 'Figure',\n emits: ['load'],\n refs: ['img'],\n options: {\n ...Transition.config.options,\n lazy: Boolean,\n },\n };\n\n /**\n * Get the transition target.\n */\n get target() {\n return this.$refs.img;\n }\n\n /**\n * Get the image source.\n */\n get src() {\n return this.$refs.img.src;\n }\n\n /**\n * Set the image source.\n */\n set src(value:string) {\n this.$refs.img.src = value;\n }\n\n /**\n * Load on mount.\n */\n mounted() {\n const { img } = this.$refs;\n\n if (!img) {\n throw new Error('[Figure] The `img` ref is required.');\n }\n\n if (!(img instanceof HTMLImageElement)) {\n throw new Error('[Figure] The `img` ref must be an `<img>` element.');\n }\n\n const { src } = img.dataset;\n\n if (this.$options.lazy && src && src !== this.src) {\n let tempImg = new Image();\n tempImg.addEventListener(\n 'load',\n async () => {\n this.src = src;\n tempImg = null;\n this.enter();\n this.$emit('load');\n },\n { once: true },\n );\n tempImg.src = src;\n }\n }\n\n /**\n * Terminate the component on load.\n */\n onLoad() {\n this.$terminate();\n }\n}\n"],
5
+ "mappings": "AAAA,SAAS,2BAA2B;AAEpC,SAAS,kBAAkB;AAcpB,MAAM,eAAgD,oBAAgC,YAAY;AAAA,EACvG,WAAW,CAAC,GAAG,CAAC;AAClB,CAAC,EAAmB;AAAA,EAIlB,OAAO,SAAqB;AAAA,IAC1B,GAAG,WAAW;AAAA,IACd,MAAM;AAAA,IACN,OAAO,CAAC,MAAM;AAAA,IACd,MAAM,CAAC,KAAK;AAAA,IACZ,SAAS;AAAA,MACP,GAAG,WAAW,OAAO;AAAA,MACrB,MAAM;AAAA,IACR;AAAA,EACF;AAAA,EAKA,IAAI,SAAS;AACX,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA,EAKA,IAAI,MAAM;AACR,WAAO,KAAK,MAAM,IAAI;AAAA,EACxB;AAAA,EAKA,IAAI,IAAI,OAAc;AACpB,SAAK,MAAM,IAAI,MAAM;AAAA,EACvB;AAAA,EAKA,UAAU;AACR,UAAM,EAAE,IAAI,IAAI,KAAK;AAErB,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,qCAAqC;AAAA,IACvD;AAEA,QAAI,EAAE,eAAe,mBAAmB;AACtC,YAAM,IAAI,MAAM,oDAAoD;AAAA,IACtE;AAEA,UAAM,EAAE,IAAI,IAAI,IAAI;AAEpB,QAAI,KAAK,SAAS,QAAQ,OAAO,QAAQ,KAAK,KAAK;AACjD,UAAI,UAAU,IAAI,MAAM;AACxB,cAAQ;AAAA,QACN;AAAA,QACA,YAAY;AACV,eAAK,MAAM;AACX,oBAAU;AACV,eAAK,MAAM;AACX,eAAK,MAAM,MAAM;AAAA,QACnB;AAAA,QACA,EAAE,MAAM,KAAK;AAAA,MACf;AACA,cAAQ,MAAM;AAAA,IAChB;AAAA,EACF;AAAA,EAKA,SAAS;AACP,SAAK,WAAW;AAAA,EAClB;AACF;",
6
6
  "names": []
7
7
  }
@@ -21,25 +21,33 @@ var __publicField = (obj, key, value) => {
21
21
  return value;
22
22
  };
23
23
 
24
- // packages/ui/atoms/Figure/FigureTwicPics.ts
25
- var FigureTwicPics_exports = {};
26
- __export(FigureTwicPics_exports, {
27
- FigureTwicPics: () => FigureTwicPics
24
+ // packages/ui/atoms/Figure/FigureTwicpics.ts
25
+ var FigureTwicpics_exports = {};
26
+ __export(FigureTwicpics_exports, {
27
+ FigureTwicpics: () => FigureTwicpics
28
28
  });
29
- module.exports = __toCommonJS(FigureTwicPics_exports);
29
+ module.exports = __toCommonJS(FigureTwicpics_exports);
30
+ var import_utils = require("@studiometa/js-toolkit/utils");
30
31
  var import_Figure = require("./Figure.cjs");
31
32
  function normalizeSize(that, prop) {
32
33
  const { step } = that.$options;
33
34
  return Math.ceil(that.$refs.img[prop] / step) * step;
34
35
  }
35
- var FigureTwicPics = class extends import_Figure.Figure {
36
+ var FigureTwicpics = class extends import_Figure.Figure {
37
+ get path() {
38
+ return (0, import_utils.withoutTrailingSlash)((0, import_utils.withoutLeadingSlash)(this.$options.path));
39
+ }
36
40
  get domain() {
37
41
  const url = new URL(this.$refs.img.dataset.src);
38
42
  return url.host;
39
43
  }
40
44
  set src(value) {
41
- const url = new URL(value, window.location.origin);
45
+ const url = new URL(value, "https://localhost");
42
46
  url.host = this.domain;
47
+ url.port = "";
48
+ if (this.path) {
49
+ url.pathname = `/${this.path}${url.pathname}`;
50
+ }
43
51
  const width = normalizeSize(this, "offsetWidth");
44
52
  const height = normalizeSize(this, "offsetHeight");
45
53
  url.searchParams.set(
@@ -52,13 +60,17 @@ var FigureTwicPics = class extends import_Figure.Figure {
52
60
  resized() {
53
61
  this.src = this.$refs.img.dataset.src;
54
62
  }
63
+ onLoad() {
64
+ }
55
65
  };
56
- __publicField(FigureTwicPics, "config", {
66
+ __publicField(FigureTwicpics, "config", {
57
67
  ...import_Figure.Figure.config,
58
- name: "FigureTwicPics",
68
+ name: "FigureTwicpics",
59
69
  options: {
60
70
  ...import_Figure.Figure.config.options,
61
71
  transform: String,
72
+ domain: String,
73
+ path: String,
62
74
  step: {
63
75
  type: Number,
64
76
  default: 50
@@ -70,4 +82,4 @@ __publicField(FigureTwicPics, "config", {
70
82
  }
71
83
  });
72
84
  if (module.exports.default) module.exports = module.exports.default;
73
- //# sourceMappingURL=FigureTwicPics.cjs.map
85
+ //# sourceMappingURL=FigureTwicpics.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/ui/atoms/Figure/FigureTwicpics.ts"],
4
+ "sourcesContent": ["import type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport { withoutLeadingSlash, withoutTrailingSlash } from '@studiometa/js-toolkit/utils';\nimport { Figure } from './Figure.js';\n\nexport interface FigureTwicpicsProps extends BaseProps {\n $options: {\n transform: string;\n domain: string;\n path: string;\n step: number;\n mode: string;\n };\n}\n\n/**\n * Normalize the given size to the step option.\n */\n// eslint-disable-next-line no-use-before-define\nfunction normalizeSize(that: FigureTwicpics, prop: string): number {\n const { step } = that.$options;\n return Math.ceil(that.$refs.img[prop] / step) * step;\n}\n\n/**\n * Figure class.\n *\n * Manager lazyloading image sources.\n */\nexport class FigureTwicpics<T extends BaseProps = BaseProps> extends Figure<\n T & FigureTwicpicsProps\n> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n ...Figure.config,\n name: 'FigureTwicpics',\n options: {\n ...Figure.config.options,\n transform: String,\n domain: String,\n path: String,\n step: {\n type: Number,\n default: 50,\n },\n mode: {\n type: String,\n default: 'cover',\n },\n },\n };\n\n /**\n * Get the Twicpics path.\n */\n get path():string {\n return withoutTrailingSlash(withoutLeadingSlash(this.$options.path));\n }\n\n /**\n * Get the Twicpics domain.\n */\n get domain(): string {\n const url = new URL(this.$refs.img.dataset.src);\n return url.host;\n }\n\n /**\n * Add Twicpics transforms, path and domain to the URL.\n */\n set src(value: string) {\n const url = new URL(value, 'https://localhost');\n url.host = this.domain;\n url.port = '';\n\n if (this.path) {\n url.pathname = `/${this.path}${url.pathname}`\n }\n\n const width = normalizeSize(this, 'offsetWidth');\n const height = normalizeSize(this, 'offsetHeight');\n\n url.searchParams.set(\n 'twic',\n ['v1', this.$options.transform, `${this.$options.mode}=${width}x${height}`]\n .filter(Boolean)\n .join('/'),\n );\n\n url.search = decodeURIComponent(url.search);\n\n super.src = url.toString();\n }\n\n /**\n * Reassign the source from the original on resize.\n */\n resized() {\n this.src = this.$refs.img.dataset.src;\n }\n\n /**\n * Do not terminate on image load as we need to set the src on resize.\n */\n onLoad() {\n // Do not terminate on image load as we need.\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,mBAA0D;AAC1D,oBAAuB;AAgBvB,SAAS,cAAc,MAAsB,MAAsB;AACjE,QAAM,EAAE,KAAK,IAAI,KAAK;AACtB,SAAO,KAAK,KAAK,KAAK,MAAM,IAAI,QAAQ,IAAI,IAAI;AAClD;AAOO,IAAM,iBAAN,cAA8D,qBAEnE;AAAA,EA0BA,IAAI,OAAc;AAChB,eAAO,uCAAqB,kCAAoB,KAAK,SAAS,IAAI,CAAC;AAAA,EACrE;AAAA,EAKA,IAAI,SAAiB;AACnB,UAAM,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,QAAQ,GAAG;AAC9C,WAAO,IAAI;AAAA,EACb;AAAA,EAKA,IAAI,IAAI,OAAe;AACrB,UAAM,MAAM,IAAI,IAAI,OAAO,mBAAmB;AAC9C,QAAI,OAAO,KAAK;AAChB,QAAI,OAAO;AAEX,QAAI,KAAK,MAAM;AACb,UAAI,WAAW,IAAI,KAAK,OAAO,IAAI;AAAA,IACrC;AAEA,UAAM,QAAQ,cAAc,MAAM,aAAa;AAC/C,UAAM,SAAS,cAAc,MAAM,cAAc;AAEjD,QAAI,aAAa;AAAA,MACf;AAAA,MACA,CAAC,MAAM,KAAK,SAAS,WAAW,GAAG,KAAK,SAAS,QAAQ,SAAS,QAAQ,EACvE,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,IACb;AAEA,QAAI,SAAS,mBAAmB,IAAI,MAAM;AAE1C,UAAM,MAAM,IAAI,SAAS;AAAA,EAC3B;AAAA,EAKA,UAAU;AACR,SAAK,MAAM,KAAK,MAAM,IAAI,QAAQ;AAAA,EACpC;AAAA,EAKA,SAAS;AAAA,EAET;AACF;AA1EE,cANW,gBAMJ,UAAqB;AAAA,EAC1B,GAAG,qBAAO;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,IACP,GAAG,qBAAO,OAAO;AAAA,IACjB,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,42 @@
1
+ import type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';
2
+ import { Figure } from './Figure.js';
3
+ export interface FigureTwicpicsProps extends BaseProps {
4
+ $options: {
5
+ transform: string;
6
+ domain: string;
7
+ path: string;
8
+ step: number;
9
+ mode: string;
10
+ };
11
+ }
12
+ /**
13
+ * Figure class.
14
+ *
15
+ * Manager lazyloading image sources.
16
+ */
17
+ export declare class FigureTwicpics<T extends BaseProps = BaseProps> extends Figure<T & FigureTwicpicsProps> {
18
+ /**
19
+ * Config.
20
+ */
21
+ static config: BaseConfig;
22
+ /**
23
+ * Get the Twicpics path.
24
+ */
25
+ get path(): string;
26
+ /**
27
+ * Get the Twicpics domain.
28
+ */
29
+ get domain(): string;
30
+ /**
31
+ * Add Twicpics transforms, path and domain to the URL.
32
+ */
33
+ set src(value: string);
34
+ /**
35
+ * Reassign the source from the original on resize.
36
+ */
37
+ resized(): void;
38
+ /**
39
+ * Do not terminate on image load as we need to set the src on resize.
40
+ */
41
+ onLoad(): void;
42
+ }
@@ -1,15 +1,18 @@
1
+ import { withoutLeadingSlash, withoutTrailingSlash } from "@studiometa/js-toolkit/utils";
1
2
  import { Figure } from "./Figure.js";
2
3
  function normalizeSize(that, prop) {
3
4
  const { step } = that.$options;
4
5
  return Math.ceil(that.$refs.img[prop] / step) * step;
5
6
  }
6
- class FigureTwicPics extends Figure {
7
+ class FigureTwicpics extends Figure {
7
8
  static config = {
8
9
  ...Figure.config,
9
- name: "FigureTwicPics",
10
+ name: "FigureTwicpics",
10
11
  options: {
11
12
  ...Figure.config.options,
12
13
  transform: String,
14
+ domain: String,
15
+ path: String,
13
16
  step: {
14
17
  type: Number,
15
18
  default: 50
@@ -20,13 +23,20 @@ class FigureTwicPics extends Figure {
20
23
  }
21
24
  }
22
25
  };
26
+ get path() {
27
+ return withoutTrailingSlash(withoutLeadingSlash(this.$options.path));
28
+ }
23
29
  get domain() {
24
30
  const url = new URL(this.$refs.img.dataset.src);
25
31
  return url.host;
26
32
  }
27
33
  set src(value) {
28
- const url = new URL(value, window.location.origin);
34
+ const url = new URL(value, "https://localhost");
29
35
  url.host = this.domain;
36
+ url.port = "";
37
+ if (this.path) {
38
+ url.pathname = `/${this.path}${url.pathname}`;
39
+ }
30
40
  const width = normalizeSize(this, "offsetWidth");
31
41
  const height = normalizeSize(this, "offsetHeight");
32
42
  url.searchParams.set(
@@ -39,8 +49,10 @@ class FigureTwicPics extends Figure {
39
49
  resized() {
40
50
  this.src = this.$refs.img.dataset.src;
41
51
  }
52
+ onLoad() {
53
+ }
42
54
  }
43
55
  export {
44
- FigureTwicPics
56
+ FigureTwicpics
45
57
  };
46
- //# sourceMappingURL=FigureTwicPics.js.map
58
+ //# sourceMappingURL=FigureTwicpics.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../packages/ui/atoms/Figure/FigureTwicpics.ts"],
4
+ "sourcesContent": ["import type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport { withoutLeadingSlash, withoutTrailingSlash } from '@studiometa/js-toolkit/utils';\nimport { Figure } from './Figure.js';\n\nexport interface FigureTwicpicsProps extends BaseProps {\n $options: {\n transform: string;\n domain: string;\n path: string;\n step: number;\n mode: string;\n };\n}\n\n/**\n * Normalize the given size to the step option.\n */\n// eslint-disable-next-line no-use-before-define\nfunction normalizeSize(that: FigureTwicpics, prop: string): number {\n const { step } = that.$options;\n return Math.ceil(that.$refs.img[prop] / step) * step;\n}\n\n/**\n * Figure class.\n *\n * Manager lazyloading image sources.\n */\nexport class FigureTwicpics<T extends BaseProps = BaseProps> extends Figure<\n T & FigureTwicpicsProps\n> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n ...Figure.config,\n name: 'FigureTwicpics',\n options: {\n ...Figure.config.options,\n transform: String,\n domain: String,\n path: String,\n step: {\n type: Number,\n default: 50,\n },\n mode: {\n type: String,\n default: 'cover',\n },\n },\n };\n\n /**\n * Get the Twicpics path.\n */\n get path():string {\n return withoutTrailingSlash(withoutLeadingSlash(this.$options.path));\n }\n\n /**\n * Get the Twicpics domain.\n */\n get domain(): string {\n const url = new URL(this.$refs.img.dataset.src);\n return url.host;\n }\n\n /**\n * Add Twicpics transforms, path and domain to the URL.\n */\n set src(value: string) {\n const url = new URL(value, 'https://localhost');\n url.host = this.domain;\n url.port = '';\n\n if (this.path) {\n url.pathname = `/${this.path}${url.pathname}`\n }\n\n const width = normalizeSize(this, 'offsetWidth');\n const height = normalizeSize(this, 'offsetHeight');\n\n url.searchParams.set(\n 'twic',\n ['v1', this.$options.transform, `${this.$options.mode}=${width}x${height}`]\n .filter(Boolean)\n .join('/'),\n );\n\n url.search = decodeURIComponent(url.search);\n\n super.src = url.toString();\n }\n\n /**\n * Reassign the source from the original on resize.\n */\n resized() {\n this.src = this.$refs.img.dataset.src;\n }\n\n /**\n * Do not terminate on image load as we need to set the src on resize.\n */\n onLoad() {\n // Do not terminate on image load as we need.\n }\n}\n"],
5
+ "mappings": "AACA,SAAS,qBAAqB,4BAA4B;AAC1D,SAAS,cAAc;AAgBvB,SAAS,cAAc,MAAsB,MAAsB;AACjE,QAAM,EAAE,KAAK,IAAI,KAAK;AACtB,SAAO,KAAK,KAAK,KAAK,MAAM,IAAI,QAAQ,IAAI,IAAI;AAClD;AAOO,MAAM,uBAAwD,OAEnE;AAAA,EAIA,OAAO,SAAqB;AAAA,IAC1B,GAAG,OAAO;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,MACP,GAAG,OAAO,OAAO;AAAA,MACjB,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAKA,IAAI,OAAc;AAChB,WAAO,qBAAqB,oBAAoB,KAAK,SAAS,IAAI,CAAC;AAAA,EACrE;AAAA,EAKA,IAAI,SAAiB;AACnB,UAAM,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,QAAQ,GAAG;AAC9C,WAAO,IAAI;AAAA,EACb;AAAA,EAKA,IAAI,IAAI,OAAe;AACrB,UAAM,MAAM,IAAI,IAAI,OAAO,mBAAmB;AAC9C,QAAI,OAAO,KAAK;AAChB,QAAI,OAAO;AAEX,QAAI,KAAK,MAAM;AACb,UAAI,WAAW,IAAI,KAAK,OAAO,IAAI;AAAA,IACrC;AAEA,UAAM,QAAQ,cAAc,MAAM,aAAa;AAC/C,UAAM,SAAS,cAAc,MAAM,cAAc;AAEjD,QAAI,aAAa;AAAA,MACf;AAAA,MACA,CAAC,MAAM,KAAK,SAAS,WAAW,GAAG,KAAK,SAAS,QAAQ,SAAS,QAAQ,EACvE,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,IACb;AAEA,QAAI,SAAS,mBAAmB,IAAI,MAAM;AAE1C,UAAM,MAAM,IAAI,SAAS;AAAA,EAC3B;AAAA,EAKA,UAAU;AACR,SAAK,MAAM,KAAK,MAAM,IAAI,QAAQ;AAAA,EACpC;AAAA,EAKA,SAAS;AAAA,EAET;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,39 @@
1
+ {#
2
+ /**
3
+ * @file
4
+ * Figure with Twicpics component.
5
+ *
6
+ * @param string $twic_domain
7
+ * The Twicpics domain to use.
8
+ * @param string $twic_path
9
+ * The Twicpics path to use.
10
+ * @param object $twic_transform
11
+ * Custom transforms for Twicpics.
12
+ */
13
+ #}
14
+
15
+ {% extends '@ui/atoms/Figure/Figure.twig' %}
16
+
17
+ {% set twic_param = 'v1' %}
18
+ {% if twic_transform is defined %}
19
+ {% set formatted_transform = [] %}
20
+ {% for key, value in twic_transform %}
21
+ {% set formatted_transform = formatted_transform|merge(['%s=%s'|format(key, value)]) %}
22
+ {% endfor %}
23
+ {% set formatted_transform = formatted_transform|join('/') %}
24
+
25
+ {% set twic_param = 'v1/%s'|format(formatted_transform) %}
26
+ {% set attr = (attr ?? {})|merge({ data_option_transform: formatted_transform }) %}
27
+ {% endif %}
28
+
29
+ {% set src = twig_toolkit_url(src).withQueryParameter('twic', twic_param) %}
30
+
31
+ {% if twic_domain is defined %}
32
+ {% set src = src.withHost(twic_domain) %}
33
+ {% set attr = (attr ?? {})|merge({ data_option_domain: twic_domain }) %}
34
+ {% endif %}
35
+
36
+ {% if twic_path is defined %}
37
+ {% set src = src.withPath(twic_path ~ src.getPath()) %}
38
+ {% set attr = (attr ?? {})|merge({ data_option_path: twic_path }) %}
39
+ {% endif %}
@@ -17,6 +17,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
17
17
  var Figure_exports = {};
18
18
  module.exports = __toCommonJS(Figure_exports);
19
19
  __reExport(Figure_exports, require("./Figure.cjs"), module.exports);
20
- __reExport(Figure_exports, require("./FigureTwicPics.cjs"), module.exports);
20
+ __reExport(Figure_exports, require("./FigureTwicpics.cjs"), module.exports);
21
21
  if (module.exports.default) module.exports = module.exports.default;
22
22
  //# sourceMappingURL=index.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/ui/atoms/Figure/index.ts"],
4
- "sourcesContent": ["export * from './Figure.js';\nexport * from './FigureTwicPics.js';\n"],
4
+ "sourcesContent": ["export * from './Figure.js';\nexport * from './FigureTwicpics.js';\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,2BAAc,yBAAd;AACA,2BAAc,iCADd;",
6
6
  "names": []
7
7
  }
@@ -1,2 +1,2 @@
1
1
  export * from './Figure.js';
2
- export * from './FigureTwicPics.js';
2
+ export * from './FigureTwicpics.js';
@@ -1,3 +1,3 @@
1
1
  export * from "./Figure.js";
2
- export * from "./FigureTwicPics.js";
2
+ export * from "./FigureTwicpics.js";
3
3
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../packages/ui/atoms/Figure/index.ts"],
4
- "sourcesContent": ["export * from './Figure.js';\nexport * from './FigureTwicPics.js';\n"],
4
+ "sourcesContent": ["export * from './Figure.js';\nexport * from './FigureTwicpics.js';\n"],
5
5
  "mappings": "AAAA,cAAc;AACd,cAAc;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@studiometa/ui",
3
- "version": "0.2.19",
3
+ "version": "0.2.21",
4
4
  "description": "A set of opiniated, unstyled and accessible components",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../packages/ui/atoms/Figure/FigureTwicPics.ts"],
4
- "sourcesContent": ["import type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport { Figure } from './Figure.js';\n\nexport interface FigureTwicPicsProps extends BaseProps {\n $options: {\n transform: string;\n step: number;\n mode: string;\n };\n}\n\n/**\n * Normalize the given size to the step option.\n */\n// eslint-disable-next-line no-use-before-define\nfunction normalizeSize(that:FigureTwicPics, prop:string):number {\n const { step } = that.$options;\n return Math.ceil(that.$refs.img[prop] / step) * step;\n}\n\n/**\n * Figure class.\n *\n * Manager lazyloading image sources.\n */\nexport class FigureTwicPics<T extends BaseProps = BaseProps> extends Figure<T & FigureTwicPicsProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n ...Figure.config,\n name: 'FigureTwicPics',\n options: {\n ...Figure.config.options,\n transform: String,\n step: {\n type: Number,\n default: 50,\n },\n mode: {\n type: String,\n default: 'cover',\n },\n },\n };\n\n /**\n * Get the TwicPics domain.\n */\n get domain():string {\n const url = new URL(this.$refs.img.dataset.src);\n return url.host;\n }\n\n /**\n * Add TwicPics transforms and domain to the URL.\n */\n set src(value:string) {\n const url = new URL(value, window.location.origin);\n url.host = this.domain;\n\n const width = normalizeSize(this, 'offsetWidth');\n const height = normalizeSize(this, 'offsetHeight');\n\n url.searchParams.set(\n 'twic',\n ['v1', this.$options.transform, `${this.$options.mode}=${width}x${height}`]\n .filter(Boolean)\n .join('/'),\n );\n\n url.search = decodeURIComponent(url.search);\n\n super.src = url.toString();\n }\n\n /**\n * Reassign the source from the original on resized.\n */\n resized() {\n this.src = this.$refs.img.dataset.src;\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,oBAAuB;AAcvB,SAAS,cAAc,MAAqB,MAAoB;AAC9D,QAAM,EAAE,KAAK,IAAI,KAAK;AACtB,SAAO,KAAK,KAAK,KAAK,MAAM,IAAI,QAAQ,IAAI,IAAI;AAClD;AAOO,IAAM,iBAAN,cAA8D,qBAAgC;AAAA,EAwBnG,IAAI,SAAgB;AAClB,UAAM,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,QAAQ,GAAG;AAC9C,WAAO,IAAI;AAAA,EACb;AAAA,EAKA,IAAI,IAAI,OAAc;AACpB,UAAM,MAAM,IAAI,IAAI,OAAO,OAAO,SAAS,MAAM;AACjD,QAAI,OAAO,KAAK;AAEhB,UAAM,QAAQ,cAAc,MAAM,aAAa;AAC/C,UAAM,SAAS,cAAc,MAAM,cAAc;AAEjD,QAAI,aAAa;AAAA,MACf;AAAA,MACA,CAAC,MAAM,KAAK,SAAS,WAAW,GAAG,KAAK,SAAS,QAAQ,SAAS,QAAQ,EACvE,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,IACb;AAEA,QAAI,SAAS,mBAAmB,IAAI,MAAM;AAE1C,UAAM,MAAM,IAAI,SAAS;AAAA,EAC3B;AAAA,EAKA,UAAU;AACR,SAAK,MAAM,KAAK,MAAM,IAAI,QAAQ;AAAA,EACpC;AACF;AArDE,cAJW,gBAIJ,UAAqB;AAAA,EAC1B,GAAG,qBAAO;AAAA,EACV,MAAM;AAAA,EACN,SAAS;AAAA,IACP,GAAG,qBAAO,OAAO;AAAA,IACjB,WAAW;AAAA,IACX,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF;AACF;",
6
- "names": []
7
- }
@@ -1,32 +0,0 @@
1
- import type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';
2
- import { Figure } from './Figure.js';
3
- export interface FigureTwicPicsProps extends BaseProps {
4
- $options: {
5
- transform: string;
6
- step: number;
7
- mode: string;
8
- };
9
- }
10
- /**
11
- * Figure class.
12
- *
13
- * Manager lazyloading image sources.
14
- */
15
- export declare class FigureTwicPics<T extends BaseProps = BaseProps> extends Figure<T & FigureTwicPicsProps> {
16
- /**
17
- * Config.
18
- */
19
- static config: BaseConfig;
20
- /**
21
- * Get the TwicPics domain.
22
- */
23
- get domain(): string;
24
- /**
25
- * Add TwicPics transforms and domain to the URL.
26
- */
27
- set src(value: string);
28
- /**
29
- * Reassign the source from the original on resized.
30
- */
31
- resized(): void;
32
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../packages/ui/atoms/Figure/FigureTwicPics.ts"],
4
- "sourcesContent": ["import type { BaseConfig, BaseProps } from '@studiometa/js-toolkit';\nimport { Figure } from './Figure.js';\n\nexport interface FigureTwicPicsProps extends BaseProps {\n $options: {\n transform: string;\n step: number;\n mode: string;\n };\n}\n\n/**\n * Normalize the given size to the step option.\n */\n// eslint-disable-next-line no-use-before-define\nfunction normalizeSize(that:FigureTwicPics, prop:string):number {\n const { step } = that.$options;\n return Math.ceil(that.$refs.img[prop] / step) * step;\n}\n\n/**\n * Figure class.\n *\n * Manager lazyloading image sources.\n */\nexport class FigureTwicPics<T extends BaseProps = BaseProps> extends Figure<T & FigureTwicPicsProps> {\n /**\n * Config.\n */\n static config: BaseConfig = {\n ...Figure.config,\n name: 'FigureTwicPics',\n options: {\n ...Figure.config.options,\n transform: String,\n step: {\n type: Number,\n default: 50,\n },\n mode: {\n type: String,\n default: 'cover',\n },\n },\n };\n\n /**\n * Get the TwicPics domain.\n */\n get domain():string {\n const url = new URL(this.$refs.img.dataset.src);\n return url.host;\n }\n\n /**\n * Add TwicPics transforms and domain to the URL.\n */\n set src(value:string) {\n const url = new URL(value, window.location.origin);\n url.host = this.domain;\n\n const width = normalizeSize(this, 'offsetWidth');\n const height = normalizeSize(this, 'offsetHeight');\n\n url.searchParams.set(\n 'twic',\n ['v1', this.$options.transform, `${this.$options.mode}=${width}x${height}`]\n .filter(Boolean)\n .join('/'),\n );\n\n url.search = decodeURIComponent(url.search);\n\n super.src = url.toString();\n }\n\n /**\n * Reassign the source from the original on resized.\n */\n resized() {\n this.src = this.$refs.img.dataset.src;\n }\n}\n"],
5
- "mappings": "AACA,SAAS,cAAc;AAcvB,SAAS,cAAc,MAAqB,MAAoB;AAC9D,QAAM,EAAE,KAAK,IAAI,KAAK;AACtB,SAAO,KAAK,KAAK,KAAK,MAAM,IAAI,QAAQ,IAAI,IAAI;AAClD;AAOO,MAAM,uBAAwD,OAAgC;AAAA,EAInG,OAAO,SAAqB;AAAA,IAC1B,GAAG,OAAO;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA,MACP,GAAG,OAAO,OAAO;AAAA,MACjB,WAAW;AAAA,MACX,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,MACA,MAAM;AAAA,QACJ,MAAM;AAAA,QACN,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF;AAAA,EAKA,IAAI,SAAgB;AAClB,UAAM,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,QAAQ,GAAG;AAC9C,WAAO,IAAI;AAAA,EACb;AAAA,EAKA,IAAI,IAAI,OAAc;AACpB,UAAM,MAAM,IAAI,IAAI,OAAO,OAAO,SAAS,MAAM;AACjD,QAAI,OAAO,KAAK;AAEhB,UAAM,QAAQ,cAAc,MAAM,aAAa;AAC/C,UAAM,SAAS,cAAc,MAAM,cAAc;AAEjD,QAAI,aAAa;AAAA,MACf;AAAA,MACA,CAAC,MAAM,KAAK,SAAS,WAAW,GAAG,KAAK,SAAS,QAAQ,SAAS,QAAQ,EACvE,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,IACb;AAEA,QAAI,SAAS,mBAAmB,IAAI,MAAM;AAE1C,UAAM,MAAM,IAAI,SAAS;AAAA,EAC3B;AAAA,EAKA,UAAU;AACR,SAAK,MAAM,KAAK,MAAM,IAAI,QAAQ;AAAA,EACpC;AACF;",
6
- "names": []
7
- }