{
  "mappings": ";;;;;;;;;;;;AAaA,YAAY,UACR,MACA,YACA,UACA,MACA,QACA,QACA,eACA,OACA,WACA,SACA,QACA,QACA,OACA,aACA,WACA,SACA,OACA,OACA,OACA,OACA,OACA,OACA,WACA,OACA,MACA,QACA,UACA,QACA,QACA,UACA,OACA,SACA,SACA,QACA,OACA,aACA,WACA,MACA,QACA,MACA,YACA,WACA,SACA,WACA,QACA,QACA,aACA,MACA;;AAGJ,YAAY,gBAAgB,SAAS,SAAS,UAAU;;;;;;;;AASxD,YAAY,UAAU,SAAS,aAAa;;;;;;;;;;AAW5C,YAAY,eAAe,SAAS,aAAa,SAAS,SAAS;;AAGnE,YAAY,aACR,WACA,WACA,WACA,UACA,UACA,UACA,aACA,aACA,WACA,WACA;;AAGJ,YAAY,eAAe,SAAS;AAEpC,YAAY,SAAS;;CAEnB,SAAS,UAAU,WAAW;CAC9B,SAAS;;CAET,qBAAqB;CACrB,SAAS;;CAET;;CAEA;CACA,OAAO;;CAEP,WAAW;;CAEX,iBAAiB;CACjB,KAAK;CACL,QAAQ;;CAER;;;AAIF,YAAY,WAAW,eAAe;AAEtC,YAAY,eAAe;;;;;;;;;CASzB,OAAO,SAAS,WAAW,YAAY,SAAS,aAAa;CAC7D,MAAM;;CAEN;;;;;;;CAOA,SAAS,SAAS,QAAQ,OAAO,SAAS;EAAE;EAAe;;;CAE3D;CACA,KAAK;CACL,QAAQ;CACR;;AAGF,YAAY,WAAW;CACrB,MAAM;;;;;CAKN;;CAEA;CACA,KAAK;CACL,QAAQ;CACR;;AAGF,YAAY,mBAAmB;;CAE7B;;CAEA;;CAEA,eAAe;;CAEf;CACA;;;AAIF,YAAY,mBAAmB;CAC7B,MAAM,QAAQ,SAAS,UAAU,UAAU,QAAQ;;CAEnD;;;;;;;;;CASA;;CAEA;;CAEA;CACA",
  "names": [],
  "sources": [
    "src/tables/types.ts"
  ],
  "version": 3,
  "sourcesContent": [
    "/**\n * Row types for the Tamagui DOM contract tables.\n *\n * The tables are the source of truth for the whole DOM lane: the compiler reads\n * them to classify tags, validate props and nesting, and inject native\n * primitives; the runtime reads them for element defaults and native mapping;\n * the type generator reads them to emit the strict prop interfaces.\n *\n * React Strict DOM is the semantic reference and conformance oracle for these\n * tables (see `rsd-snapshot.json` and `compatibility.ts`), never a dependency.\n */\n\n/** every tag in the DOM contract, matching the 49 elements RSD exposes */\nexport type TagName =\n  | 'a'\n  | 'article'\n  | 'aside'\n  | 'b'\n  | 'bdi'\n  | 'bdo'\n  | 'blockquote'\n  | 'br'\n  | 'button'\n  | 'code'\n  | 'del'\n  | 'div'\n  | 'em'\n  | 'fieldset'\n  | 'footer'\n  | 'form'\n  | 'h1'\n  | 'h2'\n  | 'h3'\n  | 'h4'\n  | 'h5'\n  | 'h6'\n  | 'header'\n  | 'hr'\n  | 'i'\n  | 'img'\n  | 'input'\n  | 'ins'\n  | 'kbd'\n  | 'label'\n  | 'li'\n  | 'main'\n  | 'mark'\n  | 'nav'\n  | 'ol'\n  | 'optgroup'\n  | 'option'\n  | 'p'\n  | 'pre'\n  | 's'\n  | 'section'\n  | 'select'\n  | 'span'\n  | 'strong'\n  | 'sub'\n  | 'sup'\n  | 'textarea'\n  | 'u'\n  | 'ul'\n\n/** native primitive a tag lowers to, injected by the compiler */\nexport type NativeBacking = 'view' | 'text' | 'image' | 'textinput'\n\n/**\n * How much of a feature survives on a platform.\n *\n * - `host`: the platform primitive implements it, we forward the value\n * - `polyfill`: we implement it in the DOM layer on top of the primitive\n * - `none`: unsupported, and using it is a compile diagnostic\n */\nexport type Support = 'host' | 'polyfill' | 'none'\n\n/**\n * What a tag may contain, driving the compile-time nesting diagnostic.\n *\n * - `flow`: block or phrasing children\n * - `phrasing`: phrasing children only, so a block child is an error\n * - `text`: text children only\n * - `void`: no children at all\n * - `tags`: only the tags in `childTags`\n */\nexport type ContentModel = 'flow' | 'phrasing' | 'text' | 'void' | 'tags'\n\n/** the generated props interface a tag uses */\nexport type PropsGroup =\n  | 'common'\n  | 'anchor'\n  | 'button'\n  | 'image'\n  | 'input'\n  | 'label'\n  | 'listitem'\n  | 'optgroup'\n  | 'option'\n  | 'select'\n  | 'textarea'\n\n/** a style record expressed in Tamagui style-prop terms, valid on both platforms */\nexport type DefaultStyle = Readonly<Record<string, string | number>>\n\nexport type TagRow = {\n  /** css display from the browser default stylesheet; native emulates it */\n  display: 'block' | 'inline' | 'inline-block'\n  content: ContentModel\n  /** the only permitted children, when `content` is `tags` */\n  childTags?: readonly TagName[]\n  backing: NativeBacking\n  /** implicit aria role the browser gives the tag, applied explicitly on native */\n  role?: string\n  /** dom interface a ref resolves to */\n  element: string\n  props: PropsGroup\n  /** element defaults applied on both platforms, before author styles */\n  defaults?: DefaultStyle\n  /** extra defaults native needs to reach the same result as the browser */\n  nativeDefaults?: DefaultStyle\n  web: Support\n  native: Support\n  /** why support is limited, surfaced verbatim by the compiler diagnostic */\n  note?: string\n}\n\n/** which tags accept a prop: `*` for all of them */\nexport type PropTags = '*' | readonly TagName[]\n\nexport type AttributeRow = {\n  /**\n   * - `aria`: an `aria-*` accessibility prop\n   * - `global`: an html prop every tag accepts\n   * - `element`: an html prop specific to some tags\n   * - `data`: `data-*` passthrough\n   * - `frontend`: supplied by the styling frontend, not generated as an attribute\n   * - `react`: a React prop with no html attribute behind it\n   */\n  group: 'aria' | 'global' | 'element' | 'data' | 'frontend' | 'react'\n  tags: PropTags\n  /** typescript source for the generated prop type, for every tag `perTag` omits */\n  type?: string\n  /**\n   * Per-tag overrides, for props that genuinely differ by element: `type` on a\n   * button is not `type` on an input, and the `value` counter note is about\n   * `li` alone. Every tag the row accepts has to end up with a type, from here\n   * or from `type`; an override with no `type` just narrows the note.\n   */\n  perTag?: Readonly<Partial<Record<TagName, { type?: string; note?: string }>>>\n  /** react native prop this lowers to, null when nothing carries it */\n  nativeProp: string | null\n  web: Support\n  native: Support\n  note?: string\n}\n\nexport type EventRow = {\n  tags: PropTags\n  /**\n   * typescript source for the handler argument. Opaque handlers receive the raw\n   * platform event, which differs per platform, so they take `unknown`.\n   */\n  payload: string\n  /** react native prop this lowers to, null when nothing carries it */\n  nativeProp: string | null\n  web: Support\n  native: Support\n  note?: string\n}\n\nexport type NativeBackingRow = {\n  /** primitive exported from `@tamagui/dom/native`, injected by the compiler */\n  primitive: string\n  /** react native host component the primitive renders */\n  host: string\n  /** tags this backing serves */\n  tags: readonly TagName[]\n  /** direct literal string children are wrapped at compile time for these */\n  wrapsLiteralText: boolean\n  note: string\n}\n\n/** an intentional difference from the pinned React Strict DOM reference */\nexport type CompatibilityRow = {\n  area: 'tag' | 'prop' | 'event' | 'style' | 'ref' | 'behavior'\n  /** what differs, spelled as it appears in source */\n  subject: string\n  /**\n   * The identifiers the conformance test matches this row against: prop names\n   * for `prop` and `event`, tag names for `tag`, `tag.styleKey` for `style`\n   * (`web.` or `native.` prefixed). The test fails on any difference from the\n   * RSD snapshot that no row claims, and on any key no longer different, so a\n   * row cannot silently go stale. Empty for a difference with no identifier the\n   * snapshot can see, which the snapshot therefore cannot check.\n   */\n  keys: readonly string[]\n  /** what the pinned RSD release does */\n  rsd: string\n  /** what Tamagui DOM does */\n  tamagui: string\n  reason: string\n}\n"
  ]
}