// Built-in JSX views and host helpers. Editor metadata only. /** โหนดการวาด JSX */ interface View {} /** คุณสมบัติของมุมมอง */ type ViewContent = View | string | number | boolean | null | undefined | ViewContent[]; /** คุณสมบัติของมุมมอง */ type TextContent = string | number | bigint | boolean | symbol | { toString(): string } | null | undefined; /** ข้อมูลสี HDR สำหรับสีและการไล่ระดับสี */ type HDRColor = { readonly $type: "CapDrive.HDR"; readonly color: string }; /** คุณสมบัติของมุมมอง */ type RGBColor = { space?: "srgb" | "displayP3"; r: number; g: number; b: number; a?: number }; /** คุณสมบัติของมุมมอง */ type Color = string | RGBColor | HDRColor; /** คุณสมบัติของมุมมอง */ type ViewPoint = { x: number; y: number }; /** คุณสมบัติของมุมมอง */ type ChartDataPoint = { value: { x: number; y: number | null }; label: { x: string; y: string } }; /** คุณสมบัติของมุมมอง */ type ChartRange = readonly [min: number, max: number]; /** คุณสมบัติของมุมมอง */ type MapCoordinate = { latitude: number; longitude: number }; /** คุณสมบัติของมุมมอง */ type MapPathStyle = { stroke?: Color; lineWidth?: number; lineCap?: "round" | "butt" | "square"; lineJoin?: "round" | "miter" | "bevel"; dash?: readonly number[]; dashPhase?: number; outlineStroke?: Color; outlineWidth?: number; showEndpoints?: boolean }; /** คุณสมบัติของมุมมอง */ type ChartAxisStyle = { stroke?: Paint; lineWidth?: number; lineCap?: "round" | "butt" | "square"; dash?: readonly number[]; dashPhase?: number }; /** คุณสมบัติของมุมมอง */ type BarChartDataPoint = { value: number; label?: string }; /** คุณสมบัติของมุมมอง */ type PathCommand = { op: "move"; x: number; y: number } | { op: "line"; x: number; y: number } | { op: "quad"; x: number; y: number; cx: number; cy: number } | { op: "cubic"; x: number; y: number; c1x: number; c1y: number; c2x: number; c2y: number } | { op: "arc"; x: number; y: number; radius: number; startAngle: number; sweepAngle: number } | { op: "close" }; /** คุณสมบัติของมุมมอง */ type GradientStop = Color | { color: Color; location: number }; /** คุณสมบัติของมุมมอง */ type GradientColors = ReadonlyArray; /** คุณสมบัติของมุมมอง */ type LinearGradientOptions = { angle?: number; center?: ViewPoint }; /** คุณสมบัติของมุมมอง */ type RadialGradientOptions = { startRadius?: number; endRadius?: number; center?: ViewPoint }; /** คุณสมบัติของมุมมอง */ type AngularGradientOptions = { angle?: number; center?: ViewPoint }; /** คุณสมบัติของมุมมอง */ type Gradient = { readonly type: "linear" | "radial" | "angular"; readonly angle?: number; readonly startRadius?: number; readonly endRadius?: number; readonly center?: ViewPoint; readonly colors: GradientColors }; /** คุณสมบัติของมุมมอง */ type Paint = Color | Gradient; /** คุณสมบัติของมุมมอง */ type DrawingEffect = { color?: Color; opacity?: number; radius?: number; x?: number; y?: number }; /** คุณสมบัติของมุมมอง */ type ViewTransform = { translateX?: number; translateY?: number; scaleX?: number; scaleY?: number; rotation?: number; skewX?: number; skewY?: number; anchorX?: number; anchorY?: number }; /** คุณสมบัติของมุมมอง */ type RepeatAxisValue = number | { x?: number; y?: number }; /** คุณสมบัติของมุมมอง */ type AnimationProperty = "width" | "height" | "padding" | "x" | "y" | "opacity" | "cornerRadius" | "blur" | "shadowOpacity" | "shadowRadius" | "shadowX" | "shadowY" | "fontSize" | "letterSpacing" | "minimumScaleFactor" | "spacing" | "radius" | "radiusX" | "radiusY" | "startAngle" | "sweepAngle" | "lineWidth" | "dashPhase" | "trimStart" | "trimEnd" | "barThickness" | "value" | "offset" | "anchor" | "period" | "minLength" | "color" | "stroke" | "background" | "shadowColor" | "transform.translateX" | "transform.translateY" | "transform.scaleX" | "transform.scaleY" | "transform.rotation" | "transform.skewX" | "transform.skewY" | "transform.anchorX" | "transform.anchorY" | "period.x" | "period.y" | "value.x" | "value.y" | "anchor.x" | "anchor.y" | "offset.x" | "offset.y" | "start.x" | "start.y" | "end.x" | "end.y" | "rangeX.0" | "rangeX.1" | "rangeY.0" | "rangeY.1" | "xAxis.lineWidth" | "xAxis.dashPhase" | "yAxis.lineWidth" | "yAxis.dashPhase" | "xAxis.stroke" | "yAxis.stroke" | "regionOffset.x" | "regionOffset.y" | "pathStyle.lineWidth" | "pathStyle.outlineWidth" | "pathStyle.dashPhase" | "pathStyle.stroke" | "pathStyle.outlineStroke"; /** คุณสมบัติของมุมมอง */ type Animation = { property: AnimationProperty; duration?: number; delay?: number; curve?: string; from?: number | Color; to?: number | Color; repeat?: number | "forever"; autoreverse?: boolean; wrap?: number }; /** คุณสมบัติของมุมมอง */ type CircleAnimation = (Omit & { property: "width" | "height" | "x" | "y" | "opacity" | "background" | "blur" | "shadowColor" | "shadowOpacity" | "shadowRadius" | "shadowX" | "shadowY" | "dashPhase" | "stroke" | "lineWidth" | "startAngle" | "transform.translateX" | "transform.translateY" | "transform.scaleX" | "transform.scaleY" | "transform.rotation" | "transform.skewX" | "transform.skewY" | "transform.anchorX" | "transform.anchorY" }) | (Omit & { property: "sweepAngle"; from?: number; to?: number; wrap?: never }); /** คุณสมบัติของมุมมอง */ type EllipseAnimation = (Omit & { property: "width" | "height" | "x" | "y" | "opacity" | "background" | "blur" | "shadowColor" | "shadowOpacity" | "shadowRadius" | "shadowX" | "shadowY" | "dashPhase" | "stroke" | "lineWidth" | "startAngle" | "transform.translateX" | "transform.translateY" | "transform.scaleX" | "transform.scaleY" | "transform.rotation" | "transform.skewX" | "transform.skewY" | "transform.anchorX" | "transform.anchorY" }) | (Omit & { property: "sweepAngle"; from?: number; to?: number; wrap?: never }); /** คุณสมบัติของมุมมอง */ type ArcAnimation = (Omit & { property: "width" | "height" | "x" | "y" | "opacity" | "background" | "blur" | "shadowColor" | "shadowOpacity" | "shadowRadius" | "shadowX" | "shadowY" | "dashPhase" | "stroke" | "lineWidth" | "startAngle" | "transform.translateX" | "transform.translateY" | "transform.scaleX" | "transform.scaleY" | "transform.rotation" | "transform.skewX" | "transform.skewY" | "transform.anchorX" | "transform.anchorY" }) | (Omit & { property: "sweepAngle"; from?: number; to?: number; wrap?: never }); /** คุณสมบัติของมุมมอง */ type MapAnimation = (Omit & { property: "width" | "height" | "x" | "y" | "opacity" | "cornerRadius" | "transform.translateX" | "transform.translateY" | "transform.scaleX" | "transform.scaleY" | "transform.rotation" | "transform.skewX" | "transform.skewY" | "transform.anchorX" | "transform.anchorY" | "regionOffset.x" | "regionOffset.y" | "pathStyle.lineWidth" | "pathStyle.outlineWidth" | "pathStyle.dashPhase"; from?: number; to?: number }) | (Omit & { property: "pathStyle.stroke" | "pathStyle.outlineStroke"; from?: Color; to?: Color; wrap?: never }); /** คุณสมบัติของมุมมอง */ type LineChartAnimation = (Omit & { property: "width" | "height" | "x" | "y" | "opacity" | "blur" | "shadowColor" | "shadowOpacity" | "shadowRadius" | "shadowX" | "shadowY" | "stroke" | "lineWidth" | "dashPhase" | "transform.translateX" | "transform.translateY" | "transform.scaleX" | "transform.scaleY" | "transform.rotation" | "transform.skewX" | "transform.skewY" | "transform.anchorX" | "transform.anchorY" }) | (Omit & { property: "rangeX.0" | "rangeX.1" | "rangeY.0" | "rangeY.1"; from?: number; to?: number; wrap?: never }) | (Omit & { property: "xAxis.lineWidth" | "xAxis.dashPhase" | "yAxis.lineWidth" | "yAxis.dashPhase"; from?: number; to?: number }) | (Omit & { property: "xAxis.stroke" | "yAxis.stroke"; from?: Color; to?: Color; wrap?: never }); /** คุณสมบัติของมุมมอง */ type BarChartAnimation = (Omit & { property: "width" | "height" | "x" | "y" | "opacity" | "background" | "cornerRadius" | "blur" | "shadowColor" | "shadowOpacity" | "shadowRadius" | "shadowX" | "shadowY" | "barThickness" | "stroke" | "lineWidth" | "dashPhase" | "transform.translateX" | "transform.translateY" | "transform.scaleX" | "transform.scaleY" | "transform.rotation" | "transform.skewX" | "transform.skewY" | "transform.anchorX" | "transform.anchorY" }) | (Omit & { property: "rangeY.0" | "rangeY.1"; from?: number; to?: number; wrap?: never }) | (Omit & { property: "xAxis.lineWidth" | "xAxis.dashPhase" | "yAxis.lineWidth" | "yAxis.dashPhase"; from?: number; to?: number }) | (Omit & { property: "xAxis.stroke" | "yAxis.stroke"; from?: Color; to?: Color; wrap?: never }); /** คุณสมบัติของมุมมอง */ type RadialLayoutAnimation = (Omit & { property: "width" | "height" | "padding" | "x" | "y" | "opacity" | "background" | "cornerRadius" | "blur" | "shadowColor" | "shadowOpacity" | "shadowRadius" | "shadowX" | "shadowY" | "radius" | "radiusX" | "radiusY" | "startAngle" | "transform.translateX" | "transform.translateY" | "transform.scaleX" | "transform.scaleY" | "transform.rotation" | "transform.skewX" | "transform.skewY" | "transform.anchorX" | "transform.anchorY" }) | (Omit & { property: "sweepAngle"; from?: number; to?: number; wrap?: never }); /** คุณสมบัติของมุมมอง */ type SpacerAnimation = { property: "width" | "height" | "minLength"; duration?: number; delay?: number; curve?: string; from?: number; to?: number; repeat?: number | "forever"; autoreverse?: boolean; wrap?: number }; /** คุณสมบัติของมุมมอง */ type ContentAnimation = { type: "fade" | "slide" | "scale" | "numericText" | "interpolate"; duration?: number; delay?: number; curve?: string; direction?: string; distance?: number; scale?: number }; /** คุณสมบัติของมุมมอง */ type ViewSize = { width: number; height: number }; /** คุณสมบัติของมุมมอง */ type ViewInsets = { top: number; leading: number; bottom: number; trailing: number }; /** คุณสมบัติของมุมมอง */ type CardContentMetrics = { size: ViewSize; contentSize: ViewSize; headerSize: ViewSize; safeInsets: ViewInsets }; interface CommonViewProps { /** ตัวระบุที่คงที่ระหว่างองค์ประกอบระดับเดียวกัน */ key?: string | number; /** เนื้อหาการวาดของมุมมองลูก */ children?: ViewContent; /** ความกว้างเป็นพอยต์ ปรับขนาดอัตโนมัติ หรือเติมเต็มพื้นที่แม่ */ width?: number | "auto" | "fill"; /** ความสูงเป็นพอยต์ ปรับขนาดอัตโนมัติ หรือเติมเต็มพื้นที่แม่ */ height?: number | "auto" | "fill"; /** ระยะขอบภายในเนื้อหา หน่วยพอยต์ */ padding?: number; /** คุณสมบัติของมุมมอง */ x?: number; /** คุณสมบัติของมุมมอง */ y?: number; /** คุณสมบัติของมุมมอง */ opacity?: number; /** คุณสมบัติของมุมมอง */ background?: Paint; /** คุณสมบัติของมุมมอง */ cornerRadius?: number; /** คุณสมบัติของมุมมอง */ clipped?: boolean; /** คุณสมบัติของมุมมอง */ clip?: "rectangle" | "ellipse"; /** คุณสมบัติของมุมมอง */ blur?: number; /** คุณสมบัติของมุมมอง */ zIndex?: number; /** คุณสมบัติของมุมมอง */ innerShadow?: DrawingEffect; /** คุณสมบัติของมุมมอง */ glow?: DrawingEffect; /** คุณสมบัติของมุมมอง */ shadowColor?: Color; /** คุณสมบัติของมุมมอง */ shadowOpacity?: number; /** คุณสมบัติของมุมมอง */ shadowRadius?: number; /** คุณสมบัติของมุมมอง */ shadowX?: number; /** คุณสมบัติของมุมมอง */ shadowY?: number; /** View มาสก์อัลฟา จัดกึ่งกลางโดยไม่ส่งผลต่อเลย์เอาต์; null ปิดการใช้มาสก์ */ mask?: View | null; /** คุณสมบัติของมุมมอง */ transform?: ViewTransform; /** คุณสมบัติของมุมมอง */ animations?: Animation[]; } interface TextProps extends CommonViewProps { /** เนื้อหาการวาดของมุมมองลูก */ children?: TextContent | TextContent[]; /** ขนาดตัวอักษร หน่วยพอยต์ */ fontSize?: number; /** คุณสมบัติของมุมมอง */ fontWeight?: "ultraLight" | "thin" | "light" | "regular" | "medium" | "semibold" | "bold" | "heavy" | "black"; /** คุณสมบัติของมุมมอง */ font?: "default" | "rounded" | "monospaced" | "serif"; /** คุณสมบัติของมุมมอง */ monospacedDigits?: boolean; /** คุณสมบัติของมุมมอง */ letterSpacing?: number; /** คุณสมบัติของมุมมอง */ minimumScaleFactor?: number; /** คุณสมบัติของมุมมอง */ lineLimit?: number | null; /** คุณสมบัติของมุมมอง */ truncationMode?: "head" | "middle" | "tail"; /** สีสำหรับการวาด รวมถึงสี HDR */ color?: Paint; /** คุณสมบัติของมุมมอง */ alignment?: "leading" | "center" | "trailing"; /** คุณสมบัติของมุมมอง */ contentAnimation?: ContentAnimation; } interface ImageProps extends CommonViewProps { children?: never; /** คุณสมบัติของมุมมอง */ source: string; /** คุณสมบัติของมุมมอง */ contentMode?: "fit" | "fill" | "stretch"; /** คุณสมบัติของมุมมอง */ repeatMode?: "none" | "repeat" | "repeatX" | "repeatY"; /** คุณสมบัติของมุมมอง */ renderingMode?: "original" | "template"; /** สีสำหรับการวาด รวมถึงสี HDR */ color?: Paint; /** คุณสมบัติของมุมมอง */ contentAnimation?: ContentAnimation; } interface GroupProps { /** ตัวระบุที่คงที่ระหว่างองค์ประกอบระดับเดียวกัน */ key?: string | number; /** เนื้อหาการวาดของมุมมองลูก */ children?: ViewContent; /** คุณสมบัติของมุมมอง */ opacity?: number; /** คุณสมบัติของมุมมอง */ background?: Paint; /** คุณสมบัติของมุมมอง */ cornerRadius?: number; /** คุณสมบัติของมุมมอง */ clipped?: boolean; /** คุณสมบัติของมุมมอง */ clip?: "rectangle" | "ellipse"; /** คุณสมบัติของมุมมอง */ blur?: number; /** คุณสมบัติของมุมมอง */ zIndex?: number; /** คุณสมบัติของมุมมอง */ innerShadow?: DrawingEffect; /** คุณสมบัติของมุมมอง */ glow?: DrawingEffect; /** คุณสมบัติของมุมมอง */ shadowColor?: Color; /** คุณสมบัติของมุมมอง */ shadowOpacity?: number; /** คุณสมบัติของมุมมอง */ shadowRadius?: number; /** คุณสมบัติของมุมมอง */ shadowX?: number; /** คุณสมบัติของมุมมอง */ shadowY?: number; /** View มาสก์อัลฟา จัดกึ่งกลางโดยไม่ส่งผลต่อเลย์เอาต์; null ปิดการใช้มาสก์ */ mask?: View | null; /** คุณสมบัติของมุมมอง */ transform?: ViewTransform; /** คุณสมบัติของมุมมอง */ animations?: Animation[]; } interface SpacerProps { children?: never; /** ตัวระบุที่คงที่ระหว่างองค์ประกอบระดับเดียวกัน */ key?: string | number; /** ความกว้างเป็นพอยต์ ปรับขนาดอัตโนมัติ หรือเติมเต็มพื้นที่แม่ */ width?: number | "auto" | "fill"; /** ความสูงเป็นพอยต์ ปรับขนาดอัตโนมัติ หรือเติมเต็มพื้นที่แม่ */ height?: number | "auto" | "fill"; /** คุณสมบัติของมุมมอง */ minLength?: number; /** คุณสมบัติของมุมมอง */ animations?: SpacerAnimation[]; } interface VStackProps extends CommonViewProps { /** ระยะห่างระหว่างมุมมองลูก หน่วยพอยต์ */ spacing?: number; /** คุณสมบัติของมุมมอง */ alignment?: "leading" | "center" | "trailing"; } interface HStackProps extends CommonViewProps { /** ระยะห่างระหว่างมุมมองลูก หน่วยพอยต์ */ spacing?: number; /** คุณสมบัติของมุมมอง */ alignment?: "top" | "center" | "bottom" | "firstTextBaseline" | "lastTextBaseline"; } interface ZStackProps extends CommonViewProps { /** คุณสมบัติของมุมมอง */ alignment?: "topLeading" | "top" | "topTrailing" | "leading" | "center" | "trailing" | "bottomLeading" | "bottom" | "bottomTrailing"; } interface MaterialProps { children?: never; /** ตัวระบุที่คงที่ระหว่างองค์ประกอบระดับเดียวกัน */ key?: string | number; /** ความกว้างเป็นพอยต์ ปรับขนาดอัตโนมัติ หรือเติมเต็มพื้นที่แม่ */ width?: number | "auto" | "fill"; /** ความสูงเป็นพอยต์ ปรับขนาดอัตโนมัติ หรือเติมเต็มพื้นที่แม่ */ height?: number | "auto" | "fill"; /** คุณสมบัติของมุมมอง */ x?: number; /** คุณสมบัติของมุมมอง */ y?: number; /** คุณสมบัติของมุมมอง */ opacity?: number; /** คุณสมบัติของมุมมอง */ background?: Paint; /** คุณสมบัติของมุมมอง */ cornerRadius?: number; /** คุณสมบัติของมุมมอง */ clipped?: boolean; /** คุณสมบัติของมุมมอง */ clip?: boolean | "rectangle" | "ellipse"; /** คุณสมบัติของมุมมอง */ blur?: number; /** คุณสมบัติของมุมมอง */ zIndex?: number; /** คุณสมบัติของมุมมอง */ innerShadow?: DrawingEffect; /** คุณสมบัติของมุมมอง */ glow?: DrawingEffect; /** คุณสมบัติของมุมมอง */ shadowColor?: Color; /** คุณสมบัติของมุมมอง */ shadowOpacity?: number; /** คุณสมบัติของมุมมอง */ shadowRadius?: number; /** คุณสมบัติของมุมมอง */ shadowX?: number; /** คุณสมบัติของมุมมอง */ shadowY?: number; /** View มาสก์อัลฟา จัดกึ่งกลางโดยไม่ส่งผลต่อเลย์เอาต์; null ปิดการใช้มาสก์ */ mask?: View | null; /** คุณสมบัติของมุมมอง */ transform?: ViewTransform; /** คุณสมบัติของมุมมอง */ animations?: Animation[]; /** คุณสมบัติของมุมมอง */ type: "frosted"; /** คุณสมบัติของมุมมอง */ style?: "ultraThin" | "thin" | "regular" | "thick" | "ultraThick" | "bar"; } interface CardContentBase extends Omit { /** ข้อความส่วนหัวหรือ View */ title?: string | View | null; /** ข้อความหรือ View ที่ท้ายส่วนหัว */ trailing?: string | View | null; /** คุณสมบัติของมุมมอง */ contentMode?: "inset" | "full"; /** คุณสมบัติของมุมมอง */ headerBackground?: View | null; } interface SymbolProps extends CommonViewProps { children?: never; /** คุณสมบัติของมุมมอง */ name: string; /** ขนาดตัวอักษร หน่วยพอยต์ */ fontSize?: number; /** คุณสมบัติของมุมมอง */ fontWeight?: "ultraLight" | "thin" | "light" | "regular" | "medium" | "semibold" | "bold" | "heavy" | "black"; /** คุณสมบัติของมุมมอง */ imageScale?: "small" | "medium" | "large"; /** คุณสมบัติของมุมมอง */ renderingMode?: "monochrome" | "hierarchical" | "palette" | "multicolor"; /** คุณสมบัติของมุมมอง */ paletteColors?: [Color] | [Color, Color] | [Color, Color, Color]; /** สีสำหรับการวาด รวมถึงสี HDR */ color?: Paint; /** คุณสมบัติของมุมมอง */ contentAnimation?: ContentAnimation; } interface RepeatedLayoutProps extends Omit { /** คุณสมบัติของมุมมอง */ axis?: "horizontal" | "vertical" | "both"; /** คุณสมบัติของมุมมอง */ period?: RepeatAxisValue; /** คุณสมบัติของมุมมอง */ value?: RepeatAxisValue; /** คุณสมบัติของมุมมอง */ anchor?: RepeatAxisValue; /** คุณสมบัติของมุมมอง */ offset?: RepeatAxisValue; /** คุณสมบัติของมุมมอง */ alignment?: "topLeading" | "top" | "topTrailing" | "leading" | "center" | "trailing" | "bottomLeading" | "bottom" | "bottomTrailing"; } interface RadialLayoutProps extends CommonViewProps { /** คุณสมบัติของมุมมอง */ animations?: RadialLayoutAnimation[]; /** คุณสมบัติของมุมมอง */ radius?: number; /** คุณสมบัติของมุมมอง */ radiusX?: number; /** คุณสมบัติของมุมมอง */ radiusY?: number; /** มุมเริ่มต้นเป็นองศา ปรับด้วยโมดูโล 360 ขณะสุ่มตัวอย่าง */ startAngle?: number; /** มุมกวาดเป็นองศา จำกัดไว้ที่ -360…360 ขณะสุ่มตัวอย่าง ค่าบวกหมุนตามเข็มนาฬิกา ไม่รองรับ wrap */ sweepAngle?: number; /** คุณสมบัติของมุมมอง */ includeEnd?: boolean; /** คุณสมบัติของมุมมอง */ childRotation?: "none" | "radial" | "tangent"; } interface CircleProps extends Omit { children?: never; /** คุณสมบัติของมุมมอง */ animations?: CircleAnimation[]; /** คุณสมบัติของมุมมอง */ lineCap?: "round" | "butt" | "square"; /** คุณสมบัติของมุมมอง */ dashPhase?: number; /** สีเส้นขอบของรูปทรง */ stroke?: Paint; /** คุณสมบัติของมุมมอง */ lineWidth?: number; /** คุณสมบัติของมุมมอง */ dash?: number[]; /** มุมเริ่มต้นเป็นองศา ปรับด้วยโมดูโล 360 ขณะสุ่มตัวอย่าง */ startAngle?: number; /** มุมกวาดเป็นองศา จำกัดไว้ที่ -360…360 ขณะสุ่มตัวอย่าง ค่าบวกหมุนตามเข็มนาฬิกา ไม่รองรับ wrap */ sweepAngle?: number; /** ตำแหน่งเส้นขอบเทียบกับเส้นรอบวงกลมหรือวงรีเต็ม ค่าเริ่มต้นคือ inside */ strokePosition?: "inside" | "center" | "outside"; } interface EllipseProps extends Omit { children?: never; /** คุณสมบัติของมุมมอง */ animations?: EllipseAnimation[]; /** คุณสมบัติของมุมมอง */ lineCap?: "round" | "butt" | "square"; /** คุณสมบัติของมุมมอง */ dashPhase?: number; /** สีเส้นขอบของรูปทรง */ stroke?: Paint; /** คุณสมบัติของมุมมอง */ lineWidth?: number; /** คุณสมบัติของมุมมอง */ dash?: number[]; /** มุมเริ่มต้นเป็นองศา ปรับด้วยโมดูโล 360 ขณะสุ่มตัวอย่าง */ startAngle?: number; /** มุมกวาดเป็นองศา จำกัดไว้ที่ -360…360 ขณะสุ่มตัวอย่าง ค่าบวกหมุนตามเข็มนาฬิกา ไม่รองรับ wrap */ sweepAngle?: number; /** ตำแหน่งเส้นขอบเทียบกับเส้นรอบวงกลมหรือวงรีเต็ม ค่าเริ่มต้นคือ inside */ strokePosition?: "inside" | "center" | "outside"; } interface RectangleProps extends Omit { children?: never; /** คุณสมบัติของมุมมอง */ trimStart?: number; /** คุณสมบัติของมุมมอง */ trimEnd?: number; /** คุณสมบัติของมุมมอง */ lineCap?: "round" | "butt" | "square"; /** คุณสมบัติของมุมมอง */ lineJoin?: "round" | "miter" | "bevel"; /** คุณสมบัติของมุมมอง */ dashPhase?: number; /** สีเส้นขอบของรูปทรง */ stroke?: Paint; /** คุณสมบัติของมุมมอง */ lineWidth?: number; /** คุณสมบัติของมุมมอง */ dash?: number[]; /** คุณสมบัติของมุมมอง */ strokePosition?: "inside" | "center" | "outside"; } interface LineProps extends Omit { children?: never; /** คุณสมบัติของมุมมอง */ trimStart?: number; /** คุณสมบัติของมุมมอง */ trimEnd?: number; /** คุณสมบัติของมุมมอง */ lineCap?: "round" | "butt" | "square"; /** คุณสมบัติของมุมมอง */ dashPhase?: number; /** สีเส้นขอบของรูปทรง */ stroke?: Paint; /** คุณสมบัติของมุมมอง */ lineWidth?: number; /** คุณสมบัติของมุมมอง */ dash?: number[]; /** คุณสมบัติของมุมมอง */ start?: ViewPoint; /** คุณสมบัติของมุมมอง */ end?: ViewPoint; } interface ArcProps extends Omit { children?: never; /** คุณสมบัติของมุมมอง */ animations?: ArcAnimation[]; /** คุณสมบัติของมุมมอง */ lineCap?: "round" | "butt" | "square"; /** คุณสมบัติของมุมมอง */ dashPhase?: number; /** สีเส้นขอบของรูปทรง */ stroke?: Paint; /** คุณสมบัติของมุมมอง */ lineWidth?: number; /** คุณสมบัติของมุมมอง */ dash?: number[]; /** มุมเริ่มต้นเป็นองศา ปรับด้วยโมดูโล 360 ขณะสุ่มตัวอย่าง */ startAngle?: number; /** มุมกวาดเป็นองศา จำกัดไว้ที่ -360…360 ขณะสุ่มตัวอย่าง ค่าบวกหมุนตามเข็มนาฬิกา ไม่รองรับ wrap */ sweepAngle?: number; /** ตำแหน่งเส้นขอบเทียบกับเส้นรอบวงกลมหรือวงรีเต็ม ค่าเริ่มต้นคือ inside */ strokePosition?: "inside" | "center" | "outside"; } interface PolylineProps extends Omit { children?: never; /** คุณสมบัติของมุมมอง */ trimStart?: number; /** คุณสมบัติของมุมมอง */ trimEnd?: number; /** คุณสมบัติของมุมมอง */ lineCap?: "round" | "butt" | "square"; /** คุณสมบัติของมุมมอง */ lineJoin?: "round" | "miter" | "bevel"; /** คุณสมบัติของมุมมอง */ dashPhase?: number; /** สีเส้นขอบของรูปทรง */ stroke?: Paint; /** คุณสมบัติของมุมมอง */ lineWidth?: number; /** คุณสมบัติของมุมมอง */ dash?: number[]; /** พิกัดจุดภายใน หน่วย pt หากมีน้อยกว่าสองจุดจะไม่วาด */ points: ReadonlyArray; /** คุณสมบัติของมุมมอง */ closed?: boolean; /** การเปลี่ยนเนื้อหาแบบเลือกได้ interpolate ต้องมีจำนวนจุดและสถานะการปิดเหมือนกัน มิฉะนั้นจะอัปเดตทันที */ contentAnimation?: ContentAnimation; } interface MapProps extends Omit { children?: never; /** คุณสมบัติของมุมมอง */ animations?: MapAnimation[]; /** คุณสมบัติของมุมมอง */ showUserLocation?: boolean; /** ศูนย์กลางกล้อง: ตำแหน่งระบบ ตำแหน่งปัจจุบันของมาตรวัด หรือพิกัดคงที่ ค่าเริ่มต้นคือ userLocation */ center?: "userLocation" | "dataLocation" | MapCoordinate; /** ออฟเซ็ตพื้นที่แสดงเป็นพอยต์ ค่า x/y บวกเลื่อนพื้นที่ไปทางขวา/ล่าง และเนื้อหาแผนที่ไปทางซ้าย/บน */ regionOffset?: ViewPoint; /** พิกัดเส้นทางตามลำดับ null ใช้แบ่งช่วง ใช้ละติจูด/ลองจิจูด อาร์เรย์ว่างจะไม่วาดเส้นทาง */ path?: ReadonlyArray; /** รูปแบบเส้นทางเนทีฟ: Color ความหนา ปลาย จุดเชื่อม เส้นประ เส้นขอบ และเครื่องหมายเริ่ม/จบ ไม่รองรับไล่สี */ pathStyle?: MapPathStyle; /** ทิศกล้อง: northUp, vehicle, path หรือองศาโมดูโล 360 ทิศเส้นทางจะไม่ข้ามจุดแบ่งช่วง */ heading?: "northUp" | "vehicle" | "path" | number; /** เคลื่อนไหวการเปลี่ยนกล้องเนทีฟ เปิดโดยค่าเริ่มต้น ยกเว้นเฟรมแรกและโหมดลดการเคลื่อนไหว */ cameraAnimation?: boolean; /** คุณสมบัติของมุมมอง */ appearance?: "automatic" | "light" | "dark"; /** คุณสมบัติของมุมมอง */ mapStyle?: "standard" | "satellite" | "hybrid"; /** คุณสมบัติของมุมมอง */ pitch?: number; } interface PathProps extends Omit { children?: never; /** คุณสมบัติของมุมมอง */ trimStart?: number; /** คุณสมบัติของมุมมอง */ trimEnd?: number; /** คุณสมบัติของมุมมอง */ lineCap?: "round" | "butt" | "square"; /** คุณสมบัติของมุมมอง */ lineJoin?: "round" | "miter" | "bevel"; /** คุณสมบัติของมุมมอง */ dashPhase?: number; /** สีเส้นขอบของรูปทรง */ stroke?: Paint; /** คุณสมบัติของมุมมอง */ lineWidth?: number; /** คุณสมบัติของมุมมอง */ dash?: number[]; /** กฎการเติมเส้นทาง: nonZero หรือ evenOdd */ fillRule?: "nonZero" | "evenOdd"; /** คำสั่งเส้นทางภายใน หน่วย pt อาร์เรย์ว่างจะไม่วาด */ commands: ReadonlyArray; /** การเปลี่ยนเนื้อหาแบบเลือกได้ interpolate ต้องมีจำนวนคำสั่งและลำดับการทำงานเหมือนกัน มิฉะนั้นจะอัปเดตทันที */ contentAnimation?: ContentAnimation; } interface BarChartProps extends Omit { children?: never; /** สีเติมแต่ละแท่ง ค่าเริ่มต้นคือสีพื้นหน้าของธีม */ background?: Paint; /** รัศมีมุมของแต่ละแท่ง จำกัดตามขนาดของแท่ง */ cornerRadius?: number; /** คุณสมบัติของมุมมอง */ animations?: BarChartAnimation[]; /** เส้นแกนนอนด้านล่างพื้นที่กราฟ ค่าเริ่มต้นเป็นสีพื้นหน้ากว้าง 1pt ใช้ stroke: clear เพื่อซ่อน */ xAxis?: ChartAxisStyle; /** เส้นแกนตั้งด้านซ้ายพื้นที่กราฟ ค่าเริ่มต้นเป็นสีพื้นหน้ากว้าง 1pt ใช้ stroke: clear เพื่อซ่อน */ yAxis?: ChartAxisStyle; /** หมวดหมู่ตามลำดับอาร์เรย์ แต่ละรายการมีค่าตัวเลขและป้ายกำกับที่เลือกใส่ได้ */ data: ReadonlyArray; /** ทิศทางแท่ง: vertical เรียงจากซ้ายไปขวา ส่วน horizontal เรียงจากบนลงล่าง */ axis?: "horizontal" | "vertical"; /** ช่วงค่าที่แสดง [min, max] หากไม่ระบุจะปรับตามข้อมูลและรวมศูนย์ */ rangeY?: ChartRange; /** แสดงป้ายกำกับหมวดหมู่ ป้ายที่ไม่ได้ระบุจะเว้นว่าง และเลย์เอาต์เนทีฟจะป้องกันการทับซ้อน */ showLabels?: boolean; /** แสดงป้ายตัวเลขบนแกนที่สร้างอัตโนมัติ */ showValueLabels?: boolean; /** ความหนาของแท่งเป็นพอยต์ หรือ auto เพื่อปรับตามระยะห่างหมวดหมู่ */ barThickness?: number | "auto"; /** สีเส้นขอบของรูปทรง */ stroke?: Paint; /** คุณสมบัติของมุมมอง */ lineWidth?: number; /** ตำแหน่งเส้นขอบเทียบกับแต่ละแท่ง ค่าเริ่มต้นคือ inside */ strokePosition?: "inside" | "center" | "outside"; /** คุณสมบัติของมุมมอง */ dash?: number[]; /** คุณสมบัติของมุมมอง */ dashPhase?: number; /** การเปลี่ยนเนื้อหาแบบเลือกได้ interpolate ต้องมีจำนวนหมวดหมู่และทิศทางเดียวกัน มิฉะนั้นจะอัปเดตทันที */ contentAnimation?: ContentAnimation; } interface LineChartProps extends Omit { children?: never; /** คุณสมบัติของมุมมอง */ animations?: LineChartAnimation[]; /** เส้นแกนนอนด้านล่างพื้นที่กราฟ ค่าเริ่มต้นเป็นสีพื้นหน้ากว้าง 1pt ใช้ stroke: clear เพื่อซ่อน */ xAxis?: ChartAxisStyle; /** เส้นแกนตั้งด้านซ้ายพื้นที่กราฟ ค่าเริ่มต้นเป็นสีพื้นหน้ากว้าง 1pt ใช้ stroke: clear เพื่อซ่อน */ yAxis?: ChartAxisStyle; /** ข้อมูลกราฟ value.x/y กำหนดพิกัด label.x/y กำหนดข้อความ และ y ที่เป็น null จะตัดเส้น */ data: ReadonlyArray; /** ช่วงตัวเลขที่แสดง [min, max] หากไม่ระบุจะปรับตามข้อมูลอัตโนมัติ */ rangeX?: ChartRange; /** ช่วงตัวเลขที่แสดง [min, max] หากไม่ระบุจะปรับตามข้อมูลอัตโนมัติ */ rangeY?: ChartRange; /** แสดงป้ายกำกับแกน เลย์เอาต์เนทีฟจะเลือกป้ายที่ไม่ทับซ้อนกัน */ showXLabels?: boolean; /** แสดงป้ายกำกับแกน เลย์เอาต์เนทีฟจะเลือกป้ายที่ไม่ทับซ้อนกัน */ showYLabels?: boolean; /** สีเส้นขอบของรูปทรง */ stroke?: Paint; /** คุณสมบัติของมุมมอง */ lineWidth?: number; /** คุณสมบัติของมุมมอง */ lineCap?: "round" | "butt" | "square"; /** คุณสมบัติของมุมมอง */ lineJoin?: "round" | "miter" | "bevel"; /** คุณสมบัติของมุมมอง */ dash?: number[]; /** คุณสมบัติของมุมมอง */ dashPhase?: number; /** การเปลี่ยนเนื้อหาแบบเลือกได้ interpolate ต้องมีจำนวนข้อมูลและตำแหน่งค่าว่างเหมือนกัน มิฉะนั้นจะอัปเดตทันที */ contentAnimation?: ContentAnimation; } type CardContentProps = CardContentBase & ({ children?: ViewContent; renderer?: never } | { children?: never; renderer: (metrics: CardContentMetrics) => ViewContent }); declare namespace CapDriveJSX { /** * วาดข้อความ * @param {TextProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function Text(props: TextProps): View; /** * แสดงทรัพยากรรูปภาพที่รวมไว้ * @param {ImageProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function Image(props: ImageProps): View; /** * ใช้การแปลงและเอฟเฟกต์กับมุมมองย่อยเป็นกลุ่มเดียว * @param {GroupProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function Group(props: GroupProps): View; /** * เว้นพื้นที่ที่ยืดหยุ่นได้ * @param {SpacerProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function Spacer(props: SpacerProps): View; /** * จัดวางมุมมองลูกในแนวตั้ง * @param {VStackProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function VStack(props: VStackProps): View; /** * จัดวางมุมมองลูกในแนวนอน * @param {HStackProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function HStack(props: HStackProps): View; /** * วางมุมมองลูกซ้อนกันจากด้านหลังมาด้านหน้า * @param {ZStackProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function ZStack(props: ZStackProps): View; /** * วาดวัสดุพื้นหลังแบบเนทีฟ * @param {MaterialProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function Material(props: MaterialProps): View; /** * จัดวางส่วนหัวและเนื้อหาของมาตรวัด * @param {CardContentProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function CardContent(props: CardContentProps): View; /** * วาดไอคอน SF Symbols * @param {SymbolProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function Symbol(props: SymbolProps): View; /** * วาดซ้ำแบบเป็นคาบรอบค่าปัจจุบัน * @param {RepeatedLayoutProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function RepeatedLayout(props: RepeatedLayoutProps): View; /** * จัดวางมุมมองลูกตามแนววงกลมหรือวงรี * @param {RadialLayoutProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function RadialLayout(props: RadialLayoutProps): View; /** * วาดวงกลม * @param {CircleProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function Circle(props: CircleProps): View; /** * วาดวงรี * @param {EllipseProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function Ellipse(props: EllipseProps): View; /** * วาดสี่เหลี่ยมผืนผ้า * @param {RectangleProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function Rectangle(props: RectangleProps): View; /** * วาดเส้นตรง * @param {LineProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function Line(props: LineProps): View; /** * วาดส่วนโค้งวงกลมหรือวงรี * @param {ArcProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function Arc(props: ArcProps): View; /** * วาดชุดจุดที่เชื่อมต่อกัน * @param {PolylineProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function Polyline(props: PolylineProps): View; /** * แสดงแผนที่แบบเนทีฟ * @param {MapProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function Map(props: MapProps): View; /** * วาดเส้นพาธ * @param {PathProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function Path(props: PathProps): View; /** * วาดแผนภูมิแท่ง * @param {BarChartProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function BarChart(props: BarChartProps): View; /** * วาดแผนภูมิเส้น * @param {LineChartProps} props คุณสมบัติของมุมมอง * @returns {View} โหนดการวาด JSX */ function LineChart(props: LineChartProps): View; } declare function CardContent(props: CardContentProps): View; /** * ทำเครื่องหมายสีเพื่อเพิ่มประสิทธิภาพ HDR โดยคงสี SDR เดิมไว้ * @param {string} color ชื่อสีหรือสีแบบเลขฐานสิบหก * @returns {HDRColor} ข้อมูลสี HDR สำหรับสีและการไล่ระดับสี */ interface HDRFactory { (color: string): HDRColor; new(color: string): HDRColor; } declare const HDR: HDRFactory; interface LinearGradientFactory { (colors: GradientColors, options?: LinearGradientOptions): Gradient; new(colors: GradientColors, options?: LinearGradientOptions): Gradient; } declare const LinearGradient: LinearGradientFactory; interface RadialGradientFactory { (colors: GradientColors, options?: RadialGradientOptions): Gradient; new(colors: GradientColors, options?: RadialGradientOptions): Gradient; } declare const RadialGradient: RadialGradientFactory; interface AngularGradientFactory { (colors: GradientColors, options?: AngularGradientOptions): Gradient; new(colors: GradientColors, options?: AngularGradientOptions): Gradient; } declare const AngularGradient: AngularGradientFactory;