@focus-reactive/payload-plugin-seo 1.6.0 → 1.7.0

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.
Files changed (127) hide show
  1. package/README.md +13 -2
  2. package/dist/admin.css +200 -17
  3. package/dist/components/SeoButton/SeoButtonInner.d.ts.map +1 -1
  4. package/dist/components/SeoButton/SeoButtonInner.js +46 -16
  5. package/dist/components/SeoButton/SeoButtonInner.js.map +1 -1
  6. package/dist/components/SeoDrawer/build-analysis-input.d.ts +2 -2
  7. package/dist/components/SeoDrawer/build-analysis-input.d.ts.map +1 -1
  8. package/dist/components/SeoDrawer/build-analysis-input.js +1 -1
  9. package/dist/components/SeoDrawer/build-analysis-input.js.map +1 -1
  10. package/dist/components/SeoDrawer/buildInput.d.ts +3 -3
  11. package/dist/components/SeoDrawer/buildInput.d.ts.map +1 -1
  12. package/dist/components/SeoDrawer/buildInput.js +3 -2
  13. package/dist/components/SeoDrawer/buildInput.js.map +1 -1
  14. package/dist/components/SeoDrawer/components/SerpPreview/highlight-keyphrase.d.ts +1 -1
  15. package/dist/components/SeoDrawer/components/SerpPreview/highlight-keyphrase.d.ts.map +1 -1
  16. package/dist/components/SeoDrawer/components/SerpPreview/highlight-keyphrase.js +10 -3
  17. package/dist/components/SeoDrawer/components/SerpPreview/highlight-keyphrase.js.map +1 -1
  18. package/dist/components/SeoDrawer/components/SerpPreview/index.d.ts +2 -1
  19. package/dist/components/SeoDrawer/components/SerpPreview/index.d.ts.map +1 -1
  20. package/dist/components/SeoDrawer/components/SerpPreview/index.js +8 -2
  21. package/dist/components/SeoDrawer/components/SerpPreview/index.js.map +1 -1
  22. package/dist/components/SeoDrawer/components/SerpPreview/variants.d.ts +6 -6
  23. package/dist/components/SeoDrawer/components/TabWrapper.d.ts +6 -0
  24. package/dist/components/SeoDrawer/components/TabWrapper.d.ts.map +1 -0
  25. package/dist/components/SeoDrawer/components/TabWrapper.js +8 -0
  26. package/dist/components/SeoDrawer/components/TabWrapper.js.map +1 -0
  27. package/dist/components/SeoDrawer/index.d.ts +11 -4
  28. package/dist/components/SeoDrawer/index.d.ts.map +1 -1
  29. package/dist/components/SeoDrawer/index.js +38 -16
  30. package/dist/components/SeoDrawer/index.js.map +1 -1
  31. package/dist/components/SeoDrawer/keyphraseState.d.ts +16 -0
  32. package/dist/components/SeoDrawer/keyphraseState.d.ts.map +1 -0
  33. package/dist/components/SeoDrawer/keyphraseState.js +73 -0
  34. package/dist/components/SeoDrawer/keyphraseState.js.map +1 -0
  35. package/dist/components/SeoDrawer/keyphraseStorage.d.ts +5 -0
  36. package/dist/components/SeoDrawer/keyphraseStorage.d.ts.map +1 -0
  37. package/dist/components/SeoDrawer/keyphraseStorage.js +60 -0
  38. package/dist/components/SeoDrawer/keyphraseStorage.js.map +1 -0
  39. package/dist/components/SeoDrawer/tabs/InclusiveTab.d.ts.map +1 -1
  40. package/dist/components/SeoDrawer/tabs/InclusiveTab.js +3 -2
  41. package/dist/components/SeoDrawer/tabs/InclusiveTab.js.map +1 -1
  42. package/dist/components/SeoDrawer/tabs/KeyphraseTab.d.ts +14 -7
  43. package/dist/components/SeoDrawer/tabs/KeyphraseTab.d.ts.map +1 -1
  44. package/dist/components/SeoDrawer/tabs/KeyphraseTab.js +110 -69
  45. package/dist/components/SeoDrawer/tabs/KeyphraseTab.js.map +1 -1
  46. package/dist/components/SeoDrawer/tabs/OnPageTab.d.ts.map +1 -1
  47. package/dist/components/SeoDrawer/tabs/OnPageTab.js +3 -2
  48. package/dist/components/SeoDrawer/tabs/OnPageTab.js.map +1 -1
  49. package/dist/components/SeoDrawer/tabs/ReadabilityTab.d.ts.map +1 -1
  50. package/dist/components/SeoDrawer/tabs/ReadabilityTab.js +3 -2
  51. package/dist/components/SeoDrawer/tabs/ReadabilityTab.js.map +1 -1
  52. package/dist/components/SeoDrawer/tabs/SerpTab.d.ts +2 -1
  53. package/dist/components/SeoDrawer/tabs/SerpTab.d.ts.map +1 -1
  54. package/dist/components/SeoDrawer/tabs/SerpTab.js +14 -3
  55. package/dist/components/SeoDrawer/tabs/SerpTab.js.map +1 -1
  56. package/dist/components/SeoDrawer/tabs/VitalsTab.d.ts.map +1 -1
  57. package/dist/components/SeoDrawer/tabs/VitalsTab.js +7 -3
  58. package/dist/components/SeoDrawer/tabs/VitalsTab.js.map +1 -1
  59. package/dist/components/SeoDrawer/tabs/keyphrase/KeyphraseCard.d.ts +21 -0
  60. package/dist/components/SeoDrawer/tabs/keyphrase/KeyphraseCard.d.ts.map +1 -0
  61. package/dist/components/SeoDrawer/tabs/keyphrase/KeyphraseCard.js +38 -0
  62. package/dist/components/SeoDrawer/tabs/keyphrase/KeyphraseCard.js.map +1 -0
  63. package/dist/components/SeoDrawer/tabs/keyphrase/KeyphraseDetail.d.ts +25 -0
  64. package/dist/components/SeoDrawer/tabs/keyphrase/KeyphraseDetail.d.ts.map +1 -0
  65. package/dist/components/SeoDrawer/tabs/keyphrase/KeyphraseDetail.js +127 -0
  66. package/dist/components/SeoDrawer/tabs/keyphrase/KeyphraseDetail.js.map +1 -0
  67. package/dist/components/SeoDrawer/tabs/keyphrase/KeyphraseRail.d.ts +12 -0
  68. package/dist/components/SeoDrawer/tabs/keyphrase/KeyphraseRail.d.ts.map +1 -0
  69. package/dist/components/SeoDrawer/tabs/keyphrase/KeyphraseRail.js +54 -0
  70. package/dist/components/SeoDrawer/tabs/keyphrase/KeyphraseRail.js.map +1 -0
  71. package/dist/components/SeoDrawer/tabs/keyphrase/SynonymsField.d.ts +7 -0
  72. package/dist/components/SeoDrawer/tabs/keyphrase/SynonymsField.d.ts.map +1 -0
  73. package/dist/components/SeoDrawer/tabs/keyphrase/SynonymsField.js +93 -0
  74. package/dist/components/SeoDrawer/tabs/keyphrase/SynonymsField.js.map +1 -0
  75. package/dist/components/SeoDrawer/tabs/keyphrase/icons.d.ts +2 -0
  76. package/dist/components/SeoDrawer/tabs/keyphrase/icons.d.ts.map +1 -0
  77. package/dist/components/SeoDrawer/tabs/keyphrase/icons.js +7 -0
  78. package/dist/components/SeoDrawer/tabs/keyphrase/icons.js.map +1 -0
  79. package/dist/components/SeoDrawer/useAnalysis.d.ts +0 -1
  80. package/dist/components/SeoDrawer/useAnalysis.d.ts.map +1 -1
  81. package/dist/components/SeoDrawer/useAnalysis.js +0 -3
  82. package/dist/components/SeoDrawer/useAnalysis.js.map +1 -1
  83. package/dist/components/SeoDrawer/useKeyphrases.d.ts +18 -0
  84. package/dist/components/SeoDrawer/useKeyphrases.d.ts.map +1 -0
  85. package/dist/components/SeoDrawer/useKeyphrases.js +78 -0
  86. package/dist/components/SeoDrawer/useKeyphrases.js.map +1 -0
  87. package/dist/components/SeoDrawer/useLiveDocument.d.ts +4 -3
  88. package/dist/components/SeoDrawer/useLiveDocument.d.ts.map +1 -1
  89. package/dist/components/SeoDrawer/useLiveDocument.js +17 -9
  90. package/dist/components/SeoDrawer/useLiveDocument.js.map +1 -1
  91. package/dist/components/SeoDrawer/variants.d.ts +1 -1
  92. package/dist/components/SeoDrawer/variants.d.ts.map +1 -1
  93. package/dist/components/SeoDrawer/variants.js +2 -1
  94. package/dist/components/SeoDrawer/variants.js.map +1 -1
  95. package/dist/constants/generation.d.ts +1 -1
  96. package/dist/constants/generation.js +1 -1
  97. package/dist/constants/generation.js.map +1 -1
  98. package/dist/constants/index.d.ts +1 -0
  99. package/dist/constants/index.d.ts.map +1 -1
  100. package/dist/constants/index.js +2 -0
  101. package/dist/constants/index.js.map +1 -1
  102. package/dist/engine/buildPaper.d.ts +2 -2
  103. package/dist/engine/buildPaper.d.ts.map +1 -1
  104. package/dist/engine/buildPaper.js +4 -2
  105. package/dist/engine/buildPaper.js.map +1 -1
  106. package/dist/engine/runAnalysis/index.d.ts.map +1 -1
  107. package/dist/engine/runAnalysis/index.js +7 -0
  108. package/dist/engine/runAnalysis/index.js.map +1 -1
  109. package/dist/engine/runAnalysis/services/derive-related.d.ts +4 -0
  110. package/dist/engine/runAnalysis/services/derive-related.d.ts.map +1 -0
  111. package/dist/engine/runAnalysis/services/derive-related.js +16 -0
  112. package/dist/engine/runAnalysis/services/derive-related.js.map +1 -0
  113. package/dist/engine/types/analysis.d.ts +11 -0
  114. package/dist/engine/types/analysis.d.ts.map +1 -1
  115. package/dist/ui/Button.d.ts +9 -0
  116. package/dist/ui/Button.d.ts.map +1 -0
  117. package/dist/ui/Button.js +34 -0
  118. package/dist/ui/Button.js.map +1 -0
  119. package/dist/ui/ScoreRing.d.ts +17 -4
  120. package/dist/ui/ScoreRing.d.ts.map +1 -1
  121. package/dist/ui/ScoreRing.js +38 -14
  122. package/dist/ui/ScoreRing.js.map +1 -1
  123. package/package.json +1 -1
  124. package/dist/components/SeoDrawer/keyphrasePending.d.ts +0 -2
  125. package/dist/components/SeoDrawer/keyphrasePending.d.ts.map +0 -1
  126. package/dist/components/SeoDrawer/keyphrasePending.js +0 -9
  127. package/dist/components/SeoDrawer/keyphrasePending.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ScoreRing.d.ts","sourceRoot":"","sources":["../../src/ui/ScoreRing.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAIvD,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,cAAc,2CAmB1D"}
1
+ {"version":3,"file":"ScoreRing.d.ts","sourceRoot":"","sources":["../../src/ui/ScoreRing.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAIvD,QAAA,MAAM,OAAO;;8EAQX,CAAC;AAsBH,KAAK,QAAQ,GAAG,WAAW,CAAC,YAAY,CAAC,OAAO,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAElE,KAAK,cAAc,GAAG;IAAE,IAAI,CAAC,EAAE,QAAQ,CAAA;CAAE,GAAG,CACxC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,GACjC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,KAAK,CAAA;CAAE,CACvC,CAAC;AAEF,wBAAgB,SAAS,CAAC,EAAE,IAAe,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,cAAc,2CAwB3E"}
@@ -1,26 +1,50 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
+ import { cva } from "class-variance-authority";
4
+ import { Loader2 } from "lucide-react";
3
5
  import { cn } from "../utils/style";
4
6
  import { statusVar } from "../components/SeoDrawer/variants";
5
- function ScoreRing({ score, status }) {
7
+ const ringVar = cva("rounded-full flex-none grid place-items-center", {
8
+ variants: {
9
+ size: {
10
+ small: "w-[36px] h-[36px]",
11
+ medium: "w-[60px] h-[60px]"
12
+ }
13
+ },
14
+ defaultVariants: { size: "medium" }
15
+ });
16
+ const innerVar = cva("rounded-full bg-neutral-0 grid place-items-center font-bold", {
17
+ variants: {
18
+ size: {
19
+ small: "w-[28px] h-[28px] text-[11px]",
20
+ medium: "w-[48px] h-[48px] text-[18px]"
21
+ }
22
+ },
23
+ defaultVariants: { size: "medium" }
24
+ });
25
+ const loaderVar = cva("animate-spin text-neutral-500", {
26
+ variants: {
27
+ size: {
28
+ small: "w-[16px] h-[16px]",
29
+ medium: "w-[26px] h-[26px]"
30
+ }
31
+ },
32
+ defaultVariants: { size: "medium" }
33
+ });
34
+ function ScoreRing({ size = "medium", status, score }) {
35
+ if (status === "loading") {
36
+ return /* @__PURE__ */ jsx("span", { className: cn(ringVar({ size }), "bg-neutral-100"), children: /* @__PURE__ */ jsx(Loader2, { "aria-hidden": "true", className: loaderVar({ size }) }) });
37
+ }
38
+ const isIdle = status === "idle";
39
+ const fill = isIdle ? 100 : score;
6
40
  return /* @__PURE__ */ jsx(
7
41
  "div",
8
42
  {
9
- className: cn(
10
- "w-[60px] h-[60px] rounded-full flex-none grid place-items-center",
11
- statusVar({ status })
12
- ),
43
+ className: cn(ringVar({ size }), statusVar({ status })),
13
44
  style: {
14
- background: `conic-gradient(var(--seo-c) ${score}%, var(--theme-elevation-150) 0)`
45
+ background: `conic-gradient(var(--seo-c) ${fill}%, var(--theme-elevation-150) 0)`
15
46
  },
16
- children: /* @__PURE__ */ jsx(
17
- "div",
18
- {
19
- className: "w-[48px] h-[48px] rounded-full bg-neutral-0 grid place-items-center font-bold text-[18px]",
20
- style: { color: "var(--seo-c)" },
21
- children: score
22
- }
23
- )
47
+ children: /* @__PURE__ */ jsx("div", { className: innerVar({ size }), style: { color: "var(--seo-c)" }, children: isIdle ? "-" : score })
24
48
  }
25
49
  );
26
50
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/ui/ScoreRing.tsx"],"sourcesContent":["\"use client\";\n\nimport type { Status } from \"../engine/types/analysis\";\nimport { cn } from \"../utils/style\";\nimport { statusVar } from \"../components/SeoDrawer/variants\";\n\ninterface ScoreRingProps {\n score: number;\n status: Status;\n}\n\nexport function ScoreRing({ score, status }: ScoreRingProps) {\n return (\n <div\n className={cn(\n \"w-[60px] h-[60px] rounded-full flex-none grid place-items-center\",\n statusVar({ status })\n )}\n style={{\n background: `conic-gradient(var(--seo-c) ${score}%, var(--theme-elevation-150) 0)`,\n }}\n >\n <div\n className=\"w-[48px] h-[48px] rounded-full bg-neutral-0 grid place-items-center font-bold text-[18px]\"\n style={{ color: \"var(--seo-c)\" }}\n >\n {score}\n </div>\n </div>\n );\n}\n"],"mappings":";AAsBM;AAnBN,SAAS,UAAU;AACnB,SAAS,iBAAiB;AAOnB,SAAS,UAAU,EAAE,OAAO,OAAO,GAAmB;AAC3D,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA,UAAU,EAAE,OAAO,CAAC;AAAA,MACtB;AAAA,MACA,OAAO;AAAA,QACL,YAAY,+BAA+B,KAAK;AAAA,MAClD;AAAA,MAEA;AAAA,QAAC;AAAA;AAAA,UACC,WAAU;AAAA,UACV,OAAO,EAAE,OAAO,eAAe;AAAA,UAE9B;AAAA;AAAA,MACH;AAAA;AAAA,EACF;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/ui/ScoreRing.tsx"],"sourcesContent":["\"use client\";\n\nimport { cva } from \"class-variance-authority\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport { Loader2 } from \"lucide-react\";\nimport type { Status } from \"../engine/types/analysis\";\nimport { cn } from \"../utils/style\";\nimport { statusVar } from \"../components/SeoDrawer/variants\";\n\nconst ringVar = cva(\"rounded-full flex-none grid place-items-center\", {\n variants: {\n size: {\n small: \"w-[36px] h-[36px]\",\n medium: \"w-[60px] h-[60px]\",\n },\n },\n defaultVariants: { size: \"medium\" },\n});\n\nconst innerVar = cva(\"rounded-full bg-neutral-0 grid place-items-center font-bold\", {\n variants: {\n size: {\n small: \"w-[28px] h-[28px] text-[11px]\",\n medium: \"w-[48px] h-[48px] text-[18px]\",\n },\n },\n defaultVariants: { size: \"medium\" },\n});\n\nconst loaderVar = cva(\"animate-spin text-neutral-500\", {\n variants: {\n size: {\n small: \"w-[16px] h-[16px]\",\n medium: \"w-[26px] h-[26px]\",\n },\n },\n defaultVariants: { size: \"medium\" },\n});\n\ntype RingSize = NonNullable<VariantProps<typeof ringVar>[\"size\"]>;\n\ntype ScoreRingProps = { size?: RingSize } & (\n | { status: Status; score: number }\n | { status: \"idle\"; score?: never }\n | { status: \"loading\"; score?: never }\n);\n\nexport function ScoreRing({ size = \"medium\", status, score }: ScoreRingProps) {\n if (status === \"loading\") {\n return (\n <span className={cn(ringVar({ size }), \"bg-neutral-100\")}>\n <Loader2 aria-hidden=\"true\" className={loaderVar({ size })} />\n </span>\n );\n }\n\n const isIdle = status === \"idle\";\n const fill = isIdle ? 100 : score;\n\n return (\n <div\n className={cn(ringVar({ size }), statusVar({ status }))}\n style={{\n background: `conic-gradient(var(--seo-c) ${fill}%, var(--theme-elevation-150) 0)`,\n }}\n >\n <div className={innerVar({ size })} style={{ color: \"var(--seo-c)\" }}>\n {isIdle ? \"-\" : score}\n </div>\n </div>\n );\n}\n"],"mappings":";AAmDQ;AAjDR,SAAS,WAAW;AAEpB,SAAS,eAAe;AAExB,SAAS,UAAU;AACnB,SAAS,iBAAiB;AAE1B,MAAM,UAAU,IAAI,kDAAkD;AAAA,EACpE,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,iBAAiB,EAAE,MAAM,SAAS;AACpC,CAAC;AAED,MAAM,WAAW,IAAI,+DAA+D;AAAA,EAClF,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,iBAAiB,EAAE,MAAM,SAAS;AACpC,CAAC;AAED,MAAM,YAAY,IAAI,iCAAiC;AAAA,EACrD,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ;AAAA,IACV;AAAA,EACF;AAAA,EACA,iBAAiB,EAAE,MAAM,SAAS;AACpC,CAAC;AAUM,SAAS,UAAU,EAAE,OAAO,UAAU,QAAQ,MAAM,GAAmB;AAC5E,MAAI,WAAW,WAAW;AACxB,WACE,oBAAC,UAAK,WAAW,GAAG,QAAQ,EAAE,KAAK,CAAC,GAAG,gBAAgB,GACrD,8BAAC,WAAQ,eAAY,QAAO,WAAW,UAAU,EAAE,KAAK,CAAC,GAAG,GAC9D;AAAA,EAEJ;AAEA,QAAM,SAAS,WAAW;AAC1B,QAAM,OAAO,SAAS,MAAM;AAE5B,SACE;AAAA,IAAC;AAAA;AAAA,MACC,WAAW,GAAG,QAAQ,EAAE,KAAK,CAAC,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC;AAAA,MACtD,OAAO;AAAA,QACL,YAAY,+BAA+B,IAAI;AAAA,MACjD;AAAA,MAEA,8BAAC,SAAI,WAAW,SAAS,EAAE,KAAK,CAAC,GAAG,OAAO,EAAE,OAAO,eAAe,GAChE,mBAAS,MAAM,OAClB;AAAA;AAAA,EACF;AAEJ;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@focus-reactive/payload-plugin-seo",
3
- "version": "1.6.0",
3
+ "version": "1.7.0",
4
4
  "license": "MIT",
5
5
  "author": "FocusReactive <ship@focusreactive.com>",
6
6
  "keywords": [
@@ -1,2 +0,0 @@
1
- export declare function isKeyphrasePending(liveKeyphrase: string, analyzedKeyphrase: string | null): boolean;
2
- //# sourceMappingURL=keyphrasePending.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keyphrasePending.d.ts","sourceRoot":"","sources":["../../../src/components/SeoDrawer/keyphrasePending.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EACrB,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAC/B,OAAO,CAGT"}
@@ -1,9 +0,0 @@
1
- function isKeyphrasePending(liveKeyphrase, analyzedKeyphrase) {
2
- if (liveKeyphrase.trim().length === 0)
3
- return false;
4
- return liveKeyphrase !== analyzedKeyphrase;
5
- }
6
- export {
7
- isKeyphrasePending
8
- };
9
- //# sourceMappingURL=keyphrasePending.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/components/SeoDrawer/keyphrasePending.ts"],"sourcesContent":["export function isKeyphrasePending(\n liveKeyphrase: string,\n analyzedKeyphrase: string | null\n): boolean {\n if (liveKeyphrase.trim().length === 0) return false;\n return liveKeyphrase !== analyzedKeyphrase;\n}\n"],"mappings":"AAAO,SAAS,mBACd,eACA,mBACS;AACT,MAAI,cAAc,KAAK,EAAE,WAAW;AAAG,WAAO;AAC9C,SAAO,kBAAkB;AAC3B;","names":[]}