@copilotkit/react-textarea 0.21.0-alpha.1 → 0.21.0-alpha.3

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 (147) hide show
  1. package/.turbo/turbo-build.log +314 -182
  2. package/CHANGELOG.md +22 -0
  3. package/dist/{chunk-F4WZCQG6.mjs → chunk-7D5DUGLT.mjs} +4 -4
  4. package/dist/{chunk-7JO276KU.mjs → chunk-G4U3POLM.mjs} +2 -2
  5. package/dist/{chunk-IPM5WWPW.mjs → chunk-NHYCKIK7.mjs} +4 -4
  6. package/dist/{chunk-LRXRD5KU.mjs → chunk-QQ3KP25O.mjs} +2 -2
  7. package/dist/{chunk-34D4UIYX.mjs → chunk-YF4T3ZZF.mjs} +18 -18
  8. package/dist/components/base-copilot-textarea/base-copilot-textarea.js +1772 -0
  9. package/dist/components/base-copilot-textarea/base-copilot-textarea.js.map +1 -0
  10. package/dist/components/base-copilot-textarea/base-copilot-textarea.mjs +16 -16
  11. package/dist/components/base-copilot-textarea/render-element.js +75 -0
  12. package/dist/components/base-copilot-textarea/render-element.js.map +1 -0
  13. package/dist/components/base-copilot-textarea/render-placeholder.js +69 -0
  14. package/dist/components/base-copilot-textarea/render-placeholder.js.map +1 -0
  15. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.js +112 -0
  16. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.js.map +1 -0
  17. package/dist/components/base-copilot-textarea/use-add-branding-css.js +83 -0
  18. package/dist/components/base-copilot-textarea/use-add-branding-css.js.map +1 -0
  19. package/dist/components/copilot-textarea/copilot-textarea.js +2246 -0
  20. package/dist/components/copilot-textarea/copilot-textarea.js.map +1 -0
  21. package/dist/components/copilot-textarea/copilot-textarea.mjs +25 -25
  22. package/dist/components/hovering-toolbar/hovering-editor-provider.js +49 -0
  23. package/dist/components/hovering-toolbar/hovering-editor-provider.js.map +1 -0
  24. package/dist/components/hovering-toolbar/hovering-toolbar-components.js +158 -0
  25. package/dist/components/hovering-toolbar/hovering-toolbar-components.js.map +1 -0
  26. package/dist/components/hovering-toolbar/hovering-toolbar.js +915 -0
  27. package/dist/components/hovering-toolbar/hovering-toolbar.js.map +1 -0
  28. package/dist/components/hovering-toolbar/hovering-toolbar.mjs +7 -7
  29. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.js +622 -0
  30. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.js.map +1 -0
  31. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.mjs +3 -3
  32. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.js +639 -0
  33. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.js.map +1 -0
  34. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.mjs +4 -4
  35. package/dist/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.js +140 -0
  36. package/dist/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.js.map +1 -0
  37. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.js +639 -0
  38. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.js.map +1 -0
  39. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.mjs +4 -4
  40. package/dist/components/index.js +2250 -0
  41. package/dist/components/index.js.map +1 -0
  42. package/dist/components/index.mjs +25 -25
  43. package/dist/components/manual-ui/chip-with-icon.js +53 -0
  44. package/dist/components/manual-ui/chip-with-icon.js.map +1 -0
  45. package/dist/components/source-search-box/source-search-box.js +243 -0
  46. package/dist/components/source-search-box/source-search-box.js.map +1 -0
  47. package/dist/components/ui/button.js +118 -0
  48. package/dist/components/ui/button.js.map +1 -0
  49. package/dist/components/ui/card.js +142 -0
  50. package/dist/components/ui/card.js.map +1 -0
  51. package/dist/components/ui/command.js +306 -0
  52. package/dist/components/ui/command.js.map +1 -0
  53. package/dist/components/ui/dialog.js +199 -0
  54. package/dist/components/ui/dialog.js.map +1 -0
  55. package/dist/components/ui/label.js +92 -0
  56. package/dist/components/ui/label.js.map +1 -0
  57. package/dist/components/ui/separator.js +96 -0
  58. package/dist/components/ui/separator.js.map +1 -0
  59. package/dist/components/ui/textarea.js +91 -0
  60. package/dist/components/ui/textarea.js.map +1 -0
  61. package/dist/context/index.js +19 -0
  62. package/dist/context/index.js.map +1 -0
  63. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.js +193 -0
  64. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.js.map +1 -0
  65. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.js +194 -0
  66. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.js.map +1 -0
  67. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.js +180 -0
  68. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.js.map +1 -0
  69. package/dist/hooks/index.js +19 -0
  70. package/dist/hooks/index.js.map +1 -0
  71. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.js +167 -0
  72. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.js.map +1 -0
  73. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.mjs +1 -1
  74. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.js +227 -0
  75. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.js.map +1 -0
  76. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.mjs +1 -1
  77. package/dist/hooks/misc/use-autosize-textarea.js +39 -0
  78. package/dist/hooks/misc/use-autosize-textarea.js.map +1 -0
  79. package/dist/index.js +2256 -0
  80. package/dist/index.js.map +1 -0
  81. package/dist/index.mjs +31 -31
  82. package/dist/lib/debouncer.js +76 -0
  83. package/dist/lib/debouncer.js.map +1 -0
  84. package/dist/lib/editor-to-text.js +69 -0
  85. package/dist/lib/editor-to-text.js.map +1 -0
  86. package/dist/lib/get-text-around-cursor.js +131 -0
  87. package/dist/lib/get-text-around-cursor.js.map +1 -0
  88. package/dist/lib/retry.js +43 -0
  89. package/dist/lib/retry.js.map +1 -0
  90. package/dist/lib/slatejs-edits/add-autocompletions.js +51 -0
  91. package/dist/lib/slatejs-edits/add-autocompletions.js.map +1 -0
  92. package/dist/lib/slatejs-edits/clear-autocompletions.js +49 -0
  93. package/dist/lib/slatejs-edits/clear-autocompletions.js.map +1 -0
  94. package/dist/lib/slatejs-edits/replace-text.js +53 -0
  95. package/dist/lib/slatejs-edits/replace-text.js.map +1 -0
  96. package/dist/lib/slatejs-edits/with-partial-history.js +133 -0
  97. package/dist/lib/slatejs-edits/with-partial-history.js.map +1 -0
  98. package/dist/lib/stream-promise-flatten.js +72 -0
  99. package/dist/lib/stream-promise-flatten.js.map +1 -0
  100. package/dist/lib/utils.js +101 -0
  101. package/dist/lib/utils.js.map +1 -0
  102. package/dist/lib/utils.test.js +9 -0
  103. package/dist/lib/utils.test.js.map +1 -0
  104. package/dist/types/autosuggestions-config/autosuggestions-config-user-specified.js +19 -0
  105. package/dist/types/autosuggestions-config/autosuggestions-config-user-specified.js.map +1 -0
  106. package/dist/types/autosuggestions-config/autosuggestions-config.js +275 -0
  107. package/dist/types/autosuggestions-config/autosuggestions-config.js.map +1 -0
  108. package/dist/types/autosuggestions-config/editing-api-config.js +109 -0
  109. package/dist/types/autosuggestions-config/editing-api-config.js.map +1 -0
  110. package/dist/types/autosuggestions-config/index.js +331 -0
  111. package/dist/types/autosuggestions-config/index.js.map +1 -0
  112. package/dist/types/autosuggestions-config/insertions-api-config.js +103 -0
  113. package/dist/types/autosuggestions-config/insertions-api-config.js.map +1 -0
  114. package/dist/types/autosuggestions-config/subtypes/chatlike-api-endpoint.js +99 -0
  115. package/dist/types/autosuggestions-config/subtypes/chatlike-api-endpoint.js.map +1 -0
  116. package/dist/types/autosuggestions-config/subtypes/make-system-prompt.js +19 -0
  117. package/dist/types/autosuggestions-config/subtypes/make-system-prompt.js.map +1 -0
  118. package/dist/types/autosuggestions-config/subtypes/minimal-chat-gpt-message.js +19 -0
  119. package/dist/types/autosuggestions-config/subtypes/minimal-chat-gpt-message.js.map +1 -0
  120. package/dist/types/autosuggestions-config/suggestions-api-config.js +92 -0
  121. package/dist/types/autosuggestions-config/suggestions-api-config.js.map +1 -0
  122. package/dist/types/base/autosuggestion-state.js +19 -0
  123. package/dist/types/base/autosuggestion-state.js.map +1 -0
  124. package/dist/types/base/autosuggestions-bare-function.js +19 -0
  125. package/dist/types/base/autosuggestions-bare-function.js.map +1 -0
  126. package/dist/types/base/base-autosuggestions-config.js +38 -0
  127. package/dist/types/base/base-autosuggestions-config.js.map +1 -0
  128. package/dist/types/base/base-copilot-textarea-props.js +19 -0
  129. package/dist/types/base/base-copilot-textarea-props.js.map +1 -0
  130. package/dist/types/base/custom-editor.js +19 -0
  131. package/dist/types/base/custom-editor.js.map +1 -0
  132. package/dist/types/base/editor-autocomplete-state.js +45 -0
  133. package/dist/types/base/editor-autocomplete-state.js.map +1 -0
  134. package/dist/types/base/index.js +40 -0
  135. package/dist/types/base/index.js.map +1 -0
  136. package/dist/types/html-copilot-textarea-element.js +19 -0
  137. package/dist/types/html-copilot-textarea-element.js.map +1 -0
  138. package/dist/types/index.js +333 -0
  139. package/dist/types/index.js.map +1 -0
  140. package/dist/types/index.mjs +1 -1
  141. package/package.json +9 -6
  142. package/tsup.config.ts +1 -1
  143. /package/dist/{chunk-F4WZCQG6.mjs.map → chunk-7D5DUGLT.mjs.map} +0 -0
  144. /package/dist/{chunk-7JO276KU.mjs.map → chunk-G4U3POLM.mjs.map} +0 -0
  145. /package/dist/{chunk-IPM5WWPW.mjs.map → chunk-NHYCKIK7.mjs.map} +0 -0
  146. /package/dist/{chunk-LRXRD5KU.mjs.map → chunk-QQ3KP25O.mjs.map} +0 -0
  147. /package/dist/{chunk-34D4UIYX.mjs.map → chunk-YF4T3ZZF.mjs.map} +0 -0
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __defProps = Object.defineProperties;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7
+ var __getOwnPropNames = Object.getOwnPropertyNames;
8
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9
+ var __getProtoOf = Object.getPrototypeOf;
10
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
11
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
12
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
13
+ var __spreadValues = (a, b) => {
14
+ for (var prop in b || (b = {}))
15
+ if (__hasOwnProp.call(b, prop))
16
+ __defNormalProp(a, prop, b[prop]);
17
+ if (__getOwnPropSymbols)
18
+ for (var prop of __getOwnPropSymbols(b)) {
19
+ if (__propIsEnum.call(b, prop))
20
+ __defNormalProp(a, prop, b[prop]);
21
+ }
22
+ return a;
23
+ };
24
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
25
+ var __objRest = (source, exclude) => {
26
+ var target = {};
27
+ for (var prop in source)
28
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
29
+ target[prop] = source[prop];
30
+ if (source != null && __getOwnPropSymbols)
31
+ for (var prop of __getOwnPropSymbols(source)) {
32
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
33
+ target[prop] = source[prop];
34
+ }
35
+ return target;
36
+ };
37
+ var __export = (target, all) => {
38
+ for (var name in all)
39
+ __defProp(target, name, { get: all[name], enumerable: true });
40
+ };
41
+ var __copyProps = (to, from, except, desc) => {
42
+ if (from && typeof from === "object" || typeof from === "function") {
43
+ for (let key of __getOwnPropNames(from))
44
+ if (!__hasOwnProp.call(to, key) && key !== except)
45
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
46
+ }
47
+ return to;
48
+ };
49
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
50
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
51
+ mod
52
+ ));
53
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
54
+
55
+ // src/components/hovering-toolbar/hovering-toolbar-components.tsx
56
+ var hovering_toolbar_components_exports = {};
57
+ __export(hovering_toolbar_components_exports, {
58
+ Button: () => Button,
59
+ Icon: () => Icon,
60
+ Menu: () => Menu,
61
+ Portal: () => Portal,
62
+ Toolbar: () => Toolbar
63
+ });
64
+ module.exports = __toCommonJS(hovering_toolbar_components_exports);
65
+ var import_css = require("@emotion/css");
66
+ var import_react = __toESM(require("react"));
67
+ var import_react_dom = __toESM(require("react-dom"));
68
+ var import_jsx_runtime = require("react/jsx-runtime");
69
+ var Button = import_react.default.forwardRef(
70
+ (_a, ref) => {
71
+ var _b = _a, {
72
+ className,
73
+ active,
74
+ reversed
75
+ } = _b, props = __objRest(_b, [
76
+ "className",
77
+ "active",
78
+ "reversed"
79
+ ]);
80
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", __spreadProps(__spreadValues({}, props), {
81
+ ref,
82
+ className: (0, import_css.cx)(
83
+ className,
84
+ import_css.css`
85
+ cursor: pointer;
86
+ color: ${reversed ? active ? "white" : "#aaa" : active ? "black" : "#ccc"};
87
+ `
88
+ )
89
+ }));
90
+ }
91
+ );
92
+ var Icon = import_react.default.forwardRef(
93
+ (_a, ref) => {
94
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
95
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", __spreadProps(__spreadValues({}, props), {
96
+ ref,
97
+ className: (0, import_css.cx)(
98
+ "material-icons",
99
+ className,
100
+ import_css.css`
101
+ font-size: 18px;
102
+ vertical-align: text-bottom;
103
+ `
104
+ )
105
+ }));
106
+ }
107
+ );
108
+ var Menu = import_react.default.forwardRef(
109
+ (_a, ref) => {
110
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
111
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", __spreadProps(__spreadValues({}, props), {
112
+ "data-test-id": "menu",
113
+ ref,
114
+ className: (0, import_css.cx)(
115
+ className,
116
+ import_css.css`
117
+ & > * {
118
+ display: inline-block;
119
+ }
120
+
121
+ & > * + * {
122
+ margin-left: 15px;
123
+ }
124
+ `
125
+ )
126
+ }));
127
+ }
128
+ );
129
+ var Portal = ({ children }) => {
130
+ return typeof document === "object" ? import_react_dom.default.createPortal(children, document.body) : null;
131
+ };
132
+ var Toolbar = import_react.default.forwardRef(
133
+ (_a, ref) => {
134
+ var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
135
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Menu, __spreadProps(__spreadValues({}, props), {
136
+ ref,
137
+ className: (0, import_css.cx)(
138
+ className,
139
+ import_css.css`
140
+ position: relative;
141
+ padding: 1px 18px 17px;
142
+ margin: 0 -20px;
143
+ border-bottom: 2px solid #eee;
144
+ margin-bottom: 20px;
145
+ `
146
+ )
147
+ }));
148
+ }
149
+ );
150
+ // Annotate the CommonJS export names for ESM import in node:
151
+ 0 && (module.exports = {
152
+ Button,
153
+ Icon,
154
+ Menu,
155
+ Portal,
156
+ Toolbar
157
+ });
158
+ //# sourceMappingURL=hovering-toolbar-components.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/components/hovering-toolbar/hovering-toolbar-components.tsx"],"sourcesContent":["import { css, cx } from \"@emotion/css\";\nimport React, { PropsWithChildren, Ref } from \"react\";\nimport ReactDOM from \"react-dom\";\n\ninterface BaseProps {\n className: string;\n [key: string]: unknown;\n}\n\nexport const Button = React.forwardRef(\n (\n {\n className,\n active,\n reversed,\n ...props\n }: PropsWithChildren<\n {\n active: boolean;\n reversed: boolean;\n } & BaseProps\n >,\n ref: Ref<HTMLSpanElement | null>\n ) => (\n <span\n {...props}\n ref={ref as Ref<HTMLSpanElement>}\n className={cx(\n className,\n css`\n cursor: pointer;\n color: ${reversed\n ? active\n ? \"white\"\n : \"#aaa\"\n : active\n ? \"black\"\n : \"#ccc\"};\n `\n )}\n />\n )\n);\n\nexport const Icon = React.forwardRef(\n (\n { className, ...props }: PropsWithChildren<BaseProps>,\n ref: Ref<HTMLSpanElement | null>\n ) => (\n <span\n {...props}\n ref={ref as Ref<HTMLSpanElement>}\n className={cx(\n \"material-icons\",\n className,\n css`\n font-size: 18px;\n vertical-align: text-bottom;\n `\n )}\n />\n )\n);\n\nexport const Menu = React.forwardRef(\n (\n { className, ...props }: PropsWithChildren<BaseProps>,\n ref: Ref<HTMLDivElement | null>\n ) => (\n <div\n {...props}\n data-test-id=\"menu\"\n ref={ref as Ref<HTMLDivElement>}\n className={cx(\n className,\n css`\n & > * {\n display: inline-block;\n }\n\n & > * + * {\n margin-left: 15px;\n }\n `\n )}\n />\n )\n);\nexport const Portal = ({ children }: { children: React.ReactNode }) => {\n return typeof document === \"object\"\n ? ReactDOM.createPortal(children, document.body)\n : null;\n};\n\nexport const Toolbar = React.forwardRef(\n (\n { className, ...props }: PropsWithChildren<BaseProps>,\n ref?: Ref<HTMLDivElement>\n ) => (\n <Menu\n {...props}\n ref={ref}\n className={cx(\n className,\n css`\n position: relative;\n padding: 1px 18px 17px;\n margin: 0 -20px;\n border-bottom: 2px solid #eee;\n margin-bottom: 20px;\n `\n )}\n />\n )\n);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAAwB;AACxB,mBAA8C;AAC9C,uBAAqB;AAsBjB;AAfG,IAAM,SAAS,aAAAA,QAAM;AAAA,EAC1B,CACE,IAWA,QACA;AAZA,iBACE;AAAA;AAAA,MACA;AAAA,MACA;AAAA,IAdN,IAWI,IAIK,kBAJL,IAIK;AAAA,MAHH;AAAA,MACA;AAAA,MACA;AAAA;AAUF,uDAAC,yCACK,QADL;AAAA,MAEC;AAAA,MACA,eAAW;AAAA,QACT;AAAA,QACA;AAAA;AAAA,mBAEW,WACL,SACE,UACA,SACF,SACA,UACA;AAAA;AAAA,MAER;AAAA,MACF;AAAA;AAEJ;AAEO,IAAM,OAAO,aAAAA,QAAM;AAAA,EACxB,CACE,IACA,QACA;AAFA,iBAAE,YA9CN,IA8CI,IAAgB,kBAAhB,IAAgB,CAAd;AAGF,uDAAC,yCACK,QADL;AAAA,MAEC;AAAA,MACA,eAAW;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA;AAAA;AAAA;AAAA,MAIF;AAAA,MACF;AAAA;AAEJ;AAEO,IAAM,OAAO,aAAAA,QAAM;AAAA,EACxB,CACE,IACA,QACA;AAFA,iBAAE,YAlEN,IAkEI,IAAgB,kBAAhB,IAAgB,CAAd;AAGF,uDAAC,wCACK,QADL;AAAA,MAEC,gBAAa;AAAA,MACb;AAAA,MACA,eAAW;AAAA,QACT;AAAA,QACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASF;AAAA,MACF;AAAA;AAEJ;AACO,IAAM,SAAS,CAAC,EAAE,SAAS,MAAqC;AACrE,SAAO,OAAO,aAAa,WACvB,iBAAAC,QAAS,aAAa,UAAU,SAAS,IAAI,IAC7C;AACN;AAEO,IAAM,UAAU,aAAAD,QAAM;AAAA,EAC3B,CACE,IACA,QACA;AAFA,iBAAE,YAhGN,IAgGI,IAAgB,kBAAhB,IAAgB,CAAd;AAGF,uDAAC,uCACK,QADL;AAAA,MAEC;AAAA,MACA,eAAW;AAAA,QACT;AAAA,QACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOF;AAAA,MACF;AAAA;AAEJ;","names":["React","ReactDOM"]}