{"version":3,"file":"platform-adapter.cjs","sources":["../../../../../src/lib/platform-adapter.ts"],"sourcesContent":["/**\r\n * Platform Adapter\r\n * \r\n * Handles cross-platform component adaptation.\r\n * Maps props, styles, and events between different platforms.\r\n * \r\n * @module platform-adapter\r\n * @see Requirements 7.2, 7.4, 7.5\r\n */\r\n\r\nimport type { UISchema, UIComponent, StyleProps } from '../types';\r\nimport type { PlatformType, ComponentRegistry } from './component-registry';\r\n\r\n/**\r\n * Platform mapping configuration\r\n */\r\nexport interface PlatformMapping {\r\n  /** Property name mappings */\r\n  props: Record<string, string>;\r\n  /** Style name mappings */\r\n  styles: Record<string, string>;\r\n  /** Event name mappings */\r\n  events: Record<string, string>;\r\n}\r\n\r\n/**\r\n * Default platform mappings\r\n * Maps from pc-web (source) to other platforms\r\n * \r\n * Each platform has comprehensive mappings for:\r\n * - props: Component property name mappings\r\n * - styles: CSS/style property name mappings\r\n * - events: Event handler name mappings\r\n */\r\nconst defaultMappings: Record<PlatformType, PlatformMapping> = {\r\n  /**\r\n   * PC Web Platform (Source/Reference)\r\n   * Standard web platform using React/HTML conventions\r\n   */\r\n  'pc-web': {\r\n    props: {\r\n      // Standard HTML/React props (identity mappings)\r\n      className: 'className',\r\n      id: 'id',\r\n      disabled: 'disabled',\r\n      placeholder: 'placeholder',\r\n      value: 'value',\r\n      defaultValue: 'defaultValue',\r\n      checked: 'checked',\r\n      selected: 'selected',\r\n      readOnly: 'readOnly',\r\n      required: 'required',\r\n      autoFocus: 'autoFocus',\r\n      autoComplete: 'autoComplete',\r\n      name: 'name',\r\n      type: 'type',\r\n      href: 'href',\r\n      target: 'target',\r\n      src: 'src',\r\n      alt: 'alt',\r\n      title: 'title',\r\n      role: 'role',\r\n      tabIndex: 'tabIndex',\r\n      'aria-label': 'aria-label',\r\n      'aria-describedby': 'aria-describedby',\r\n      'aria-hidden': 'aria-hidden',\r\n      'data-testid': 'data-testid',\r\n    },\r\n    styles: {\r\n      // Standard CSS properties (identity mappings)\r\n      width: 'width',\r\n      height: 'height',\r\n      minWidth: 'minWidth',\r\n      maxWidth: 'maxWidth',\r\n      minHeight: 'minHeight',\r\n      maxHeight: 'maxHeight',\r\n      padding: 'padding',\r\n      paddingTop: 'paddingTop',\r\n      paddingRight: 'paddingRight',\r\n      paddingBottom: 'paddingBottom',\r\n      paddingLeft: 'paddingLeft',\r\n      margin: 'margin',\r\n      marginTop: 'marginTop',\r\n      marginRight: 'marginRight',\r\n      marginBottom: 'marginBottom',\r\n      marginLeft: 'marginLeft',\r\n      display: 'display',\r\n      flexDirection: 'flexDirection',\r\n      justifyContent: 'justifyContent',\r\n      alignItems: 'alignItems',\r\n      alignSelf: 'alignSelf',\r\n      flexWrap: 'flexWrap',\r\n      flexGrow: 'flexGrow',\r\n      flexShrink: 'flexShrink',\r\n      gap: 'gap',\r\n      rowGap: 'rowGap',\r\n      columnGap: 'columnGap',\r\n      position: 'position',\r\n      top: 'top',\r\n      right: 'right',\r\n      bottom: 'bottom',\r\n      left: 'left',\r\n      zIndex: 'zIndex',\r\n      overflow: 'overflow',\r\n      overflowX: 'overflowX',\r\n      overflowY: 'overflowY',\r\n      backgroundColor: 'backgroundColor',\r\n      color: 'color',\r\n      fontSize: 'fontSize',\r\n      fontWeight: 'fontWeight',\r\n      fontFamily: 'fontFamily',\r\n      fontStyle: 'fontStyle',\r\n      lineHeight: 'lineHeight',\r\n      textAlign: 'textAlign',\r\n      textDecoration: 'textDecoration',\r\n      textTransform: 'textTransform',\r\n      letterSpacing: 'letterSpacing',\r\n      border: 'border',\r\n      borderWidth: 'borderWidth',\r\n      borderStyle: 'borderStyle',\r\n      borderColor: 'borderColor',\r\n      borderRadius: 'borderRadius',\r\n      borderTop: 'borderTop',\r\n      borderRight: 'borderRight',\r\n      borderBottom: 'borderBottom',\r\n      borderLeft: 'borderLeft',\r\n      boxShadow: 'boxShadow',\r\n      opacity: 'opacity',\r\n      cursor: 'cursor',\r\n      visibility: 'visibility',\r\n      transform: 'transform',\r\n      transition: 'transition',\r\n    },\r\n    events: {\r\n      // Standard DOM events (identity mappings)\r\n      onClick: 'onClick',\r\n      onDoubleClick: 'onDoubleClick',\r\n      onChange: 'onChange',\r\n      onInput: 'onInput',\r\n      onSubmit: 'onSubmit',\r\n      onFocus: 'onFocus',\r\n      onBlur: 'onBlur',\r\n      onKeyDown: 'onKeyDown',\r\n      onKeyUp: 'onKeyUp',\r\n      onKeyPress: 'onKeyPress',\r\n      onMouseEnter: 'onMouseEnter',\r\n      onMouseLeave: 'onMouseLeave',\r\n      onMouseDown: 'onMouseDown',\r\n      onMouseUp: 'onMouseUp',\r\n      onMouseMove: 'onMouseMove',\r\n      onScroll: 'onScroll',\r\n      onWheel: 'onWheel',\r\n      onDragStart: 'onDragStart',\r\n      onDrag: 'onDrag',\r\n      onDragEnd: 'onDragEnd',\r\n      onDrop: 'onDrop',\r\n      onDragOver: 'onDragOver',\r\n      onContextMenu: 'onContextMenu',\r\n      onCopy: 'onCopy',\r\n      onPaste: 'onPaste',\r\n      onCut: 'onCut',\r\n      onLoad: 'onLoad',\r\n      onError: 'onError',\r\n    },\r\n  },\r\n\r\n  /**\r\n   * Mobile Web Platform\r\n   * Touch-optimized web platform with mobile-specific events\r\n   */\r\n  'mobile-web': {\r\n    props: {\r\n      // Most props remain the same for mobile web\r\n      className: 'className',\r\n      id: 'id',\r\n      disabled: 'disabled',\r\n      placeholder: 'placeholder',\r\n      value: 'value',\r\n      defaultValue: 'defaultValue',\r\n      checked: 'checked',\r\n      selected: 'selected',\r\n      readOnly: 'readOnly',\r\n      required: 'required',\r\n      autoFocus: 'autoFocus',\r\n      autoComplete: 'autoComplete',\r\n      name: 'name',\r\n      type: 'type',\r\n      href: 'href',\r\n      target: 'target',\r\n      src: 'src',\r\n      alt: 'alt',\r\n      title: 'title',\r\n      role: 'role',\r\n      tabIndex: 'tabIndex',\r\n      'aria-label': 'aria-label',\r\n      'aria-describedby': 'aria-describedby',\r\n      'aria-hidden': 'aria-hidden',\r\n      'data-testid': 'data-testid',\r\n      // Mobile-specific prop mappings\r\n      size: 'size',\r\n      variant: 'variant',\r\n    },\r\n    styles: {\r\n      // Standard CSS properties (same as pc-web)\r\n      width: 'width',\r\n      height: 'height',\r\n      minWidth: 'minWidth',\r\n      maxWidth: 'maxWidth',\r\n      minHeight: 'minHeight',\r\n      maxHeight: 'maxHeight',\r\n      padding: 'padding',\r\n      paddingTop: 'paddingTop',\r\n      paddingRight: 'paddingRight',\r\n      paddingBottom: 'paddingBottom',\r\n      paddingLeft: 'paddingLeft',\r\n      margin: 'margin',\r\n      marginTop: 'marginTop',\r\n      marginRight: 'marginRight',\r\n      marginBottom: 'marginBottom',\r\n      marginLeft: 'marginLeft',\r\n      display: 'display',\r\n      flexDirection: 'flexDirection',\r\n      justifyContent: 'justifyContent',\r\n      alignItems: 'alignItems',\r\n      alignSelf: 'alignSelf',\r\n      flexWrap: 'flexWrap',\r\n      flexGrow: 'flexGrow',\r\n      flexShrink: 'flexShrink',\r\n      gap: 'gap',\r\n      rowGap: 'rowGap',\r\n      columnGap: 'columnGap',\r\n      position: 'position',\r\n      top: 'top',\r\n      right: 'right',\r\n      bottom: 'bottom',\r\n      left: 'left',\r\n      zIndex: 'zIndex',\r\n      overflow: 'overflow',\r\n      overflowX: 'overflowX',\r\n      overflowY: 'overflowY',\r\n      backgroundColor: 'backgroundColor',\r\n      color: 'color',\r\n      fontSize: 'fontSize',\r\n      fontWeight: 'fontWeight',\r\n      fontFamily: 'fontFamily',\r\n      fontStyle: 'fontStyle',\r\n      lineHeight: 'lineHeight',\r\n      textAlign: 'textAlign',\r\n      textDecoration: 'textDecoration',\r\n      textTransform: 'textTransform',\r\n      letterSpacing: 'letterSpacing',\r\n      border: 'border',\r\n      borderWidth: 'borderWidth',\r\n      borderStyle: 'borderStyle',\r\n      borderColor: 'borderColor',\r\n      borderRadius: 'borderRadius',\r\n      borderTop: 'borderTop',\r\n      borderRight: 'borderRight',\r\n      borderBottom: 'borderBottom',\r\n      borderLeft: 'borderLeft',\r\n      boxShadow: 'boxShadow',\r\n      opacity: 'opacity',\r\n      cursor: 'cursor',\r\n      visibility: 'visibility',\r\n      transform: 'transform',\r\n      transition: 'transition',\r\n      // Mobile-specific style mappings\r\n      WebkitTapHighlightColor: 'WebkitTapHighlightColor',\r\n      WebkitOverflowScrolling: 'WebkitOverflowScrolling',\r\n      touchAction: 'touchAction',\r\n    },\r\n    events: {\r\n      // Mouse events mapped to touch events\r\n      onClick: 'onTap',\r\n      onDoubleClick: 'onDoubleTap',\r\n      onMouseEnter: 'onTouchStart',\r\n      onMouseLeave: 'onTouchEnd',\r\n      onMouseDown: 'onTouchStart',\r\n      onMouseUp: 'onTouchEnd',\r\n      onMouseMove: 'onTouchMove',\r\n      // Standard events that remain the same\r\n      onChange: 'onChange',\r\n      onInput: 'onInput',\r\n      onSubmit: 'onSubmit',\r\n      onFocus: 'onFocus',\r\n      onBlur: 'onBlur',\r\n      onKeyDown: 'onKeyDown',\r\n      onKeyUp: 'onKeyUp',\r\n      onKeyPress: 'onKeyPress',\r\n      onScroll: 'onScroll',\r\n      onLoad: 'onLoad',\r\n      onError: 'onError',\r\n      // Touch-specific events\r\n      onTouchStart: 'onTouchStart',\r\n      onTouchMove: 'onTouchMove',\r\n      onTouchEnd: 'onTouchEnd',\r\n      onTouchCancel: 'onTouchCancel',\r\n      // Gesture events\r\n      onSwipe: 'onSwipe',\r\n      onSwipeLeft: 'onSwipeLeft',\r\n      onSwipeRight: 'onSwipeRight',\r\n      onSwipeUp: 'onSwipeUp',\r\n      onSwipeDown: 'onSwipeDown',\r\n      onPinch: 'onPinch',\r\n      onLongPress: 'onLongPress',\r\n    },\r\n  },\r\n\r\n  /**\r\n   * Mobile Native Platform (React Native)\r\n   * Native mobile platform with React Native conventions\r\n   */\r\n  'mobile-native': {\r\n    props: {\r\n      // React Native prop mappings\r\n      className: 'style',\r\n      id: 'testID',\r\n      disabled: 'disabled',\r\n      placeholder: 'placeholder',\r\n      value: 'value',\r\n      defaultValue: 'defaultValue',\r\n      checked: 'value',\r\n      selected: 'selected',\r\n      readOnly: 'editable',\r\n      required: 'required',\r\n      autoFocus: 'autoFocus',\r\n      autoComplete: 'autoComplete',\r\n      name: 'nativeID',\r\n      type: 'keyboardType',\r\n      href: 'href',\r\n      src: 'source',\r\n      alt: 'accessibilityLabel',\r\n      title: 'accessibilityLabel',\r\n      role: 'accessibilityRole',\r\n      tabIndex: 'tabIndex',\r\n      'aria-label': 'accessibilityLabel',\r\n      'aria-describedby': 'accessibilityHint',\r\n      'aria-hidden': 'accessibilityElementsHidden',\r\n      'data-testid': 'testID',\r\n      // Component-specific mappings\r\n      size: 'size',\r\n      variant: 'variant',\r\n      multiline: 'multiline',\r\n      numberOfLines: 'numberOfLines',\r\n      maxLength: 'maxLength',\r\n      secureTextEntry: 'secureTextEntry',\r\n      keyboardType: 'keyboardType',\r\n      returnKeyType: 'returnKeyType',\r\n      autoCapitalize: 'autoCapitalize',\r\n      autoCorrect: 'autoCorrect',\r\n      selectionColor: 'selectionColor',\r\n      underlineColorAndroid: 'underlineColorAndroid',\r\n    },\r\n    styles: {\r\n      // React Native style mappings (camelCase, no units)\r\n      width: 'width',\r\n      height: 'height',\r\n      minWidth: 'minWidth',\r\n      maxWidth: 'maxWidth',\r\n      minHeight: 'minHeight',\r\n      maxHeight: 'maxHeight',\r\n      padding: 'padding',\r\n      paddingTop: 'paddingTop',\r\n      paddingRight: 'paddingRight',\r\n      paddingBottom: 'paddingBottom',\r\n      paddingLeft: 'paddingLeft',\r\n      paddingHorizontal: 'paddingHorizontal',\r\n      paddingVertical: 'paddingVertical',\r\n      margin: 'margin',\r\n      marginTop: 'marginTop',\r\n      marginRight: 'marginRight',\r\n      marginBottom: 'marginBottom',\r\n      marginLeft: 'marginLeft',\r\n      marginHorizontal: 'marginHorizontal',\r\n      marginVertical: 'marginVertical',\r\n      // Flex properties\r\n      display: 'display',\r\n      flex: 'flex',\r\n      flexDirection: 'flexDirection',\r\n      justifyContent: 'justifyContent',\r\n      alignItems: 'alignItems',\r\n      alignSelf: 'alignSelf',\r\n      alignContent: 'alignContent',\r\n      flexWrap: 'flexWrap',\r\n      flexGrow: 'flexGrow',\r\n      flexShrink: 'flexShrink',\r\n      flexBasis: 'flexBasis',\r\n      gap: 'gap',\r\n      rowGap: 'rowGap',\r\n      columnGap: 'columnGap',\r\n      // Position properties\r\n      position: 'position',\r\n      top: 'top',\r\n      right: 'right',\r\n      bottom: 'bottom',\r\n      left: 'left',\r\n      zIndex: 'zIndex',\r\n      overflow: 'overflow',\r\n      // Visual properties\r\n      backgroundColor: 'backgroundColor',\r\n      color: 'color',\r\n      opacity: 'opacity',\r\n      // Typography\r\n      fontSize: 'fontSize',\r\n      fontWeight: 'fontWeight',\r\n      fontFamily: 'fontFamily',\r\n      fontStyle: 'fontStyle',\r\n      lineHeight: 'lineHeight',\r\n      textAlign: 'textAlign',\r\n      textDecorationLine: 'textDecorationLine',\r\n      textTransform: 'textTransform',\r\n      letterSpacing: 'letterSpacing',\r\n      // Border properties\r\n      borderWidth: 'borderWidth',\r\n      borderStyle: 'borderStyle',\r\n      borderColor: 'borderColor',\r\n      borderRadius: 'borderRadius',\r\n      borderTopWidth: 'borderTopWidth',\r\n      borderRightWidth: 'borderRightWidth',\r\n      borderBottomWidth: 'borderBottomWidth',\r\n      borderLeftWidth: 'borderLeftWidth',\r\n      borderTopLeftRadius: 'borderTopLeftRadius',\r\n      borderTopRightRadius: 'borderTopRightRadius',\r\n      borderBottomLeftRadius: 'borderBottomLeftRadius',\r\n      borderBottomRightRadius: 'borderBottomRightRadius',\r\n      // Shadow properties (iOS)\r\n      shadowColor: 'shadowColor',\r\n      shadowOffset: 'shadowOffset',\r\n      shadowOpacity: 'shadowOpacity',\r\n      shadowRadius: 'shadowRadius',\r\n      // Elevation (Android)\r\n      elevation: 'elevation',\r\n      // Transform\r\n      transform: 'transform',\r\n      // Web CSS to RN mappings\r\n      textDecoration: 'textDecorationLine',\r\n      boxShadow: 'elevation',\r\n    },\r\n    events: {\r\n      // React Native event mappings\r\n      onClick: 'onPress',\r\n      onDoubleClick: 'onLongPress',\r\n      onChange: 'onChangeText',\r\n      onInput: 'onChangeText',\r\n      onSubmit: 'onSubmitEditing',\r\n      onFocus: 'onFocus',\r\n      onBlur: 'onBlur',\r\n      onKeyDown: 'onKeyPress',\r\n      onKeyUp: 'onKeyPress',\r\n      onKeyPress: 'onKeyPress',\r\n      onMouseEnter: 'onPressIn',\r\n      onMouseLeave: 'onPressOut',\r\n      onMouseDown: 'onPressIn',\r\n      onMouseUp: 'onPressOut',\r\n      onScroll: 'onScroll',\r\n      onLoad: 'onLoad',\r\n      onError: 'onError',\r\n      // Native-specific events\r\n      onPress: 'onPress',\r\n      onPressIn: 'onPressIn',\r\n      onPressOut: 'onPressOut',\r\n      onLongPress: 'onLongPress',\r\n      onLayout: 'onLayout',\r\n      onContentSizeChange: 'onContentSizeChange',\r\n      onEndReached: 'onEndReached',\r\n      onRefresh: 'onRefresh',\r\n      onMomentumScrollBegin: 'onMomentumScrollBegin',\r\n      onMomentumScrollEnd: 'onMomentumScrollEnd',\r\n      onScrollBeginDrag: 'onScrollBeginDrag',\r\n      onScrollEndDrag: 'onScrollEndDrag',\r\n    },\r\n  },\r\n\r\n  /**\r\n   * PC Desktop Platform (Electron/Tauri)\r\n   * Desktop application platform with native window features\r\n   */\r\n  'pc-desktop': {\r\n    props: {\r\n      // Standard props (mostly same as pc-web)\r\n      className: 'className',\r\n      id: 'id',\r\n      disabled: 'disabled',\r\n      placeholder: 'placeholder',\r\n      value: 'value',\r\n      defaultValue: 'defaultValue',\r\n      checked: 'checked',\r\n      selected: 'selected',\r\n      readOnly: 'readOnly',\r\n      required: 'required',\r\n      autoFocus: 'autoFocus',\r\n      autoComplete: 'autoComplete',\r\n      name: 'name',\r\n      type: 'type',\r\n      href: 'href',\r\n      target: 'target',\r\n      src: 'src',\r\n      alt: 'alt',\r\n      title: 'title',\r\n      role: 'role',\r\n      tabIndex: 'tabIndex',\r\n      'aria-label': 'aria-label',\r\n      'aria-describedby': 'aria-describedby',\r\n      'aria-hidden': 'aria-hidden',\r\n      'data-testid': 'data-testid',\r\n      // Desktop-specific props\r\n      draggable: 'draggable',\r\n      resizable: 'resizable',\r\n      minimizable: 'minimizable',\r\n      maximizable: 'maximizable',\r\n      closable: 'closable',\r\n      alwaysOnTop: 'alwaysOnTop',\r\n      fullscreenable: 'fullscreenable',\r\n      skipTaskbar: 'skipTaskbar',\r\n      frame: 'frame',\r\n      transparent: 'transparent',\r\n      hasShadow: 'hasShadow',\r\n      vibrancy: 'vibrancy',\r\n      titleBarStyle: 'titleBarStyle',\r\n    },\r\n    styles: {\r\n      // Standard CSS properties (same as pc-web)\r\n      width: 'width',\r\n      height: 'height',\r\n      minWidth: 'minWidth',\r\n      maxWidth: 'maxWidth',\r\n      minHeight: 'minHeight',\r\n      maxHeight: 'maxHeight',\r\n      padding: 'padding',\r\n      paddingTop: 'paddingTop',\r\n      paddingRight: 'paddingRight',\r\n      paddingBottom: 'paddingBottom',\r\n      paddingLeft: 'paddingLeft',\r\n      margin: 'margin',\r\n      marginTop: 'marginTop',\r\n      marginRight: 'marginRight',\r\n      marginBottom: 'marginBottom',\r\n      marginLeft: 'marginLeft',\r\n      display: 'display',\r\n      flexDirection: 'flexDirection',\r\n      justifyContent: 'justifyContent',\r\n      alignItems: 'alignItems',\r\n      alignSelf: 'alignSelf',\r\n      flexWrap: 'flexWrap',\r\n      flexGrow: 'flexGrow',\r\n      flexShrink: 'flexShrink',\r\n      gap: 'gap',\r\n      rowGap: 'rowGap',\r\n      columnGap: 'columnGap',\r\n      position: 'position',\r\n      top: 'top',\r\n      right: 'right',\r\n      bottom: 'bottom',\r\n      left: 'left',\r\n      zIndex: 'zIndex',\r\n      overflow: 'overflow',\r\n      overflowX: 'overflowX',\r\n      overflowY: 'overflowY',\r\n      backgroundColor: 'backgroundColor',\r\n      color: 'color',\r\n      fontSize: 'fontSize',\r\n      fontWeight: 'fontWeight',\r\n      fontFamily: 'fontFamily',\r\n      fontStyle: 'fontStyle',\r\n      lineHeight: 'lineHeight',\r\n      textAlign: 'textAlign',\r\n      textDecoration: 'textDecoration',\r\n      textTransform: 'textTransform',\r\n      letterSpacing: 'letterSpacing',\r\n      border: 'border',\r\n      borderWidth: 'borderWidth',\r\n      borderStyle: 'borderStyle',\r\n      borderColor: 'borderColor',\r\n      borderRadius: 'borderRadius',\r\n      borderTop: 'borderTop',\r\n      borderRight: 'borderRight',\r\n      borderBottom: 'borderBottom',\r\n      borderLeft: 'borderLeft',\r\n      boxShadow: 'boxShadow',\r\n      opacity: 'opacity',\r\n      cursor: 'cursor',\r\n      visibility: 'visibility',\r\n      transform: 'transform',\r\n      transition: 'transition',\r\n      // Desktop-specific styles\r\n      WebkitAppRegion: 'WebkitAppRegion',\r\n      WebkitUserSelect: 'WebkitUserSelect',\r\n      userSelect: 'userSelect',\r\n      backdropFilter: 'backdropFilter',\r\n    },\r\n    events: {\r\n      // Standard DOM events\r\n      onClick: 'onClick',\r\n      onDoubleClick: 'onDoubleClick',\r\n      onChange: 'onChange',\r\n      onInput: 'onInput',\r\n      onSubmit: 'onSubmit',\r\n      onFocus: 'onFocus',\r\n      onBlur: 'onBlur',\r\n      onKeyDown: 'onKeyDown',\r\n      onKeyUp: 'onKeyUp',\r\n      onKeyPress: 'onKeyPress',\r\n      onMouseEnter: 'onMouseEnter',\r\n      onMouseLeave: 'onMouseLeave',\r\n      onMouseDown: 'onMouseDown',\r\n      onMouseUp: 'onMouseUp',\r\n      onMouseMove: 'onMouseMove',\r\n      onScroll: 'onScroll',\r\n      onWheel: 'onWheel',\r\n      onDragStart: 'onDragStart',\r\n      onDrag: 'onDrag',\r\n      onDragEnd: 'onDragEnd',\r\n      onDrop: 'onDrop',\r\n      onDragOver: 'onDragOver',\r\n      onContextMenu: 'onContextMenu',\r\n      onCopy: 'onCopy',\r\n      onPaste: 'onPaste',\r\n      onCut: 'onCut',\r\n      onLoad: 'onLoad',\r\n      onError: 'onError',\r\n      // Desktop-specific events (Electron/Tauri)\r\n      onWindowClose: 'onWindowClose',\r\n      onWindowMinimize: 'onWindowMinimize',\r\n      onWindowMaximize: 'onWindowMaximize',\r\n      onWindowRestore: 'onWindowRestore',\r\n      onWindowFocus: 'onWindowFocus',\r\n      onWindowBlur: 'onWindowBlur',\r\n      onWindowMove: 'onWindowMove',\r\n      onWindowResize: 'onWindowResize',\r\n      onWindowEnterFullScreen: 'onWindowEnterFullScreen',\r\n      onWindowLeaveFullScreen: 'onWindowLeaveFullScreen',\r\n      onFileDrop: 'onFileDrop',\r\n      onNewWindow: 'onNewWindow',\r\n      onBeforeQuit: 'onBeforeQuit',\r\n      onWillQuit: 'onWillQuit',\r\n      onQuit: 'onQuit',\r\n    },\r\n  },\r\n};\r\n\r\n/**\r\n * Component-specific platform mappings\r\n */\r\nconst componentMappings: Record<string, Record<PlatformType, Partial<PlatformMapping>>> = {\r\n  Button: {\r\n    'mobile-native': {\r\n      props: {\r\n        variant: 'type',\r\n        size: 'size',\r\n      },\r\n      events: {\r\n        onClick: 'onPress',\r\n      },\r\n    },\r\n    'mobile-web': {\r\n      events: {\r\n        onClick: 'onTap',\r\n      },\r\n    },\r\n    'pc-desktop': {},\r\n    'pc-web': {},\r\n  },\r\n  Input: {\r\n    'mobile-native': {\r\n      props: {\r\n        placeholder: 'placeholder',\r\n        value: 'value',\r\n        type: 'keyboardType',\r\n      },\r\n      events: {\r\n        onChange: 'onChangeText',\r\n      },\r\n    },\r\n    'mobile-web': {},\r\n    'pc-desktop': {},\r\n    'pc-web': {},\r\n  },\r\n};\r\n\r\n/**\r\n * Apply mapping to props\r\n */\r\nfunction mapProps(\r\n  props: Record<string, unknown>,\r\n  mapping: Record<string, string>\r\n): Record<string, unknown> {\r\n  const result: Record<string, unknown> = {};\r\n  \r\n  for (const [key, value] of Object.entries(props)) {\r\n    const mappedKey = mapping[key] || key;\r\n    result[mappedKey] = value;\r\n  }\r\n  \r\n  return result;\r\n}\r\n\r\n/**\r\n * Apply mapping to styles\r\n */\r\nfunction mapStyles(\r\n  styles: StyleProps,\r\n  mapping: Record<string, string>\r\n): StyleProps {\r\n  const result: StyleProps = {};\r\n  \r\n  for (const [key, value] of Object.entries(styles)) {\r\n    const mappedKey = mapping[key] || key;\r\n    (result as Record<string, unknown>)[mappedKey] = value;\r\n  }\r\n  \r\n  return result;\r\n}\r\n\r\n/**\r\n * Adapt a single component\r\n */\r\nfunction adaptComponent(\r\n  component: UIComponent,\r\n  targetPlatform: PlatformType,\r\n  registry?: ComponentRegistry\r\n): UIComponent {\r\n  const defaultMapping = defaultMappings[targetPlatform];\r\n  const componentMapping = componentMappings[component.type]?.[targetPlatform];\r\n  \r\n  // Merge mappings (component-specific overrides default)\r\n  const mapping: PlatformMapping = {\r\n    props: { ...defaultMapping.props, ...componentMapping?.props },\r\n    styles: { ...defaultMapping.styles, ...componentMapping?.styles },\r\n    events: { ...defaultMapping.events, ...componentMapping?.events },\r\n  };\r\n\r\n  const adapted: UIComponent = {\r\n    ...component,\r\n    id: component.id,\r\n    type: component.type,\r\n  };\r\n\r\n  // Map props\r\n  if (component.props) {\r\n    adapted.props = mapProps(component.props, mapping.props);\r\n  }\r\n\r\n  // Map styles\r\n  if (component.style) {\r\n    adapted.style = mapStyles(component.style, mapping.styles);\r\n  }\r\n\r\n  // Map events\r\n  if (component.events) {\r\n    adapted.events = component.events.map(event => ({\r\n      ...event,\r\n      event: mapping.events[event.event] || event.event,\r\n    }));\r\n  }\r\n\r\n  // Recursively adapt children\r\n  if (component.children) {\r\n    adapted.children = component.children.map(child =>\r\n      adaptComponent(child, targetPlatform, registry)\r\n    );\r\n  }\r\n\r\n  return adapted;\r\n}\r\n\r\n/**\r\n * Platform Adapter class\r\n * \r\n * Adapts UI schemas between different platforms.\r\n */\r\nexport class PlatformAdapter {\r\n  private registry?: ComponentRegistry;\r\n  private customMappings: Map<string, Record<PlatformType, PlatformMapping>> = new Map();\r\n\r\n  constructor(registry?: ComponentRegistry) {\r\n    this.registry = registry;\r\n  }\r\n\r\n  /**\r\n   * Adapt a schema to target platform\r\n   * @param schema - Source UI schema\r\n   * @param targetPlatform - Target platform\r\n   * @returns Adapted schema\r\n   */\r\n  adapt(schema: UISchema, targetPlatform: PlatformType): UISchema {\r\n    return {\r\n      ...schema,\r\n      root: adaptComponent(schema.root, targetPlatform, this.registry),\r\n    };\r\n  }\r\n\r\n  /**\r\n   * Get mapping for a component between platforms\r\n   * @param componentName - Component name\r\n   * @param _sourcePlatform - Source platform (unused, reserved for future)\r\n   * @param targetPlatform - Target platform\r\n   * @returns Platform mapping\r\n   */\r\n  getMapping(\r\n    componentName: string,\r\n    _sourcePlatform: PlatformType,\r\n    targetPlatform: PlatformType\r\n  ): PlatformMapping {\r\n    // Check custom mappings first\r\n    const custom = this.customMappings.get(componentName)?.[targetPlatform];\r\n    if (custom) return custom;\r\n\r\n    // Check component-specific mappings\r\n    const componentMapping = componentMappings[componentName]?.[targetPlatform];\r\n    const defaultMapping = defaultMappings[targetPlatform];\r\n\r\n    return {\r\n      props: { ...defaultMapping.props, ...componentMapping?.props },\r\n      styles: { ...defaultMapping.styles, ...componentMapping?.styles },\r\n      events: { ...defaultMapping.events, ...componentMapping?.events },\r\n    };\r\n  }\r\n\r\n  /**\r\n   * Check if a component is supported on a platform\r\n   * @param componentName - Component name\r\n   * @param platform - Target platform\r\n   * @returns True if supported\r\n   */\r\n  isSupported(componentName: string, platform: PlatformType): boolean {\r\n    if (!this.registry) return true;\r\n    \r\n    const definition = this.registry.get(componentName);\r\n    if (!definition) return false;\r\n    \r\n    // If no platforms specified, assume all supported\r\n    if (!definition.platforms || definition.platforms.length === 0) {\r\n      return true;\r\n    }\r\n    \r\n    return definition.platforms.includes(platform);\r\n  }\r\n\r\n  /**\r\n   * Register custom mapping for a component\r\n   */\r\n  registerMapping(\r\n    componentName: string,\r\n    platform: PlatformType,\r\n    mapping: PlatformMapping\r\n  ): void {\r\n    if (!this.customMappings.has(componentName)) {\r\n      this.customMappings.set(componentName, {} as Record<PlatformType, PlatformMapping>);\r\n    }\r\n    this.customMappings.get(componentName)![platform] = mapping;\r\n  }\r\n\r\n  /**\r\n   * Get all unsupported components for a platform\r\n   */\r\n  getUnsupportedComponents(platform: PlatformType): string[] {\r\n    if (!this.registry) return [];\r\n    \r\n    return this.registry.getAll().filter(def => {\r\n      if (!def.platforms || def.platforms.length === 0) return false;\r\n      return !def.platforms.includes(platform);\r\n    }).map(def => def.name);\r\n  }\r\n}\r\n\r\n/**\r\n * Create a platform adapter\r\n */\r\nexport function createPlatformAdapter(registry?: ComponentRegistry): PlatformAdapter {\r\n  return new PlatformAdapter(registry);\r\n}\r\n"],"names":["defaultMappings","componentMappings","mapProps","props","mapping","result","key","value","mappedKey","mapStyles","styles","adaptComponent","component","targetPlatform","registry","defaultMapping","componentMapping","adapted","event","child","PlatformAdapter","__publicField","schema","componentName","_sourcePlatform","custom","platform","definition","def","createPlatformAdapter"],"mappings":"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"}