revas 1.0.3 → 2.0.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.
Files changed (84) hide show
  1. package/README.md +61 -1
  2. package/dist/chunk-JPUKLNW3.js +1710 -0
  3. package/dist/chunk-JPUKLNW3.js.map +1 -0
  4. package/dist/revas-common.cjs +1768 -0
  5. package/dist/revas-common.cjs.map +1 -0
  6. package/dist/revas-common.d.cts +363 -0
  7. package/dist/revas-common.d.ts +363 -0
  8. package/dist/revas-common.js +3 -0
  9. package/dist/revas-common.js.map +1 -0
  10. package/dist/revas.cjs +1881 -0
  11. package/dist/revas.cjs.map +1 -0
  12. package/dist/revas.d.cts +13 -0
  13. package/dist/revas.d.ts +13 -0
  14. package/dist/revas.js +108 -1978
  15. package/dist/revas.js.map +1 -1
  16. package/package.json +56 -46
  17. package/common.d.ts +0 -1
  18. package/common.js +0 -1
  19. package/dist/revas.common.js +0 -1872
  20. package/dist/revas.common.js.map +0 -1
  21. package/dist/revas.es.js +0 -1943
  22. package/dist/revas.es.js.map +0 -1
  23. package/dist/types/develop/App.d.ts +0 -8
  24. package/dist/types/develop/Intro/About.d.ts +0 -2
  25. package/dist/types/develop/Intro/Animation.d.ts +0 -2
  26. package/dist/types/develop/Intro/Component.d.ts +0 -2
  27. package/dist/types/develop/Intro/Entry.d.ts +0 -6
  28. package/dist/types/develop/Intro/Gesture.d.ts +0 -2
  29. package/dist/types/develop/Intro/Interactable.d.ts +0 -10
  30. package/dist/types/develop/Intro/Navbar.d.ts +0 -6
  31. package/dist/types/develop/Intro/Panel.d.ts +0 -14
  32. package/dist/types/develop/Intro/Style.d.ts +0 -2
  33. package/dist/types/develop/Intro/index.d.ts +0 -2
  34. package/dist/types/develop/Music/Player.d.ts +0 -79
  35. package/dist/types/develop/Music/data.d.ts +0 -8
  36. package/dist/types/develop/Music/index.d.ts +0 -23
  37. package/dist/types/develop/Music/styles.d.ts +0 -19
  38. package/dist/types/develop/Timeline/data.d.ts +0 -5
  39. package/dist/types/develop/Timeline/index.d.ts +0 -11
  40. package/dist/types/develop/common/back.d.ts +0 -2
  41. package/dist/types/develop/common/simple-router.d.ts +0 -44
  42. package/dist/types/develop/serviceWorker.d.ts +0 -7
  43. package/dist/types/index.d.ts +0 -1
  44. package/dist/types/revas/common.d.ts +0 -24
  45. package/dist/types/revas/components/Context.d.ts +0 -12
  46. package/dist/types/revas/components/Image.d.ts +0 -20
  47. package/dist/types/revas/components/LinearGradient.d.ts +0 -38
  48. package/dist/types/revas/components/ListView.d.ts +0 -22
  49. package/dist/types/revas/components/ScrollView.d.ts +0 -43
  50. package/dist/types/revas/components/Text.d.ts +0 -16
  51. package/dist/types/revas/components/Touchable.d.ts +0 -34
  52. package/dist/types/revas/components/View.d.ts +0 -3
  53. package/dist/types/revas/components/common/Scroller.d.ts +0 -35
  54. package/dist/types/revas/components/common/drawImage.d.ts +0 -3
  55. package/dist/types/revas/components/common/drawText.d.ts +0 -17
  56. package/dist/types/revas/components/common/imageLoader.d.ts +0 -2
  57. package/dist/types/revas/core/Animated.d.ts +0 -59
  58. package/dist/types/revas/core/Canvas.d.ts +0 -17
  59. package/dist/types/revas/core/Container.d.ts +0 -18
  60. package/dist/types/revas/core/Node.d.ts +0 -46
  61. package/dist/types/revas/core/css-layout/index.d.ts +0 -9
  62. package/dist/types/revas/core/draw.d.ts +0 -4
  63. package/dist/types/revas/core/offscreen.d.ts +0 -11
  64. package/dist/types/revas/core/reconciler.d.ts +0 -5
  65. package/dist/types/revas/core/touch.d.ts +0 -3
  66. package/dist/types/revas/core/utils.d.ts +0 -22
  67. package/dist/types/revas/core/yoga-layout/index.d.ts +0 -3
  68. package/dist/types/revas/core/yoga-layout/init.d.ts +0 -3
  69. package/dist/types/revas/core/yoga-layout/style.d.ts +0 -3
  70. package/dist/types/revas/index.d.ts +0 -2
  71. package/dist/types/revas/web/index.d.ts +0 -1
  72. package/dist/types/revas/web/render.d.ts +0 -7
  73. package/doc/API.md +0 -241
  74. package/doc/README-zh.md +0 -266
  75. package/public/favicon.ico +0 -0
  76. package/public/index.html +0 -64
  77. package/public/logo192.png +0 -0
  78. package/public/logo512.png +0 -0
  79. package/public/manifest.json +0 -25
  80. package/public/robots.txt +0 -2
  81. package/public/stats.min.js +0 -5
  82. package/public/touch-emulator.js +0 -363
  83. package/rollup.config.ts +0 -44
  84. package/tsconfig.json +0 -30
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/revas/components/View.ts","../src/revas/core/utils.ts","../src/revas/components/common/drawText.ts","../src/revas/components/Text.ts","../src/revas/components/common/imageLoader.ts","../src/revas/components/common/drawImage.ts","../src/revas/components/Image.ts","../src/revas/core/Animated.ts","../src/revas/components/Touchable.ts","../src/revas/components/common/Scroller.ts","../src/revas/components/ScrollView.ts","../src/revas/components/ListView.ts","../src/revas/components/LinearGradient.ts","../src/revas/core/Node.ts","../src/revas/core/reconciler.ts","../src/revas/components/Context.ts","../src/revas/core/yoga-layout/style.ts","../src/revas/core/yoga-layout/index.ts","../src/revas/core/offscreen.ts","../src/revas/core/draw.ts","../src/revas/core/touch.ts","../src/revas/core/Container.ts","../src/revas/core/Canvas.ts"],"names":["React","array","React2","React3","ease","bezier","t2","React4","React5","React6","DEFAULT_STYLE","React7","DefaultEventPriority","ReactReconciler","version","createContext","createElement","Align","Justify","Wrap","FlexDirection","PositionType","Edge","cache","Yoga","process","Direction","funcName"],"mappings":"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","file":"revas-common.cjs","sourcesContent":["import * as React from 'react'\nimport { NodeProps } from '../core/Node'\n\nexport default function View(props: NodeProps) {\n return React.createElement('View', props)\n}","import { Node } from './Node';\nimport { RevasCanvas } from './Canvas';\n\nexport function noop(): any {}\nexport const EMPTY_OBJECT: any = Object.freeze({});\nexport const EMPTY_ARRAY: any[] = Object.freeze([]) as any;\n\nexport function flatten(array: any[]) {\n const flattend: any[] = [];\n (function flat(array) {\n array.forEach(function (el) {\n if (Array.isArray(el)) {\n flat(el);\n } else {\n flattend.push(el);\n }\n });\n })(array);\n return flattend;\n}\n\nexport const now =\n typeof performance === 'object' && typeof performance.now === 'function' ? () => performance.now() : () => Date.now();\n\nfunction observeAnimatedValue(value: any, observer?: Function, defaultValue?: number) {\n if (value === undefined) {\n return defaultValue!;\n }\n if (value && value.getValue) {\n return value.getValue(observer);\n }\n return value;\n}\n\nexport function applyAnimated(style: any, callback?: Function) {\n if (style.animated) {\n // Animated Styles\n for (const key in style) {\n style[key] = observeAnimatedValue(style[key], callback);\n }\n }\n return style;\n}\n\nexport function getMergedStyleFromNode(node: Node, callback?: Function) {\n const {\n props: { style = EMPTY_ARRAY },\n } = node;\n return applyAnimated(Object.assign({}, ...flatten([style])), callback);\n}\n\nexport function getFrameFromNode(node: Node) {\n const { frame } = node;\n return frame;\n}\n\nexport function sortByZIndexAscending(a: Node, b: Node) {\n const styleA = getMergedStyleFromNode(a);\n const styleB = getMergedStyleFromNode(b);\n return (styleA.zIndex || 0) - (styleB.zIndex || 0);\n}\n\nexport function clamp(n: number, min: number, max: number) {\n return Math.min(Math.max(n, min), max);\n}\n\nconst ASTRAL_RANGE = /\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]?|[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?)*/g;\nconst WORD_RANGE = /\\w+|\\ud83c[\\udffb-\\udfff](?=\\ud83c[\\udffb-\\udfff])|(?:[^\\ud800-\\udfff][\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]?|[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?(?:\\u200d(?:[^\\ud800-\\udfff]|(?:\\ud83c[\\udde6-\\uddff]){2}|[\\ud800-\\udbff][\\udc00-\\udfff])[\\ufe0e\\ufe0f]?(?:[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]|\\ud83c[\\udffb-\\udfff])?)*/g;\n\nexport function getChars(str: string): readonly string[] {\n return str.match(ASTRAL_RANGE) || EMPTY_ARRAY;\n}\n\nexport function getWords(str: string): readonly string[] {\n return str.match(WORD_RANGE) || EMPTY_ARRAY;\n}\n\nexport function setShadow(canvas: RevasCanvas, color: string, x = 0, y = 0, blur = 0) {\n if (color && (x || y || blur)) {\n const { context: ctx } = canvas;\n const { shadowBlur, shadowColor, shadowOffsetX, shadowOffsetY } = ctx;\n ctx.shadowBlur = blur;\n ctx.shadowColor = color;\n ctx.shadowOffsetX = x;\n ctx.shadowOffsetY = y;\n return function resetShadow() {\n ctx.shadowBlur = shadowBlur;\n ctx.shadowColor = shadowColor;\n ctx.shadowOffsetX = shadowOffsetX;\n ctx.shadowOffsetY = shadowOffsetY;\n };\n }\n return noop;\n}\n\nexport function pushOpacity(canvas: RevasCanvas, opacity: number) {\n if (opacity !== null && opacity < 1 && opacity >= 0) {\n const cachedOpacity = canvas.context.globalAlpha || 1;\n canvas.context.globalAlpha = cachedOpacity * opacity;\n return function popOpacity() {\n canvas.context.globalAlpha = cachedOpacity;\n };\n }\n return noop;\n}\n\nexport type RevasAdapter = {\n createImage: () => HTMLImageElement;\n createOffscreenCanvas?: (width: number, height: number) => RevasCanvas;\n resetOffscreenCanvas?: (ctx: RevasCanvas, width: number, height: number) => RevasCanvas;\n};\n\nexport const adapter: RevasAdapter = {\n createImage: () => new Image(),\n};\n","import { Frame } from '../../core/Node';\nimport { getChars, getWords, setShadow } from '../../core/utils';\nimport { RevasCanvas } from '../../core/Canvas';\n\nexport interface DrawTextOptions {\n textStyle: any;\n numberOfLines: number;\n frame: Frame;\n content: string;\n}\n\nexport type MeasureLine = { width: number; text: string };\n\nexport type MeasureResult = [MeasureLine[], number];\n\nexport const DEFAULT_MEASURE: MeasureResult = [[], 0];\n\nfunction measureLines(canvas: RevasCanvas, chars: readonly string[], boxWidth: number, numberOfLines: number) {\n const lines: MeasureLine[] = [];\n let width = 0;\n let text = '';\n let cursor = -1;\n function pushLine(charWidth = 0, char = '', force = false) {\n if (force || text) {\n lines.push({ width, text });\n }\n if (cursor < chars.length && numberOfLines > 0 && lines.length >= numberOfLines) {\n const lastLine = lines[lines.length - 1];\n lastLine.text = `${lastLine.text.slice(0, -2)}...`;\n lastLine.width = canvas.context.measureText(lastLine.text).width;\n cursor = chars.length + 1;\n } else {\n width = charWidth;\n text = char.trim();\n }\n }\n while (cursor++ <= chars.length) {\n if (chars.length > cursor) {\n const char = chars[cursor];\n if (char === '\\n') {\n pushLine(0, '', true);\n } else {\n const charWidth = canvas.context.measureText(char).width;\n if (charWidth + width > boxWidth) {\n pushLine(charWidth, char);\n } else {\n width += charWidth;\n text += char;\n }\n }\n } else {\n pushLine();\n }\n }\n return lines;\n}\n\nfunction splitContent(content: string, wordBreak: string) {\n switch (wordBreak) {\n case 'break-all':\n return getChars(content);\n case 'keep-all':\n return [content];\n default:\n return getWords(content);\n }\n}\n\nexport function applyTextStyle(canvas: RevasCanvas, options: DrawTextOptions) {\n const { fontStyle, fontWeight, fontSize, fontFamily, textBaseline, color } = options.textStyle;\n // Apply Styles\n canvas.context.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`;\n canvas.context.fillStyle = color;\n canvas.context.textBaseline = textBaseline;\n}\n\nexport function measureText(canvas: RevasCanvas, options: DrawTextOptions): MeasureResult {\n const lines = measureLines(\n canvas,\n splitContent(options.content, options.textStyle.wordBreak),\n options.frame.width,\n options.numberOfLines\n );\n return [lines, options.textStyle.lineHeight * lines.length];\n}\n\nexport function drawText(canvas: RevasCanvas, options: DrawTextOptions, lines: MeasureLine[]) {\n const { textStyle: style, frame } = options;\n\n // Shadow:\n const resetShadow = setShadow(\n canvas,\n style.textShadowColor,\n style.textShadowOffsetX,\n style.textShadowOffsetY,\n style.textShadowBlur\n );\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n let { x } = frame;\n switch (style.textAlign) {\n case 'center':\n x = x + frame.width / 2 - line.width / 2;\n break;\n case 'right':\n x = x + frame.width - line.width;\n break;\n }\n canvas.context.fillText(line.text, x, style.lineHeight * (i + 0.5) + frame.y);\n }\n resetShadow();\n}\n","import * as React from 'react';\nimport { drawText, measureText, applyTextStyle, DrawTextOptions, DEFAULT_MEASURE } from './common/drawText';\nimport { NodeProps, Node } from '../core/Node';\nimport { getFrameFromNode, flatten, applyAnimated } from '../core/utils';\nimport { RevasCanvas } from '../core/Canvas';\n\nexport type TextProps = {\n numberOfLines?: number;\n} & NodeProps;\n\nexport default class Text extends React.Component<TextProps> {\n state = { height: 0 };\n\n _measured = DEFAULT_MEASURE;\n\n _drawed?: DrawTextOptions;\n\n drawText = (canvas: RevasCanvas, node: Node) => {\n const content = getTextFromNode(node);\n if (content) {\n const options = {\n numberOfLines: node.props.numberOfLines || 0,\n textStyle: getTextStyleFromNode(node),\n frame: getFrameFromNode(node),\n content,\n };\n applyTextStyle(canvas, options);\n if (textPropsChanged(options, this._drawed)) {\n this._measured = measureText(canvas, options);\n this._drawed = options;\n }\n const [lines, height] = this._measured;\n // Draw text first\n drawText(canvas, options, lines);\n // Update height asynchronously to avoid clearing canvas in same frame\n if (height !== this.state.height) {\n Promise.resolve().then(() => {\n if (this._drawed) {\n this.setState({ height });\n }\n });\n }\n }\n };\n render() {\n const { children, numberOfLines, ...others } = this.props as any;\n return React.createElement(\n 'View',\n others,\n React.createElement('Text', {\n content: children,\n customDrawer: this.drawText,\n textStyle: others.style,\n style: this.state,\n numberOfLines,\n $ready: Boolean(this._drawed),\n })\n );\n }\n}\n\nconst TEXT_STYLES_LIST = [\n 'fontStyle',\n 'fontWeight',\n 'fontSize',\n 'fontFamily',\n 'textBaseline',\n 'wordBreak',\n 'lineHeight',\n];\n\nconst DEFAULT_TEXTSTYLE = {\n fontFamily:\n \"-apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue'\",\n fontWeight: 'normal',\n fontSize: 14,\n color: '#000',\n fontStyle: 'normal',\n textBaseline: 'middle',\n};\n\nfunction textStyleChanged(left: any, right: any) {\n for (let i = 0; i < TEXT_STYLES_LIST.length; i++) {\n const item = TEXT_STYLES_LIST[i];\n if (left[item] !== right[item]) {\n return true;\n }\n }\n return false;\n}\n\nfunction textPropsChanged(left: DrawTextOptions, right?: DrawTextOptions) {\n if (!right) {\n return true;\n }\n if (left.content !== right.content) {\n return true;\n }\n if (left.numberOfLines !== right.numberOfLines) {\n return true;\n }\n if (left.frame.width !== right.frame.width) {\n return true;\n }\n return textStyleChanged(left.textStyle, right.textStyle);\n}\n\nfunction getTextFromNode(node: Node) {\n const frame = getFrameFromNode(node);\n if (frame.width > 0) {\n const { content } = node.props;\n if (typeof content === 'string') {\n return content;\n } else if (Array.isArray(content)) {\n return content.join('');\n }\n }\n return '';\n}\n\nfunction getTextStyleFromNode(node: Node) {\n const style = Object.assign({}, DEFAULT_TEXTSTYLE, ...flatten([node.props.textStyle]));\n style.lineHeight = style.lineHeight || style.fontSize * 1.1;\n return applyAnimated(style);\n}\n// TODO: nested text support\n","import { adapter } from '../../core/utils'\n\nclass CachedImage {\n readonly image = adapter.createImage()\n private readonly targets: Function[] = []\n private _ready = false\n get empty() {\n return this.targets.length === 0\n }\n constructor(\n public readonly src: string\n ) {\n if (!this.image) {\n throw new Error('Revas: createImage must be initialized')\n }\n this.image.onload = this.onload\n this.image.onerror = this.onerror\n this.image.src = src\n }\n onload = () => {\n this._ready = true\n // In React 19, batching is automatic, so just call directly\n this.targets.forEach(target => target(this.image))\n }\n onerror = () => { }\n add(target: Function) {\n if (this.targets.indexOf(target) < 0) {\n this.targets.push(target)\n if (this._ready) {\n target(this.image)\n }\n }\n }\n remove(target: Function) {\n const index = this.targets.indexOf(target)\n this.targets.splice(index, 1)\n }\n}\n\nconst cache = new Map<string, CachedImage>()\n\n\nexport function get(src: string, target?: Function) {\n if (!cache.has(src)) {\n cache.set(src, new CachedImage(src))\n }\n const cached = cache.get(src)!\n target && cached.add(target)\n return cached.image\n}\n\nexport function remove(src: string, target: Function) {\n if (cache.has(src)) {\n const cached = cache.get(src)!\n cached.remove(target)\n if (cached.empty) {\n cache.delete(src)\n }\n }\n}","import { Node } from '../../core/Node';\nimport * as imageLoader from './imageLoader';\nimport { clamp, getMergedStyleFromNode, getFrameFromNode } from '../../core/utils';\nimport { RevasCanvas } from '../../core/Canvas';\n\nexport default function drawImage(canvas: RevasCanvas, node: Node, flags: any) {\n const image = imageLoader.get(node.props.src);\n if (image.height <= 0) {\n return;\n }\n const frame = getFrameFromNode(node);\n const { width, height, x, y } = frame;\n if (width <= 0 || height <= 0) {\n return;\n }\n const style = getMergedStyleFromNode(node);\n\n const actualSize = {\n width: image.width,\n height: image.height,\n };\n\n const focusPoint = style.focusPoint || {\n x: actualSize.width * 0.5,\n y: actualSize.height * 0.5,\n };\n\n const hasClip = flags.hasRadius && !flags.hasClip;\n\n if (hasClip) {\n canvas.context.save();\n canvas.context.clip();\n }\n\n if (style.resizeMode === 'contain') {\n const scale = Math.min(width / actualSize.width, height / actualSize.height) || 1;\n\n const scaledSize = {\n width: actualSize.width * scale,\n height: actualSize.height * scale,\n };\n\n // Clip the image to rectangle (sx, sy, sw, sh).\n const sw = Math.round(actualSize.width);\n const sh = Math.round(actualSize.height);\n\n // Scale the image to dimensions (dw, dh).\n const dw = Math.round(scaledSize.width);\n const dh = Math.round(scaledSize.height);\n\n // Draw the image on the canvas at coordinates (dx, dy).\n const dx = Math.round((width - scaledSize.width) / 2 + x);\n const dy = Math.round((height - scaledSize.height) / 2 + y);\n\n canvas.context.drawImage(image, 0, 0, sw, sh, dx, dy, dw, dh);\n } else {\n const scale = Math.max(width / actualSize.width, height / actualSize.height) || 1;\n\n const scaledSize = {\n width: actualSize.width * scale,\n height: actualSize.height * scale,\n };\n\n // Clip the image to rectangle (sx, sy, sw, sh).\n const sx = Math.round(clamp(width * 0.5 - focusPoint.x * scale, width - scaledSize.width, 0)) * (-1 / scale);\n const sy = Math.round(clamp(height * 0.5 - focusPoint.y * scale, height - scaledSize.height, 0)) * (-1 / scale);\n const sw = Math.round(actualSize.width - sx * 2);\n const sh = Math.round(actualSize.height - sy * 2);\n\n // Scale the image to dimensions (dw, dh).\n const dw = Math.round(width);\n const dh = Math.round(height);\n\n // Draw the image on the canvas at coordinates (dx, dy).\n const dx = Math.round(x);\n const dy = Math.round(y);\n\n canvas.context.drawImage(image, sx, sy, sw, sh, dx, dy, dw, dh);\n }\n if (hasClip) {\n canvas.context.restore();\n }\n}\n","import * as React from 'react';\nimport * as imageLoader from './common/imageLoader';\nimport drawImage from './common/drawImage';\nimport { NodeProps } from '../core/Node';\n\nexport type ImageViewProps = {\n src: string;\n} & NodeProps;\n\nconst DEFAULT_STYLE = { path: true };\n\nexport default function ImageView(props: ImageViewProps) {\n const { src, style } = props;\n const [ready, setReady] = React.useState(false);\n React.useEffect(() => {\n if (src) {\n const onReady = () => setReady(true);\n imageLoader.get(src, onReady);\n return () => imageLoader.remove(src, onReady);\n }\n }, [src]);\n\n return React.createElement('Image', {\n customDrawer: ready ? drawImage : void 0,\n ...props,\n style: [DEFAULT_STYLE, style],\n $ready: ready,\n });\n}\n","import bezier from 'bezier-easing';\n\nexport abstract class AnimatedNode {\n abstract getValue(observer?: Function): number;\n\n interpolate(inRange: number[], outRange: number[], ease = Easing.linear): AnimatedInterpolate {\n return new AnimatedInterpolate(this, inRange, outRange, ease);\n }\n}\n\nexport class AnimatedValue extends AnimatedNode {\n // TODO: tempor\n private _observer?: Function;\n\n constructor(private _value: number) {\n super();\n }\n\n setValue(value: number) {\n this._value = value;\n if (this._observer) {\n const observer = this._observer;\n this._observer = void 0;\n observer();\n }\n }\n\n getValue(observer?: Function) {\n if (observer) {\n this._observer = observer;\n }\n return this._value;\n }\n}\n\nexport class AnimatedInterpolate extends AnimatedNode {\n constructor(\n private source: AnimatedNode,\n private inRange: number[],\n private outRange: number[],\n private ease: (t: number) => number\n ) {\n super();\n }\n // TODO: Check inRange is asc\n\n getValue(observer?: Function) {\n const value = this.source.getValue(observer);\n const len = this.inRange.length;\n let i = 1;\n for (; i < len; i++) {\n const x1 = this.inRange[i];\n if (value < x1 || i === len - 1) {\n const x0 = this.inRange[i - 1];\n const y0 = this.outRange[i - 1];\n const y1 = this.outRange[i];\n const percent = (value - x0) / (x1 - x0);\n const result = (y1 - y0) * this.ease(percent) + y0;\n return result;\n }\n }\n return 0;\n }\n}\n\nexport type TimingConfig = {\n to: number;\n duration: number;\n ease?: (t: number) => number;\n};\n\nexport class AnimatedTiming {\n private _startTime = 0;\n private _startValue = 0;\n private _onEnd?: Function;\n private _next = 0;\n\n constructor(private value: AnimatedValue, private config: TimingConfig) {}\n\n private get _ease() {\n return this.config.ease || Easing.linear;\n }\n\n start(onEnd?: Function) {\n this._startTime = Date.now();\n this._startValue = this.value.getValue();\n this._onEnd = onEnd;\n this._next = requestAnimationFrame(this._loop);\n return this;\n }\n\n stop() {\n cancelAnimationFrame(this._next);\n return this;\n }\n\n promise() {\n return new Promise(resolve => (this._onEnd = resolve));\n }\n\n private _loop = () => {\n const duration = Date.now() - this._startTime;\n if (duration < this.config.duration) {\n const percent = duration / this.config.duration;\n const inc = this._ease(percent) * (this.config.to - this._startValue);\n this.value.setValue(this._startValue + inc);\n this._next = requestAnimationFrame(this._loop);\n } else {\n this.value.setValue(this.config.to);\n this._onEnd && requestAnimationFrame(this._onEnd as any);\n }\n };\n}\n\nexport function timing(value: AnimatedValue, config: TimingConfig) {\n return new AnimatedTiming(value, config);\n}\n\nlet ease: (t: number) => number;\n\nfunction getEase() {\n if (!ease) {\n ease = bezier(0.42, 0, 1, 1);\n }\n return ease;\n}\n\nexport const Easing = {\n linear(t: number) {\n return t;\n },\n\n ease(t: number): number {\n return getEase()(t);\n },\n /**\n * Runs an easing function forwards.\n */\n in(easing = getEase()): (t: number) => number {\n return easing;\n },\n\n /**\n * Runs an easing function backwards.\n */\n out(easing = getEase()): (t: number) => number {\n return t => 1 - easing(1 - t);\n },\n\n /**\n * Makes any easing function symmetrical. The easing function will run\n * forwards for half of the duration, then backwards for the rest of the\n * duration.\n */\n inOut(easing = getEase()): (t: number) => number {\n return t => {\n if (t < 0.5) {\n return easing(t * 2) / 2;\n }\n return 1 - easing((1 - t) * 2) / 2;\n };\n },\n bounce(t: number): number {\n if (t < 1 / 2.75) {\n return 7.5625 * t * t;\n }\n\n if (t < 2 / 2.75) {\n const t2 = t - 1.5 / 2.75;\n return 7.5625 * t2 * t2 + 0.75;\n }\n\n if (t < 2.5 / 2.75) {\n const t2 = t - 2.25 / 2.75;\n return 7.5625 * t2 * t2 + 0.9375;\n }\n\n const t2 = t - 2.625 / 2.75;\n return 7.5625 * t2 * t2 + 0.984375;\n },\n elastic(bounciness = 1): (t: number) => number {\n const p = bounciness * Math.PI;\n return t => 1 - Math.pow(Math.cos((t * Math.PI) / 2), 3) * Math.cos(t * p);\n },\n};\n","import * as React from 'react';\nimport { BaseProps, RevasTouchEvent, RevasTouch } from '../core/Node';\nimport { AnimatedValue } from '../core/Animated';\n\nexport type TouchableProps = {\n onPress: Function;\n onPressIn?: Function;\n onPressOut?: Function;\n activeOpacity?: number;\n} & BaseProps;\n\nexport default class Touchable extends React.Component<TouchableProps> {\n static defaultProps = {\n activeOpacity: 0.7\n };\n\n _style = {\n opacity: new AnimatedValue(1),\n animated: true\n };\n\n private _start?: RevasTouch;\n private _tid = '';\n\n private _onTouchStart = (e: RevasTouchEvent) => {\n this._tid = Object.keys(e.touches)[0];\n this._start = e.touches[this._tid];\n this._style.opacity.setValue(this.props.activeOpacity!);\n this.props.onPressIn && this.props.onPressIn();\n };\n\n private _onTouchEnd = (e: RevasTouchEvent) => {\n if (this._start && e.touches[this._tid]) {\n if (Math.abs(this._start.x - e.touches[this._tid].x) < 3 &&\n Math.abs(this._start.y - e.touches[this._tid].y) < 3) {\n this.props.onPress && this.props.onPress();\n }\n }\n this._style.opacity.setValue(1);\n this.props.onPressOut && this.props.onPressOut();\n };\n\n render() {\n return React.createElement('Touchable', {\n onTouchStart: this._onTouchStart,\n onTouchEnd: this._onTouchEnd,\n ...this.props,\n style: [\n this.props.style,\n this._style\n ]\n });\n }\n}","import { RevasTouchEvent } from '../../core/Node';\nimport { clamp, noop } from '../../core/utils';\n\nexport type RevasScrollEventType = 'start' | 'scroll' | 'end' | 'none';\n\nexport interface RevasScrollEvent {\n type: RevasScrollEventType;\n x: number;\n y: number;\n vx: number;\n vy: number;\n timestamp: number;\n tid: string;\n}\n\nclass Handler {\n offset = 0;\n velocity = 0;\n max = -1;\n paging = 0;\n\n private _last = -1;\n\n capture(value: number) {\n if (this._last < 0) {\n this._last = value;\n }\n }\n\n onMove(value: number, duration: number) {\n if (this._last >= 0 && duration > 0) {\n const move = this._last - value;\n this.velocity = move / duration;\n this._last = value;\n this.change(move);\n }\n }\n onEnd() {\n if (this._last >= 0) {\n this._last = -1;\n }\n }\n\n afterEnd(duration: number) {\n if (this._last < 0) {\n const absv = Math.abs(this.velocity);\n if (this.paging > 0 && absv <= 0.5 && this.offset < this.max) {\n // start reset to paging\n const distance = Math.round(this.offset / this.paging + this.velocity) * this.paging - this.offset;\n this.velocity = clamp(distance / 2000 + friction(this.velocity, duration, 0.01), -0.5, 0.5);\n if (Math.abs(distance) > 0.5 || absv > 0.05) {\n const move = this.velocity * duration;\n this.change(move);\n return true;\n } else {\n // end to paging\n this.change(distance);\n }\n } else if (absv > 0.05) {\n // scroll for free\n this.velocity = friction(this.velocity, duration, 0.002);\n const move = this.velocity * duration;\n this.change(move);\n return true;\n } else {\n this.velocity = 0;\n }\n }\n return false;\n }\n\n change(move: number) {\n const _offset = clamp(this.offset + move, 0, this.max > 0 ? this.max : 0);\n // check validate\n if (_offset !== this.offset) {\n this.offset = _offset;\n } else if (this._last < 0) {\n this.velocity = 0;\n }\n }\n}\n\nexport default class Scroller {\n private _timestamp = 0;\n private _x = new Handler();\n private _y = new Handler();\n private _tid = '';\n private _timer: any;\n\n horizontal?: boolean = false;\n\n constructor(private listener: (e: RevasScrollEvent) => any) {}\n\n set maxX(value: number) {\n this._x.max = value;\n }\n\n get maxX() {\n return this._x.max;\n }\n\n set maxY(value: number) {\n this._y.max = value;\n }\n\n get maxY() {\n return this._y.max;\n }\n\n set pagingX(value: number) {\n this._x.paging = value;\n }\n\n set pagingY(value: number) {\n this._y.paging = value;\n }\n\n private _sign(e: RevasTouchEvent) {\n e.scroll = { ...e.scroll, x: true, y: true };\n const stopPropagation = e.scroll.stopPropagation || noop;\n if (this.horizontal) {\n if (this._x.velocity > 0) {\n e.scroll.y = false;\n stopPropagation();\n }\n if (this._x.offset > 0 && this._x.offset < this._x.max) {\n e.scroll.x = false;\n }\n } else {\n if (this._y.velocity > 0) {\n e.scroll.x = false;\n stopPropagation();\n }\n if (this._y.offset > 0 && this._y.offset < this._y.max) {\n e.scroll.y = false;\n }\n }\n e.stopPropagation = () => {\n this.touchEnd();\n stopPropagation();\n };\n }\n\n private _check(e: RevasTouchEvent) {\n if (this.horizontal && e.scroll && e.scroll.x === false) {\n return this.touchEnd();\n }\n if (!this.horizontal && e.scroll && e.scroll.y === false) {\n return this.touchEnd();\n }\n return true;\n }\n\n touchStart = (e: RevasTouchEvent) => {\n if (!this._tid) {\n this._tid = Object.keys(e.touches)[0];\n this._timestamp = e.timestamp;\n const { x, y } = e.touches[this._tid];\n this.horizontal ? this._x.capture(x) : this._y.capture(y);\n this.emit('start');\n }\n };\n\n touchMove = (e: RevasTouchEvent) => {\n if (this._tid && e.touches[this._tid] && this._check(e)) {\n const { x, y } = e.touches[this._tid];\n const duration = e.timestamp - this._timestamp;\n this._timestamp = e.timestamp;\n this.horizontal ? this._x.onMove(x, duration) : this._y.onMove(y, duration);\n this.emit('scroll');\n this._sign(e);\n }\n };\n\n touchEnd = () => {\n if (this._tid) {\n this._tid = '';\n this._timestamp = Date.now();\n this._x.onEnd();\n this._y.onEnd();\n this._timer = requestAnimationFrame(this.afterEnd);\n }\n };\n\n afterEnd = () => {\n const timestamp = Date.now();\n const duration = timestamp - this._timestamp;\n this._timestamp = timestamp;\n if (this.horizontal ? this._x.afterEnd(duration) : this._y.afterEnd(duration)) {\n this.emit('scroll');\n this._timer = requestAnimationFrame(this.afterEnd);\n } else {\n this.emit('end');\n }\n };\n\n emit(type: RevasScrollEventType) {\n this.listener({\n type,\n x: this._x.offset,\n vx: this._x.velocity,\n y: this._y.offset,\n vy: this._y.velocity,\n timestamp: this._timestamp,\n tid: this._tid,\n });\n }\n\n cancel() {\n cancelAnimationFrame(this._timer);\n this._tid = '';\n this._timestamp = Date.now();\n this._x.onEnd();\n this._y.onEnd();\n }\n}\n\nfunction friction(v: number, duration: number, factor: number) {\n return v - Math.min(duration * factor, 1) * v;\n}\n","import * as React from 'react';\nimport { NodeProps, Frame } from '../core/Node';\nimport Scroller, { RevasScrollEvent } from './common/Scroller';\nimport { AnimatedValue } from '../core/Animated';\n\nexport type ScrollViewOffset = { x?: number; y?: number };\n\nexport type ScrollViewProps = {\n horizontal?: boolean;\n onScroll?: (e: RevasScrollEvent) => any;\n onScrollStart?: (e: RevasScrollEvent) => any;\n onScrollEnd?: (e: RevasScrollEvent) => any;\n paging?: boolean | number;\n offset?: ScrollViewOffset;\n} & NodeProps;\n\nexport default class ScrollView extends React.Component<ScrollViewProps> {\n private _height = -1;\n private _contentHeight = -1;\n private _width = -1;\n private _contentWidth = -1;\n private _innerStyle = {\n translateX: new AnimatedValue(0),\n translateY: new AnimatedValue(0),\n position: 'absolute',\n animated: true,\n };\n private _offset: ScrollViewOffset = { x: 0, y: 0 };\n\n private _scroller = new Scroller(e => {\n const { x = 0, y = 0 } = this._offset;\n this.props.horizontal ?\n this._innerStyle.translateX.setValue(x - e.x) :\n this._innerStyle.translateY.setValue(y - e.y);\n switch (e.type) {\n case 'scroll':\n return this.props.onScroll && this.props.onScroll(e);\n case 'start':\n return this.props.onScrollStart && this.props.onScrollStart(e);\n case 'end':\n return this.props.onScrollEnd && this.props.onScrollEnd(e);\n }\n });\n\n componentWillUnmount() {\n this._scroller.cancel();\n }\n\n private _onLayout = (frame: Frame) => {\n if (this._width !== frame.width || this._height !== frame.height) {\n this._height = frame.height;\n this._width = frame.width;\n this._checkLayout();\n if (this.props.paging) {\n if (this.props.horizontal) {\n this._scroller.pagingX = this.props.paging === true ? frame.width : this.props.paging;\n } else {\n this._scroller.pagingY = this.props.paging === true ? frame.height : this.props.paging;\n }\n }\n }\n this.props.onLayout && this.props.onLayout(frame);\n };\n\n private _onContentLayout = (frame: Frame) => {\n const { x = 0, y = 0 } = this._offset;\n const width = frame.width + x;\n const height = frame.height + y;\n if (this._contentWidth !== width || this._contentHeight !== height) {\n this._contentHeight = height;\n this._contentWidth = width;\n this._checkLayout();\n }\n };\n\n private _checkLayout = () => {\n const maxX = this._contentWidth - this._width;\n const maxY = this._contentHeight - this._height;\n if ((maxX > 0 && maxX !== this._scroller.maxX) || (maxY > 0 && maxY !== this._scroller.maxY)) {\n this._scroller.maxX = maxX;\n this._scroller.maxY = maxY;\n this._scroller.emit('none');\n }\n };\n\n render() {\n const { children, horizontal, offset, ...others } = this.props;\n\n this._scroller.horizontal = horizontal;\n\n if (offset) {\n this._offset = offset;\n this._scroller.emit('none');\n }\n\n return React.createElement(\n 'Scrollable',\n { ...others, onLayout: this._onLayout },\n React.createElement('ScrollContent', {\n onTouchStart: this._scroller.touchStart,\n onTouchMove: this._scroller.touchMove,\n onTouchEnd: this._scroller.touchEnd,\n onLayout: this._onContentLayout,\n style: [\n this._innerStyle,\n {\n flexDirection: horizontal ? 'row' : 'column',\n [horizontal ? 'height' : 'width']: '100%',\n },\n ],\n children,\n })\n );\n }\n}\n","import * as React from 'react';\nimport { RevasScrollEvent } from './common/Scroller';\nimport ScrollView, { ScrollViewProps } from './ScrollView';\nimport { Frame } from '../core/Node';\n\nexport type ListViewProps<T = any> = {\n data: T[];\n renderItem: (item: T, index: number, data: T[]) => React.ReactNode;\n itemHeight: number;\n} & ScrollViewProps;\n\nexport default class ListView extends React.Component<ListViewProps<any>> {\n state = {\n start: 0,\n end: 1,\n };\n\n private _height = 0;\n\n componentDidMount() {\n this.checkVisible(0);\n }\n\n private checkVisible = (y: number) => {\n if (this._height > 0) {\n const { itemHeight } = this.props;\n const { start: _start, end: _end } = this.state;\n const start = Math.max(0, Math.floor((y - 10) / itemHeight));\n const end = Math.floor((y + this._height + 10) / itemHeight);\n if (start !== _start || end !== _end) {\n this.setState({ start, end });\n }\n }\n };\n\n private _onScroll = (e: RevasScrollEvent) => {\n this.checkVisible(e.y);\n this.props.onScroll && this.props.onScroll(e);\n };\n\n private _onLayout = (frame: Frame) => {\n if (this._height !== frame.height) {\n this._height = frame.height;\n }\n // this._width = frame.width\n };\n\n renderItem = (item: any, i: number) => {\n const { data, renderItem } = this.props;\n const index = i + this.state.start;\n return React.createElement(React.Fragment, { key: index }, renderItem(item, index, data));\n };\n\n render() {\n const { data, itemHeight } = this.props;\n const { start, end } = this.state;\n // console.log(start, end, this._height);\n return React.createElement(\n ScrollView,\n {\n ...this.props,\n onScroll: this._onScroll,\n onLayout: this._onLayout,\n offset: { y: start * itemHeight },\n },\n data.slice(start, end + 1).map(this.renderItem)\n );\n }\n}\n","import * as React from 'react';\nimport { NodeProps, Node } from '../core/Node';\nimport { getFrameFromNode } from '../core/utils';\nimport { RevasCanvas } from '../core/Canvas';\n\nexport type LinearGradientProps = {\n start?: { x: number; y: number };\n end?: { x: number; y: number };\n colors: string[];\n} & NodeProps;\n\nconst DEFAULT_STYLE = { path: true };\n\nexport default function LinearGradient(props: LinearGradientProps) {\n return React.createElement('LinearGradient', {\n ...props,\n style: [DEFAULT_STYLE, props.style],\n customDrawer: drawGradient,\n });\n}\n\nfunction drawGradient(canvas: RevasCanvas, node: Node) {\n const { colors } = node.props as LinearGradientProps;\n if (colors && colors.length > 0) {\n const { start = { x: 0, y: 0 }, end = { x: 1, y: 0 } } = node.props as LinearGradientProps;\n const frame = getFrameFromNode(node);\n const grad = canvas.context.createLinearGradient(\n start.x * frame.width + frame.x,\n start.y * frame.height + frame.y,\n end.x * frame.width + frame.x,\n end.y * frame.height + frame.y\n );\n for (let i = 0; i < colors.length; i++) {\n grad.addColorStop(i / (colors.length - 1), colors[i]);\n }\n canvas.context.fillStyle = grad;\n canvas.context.fill();\n }\n}\n","import { ReactNode } from 'react';\n\nexport class Frame {\n constructor(public x = 0, public y = 0, public width = 0, public height = 0) {}\n}\n\nexport class Node<T = any> {\n public readonly children: Node[] = [];\n public frame = new Frame();\n public parent?: Node;\n constructor(public readonly type: string, public props: NodeProps & T) {}\n get $ready() {\n if (this.props.$ready === false) {\n return false;\n }\n for (let i = 0; i < this.children.length; i++) {\n const child = this.children[i];\n if (child.$ready === false) {\n return false;\n }\n }\n return true;\n }\n}\n\nexport interface RevasTouch {\n identifier: number;\n x: number;\n y: number;\n}\n\nexport type RevasTouchType = 'touchstart' | 'touchmove' | 'touchend';\n\nexport interface RevasTouchEvent {\n type: RevasTouchType;\n touches: { [key: string]: RevasTouch };\n timestamp: number;\n [key: string]: any;\n}\n\nexport type RevasTouchEventListener = (event: RevasTouchEvent) => any;\n\nexport interface BaseProps {\n children?: ReactNode;\n style?: any | any[];\n cache?: string | boolean;\n forceCache?: boolean;\n}\n\nexport interface NodeProps extends BaseProps {\n onTouchStart?: RevasTouchEventListener;\n onTouchMove?: RevasTouchEventListener;\n onTouchEnd?: RevasTouchEventListener;\n onLayout?: (frame: Frame) => any;\n pointerEvents?: 'auto' | 'none' | 'box-none';\n $ready?: boolean;\n}\n","import ReactReconciler from 'react-reconciler';\nimport { DefaultEventPriority } from 'react-reconciler/constants';\nimport { version } from 'react';\nimport { Node } from './Node';\nimport { noop, now } from './utils';\nimport { Container } from './Container';\n\nconst isDev = process.env.NODE_ENV !== 'production';\n\n// Track current update priority\nlet currentUpdatePriority = DefaultEventPriority;\n\nfunction checkAndRemove(parent: Node, child: Node) {\n const index = parent.children.indexOf(child);\n if (index >= 0) {\n parent.children.splice(index, 1);\n }\n}\n\nfunction appendChild(parent: Node, child: Node) {\n checkAndRemove(parent, child);\n parent.children.push(child);\n child.parent = parent;\n}\n\nconst RevasReconciler = ReactReconciler({\n supportsMutation: true,\n supportsPersistence: false,\n supportsHydration: false,\n isPrimaryRenderer: false,\n\n // Timing\n now,\n scheduleTimeout: setTimeout,\n cancelTimeout: clearTimeout,\n noTimeout: -1,\n supportsMicrotasks: true,\n scheduleMicrotask:\n typeof queueMicrotask === 'function' ? queueMicrotask : setTimeout,\n\n // Update priority (required for React 19)\n getCurrentEventPriority: () => DefaultEventPriority,\n setCurrentUpdatePriority: (priority: number) => {\n currentUpdatePriority = priority;\n },\n getCurrentUpdatePriority: () => currentUpdatePriority,\n resolveUpdatePriority: () => currentUpdatePriority || DefaultEventPriority,\n\n // Suspense commit control (required for React 19)\n maySuspendCommit: () => false,\n preloadInstance: () => true,\n startSuspendingCommit: noop,\n suspendInstance: noop,\n waitForCommitToBeReady: () => null,\n\n // Transitions (required for React 19)\n NotPendingTransition: null as null,\n HostTransitionContext: {\n $$typeof: Symbol.for('react.context'),\n _currentValue: null,\n _currentValue2: null,\n },\n resetFormInstance: noop,\n\n // Event tracking (required for React 19)\n trackSchedulerEvent: noop,\n resolveEventType: () => null,\n resolveEventTimeStamp: () => -1.1,\n shouldAttemptEagerTransition: () => false,\n\n // Instance creation\n createInstance(type: string, props: any) {\n return new Node(type, props);\n },\n\n createTextInstance() {\n throw new Error('Revas: string cannot be child out of <Text/>');\n },\n\n // Tree operations\n appendChild,\n appendInitialChild: appendChild,\n appendChildToContainer(container: Container, instance: Node) {\n if (instance.type !== 'Root') {\n throw new Error(`wrong root instance type: ${instance.type}`);\n }\n container.setRoot(instance);\n },\n\n removeChild(parent: Node, child: Node) {\n checkAndRemove(parent, child);\n child.parent = void 0;\n },\n removeChildFromContainer(container: Container) {\n container.setRoot();\n },\n\n insertBefore(parent: Node, child: Node, before: Node) {\n checkAndRemove(parent, child);\n const beforeIndex = parent.children.indexOf(before);\n parent.children.splice(beforeIndex, 0, child);\n child.parent = parent;\n },\n\n insertInContainerBefore() {\n throw new Error(\"shouldn't be here: insertInContainerBefore\");\n },\n\n clearContainer() {\n // noop\n },\n\n // Finalization\n finalizeInitialChildren() {\n return false;\n },\n\n // Public instance\n getPublicInstance(instance: Node) {\n return instance;\n },\n\n // Updates\n prepareUpdate() {\n return true;\n },\n\n commitUpdate(\n instance: Node,\n _updatePayload: any,\n _type: string,\n oldProps: any,\n newProps: any\n ) {\n // Merge old props with new props, keeping old values for undefined new values\n // This handles React 19's behavior where unchanged props may be undefined\n const mergedProps = { ...oldProps };\n for (const key in newProps) {\n if (newProps[key] !== undefined) {\n mergedProps[key] = newProps[key];\n }\n }\n instance.props = mergedProps;\n },\n\n commitMount: noop,\n\n // Commit phase\n prepareForCommit() {\n return null;\n },\n\n resetAfterCommit(container: Container) {\n container.draw(true);\n },\n\n resetTextContent: noop,\n\n // Context\n getRootHostContext() {\n return {};\n },\n\n getChildHostContext(parentHostContext: object) {\n return parentHostContext;\n },\n\n shouldSetTextContent() {\n return false;\n },\n\n // Visibility (required for React 19 Offscreen)\n hideInstance: noop,\n hideTextInstance: noop,\n unhideInstance: noop,\n unhideTextInstance: noop,\n\n // Required stubs for React 19\n getInstanceFromNode() {\n return null;\n },\n\n beforeActiveInstanceBlur: noop,\n afterActiveInstanceBlur: noop,\n preparePortalMount: noop,\n prepareScopeUpdate: noop,\n\n getInstanceFromScope() {\n return null;\n },\n\n detachDeletedInstance: noop,\n});\n\nRevasReconciler.injectIntoDevTools({\n bundleType: isDev ? 1 : 0,\n version: version,\n rendererPackageName: 'revas',\n findHostInstanceByFiber: RevasReconciler.findHostInstance,\n});\n\nexport default RevasReconciler;\n","import { createContext, createElement } from 'react';\nimport { RevasCanvas } from '../core/Canvas';\n\nexport interface AppContextType {\n clientWidth: number;\n clientHeight: number;\n deviceRatio: number;\n canvas?: RevasCanvas;\n RTL?: boolean;\n}\n\nexport const AppContext = createContext<AppContextType>({\n clientWidth: 0,\n clientHeight: 0,\n deviceRatio: 1,\n});\n\nexport function withContext<T>(comp: T): T {\n (comp as any).contextType = AppContext;\n return comp;\n}\n\nexport function Root(props: AppContextType) {\n return createElement(AppContext.Provider, { value: props }, createElement('Root', props));\n}\n","import {\n Node as YogaNode,\n Align,\n Justify,\n Wrap,\n FlexDirection,\n PositionType,\n Edge,\n} from 'yoga-layout';\nimport { flatten } from '../utils';\n\nfunction funcName(key: string) {\n return `set${key[0].toUpperCase()}${key.substr(1)}`;\n}\n\ntype StyleParams = [string, any?, any?];\n\nfunction checkAndRun(yoga: any, key: string, ...values: any[]) {\n if (yoga[key]) {\n yoga[key](...values);\n } else {\n throw new Error(`Revas: No Such Style Func - ${key}`);\n }\n}\n\nfunction parseValue(func: string, value: string | number): StyleParams {\n if (typeof value === 'number') {\n return [func, value];\n } else if (value === 'auto') {\n return [`${func}Auto`];\n } else if (value.endsWith('%')) {\n return [`${func}Percent`, Number(value.slice(0, -1))];\n } else {\n throw new Error(`Revas: No Such Style Value - ${value}`);\n }\n}\n\nfunction parseEnum(func: string, enums: any, value: string): StyleParams {\n if (enums[value] !== undefined) {\n return [func, enums[value]];\n } else {\n throw new Error(`Revas: No Such Style Value - ${value}`);\n }\n}\n\nfunction parseEdge(\n func: string,\n edge: number,\n value: string | number\n): StyleParams {\n if (typeof value === 'number') {\n return [func, edge, value];\n } else if (value === 'auto') {\n return [`${func}Auto`, edge];\n } else if (value.endsWith('%')) {\n return [`${func}Percent`, edge, Number(value.slice(0, -1))];\n } else {\n throw new Error(`Revas: No Such Style Value - ${value}`);\n }\n}\n\nconst ALIGN_ENUM = {\n auto: Align.Auto,\n baseline: Align.Baseline,\n center: Align.Center,\n 'flex-end': Align.FlexEnd,\n 'flex-start': Align.FlexStart,\n 'space-around': Align.SpaceAround,\n 'space-between': Align.SpaceBetween,\n stretch: Align.Stretch,\n};\n\nconst STYLE_MAP: { [key: string]: (value: any) => StyleParams } = {};\n\n// Initialize style map (synchronous in Yoga 3.x)\nconst AVAILABLE = {\n VALUE: [\n 'flex',\n 'width',\n 'height',\n 'minWidth',\n 'maxWidth',\n 'minHeight',\n 'maxHeight',\n 'flexGrow',\n 'flexShrink',\n 'aspectRatio',\n ],\n ENUM: [\n {\n key: 'justifyContent',\n enum: {\n center: Justify.Center,\n 'flex-end': Justify.FlexEnd,\n 'flex-start': Justify.FlexStart,\n 'space-around': Justify.SpaceAround,\n 'space-between': Justify.SpaceBetween,\n 'space-evenly': Justify.SpaceEvenly,\n },\n },\n { key: 'alignItems', enum: ALIGN_ENUM },\n { key: 'alignSelf', enum: ALIGN_ENUM },\n { key: 'alignContent', enum: ALIGN_ENUM },\n {\n key: 'flexWrap',\n enum: {\n 'no-wrap': Wrap.NoWrap,\n wrap: Wrap.Wrap,\n 'wrap-reverse': Wrap.WrapReverse,\n },\n },\n {\n key: 'flexDirection',\n enum: {\n column: FlexDirection.Column,\n 'column-reverse': FlexDirection.ColumnReverse,\n row: FlexDirection.Row,\n 'row-reverse': FlexDirection.RowReverse,\n },\n },\n {\n key: 'position',\n remap: 'positionType',\n enum: {\n relative: PositionType.Relative,\n absolute: PositionType.Absolute,\n static: PositionType.Static,\n },\n },\n ],\n EDGE: [\n { key: 'padding', remap: 'padding', edge: Edge.All },\n { key: 'paddingLeft', remap: 'padding', edge: Edge.Left },\n { key: 'paddingRight', remap: 'padding', edge: Edge.Right },\n { key: 'paddingTop', remap: 'padding', edge: Edge.Top },\n { key: 'paddingBottom', remap: 'padding', edge: Edge.Bottom },\n\n { key: 'left', remap: 'position', edge: Edge.Left },\n { key: 'right', remap: 'position', edge: Edge.Right },\n { key: 'top', remap: 'position', edge: Edge.Top },\n { key: 'bottom', remap: 'position', edge: Edge.Bottom },\n\n { key: 'margin', remap: 'margin', edge: Edge.All },\n { key: 'marginLeft', remap: 'margin', edge: Edge.Left },\n { key: 'marginRight', remap: 'margin', edge: Edge.Right },\n { key: 'marginTop', remap: 'margin', edge: Edge.Top },\n { key: 'marginBottom', remap: 'margin', edge: Edge.Bottom },\n\n { key: 'borderWidth', remap: 'border', edge: Edge.All },\n { key: 'borderLeftWidth', remap: 'border', edge: Edge.Left },\n { key: 'borderRightWidth', remap: 'border', edge: Edge.Right },\n { key: 'borderTopWidth', remap: 'border', edge: Edge.Top },\n { key: 'borderBottomWidth', remap: 'border', edge: Edge.Bottom },\n ],\n};\n\nAVAILABLE.VALUE.forEach((key) => {\n const func = funcName(key);\n STYLE_MAP[key] = (value) => parseValue(func, value);\n});\n\nAVAILABLE.ENUM.forEach((item) => {\n const func = funcName(item.remap || item.key);\n const enums = item.enum;\n STYLE_MAP[item.key] = (value) => parseEnum(func, enums, value);\n});\n\nAVAILABLE.EDGE.forEach((item) => {\n const func = funcName(item.remap);\n const { edge } = item;\n STYLE_MAP[item.key] = (value) => parseEdge(func, edge, value);\n});\n\nconst cache = new WeakMap<any, StyleParams[]>();\n\nfunction _apply(yoga: YogaNode, style: any) {\n if (style) {\n if (!cache.has(style)) {\n const _styles: StyleParams[] = [];\n for (const key in style) {\n const func = STYLE_MAP[key];\n func && _styles.push(func(style[key]));\n }\n cache.set(style, _styles);\n }\n const styles = cache.get(style)!;\n for (let i = 0; i < styles.length; i++) {\n checkAndRun(yoga, ...styles[i]);\n }\n }\n}\n\nexport default function apply(yoga: YogaNode, style: any) {\n if (style) {\n flatten([style]).forEach((s) => _apply(yoga, s));\n }\n}\n","import Yoga, { Node as YogaNode, Direction } from 'yoga-layout';\nimport { Node, Frame } from '../Node';\nimport apply from './style';\nimport { AppContextType } from '../../components/Context';\n\nfunction _updateLayout(node: Node): [(x?: number, y?: number) => void, YogaNode] {\n const yoga = Yoga.Node.create();\n const children: Array<(x?: number, y?: number) => void> = [];\n apply(yoga, node.props.style);\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n const [f, y] = _updateLayout(child);\n const index = children.push(f);\n yoga.insertChild(y, index - 1);\n }\n function process(x = 0, y = 0) {\n const layout = yoga.getComputedLayout();\n node.frame = new Frame(x + layout.left, y + layout.top, layout.width, layout.height);\n node.props.onLayout && node.props.onLayout(node.frame);\n for (let i = 0; i < children.length; i++) {\n children[i](node.frame.x, node.frame.y);\n }\n yoga.free();\n }\n return [process, yoga];\n}\n\nexport function updateLayout(root: Node<AppContextType>) {\n const [process, yoga] = _updateLayout(root);\n const { clientWidth, clientHeight, RTL } = root.props;\n yoga.calculateLayout(clientWidth, clientHeight, RTL ? Direction.RTL : Direction.LTR);\n return process;\n}\n","import { adapter } from './utils';\nimport { Node } from './Node';\nimport { RevasCanvas } from './Canvas';\n\nexport interface CachedCanvas {\n id: string;\n canvas: RevasCanvas;\n style: any;\n}\n\nconst MAX_SIZE = 30;\n\nconst cache = new Map<string, CachedCanvas>();\nconst ids: string[] = [];\n\nexport function getCache(id: string) {\n return cache.get(id);\n}\n\nexport function createCache(style: any, w: number, h: number, id: string): CachedCanvas {\n if (ids.length >= MAX_SIZE) {\n const expiredId = ids.shift()!;\n const { canvas } = cache.get(expiredId)!;\n const cached: CachedCanvas = {\n canvas: adapter.resetOffscreenCanvas!(canvas, w, h),\n id,\n style,\n };\n cache.delete(expiredId);\n cache.set(cached.id, cached);\n ids.push(cached.id);\n return cached;\n } else {\n const cached: CachedCanvas = {\n canvas: adapter.createOffscreenCanvas!(w, h),\n id,\n style,\n };\n cache.set(cached.id, cached);\n ids.push(cached.id);\n return cached;\n }\n}\n\nconst idCache = new WeakMap<Node, string>();\nlet __ID = 0;\n\nexport function autoCacheId(node: Node) {\n if (idCache.has(node)) {\n return idCache.get(node);\n } else {\n const id = `$$auto_id-${__ID++}`;\n idCache.set(node, id);\n return id;\n }\n}\n\nexport function clearCache() {\n cache.clear();\n ids.length = 0;\n}\n","import { Node, Frame } from './Node';\nimport {\n getMergedStyleFromNode,\n getFrameFromNode,\n sortByZIndexAscending,\n setShadow,\n pushOpacity,\n adapter\n} from './utils';\nimport { Container } from './Container';\nimport { getCache, createCache, autoCacheId } from './offscreen';\nimport { RevasCanvas } from './Canvas';\n\nfunction getRadius(style: any) {\n return {\n tl: style.borderTopLeftRadius || style.borderRadius || 0,\n tr: style.borderTopRightRadius || style.borderRadius || 0,\n bl: style.borderBottomLeftRadius || style.borderRadius || 0,\n br: style.borderBottomRightRadius || style.borderRadius || 0,\n };\n}\n\nexport function drawNode(canvas: RevasCanvas, node: Node, container: Container) {\n const style = getMergedStyleFromNode(node, container.draw);\n const frame = getFrameFromNode(node);\n\n if (style.opacity <= 0) {\n return;\n }\n\n // flags\n const hasTransform =\n style.translateX || style.translateY || style.rotate || style.scaleX || style.scaleY || style.scale;\n const hasClip = style.overflow === 'hidden';\n\n if (hasClip) {\n canvas.context.save();\n } else if (hasTransform) {\n canvas.transform.save();\n }\n // Area Range\n\n // Opacity:\n const popOpacity = pushOpacity(canvas, style.opacity);\n\n // Translation:\n if (style.translateX || style.translateY) {\n canvas.transform.translate(style.translateX || 0, style.translateY || 0);\n }\n // Rotate && Scale\n if (style.rotate || style.scaleX || style.scaleY || style.scale) {\n // Origin Center\n const originX = frame.x + frame.width / 2;\n const originY = frame.y + frame.height / 2;\n canvas.transform.translate(originX, originY);\n if (style.rotate) {\n canvas.transform.rotate(style.rotate);\n }\n if (style.scaleX || style.scaleY || style.scale) {\n canvas.transform.scale(style.scaleX || style.scale, style.scaleY || style.scale);\n }\n canvas.transform.translate(-originX, -originY);\n }\n\n if (node.props.cache && adapter.createOffscreenCanvas && frame.height > 0 && frame.width > 0) {\n drawCache(canvas, node, container, style, frame, hasClip);\n } else {\n drawContent(canvas, node, container, style, frame, hasClip);\n }\n\n popOpacity();\n\n if (hasClip) {\n canvas.context.restore();\n } else if (hasTransform) {\n canvas.transform.restore();\n }\n}\n\nfunction drawCache(canvas: RevasCanvas, node: Node, container: Container, style: any, frame: Frame, hasClip: boolean) {\n const cachedId = node.props.cache === true ? autoCacheId(node) : node.props.cache;\n let cached = getCache(cachedId);\n const { shadowBlur = 0, shadowOffsetX = 0, shadowOffsetY = 0 } = cached ? cached.style : style;\n const spread = shadowBlur * 2;\n const x = frame.x + shadowOffsetX - shadowBlur;\n const y = frame.y + shadowOffsetY - shadowBlur;\n const w = frame.width + spread;\n const h = frame.height + spread;\n if (!cached) {\n if (!node.$ready && !node.props.forceCache) {\n return drawContent(canvas, node, container, style, frame, hasClip);\n }\n cached = createCache(style, w, h, cachedId);\n cached.canvas.transform.translate(-x, -y);\n drawContent(cached.canvas, node, container, style, frame, hasClip);\n cached.canvas.transform.translate(x, y);\n }\n canvas.context.drawImage(cached.canvas.element, x, y, w, h);\n}\n\nfunction drawContent(\n canvas: RevasCanvas,\n node: Node,\n container: Container,\n style: any,\n frame: Frame,\n hasClip: boolean\n) {\n const hasBG = style.backgroundColor && style.backgroundColor !== 'transparent';\n const hasBorder = style.borderColor && style.borderWidth > 0;\n const hasRadius =\n style.borderRadius ||\n style.borderTopLeftRadius ||\n style.borderTopRightRadius ||\n style.borderBottomLeftRadius ||\n style.borderBottomRightRadius;\n\n // consts\n const useFrame = hasBG || hasBorder || hasClip || style.path;\n const usePath = hasRadius || hasClip || style.path;\n\n if (useFrame) {\n const { context: ctx } = canvas;\n if (usePath) {\n // Draw Path\n ctx.beginPath();\n if (hasRadius) {\n const radius = getRadius(style);\n ctx.moveTo(frame.x + radius.tl, frame.y);\n ctx.arcTo(frame.x + frame.width, frame.y, frame.x + frame.width, frame.y + frame.height, radius.tr);\n ctx.arcTo(frame.x + frame.width, frame.y + frame.height, frame.x, frame.y + frame.height, radius.br);\n ctx.arcTo(frame.x, frame.y + frame.height, frame.x, frame.y, radius.bl);\n ctx.arcTo(frame.x, frame.y, frame.x + frame.width, frame.y, radius.tl);\n } else {\n ctx.rect(frame.x, frame.y, frame.width, frame.height);\n }\n ctx.closePath();\n\n if (hasClip) {\n ctx.clip();\n }\n }\n\n if (hasBG || hasBorder) {\n // Shadow:\n const resetShadow = setShadow(\n canvas,\n style.shadowColor,\n style.shadowOffsetX,\n style.shadowOffsetY,\n style.shadowBlur\n );\n // Background color & Shadow\n if (hasBG) {\n ctx.fillStyle = style.backgroundColor;\n if (usePath) {\n ctx.fill();\n } else {\n ctx.fillRect(frame.x, frame.y, frame.width, frame.height);\n }\n }\n\n // Border with border radius:\n if (hasBorder) {\n ctx.lineWidth = style.borderWidth;\n ctx.strokeStyle = style.borderColor;\n if (usePath) {\n ctx.stroke();\n } else {\n ctx.strokeRect(frame.x, frame.y, frame.width, frame.height);\n }\n }\n resetShadow();\n }\n }\n\n if (node.props.customDrawer) {\n node.props.customDrawer(canvas, node, { hasRadius, hasClip });\n }\n\n // Draw child layers, sorted by their z-index.\n node.children\n .slice()\n .sort(sortByZIndexAscending)\n .forEach(function drawChild(child) {\n drawNode(canvas, child, container);\n });\n}\n","import { getFrameFromNode, getMergedStyleFromNode, sortByZIndexAscending } from \"./utils\"\nimport { Node, RevasTouchEvent, RevasTouchType, RevasTouch } from \"./Node\"\n\nfunction scaled(x: number, c: number, s = 1) {\n if (!s && s === 1) return x\n return ((s - 1) * c + x) / s\n}\n\nfunction findNodeByPoint(node: Node, x: number, y: number): Node | void {\n if (node.props.pointerEvents === 'none') return\n\n const children = node.children.slice().sort(sortByZIndexAscending).reverse()\n const style = getMergedStyleFromNode(node)\n const frame = getFrameFromNode(node)\n\n // tranlate\n const scaleX = style.scaleX || style.scale\n const scaleY = style.scaleY || style.scale\n const originX = frame.width / 2 + frame.x\n const originY = frame.height / 2 + frame.y\n\n x -= style.translateX || 0\n y -= style.translateY || 0\n x = scaled(x, originX, scaleX)\n y = scaled(y, originY, scaleY)\n\n if (frame.x < x && frame.y < y\n && x <= frame.x + frame.width\n && y <= frame.y + frame.height) {\n\n for (let i = 0; i < children.length; i++) {\n const target = findNodeByPoint(children[i], x, y)\n if (target) return target\n }\n\n if (node.props.pointerEvents === 'box-none') return\n\n return node\n }\n}\n\nconst eventNodeHolder: { [key: number]: Node } = {}\n\nexport function getNodeByTouch(root: Node, type: RevasTouchType, touch: RevasTouch) {\n if (type === 'touchstart') {\n const target = findNodeByPoint(root, touch.x, touch.y)\n eventNodeHolder[touch.identifier] = target || root\n return eventNodeHolder[touch.identifier]\n } else if (type === 'touchmove') {\n return eventNodeHolder[touch.identifier] || root\n } else if (type === 'touchend') {\n const target = eventNodeHolder[touch.identifier]\n delete eventNodeHolder[touch.identifier]\n return target || root\n }\n return root\n}\n\nconst LISTENER_MAP = {\n touchstart: 'onTouchStart',\n touchmove: 'onTouchMove',\n touchend: 'onTouchEnd'\n}\n\n\nexport function emitTouch(node: Node | void, e: RevasTouchEvent) {\n const funcName = LISTENER_MAP[e.type]\n if (funcName) {\n while (node) {\n if (node.props[funcName]\n && node.props.pointerEvents !== 'box-none'\n && node.props[funcName](e) === false) return\n node = node.parent\n }\n }\n}","import { Node, RevasTouchEvent } from './Node';\nimport { updateLayout } from './yoga-layout';\nimport { drawNode } from './draw';\nimport { getNodeByTouch, emitTouch } from './touch';\nimport { RevasCanvas } from './Canvas';\nimport { AppContextType } from '../components/Context';\n\nexport class Container {\n private _ready = true; // Now always ready since Yoga is sync\n private _next = false;\n private _reflow = false;\n private _root?: Node<AppContextType>;\n\n get canvas(): RevasCanvas | void {\n return this._root?.props.canvas;\n }\n\n get width() {\n return this._root?.props.clientWidth || 0;\n }\n\n get height() {\n return this._root?.props.clientHeight || 0;\n }\n\n get scale() {\n return this._root?.props.deviceRatio || 1;\n }\n\n public setRoot(root?: Node<AppContextType>) {\n this._root = root;\n }\n\n public handleTouch = (evt: RevasTouchEvent) => {\n const { _root } = this;\n if (_root) {\n const emitted = new WeakSet<Node>();\n Object.values(evt.touches).forEach((touch) => {\n const node = getNodeByTouch(_root, evt.type, touch);\n // check if node is unmounted\n if (node.parent && !emitted.has(node)) {\n emitted.add(node);\n emitTouch(node, evt);\n }\n });\n }\n };\n\n public draw = (reflow = false) => {\n this._reflow = this._reflow || reflow;\n if (!this._ready) {\n this._next = true;\n return;\n }\n this._ready = false;\n const { _root, canvas } = this;\n if (canvas) {\n // if not unmounted\n if (this._reflow) {\n updateLayout(_root!)();\n this._reflow = false;\n }\n canvas.context.clearRect(0, 0, this.width, this.height);\n drawNode(canvas, _root!, this);\n requestAnimationFrame(this.ready);\n }\n };\n\n private ready = () => {\n this._ready = true;\n if (this._next) {\n this._next = false;\n this.draw();\n }\n };\n}\n","export class RevasCanvas {\n public readonly transform: Transform;\n constructor(context: CanvasRenderingContext2D) {\n this.transform = new Transform(context);\n }\n\n get context() {\n return this.transform.context;\n }\n\n get element() {\n return this.context.canvas;\n }\n}\n\nexport class Transform {\n _stack: DOMMatrix[] = [];\n\n _canGetTransform = false;\n\n constructor(public readonly context: CanvasRenderingContext2D) {\n this._canGetTransform = Boolean(context.getTransform);\n }\n\n save() {\n if (this._canGetTransform) {\n this._stack.push(this.context.getTransform());\n } else {\n this.context.save();\n }\n }\n\n restore() {\n if (this._canGetTransform) {\n if (this._stack.length > 0) {\n this.context.setTransform(this._stack.pop());\n }\n } else {\n this.context.restore();\n }\n }\n\n translate(x: number, y: number) {\n this.context.translate(x, y);\n }\n\n rotate(rad: number) {\n this.context.rotate(rad);\n }\n\n scale(sx: number, sy: number) {\n this.context.scale(sx, sy);\n }\n}\n"]}
@@ -0,0 +1,363 @@
1
+ import * as React from 'react';
2
+ import { ReactNode } from 'react';
3
+ import * as react_reconciler from 'react-reconciler';
4
+
5
+ declare class Frame {
6
+ x: number;
7
+ y: number;
8
+ width: number;
9
+ height: number;
10
+ constructor(x?: number, y?: number, width?: number, height?: number);
11
+ }
12
+ declare class Node<T = any> {
13
+ readonly type: string;
14
+ props: NodeProps & T;
15
+ readonly children: Node[];
16
+ frame: Frame;
17
+ parent?: Node;
18
+ constructor(type: string, props: NodeProps & T);
19
+ get $ready(): boolean;
20
+ }
21
+ interface RevasTouch {
22
+ identifier: number;
23
+ x: number;
24
+ y: number;
25
+ }
26
+ type RevasTouchType = 'touchstart' | 'touchmove' | 'touchend';
27
+ interface RevasTouchEvent {
28
+ type: RevasTouchType;
29
+ touches: {
30
+ [key: string]: RevasTouch;
31
+ };
32
+ timestamp: number;
33
+ [key: string]: any;
34
+ }
35
+ type RevasTouchEventListener = (event: RevasTouchEvent) => any;
36
+ interface BaseProps {
37
+ children?: ReactNode;
38
+ style?: any | any[];
39
+ cache?: string | boolean;
40
+ forceCache?: boolean;
41
+ }
42
+ interface NodeProps extends BaseProps {
43
+ onTouchStart?: RevasTouchEventListener;
44
+ onTouchMove?: RevasTouchEventListener;
45
+ onTouchEnd?: RevasTouchEventListener;
46
+ onLayout?: (frame: Frame) => any;
47
+ pointerEvents?: 'auto' | 'none' | 'box-none';
48
+ $ready?: boolean;
49
+ }
50
+
51
+ declare function View(props: NodeProps): React.ReactElement<NodeProps, string | React.JSXElementConstructor<any>>;
52
+
53
+ declare class RevasCanvas {
54
+ readonly transform: Transform;
55
+ constructor(context: CanvasRenderingContext2D);
56
+ get context(): CanvasRenderingContext2D;
57
+ get element(): HTMLCanvasElement;
58
+ }
59
+ declare class Transform {
60
+ readonly context: CanvasRenderingContext2D;
61
+ _stack: DOMMatrix[];
62
+ _canGetTransform: boolean;
63
+ constructor(context: CanvasRenderingContext2D);
64
+ save(): void;
65
+ restore(): void;
66
+ translate(x: number, y: number): void;
67
+ rotate(rad: number): void;
68
+ scale(sx: number, sy: number): void;
69
+ }
70
+
71
+ interface DrawTextOptions {
72
+ textStyle: any;
73
+ numberOfLines: number;
74
+ frame: Frame;
75
+ content: string;
76
+ }
77
+ type MeasureLine = {
78
+ width: number;
79
+ text: string;
80
+ };
81
+ type MeasureResult = [MeasureLine[], number];
82
+
83
+ type TextProps = {
84
+ numberOfLines?: number;
85
+ } & NodeProps;
86
+ declare class Text extends React.Component<TextProps> {
87
+ state: {
88
+ height: number;
89
+ };
90
+ _measured: MeasureResult;
91
+ _drawed?: DrawTextOptions;
92
+ drawText: (canvas: RevasCanvas, node: Node) => void;
93
+ render(): React.DOMElement<any, Element>;
94
+ }
95
+
96
+ declare function drawImage(canvas: RevasCanvas, node: Node, flags: any): void;
97
+
98
+ type ImageViewProps = {
99
+ src: string;
100
+ } & NodeProps;
101
+ declare function ImageView(props: ImageViewProps): React.ReactElement<{
102
+ style: any[];
103
+ $ready: boolean;
104
+ src: string;
105
+ onTouchStart?: RevasTouchEventListener;
106
+ onTouchMove?: RevasTouchEventListener;
107
+ onTouchEnd?: RevasTouchEventListener;
108
+ onLayout?: (frame: Frame) => any;
109
+ pointerEvents?: "auto" | "none" | "box-none";
110
+ children?: React.ReactNode;
111
+ cache?: string | boolean;
112
+ forceCache?: boolean;
113
+ customDrawer: typeof drawImage | undefined;
114
+ }, string | React.JSXElementConstructor<any>>;
115
+
116
+ declare abstract class AnimatedNode {
117
+ abstract getValue(observer?: Function): number;
118
+ interpolate(inRange: number[], outRange: number[], ease?: (t: number) => number): AnimatedInterpolate;
119
+ }
120
+ declare class AnimatedValue extends AnimatedNode {
121
+ private _value;
122
+ private _observer?;
123
+ constructor(_value: number);
124
+ setValue(value: number): void;
125
+ getValue(observer?: Function): number;
126
+ }
127
+ declare class AnimatedInterpolate extends AnimatedNode {
128
+ private source;
129
+ private inRange;
130
+ private outRange;
131
+ private ease;
132
+ constructor(source: AnimatedNode, inRange: number[], outRange: number[], ease: (t: number) => number);
133
+ getValue(observer?: Function): number;
134
+ }
135
+ type TimingConfig = {
136
+ to: number;
137
+ duration: number;
138
+ ease?: (t: number) => number;
139
+ };
140
+ declare class AnimatedTiming {
141
+ private value;
142
+ private config;
143
+ private _startTime;
144
+ private _startValue;
145
+ private _onEnd?;
146
+ private _next;
147
+ constructor(value: AnimatedValue, config: TimingConfig);
148
+ private get _ease();
149
+ start(onEnd?: Function): this;
150
+ stop(): this;
151
+ promise(): Promise<unknown>;
152
+ private _loop;
153
+ }
154
+ declare function timing(value: AnimatedValue, config: TimingConfig): AnimatedTiming;
155
+ declare const Easing: {
156
+ linear(t: number): number;
157
+ ease(t: number): number;
158
+ /**
159
+ * Runs an easing function forwards.
160
+ */
161
+ in(easing?: (t: number) => number): (t: number) => number;
162
+ /**
163
+ * Runs an easing function backwards.
164
+ */
165
+ out(easing?: (t: number) => number): (t: number) => number;
166
+ /**
167
+ * Makes any easing function symmetrical. The easing function will run
168
+ * forwards for half of the duration, then backwards for the rest of the
169
+ * duration.
170
+ */
171
+ inOut(easing?: (t: number) => number): (t: number) => number;
172
+ bounce(t: number): number;
173
+ elastic(bounciness?: number): (t: number) => number;
174
+ };
175
+
176
+ type TouchableProps = {
177
+ onPress: Function;
178
+ onPressIn?: Function;
179
+ onPressOut?: Function;
180
+ activeOpacity?: number;
181
+ } & BaseProps;
182
+ declare class Touchable extends React.Component<TouchableProps> {
183
+ static defaultProps: {
184
+ activeOpacity: number;
185
+ };
186
+ _style: {
187
+ opacity: AnimatedValue;
188
+ animated: boolean;
189
+ };
190
+ private _start?;
191
+ private _tid;
192
+ private _onTouchStart;
193
+ private _onTouchEnd;
194
+ render(): React.ReactElement<{
195
+ style: any[];
196
+ onPress: Function;
197
+ onPressIn?: Function;
198
+ onPressOut?: Function;
199
+ activeOpacity?: number;
200
+ children?: React.ReactNode;
201
+ cache?: string | boolean;
202
+ forceCache?: boolean;
203
+ onTouchStart: (e: RevasTouchEvent) => void;
204
+ onTouchEnd: (e: RevasTouchEvent) => void;
205
+ }, string | React.JSXElementConstructor<any>>;
206
+ }
207
+
208
+ type RevasScrollEventType = 'start' | 'scroll' | 'end' | 'none';
209
+ interface RevasScrollEvent {
210
+ type: RevasScrollEventType;
211
+ x: number;
212
+ y: number;
213
+ vx: number;
214
+ vy: number;
215
+ timestamp: number;
216
+ tid: string;
217
+ }
218
+
219
+ type ScrollViewOffset = {
220
+ x?: number;
221
+ y?: number;
222
+ };
223
+ type ScrollViewProps = {
224
+ horizontal?: boolean;
225
+ onScroll?: (e: RevasScrollEvent) => any;
226
+ onScrollStart?: (e: RevasScrollEvent) => any;
227
+ onScrollEnd?: (e: RevasScrollEvent) => any;
228
+ paging?: boolean | number;
229
+ offset?: ScrollViewOffset;
230
+ } & NodeProps;
231
+ declare class ScrollView extends React.Component<ScrollViewProps> {
232
+ private _height;
233
+ private _contentHeight;
234
+ private _width;
235
+ private _contentWidth;
236
+ private _innerStyle;
237
+ private _offset;
238
+ private _scroller;
239
+ componentWillUnmount(): void;
240
+ private _onLayout;
241
+ private _onContentLayout;
242
+ private _checkLayout;
243
+ render(): React.ReactElement<{
244
+ onLayout: (frame: Frame) => void;
245
+ onScroll?: (e: RevasScrollEvent) => any;
246
+ onScrollStart?: (e: RevasScrollEvent) => any;
247
+ onScrollEnd?: (e: RevasScrollEvent) => any;
248
+ paging?: boolean | number;
249
+ onTouchStart?: RevasTouchEventListener;
250
+ onTouchMove?: RevasTouchEventListener;
251
+ onTouchEnd?: RevasTouchEventListener;
252
+ pointerEvents?: "auto" | "none" | "box-none";
253
+ $ready?: boolean;
254
+ style?: any | any[];
255
+ cache?: string | boolean;
256
+ forceCache?: boolean;
257
+ }, string | React.JSXElementConstructor<any>>;
258
+ }
259
+
260
+ type ListViewProps<T = any> = {
261
+ data: T[];
262
+ renderItem: (item: T, index: number, data: T[]) => React.ReactNode;
263
+ itemHeight: number;
264
+ } & ScrollViewProps;
265
+ declare class ListView extends React.Component<ListViewProps<any>> {
266
+ state: {
267
+ start: number;
268
+ end: number;
269
+ };
270
+ private _height;
271
+ componentDidMount(): void;
272
+ private checkVisible;
273
+ private _onScroll;
274
+ private _onLayout;
275
+ renderItem: (item: any, i: number) => React.FunctionComponentElement<React.FragmentProps>;
276
+ render(): React.CElement<ScrollViewProps, ScrollView>;
277
+ }
278
+
279
+ type LinearGradientProps = {
280
+ start?: {
281
+ x: number;
282
+ y: number;
283
+ };
284
+ end?: {
285
+ x: number;
286
+ y: number;
287
+ };
288
+ colors: string[];
289
+ } & NodeProps;
290
+ declare function LinearGradient(props: LinearGradientProps): React.ReactElement<{
291
+ style: any[];
292
+ customDrawer: typeof drawGradient;
293
+ start?: {
294
+ x: number;
295
+ y: number;
296
+ };
297
+ end?: {
298
+ x: number;
299
+ y: number;
300
+ };
301
+ colors: string[];
302
+ onTouchStart?: RevasTouchEventListener;
303
+ onTouchMove?: RevasTouchEventListener;
304
+ onTouchEnd?: RevasTouchEventListener;
305
+ onLayout?: (frame: Frame) => any;
306
+ pointerEvents?: "auto" | "none" | "box-none";
307
+ $ready?: boolean;
308
+ children?: React.ReactNode;
309
+ cache?: string | boolean;
310
+ forceCache?: boolean;
311
+ }, string | React.JSXElementConstructor<any>>;
312
+ declare function drawGradient(canvas: RevasCanvas, node: Node): void;
313
+
314
+ interface AppContextType {
315
+ clientWidth: number;
316
+ clientHeight: number;
317
+ deviceRatio: number;
318
+ canvas?: RevasCanvas;
319
+ RTL?: boolean;
320
+ }
321
+ declare const AppContext: React.Context<AppContextType>;
322
+ declare function withContext<T>(comp: T): T;
323
+ declare function Root(props: AppContextType): React.FunctionComponentElement<React.ProviderProps<AppContextType>>;
324
+
325
+ declare class Container {
326
+ private _ready;
327
+ private _next;
328
+ private _reflow;
329
+ private _root?;
330
+ get canvas(): RevasCanvas | void;
331
+ get width(): number;
332
+ get height(): number;
333
+ get scale(): number;
334
+ setRoot(root?: Node<AppContextType>): void;
335
+ handleTouch: (evt: RevasTouchEvent) => void;
336
+ draw: (reflow?: boolean) => void;
337
+ private ready;
338
+ }
339
+
340
+ declare const RevasReconciler: react_reconciler.Reconciler<Container, Node<any>, never, unknown, Node<any>>;
341
+
342
+ declare function noop(): any;
343
+ declare const EMPTY_OBJECT: any;
344
+ declare const EMPTY_ARRAY: any[];
345
+ declare function flatten(array: any[]): any[];
346
+ declare const now: () => number;
347
+ declare function applyAnimated(style: any, callback?: Function): any;
348
+ declare function getMergedStyleFromNode(node: Node, callback?: Function): any;
349
+ declare function getFrameFromNode(node: Node): Frame;
350
+ declare function sortByZIndexAscending(a: Node, b: Node): number;
351
+ declare function clamp(n: number, min: number, max: number): number;
352
+ declare function getChars(str: string): readonly string[];
353
+ declare function getWords(str: string): readonly string[];
354
+ declare function setShadow(canvas: RevasCanvas, color: string, x?: number, y?: number, blur?: number): () => void;
355
+ declare function pushOpacity(canvas: RevasCanvas, opacity: number): typeof noop;
356
+ type RevasAdapter = {
357
+ createImage: () => HTMLImageElement;
358
+ createOffscreenCanvas?: (width: number, height: number) => RevasCanvas;
359
+ resetOffscreenCanvas?: (ctx: RevasCanvas, width: number, height: number) => RevasCanvas;
360
+ };
361
+ declare const adapter: RevasAdapter;
362
+
363
+ export { AnimatedInterpolate, AnimatedNode, AnimatedTiming, AnimatedValue, AppContext, type AppContextType, type BaseProps, Container, EMPTY_ARRAY, EMPTY_OBJECT, Easing, Frame, ImageView as Image, type ImageViewProps, LinearGradient, type LinearGradientProps, ListView, type ListViewProps, Node, type NodeProps, type RevasAdapter, RevasCanvas, type RevasScrollEvent, type RevasScrollEventType, type RevasTouch, type RevasTouchEvent, type RevasTouchEventListener, type RevasTouchType, Root, ScrollView, type ScrollViewOffset, type ScrollViewProps, Text, type TextProps, type TimingConfig, Touchable, type TouchableProps, Transform, View, adapter, applyAnimated, clamp, flatten, getChars, getFrameFromNode, getMergedStyleFromNode, getWords, noop, now, pushOpacity, RevasReconciler as renderer, setShadow, sortByZIndexAscending, timing, withContext };