mirror of
https://github.com/zoriya/react-native-svg.git
synced 2026-06-07 00:42:31 +00:00
feat: support using native methods using promises instead of callbacks
This commit is contained in:
+54
-24
@@ -55,13 +55,24 @@ export default class Shape<P> extends Component<P> {
|
|||||||
) => {
|
) => {
|
||||||
this.root && this.root.setNativeProps(props);
|
this.root && this.root.setNativeProps(props);
|
||||||
};
|
};
|
||||||
getBBox = (callback: () => void, options?: SVGBoundingBoxOptions) => {
|
getBBox = (callback?: () => void, options?: SVGBoundingBoxOptions) => {
|
||||||
if (!callback) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const { fill = true, stroke = true, markers = true, clipped = true } =
|
const { fill = true, stroke = true, markers = true, clipped = true } =
|
||||||
options || {};
|
options || {};
|
||||||
const handle = findNodeHandle(this.root as Component);
|
const handle = findNodeHandle(this.root as Component);
|
||||||
|
if (!callback) {
|
||||||
|
return new Promise(resolve => {
|
||||||
|
RNSVGRenderableManager.getBBox(
|
||||||
|
handle,
|
||||||
|
{
|
||||||
|
fill,
|
||||||
|
stroke,
|
||||||
|
markers,
|
||||||
|
clipped,
|
||||||
|
},
|
||||||
|
resolve,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
RNSVGRenderableManager.getBBox(
|
RNSVGRenderableManager.getBBox(
|
||||||
handle,
|
handle,
|
||||||
{
|
{
|
||||||
@@ -72,47 +83,66 @@ export default class Shape<P> extends Component<P> {
|
|||||||
},
|
},
|
||||||
callback,
|
callback,
|
||||||
);
|
);
|
||||||
|
return undefined;
|
||||||
};
|
};
|
||||||
getCTM = (callback: () => void) => {
|
getCTM = (callback: () => void) => {
|
||||||
if (!callback) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const handle = findNodeHandle(this.root as Component);
|
const handle = findNodeHandle(this.root as Component);
|
||||||
|
if (!callback) {
|
||||||
|
return new Promise(resolve => {
|
||||||
|
RNSVGRenderableManager.getCTM(handle, resolve);
|
||||||
|
});
|
||||||
|
}
|
||||||
RNSVGRenderableManager.getCTM(handle, callback);
|
RNSVGRenderableManager.getCTM(handle, callback);
|
||||||
|
return undefined;
|
||||||
};
|
};
|
||||||
getScreenCTM = (callback: () => void) => {
|
getScreenCTM = (callback: () => void) => {
|
||||||
if (!callback) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const handle = findNodeHandle(this.root as Component);
|
const handle = findNodeHandle(this.root as Component);
|
||||||
|
if (!callback) {
|
||||||
|
return new Promise(resolve => {
|
||||||
|
RNSVGRenderableManager.getScreenCTM(handle, resolve);
|
||||||
|
});
|
||||||
|
}
|
||||||
RNSVGRenderableManager.getScreenCTM(handle, callback);
|
RNSVGRenderableManager.getScreenCTM(handle, callback);
|
||||||
|
return undefined;
|
||||||
};
|
};
|
||||||
isPointInFill = (options: DOMPointInit, callback: () => void) => {
|
isPointInFill = (options: DOMPointInit, callback: () => void) => {
|
||||||
if (!callback) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const handle = findNodeHandle(this.root as Component);
|
const handle = findNodeHandle(this.root as Component);
|
||||||
|
if (!callback) {
|
||||||
|
return new Promise(resolve => {
|
||||||
|
RNSVGRenderableManager.isPointInFill(handle, options, resolve);
|
||||||
|
});
|
||||||
|
}
|
||||||
RNSVGRenderableManager.isPointInFill(handle, options, callback);
|
RNSVGRenderableManager.isPointInFill(handle, options, callback);
|
||||||
|
return undefined;
|
||||||
};
|
};
|
||||||
isPointInStroke = (options: DOMPointInit, callback: () => void) => {
|
isPointInStroke = (options: DOMPointInit, callback?: () => void) => {
|
||||||
if (!callback) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const handle = findNodeHandle(this.root as Component);
|
const handle = findNodeHandle(this.root as Component);
|
||||||
|
if (!callback) {
|
||||||
|
return new Promise(resolve => {
|
||||||
|
RNSVGRenderableManager.isPointInStroke(handle, options, resolve);
|
||||||
|
});
|
||||||
|
}
|
||||||
RNSVGRenderableManager.isPointInStroke(handle, options, callback);
|
RNSVGRenderableManager.isPointInStroke(handle, options, callback);
|
||||||
|
return undefined;
|
||||||
};
|
};
|
||||||
getTotalLength = (callback: () => void) => {
|
getTotalLength = (callback?: () => void) => {
|
||||||
if (!callback) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const handle = findNodeHandle(this.root as Component);
|
const handle = findNodeHandle(this.root as Component);
|
||||||
|
if (!callback) {
|
||||||
|
return new Promise(resolve => {
|
||||||
|
RNSVGRenderableManager.getTotalLength(handle, resolve);
|
||||||
|
});
|
||||||
|
}
|
||||||
RNSVGRenderableManager.getTotalLength(handle, callback);
|
RNSVGRenderableManager.getTotalLength(handle, callback);
|
||||||
|
return undefined;
|
||||||
};
|
};
|
||||||
getPointAtLength = (length: number, callback: () => void) => {
|
getPointAtLength = (length: number, callback: () => void) => {
|
||||||
if (!callback) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
const handle = findNodeHandle(this.root as Component);
|
const handle = findNodeHandle(this.root as Component);
|
||||||
|
if (!callback) {
|
||||||
|
return new Promise(resolve => {
|
||||||
|
RNSVGRenderableManager.getPointAtLength(handle, { length }, resolve);
|
||||||
|
});
|
||||||
|
}
|
||||||
RNSVGRenderableManager.getPointAtLength(handle, { length }, callback);
|
RNSVGRenderableManager.getPointAtLength(handle, { length }, callback);
|
||||||
|
return undefined;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user