@sanity/agent-directives 0.0.5 → 0.0.7

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.d.ts","names":["CallableInstance","Parameters","Result","property","parameters","unified5","trough0","vfile1","___index_js2","CallableInstance","Processor","Key","Parameters_1","Input","Output","ParseTree","HeadTree","TailTree","CompileTree","CompileResult","unist26","Node","CompileResults","Compiler","Parser","Plugin","Array","Data","Pipeline","Compatible","VFileWithOutput","ProcessCallback","Promise","RunCallback","Value","Preset","PluggableList","UsePlugin","constructor","attachers","plugin","parameters","compiler","freezeIndex","frozen","namespace","parser","transformers","copy","data","dataset","key","value","freeze","parse","file","process","done","processSync","run","tree","runSync","stringify","use","preset","list","unified","CompileResultMap","Settings","Tree","Result","VFile","document","Pluggable","PluginTuple","PluginParameters","Transformer","this","TupleParameters","plugins","settings","File","Error","error","TransformCallback","next","result","Value","CompileResults","Compiler","Parser","Pluggable","PluggableList","Plugin","PluginTuple","Preset","ProcessCallback","Processor","RunCallback","TransformCallback","Transformer","unified","emptyObjectSymbol","CompileResultMap","Uint8Array","string","Data","Settings","settings"],"sources":["../../../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/callable-instance.d.ts","../../../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/index.d.ts","../../../../node_modules/.pnpm/unified@11.0.5/node_modules/unified/index.d.ts","../../src/lib/react.tsx"],"x_google_ignoreList":[0,1,2],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ import { pascalCase } from "es-toolkit";
2
+ import { directiveFromMarkdown, directiveToMarkdown } from "mdast-util-directive";
3
+ import { directive } from "micromark-extension-directive";
4
+ import { visit } from "unist-util-visit";
5
+ import { DirectiveSchemas } from "../index.js";
6
+ const DIRECTIVE_TYPES = ["textDirective", "leafDirective", "containerDirective"], isDirectiveNode = (node) => "name" in node && typeof node.name == "string" && /^[a-zA-Z-]+$/.test(node.name) && DIRECTIVE_TYPES.includes(node.type), isListItemWithOnlyDirective = (node) => {
7
+ if (node.type !== "listItem") return !1;
8
+ const children = node.children || [];
9
+ return children.length === 1 && children[0].type === "leafDirective";
10
+ };
11
+ function remarkDirectivesTransform() {
12
+ return (tree) => {
13
+ visit(
14
+ tree,
15
+ DIRECTIVE_TYPES,
16
+ (node, index, parent) => {
17
+ if (!isDirectiveNode(node)) {
18
+ const parentNode = parent;
19
+ if (parentNode?.children && typeof index == "number") {
20
+ const nodeName = "name" in node ? String(node.name) : "";
21
+ parentNode.children[index] = {
22
+ type: "text",
23
+ name: "",
24
+ value: `:${nodeName}`
25
+ };
26
+ }
27
+ }
28
+ }
29
+ ), visit(
30
+ tree,
31
+ "list",
32
+ (node, index, parent) => {
33
+ const listNode = node;
34
+ if (!listNode.children) return;
35
+ const transformed = [];
36
+ let hasTransformed = !1;
37
+ for (const child of listNode.children)
38
+ isListItemWithOnlyDirective(child) && child.children?.[0] ? (transformed.push(child.children[0]), hasTransformed = !0) : transformed.push(child);
39
+ const parentNode = parent;
40
+ if (hasTransformed && transformed.every((n) => isDirectiveNode(n)) && parentNode?.children && typeof index == "number")
41
+ return parentNode.children.splice(index, 1, ...transformed), index + transformed.length;
42
+ }
43
+ ), visit(tree, (node) => {
44
+ const dirNode = node;
45
+ if (!dirNode.children?.length || dirNode.data?.hName === "DirectivesStack") return;
46
+ const newChildren = [];
47
+ let group = [];
48
+ for (const child of dirNode.children)
49
+ isDirectiveNode(child) && child.type === "leafDirective" ? group.push(child) : (group.length > 0 && (newChildren.push({
50
+ type: "leafDirective",
51
+ name: "DirectivesStack",
52
+ data: { hName: "DirectivesStack" },
53
+ children: group
54
+ }), group = []), newChildren.push(child));
55
+ group.length > 0 && newChildren.push({
56
+ type: "leafDirective",
57
+ name: "DirectivesStack",
58
+ data: { hName: "DirectivesStack" },
59
+ children: group
60
+ }), dirNode.children = newChildren;
61
+ }), visit(tree, "text", (node) => {
62
+ const textNode = node;
63
+ typeof textNode.value == "string" && textNode.value.match(/::?\w+[{[]/) && !textNode.value.match(/::?\w+[{[].+[}\]]/) && (textNode.value = "");
64
+ }), visit(tree, DIRECTIVE_TYPES, (node) => {
65
+ isDirectiveNode(node) && (node.data = node.data || {}, node.data.hName = pascalCase(node.name), node.data.hProperties = {
66
+ ...node.attributes,
67
+ isInline: node.type === "textDirective"
68
+ });
69
+ });
70
+ };
71
+ }
72
+ function remarkAgentDirectives() {
73
+ const data = this.data();
74
+ return data.micromarkExtensions || (data.micromarkExtensions = []), data.fromMarkdownExtensions || (data.fromMarkdownExtensions = []), data.toMarkdownExtensions || (data.toMarkdownExtensions = []), data.micromarkExtensions.push(directive()), data.fromMarkdownExtensions.push(directiveFromMarkdown()), data.toMarkdownExtensions.push(directiveToMarkdown()), remarkDirectivesTransform();
75
+ }
76
+ function createDirectiveKit(options = {}) {
77
+ const { useApplication } = options;
78
+ function defineDirective(name, render, directiveOptions = {}) {
79
+ const requiresContext = directiveOptions.requiresContext ?? directiveOptions.requiresApplication ?? !0;
80
+ function Directive(props) {
81
+ const { node, source, ...rest } = props, application = useApplication?.(source);
82
+ if (requiresContext && useApplication && !application) return null;
83
+ const merged = { ...node?.properties ?? {}, ...rest }, result = DirectiveSchemas[name].safeParse(merged);
84
+ if (!result.success)
85
+ return console.error(`Directive "${name}" validation error:`, result.error.format()), null;
86
+ const renderProps = {
87
+ ...result.data,
88
+ ...requiresContext && useApplication ? { application } : {}
89
+ };
90
+ return render(renderProps);
91
+ }
92
+ return Directive.displayName = `Directive(${name})`, Directive;
93
+ }
94
+ return { defineDirective };
95
+ }
96
+ export {
97
+ createDirectiveKit,
98
+ remarkAgentDirectives
99
+ };
100
+ //# sourceMappingURL=react.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"react.js","sources":["../../src/lib/react.tsx"],"sourcesContent":["import { pascalCase } from 'es-toolkit'\nimport { directiveFromMarkdown, directiveToMarkdown } from 'mdast-util-directive'\nimport { directive } from 'micromark-extension-directive'\nimport type { ComponentType, ReactNode } from 'react'\nimport type { Processor } from 'unified'\nimport type { Node } from 'unist'\nimport { visit } from 'unist-util-visit'\nimport {\n type DefineDirectiveOptions,\n type DirectiveName,\n type DirectivePropsMap,\n DirectiveSchemas,\n} from '../_internal'\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype DirectiveProps<T extends DirectiveName> = DirectivePropsMap[T]\n\nexport interface NodeProps {\n node?: { properties?: Record<string, unknown> }\n}\n\nexport type DirectiveRenderProps<\n TName extends DirectiveName,\n TApplication = undefined,\n TRequiresApplication extends boolean = true,\n> = DirectiveProps<TName> &\n (TRequiresApplication extends true\n ? TApplication extends undefined\n ? {}\n : { application: TApplication }\n : {})\n\nexport type { DefineDirectiveOptions }\n\nexport type DirectiveComponentProps<TName extends DirectiveName> = DirectiveProps<TName> & {\n source?: string\n} & NodeProps\n\n// ============================================================================\n// Remark Plugin Types\n// ============================================================================\n\ninterface DirectiveNode extends Node {\n type: 'textDirective' | 'leafDirective' | 'containerDirective'\n name: string\n attributes?: Record<string, string>\n children?: DirectiveNode[]\n value?: string\n data?: {\n hName?: string\n hProperties?: Record<string, unknown>\n }\n}\n\ntype DirectiveType = 'textDirective' | 'leafDirective' | 'containerDirective'\n\nconst DIRECTIVE_TYPES: DirectiveType[] = ['textDirective', 'leafDirective', 'containerDirective']\n\nconst isDirectiveNode = (node: Node): node is DirectiveNode =>\n 'name' in node &&\n typeof (node as DirectiveNode).name === 'string' &&\n /^[a-zA-Z-]+$/.test((node as DirectiveNode).name) &&\n DIRECTIVE_TYPES.includes(node.type as DirectiveType)\n\nconst isListItemWithOnlyDirective = (node: Node): boolean => {\n if (node.type !== 'listItem') return false\n const children = (node as DirectiveNode).children || []\n return children.length === 1 && children[0].type === 'leafDirective'\n}\n\n// ============================================================================\n// Remark Plugin\n// ============================================================================\n\n/**\n * Remark plugin that transforms directive syntax into React components.\n *\n * - Validates directive names (letters and hyphens only)\n * - Extracts directives from list items\n * - Groups consecutive leaf directives into DirectivesStack wrappers\n * - Filters incomplete streaming directives\n * - Converts directive names to PascalCase component names\n */\nfunction remarkDirectivesTransform() {\n return (tree: Node) => {\n // Remove invalid directive nodes (e.g., \":02\" in \"14:02\")\n visit(\n tree,\n DIRECTIVE_TYPES,\n (node: Node, index: number | undefined, parent: Node | undefined) => {\n if (!isDirectiveNode(node)) {\n const parentNode = parent as DirectiveNode | undefined\n if (parentNode?.children && typeof index === 'number') {\n const nodeName = 'name' in node ? String((node as DirectiveNode).name) : ''\n parentNode.children[index] = {\n type: 'text' as DirectiveType,\n name: '',\n value: `:${nodeName}`,\n } as DirectiveNode\n }\n }\n },\n )\n\n // Extract directives from list items\n visit(\n tree,\n 'list',\n (node: Node, index: number | undefined, parent: Node | undefined): number | undefined => {\n const listNode = node as DirectiveNode\n if (!listNode.children) return undefined\n\n const transformed: DirectiveNode[] = []\n let hasTransformed = false\n\n for (const child of listNode.children) {\n if (isListItemWithOnlyDirective(child) && child.children?.[0]) {\n transformed.push(child.children[0])\n hasTransformed = true\n } else {\n transformed.push(child)\n }\n }\n\n const parentNode = parent as DirectiveNode | undefined\n if (hasTransformed && transformed.every((n) => isDirectiveNode(n))) {\n if (parentNode?.children && typeof index === 'number') {\n parentNode.children.splice(index, 1, ...transformed)\n return index + transformed.length\n }\n }\n return undefined\n },\n )\n\n // Group consecutive leaf directives into DirectivesStack\n visit(tree, (node: Node) => {\n const dirNode = node as DirectiveNode\n if (!dirNode.children?.length || dirNode.data?.hName === 'DirectivesStack') return\n\n const newChildren: DirectiveNode[] = []\n let group: DirectiveNode[] = []\n\n for (const child of dirNode.children) {\n if (isDirectiveNode(child) && child.type === 'leafDirective') {\n group.push(child)\n } else {\n if (group.length > 0) {\n newChildren.push({\n type: 'leafDirective',\n name: 'DirectivesStack',\n data: { hName: 'DirectivesStack' },\n children: group,\n })\n group = []\n }\n newChildren.push(child)\n }\n }\n\n if (group.length > 0) {\n newChildren.push({\n type: 'leafDirective',\n name: 'DirectivesStack',\n data: { hName: 'DirectivesStack' },\n children: group,\n })\n }\n\n dirNode.children = newChildren\n })\n\n // Filter incomplete streaming directives\n visit(tree, 'text', (node: Node) => {\n const textNode = node as DirectiveNode\n if (typeof textNode.value === 'string') {\n if (textNode.value.match(/::?\\w+[{[]/) && !textNode.value.match(/::?\\w+[{[].+[}\\]]/)) {\n textNode.value = ''\n }\n }\n })\n\n // Transform directives to React components\n visit(tree, DIRECTIVE_TYPES, (node: Node) => {\n if (!isDirectiveNode(node)) return\n\n node.data = node.data || {}\n node.data.hName = pascalCase(node.name)\n node.data.hProperties = {\n ...node.attributes,\n isInline: node.type === 'textDirective',\n }\n })\n }\n}\n\ninterface RemarkData {\n micromarkExtensions?: unknown[]\n fromMarkdownExtensions?: unknown[]\n toMarkdownExtensions?: unknown[]\n}\n\n/**\n * Remark plugin for agent directive support.\n * Parses and transforms directive syntax into React components.\n *\n * @example\n * ```tsx\n * import { remarkAgentDirectives } from '@sanity/agent-directives/react'\n *\n * <ReactMarkdown remarkPlugins={[remarkAgentDirectives]}>\n * {content}\n * </ReactMarkdown>\n * ```\n */\nexport function remarkAgentDirectives(this: Processor) {\n const data = this.data() as RemarkData\n\n if (!data.micromarkExtensions) data.micromarkExtensions = []\n if (!data.fromMarkdownExtensions) data.fromMarkdownExtensions = []\n if (!data.toMarkdownExtensions) data.toMarkdownExtensions = []\n\n data.micromarkExtensions.push(directive())\n data.fromMarkdownExtensions.push(directiveFromMarkdown())\n data.toMarkdownExtensions.push(directiveToMarkdown())\n\n return remarkDirectivesTransform()\n}\n\n// ============================================================================\n// Directive Kit\n// ============================================================================\n\nexport interface DirectiveKitOptions<TApplication> {\n useApplication?: (source: string | undefined) => TApplication | undefined\n}\n\n/**\n * Creates a directive kit with application injection.\n *\n * @example\n * ```tsx\n * // kit.ts\n * export const { defineDirective } = createDirectiveKit<Application>({\n * useApplication: (source) => useThreadApplication(source),\n * })\n *\n * // Document.tsx\n * export const DocumentDirective = defineDirective('document', ({ id, application }) => {\n * return <DocumentCard id={id} app={application} />\n * })\n * ```\n */\nexport function createDirectiveKit<TApplication = undefined>(\n options: DirectiveKitOptions<TApplication> = {},\n) {\n const { useApplication } = options\n\n function defineDirective<\n TName extends DirectiveName,\n TRequiresApplication extends boolean = true,\n >(\n name: TName,\n render: (props: DirectiveRenderProps<TName, TApplication, TRequiresApplication>) => ReactNode,\n directiveOptions: DefineDirectiveOptions = {},\n ): ComponentType<DirectiveComponentProps<TName>> {\n const requiresContext =\n directiveOptions.requiresContext ?? directiveOptions.requiresApplication ?? true\n\n function Directive(props: DirectiveComponentProps<TName>): ReactNode {\n const { node, source, ...rest } = props\n\n const application = useApplication?.(source)\n if (requiresContext && useApplication && !application) return null\n\n const merged = { ...(node?.properties ?? {}), ...rest }\n\n const schema = DirectiveSchemas[name]\n const result = schema.safeParse(merged)\n if (!result.success) {\n console.error(`Directive \"${name}\" validation error:`, result.error.format())\n return null\n }\n\n const renderProps = {\n ...(result.data as DirectiveProps<TName>),\n ...(requiresContext && useApplication ? { application } : {}),\n } as DirectiveRenderProps<TName, TApplication, TRequiresApplication>\n\n return render(renderProps)\n }\n\n Directive.displayName = `Directive(${name})`\n return Directive\n }\n\n return { defineDirective }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { a as DirectiveName, i as DefineDirectiveOptions, o as DirectivePropsMap } from "../_chunks-dts/index.js";
2
+ import { Root } from "mdast";
3
+ type DirectiveProps<T extends DirectiveName> = DirectivePropsMap[T];
4
+ interface DirectiveNode {
5
+ type: 'textDirective' | 'leafDirective' | 'containerDirective';
6
+ name: string;
7
+ attributes?: Record<string, string | null | undefined>;
8
+ children?: unknown[];
9
+ }
10
+ interface DirectiveRenderProps<TName extends DirectiveName, TContext> {
11
+ props: DirectiveProps<TName>;
12
+ context: TContext;
13
+ children: string;
14
+ isInline: boolean;
15
+ }
16
+ type DirectiveRenderFn<TName extends DirectiveName, TContext, TOutput> = (args: DirectiveRenderProps<TName, TContext>) => TOutput | null | Promise<TOutput | null>;
17
+ interface RegisteredDirective<TContext, TOutput> {
18
+ name: DirectiveName;
19
+ render: DirectiveRenderFn<DirectiveName, TContext, TOutput>;
20
+ options: DefineDirectiveOptions;
21
+ }
22
+ type DirectiveRegistry<TContext, TOutput> = Record<string, RegisteredDirective<TContext, TOutput>>;
23
+ /**
24
+ * Creates a directive kit for server-side rendering.
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * // kit.ts
29
+ * export const { defineDirective, renderDirective } = createDirectiveKit<
30
+ * SlackContext,
31
+ * SlackOutput
32
+ * >()
33
+ *
34
+ * // document.ts
35
+ * defineDirective('document', async ({ props, context }) => {
36
+ * const doc = await fetchDocument(props.id, context.accessToken)
37
+ * return { blocks: [linkButton(doc.title, url)] }
38
+ * })
39
+ * ```
40
+ */
41
+ declare function createDirectiveKit<TContext, TOutput>(): {
42
+ defineDirective: <TName extends DirectiveName>(name: TName, render: DirectiveRenderFn<TName, TContext, TOutput>, options?: DefineDirectiveOptions) => RegisteredDirective<TContext, TOutput>;
43
+ renderDirective: (node: DirectiveNode, context: TContext) => Promise<TOutput | null>;
44
+ registry: DirectiveRegistry<TContext, TOutput>;
45
+ };
46
+ interface DirectiveRenderResult<TBlock = unknown> {
47
+ text?: string;
48
+ blocks?: TBlock[];
49
+ }
50
+ type DirectiveOutput<TBlock = unknown> = string | DirectiveRenderResult<TBlock> | null;
51
+ declare function normalizeOutput<TBlock>(output: DirectiveOutput<TBlock>): DirectiveRenderResult<TBlock> | null;
52
+ interface BlockCollector<TBlock = unknown> {
53
+ blocks: TBlock[];
54
+ }
55
+ type RenderFn<TContext, TOutput> = (node: DirectiveNode, context: TContext) => Promise<TOutput | null>;
56
+ /**
57
+ * Creates a remark plugin that renders directives and collects output blocks.
58
+ *
59
+ * @example
60
+ * ```ts
61
+ * const remarkRenderDirectives = createRemarkRenderer<SlackContext, SlackBlock>(renderDirective)
62
+ *
63
+ * unified()
64
+ * .use(remarkParse)
65
+ * .use(remarkDirective)
66
+ * .use(remarkRenderDirectives, context, collector)
67
+ * .use(remarkStringify)
68
+ * ```
69
+ */
70
+ declare function createRemarkRenderer<TContext, TBlock>(renderDirective: RenderFn<TContext, DirectiveRenderResult<TBlock> | null>): (context: TContext, collector: BlockCollector<TBlock>) => (tree: Root) => Promise<void>;
71
+ export { BlockCollector, type DefineDirectiveOptions, type DirectiveName, DirectiveNode, DirectiveOutput, DirectiveRenderFn, DirectiveRenderProps, DirectiveRenderResult, RegisteredDirective, createDirectiveKit, createRemarkRenderer, normalizeOutput };
72
+ //# sourceMappingURL=string.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.d.ts","names":[],"sources":["../../src/lib/string.ts"],"mappings":";;KAgBK,cAAA,WAAyB,aAAA,IAAiB,iBAAA,CAAkB,CAAA;AAAA,UAEhD,aAAA;EACf,IAAA;EACA,IAAA;EACA,UAAA,GAAa,MAAA;EACb,QAAA;AAAA;AAAA,UAGe,oBAAA,eAAmC,aAAA;EAClD,KAAA,EAAO,cAAA,CAAe,KAAA;EACtB,OAAA,EAAS,QAAA;EACT,QAAA;EACA,QAAA;AAAA;AAAA,KAGU,iBAAA,eAAgC,aAAA,wBAC1C,IAAA,EAAM,oBAAA,CAAqB,KAAA,EAAO,QAAA,MAC/B,OAAA,UAAiB,OAAA,CAAQ,OAAA;AAAA,UAQb,mBAAA;EACf,IAAA,EAAM,aAAA;EACN,MAAA,EAAQ,iBAAA,CAAkB,aAAA,EAAe,QAAA,EAAU,OAAA;EACnD,OAAA,EAAS,sBAAA;AAAA;AAAA,KAGN,iBAAA,sBAAuC,MAAA,SAAe,mBAAA,CAAoB,QAAA,EAAU,OAAA;;;;;AAvBzF;;;;;;;;;;;;;;iBA8DgB,kBAAA,mBAAA,CAAA;kCAGyB,aAAA,EAAa,IAAA,EAC5C,KAAA,EAAK,MAAA,EACH,iBAAA,CAAkB,KAAA,EAAO,QAAA,EAAU,OAAA,GAAQ,OAAA,GAC1C,sBAAA,KAAsB,mBAAA,CAAA,QAAA,EAAA,OAAA;0BAWI,aAAA,EAAa,OAAA,EAAW,QAAA,KAAW,OAAA,CAAQ,OAAA;;;UA4BjE,qBAAA;EACf,IAAA;EACA,MAAA,GAAS,MAAA;AAAA;AAAA,KAGC,eAAA,8BAA6C,qBAAA,CAAsB,MAAA;AAAA,iBAE/D,eAAA,QAAA,CACd,MAAA,EAAQ,eAAA,CAAgB,MAAA,IACvB,qBAAA,CAAsB,MAAA;AAAA,UA8BR,cAAA;EACf,MAAA,EAAQ,MAAA;AAAA;AAAA,KAGL,QAAA,uBACH,IAAA,EAAM,aAAA,EACN,OAAA,EAAS,QAAA,KACN,OAAA,CAAQ,OAAA;;;;;;;;;;;;;;;iBAgBG,oBAAA,kBAAA,CACd,eAAA,EAAiB,QAAA,CAAS,QAAA,EAAU,qBAAA,CAAsB,MAAA,aAEnB,OAAA,EAAS,QAAA,EAAU,SAAA,EAAW,cAAA,CAAe,MAAA,OACpE,IAAA,EAAM,IAAA,KAAO,OAAA"}
@@ -0,0 +1,80 @@
1
+ import { visit } from "unist-util-visit";
2
+ import { DirectiveSchemas } from "../index.js";
3
+ function extractChildren(node) {
4
+ if (!node.children || !Array.isArray(node.children))
5
+ return "";
6
+ function extractText(n) {
7
+ return !n || typeof n != "object" ? "" : "type" in n && n.type === "text" && "value" in n && typeof n.value == "string" ? n.value : "children" in n && Array.isArray(n.children) ? n.children.map(extractText).join("") : "";
8
+ }
9
+ return node.children.map(extractText).join("");
10
+ }
11
+ function createDirectiveKit() {
12
+ const registry = {};
13
+ function defineDirective(name, render, options = {}) {
14
+ const directive = {
15
+ name,
16
+ render,
17
+ options
18
+ };
19
+ return registry[name] = directive, directive;
20
+ }
21
+ async function renderDirective(node, context) {
22
+ const directive = registry[node.name];
23
+ if (!directive) return null;
24
+ const schema = DirectiveSchemas[node.name];
25
+ if (!schema) return null;
26
+ const result = schema.safeParse(node.attributes ?? {});
27
+ return result.success ? directive.render({
28
+ props: result.data,
29
+ context,
30
+ children: extractChildren(node),
31
+ isInline: node.type === "textDirective"
32
+ }) : (console.error(`Directive "${node.name}" validation error:`, result.error.format()), null);
33
+ }
34
+ return { defineDirective, renderDirective, registry };
35
+ }
36
+ function normalizeOutput(output) {
37
+ return output === null ? null : typeof output == "string" ? { text: output } : output;
38
+ }
39
+ const DIRECTIVE_TYPES = ["textDirective", "leafDirective", "containerDirective"];
40
+ function isDirectiveNode(node) {
41
+ return typeof node == "object" && node !== null && "type" in node && typeof node.type == "string" && DIRECTIVE_TYPES.includes(node.type) && "name" in node && typeof node.name == "string";
42
+ }
43
+ function createRemarkRenderer(renderDirective) {
44
+ return function(context, collector) {
45
+ return async (tree) => {
46
+ const locations = [];
47
+ visit(tree, DIRECTIVE_TYPES, (node, index, parent) => {
48
+ isDirectiveNode(node) && (!parent || typeof index != "number" || locations.push({ node, index, parent }));
49
+ });
50
+ const replacements = await Promise.all(
51
+ locations.map(async (loc) => ({
52
+ ...loc,
53
+ output: normalizeOutput(await renderDirective(loc.node, context))
54
+ }))
55
+ );
56
+ for (let i = replacements.length - 1; i >= 0; i--) {
57
+ const { node, index, parent, output } = replacements[i];
58
+ if (output?.blocks && collector.blocks.unshift(...output.blocks), output?.text) {
59
+ parent.children.splice(index, 1, {
60
+ type: "paragraph",
61
+ children: [{ type: "text", value: output.text }]
62
+ });
63
+ continue;
64
+ }
65
+ if (node.type === "containerDirective" && node.children && node.children.length > 0) {
66
+ const containerNode = node;
67
+ parent.children.splice(index, 1, ...containerNode.children);
68
+ continue;
69
+ }
70
+ parent.children.splice(index, 1);
71
+ }
72
+ };
73
+ };
74
+ }
75
+ export {
76
+ createDirectiveKit,
77
+ createRemarkRenderer,
78
+ normalizeOutput
79
+ };
80
+ //# sourceMappingURL=string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string.js","sources":["../../src/lib/string.ts"],"sourcesContent":["import type { Parent, Root, RootContent } from 'mdast'\nimport type { ContainerDirective } from 'mdast-util-directive'\nimport { visit } from 'unist-util-visit'\nimport {\n type DefineDirectiveOptions,\n type DirectiveName,\n type DirectivePropsMap,\n DirectiveSchemas,\n} from '../_internal'\n\nexport type { DirectiveName }\n\n// ============================================================================\n// Types\n// ============================================================================\n\ntype DirectiveProps<T extends DirectiveName> = DirectivePropsMap[T]\n\nexport interface DirectiveNode {\n type: 'textDirective' | 'leafDirective' | 'containerDirective'\n name: string\n attributes?: Record<string, string | null | undefined>\n children?: unknown[]\n}\n\nexport interface DirectiveRenderProps<TName extends DirectiveName, TContext> {\n props: DirectiveProps<TName>\n context: TContext\n children: string\n isInline: boolean\n}\n\nexport type DirectiveRenderFn<TName extends DirectiveName, TContext, TOutput> = (\n args: DirectiveRenderProps<TName, TContext>,\n) => TOutput | null | Promise<TOutput | null>\n\nexport type { DefineDirectiveOptions }\n\n// ============================================================================\n// Directive Kit\n// ============================================================================\n\nexport interface RegisteredDirective<TContext, TOutput> {\n name: DirectiveName\n render: DirectiveRenderFn<DirectiveName, TContext, TOutput>\n options: DefineDirectiveOptions\n}\n\ntype DirectiveRegistry<TContext, TOutput> = Record<string, RegisteredDirective<TContext, TOutput>>\n\nfunction extractChildren(node: DirectiveNode): string {\n if (!node.children || !Array.isArray(node.children)) {\n return ''\n }\n\n function extractText(n: unknown): string {\n if (!n || typeof n !== 'object') return ''\n if ('type' in n && n.type === 'text' && 'value' in n && typeof n.value === 'string') {\n return n.value\n }\n if ('children' in n && Array.isArray(n.children)) {\n return n.children.map(extractText).join('')\n }\n return ''\n }\n\n return node.children.map(extractText).join('')\n}\n\n/**\n * Creates a directive kit for server-side rendering.\n *\n * @example\n * ```ts\n * // kit.ts\n * export const { defineDirective, renderDirective } = createDirectiveKit<\n * SlackContext,\n * SlackOutput\n * >()\n *\n * // document.ts\n * defineDirective('document', async ({ props, context }) => {\n * const doc = await fetchDocument(props.id, context.accessToken)\n * return { blocks: [linkButton(doc.title, url)] }\n * })\n * ```\n */\nexport function createDirectiveKit<TContext, TOutput>() {\n const registry: DirectiveRegistry<TContext, TOutput> = {}\n\n function defineDirective<TName extends DirectiveName>(\n name: TName,\n render: DirectiveRenderFn<TName, TContext, TOutput>,\n options: DefineDirectiveOptions = {},\n ) {\n const directive: RegisteredDirective<TContext, TOutput> = {\n name,\n render: render as DirectiveRenderFn<DirectiveName, TContext, TOutput>,\n options,\n }\n registry[name] = directive\n return directive\n }\n\n async function renderDirective(node: DirectiveNode, context: TContext): Promise<TOutput | null> {\n const directive = registry[node.name]\n if (!directive) return null\n\n const schema = DirectiveSchemas[node.name as DirectiveName]\n if (!schema) return null\n\n const result = schema.safeParse(node.attributes ?? {})\n if (!result.success) {\n console.error(`Directive \"${node.name}\" validation error:`, result.error.format())\n return null\n }\n\n return directive.render({\n props: result.data as DirectiveProps<DirectiveName>,\n context,\n children: extractChildren(node),\n isInline: node.type === 'textDirective',\n })\n }\n\n return { defineDirective, renderDirective, registry }\n}\n\n// ============================================================================\n// Output Utilities\n// ============================================================================\n\nexport interface DirectiveRenderResult<TBlock = unknown> {\n text?: string\n blocks?: TBlock[]\n}\n\nexport type DirectiveOutput<TBlock = unknown> = string | DirectiveRenderResult<TBlock> | null\n\nexport function normalizeOutput<TBlock>(\n output: DirectiveOutput<TBlock>,\n): DirectiveRenderResult<TBlock> | null {\n if (output === null) return null\n if (typeof output === 'string') return { text: output }\n return output\n}\n\n// ============================================================================\n// Remark Plugin\n// ============================================================================\n\nconst DIRECTIVE_TYPES = ['textDirective', 'leafDirective', 'containerDirective'] as const\n\nfunction isDirectiveNode(node: unknown): node is DirectiveNode {\n return (\n typeof node === 'object' &&\n node !== null &&\n 'type' in node &&\n typeof node.type === 'string' &&\n DIRECTIVE_TYPES.includes(node.type as (typeof DIRECTIVE_TYPES)[number]) &&\n 'name' in node &&\n typeof node.name === 'string'\n )\n}\n\ninterface DirectiveLocation {\n node: DirectiveNode\n index: number\n parent: Parent\n}\n\nexport interface BlockCollector<TBlock = unknown> {\n blocks: TBlock[]\n}\n\ntype RenderFn<TContext, TOutput> = (\n node: DirectiveNode,\n context: TContext,\n) => Promise<TOutput | null>\n\n/**\n * Creates a remark plugin that renders directives and collects output blocks.\n *\n * @example\n * ```ts\n * const remarkRenderDirectives = createRemarkRenderer<SlackContext, SlackBlock>(renderDirective)\n *\n * unified()\n * .use(remarkParse)\n * .use(remarkDirective)\n * .use(remarkRenderDirectives, context, collector)\n * .use(remarkStringify)\n * ```\n */\nexport function createRemarkRenderer<TContext, TBlock>(\n renderDirective: RenderFn<TContext, DirectiveRenderResult<TBlock> | null>,\n) {\n return function remarkRenderDirectives(context: TContext, collector: BlockCollector<TBlock>) {\n return async (tree: Root): Promise<void> => {\n const locations: DirectiveLocation[] = []\n\n visit(tree, DIRECTIVE_TYPES, (node, index, parent) => {\n if (!isDirectiveNode(node)) return\n if (!parent || typeof index !== 'number') return\n locations.push({ node, index, parent })\n })\n\n const replacements = await Promise.all(\n locations.map(async (loc) => ({\n ...loc,\n output: normalizeOutput(await renderDirective(loc.node, context)),\n })),\n )\n\n for (let i = replacements.length - 1; i >= 0; i--) {\n const { node, index, parent, output } = replacements[i]\n\n if (output?.blocks) {\n collector.blocks.unshift(...output.blocks)\n }\n\n if (output?.text) {\n parent.children.splice(index, 1, {\n type: 'paragraph',\n children: [{ type: 'text', value: output.text }],\n } as RootContent)\n continue\n }\n\n if (node.type === 'containerDirective' && node.children && node.children.length > 0) {\n const containerNode = node as unknown as ContainerDirective\n parent.children.splice(index, 1, ...(containerNode.children as RootContent[]))\n continue\n }\n\n parent.children.splice(index, 1)\n }\n }\n }\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanity/agent-directives",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "description": "Shared directive system for Sanity Agent",
5
5
  "keywords": [
6
6
  "sanity",
@@ -16,34 +16,23 @@
16
16
  "type": "module",
17
17
  "exports": {
18
18
  ".": {
19
- "import": "./dist/index.js",
20
- "types": "./dist/index.d.ts"
19
+ "default": "./dist/index.js"
21
20
  },
22
21
  "./formatters": {
23
- "import": "./dist/formatters.js",
24
- "types": "./dist/formatters.d.ts"
22
+ "default": "./dist/lib/formatters.js"
25
23
  },
26
24
  "./react": {
27
- "import": "./dist/react.js",
28
- "types": "./dist/react.d.ts"
25
+ "default": "./dist/lib/react.js"
29
26
  },
30
27
  "./string": {
31
- "import": "./dist/string.js",
32
- "types": "./dist/string.d.ts"
33
- }
28
+ "default": "./dist/lib/string.js"
29
+ },
30
+ "./package.json": "./package.json"
34
31
  },
35
- "main": "./dist/index.js",
36
32
  "types": "./dist/index.d.ts",
37
33
  "files": [
38
- "dist/**/*"
34
+ "dist"
39
35
  ],
40
- "scripts": {
41
- "build": "tsc -p tsconfig.json",
42
- "clean": "rm -rf dist",
43
- "test": "vitest run",
44
- "test:watch": "vitest",
45
- "prepublishOnly": "npm run clean && npm run build"
46
- },
47
36
  "dependencies": {
48
37
  "es-toolkit": "^1.32.0",
49
38
  "mdast-util-directive": "^3.0.0",
@@ -52,17 +41,21 @@
52
41
  "zod": "^3.25.76"
53
42
  },
54
43
  "devDependencies": {
44
+ "@sanity/pkg-utils": "^10.4.1",
55
45
  "@testing-library/jest-dom": "^6.6.3",
56
46
  "@testing-library/react": "^16.0.0",
47
+ "@types/mdast": "^4.0.4",
57
48
  "@types/react": "^19.0.0",
58
49
  "@types/unist": "^3.0.0",
59
- "unified": "^11.0.0",
60
50
  "jsdom": "^26.0.0",
61
51
  "react": "^19.0.0",
62
52
  "react-dom": "^19.0.0",
63
53
  "react-markdown": "^10.0.0",
64
- "typescript": "^5.3.3",
65
- "vitest": "^3.0.9"
54
+ "typescript": "^5.9.3",
55
+ "unified": "^11.0.0",
56
+ "vitest": "^4.0.18",
57
+ "@repo/package.config": "0.0.0",
58
+ "@repo/tsconfig": "0.0.0"
66
59
  },
67
60
  "peerDependencies": {
68
61
  "react": "^18.0.0 || ^19.0.0"
@@ -72,10 +65,16 @@
72
65
  "optional": true
73
66
  }
74
67
  },
68
+ "publishConfig": {
69
+ "access": "public"
70
+ },
75
71
  "engines": {
76
72
  "node": ">=18.0.0"
77
73
  },
78
- "publishConfig": {
79
- "access": "restricted"
74
+ "scripts": {
75
+ "build": "pkg build --strict --check --clean",
76
+ "clean": "rm -rf dist",
77
+ "test": "vitest run",
78
+ "test:watch": "vitest"
80
79
  }
81
- }
80
+ }
@@ -1,8 +0,0 @@
1
- import { type ChangesDirectiveProps, type DirectiveName, type DocumentDirectiveProps, type ReleaseDirectiveProps, type ResourceDirectiveProps, type SetDirectiveProps } from './schemas.js';
2
- export declare function formatDirective(name: DirectiveName, props: Record<string, unknown>): string;
3
- export declare function createDocumentDirective(props: DocumentDirectiveProps): string;
4
- export declare function createReleaseDirective(props: ReleaseDirectiveProps): string;
5
- export declare function createResourceDirective(props: ResourceDirectiveProps): string;
6
- export declare function createSetDirective(props: SetDirectiveProps): string;
7
- export declare function createChangesDirective(props: ChangesDirectiveProps): string;
8
- //# sourceMappingURL=formatters.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAE1B,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAA;AASrB,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAG3F;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAE7E;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAE3E;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CAE7E;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,CAEnE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAE3E"}
@@ -1,27 +0,0 @@
1
- import { DIRECTIVE_NAMES, } from './schemas.js';
2
- function buildAttributes(params) {
3
- return Object.entries(params)
4
- .filter(([, value]) => value !== undefined && value !== null)
5
- .map(([key, value]) => `${key}="${value}"`)
6
- .join(' ');
7
- }
8
- export function formatDirective(name, props) {
9
- const attrs = buildAttributes(props);
10
- return attrs ? `::${name}{${attrs}}` : `::${name}`;
11
- }
12
- export function createDocumentDirective(props) {
13
- return formatDirective(DIRECTIVE_NAMES.document, props);
14
- }
15
- export function createReleaseDirective(props) {
16
- return formatDirective(DIRECTIVE_NAMES.release, props);
17
- }
18
- export function createResourceDirective(props) {
19
- return formatDirective(DIRECTIVE_NAMES.resource, props);
20
- }
21
- export function createSetDirective(props) {
22
- return formatDirective(DIRECTIVE_NAMES.set, props);
23
- }
24
- export function createChangesDirective(props) {
25
- return formatDirective(DIRECTIVE_NAMES.changes, props);
26
- }
27
- //# sourceMappingURL=formatters.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,eAAe,GAMhB,MAAM,cAAc,CAAA;AAErB,SAAS,eAAe,CAAC,MAA+B;IACtD,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SAC1B,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,CAAC;SAC5D,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,KAAK,GAAG,CAAC;SAC1C,IAAI,CAAC,GAAG,CAAC,CAAA;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAmB,EAAE,KAA8B;IACjF,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IACpC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAA6B;IACnE,OAAO,eAAe,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAA4B;IACjE,OAAO,eAAe,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAA6B;IACnE,OAAO,eAAe,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAwB;IACzD,OAAO,eAAe,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAA4B;IACjE,OAAO,eAAe,CAAC,eAAe,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;AACxD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,GAChB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,KAAK,qBAAqB,EAC1B,sBAAsB,EACtB,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,gBAAgB,EAChB,KAAK,sBAAsB,EAC3B,uBAAuB,EACvB,KAAK,qBAAqB,EAC1B,sBAAsB,EACtB,KAAK,sBAAsB,EAC3B,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,kBAAkB,GACnB,MAAM,cAAc,CAAA"}
package/dist/react.d.ts DELETED
@@ -1,62 +0,0 @@
1
- import type { ComponentType, ReactNode } from 'react';
2
- import type { Processor } from 'unified';
3
- import type { Node } from 'unist';
4
- import { type DirectiveName, type DirectivePropsMap } from './schemas.js';
5
- type DirectiveProps<T extends DirectiveName> = DirectivePropsMap[T];
6
- export interface NodeProps {
7
- node?: {
8
- properties?: Record<string, unknown>;
9
- };
10
- }
11
- export type DirectiveRenderProps<TName extends DirectiveName, TApplication = undefined, TRequiresApplication extends boolean = true> = DirectiveProps<TName> & (TRequiresApplication extends true ? TApplication extends undefined ? {} : {
12
- application: TApplication;
13
- } : {});
14
- export interface DefineDirectiveOptions {
15
- /**
16
- * Whether this directive requires application context.
17
- * If true (default), the directive will not render if application is unavailable.
18
- * If false, the directive renders without application injection.
19
- */
20
- requiresApplication?: boolean;
21
- }
22
- export type DirectiveComponentProps<TName extends DirectiveName> = DirectiveProps<TName> & {
23
- source?: string;
24
- } & NodeProps;
25
- /**
26
- * Remark plugin for agent directive support.
27
- * Parses and transforms directive syntax into React components.
28
- *
29
- * @example
30
- * ```tsx
31
- * import { remarkAgentDirectives } from '@sanity/agent-directives/react'
32
- *
33
- * <ReactMarkdown remarkPlugins={[remarkAgentDirectives]}>
34
- * {content}
35
- * </ReactMarkdown>
36
- * ```
37
- */
38
- export declare function remarkAgentDirectives(this: Processor): (tree: Node) => void;
39
- export interface DirectiveKitOptions<TApplication> {
40
- useApplication?: (source: string | undefined) => TApplication | undefined;
41
- }
42
- /**
43
- * Creates a directive kit with application injection.
44
- *
45
- * @example
46
- * ```tsx
47
- * // kit.ts
48
- * export const { defineDirective } = createDirectiveKit<Application>({
49
- * useApplication: (source) => useThreadApplication(source),
50
- * })
51
- *
52
- * // Document.tsx
53
- * export const DocumentDirective = defineDirective('document', ({ id, application }) => {
54
- * return <DocumentCard id={id} app={application} />
55
- * })
56
- * ```
57
- */
58
- export declare function createDirectiveKit<TApplication = undefined>(options?: DirectiveKitOptions<TApplication>): {
59
- defineDirective: <TName extends DirectiveName, TRequiresApplication extends boolean = true>(name: TName, render: (props: DirectiveRenderProps<TName, TApplication, TRequiresApplication>) => ReactNode, directiveOptions?: DefineDirectiveOptions) => ComponentType<DirectiveComponentProps<TName>>;
60
- };
61
- export {};
62
- //# sourceMappingURL=react.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../src/react.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AAEjC,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAoB,MAAM,cAAc,CAAA;AAM3F,KAAK,cAAc,CAAC,CAAC,SAAS,aAAa,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAA;AAEnE,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAA;CAChD;AAED,MAAM,MAAM,oBAAoB,CAC9B,KAAK,SAAS,aAAa,EAC3B,YAAY,GAAG,SAAS,EACxB,oBAAoB,SAAS,OAAO,GAAG,IAAI,IACzC,cAAc,CAAC,KAAK,CAAC,GACvB,CAAC,oBAAoB,SAAS,IAAI,GAC9B,YAAY,SAAS,SAAS,GAC5B,EAAE,GACF;IAAE,WAAW,EAAE,YAAY,CAAA;CAAE,GAC/B,EAAE,CAAC,CAAA;AAET,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAC9B;AAED,MAAM,MAAM,uBAAuB,CAAC,KAAK,SAAS,aAAa,IAAI,cAAc,CAAC,KAAK,CAAC,GAAG;IACzF,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,GAAG,SAAS,CAAA;AAiKb;;;;;;;;;;;;GAYG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,UA9HrC,IAAI,UA0InB;AAMD,MAAM,WAAW,mBAAmB,CAAC,YAAY;IAC/C,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,KAAK,YAAY,GAAG,SAAS,CAAA;CAC1E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,GAAG,SAAS,EACzD,OAAO,GAAE,mBAAmB,CAAC,YAAY,CAAM;sBAK7C,KAAK,SAAS,aAAa,EAC3B,oBAAoB,SAAS,OAAO,eAE9B,KAAK,UACH,CAAC,KAAK,EAAE,oBAAoB,CAAC,KAAK,EAAE,YAAY,EAAE,oBAAoB,CAAC,KAAK,SAAS,qBAC3E,sBAAsB,KACvC,aAAa,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;EA+BjD"}