{"version":3,"file":"applyStyle.cjs","sources":["../../../src/core/style/applyStyle.ts"],"sourcesContent":["import {\n    Align,\n    BoxSizing,\n    Direction,\n    Display,\n    Edge,\n    FlexDirection,\n    Gutter,\n    Justify,\n    type Node as YogaNode,\n    Overflow,\n    PositionType,\n    Wrap,\n} from 'yoga-layout/load';\nimport { type AlignContent, type AlignItems, type AlignSelf, type JustifyContent, type YogaStyles } from './yogaStyles';\n\nconst ALIGN_CONTENT_MAP: Record<AlignContent, Align> = {\n    'flex-start': Align.FlexStart,\n    'flex-end': Align.FlexEnd,\n    center: Align.Center,\n    stretch: Align.Stretch,\n    'space-between': Align.SpaceBetween,\n    'space-around': Align.SpaceAround,\n    'space-evenly': Align.SpaceEvenly,\n} as const;\n\nconst ALIGN_ITEMS_MAP: Record<AlignItems, Align> = {\n    'flex-start': Align.FlexStart,\n    'flex-end': Align.FlexEnd,\n    center: Align.Center,\n    stretch: Align.Stretch,\n    baseline: Align.Baseline,\n} as const;\n\nconst ALIGN_SELF_MAP: Record<AlignSelf, Align> = {\n    auto: Align.Auto,\n    'flex-start': Align.FlexStart,\n    'flex-end': Align.FlexEnd,\n    center: Align.Center,\n    stretch: Align.Stretch,\n    baseline: Align.Baseline,\n} as const;\nconst BOX_SIZING_MAP: Record<'border-box' | 'content-box', BoxSizing> = {\n    'border-box': BoxSizing.BorderBox,\n    'content-box': BoxSizing.ContentBox,\n} as const;\n\nconst DIRECTION_MAP: Record<'ltr' | 'rtl', Direction> = {\n    ltr: Direction.LTR,\n    rtl: Direction.RTL,\n} as const;\n\nconst DISPLAY_MAP: Record<'none' | 'flex' | 'contents', Display> = {\n    none: Display.None,\n    flex: Display.Flex,\n    contents: Display.Contents,\n} as const;\n\nconst FLEX_DIRECTION_MAP: Record<'row' | 'column' | 'row-reverse' | 'column-reverse', FlexDirection> = {\n    row: FlexDirection.Row,\n    column: FlexDirection.Column,\n    'row-reverse': FlexDirection.RowReverse,\n    'column-reverse': FlexDirection.ColumnReverse,\n} as const;\n\nconst FLEX_WRAP_MAP: Record<'wrap' | 'nowrap' | 'wrap-reverse', Wrap> = {\n    wrap: Wrap.Wrap,\n    nowrap: Wrap.NoWrap,\n    'wrap-reverse': Wrap.WrapReverse,\n} as const;\n\nconst JUSTIFY_CONTENT_MAP: Record<JustifyContent, Justify> = {\n    'flex-start': Justify.FlexStart,\n    'flex-end': Justify.FlexEnd,\n    center: Justify.Center,\n    'space-between': Justify.SpaceBetween,\n    'space-around': Justify.SpaceAround,\n    'space-evenly': Justify.SpaceEvenly,\n} as const;\n\nconst OVERFLOW_MAP: Record<'visible' | 'hidden' | 'scroll', Overflow> = {\n    visible: Overflow.Visible,\n    hidden: Overflow.Hidden,\n    scroll: Overflow.Scroll,\n} as const;\n\nconst POSITION_MAP: Record<'absolute' | 'relative' | 'static', PositionType> = {\n    absolute: PositionType.Absolute,\n    relative: PositionType.Relative,\n    static: PositionType.Static,\n} as const;\n\nconst styleSetters: Record<keyof YogaStyles, (node: YogaNode, value: any) => void> = {\n    alignContent: (node, value) => node.setAlignContent(alignContent(value)),\n    alignItems: (node, value) => node.setAlignItems(alignItems(value)),\n    alignSelf: (node, value) => node.setAlignSelf(alignSelf(value)),\n    aspectRatio: (node, value) => node.setAspectRatio(value),\n    borderBottomWidth: (node, value) => node.setBorder(Edge.Bottom, value),\n    borderEndWidth: (node, value) => node.setBorder(Edge.End, value),\n    borderLeftWidth: (node, value) => node.setBorder(Edge.Left, value),\n    borderRightWidth: (node, value) => node.setBorder(Edge.Right, value),\n    borderStartWidth: (node, value) => node.setBorder(Edge.Start, value),\n    borderTopWidth: (node, value) => node.setBorder(Edge.Top, value),\n    borderWidth: (node, value) => node.setBorder(Edge.All, value),\n    borderInlineWidth: (node, value) => node.setBorder(Edge.Horizontal, value),\n    borderBlockWidth: (node, value) => node.setBorder(Edge.Vertical, value),\n    bottom: (node, value) => node.setPosition(Edge.Bottom, value),\n    boxSizing: (node, value) => node.setBoxSizing(boxSizing(value)),\n    direction: (node, value) => node.setDirection(direction(value)),\n    display: (node, value) => node.setDisplay(display(value)),\n    end: (node, value) => node.setPosition(Edge.End, value),\n    flex: (node, value) => node.setFlex(value),\n    flexBasis: (node, value) => node.setFlexBasis(value),\n    flexDirection: (node, value) => node.setFlexDirection(flexDirection(value)),\n    rowGap: (node, value) => node.setGap(Gutter.Row, value),\n    gap: (node, value) => node.setGap(Gutter.All, value),\n    columnGap: (node, value) => node.setGap(Gutter.Column, value),\n    flexGrow: (node, value) => node.setFlexGrow(value),\n    flexShrink: (node, value) => node.setFlexShrink(value),\n    flexWrap: (node, value) => node.setFlexWrap(flexWrap(value)),\n    height: (node, value) => node.setHeight(value),\n    justifyContent: (node, value) => node.setJustifyContent(justifyContent(value)),\n    left: (node, value) => node.setPosition(Edge.Left, value),\n    margin: (node, value) => node.setMargin(Edge.All, value),\n    marginBottom: (node, value) => node.setMargin(Edge.Bottom, value),\n    marginEnd: (node, value) => node.setMargin(Edge.End, value),\n    marginLeft: (node, value) => node.setMargin(Edge.Left, value),\n    marginRight: (node, value) => node.setMargin(Edge.Right, value),\n    marginStart: (node, value) => node.setMargin(Edge.Start, value),\n    marginTop: (node, value) => node.setMargin(Edge.Top, value),\n    marginInline: (node, value) => node.setMargin(Edge.Horizontal, value),\n    marginBlock: (node, value) => node.setMargin(Edge.Vertical, value),\n    maxHeight: (node, value) => node.setMaxHeight(value),\n    maxWidth: (node, value) => node.setMaxWidth(value),\n    minHeight: (node, value) => node.setMinHeight(value),\n    minWidth: (node, value) => node.setMinWidth(value),\n    overflow: (node, value) => node.setOverflow(overflow(value)),\n    padding: (node, value) => node.setPadding(Edge.All, value),\n    paddingBottom: (node, value) => node.setPadding(Edge.Bottom, value),\n    paddingEnd: (node, value) => node.setPadding(Edge.End, value),\n    paddingLeft: (node, value) => node.setPadding(Edge.Left, value),\n    paddingRight: (node, value) => node.setPadding(Edge.Right, value),\n    paddingStart: (node, value) => node.setPadding(Edge.Start, value),\n    paddingTop: (node, value) => node.setPadding(Edge.Top, value),\n    paddingInline: (node, value) => node.setPadding(Edge.Horizontal, value),\n    paddingBlock: (node, value) => node.setPadding(Edge.Vertical, value),\n    position: (node, value) => node.setPositionType(position(value)),\n    right: (node, value) => node.setPosition(Edge.Right, value),\n    start: (node, value) => node.setPosition(Edge.Start, value),\n    top: (node, value) => node.setPosition(Edge.Top, value),\n    insetInline: (node, value) => node.setPosition(Edge.Horizontal, value),\n    insetBlock: (node, value) => node.setPosition(Edge.Vertical, value),\n    inset: (node, value) => node.setPosition(Edge.All, value),\n    width: (node, value) => node.setWidth(value),\n} as const;\n\nfunction alignContent(str: keyof typeof ALIGN_CONTENT_MAP): Align {\n    if (str in ALIGN_CONTENT_MAP) return ALIGN_CONTENT_MAP[str];\n\n    throw new Error(`\"${str}\" is not a valid value for alignContent`);\n}\n\nfunction alignItems(str: keyof typeof ALIGN_ITEMS_MAP): Align {\n    if (str in ALIGN_ITEMS_MAP) return ALIGN_ITEMS_MAP[str];\n\n    throw new Error(`\"${str}\" is not a valid value for alignItems`);\n}\n\nfunction alignSelf(str: keyof typeof ALIGN_SELF_MAP): Align {\n    if (str in ALIGN_SELF_MAP) return ALIGN_SELF_MAP[str];\n\n    throw new Error(`\"${str}\" is not a valid value for alignSelf`);\n}\nfunction boxSizing(str: keyof typeof BOX_SIZING_MAP): BoxSizing {\n    if (str in BOX_SIZING_MAP) return BOX_SIZING_MAP[str];\n\n    throw new Error(`\"${str}\" is not a valid value for boxSizing`);\n}\n\nfunction direction(str: keyof typeof DIRECTION_MAP): Direction {\n    if (str in DIRECTION_MAP) return DIRECTION_MAP[str];\n\n    throw new Error(`\"${str}\" is not a valid value for direction`);\n}\n\nfunction display(str: keyof typeof DISPLAY_MAP): Display {\n    if (str in DISPLAY_MAP) return DISPLAY_MAP[str];\n\n    throw new Error(`\"${str}\" is not a valid value for display`);\n}\n\nfunction flexDirection(str: keyof typeof FLEX_DIRECTION_MAP): FlexDirection {\n    if (str in FLEX_DIRECTION_MAP) return FLEX_DIRECTION_MAP[str];\n\n    throw new Error(`\"${str}\" is not a valid value for flexDirection`);\n}\n\nfunction flexWrap(str: keyof typeof FLEX_WRAP_MAP): Wrap {\n    if (str in FLEX_WRAP_MAP) return FLEX_WRAP_MAP[str];\n\n    throw new Error(`\"${str}\" is not a valid value for flexWrap`);\n}\n\nfunction justifyContent(str: keyof typeof JUSTIFY_CONTENT_MAP): Justify {\n    if (str in JUSTIFY_CONTENT_MAP) return JUSTIFY_CONTENT_MAP[str];\n\n    throw new Error(`\"${str}\" is not a valid value for justifyContent`);\n}\n\nfunction overflow(str: keyof typeof OVERFLOW_MAP): Overflow {\n    if (str in OVERFLOW_MAP) return OVERFLOW_MAP[str];\n\n    throw new Error(`\"${str}\" is not a valid value for overflow`);\n}\n\nfunction position(str: keyof typeof POSITION_MAP): PositionType {\n    if (str in POSITION_MAP) return POSITION_MAP[str];\n\n    throw new Error(`\"${str}\" is not a valid value for position`);\n}\n\n/**\n * Applies CSS-like flex styles to a Yoga node\n * Maps style properties to appropriate Yoga API calls\n *\n * @param node - The Yoga node to apply styles to\n * @param style - CSS-like flex style object\n */\nexport function applyStyle(node: YogaNode, style: YogaStyles = {}): void {\n    for (const [key, value] of Object.entries(style)) {\n        try {\n            const setter = styleSetters[key as keyof YogaStyles];\n\n            if (setter) {\n                setter(node, value);\n            }\n        } catch (_e) {\n            // Fail gracefully\n        }\n    }\n\n    // if both left and right are set, width is set to auto\n    // otherwise set the current width either from style or discovered size\n    if (style.width !== undefined) {\n        const widthValue = style.left !== undefined && style.right !== undefined ? 'auto' : style.width;\n\n        node.setWidth(widthValue as number);\n    }\n\n    // if both top and bottom are set, height is set to auto\n    // otherwise set the current height either from style or discovered size\n    if (style.height !== undefined) {\n        const heightValue = style.top !== undefined && style.bottom !== undefined ? 'auto' : style.height;\n\n        node.setHeight(heightValue as number);\n    }\n}\n"],"names":["Align","BoxSizing","Direction","Display","FlexDirection","Wrap","Justify","Overflow","PositionType","Edge","Gutter"],"mappings":"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"}