@shopify/react-native-skia 2.6.9 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/cpp/jni/include/JniSkiaBaseView.h +6 -4
- package/android/cpp/jni/include/JniSkiaPictureView.h +8 -6
- package/android/cpp/rnskia-android/OpenGLContext.h +10 -1
- package/android/cpp/rnskia-android/RNSkAndroidView.h +8 -8
- package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.cpp +9 -5
- package/android/cpp/rnskia-android/RNSkOpenGLCanvasProvider.h +4 -2
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaBaseView.java +48 -12
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaBaseViewManager.java +5 -0
- package/android/src/main/java/com/shopify/reactnative/skia/SkiaPictureView.java +2 -2
- package/android/src/main/java/com/shopify/reactnative/skia/ViewScreenshotService.java +11 -7
- package/apple/MetalContext.h +7 -6
- package/apple/MetalLayerColorSpace.mm +39 -0
- package/apple/MetalLayerColorSpaceUtils.h +34 -0
- package/apple/MetalWindowContext.h +3 -1
- package/apple/MetalWindowContext.mm +9 -8
- package/apple/RNSkAppleView.h +6 -0
- package/apple/RNSkMetalCanvasProvider.h +2 -0
- package/apple/RNSkMetalCanvasProvider.mm +15 -2
- package/apple/SkiaPictureView.mm +1 -0
- package/apple/SkiaPictureViewManager.mm +5 -0
- package/apple/SkiaUIView.h +1 -0
- package/apple/SkiaUIView.mm +9 -0
- package/cpp/api/JsiSkSurface.h +8 -2
- package/cpp/rnskia/RNDawnContext.h +4 -3
- package/cpp/rnskia/RNDawnUtils.h +25 -6
- package/cpp/rnskia/RNDawnWindowContext.h +44 -10
- package/cpp/rnskia/RNMetalLayerColorSpace.h +16 -0
- package/cpp/rnskia/RNSkJsiViewApi.h +46 -24
- package/cpp/rnwgpu/SurfaceRegistry.h +10 -4
- package/lib/commonjs/Platform/Platform.web.js +2 -90
- package/lib/commonjs/Platform/Platform.web.js.map +1 -1
- package/lib/commonjs/mock/index.js +1 -0
- package/lib/commonjs/mock/index.js.map +1 -1
- package/lib/commonjs/renderer/Canvas.d.ts +10 -1
- package/lib/commonjs/renderer/Canvas.js +2 -0
- package/lib/commonjs/renderer/Canvas.js.map +1 -1
- package/lib/commonjs/skia/types/Surface/Surface.d.ts +5 -1
- package/lib/commonjs/skia/types/Surface/Surface.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkParagraphStyle.js +14 -3
- package/lib/commonjs/skia/web/JsiSkParagraphStyle.js.map +1 -1
- package/lib/commonjs/skia/web/JsiSkSurface.d.ts +1 -1
- package/lib/commonjs/skia/web/JsiSkSurface.js +2 -1
- package/lib/commonjs/skia/web/JsiSkSurface.js.map +1 -1
- package/lib/commonjs/sksg/Container.native.d.ts +1 -0
- package/lib/commonjs/sksg/Container.native.js +11 -0
- package/lib/commonjs/sksg/Container.native.js.map +1 -1
- package/lib/commonjs/sksg/Container.web.d.ts +1 -0
- package/lib/commonjs/sksg/Container.web.js +11 -0
- package/lib/commonjs/sksg/Container.web.js.map +1 -1
- package/lib/commonjs/specs/NativeSkiaModule.web.d.ts +2 -0
- package/lib/commonjs/specs/NativeSkiaModule.web.js +32 -7
- package/lib/commonjs/specs/NativeSkiaModule.web.js.map +1 -1
- package/lib/commonjs/specs/SkiaPictureViewNativeComponent.d.ts +1 -0
- package/lib/commonjs/specs/SkiaPictureViewNativeComponent.js.map +1 -1
- package/lib/commonjs/views/SkiaPictureView.js +2 -0
- package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
- package/lib/commonjs/views/SkiaPictureView.web.js +279 -94
- package/lib/commonjs/views/SkiaPictureView.web.js.map +1 -1
- package/lib/commonjs/views/formats.d.ts +1 -0
- package/lib/commonjs/views/formats.js +28 -0
- package/lib/commonjs/views/formats.js.map +1 -0
- package/lib/commonjs/views/index.d.ts +1 -0
- package/lib/commonjs/views/index.js +11 -0
- package/lib/commonjs/views/index.js.map +1 -1
- package/lib/commonjs/views/types.d.ts +6 -0
- package/lib/commonjs/views/types.js.map +1 -1
- package/lib/module/Platform/Platform.web.js +3 -91
- package/lib/module/Platform/Platform.web.js.map +1 -1
- package/lib/module/mock/index.js +1 -0
- package/lib/module/mock/index.js.map +1 -1
- package/lib/module/renderer/Canvas.d.ts +10 -1
- package/lib/module/renderer/Canvas.js +2 -0
- package/lib/module/renderer/Canvas.js.map +1 -1
- package/lib/module/skia/types/Surface/Surface.d.ts +5 -1
- package/lib/module/skia/types/Surface/Surface.js.map +1 -1
- package/lib/module/skia/web/JsiSkParagraphStyle.js +14 -3
- package/lib/module/skia/web/JsiSkParagraphStyle.js.map +1 -1
- package/lib/module/skia/web/JsiSkSurface.d.ts +1 -1
- package/lib/module/skia/web/JsiSkSurface.js +2 -1
- package/lib/module/skia/web/JsiSkSurface.js.map +1 -1
- package/lib/module/sksg/Container.native.d.ts +1 -0
- package/lib/module/sksg/Container.native.js +11 -0
- package/lib/module/sksg/Container.native.js.map +1 -1
- package/lib/module/sksg/Container.web.d.ts +1 -0
- package/lib/module/sksg/Container.web.js +11 -0
- package/lib/module/sksg/Container.web.js.map +1 -1
- package/lib/module/specs/NativeSkiaModule.web.d.ts +2 -0
- package/lib/module/specs/NativeSkiaModule.web.js +32 -7
- package/lib/module/specs/NativeSkiaModule.web.js.map +1 -1
- package/lib/module/specs/SkiaPictureViewNativeComponent.d.ts +1 -0
- package/lib/module/specs/SkiaPictureViewNativeComponent.js.map +1 -1
- package/lib/module/views/SkiaPictureView.js +2 -0
- package/lib/module/views/SkiaPictureView.js.map +1 -1
- package/lib/module/views/SkiaPictureView.web.js +280 -95
- package/lib/module/views/SkiaPictureView.web.js.map +1 -1
- package/lib/module/views/formats.d.ts +1 -0
- package/lib/module/views/formats.js +22 -0
- package/lib/module/views/formats.js.map +1 -0
- package/lib/module/views/index.d.ts +1 -0
- package/lib/module/views/index.js +1 -0
- package/lib/module/views/index.js.map +1 -1
- package/lib/module/views/types.d.ts +6 -0
- package/lib/module/views/types.js.map +1 -1
- package/lib/typescript/lib/commonjs/Platform/Platform.web.d.ts +1 -2
- package/lib/typescript/lib/commonjs/mock/index.d.ts +1 -0
- package/lib/typescript/lib/commonjs/renderer/Canvas.d.ts +2 -1
- package/lib/typescript/lib/commonjs/skia/web/JsiSkSurface.d.ts +1 -1
- package/lib/typescript/lib/commonjs/sksg/Container.native.d.ts +1 -1
- package/lib/typescript/lib/commonjs/sksg/Container.web.d.ts +1 -1
- package/lib/typescript/lib/commonjs/views/formats.d.ts +2 -0
- package/lib/typescript/lib/module/Platform/Platform.web.d.ts +1 -3
- package/lib/typescript/lib/module/mock/index.d.ts +2 -2
- package/lib/typescript/lib/module/renderer/Canvas.d.ts +2 -1
- package/lib/typescript/lib/module/skia/web/JsiSkSurface.d.ts +1 -1
- package/lib/typescript/lib/module/sksg/Container.native.d.ts +1 -1
- package/lib/typescript/lib/module/sksg/Container.web.d.ts +1 -1
- package/lib/typescript/lib/module/views/formats.d.ts +1 -0
- package/lib/typescript/lib/module/views/index.d.ts +1 -0
- package/lib/typescript/src/renderer/Canvas.d.ts +10 -1
- package/lib/typescript/src/skia/types/Surface/Surface.d.ts +5 -1
- package/lib/typescript/src/skia/web/JsiSkSurface.d.ts +1 -1
- package/lib/typescript/src/sksg/Container.native.d.ts +1 -0
- package/lib/typescript/src/sksg/Container.web.d.ts +1 -0
- package/lib/typescript/src/specs/NativeSkiaModule.web.d.ts +2 -0
- package/lib/typescript/src/specs/SkiaPictureViewNativeComponent.d.ts +1 -0
- package/lib/typescript/src/views/formats.d.ts +1 -0
- package/lib/typescript/src/views/index.d.ts +1 -0
- package/lib/typescript/src/views/types.d.ts +6 -0
- package/package.json +4 -1
- package/react-native-skia.podspec +1 -0
- package/src/Platform/Platform.web.tsx +7 -99
- package/src/mock/index.ts +1 -0
- package/src/renderer/Canvas.tsx +11 -0
- package/src/skia/types/Surface/Surface.ts +5 -1
- package/src/skia/web/JsiSkParagraphStyle.ts +16 -2
- package/src/skia/web/JsiSkSurface.ts +2 -1
- package/src/sksg/Container.native.ts +12 -0
- package/src/sksg/Container.web.ts +12 -0
- package/src/specs/NativeSkiaModule.web.ts +39 -7
- package/src/specs/SkiaPictureViewNativeComponent.ts +1 -0
- package/src/views/SkiaPictureView.tsx +2 -0
- package/src/views/SkiaPictureView.web.tsx +318 -106
- package/src/views/formats.ts +21 -0
- package/src/views/index.ts +1 -0
- package/src/views/types.ts +7 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useRef","useEffect","useCallback","useImperativeHandle","JsiSkSurface","Platform","SkiaViewNativeId","dp2Pixel","pd","rect","undefined","x","y","width","height","WebGLRenderer","constructor","canvas","_defineProperty","onResize","makeImageSnapshot","picture","surface","getCanvas","clear","CanvasKit","TRANSPARENT","draw","ref","flush","clientWidth","clientHeight","MakeWebGLCanvasSurface","ctx","getContext","drawingBufferColorSpace","Error","Float32Array","of","save","scale","drawPicture","restore","dispose","_this$canvas","getExtension","loseContext","delete","StaticWebGLRenderer","cachedImage","renderPictureToSurface","tempCanvas","OffscreenCanvas","webglSurface","skiaCanvas","error","cleanupWebGLContext","renderResult","ctx2d","drawImage","console","_this$cachedImage","PixelRatio","SkiaPictureView","props","canvasRef","renderer","redrawRequestsRef","requestIdRef","pictureRef","onLayout","redraw","current","getSize","_canvasRef$current","_canvasRef$current2","setPicture","newPicture","measure","callback","getBoundingClientRect","parentElement","offsetParent","parentRect","left","top","pageX","window","scrollX","pageY","scrollY","measureInWindow","tick","requestAnimationFrame","onLayoutEvent","evt","__destroyWebGLContextAfterRender","_props$nativeID","nativeID","global","SkiaViewApi","registerView","cancelAnimationFrame","debug","_ref","viewProps","createElement","View","_extends","style","display"],"sources":["SkiaPictureView.web.tsx"],"sourcesContent":["/* global HTMLCanvasElement */\nimport React, {\n useRef,\n useEffect,\n useCallback,\n useImperativeHandle,\n} from \"react\";\nimport type { LayoutChangeEvent } from \"react-native\";\n\nimport type { SkRect, SkPicture, SkImage } from \"../skia/types\";\nimport { JsiSkSurface } from \"../skia/web/JsiSkSurface\";\nimport { Platform } from \"../Platform\";\nimport type { ISkiaViewApiWeb } from \"../specs/NativeSkiaModule.web\";\n\nimport type { SkiaPictureViewNativeProps } from \"./types\";\nimport { SkiaViewNativeId } from \"./SkiaViewNativeId\";\n\nconst dp2Pixel = (pd: number, rect?: SkRect) => {\n if (!rect) {\n return undefined;\n }\n return {\n x: rect.x * pd,\n y: rect.y * pd,\n width: rect.width * pd,\n height: rect.height * pd,\n };\n};\n\ninterface Renderer {\n onResize(): void;\n draw(picture: SkPicture): void;\n makeImageSnapshot(picture: SkPicture, rect?: SkRect): SkImage | null;\n dispose(): void;\n}\n\nclass WebGLRenderer implements Renderer {\n private surface: JsiSkSurface | null = null;\n\n constructor(\n private canvas: HTMLCanvasElement,\n private pd: number\n ) {\n this.onResize();\n }\n\n makeImageSnapshot(picture: SkPicture, rect?: SkRect): SkImage | null {\n if (!this.surface) {\n return null;\n }\n const canvas = this.surface.getCanvas();\n canvas!.clear(CanvasKit.TRANSPARENT);\n this.draw(picture);\n this.surface.ref.flush();\n return this.surface.makeImageSnapshot(dp2Pixel(this.pd, rect));\n }\n\n onResize() {\n const { canvas, pd } = this;\n canvas.width = canvas.clientWidth * pd;\n canvas.height = canvas.clientHeight * pd;\n const surface = CanvasKit.MakeWebGLCanvasSurface(canvas);\n const ctx = canvas.getContext(\"webgl2\");\n if (ctx) {\n ctx.drawingBufferColorSpace = \"display-p3\";\n }\n if (!surface) {\n throw new Error(\"Could not create surface\");\n }\n this.surface = new JsiSkSurface(CanvasKit, surface);\n }\n\n draw(picture: SkPicture) {\n if (this.surface) {\n const canvas = this.surface.getCanvas();\n canvas.clear(Float32Array.of(0, 0, 0, 0));\n canvas.save();\n canvas.scale(pd, pd);\n canvas.drawPicture(picture);\n canvas.restore();\n this.surface.ref.flush();\n }\n }\n\n dispose(): void {\n if (this.surface) {\n this.canvas\n ?.getContext(\"webgl2\")\n ?.getExtension(\"WEBGL_lose_context\")\n ?.loseContext();\n this.surface.ref.delete();\n this.surface = null;\n }\n }\n}\n\nclass StaticWebGLRenderer implements Renderer {\n private cachedImage: SkImage | null = null;\n\n constructor(\n private canvas: HTMLCanvasElement,\n private pd: number\n ) {}\n\n onResize(): void {\n this.cachedImage = null;\n }\n\n private renderPictureToSurface(\n picture: SkPicture\n ): { surface: JsiSkSurface; tempCanvas: OffscreenCanvas } | null {\n const tempCanvas = new OffscreenCanvas(\n this.canvas.clientWidth * this.pd,\n this.canvas.clientHeight * this.pd\n );\n\n let surface: JsiSkSurface | null = null;\n\n try {\n const webglSurface = CanvasKit.MakeWebGLCanvasSurface(tempCanvas);\n const ctx = tempCanvas.getContext(\"webgl2\");\n if (ctx) {\n ctx.drawingBufferColorSpace = \"display-p3\";\n }\n\n if (!webglSurface) {\n throw new Error(\"Could not create WebGL surface\");\n }\n\n surface = new JsiSkSurface(CanvasKit, webglSurface);\n\n const skiaCanvas = surface.getCanvas();\n skiaCanvas.clear(Float32Array.of(0, 0, 0, 0));\n skiaCanvas.save();\n skiaCanvas.scale(this.pd, this.pd);\n skiaCanvas.drawPicture(picture);\n skiaCanvas.restore();\n surface.ref.flush();\n\n return { surface, tempCanvas };\n } catch (error) {\n if (surface) {\n surface.ref.delete();\n }\n this.cleanupWebGLContext(tempCanvas);\n return null;\n }\n }\n\n private cleanupWebGLContext(tempCanvas: OffscreenCanvas): void {\n const ctx = tempCanvas.getContext(\"webgl2\");\n if (ctx) {\n const loseContext = ctx.getExtension(\"WEBGL_lose_context\");\n if (loseContext) {\n loseContext.loseContext();\n }\n }\n }\n\n draw(picture: SkPicture): void {\n const renderResult = this.renderPictureToSurface(picture);\n if (!renderResult) {\n return;\n }\n const { tempCanvas } = renderResult;\n const ctx2d = this.canvas.getContext(\"2d\");\n if (!ctx2d) {\n throw new Error(\"Could not get 2D context\");\n }\n\n // Set canvas dimensions to match pixel density\n this.canvas.width = this.canvas.clientWidth * this.pd;\n this.canvas.height = this.canvas.clientHeight * this.pd;\n\n // Draw the tempCanvas scaled down to the display size\n ctx2d.drawImage(\n tempCanvas,\n 0,\n 0,\n tempCanvas.width,\n tempCanvas.height,\n 0,\n 0,\n this.canvas.clientWidth * this.pd,\n this.canvas.clientHeight * this.pd\n );\n\n this.cleanupWebGLContext(tempCanvas);\n }\n\n makeImageSnapshot(picture: SkPicture, rect?: SkRect): SkImage | null {\n if (!this.cachedImage) {\n const renderResult = this.renderPictureToSurface(picture);\n if (!renderResult) {\n return null;\n }\n\n const { surface, tempCanvas } = renderResult;\n\n try {\n this.cachedImage = surface.makeImageSnapshot(dp2Pixel(this.pd, rect));\n } catch (error) {\n console.error(\"Error creating image snapshot:\", error);\n } finally {\n surface.ref.delete();\n this.cleanupWebGLContext(tempCanvas);\n }\n }\n\n return this.cachedImage;\n }\n\n dispose(): void {\n this.cachedImage?.dispose();\n this.cachedImage = null;\n }\n}\n\nconst pd = Platform.PixelRatio;\n\nexport interface SkiaPictureViewHandle {\n setPicture(picture: SkPicture): void;\n getSize(): { width: number; height: number };\n redraw(): void;\n makeImageSnapshot(rect?: SkRect): SkImage | null;\n measure(\n callback: (\n x: number,\n y: number,\n width: number,\n height: number,\n pageX: number,\n pageY: number\n ) => void\n ): void;\n measureInWindow(\n callback: (x: number, y: number, width: number, height: number) => void\n ): void;\n}\n\nexport interface SkiaPictureViewProps extends SkiaPictureViewNativeProps {\n ref?: React.Ref<SkiaPictureViewHandle>;\n}\n\nexport const SkiaPictureView = (props: SkiaPictureViewProps) => {\n const { ref } = props;\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\n const renderer = useRef<Renderer | null>(null);\n const redrawRequestsRef = useRef(0);\n const requestIdRef = useRef(0);\n const pictureRef = useRef<SkPicture | null>(null);\n\n const { picture, onLayout } = props;\n\n const redraw = useCallback(() => {\n redrawRequestsRef.current++;\n }, []);\n\n const getSize = useCallback(() => {\n return {\n width: canvasRef.current?.clientWidth || 0,\n height: canvasRef.current?.clientHeight || 0,\n };\n }, []);\n\n const setPicture = useCallback(\n (newPicture: SkPicture) => {\n pictureRef.current = newPicture;\n redraw();\n },\n [redraw]\n );\n\n const makeImageSnapshot = useCallback((rect?: SkRect) => {\n if (renderer.current && pictureRef.current) {\n return renderer.current.makeImageSnapshot(pictureRef.current, rect);\n }\n return null;\n }, []);\n\n const measure = useCallback(\n (\n callback: (\n x: number,\n y: number,\n width: number,\n height: number,\n pageX: number,\n pageY: number\n ) => void\n ) => {\n if (canvasRef.current) {\n const rect = canvasRef.current.getBoundingClientRect();\n const parentElement = canvasRef.current.offsetParent as HTMLElement;\n const parentRect = parentElement?.getBoundingClientRect() || {\n left: 0,\n top: 0,\n };\n\n // x, y are relative to the parent\n const x = rect.left - parentRect.left;\n const y = rect.top - parentRect.top;\n\n // pageX, pageY are absolute screen coordinates\n const pageX = rect.left + window.scrollX;\n const pageY = rect.top + window.scrollY;\n\n callback(x, y, rect.width, rect.height, pageX, pageY);\n }\n },\n []\n );\n\n const measureInWindow = useCallback(\n (\n callback: (x: number, y: number, width: number, height: number) => void\n ) => {\n if (canvasRef.current) {\n const rect = canvasRef.current.getBoundingClientRect();\n\n // x, y are the absolute coordinates in the window\n const x = rect.left;\n const y = rect.top;\n\n callback(x, y, rect.width, rect.height);\n }\n },\n []\n );\n\n const tick = useCallback(() => {\n if (redrawRequestsRef.current > 0) {\n redrawRequestsRef.current = 0;\n if (renderer.current && pictureRef.current) {\n renderer.current.draw(pictureRef.current);\n }\n }\n requestIdRef.current = requestAnimationFrame(tick);\n }, []);\n\n const onLayoutEvent = useCallback(\n (evt: LayoutChangeEvent) => {\n const canvas = canvasRef.current;\n if (canvas) {\n renderer.current =\n props.__destroyWebGLContextAfterRender === true\n ? new StaticWebGLRenderer(canvas, pd)\n : new WebGLRenderer(canvas, pd);\n if (pictureRef.current) {\n renderer.current.draw(pictureRef.current);\n }\n }\n if (onLayout) {\n onLayout(evt);\n }\n },\n [onLayout, props.__destroyWebGLContextAfterRender]\n );\n\n useImperativeHandle(\n ref,\n () => ({\n setPicture,\n getSize,\n redraw,\n makeImageSnapshot,\n measure,\n measureInWindow,\n get canvasRef() {\n return () => canvasRef.current;\n },\n }),\n [setPicture, getSize, redraw, makeImageSnapshot, measure, measureInWindow]\n );\n\n useEffect(() => {\n const nativeID = props.nativeID ?? `${SkiaViewNativeId.current++}`;\n (global.SkiaViewApi as ISkiaViewApiWeb).registerView(nativeID, {\n setPicture,\n getSize,\n redraw,\n makeImageSnapshot,\n measure,\n measureInWindow,\n } as SkiaPictureViewHandle);\n }, [\n setPicture,\n getSize,\n redraw,\n makeImageSnapshot,\n measure,\n measureInWindow,\n props.nativeID,\n ]);\n\n useEffect(() => {\n if (props.picture) {\n setPicture(props.picture);\n }\n }, [setPicture, props.picture]);\n\n useEffect(() => {\n tick();\n return () => {\n cancelAnimationFrame(requestIdRef.current);\n if (renderer.current) {\n renderer.current.dispose();\n renderer.current = null;\n }\n };\n }, [tick]);\n\n useEffect(() => {\n if (renderer.current && pictureRef.current) {\n renderer.current.draw(pictureRef.current);\n }\n }, [picture, redraw]);\n\n const { debug = false, ref: _ref, ...viewProps } = props;\n return (\n <Platform.View {...viewProps} onLayout={onLayoutEvent}>\n <canvas\n ref={canvasRef}\n style={{ display: \"block\", width: \"100%\", height: \"100%\" }}\n />\n </Platform.View>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useRef","useEffect","useCallback","useImperativeHandle","useLayoutEffect","JsiSkSurface","Platform","SkiaViewNativeId","dp2Pixel","pd","rect","undefined","x","y","width","height","WebGLRenderer","constructor","canvas","_defineProperty","contextHandle","CanvasKit","GetWebGLContext","Error","grContext","MakeWebGLContext","deleteContext","ctx","getContext","drawingBufferColorSpace","onResize","makeImageSnapshot","picture","surface","getCanvas","clear","TRANSPARENT","draw","ref","flush","_this$surface","window","devicePixelRatio","clientWidth","clientHeight","delete","MakeOnScreenGLSurface","ColorSpace","SRGB","Float32Array","of","save","scale","drawPicture","restore","dispose","_this$surface2","_this$canvas","releaseResourcesAndAbandonContext","getExtension","loseContext","StaticWebGLRenderer","cachedImage","renderPictureToSurface","tempCanvas","OffscreenCanvas","webglSurface","skiaCanvas","error","cleanupRenderResult","result","_result$surface","_result$tempCanvas$ge","renderResult","ctx2d","drawImage","console","_this$cachedImage","makeLayoutEvent","timeStamp","Date","now","nativeEvent","layout","currentTarget","target","bubbles","cancelable","defaultPrevented","eventPhase","isDefaultPrevented","isPropagationStopped","persist","preventDefault","stopPropagation","isTrusted","type","SkiaPictureView","props","onLayout","canvasRef","rendererRef","pictureRef","redrawPendingRef","frameRef","onLayoutRef","current","flushRedraw","redraw","requestAnimationFrame","getSize","_canvasRef$current","_canvasRef$current2","setPicture","newPicture","measure","callback","getBoundingClientRect","parentElement","offsetParent","parentRect","left","top","pageX","scrollX","pageY","scrollY","measureInWindow","isStatic","__destroyWebGLContextAfterRender","renderer","lastWidth","lastHeight","lastPixelDensity","resizeIfNeeded","pixelDensity","observer","ResizeObserver","entries","layoutHandler","contentRect","setTimeout","observe","media","onPixelDensityChange","watchPixelDensity","_media","removeEventListener","matchMedia","query","addEventListener","_media2","disconnect","cancelAnimationFrame","_props$nativeID","nativeID","api","global","SkiaViewApi","registerView","unregisterView","debug","_debug","_ref","_onLayout","_picture","_isStatic","viewProps","createElement","View","style","display"],"sources":["SkiaPictureView.web.tsx"],"sourcesContent":["/* global HTMLCanvasElement, ResizeObserver, MediaQueryList */\nimport React, {\n useRef,\n useEffect,\n useCallback,\n useImperativeHandle,\n useLayoutEffect,\n} from \"react\";\nimport type { LayoutChangeEvent } from \"react-native\";\nimport type { GrDirectContext, WebGLContextHandle } from \"canvaskit-wasm\";\n\nimport type { SkRect, SkPicture, SkImage } from \"../skia/types\";\nimport { JsiSkSurface } from \"../skia/web/JsiSkSurface\";\nimport { Platform } from \"../Platform\";\nimport type { ISkiaViewApiWeb } from \"../specs/NativeSkiaModule.web\";\n\nimport type { SkiaPictureViewNativeProps } from \"./types\";\nimport { SkiaViewNativeId } from \"./SkiaViewNativeId\";\n\nconst dp2Pixel = (pd: number, rect?: SkRect) => {\n if (!rect) {\n return undefined;\n }\n return {\n x: rect.x * pd,\n y: rect.y * pd,\n width: rect.width * pd,\n height: rect.height * pd,\n };\n};\n\ninterface Renderer {\n onResize(): void;\n draw(picture: SkPicture): void;\n makeImageSnapshot(picture: SkPicture, rect?: SkRect): SkImage | null;\n dispose(): void;\n}\n\nclass WebGLRenderer implements Renderer {\n private surface: JsiSkSurface | null = null;\n private grContext: GrDirectContext | null = null;\n private contextHandle: WebGLContextHandle = 0;\n private pd = 1;\n\n constructor(private canvas: HTMLCanvasElement) {\n this.contextHandle = CanvasKit.GetWebGLContext(canvas);\n if (!this.contextHandle) {\n throw new Error(\"Could not create a WebGL context\");\n }\n this.grContext = CanvasKit.MakeWebGLContext(this.contextHandle);\n if (!this.grContext) {\n CanvasKit.deleteContext(this.contextHandle);\n this.contextHandle = 0;\n throw new Error(\"Could not create a graphics context\");\n }\n const ctx = canvas.getContext(\"webgl2\");\n if (ctx) {\n ctx.drawingBufferColorSpace = \"display-p3\";\n }\n this.onResize();\n }\n\n makeImageSnapshot(picture: SkPicture, rect?: SkRect): SkImage | null {\n if (!this.surface) {\n return null;\n }\n const canvas = this.surface.getCanvas();\n canvas!.clear(CanvasKit.TRANSPARENT);\n this.draw(picture);\n this.surface.ref.flush();\n return this.surface.makeImageSnapshot(dp2Pixel(this.pd, rect));\n }\n\n onResize() {\n const { canvas } = this;\n if (!this.grContext) {\n return;\n }\n this.pd = window.devicePixelRatio;\n canvas.width = canvas.clientWidth * this.pd;\n canvas.height = canvas.clientHeight * this.pd;\n this.surface?.ref.delete();\n this.surface = null;\n if (canvas.width === 0 || canvas.height === 0) {\n // The canvas hasn't been laid out yet (or is hidden). The view's\n // ResizeObserver calls us again as soon as it has a size.\n return;\n }\n // Reuse the existing WebGL context and GrDirectContext: only the surface\n // needs to be recreated when the canvas is resized.\n const surface = CanvasKit.MakeOnScreenGLSurface(\n this.grContext,\n canvas.width,\n canvas.height,\n CanvasKit.ColorSpace.SRGB\n );\n if (!surface) {\n throw new Error(\"Could not create surface\");\n }\n this.surface = new JsiSkSurface(CanvasKit, surface);\n }\n\n draw(picture: SkPicture) {\n if (this.surface) {\n const canvas = this.surface.getCanvas();\n canvas.clear(Float32Array.of(0, 0, 0, 0));\n canvas.save();\n canvas.scale(this.pd, this.pd);\n canvas.drawPicture(picture);\n canvas.restore();\n this.surface.ref.flush();\n }\n }\n\n dispose(): void {\n this.surface?.ref.delete();\n this.surface = null;\n if (this.grContext) {\n this.grContext.releaseResourcesAndAbandonContext();\n this.grContext.delete();\n this.grContext = null;\n }\n this.canvas\n ?.getContext(\"webgl2\")\n ?.getExtension(\"WEBGL_lose_context\")\n ?.loseContext();\n if (this.contextHandle) {\n // Unregister the context from CanvasKit's internal registry, otherwise\n // it retains the canvas element (and its detached DOM tree) forever.\n CanvasKit.deleteContext(this.contextHandle);\n // Making the now-deleted handle current clears CanvasKit's\n // current-context globals (GLctx/Module.ctx), which would otherwise\n // keep referencing the context (and the canvas) until another surface\n // becomes current. With a deleted handle this is a no-op that returns\n // null without creating anything.\n CanvasKit.MakeWebGLContext(this.contextHandle);\n this.contextHandle = 0;\n }\n }\n}\n\ninterface TempRenderResult {\n surface: JsiSkSurface;\n tempCanvas: OffscreenCanvas;\n grContext: GrDirectContext;\n contextHandle: WebGLContextHandle;\n}\n\nclass StaticWebGLRenderer implements Renderer {\n private cachedImage: SkImage | null = null;\n private pd = 1;\n\n constructor(private canvas: HTMLCanvasElement) {}\n\n onResize(): void {\n this.cachedImage = null;\n }\n\n private renderPictureToSurface(picture: SkPicture): TempRenderResult | null {\n this.pd = window.devicePixelRatio;\n if (this.canvas.clientWidth === 0 || this.canvas.clientHeight === 0) {\n return null;\n }\n const tempCanvas = new OffscreenCanvas(\n this.canvas.clientWidth * this.pd,\n this.canvas.clientHeight * this.pd\n );\n\n let surface: JsiSkSurface | null = null;\n let grContext: GrDirectContext | null = null;\n let contextHandle: WebGLContextHandle = 0;\n\n try {\n contextHandle = CanvasKit.GetWebGLContext(tempCanvas);\n if (!contextHandle) {\n throw new Error(\"Could not create a WebGL context\");\n }\n grContext = CanvasKit.MakeWebGLContext(contextHandle);\n if (!grContext) {\n throw new Error(\"Could not create a graphics context\");\n }\n const ctx = tempCanvas.getContext(\"webgl2\");\n if (ctx) {\n ctx.drawingBufferColorSpace = \"display-p3\";\n }\n const webglSurface = CanvasKit.MakeOnScreenGLSurface(\n grContext,\n tempCanvas.width,\n tempCanvas.height,\n CanvasKit.ColorSpace.SRGB\n );\n\n if (!webglSurface) {\n throw new Error(\"Could not create WebGL surface\");\n }\n\n surface = new JsiSkSurface(CanvasKit, webglSurface);\n\n const skiaCanvas = surface.getCanvas();\n skiaCanvas.clear(Float32Array.of(0, 0, 0, 0));\n skiaCanvas.save();\n skiaCanvas.scale(this.pd, this.pd);\n skiaCanvas.drawPicture(picture);\n skiaCanvas.restore();\n surface.ref.flush();\n\n return { surface, tempCanvas, grContext, contextHandle };\n } catch (error) {\n this.cleanupRenderResult({\n surface,\n tempCanvas,\n grContext,\n contextHandle,\n });\n return null;\n }\n }\n\n private cleanupRenderResult(result: {\n surface: JsiSkSurface | null;\n tempCanvas: OffscreenCanvas;\n grContext: GrDirectContext | null;\n contextHandle: WebGLContextHandle;\n }): void {\n result.surface?.ref.delete();\n if (result.grContext) {\n result.grContext.releaseResourcesAndAbandonContext();\n result.grContext.delete();\n }\n result.tempCanvas\n .getContext(\"webgl2\")\n ?.getExtension(\"WEBGL_lose_context\")\n ?.loseContext();\n if (result.contextHandle) {\n // Unregister the context from CanvasKit's internal registry, otherwise\n // it retains the OffscreenCanvas forever.\n CanvasKit.deleteContext(result.contextHandle);\n // Clear CanvasKit's current-context globals (see WebGLRenderer.dispose).\n CanvasKit.MakeWebGLContext(result.contextHandle);\n }\n }\n\n draw(picture: SkPicture): void {\n const renderResult = this.renderPictureToSurface(picture);\n if (!renderResult) {\n return;\n }\n const { tempCanvas } = renderResult;\n const ctx2d = this.canvas.getContext(\"2d\");\n if (!ctx2d) {\n this.cleanupRenderResult(renderResult);\n throw new Error(\"Could not get 2D context\");\n }\n\n // Set canvas dimensions to match pixel density\n this.canvas.width = this.canvas.clientWidth * this.pd;\n this.canvas.height = this.canvas.clientHeight * this.pd;\n\n // Draw the tempCanvas scaled down to the display size\n ctx2d.drawImage(\n tempCanvas,\n 0,\n 0,\n tempCanvas.width,\n tempCanvas.height,\n 0,\n 0,\n this.canvas.clientWidth * this.pd,\n this.canvas.clientHeight * this.pd\n );\n\n this.cleanupRenderResult(renderResult);\n }\n\n makeImageSnapshot(picture: SkPicture, rect?: SkRect): SkImage | null {\n if (!this.cachedImage) {\n const renderResult = this.renderPictureToSurface(picture);\n if (!renderResult) {\n return null;\n }\n\n try {\n this.cachedImage = renderResult.surface.makeImageSnapshot(\n dp2Pixel(this.pd, rect)\n );\n } catch (error) {\n console.error(\"Error creating image snapshot:\", error);\n } finally {\n this.cleanupRenderResult(renderResult);\n }\n }\n\n return this.cachedImage;\n }\n\n dispose(): void {\n this.cachedImage?.dispose();\n this.cachedImage = null;\n }\n}\n\n// Mirrors the event react-native-web synthesizes for onLayout.\nconst makeLayoutEvent = (\n x: number,\n y: number,\n width: number,\n height: number\n): LayoutChangeEvent => ({\n timeStamp: Date.now(),\n nativeEvent: { layout: { x, y, width, height } },\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n currentTarget: 0,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-expect-error\n target: 0,\n bubbles: false,\n cancelable: false,\n defaultPrevented: false,\n eventPhase: 0,\n isDefaultPrevented() {\n throw new Error(\"Method not supported on web.\");\n },\n isPropagationStopped() {\n throw new Error(\"Method not supported on web.\");\n },\n persist() {\n throw new Error(\"Method not supported on web.\");\n },\n preventDefault() {\n throw new Error(\"Method not supported on web.\");\n },\n stopPropagation() {\n throw new Error(\"Method not supported on web.\");\n },\n isTrusted: true,\n type: \"\",\n});\n\nexport interface SkiaPictureViewHandle {\n setPicture(picture: SkPicture): void;\n getSize(): { width: number; height: number };\n redraw(): void;\n makeImageSnapshot(rect?: SkRect): SkImage | null;\n measure(\n callback: (\n x: number,\n y: number,\n width: number,\n height: number,\n pageX: number,\n pageY: number\n ) => void\n ): void;\n measureInWindow(\n callback: (x: number, y: number, width: number, height: number) => void\n ): void;\n}\n\nexport interface SkiaPictureViewProps extends SkiaPictureViewNativeProps {\n ref?: React.Ref<SkiaPictureViewHandle>;\n}\n\nexport const SkiaPictureView = (props: SkiaPictureViewProps) => {\n const { ref, picture, onLayout } = props;\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\n const rendererRef = useRef<Renderer | null>(null);\n const pictureRef = useRef<SkPicture | null>(null);\n // The rendering lifecycle deliberately does not depend on layout events:\n // - The renderer is created synchronously on mount (the canvas element is\n // guaranteed to exist in useLayoutEffect; a zero size at that point is\n // fine, the surface is created once the canvas is measurable).\n // - Redraw requests coalesce into a single animation frame. A picture\n // dispatched before the canvas has a size stays in pictureRef (drawing\n // while unmeasured is a no-op) and is painted by the resize path below\n // once the canvas becomes measurable, so it is never lost.\n // - A ResizeObserver on the canvas itself recreates the surface and repaints\n // synchronously (its callbacks run after layout, before paint), and is\n // also the source of the user-facing onLayout event.\n const redrawPendingRef = useRef(false);\n const frameRef = useRef(0);\n const onLayoutRef = useRef(onLayout);\n useLayoutEffect(() => {\n onLayoutRef.current = onLayout;\n }, [onLayout]);\n\n const flushRedraw = useCallback(() => {\n frameRef.current = 0;\n if (redrawPendingRef.current && rendererRef.current && pictureRef.current) {\n redrawPendingRef.current = false;\n rendererRef.current.draw(pictureRef.current);\n }\n // If the renderer or picture isn't available yet, the request stays\n // pending and is flushed by whichever arrives last.\n }, []);\n\n const redraw = useCallback(() => {\n redrawPendingRef.current = true;\n if (frameRef.current === 0) {\n frameRef.current = requestAnimationFrame(flushRedraw);\n }\n }, [flushRedraw]);\n\n const getSize = useCallback(() => {\n return {\n width: canvasRef.current?.clientWidth || 0,\n height: canvasRef.current?.clientHeight || 0,\n };\n }, []);\n\n const setPicture = useCallback(\n (newPicture: SkPicture) => {\n pictureRef.current = newPicture;\n redraw();\n },\n [redraw]\n );\n\n const makeImageSnapshot = useCallback((rect?: SkRect) => {\n if (rendererRef.current && pictureRef.current) {\n return rendererRef.current.makeImageSnapshot(pictureRef.current, rect);\n }\n return null;\n }, []);\n\n const measure = useCallback(\n (\n callback: (\n x: number,\n y: number,\n width: number,\n height: number,\n pageX: number,\n pageY: number\n ) => void\n ) => {\n if (canvasRef.current) {\n const rect = canvasRef.current.getBoundingClientRect();\n const parentElement = canvasRef.current.offsetParent as HTMLElement;\n const parentRect = parentElement?.getBoundingClientRect() || {\n left: 0,\n top: 0,\n };\n\n // x, y are relative to the parent\n const x = rect.left - parentRect.left;\n const y = rect.top - parentRect.top;\n\n // pageX, pageY are absolute screen coordinates\n const pageX = rect.left + window.scrollX;\n const pageY = rect.top + window.scrollY;\n\n callback(x, y, rect.width, rect.height, pageX, pageY);\n }\n },\n []\n );\n\n const measureInWindow = useCallback(\n (\n callback: (x: number, y: number, width: number, height: number) => void\n ) => {\n if (canvasRef.current) {\n const rect = canvasRef.current.getBoundingClientRect();\n\n // x, y are the absolute coordinates in the window\n const x = rect.left;\n const y = rect.top;\n\n callback(x, y, rect.width, rect.height);\n }\n },\n []\n );\n\n const isStatic = props.__destroyWebGLContextAfterRender === true;\n\n useLayoutEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) {\n return undefined;\n }\n const renderer = isStatic\n ? new StaticWebGLRenderer(canvas)\n : new WebGLRenderer(canvas);\n rendererRef.current = renderer;\n\n const drawPicture = () => {\n if (pictureRef.current) {\n redrawPendingRef.current = false;\n renderer.draw(pictureRef.current);\n }\n };\n\n // The renderer constructor already sized the surface from the current\n // layout, so the observer's initial delivery only repaints if the size\n // changed in between.\n let lastWidth = canvas.clientWidth;\n let lastHeight = canvas.clientHeight;\n let lastPixelDensity = window.devicePixelRatio;\n const resizeIfNeeded = () => {\n const width = canvas.clientWidth;\n const height = canvas.clientHeight;\n const pixelDensity = window.devicePixelRatio;\n if (\n width === lastWidth &&\n height === lastHeight &&\n pixelDensity === lastPixelDensity\n ) {\n return;\n }\n lastWidth = width;\n lastHeight = height;\n lastPixelDensity = pixelDensity;\n renderer.onResize();\n drawPicture();\n };\n\n const observer = new ResizeObserver((entries) => {\n resizeIfNeeded();\n const layoutHandler = onLayoutRef.current;\n if (layoutHandler) {\n const { left, top, width, height } = entries[0].contentRect;\n // setTimeout 0 is taken from react-native-web (UIManager)\n setTimeout(\n () => layoutHandler(makeLayoutEvent(left, top, width, height)),\n 0\n );\n }\n });\n observer.observe(canvas);\n\n // A pixel-density change with no CSS size change (browser zoom, moving\n // the window to another display) doesn't trigger the ResizeObserver:\n // watch it via matchMedia, re-arming the query for each new density.\n // This degrades gracefully where unsupported: without matchMedia or\n // MediaQueryList.addEventListener (older Safari), or where the query\n // never matches because the resolution feature is unknown (Safari < 16),\n // density-only changes simply don't repaint — everything else still does.\n let media: MediaQueryList | null = null;\n const onPixelDensityChange = () => {\n resizeIfNeeded();\n watchPixelDensity();\n };\n const watchPixelDensity = () => {\n media?.removeEventListener(\"change\", onPixelDensityChange);\n media = null;\n if (typeof window.matchMedia === \"function\") {\n const query = window.matchMedia(\n `(resolution: ${window.devicePixelRatio}dppx)`\n );\n if (typeof query.addEventListener === \"function\") {\n media = query;\n media.addEventListener(\"change\", onPixelDensityChange);\n }\n }\n };\n watchPixelDensity();\n\n // Paint any picture that was dispatched before the renderer existed.\n drawPicture();\n\n return () => {\n observer.disconnect();\n media?.removeEventListener(\"change\", onPixelDensityChange);\n rendererRef.current = null;\n renderer.dispose();\n };\n }, [isStatic]);\n\n useEffect(() => {\n return () => {\n cancelAnimationFrame(frameRef.current);\n frameRef.current = 0;\n };\n }, []);\n\n useImperativeHandle(\n ref,\n () => ({\n setPicture,\n getSize,\n redraw,\n makeImageSnapshot,\n measure,\n measureInWindow,\n get canvasRef() {\n return () => canvasRef.current;\n },\n }),\n [setPicture, getSize, redraw, makeImageSnapshot, measure, measureInWindow]\n );\n\n useEffect(() => {\n const nativeID = props.nativeID ?? `${SkiaViewNativeId.current++}`;\n const api = global.SkiaViewApi as ISkiaViewApiWeb;\n api.registerView(nativeID, {\n setPicture,\n getSize,\n redraw,\n makeImageSnapshot,\n measure,\n measureInWindow,\n } as SkiaPictureViewHandle);\n return () => {\n api.unregisterView(nativeID);\n };\n }, [\n setPicture,\n getSize,\n redraw,\n makeImageSnapshot,\n measure,\n measureInWindow,\n props.nativeID,\n ]);\n\n useEffect(() => {\n if (picture) {\n setPicture(picture);\n }\n }, [setPicture, picture]);\n\n const {\n debug: _debug,\n ref: _ref,\n onLayout: _onLayout,\n picture: _picture,\n __destroyWebGLContextAfterRender: _isStatic,\n ...viewProps\n } = props;\n return (\n <Platform.View {...viewProps}>\n <canvas\n ref={canvasRef}\n style={{ display: \"block\", width: \"100%\", height: \"100%\" }}\n />\n </Platform.View>\n );\n};\n"],"mappings":";;;AAAA;AACA,OAAOA,KAAK,IACVC,MAAM,EACNC,SAAS,EACTC,WAAW,EACXC,mBAAmB,EACnBC,eAAe,QACV,OAAO;AAKd,SAASC,YAAY,QAAQ,0BAA0B;AACvD,SAASC,QAAQ,QAAQ,aAAa;AAItC,SAASC,gBAAgB,QAAQ,oBAAoB;AAErD,MAAMC,QAAQ,GAAGA,CAACC,EAAU,EAAEC,IAAa,KAAK;EAC9C,IAAI,CAACA,IAAI,EAAE;IACT,OAAOC,SAAS;EAClB;EACA,OAAO;IACLC,CAAC,EAAEF,IAAI,CAACE,CAAC,GAAGH,EAAE;IACdI,CAAC,EAAEH,IAAI,CAACG,CAAC,GAAGJ,EAAE;IACdK,KAAK,EAAEJ,IAAI,CAACI,KAAK,GAAGL,EAAE;IACtBM,MAAM,EAAEL,IAAI,CAACK,MAAM,GAAGN;EACxB,CAAC;AACH,CAAC;AASD,MAAMO,aAAa,CAAqB;EAMtCC,WAAWA,CAASC,MAAyB,EAAE;IAAA,KAA3BA,MAAyB,GAAzBA,MAAyB;IAAAC,eAAA,kBALN,IAAI;IAAAA,eAAA,oBACC,IAAI;IAAAA,eAAA,wBACJ,CAAC;IAAAA,eAAA,aAChC,CAAC;IAGZ,IAAI,CAACC,aAAa,GAAGC,SAAS,CAACC,eAAe,CAACJ,MAAM,CAAC;IACtD,IAAI,CAAC,IAAI,CAACE,aAAa,EAAE;MACvB,MAAM,IAAIG,KAAK,CAAC,kCAAkC,CAAC;IACrD;IACA,IAAI,CAACC,SAAS,GAAGH,SAAS,CAACI,gBAAgB,CAAC,IAAI,CAACL,aAAa,CAAC;IAC/D,IAAI,CAAC,IAAI,CAACI,SAAS,EAAE;MACnBH,SAAS,CAACK,aAAa,CAAC,IAAI,CAACN,aAAa,CAAC;MAC3C,IAAI,CAACA,aAAa,GAAG,CAAC;MACtB,MAAM,IAAIG,KAAK,CAAC,qCAAqC,CAAC;IACxD;IACA,MAAMI,GAAG,GAAGT,MAAM,CAACU,UAAU,CAAC,QAAQ,CAAC;IACvC,IAAID,GAAG,EAAE;MACPA,GAAG,CAACE,uBAAuB,GAAG,YAAY;IAC5C;IACA,IAAI,CAACC,QAAQ,CAAC,CAAC;EACjB;EAEAC,iBAAiBA,CAACC,OAAkB,EAAEtB,IAAa,EAAkB;IACnE,IAAI,CAAC,IAAI,CAACuB,OAAO,EAAE;MACjB,OAAO,IAAI;IACb;IACA,MAAMf,MAAM,GAAG,IAAI,CAACe,OAAO,CAACC,SAAS,CAAC,CAAC;IACvChB,MAAM,CAAEiB,KAAK,CAACd,SAAS,CAACe,WAAW,CAAC;IACpC,IAAI,CAACC,IAAI,CAACL,OAAO,CAAC;IAClB,IAAI,CAACC,OAAO,CAACK,GAAG,CAACC,KAAK,CAAC,CAAC;IACxB,OAAO,IAAI,CAACN,OAAO,CAACF,iBAAiB,CAACvB,QAAQ,CAAC,IAAI,CAACC,EAAE,EAAEC,IAAI,CAAC,CAAC;EAChE;EAEAoB,QAAQA,CAAA,EAAG;IAAA,IAAAU,aAAA;IACT,MAAM;MAAEtB;IAAO,CAAC,GAAG,IAAI;IACvB,IAAI,CAAC,IAAI,CAACM,SAAS,EAAE;MACnB;IACF;IACA,IAAI,CAACf,EAAE,GAAGgC,MAAM,CAACC,gBAAgB;IACjCxB,MAAM,CAACJ,KAAK,GAAGI,MAAM,CAACyB,WAAW,GAAG,IAAI,CAAClC,EAAE;IAC3CS,MAAM,CAACH,MAAM,GAAGG,MAAM,CAAC0B,YAAY,GAAG,IAAI,CAACnC,EAAE;IAC7C,CAAA+B,aAAA,OAAI,CAACP,OAAO,cAAAO,aAAA,eAAZA,aAAA,CAAcF,GAAG,CAACO,MAAM,CAAC,CAAC;IAC1B,IAAI,CAACZ,OAAO,GAAG,IAAI;IACnB,IAAIf,MAAM,CAACJ,KAAK,KAAK,CAAC,IAAII,MAAM,CAACH,MAAM,KAAK,CAAC,EAAE;MAC7C;MACA;MACA;IACF;IACA;IACA;IACA,MAAMkB,OAAO,GAAGZ,SAAS,CAACyB,qBAAqB,CAC7C,IAAI,CAACtB,SAAS,EACdN,MAAM,CAACJ,KAAK,EACZI,MAAM,CAACH,MAAM,EACbM,SAAS,CAAC0B,UAAU,CAACC,IACvB,CAAC;IACD,IAAI,CAACf,OAAO,EAAE;MACZ,MAAM,IAAIV,KAAK,CAAC,0BAA0B,CAAC;IAC7C;IACA,IAAI,CAACU,OAAO,GAAG,IAAI5B,YAAY,CAACgB,SAAS,EAAEY,OAAO,CAAC;EACrD;EAEAI,IAAIA,CAACL,OAAkB,EAAE;IACvB,IAAI,IAAI,CAACC,OAAO,EAAE;MAChB,MAAMf,MAAM,GAAG,IAAI,CAACe,OAAO,CAACC,SAAS,CAAC,CAAC;MACvChB,MAAM,CAACiB,KAAK,CAACc,YAAY,CAACC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MACzChC,MAAM,CAACiC,IAAI,CAAC,CAAC;MACbjC,MAAM,CAACkC,KAAK,CAAC,IAAI,CAAC3C,EAAE,EAAE,IAAI,CAACA,EAAE,CAAC;MAC9BS,MAAM,CAACmC,WAAW,CAACrB,OAAO,CAAC;MAC3Bd,MAAM,CAACoC,OAAO,CAAC,CAAC;MAChB,IAAI,CAACrB,OAAO,CAACK,GAAG,CAACC,KAAK,CAAC,CAAC;IAC1B;EACF;EAEAgB,OAAOA,CAAA,EAAS;IAAA,IAAAC,cAAA,EAAAC,YAAA;IACd,CAAAD,cAAA,OAAI,CAACvB,OAAO,cAAAuB,cAAA,eAAZA,cAAA,CAAclB,GAAG,CAACO,MAAM,CAAC,CAAC;IAC1B,IAAI,CAACZ,OAAO,GAAG,IAAI;IACnB,IAAI,IAAI,CAACT,SAAS,EAAE;MAClB,IAAI,CAACA,SAAS,CAACkC,iCAAiC,CAAC,CAAC;MAClD,IAAI,CAAClC,SAAS,CAACqB,MAAM,CAAC,CAAC;MACvB,IAAI,CAACrB,SAAS,GAAG,IAAI;IACvB;IACA,CAAAiC,YAAA,OAAI,CAACvC,MAAM,cAAAuC,YAAA,gBAAAA,YAAA,GAAXA,YAAA,CACI7B,UAAU,CAAC,QAAQ,CAAC,cAAA6B,YAAA,gBAAAA,YAAA,GADxBA,YAAA,CAEIE,YAAY,CAAC,oBAAoB,CAAC,cAAAF,YAAA,eAFtCA,YAAA,CAGIG,WAAW,CAAC,CAAC;IACjB,IAAI,IAAI,CAACxC,aAAa,EAAE;MACtB;MACA;MACAC,SAAS,CAACK,aAAa,CAAC,IAAI,CAACN,aAAa,CAAC;MAC3C;MACA;MACA;MACA;MACA;MACAC,SAAS,CAACI,gBAAgB,CAAC,IAAI,CAACL,aAAa,CAAC;MAC9C,IAAI,CAACA,aAAa,GAAG,CAAC;IACxB;EACF;AACF;AASA,MAAMyC,mBAAmB,CAAqB;EAI5C5C,WAAWA,CAASC,MAAyB,EAAE;IAAA,KAA3BA,MAAyB,GAAzBA,MAAyB;IAAAC,eAAA,sBAHP,IAAI;IAAAA,eAAA,aAC7B,CAAC;EAEkC;EAEhDW,QAAQA,CAAA,EAAS;IACf,IAAI,CAACgC,WAAW,GAAG,IAAI;EACzB;EAEQC,sBAAsBA,CAAC/B,OAAkB,EAA2B;IAC1E,IAAI,CAACvB,EAAE,GAAGgC,MAAM,CAACC,gBAAgB;IACjC,IAAI,IAAI,CAACxB,MAAM,CAACyB,WAAW,KAAK,CAAC,IAAI,IAAI,CAACzB,MAAM,CAAC0B,YAAY,KAAK,CAAC,EAAE;MACnE,OAAO,IAAI;IACb;IACA,MAAMoB,UAAU,GAAG,IAAIC,eAAe,CACpC,IAAI,CAAC/C,MAAM,CAACyB,WAAW,GAAG,IAAI,CAAClC,EAAE,EACjC,IAAI,CAACS,MAAM,CAAC0B,YAAY,GAAG,IAAI,CAACnC,EAClC,CAAC;IAED,IAAIwB,OAA4B,GAAG,IAAI;IACvC,IAAIT,SAAiC,GAAG,IAAI;IAC5C,IAAIJ,aAAiC,GAAG,CAAC;IAEzC,IAAI;MACFA,aAAa,GAAGC,SAAS,CAACC,eAAe,CAAC0C,UAAU,CAAC;MACrD,IAAI,CAAC5C,aAAa,EAAE;QAClB,MAAM,IAAIG,KAAK,CAAC,kCAAkC,CAAC;MACrD;MACAC,SAAS,GAAGH,SAAS,CAACI,gBAAgB,CAACL,aAAa,CAAC;MACrD,IAAI,CAACI,SAAS,EAAE;QACd,MAAM,IAAID,KAAK,CAAC,qCAAqC,CAAC;MACxD;MACA,MAAMI,GAAG,GAAGqC,UAAU,CAACpC,UAAU,CAAC,QAAQ,CAAC;MAC3C,IAAID,GAAG,EAAE;QACPA,GAAG,CAACE,uBAAuB,GAAG,YAAY;MAC5C;MACA,MAAMqC,YAAY,GAAG7C,SAAS,CAACyB,qBAAqB,CAClDtB,SAAS,EACTwC,UAAU,CAAClD,KAAK,EAChBkD,UAAU,CAACjD,MAAM,EACjBM,SAAS,CAAC0B,UAAU,CAACC,IACvB,CAAC;MAED,IAAI,CAACkB,YAAY,EAAE;QACjB,MAAM,IAAI3C,KAAK,CAAC,gCAAgC,CAAC;MACnD;MAEAU,OAAO,GAAG,IAAI5B,YAAY,CAACgB,SAAS,EAAE6C,YAAY,CAAC;MAEnD,MAAMC,UAAU,GAAGlC,OAAO,CAACC,SAAS,CAAC,CAAC;MACtCiC,UAAU,CAAChC,KAAK,CAACc,YAAY,CAACC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;MAC7CiB,UAAU,CAAChB,IAAI,CAAC,CAAC;MACjBgB,UAAU,CAACf,KAAK,CAAC,IAAI,CAAC3C,EAAE,EAAE,IAAI,CAACA,EAAE,CAAC;MAClC0D,UAAU,CAACd,WAAW,CAACrB,OAAO,CAAC;MAC/BmC,UAAU,CAACb,OAAO,CAAC,CAAC;MACpBrB,OAAO,CAACK,GAAG,CAACC,KAAK,CAAC,CAAC;MAEnB,OAAO;QAAEN,OAAO;QAAE+B,UAAU;QAAExC,SAAS;QAAEJ;MAAc,CAAC;IAC1D,CAAC,CAAC,OAAOgD,KAAK,EAAE;MACd,IAAI,CAACC,mBAAmB,CAAC;QACvBpC,OAAO;QACP+B,UAAU;QACVxC,SAAS;QACTJ;MACF,CAAC,CAAC;MACF,OAAO,IAAI;IACb;EACF;EAEQiD,mBAAmBA,CAACC,MAK3B,EAAQ;IAAA,IAAAC,eAAA,EAAAC,qBAAA;IACP,CAAAD,eAAA,GAAAD,MAAM,CAACrC,OAAO,cAAAsC,eAAA,eAAdA,eAAA,CAAgBjC,GAAG,CAACO,MAAM,CAAC,CAAC;IAC5B,IAAIyB,MAAM,CAAC9C,SAAS,EAAE;MACpB8C,MAAM,CAAC9C,SAAS,CAACkC,iCAAiC,CAAC,CAAC;MACpDY,MAAM,CAAC9C,SAAS,CAACqB,MAAM,CAAC,CAAC;IAC3B;IACA,CAAA2B,qBAAA,GAAAF,MAAM,CAACN,UAAU,CACdpC,UAAU,CAAC,QAAQ,CAAC,cAAA4C,qBAAA,gBAAAA,qBAAA,GADvBA,qBAAA,CAEIb,YAAY,CAAC,oBAAoB,CAAC,cAAAa,qBAAA,eAFtCA,qBAAA,CAGIZ,WAAW,CAAC,CAAC;IACjB,IAAIU,MAAM,CAAClD,aAAa,EAAE;MACxB;MACA;MACAC,SAAS,CAACK,aAAa,CAAC4C,MAAM,CAAClD,aAAa,CAAC;MAC7C;MACAC,SAAS,CAACI,gBAAgB,CAAC6C,MAAM,CAAClD,aAAa,CAAC;IAClD;EACF;EAEAiB,IAAIA,CAACL,OAAkB,EAAQ;IAC7B,MAAMyC,YAAY,GAAG,IAAI,CAACV,sBAAsB,CAAC/B,OAAO,CAAC;IACzD,IAAI,CAACyC,YAAY,EAAE;MACjB;IACF;IACA,MAAM;MAAET;IAAW,CAAC,GAAGS,YAAY;IACnC,MAAMC,KAAK,GAAG,IAAI,CAACxD,MAAM,CAACU,UAAU,CAAC,IAAI,CAAC;IAC1C,IAAI,CAAC8C,KAAK,EAAE;MACV,IAAI,CAACL,mBAAmB,CAACI,YAAY,CAAC;MACtC,MAAM,IAAIlD,KAAK,CAAC,0BAA0B,CAAC;IAC7C;;IAEA;IACA,IAAI,CAACL,MAAM,CAACJ,KAAK,GAAG,IAAI,CAACI,MAAM,CAACyB,WAAW,GAAG,IAAI,CAAClC,EAAE;IACrD,IAAI,CAACS,MAAM,CAACH,MAAM,GAAG,IAAI,CAACG,MAAM,CAAC0B,YAAY,GAAG,IAAI,CAACnC,EAAE;;IAEvD;IACAiE,KAAK,CAACC,SAAS,CACbX,UAAU,EACV,CAAC,EACD,CAAC,EACDA,UAAU,CAAClD,KAAK,EAChBkD,UAAU,CAACjD,MAAM,EACjB,CAAC,EACD,CAAC,EACD,IAAI,CAACG,MAAM,CAACyB,WAAW,GAAG,IAAI,CAAClC,EAAE,EACjC,IAAI,CAACS,MAAM,CAAC0B,YAAY,GAAG,IAAI,CAACnC,EAClC,CAAC;IAED,IAAI,CAAC4D,mBAAmB,CAACI,YAAY,CAAC;EACxC;EAEA1C,iBAAiBA,CAACC,OAAkB,EAAEtB,IAAa,EAAkB;IACnE,IAAI,CAAC,IAAI,CAACoD,WAAW,EAAE;MACrB,MAAMW,YAAY,GAAG,IAAI,CAACV,sBAAsB,CAAC/B,OAAO,CAAC;MACzD,IAAI,CAACyC,YAAY,EAAE;QACjB,OAAO,IAAI;MACb;MAEA,IAAI;QACF,IAAI,CAACX,WAAW,GAAGW,YAAY,CAACxC,OAAO,CAACF,iBAAiB,CACvDvB,QAAQ,CAAC,IAAI,CAACC,EAAE,EAAEC,IAAI,CACxB,CAAC;MACH,CAAC,CAAC,OAAO0D,KAAK,EAAE;QACdQ,OAAO,CAACR,KAAK,CAAC,gCAAgC,EAAEA,KAAK,CAAC;MACxD,CAAC,SAAS;QACR,IAAI,CAACC,mBAAmB,CAACI,YAAY,CAAC;MACxC;IACF;IAEA,OAAO,IAAI,CAACX,WAAW;EACzB;EAEAP,OAAOA,CAAA,EAAS;IAAA,IAAAsB,iBAAA;IACd,CAAAA,iBAAA,OAAI,CAACf,WAAW,cAAAe,iBAAA,eAAhBA,iBAAA,CAAkBtB,OAAO,CAAC,CAAC;IAC3B,IAAI,CAACO,WAAW,GAAG,IAAI;EACzB;AACF;;AAEA;AACA,MAAMgB,eAAe,GAAGA,CACtBlE,CAAS,EACTC,CAAS,EACTC,KAAa,EACbC,MAAc,MACS;EACvBgE,SAAS,EAAEC,IAAI,CAACC,GAAG,CAAC,CAAC;EACrBC,WAAW,EAAE;IAAEC,MAAM,EAAE;MAAEvE,CAAC;MAAEC,CAAC;MAAEC,KAAK;MAAEC;IAAO;EAAE,CAAC;EAChD;EACA;EACAqE,aAAa,EAAE,CAAC;EAChB;EACA;EACAC,MAAM,EAAE,CAAC;EACTC,OAAO,EAAE,KAAK;EACdC,UAAU,EAAE,KAAK;EACjBC,gBAAgB,EAAE,KAAK;EACvBC,UAAU,EAAE,CAAC;EACbC,kBAAkBA,CAAA,EAAG;IACnB,MAAM,IAAInE,KAAK,CAAC,8BAA8B,CAAC;EACjD,CAAC;EACDoE,oBAAoBA,CAAA,EAAG;IACrB,MAAM,IAAIpE,KAAK,CAAC,8BAA8B,CAAC;EACjD,CAAC;EACDqE,OAAOA,CAAA,EAAG;IACR,MAAM,IAAIrE,KAAK,CAAC,8BAA8B,CAAC;EACjD,CAAC;EACDsE,cAAcA,CAAA,EAAG;IACf,MAAM,IAAItE,KAAK,CAAC,8BAA8B,CAAC;EACjD,CAAC;EACDuE,eAAeA,CAAA,EAAG;IAChB,MAAM,IAAIvE,KAAK,CAAC,8BAA8B,CAAC;EACjD,CAAC;EACDwE,SAAS,EAAE,IAAI;EACfC,IAAI,EAAE;AACR,CAAC,CAAC;AA0BF,OAAO,MAAMC,eAAe,GAAIC,KAA2B,IAAK;EAC9D,MAAM;IAAE5D,GAAG;IAAEN,OAAO;IAAEmE;EAAS,CAAC,GAAGD,KAAK;EACxC,MAAME,SAAS,GAAGpG,MAAM,CAA2B,IAAI,CAAC;EACxD,MAAMqG,WAAW,GAAGrG,MAAM,CAAkB,IAAI,CAAC;EACjD,MAAMsG,UAAU,GAAGtG,MAAM,CAAmB,IAAI,CAAC;EACjD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAMuG,gBAAgB,GAAGvG,MAAM,CAAC,KAAK,CAAC;EACtC,MAAMwG,QAAQ,GAAGxG,MAAM,CAAC,CAAC,CAAC;EAC1B,MAAMyG,WAAW,GAAGzG,MAAM,CAACmG,QAAQ,CAAC;EACpC/F,eAAe,CAAC,MAAM;IACpBqG,WAAW,CAACC,OAAO,GAAGP,QAAQ;EAChC,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;EAEd,MAAMQ,WAAW,GAAGzG,WAAW,CAAC,MAAM;IACpCsG,QAAQ,CAACE,OAAO,GAAG,CAAC;IACpB,IAAIH,gBAAgB,CAACG,OAAO,IAAIL,WAAW,CAACK,OAAO,IAAIJ,UAAU,CAACI,OAAO,EAAE;MACzEH,gBAAgB,CAACG,OAAO,GAAG,KAAK;MAChCL,WAAW,CAACK,OAAO,CAACrE,IAAI,CAACiE,UAAU,CAACI,OAAO,CAAC;IAC9C;IACA;IACA;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,MAAM,GAAG1G,WAAW,CAAC,MAAM;IAC/BqG,gBAAgB,CAACG,OAAO,GAAG,IAAI;IAC/B,IAAIF,QAAQ,CAACE,OAAO,KAAK,CAAC,EAAE;MAC1BF,QAAQ,CAACE,OAAO,GAAGG,qBAAqB,CAACF,WAAW,CAAC;IACvD;EACF,CAAC,EAAE,CAACA,WAAW,CAAC,CAAC;EAEjB,MAAMG,OAAO,GAAG5G,WAAW,CAAC,MAAM;IAAA,IAAA6G,kBAAA,EAAAC,mBAAA;IAChC,OAAO;MACLlG,KAAK,EAAE,EAAAiG,kBAAA,GAAAX,SAAS,CAACM,OAAO,cAAAK,kBAAA,uBAAjBA,kBAAA,CAAmBpE,WAAW,KAAI,CAAC;MAC1C5B,MAAM,EAAE,EAAAiG,mBAAA,GAAAZ,SAAS,CAACM,OAAO,cAAAM,mBAAA,uBAAjBA,mBAAA,CAAmBpE,YAAY,KAAI;IAC7C,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMqE,UAAU,GAAG/G,WAAW,CAC3BgH,UAAqB,IAAK;IACzBZ,UAAU,CAACI,OAAO,GAAGQ,UAAU;IAC/BN,MAAM,CAAC,CAAC;EACV,CAAC,EACD,CAACA,MAAM,CACT,CAAC;EAED,MAAM7E,iBAAiB,GAAG7B,WAAW,CAAEQ,IAAa,IAAK;IACvD,IAAI2F,WAAW,CAACK,OAAO,IAAIJ,UAAU,CAACI,OAAO,EAAE;MAC7C,OAAOL,WAAW,CAACK,OAAO,CAAC3E,iBAAiB,CAACuE,UAAU,CAACI,OAAO,EAAEhG,IAAI,CAAC;IACxE;IACA,OAAO,IAAI;EACb,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMyG,OAAO,GAAGjH,WAAW,CAEvBkH,QAOS,IACN;IACH,IAAIhB,SAAS,CAACM,OAAO,EAAE;MACrB,MAAMhG,IAAI,GAAG0F,SAAS,CAACM,OAAO,CAACW,qBAAqB,CAAC,CAAC;MACtD,MAAMC,aAAa,GAAGlB,SAAS,CAACM,OAAO,CAACa,YAA2B;MACnE,MAAMC,UAAU,GAAG,CAAAF,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAED,qBAAqB,CAAC,CAAC,KAAI;QAC3DI,IAAI,EAAE,CAAC;QACPC,GAAG,EAAE;MACP,CAAC;;MAED;MACA,MAAM9G,CAAC,GAAGF,IAAI,CAAC+G,IAAI,GAAGD,UAAU,CAACC,IAAI;MACrC,MAAM5G,CAAC,GAAGH,IAAI,CAACgH,GAAG,GAAGF,UAAU,CAACE,GAAG;;MAEnC;MACA,MAAMC,KAAK,GAAGjH,IAAI,CAAC+G,IAAI,GAAGhF,MAAM,CAACmF,OAAO;MACxC,MAAMC,KAAK,GAAGnH,IAAI,CAACgH,GAAG,GAAGjF,MAAM,CAACqF,OAAO;MAEvCV,QAAQ,CAACxG,CAAC,EAAEC,CAAC,EAAEH,IAAI,CAACI,KAAK,EAAEJ,IAAI,CAACK,MAAM,EAAE4G,KAAK,EAAEE,KAAK,CAAC;IACvD;EACF,CAAC,EACD,EACF,CAAC;EAED,MAAME,eAAe,GAAG7H,WAAW,CAE/BkH,QAAuE,IACpE;IACH,IAAIhB,SAAS,CAACM,OAAO,EAAE;MACrB,MAAMhG,IAAI,GAAG0F,SAAS,CAACM,OAAO,CAACW,qBAAqB,CAAC,CAAC;;MAEtD;MACA,MAAMzG,CAAC,GAAGF,IAAI,CAAC+G,IAAI;MACnB,MAAM5G,CAAC,GAAGH,IAAI,CAACgH,GAAG;MAElBN,QAAQ,CAACxG,CAAC,EAAEC,CAAC,EAAEH,IAAI,CAACI,KAAK,EAAEJ,IAAI,CAACK,MAAM,CAAC;IACzC;EACF,CAAC,EACD,EACF,CAAC;EAED,MAAMiH,QAAQ,GAAG9B,KAAK,CAAC+B,gCAAgC,KAAK,IAAI;EAEhE7H,eAAe,CAAC,MAAM;IACpB,MAAMc,MAAM,GAAGkF,SAAS,CAACM,OAAO;IAChC,IAAI,CAACxF,MAAM,EAAE;MACX,OAAOP,SAAS;IAClB;IACA,MAAMuH,QAAQ,GAAGF,QAAQ,GACrB,IAAInE,mBAAmB,CAAC3C,MAAM,CAAC,GAC/B,IAAIF,aAAa,CAACE,MAAM,CAAC;IAC7BmF,WAAW,CAACK,OAAO,GAAGwB,QAAQ;IAE9B,MAAM7E,WAAW,GAAGA,CAAA,KAAM;MACxB,IAAIiD,UAAU,CAACI,OAAO,EAAE;QACtBH,gBAAgB,CAACG,OAAO,GAAG,KAAK;QAChCwB,QAAQ,CAAC7F,IAAI,CAACiE,UAAU,CAACI,OAAO,CAAC;MACnC;IACF,CAAC;;IAED;IACA;IACA;IACA,IAAIyB,SAAS,GAAGjH,MAAM,CAACyB,WAAW;IAClC,IAAIyF,UAAU,GAAGlH,MAAM,CAAC0B,YAAY;IACpC,IAAIyF,gBAAgB,GAAG5F,MAAM,CAACC,gBAAgB;IAC9C,MAAM4F,cAAc,GAAGA,CAAA,KAAM;MAC3B,MAAMxH,KAAK,GAAGI,MAAM,CAACyB,WAAW;MAChC,MAAM5B,MAAM,GAAGG,MAAM,CAAC0B,YAAY;MAClC,MAAM2F,YAAY,GAAG9F,MAAM,CAACC,gBAAgB;MAC5C,IACE5B,KAAK,KAAKqH,SAAS,IACnBpH,MAAM,KAAKqH,UAAU,IACrBG,YAAY,KAAKF,gBAAgB,EACjC;QACA;MACF;MACAF,SAAS,GAAGrH,KAAK;MACjBsH,UAAU,GAAGrH,MAAM;MACnBsH,gBAAgB,GAAGE,YAAY;MAC/BL,QAAQ,CAACpG,QAAQ,CAAC,CAAC;MACnBuB,WAAW,CAAC,CAAC;IACf,CAAC;IAED,MAAMmF,QAAQ,GAAG,IAAIC,cAAc,CAAEC,OAAO,IAAK;MAC/CJ,cAAc,CAAC,CAAC;MAChB,MAAMK,aAAa,GAAGlC,WAAW,CAACC,OAAO;MACzC,IAAIiC,aAAa,EAAE;QACjB,MAAM;UAAElB,IAAI;UAAEC,GAAG;UAAE5G,KAAK;UAAEC;QAAO,CAAC,GAAG2H,OAAO,CAAC,CAAC,CAAC,CAACE,WAAW;QAC3D;QACAC,UAAU,CACR,MAAMF,aAAa,CAAC7D,eAAe,CAAC2C,IAAI,EAAEC,GAAG,EAAE5G,KAAK,EAAEC,MAAM,CAAC,CAAC,EAC9D,CACF,CAAC;MACH;IACF,CAAC,CAAC;IACFyH,QAAQ,CAACM,OAAO,CAAC5H,MAAM,CAAC;;IAExB;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI6H,KAA4B,GAAG,IAAI;IACvC,MAAMC,oBAAoB,GAAGA,CAAA,KAAM;MACjCV,cAAc,CAAC,CAAC;MAChBW,iBAAiB,CAAC,CAAC;IACrB,CAAC;IACD,MAAMA,iBAAiB,GAAGA,CAAA,KAAM;MAAA,IAAAC,MAAA;MAC9B,CAAAA,MAAA,GAAAH,KAAK,cAAAG,MAAA,eAALA,MAAA,CAAOC,mBAAmB,CAAC,QAAQ,EAAEH,oBAAoB,CAAC;MAC1DD,KAAK,GAAG,IAAI;MACZ,IAAI,OAAOtG,MAAM,CAAC2G,UAAU,KAAK,UAAU,EAAE;QAC3C,MAAMC,KAAK,GAAG5G,MAAM,CAAC2G,UAAU,CAC7B,gBAAgB3G,MAAM,CAACC,gBAAgB,OACzC,CAAC;QACD,IAAI,OAAO2G,KAAK,CAACC,gBAAgB,KAAK,UAAU,EAAE;UAChDP,KAAK,GAAGM,KAAK;UACbN,KAAK,CAACO,gBAAgB,CAAC,QAAQ,EAAEN,oBAAoB,CAAC;QACxD;MACF;IACF,CAAC;IACDC,iBAAiB,CAAC,CAAC;;IAEnB;IACA5F,WAAW,CAAC,CAAC;IAEb,OAAO,MAAM;MAAA,IAAAkG,OAAA;MACXf,QAAQ,CAACgB,UAAU,CAAC,CAAC;MACrB,CAAAD,OAAA,GAAAR,KAAK,cAAAQ,OAAA,eAALA,OAAA,CAAOJ,mBAAmB,CAAC,QAAQ,EAAEH,oBAAoB,CAAC;MAC1D3C,WAAW,CAACK,OAAO,GAAG,IAAI;MAC1BwB,QAAQ,CAAC3E,OAAO,CAAC,CAAC;IACpB,CAAC;EACH,CAAC,EAAE,CAACyE,QAAQ,CAAC,CAAC;EAEd/H,SAAS,CAAC,MAAM;IACd,OAAO,MAAM;MACXwJ,oBAAoB,CAACjD,QAAQ,CAACE,OAAO,CAAC;MACtCF,QAAQ,CAACE,OAAO,GAAG,CAAC;IACtB,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAENvG,mBAAmB,CACjBmC,GAAG,EACH,OAAO;IACL2E,UAAU;IACVH,OAAO;IACPF,MAAM;IACN7E,iBAAiB;IACjBoF,OAAO;IACPY,eAAe;IACf,IAAI3B,SAASA,CAAA,EAAG;MACd,OAAO,MAAMA,SAAS,CAACM,OAAO;IAChC;EACF,CAAC,CAAC,EACF,CAACO,UAAU,EAAEH,OAAO,EAAEF,MAAM,EAAE7E,iBAAiB,EAAEoF,OAAO,EAAEY,eAAe,CAC3E,CAAC;EAED9H,SAAS,CAAC,MAAM;IAAA,IAAAyJ,eAAA;IACd,MAAMC,QAAQ,IAAAD,eAAA,GAAGxD,KAAK,CAACyD,QAAQ,cAAAD,eAAA,cAAAA,eAAA,GAAI,GAAGnJ,gBAAgB,CAACmG,OAAO,EAAE,EAAE;IAClE,MAAMkD,GAAG,GAAGC,MAAM,CAACC,WAA8B;IACjDF,GAAG,CAACG,YAAY,CAACJ,QAAQ,EAAE;MACzB1C,UAAU;MACVH,OAAO;MACPF,MAAM;MACN7E,iBAAiB;MACjBoF,OAAO;MACPY;IACF,CAA0B,CAAC;IAC3B,OAAO,MAAM;MACX6B,GAAG,CAACI,cAAc,CAACL,QAAQ,CAAC;IAC9B,CAAC;EACH,CAAC,EAAE,CACD1C,UAAU,EACVH,OAAO,EACPF,MAAM,EACN7E,iBAAiB,EACjBoF,OAAO,EACPY,eAAe,EACf7B,KAAK,CAACyD,QAAQ,CACf,CAAC;EAEF1J,SAAS,CAAC,MAAM;IACd,IAAI+B,OAAO,EAAE;MACXiF,UAAU,CAACjF,OAAO,CAAC;IACrB;EACF,CAAC,EAAE,CAACiF,UAAU,EAAEjF,OAAO,CAAC,CAAC;EAEzB,MAAM;IACJiI,KAAK,EAAEC,MAAM;IACb5H,GAAG,EAAE6H,IAAI;IACThE,QAAQ,EAAEiE,SAAS;IACnBpI,OAAO,EAAEqI,QAAQ;IACjBpC,gCAAgC,EAAEqC,SAAS;IAC3C,GAAGC;EACL,CAAC,GAAGrE,KAAK;EACT,oBACEnG,KAAA,CAAAyK,aAAA,CAAClK,QAAQ,CAACmK,IAAI,EAAKF,SAAS,eAC1BxK,KAAA,CAAAyK,aAAA;IACElI,GAAG,EAAE8D,SAAU;IACfsE,KAAK,EAAE;MAAEC,OAAO,EAAE,OAAO;MAAE7J,KAAK,EAAE,MAAM;MAAEC,MAAM,EAAE;IAAO;EAAE,CAC5D,CACY,CAAC;AAEpB,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getPreferredHighBitDepthCanvasFormat: () => GPUTextureFormat;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Platform } from "react-native";
|
|
2
|
+
|
|
3
|
+
// Non-spec helper: the canvas texture format most likely to reach the display
|
|
4
|
+
// with more than 8 bits per channel on the current platform. The returned
|
|
5
|
+
// format keeps standard (SDR) sRGB semantics: values are encoded exactly like
|
|
6
|
+
// on an 8-bit canvas, only with more precision, so colors match across
|
|
7
|
+
// formats. This is about bit depth, not HDR (no extended range).
|
|
8
|
+
//
|
|
9
|
+
// - Apple platforms: "rgba16float" (16-bit float per channel). The library
|
|
10
|
+
// tags the CAMetalLayer with the extended sRGB colorspace automatically so
|
|
11
|
+
// the values display identically to an 8-bit canvas.
|
|
12
|
+
// - Android: "rgb10a2unorm". A float16 swapchain works but is tagged as an
|
|
13
|
+
// SDR sRGB layer, and SurfaceFlinger quantizes SDR layers to the display
|
|
14
|
+
// pipeline depth during composition, discarding the extra precision.
|
|
15
|
+
// RGBA_1010102 buffers keep SDR semantics and can pass through composition,
|
|
16
|
+
// including direct scanout on 10-bit panels. Requires the Vulkan surface to
|
|
17
|
+
// expose the 10-bit format (common on modern devices).
|
|
18
|
+
// - Web: "rgba16float", the float canvas format supported by browsers.
|
|
19
|
+
export const getPreferredHighBitDepthCanvasFormat = () => {
|
|
20
|
+
return Platform.OS === "android" ? "rgb10a2unorm" : "rgba16float";
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=formats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Platform","getPreferredHighBitDepthCanvasFormat","OS"],"sources":["formats.ts"],"sourcesContent":["import { Platform } from \"react-native\";\n\n// Non-spec helper: the canvas texture format most likely to reach the display\n// with more than 8 bits per channel on the current platform. The returned\n// format keeps standard (SDR) sRGB semantics: values are encoded exactly like\n// on an 8-bit canvas, only with more precision, so colors match across\n// formats. This is about bit depth, not HDR (no extended range).\n//\n// - Apple platforms: \"rgba16float\" (16-bit float per channel). The library\n// tags the CAMetalLayer with the extended sRGB colorspace automatically so\n// the values display identically to an 8-bit canvas.\n// - Android: \"rgb10a2unorm\". A float16 swapchain works but is tagged as an\n// SDR sRGB layer, and SurfaceFlinger quantizes SDR layers to the display\n// pipeline depth during composition, discarding the extra precision.\n// RGBA_1010102 buffers keep SDR semantics and can pass through composition,\n// including direct scanout on 10-bit panels. Requires the Vulkan surface to\n// expose the 10-bit format (common on modern devices).\n// - Web: \"rgba16float\", the float canvas format supported by browsers.\nexport const getPreferredHighBitDepthCanvasFormat = (): GPUTextureFormat => {\n return Platform.OS === \"android\" ? \"rgb10a2unorm\" : \"rgba16float\";\n};\n"],"mappings":"AAAA,SAASA,QAAQ,QAAQ,cAAc;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,oCAAoC,GAAGA,CAAA,KAAwB;EAC1E,OAAOD,QAAQ,CAACE,EAAE,KAAK,SAAS,GAAG,cAAc,GAAG,aAAa;AACnE,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./SkiaPictureView\";\nexport * from \"./types\";\nexport * from \"./WebGPUCanvas\";\n"],"mappings":"AAAA,cAAc,mBAAmB;AACjC,cAAc,SAAS;AACvB,cAAc,gBAAgB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export * from \"./SkiaPictureView\";\nexport * from \"./types\";\nexport * from \"./WebGPUCanvas\";\nexport * from \"./formats\";\n"],"mappings":"AAAA,cAAc,mBAAmB;AACjC,cAAc,SAAS;AACvB,cAAc,gBAAgB;AAC9B,cAAc,WAAW","ignoreList":[]}
|
|
@@ -26,6 +26,12 @@ export interface SkiaBaseViewProps extends ViewProps {
|
|
|
26
26
|
*/
|
|
27
27
|
onSize?: SharedValue<SkSize>;
|
|
28
28
|
opaque?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Renders into a surface with more than 8 bits per channel (16-bit float on
|
|
31
|
+
* iOS, 10-bit on Android) to avoid banding in subtle gradients. On Android
|
|
32
|
+
* the extra precision survives composition only when combined with `opaque`.
|
|
33
|
+
*/
|
|
34
|
+
highBitDepth?: boolean;
|
|
29
35
|
__destroyWebGLContextAfterRender?: boolean;
|
|
30
36
|
}
|
|
31
37
|
export interface SkiaPictureViewNativeProps extends SkiaBaseViewProps {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { ViewProps } from \"react-native\";\nimport type { SharedValue } from \"react-native-reanimated\";\n\nimport type { Node } from \"../dom/types\";\nimport type { SkImage, SkPicture, SkRect, SkSize } from \"../skia/types\";\n\nexport type NativeSkiaViewProps = ViewProps & {\n debug?: boolean;\n opaque?: boolean;\n};\n\nexport interface ISkiaViewApi {\n web?: boolean;\n setJsiProperty: <T>(nativeId: number, name: string, value: T) => void;\n requestRedraw: (nativeId: number) => void;\n makeImageSnapshot: (nativeId: number, rect?: SkRect) => SkImage;\n makeImageSnapshotAsync: (nativeId: number, rect?: SkRect) => Promise<SkImage>;\n size: (nativeId: number) => SkSize;\n}\n\nexport interface SkiaBaseViewProps extends ViewProps {\n /**\n * When set to true the view will display information about the\n * average time it takes to render.\n */\n debug?: boolean;\n /**\n * Pass an animated value to the onSize property to get updates when\n * the Skia view is resized.\n */\n onSize?: SharedValue<SkSize>;\n\n opaque?: boolean;\n\n // On web, only 16 WebGL contextes are allowed. If the drawing is non-animated, set\n // __destroyWebGLContextAfterRender to true to release the context after each draw.\n __destroyWebGLContextAfterRender?: boolean;\n}\n\nexport interface SkiaPictureViewNativeProps extends SkiaBaseViewProps {\n picture?: SkPicture;\n androidWarmup?: boolean;\n}\n\nexport interface SkiaDomViewNativeProps extends SkiaBaseViewProps {\n root?: Node<unknown>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { ViewProps } from \"react-native\";\nimport type { SharedValue } from \"react-native-reanimated\";\n\nimport type { Node } from \"../dom/types\";\nimport type { SkImage, SkPicture, SkRect, SkSize } from \"../skia/types\";\n\nexport type NativeSkiaViewProps = ViewProps & {\n debug?: boolean;\n opaque?: boolean;\n};\n\nexport interface ISkiaViewApi {\n web?: boolean;\n setJsiProperty: <T>(nativeId: number, name: string, value: T) => void;\n requestRedraw: (nativeId: number) => void;\n makeImageSnapshot: (nativeId: number, rect?: SkRect) => SkImage;\n makeImageSnapshotAsync: (nativeId: number, rect?: SkRect) => Promise<SkImage>;\n size: (nativeId: number) => SkSize;\n}\n\nexport interface SkiaBaseViewProps extends ViewProps {\n /**\n * When set to true the view will display information about the\n * average time it takes to render.\n */\n debug?: boolean;\n /**\n * Pass an animated value to the onSize property to get updates when\n * the Skia view is resized.\n */\n onSize?: SharedValue<SkSize>;\n\n opaque?: boolean;\n\n /**\n * Renders into a surface with more than 8 bits per channel (16-bit float on\n * iOS, 10-bit on Android) to avoid banding in subtle gradients. On Android\n * the extra precision survives composition only when combined with `opaque`.\n */\n highBitDepth?: boolean;\n\n // On web, only 16 WebGL contextes are allowed. If the drawing is non-animated, set\n // __destroyWebGLContextAfterRender to true to release the context after each draw.\n __destroyWebGLContextAfterRender?: boolean;\n}\n\nexport interface SkiaPictureViewNativeProps extends SkiaBaseViewProps {\n picture?: SkPicture;\n androidWarmup?: boolean;\n}\n\nexport interface SkiaDomViewNativeProps extends SkiaBaseViewProps {\n root?: Node<unknown>;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -6,9 +6,8 @@ export namespace Platform {
|
|
|
6
6
|
export function findNodeHandle(): never;
|
|
7
7
|
export { View };
|
|
8
8
|
}
|
|
9
|
-
declare function View({ children,
|
|
9
|
+
declare function View({ children, style: rawStyle }: {
|
|
10
10
|
children: any;
|
|
11
|
-
onLayout: any;
|
|
12
11
|
style: any;
|
|
13
12
|
}): any;
|
|
14
13
|
export {};
|
|
@@ -2,6 +2,7 @@ export const __esModule: boolean;
|
|
|
2
2
|
export function Mock(CanvasKit: any): {
|
|
3
3
|
Canvas: typeof import("react-native").View;
|
|
4
4
|
WebGPUCanvas: typeof import("react-native").View;
|
|
5
|
+
getPreferredHighBitDepthCanvasFormat: () => string;
|
|
5
6
|
SkiaPictureView: typeof import("react-native").View;
|
|
6
7
|
JsiSkImage: typeof _JsiSkImage.JsiSkImage;
|
|
7
8
|
drawAsPicture: () => undefined;
|
|
@@ -5,13 +5,14 @@ export function useCanvasSize(userRef: any): {
|
|
|
5
5
|
ref: any;
|
|
6
6
|
size: any;
|
|
7
7
|
};
|
|
8
|
-
export function Canvas({ debug, opaque, children, onSize, colorSpace, androidWarmup, ref, onLayout, ...viewProps }: {
|
|
8
|
+
export function Canvas({ debug, opaque, children, onSize, colorSpace, highBitDepth, androidWarmup, ref, onLayout, ...viewProps }: {
|
|
9
9
|
[x: string]: any;
|
|
10
10
|
debug: any;
|
|
11
11
|
opaque: any;
|
|
12
12
|
children: any;
|
|
13
13
|
onSize: any;
|
|
14
14
|
colorSpace?: string | undefined;
|
|
15
|
+
highBitDepth?: boolean | undefined;
|
|
15
16
|
androidWarmup?: boolean | undefined;
|
|
16
17
|
ref: any;
|
|
17
18
|
onLayout: any;
|
|
@@ -4,11 +4,11 @@ import _StaticContainer = require("./StaticContainer");
|
|
|
4
4
|
declare class ReanimatedContainer extends _StaticContainer.Container {
|
|
5
5
|
constructor(Skia: any, nativeId: any);
|
|
6
6
|
nativeId: any;
|
|
7
|
+
mapperId: any;
|
|
7
8
|
redraw(): void;
|
|
8
9
|
recording: {
|
|
9
10
|
commands: any;
|
|
10
11
|
paintPool: never[];
|
|
11
12
|
} | undefined;
|
|
12
|
-
mapperId: any;
|
|
13
13
|
}
|
|
14
14
|
export {};
|
|
@@ -5,12 +5,10 @@ export namespace Platform {
|
|
|
5
5
|
export function findNodeHandle(): never;
|
|
6
6
|
export { View };
|
|
7
7
|
}
|
|
8
|
-
declare function View({ children,
|
|
8
|
+
declare function View({ children, style: rawStyle }: {
|
|
9
9
|
children: any;
|
|
10
|
-
onLayout: any;
|
|
11
10
|
style: any;
|
|
12
11
|
}): React.DetailedReactHTMLElement<{
|
|
13
|
-
ref: React.RefObject<null>;
|
|
14
12
|
style: any;
|
|
15
13
|
}, HTMLElement>;
|
|
16
14
|
import React from "react";
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export function Mock(CanvasKit: any): {
|
|
2
2
|
Canvas: typeof import("react-native").View;
|
|
3
3
|
WebGPUCanvas: typeof import("react-native").View;
|
|
4
|
+
getPreferredHighBitDepthCanvasFormat: () => string;
|
|
4
5
|
SkiaPictureView: typeof import("react-native").View;
|
|
5
6
|
JsiSkImage: typeof JsiSkImage;
|
|
6
7
|
drawAsPicture: () => undefined;
|
|
@@ -129,8 +130,7 @@ export function Mock(CanvasKit: any): {
|
|
|
129
130
|
isEdge: (pos: any, b: any) => boolean;
|
|
130
131
|
processRect: (Skia: any, def: any) => any;
|
|
131
132
|
processRRect: (Skia: any, def: any) => any;
|
|
132
|
-
inflate: (Skia: any, box: any, dx: any, dy: any, tx?: number,
|
|
133
|
-
ty?: number) => any;
|
|
133
|
+
inflate: (Skia: any, box: any, dx: any, dy: any, tx?: number, ty?: number) => any;
|
|
134
134
|
deflate: (Skia: any, box: any, dx: any, dy: any, tx?: number, ty?: number) => any;
|
|
135
135
|
processRadius: (Skia: any, radius: any) => any;
|
|
136
136
|
isCircleScalarDef: (def: any) => boolean;
|
|
@@ -7,13 +7,14 @@ export function useCanvasSize(userRef: any): {
|
|
|
7
7
|
};
|
|
8
8
|
};
|
|
9
9
|
export const isFabric: boolean;
|
|
10
|
-
export function Canvas({ debug, opaque, children, onSize, colorSpace, androidWarmup, ref, onLayout, ...viewProps }: {
|
|
10
|
+
export function Canvas({ debug, opaque, children, onSize, colorSpace, highBitDepth, androidWarmup, ref, onLayout, ...viewProps }: {
|
|
11
11
|
[x: string]: any;
|
|
12
12
|
debug: any;
|
|
13
13
|
opaque: any;
|
|
14
14
|
children: any;
|
|
15
15
|
onSize: any;
|
|
16
16
|
colorSpace?: string | undefined;
|
|
17
|
+
highBitDepth?: boolean | undefined;
|
|
17
18
|
androidWarmup?: boolean | undefined;
|
|
18
19
|
ref: any;
|
|
19
20
|
onLayout: any;
|
|
@@ -3,12 +3,12 @@ import { StaticContainer } from "./StaticContainer";
|
|
|
3
3
|
declare class ReanimatedContainer extends Container {
|
|
4
4
|
constructor(Skia: any, nativeId: any);
|
|
5
5
|
nativeId: any;
|
|
6
|
+
mapperId: any;
|
|
6
7
|
redraw(): void;
|
|
7
8
|
recording: {
|
|
8
9
|
commands: any;
|
|
9
10
|
paintPool: never[];
|
|
10
11
|
} | undefined;
|
|
11
|
-
mapperId: any;
|
|
12
12
|
}
|
|
13
13
|
import { Container } from "./StaticContainer";
|
|
14
14
|
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function getPreferredHighBitDepthCanvasFormat(): "rgb10a2unorm" | "rgba16float";
|
|
@@ -24,8 +24,17 @@ export interface CanvasProps extends Omit<ViewProps, "onLayout"> {
|
|
|
24
24
|
opaque?: boolean;
|
|
25
25
|
onSize?: SharedValue<SkSize>;
|
|
26
26
|
colorSpace?: "p3" | "srgb";
|
|
27
|
+
/**
|
|
28
|
+
* Renders into a surface with more than 8 bits per channel (16-bit float on
|
|
29
|
+
* iOS, 10-bit on Android) to avoid banding in subtle gradients. Colors are
|
|
30
|
+
* identical to the default 8-bit surface, only with more precision (this is
|
|
31
|
+
* about bit depth, not HDR). On Android the extra precision survives
|
|
32
|
+
* composition only when combined with `opaque`, and the prop must be set
|
|
33
|
+
* before the canvas is mounted.
|
|
34
|
+
*/
|
|
35
|
+
highBitDepth?: boolean;
|
|
27
36
|
ref?: React.Ref<CanvasRef>;
|
|
28
37
|
androidWarmup?: boolean;
|
|
29
38
|
__destroyWebGLContextAfterRender?: boolean;
|
|
30
39
|
}
|
|
31
|
-
export declare const Canvas: ({ debug, opaque, children, onSize, colorSpace, androidWarmup, ref, onLayout, ...viewProps }: CanvasProps) => React.JSX.Element;
|
|
40
|
+
export declare const Canvas: ({ debug, opaque, children, onSize, colorSpace, highBitDepth, androidWarmup, ref, onLayout, ...viewProps }: CanvasProps) => React.JSX.Element;
|
|
@@ -35,8 +35,12 @@ export interface SkSurface extends SkJSIInstance<"Surface"> {
|
|
|
35
35
|
makeImageSnapshot(bounds?: SkRect, outputImage?: SkImage): SkImage;
|
|
36
36
|
/**
|
|
37
37
|
* Make sure any queued draws are sent to the screen or the GPU.
|
|
38
|
+
* @param sync - When true, block until the GPU has finished executing the
|
|
39
|
+
* submitted work. Use this before reading the surface's texture from a native
|
|
40
|
+
* consumer on a different command queue (see {@link getNativeTextureUnstable}).
|
|
41
|
+
* Defaults to false.
|
|
38
42
|
*/
|
|
39
|
-
flush(): void;
|
|
43
|
+
flush(sync?: boolean): void;
|
|
40
44
|
/**
|
|
41
45
|
* Returns the possibly scaled width of the surface.
|
|
42
46
|
*/
|
|
@@ -5,7 +5,7 @@ import { JsiSkImage } from "./JsiSkImage";
|
|
|
5
5
|
export declare class JsiSkSurface extends HostObject<Surface, "Surface"> implements SkSurface {
|
|
6
6
|
constructor(CanvasKit: CanvasKit, ref: Surface);
|
|
7
7
|
[Symbol.dispose](): void;
|
|
8
|
-
flush(): void;
|
|
8
|
+
flush(_sync?: boolean): void;
|
|
9
9
|
width(): number;
|
|
10
10
|
height(): number;
|
|
11
11
|
getCanvas(): SkCanvas;
|
|
@@ -7,6 +7,7 @@ declare class NativeReanimatedContainer extends Container {
|
|
|
7
7
|
private mapperId;
|
|
8
8
|
private picture;
|
|
9
9
|
constructor(Skia: Skia, nativeId: number);
|
|
10
|
+
unmount(): void;
|
|
10
11
|
redraw(): void;
|
|
11
12
|
}
|
|
12
13
|
export declare const createContainer: (Skia: Skia, nativeId: number) => StaticContainer | NativeReanimatedContainer;
|
|
@@ -6,6 +6,7 @@ declare class ReanimatedContainer extends Container {
|
|
|
6
6
|
private nativeId;
|
|
7
7
|
private mapperId;
|
|
8
8
|
constructor(Skia: Skia, nativeId: number);
|
|
9
|
+
unmount(): void;
|
|
9
10
|
redraw(): void;
|
|
10
11
|
}
|
|
11
12
|
export declare const createContainer: (Skia: Skia, nativeId: number) => StaticContainer | ReanimatedContainer;
|
|
@@ -4,7 +4,9 @@ import type { SkiaPictureViewHandle } from "../views/SkiaPictureView.web";
|
|
|
4
4
|
export type ISkiaViewApiWeb = ISkiaViewApi & {
|
|
5
5
|
views: Record<string, SkiaPictureViewHandle>;
|
|
6
6
|
deferedPictures: Record<string, SkPicture>;
|
|
7
|
+
unregisteredViews: Set<string>;
|
|
7
8
|
registerView(nativeId: string, view: SkiaPictureViewHandle): void;
|
|
9
|
+
unregisterView(nativeId: string): void;
|
|
8
10
|
};
|
|
9
11
|
declare const _default: {};
|
|
10
12
|
export default _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const getPreferredHighBitDepthCanvasFormat: () => GPUTextureFormat;
|
|
@@ -26,6 +26,12 @@ export interface SkiaBaseViewProps extends ViewProps {
|
|
|
26
26
|
*/
|
|
27
27
|
onSize?: SharedValue<SkSize>;
|
|
28
28
|
opaque?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Renders into a surface with more than 8 bits per channel (16-bit float on
|
|
31
|
+
* iOS, 10-bit on Android) to avoid banding in subtle gradients. On Android
|
|
32
|
+
* the extra precision survives composition only when combined with `opaque`.
|
|
33
|
+
*/
|
|
34
|
+
highBitDepth?: boolean;
|
|
29
35
|
__destroyWebGLContextAfterRender?: boolean;
|
|
30
36
|
}
|
|
31
37
|
export interface SkiaPictureViewNativeProps extends SkiaBaseViewProps {
|
package/package.json
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"setup-skia-web": "scripts/setup-canvaskit.js"
|
|
9
9
|
},
|
|
10
10
|
"title": "React Native Skia",
|
|
11
|
-
"version": "2.
|
|
11
|
+
"version": "2.7.0",
|
|
12
12
|
"description": "High-performance React Native Graphics using Skia",
|
|
13
13
|
"main": "lib/module/index.js",
|
|
14
14
|
"react-native": "src/index.ts",
|
|
@@ -104,6 +104,7 @@
|
|
|
104
104
|
"@types/jest": "30.0.0",
|
|
105
105
|
"@types/pngjs": "6.0.1",
|
|
106
106
|
"@types/react": "^19.0.0",
|
|
107
|
+
"@types/react-dom": "^19.0.0",
|
|
107
108
|
"@types/react-reconciler": "0.28.9",
|
|
108
109
|
"@types/ws": "8.5.3",
|
|
109
110
|
"eslint": "9.36.0",
|
|
@@ -112,10 +113,12 @@
|
|
|
112
113
|
"eslint-plugin-react-hooks": "^5.2.0",
|
|
113
114
|
"jest": "30.0.0",
|
|
114
115
|
"jest-diff": "29.7.0",
|
|
116
|
+
"jest-environment-jsdom": "30.0.0",
|
|
115
117
|
"merge-dirs": "0.2.1",
|
|
116
118
|
"pngjs": "6.0.0",
|
|
117
119
|
"prettier": "2.8.7",
|
|
118
120
|
"react": "19.0.0",
|
|
121
|
+
"react-dom": "19.0.0",
|
|
119
122
|
"react-native": "0.83.1",
|
|
120
123
|
"react-native-builder-bob": "0.18.2",
|
|
121
124
|
"react-native-reanimated": "4.3.1",
|
|
@@ -143,6 +143,7 @@ Pod::Spec.new do |s|
|
|
|
143
143
|
graphite_exclusions = [
|
|
144
144
|
'cpp/rnskia/RNDawnContext.h',
|
|
145
145
|
'cpp/rnskia/RNDawnUtils.h',
|
|
146
|
+
'cpp/rnskia/RNMetalLayerColorSpace.h',
|
|
146
147
|
'cpp/rnskia/RNDawnWindowContext.h',
|
|
147
148
|
'cpp/rnskia/RNDawnWindowContext.cpp',
|
|
148
149
|
'cpp/rnskia/RNImageProvider.h',
|