@metamask/snaps-sdk
Version:
A library containing the core functionality for building MetaMask Snaps
1 lines • 2.66 kB
Source Map (JSON)
{"version":3,"file":"form.cjs","sourceRoot":"","sources":["../../../src/ui/components/form.ts"],"names":[],"mappings":";;;AACA,uDAA6E;AAE7E,yCAAwC;AACxC,uCAAsC;AACtC,yDAA0C;AAC1C,4CAA2C;AAC3C,wCAAgD;AAEnC,QAAA,mBAAmB,GAAG,IAAA,mBAAK,EAAC,CAAC,mBAAW,EAAE,qBAAY,CAAC,CAAC,CAAC;AAOzD,QAAA,UAAU,GAAG,IAAA,oBAAM,EAC9B,kBAAU,EACV,IAAA,oBAAM,EAAC;IACL,IAAI,EAAE,IAAA,mBAAO,EAAC,gBAAQ,CAAC,IAAI,CAAC;IAC5B,QAAQ,EAAE,IAAA,mBAAK,EAAC,2BAAmB,CAAC;IACpC,IAAI,EAAE,IAAA,oBAAM,GAAE;CACf,CAAC,CACH,CAAC;AAWF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACU,QAAA,IAAI,GAAG,IAAA,uBAAa,EAAC,gBAAQ,CAAC,IAAI,EAAE,kBAAU,EAAE;IAC3D,MAAM;IACN,UAAU;CACX,CAAC,CAAC","sourcesContent":["import type { Infer } from '@metamask/superstruct';\nimport { array, assign, object, string, union } from '@metamask/superstruct';\n\nimport { ButtonStruct } from './button';\nimport { InputStruct } from './input';\nimport { literal } from '../../internals';\nimport { createBuilder } from '../builder';\nimport { NodeStruct, NodeType } from '../nodes';\n\nexport const FormComponentStruct = union([InputStruct, ButtonStruct]);\n\n/**\n * The subset of nodes allowed as children in the {@link Form} node.\n */\nexport type FormComponent = Infer<typeof FormComponentStruct>;\n\nexport const FormStruct = assign(\n NodeStruct,\n object({\n type: literal(NodeType.Form),\n children: array(FormComponentStruct),\n name: string(),\n }),\n);\n\n/**\n * A form node that takes children {@link FormComponent} nodes and renders a form.\n *\n * @property type - The type of the node. Must be the string `form`.\n * @property children - The children of the node. Only {@link FormComponent} nodes are allowed.\n * @property name - The form name used to identify it.\n */\nexport type Form = Infer<typeof FormStruct>;\n\n/**\n * Create a {@link Form} node.\n *\n * @param args - The node arguments. This can be either an array of children and a string, or\n * an object with a `name` and `children` property.\n * @param args.name - The form name used to identify it.\n * @param args.children - The child nodes of the form. This can be any valid\n * {@link FormComponent}.\n * @returns The form node as object.\n * @deprecated Snaps component functions are deprecated, in favor of the new JSX\n * components. This function will be removed in a future release.\n * @example\n * const node = form({\n * name: 'myForm',\n * children: [\n * input({ name: 'myInput' }),\n * button({ value: 'Hello, world!' }),\n * ],\n * });\n *\n * const node = form('myForm', [input('myInput'), button('Hello, world!')]);\n */\nexport const form = createBuilder(NodeType.Form, FormStruct, [\n 'name',\n 'children',\n]);\n"]}