{"version":3,"file":"DomView.js","names":[],"sources":["esm/platform/web/DomView.js"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { flattenStyle } from \"../effects/normalize\";\nimport { jsx } from \"react/jsx-runtime\";\nconst VIEW_BASE = {\n  display: \"flex\",\n  flexDirection: \"column\",\n  flexShrink: 0,\n  position: \"relative\",\n  boxSizing: \"border-box\",\n  minWidth: 0,\n  minHeight: 0\n};\nfunction domStyle(style) {\n  const {\n    paddingHorizontal,\n    paddingVertical,\n    marginHorizontal,\n    marginVertical,\n    ...rest\n  } = flattenStyle(style);\n  return {\n    ...paddingHorizontal != null && { paddingLeft: paddingHorizontal, paddingRight: paddingHorizontal },\n    ...paddingVertical != null && { paddingTop: paddingVertical, paddingBottom: paddingVertical },\n    ...marginHorizontal != null && { marginLeft: marginHorizontal, marginRight: marginHorizontal },\n    ...marginVertical != null && { marginTop: marginVertical, marginBottom: marginVertical },\n    ...rest\n  };\n}\nfunction DomView({\n  testID,\n  nativeID,\n  onLayout,\n  accessibilityLabel,\n  style,\n  baseStyle,\n  children\n}) {\n  const ref = useRef(null);\n  const onLayoutRef = useRef(onLayout);\n  onLayoutRef.current = onLayout;\n  const observesLayout = onLayout != null;\n  useEffect(() => {\n    const node = ref.current;\n    if (!observesLayout || !node) return;\n    const observer = new ResizeObserver(() => {\n      const layout = {\n        x: node.offsetLeft,\n        y: node.offsetTop,\n        width: node.offsetWidth,\n        height: node.offsetHeight\n      };\n      const event = { nativeEvent: { layout }, timeStamp: Date.now() };\n      onLayoutRef.current?.(event);\n    });\n    observer.observe(node);\n    return () => observer.disconnect();\n  }, [observesLayout]);\n  return /* @__PURE__ */ jsx(\n    \"div\",\n    {\n      ref,\n      \"data-testid\": testID,\n      id: nativeID,\n      \"aria-label\": accessibilityLabel,\n      style: {\n        ...VIEW_BASE,\n        ...baseStyle,\n        ...domStyle(style)\n      },\n      children\n    }\n  );\n}\nexport {\n  DomView,\n  VIEW_BASE,\n  domStyle\n};\n//# sourceMappingURL=DomView.js.map\n"],"mappings":";;;;;AAGA,MAAM,YAAY;CAChB,SAAS;CACT,eAAe;CACf,YAAY;CACZ,UAAU;CACV,WAAW;CACX,UAAU;CACV,WAAW;AACb;AACA,SAAS,SAAS,OAAO;CACvB,MAAM,EACJ,mBACA,iBACA,kBACA,gBACA,GAAG,SACD,aAAa,KAAK;CACtB,OAAO;EACL,GAAG,qBAAqB,QAAQ;GAAE,aAAa;GAAmB,cAAc;EAAkB;EAClG,GAAG,mBAAmB,QAAQ;GAAE,YAAY;GAAiB,eAAe;EAAgB;EAC5F,GAAG,oBAAoB,QAAQ;GAAE,YAAY;GAAkB,aAAa;EAAiB;EAC7F,GAAG,kBAAkB,QAAQ;GAAE,WAAW;GAAgB,cAAc;EAAe;EACvF,GAAG;CACL;AACF;AACA,SAAS,QAAQ,EACf,QACA,UACA,UACA,oBACA,OACA,WACA,YACC;CACD,MAAM,MAAM,OAAO,IAAI;CACvB,MAAM,cAAc,OAAO,QAAQ;CACnC,YAAY,UAAU;CACtB,MAAM,iBAAiB,YAAY;CACnC,gBAAgB;EACd,MAAM,OAAO,IAAI;EACjB,IAAI,CAAC,kBAAkB,CAAC,MAAM;EAC9B,MAAM,WAAW,IAAI,qBAAqB;GACxC,MAAM,SAAS;IACb,GAAG,KAAK;IACR,GAAG,KAAK;IACR,OAAO,KAAK;IACZ,QAAQ,KAAK;GACf;GACA,MAAM,QAAQ;IAAE,aAAa,EAAE,OAAO;IAAG,WAAW,KAAK,IAAI;GAAE;GAC/D,YAAY,UAAU,KAAK;EAC7B,CAAC;EACD,SAAS,QAAQ,IAAI;EACrB,aAAa,SAAS,WAAW;CACnC,GAAG,CAAC,cAAc,CAAC;CACnB,OAAuB,oBACrB,OACA;EACE;EACA,eAAe;EACf,IAAI;EACJ,cAAc;EACd,OAAO;GACL,GAAG;GACH,GAAG;GACH,GAAG,SAAS,KAAK;EACnB;EACA;CACF,CACF;AACF"}