@oxyhq/bloom 0.1.6 → 0.1.7
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/lib/commonjs/avatar/Avatar.js +12 -3
- package/lib/commonjs/avatar/Avatar.js.map +1 -1
- package/lib/commonjs/image-resolver/context.js +20 -0
- package/lib/commonjs/image-resolver/context.js.map +1 -0
- package/lib/commonjs/image-resolver/index.js +19 -0
- package/lib/commonjs/image-resolver/index.js.map +1 -0
- package/lib/module/avatar/Avatar.js +12 -3
- package/lib/module/avatar/Avatar.js.map +1 -1
- package/lib/module/image-resolver/context.js +16 -0
- package/lib/module/image-resolver/context.js.map +1 -0
- package/lib/module/image-resolver/index.js +4 -0
- package/lib/module/image-resolver/index.js.map +1 -0
- package/lib/typescript/commonjs/avatar/Avatar.d.ts.map +1 -1
- package/lib/typescript/commonjs/image-resolver/context.d.ts +8 -0
- package/lib/typescript/commonjs/image-resolver/context.d.ts.map +1 -0
- package/lib/typescript/commonjs/image-resolver/index.d.ts +2 -0
- package/lib/typescript/commonjs/image-resolver/index.d.ts.map +1 -0
- package/lib/typescript/module/avatar/Avatar.d.ts.map +1 -1
- package/lib/typescript/module/image-resolver/context.d.ts +8 -0
- package/lib/typescript/module/image-resolver/context.d.ts.map +1 -0
- package/lib/typescript/module/image-resolver/index.d.ts +2 -0
- package/lib/typescript/module/image-resolver/index.d.ts.map +1 -0
- package/package.json +12 -1
- package/src/avatar/Avatar.tsx +13 -3
- package/src/image-resolver/context.ts +16 -0
- package/src/image-resolver/index.ts +1 -0
|
@@ -7,6 +7,7 @@ exports.Avatar = void 0;
|
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _useTheme = require("../theme/use-theme.js");
|
|
10
|
+
var _context = require("../image-resolver/context.js");
|
|
10
11
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
12
|
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
12
13
|
// Squircle clip path normalized to 0–1 coordinate space (viewBox="0 0 1 1").
|
|
@@ -133,12 +134,20 @@ const AvatarComponent = ({
|
|
|
133
134
|
setErrored(false);
|
|
134
135
|
}
|
|
135
136
|
}
|
|
137
|
+
const imageResolver = (0, _context.useImageResolver)();
|
|
136
138
|
|
|
137
|
-
// Resolve source prop: string → uri, object → ImageSourcePropType
|
|
139
|
+
// Resolve source prop: string → uri, object → ImageSourcePropType.
|
|
140
|
+
// HTTP/data URLs pass through directly. Non-URL strings (e.g. file
|
|
141
|
+
// IDs) are resolved via the app-provided ImageResolver if available.
|
|
138
142
|
const resolvedUri = (0, _react.useMemo)(() => {
|
|
139
|
-
if (typeof source === 'string')
|
|
143
|
+
if (typeof source === 'string') {
|
|
144
|
+
if (source.startsWith('http://') || source.startsWith('https://') || source.startsWith('data:')) {
|
|
145
|
+
return source;
|
|
146
|
+
}
|
|
147
|
+
return imageResolver?.(source);
|
|
148
|
+
}
|
|
140
149
|
return uri;
|
|
141
|
-
}, [source, uri]);
|
|
150
|
+
}, [source, uri, imageResolver]);
|
|
142
151
|
const resolvedImageSource = (0, _react.useMemo)(() => {
|
|
143
152
|
if (source != null && typeof source !== 'string') return source;
|
|
144
153
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useTheme","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SQUIRCLE_PATH","clipIdCounter","svgModule","svgModuleResolved","getSvgModule","SquircleImage","uri","fallbackSource","size","fallbackColor","onError","svg","jsx","CircleFallback","Svg","Defs","ClipPath","Path","Image","SvgImage","clipId","useMemo","href","jsxs","Fragment","children","source","style","styles","errorDetector","width","height","viewBox","id","d","preserveAspectRatio","clipPath","radius","View","borderRadius","backgroundColor","AvatarComponent","verified","verifiedIcon","shape","imageStyle","onPress","testID","errored","setErrored","useState","theme","useTheme","colors","backgroundTertiary","prevSourceRef","useRef","prevUriRef","current","resolvedUri","resolvedImageSource","undefined","effectiveUri","imageSource","content","container","imageContainer","resizeMode","StyleSheet","absoluteFillObject","verifiedBadge","TouchableOpacity","create","position","overflow","justifyContent","alignItems","bottom","right","zIndex","opacity","Avatar","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["avatar/Avatar.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,SAAA,GAAAF,OAAA;
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_useTheme","_context","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","SQUIRCLE_PATH","clipIdCounter","svgModule","svgModuleResolved","getSvgModule","SquircleImage","uri","fallbackSource","size","fallbackColor","onError","svg","jsx","CircleFallback","Svg","Defs","ClipPath","Path","Image","SvgImage","clipId","useMemo","href","jsxs","Fragment","children","source","style","styles","errorDetector","width","height","viewBox","id","d","preserveAspectRatio","clipPath","radius","View","borderRadius","backgroundColor","AvatarComponent","verified","verifiedIcon","shape","imageStyle","onPress","testID","errored","setErrored","useState","theme","useTheme","colors","backgroundTertiary","prevSourceRef","useRef","prevUriRef","current","imageResolver","useImageResolver","resolvedUri","startsWith","resolvedImageSource","undefined","effectiveUri","imageSource","content","container","imageContainer","resizeMode","StyleSheet","absoluteFillObject","verifiedBadge","TouchableOpacity","create","position","overflow","justifyContent","alignItems","bottom","right","zIndex","opacity","Avatar","exports","memo","displayName"],"sourceRoot":"../../../src","sources":["avatar/Avatar.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ImageResolverProvider = void 0;
|
|
7
|
+
exports.useImageResolver = useImageResolver;
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
/**
|
|
10
|
+
* A function that resolves opaque identifiers (e.g. file IDs) to
|
|
11
|
+
* loadable image URLs. Returns `undefined` when no URL is available yet.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
const ImageResolverContext = /*#__PURE__*/(0, _react.createContext)(null);
|
|
15
|
+
ImageResolverContext.displayName = 'BloomImageResolverContext';
|
|
16
|
+
const ImageResolverProvider = exports.ImageResolverProvider = ImageResolverContext.Provider;
|
|
17
|
+
function useImageResolver() {
|
|
18
|
+
return (0, _react.useContext)(ImageResolverContext);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","ImageResolverContext","createContext","displayName","ImageResolverProvider","exports","Provider","useImageResolver","useContext"],"sourceRoot":"../../../src","sources":["image-resolver/context.ts"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAEA;AACA;AACA;AACA;;AAGA,MAAMC,oBAAoB,gBAAG,IAAAC,oBAAa,EAAuB,IAAI,CAAC;AACtED,oBAAoB,CAACE,WAAW,GAAG,2BAA2B;AAEvD,MAAMC,qBAAqB,GAAAC,OAAA,CAAAD,qBAAA,GAAGH,oBAAoB,CAACK,QAAQ;AAE3D,SAASC,gBAAgBA,CAAA,EAAyB;EACvD,OAAO,IAAAC,iBAAU,EAACP,oBAAoB,CAAC;AACzC","ignoreList":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "ImageResolverProvider", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _context.ImageResolverProvider;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "useImageResolver", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _context.useImageResolver;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
var _context = require("./context.js");
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_context","require"],"sourceRoot":"../../../src","sources":["image-resolver/index.ts"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA","ignoreList":[]}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
import React, { memo, useMemo, useRef, useState } from 'react';
|
|
4
4
|
import { View, Image, StyleSheet, TouchableOpacity } from 'react-native';
|
|
5
5
|
import { useTheme } from "../theme/use-theme.js";
|
|
6
|
+
import { useImageResolver } from "../image-resolver/context.js";
|
|
6
7
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
7
8
|
// Squircle clip path normalized to 0–1 coordinate space (viewBox="0 0 1 1").
|
|
8
9
|
const SQUIRCLE_PATH = 'M0 0.5 L0.00122 0.31674 L0.00489 0.25123 L0.01103 0.20331 L0.01969 0.16478 L0.03097 0.13257 L0.04495 0.10518 L0.0618 0.08177 L0.08177 0.0618 L0.10518 0.04495 L0.13257 0.03097 L0.16478 0.01969 L0.20331 0.01103 L0.25123 0.00489 L0.31674 0.00122 L0.5 0' + ' L0.68895 0.0014 L0.7564 0.00561 L0.80559 0.01267 L0.84499 0.02264 L0.87771 0.03564 L0.9053 0.05181 L0.92862 0.07138 L0.94819 0.0947 L0.96436 0.12228 L0.97736 0.15501 L0.98733 0.19441 L0.99439 0.2436 L0.9986 0.31105 L1 0.5' + ' L0.9986 0.68895 L0.99439 0.7564 L0.98733 0.80559 L0.97736 0.84499 L0.96436 0.87771 L0.94819 0.9053 L0.92862 0.92862 L0.9053 0.94819 L0.87771 0.96436 L0.84499 0.97736 L0.80559 0.98733 L0.7564 0.99439 L0.68895 0.9986 L0.5 1' + ' L0.31105 0.9986 L0.2436 0.99439 L0.19441 0.98733 L0.15501 0.97736 L0.12228 0.96436 L0.0947 0.94819 L0.07138 0.92862 L0.05181 0.9053 L0.03564 0.87771 L0.02264 0.84499 L0.01267 0.80559 L0.00561 0.7564 L0.0014 0.68895 L0 0.5Z';
|
|
@@ -128,12 +129,20 @@ const AvatarComponent = ({
|
|
|
128
129
|
setErrored(false);
|
|
129
130
|
}
|
|
130
131
|
}
|
|
132
|
+
const imageResolver = useImageResolver();
|
|
131
133
|
|
|
132
|
-
// Resolve source prop: string → uri, object → ImageSourcePropType
|
|
134
|
+
// Resolve source prop: string → uri, object → ImageSourcePropType.
|
|
135
|
+
// HTTP/data URLs pass through directly. Non-URL strings (e.g. file
|
|
136
|
+
// IDs) are resolved via the app-provided ImageResolver if available.
|
|
133
137
|
const resolvedUri = useMemo(() => {
|
|
134
|
-
if (typeof source === 'string')
|
|
138
|
+
if (typeof source === 'string') {
|
|
139
|
+
if (source.startsWith('http://') || source.startsWith('https://') || source.startsWith('data:')) {
|
|
140
|
+
return source;
|
|
141
|
+
}
|
|
142
|
+
return imageResolver?.(source);
|
|
143
|
+
}
|
|
135
144
|
return uri;
|
|
136
|
-
}, [source, uri]);
|
|
145
|
+
}, [source, uri, imageResolver]);
|
|
137
146
|
const resolvedImageSource = useMemo(() => {
|
|
138
147
|
if (source != null && typeof source !== 'string') return source;
|
|
139
148
|
return undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","memo","useMemo","useRef","useState","View","Image","StyleSheet","TouchableOpacity","useTheme","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","SQUIRCLE_PATH","clipIdCounter","svgModule","svgModuleResolved","getSvgModule","require","SquircleImage","uri","fallbackSource","size","fallbackColor","onError","svg","CircleFallback","default","Svg","Defs","ClipPath","Path","SvgImage","clipId","href","children","source","style","styles","errorDetector","width","height","viewBox","id","d","preserveAspectRatio","clipPath","radius","borderRadius","backgroundColor","AvatarComponent","verified","verifiedIcon","shape","imageStyle","onPress","testID","errored","setErrored","theme","colors","backgroundTertiary","prevSourceRef","prevUriRef","current","resolvedUri","resolvedImageSource","undefined","effectiveUri","imageSource","content","container","imageContainer","resizeMode","absoluteFillObject","verifiedBadge","create","position","overflow","justifyContent","alignItems","bottom","right","zIndex","opacity","Avatar","displayName"],"sourceRoot":"../../../src","sources":["avatar/Avatar.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,IAAI,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAC9D,SAASC,IAAI,EAAEC,KAAK,EAAEC,UAAU,EAAEC,gBAAgB,QAAQ,cAAc;AAExE,SAASC,QAAQ,QAAQ,uBAAoB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;
|
|
1
|
+
{"version":3,"names":["React","memo","useMemo","useRef","useState","View","Image","StyleSheet","TouchableOpacity","useTheme","useImageResolver","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","SQUIRCLE_PATH","clipIdCounter","svgModule","svgModuleResolved","getSvgModule","require","SquircleImage","uri","fallbackSource","size","fallbackColor","onError","svg","CircleFallback","default","Svg","Defs","ClipPath","Path","SvgImage","clipId","href","children","source","style","styles","errorDetector","width","height","viewBox","id","d","preserveAspectRatio","clipPath","radius","borderRadius","backgroundColor","AvatarComponent","verified","verifiedIcon","shape","imageStyle","onPress","testID","errored","setErrored","theme","colors","backgroundTertiary","prevSourceRef","prevUriRef","current","imageResolver","resolvedUri","startsWith","resolvedImageSource","undefined","effectiveUri","imageSource","content","container","imageContainer","resizeMode","absoluteFillObject","verifiedBadge","create","position","overflow","justifyContent","alignItems","bottom","right","zIndex","opacity","Avatar","displayName"],"sourceRoot":"../../../src","sources":["avatar/Avatar.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { createContext, useContext } from 'react';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* A function that resolves opaque identifiers (e.g. file IDs) to
|
|
7
|
+
* loadable image URLs. Returns `undefined` when no URL is available yet.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const ImageResolverContext = /*#__PURE__*/createContext(null);
|
|
11
|
+
ImageResolverContext.displayName = 'BloomImageResolverContext';
|
|
12
|
+
export const ImageResolverProvider = ImageResolverContext.Provider;
|
|
13
|
+
export function useImageResolver() {
|
|
14
|
+
return useContext(ImageResolverContext);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["createContext","useContext","ImageResolverContext","displayName","ImageResolverProvider","Provider","useImageResolver"],"sourceRoot":"../../../src","sources":["image-resolver/context.ts"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,UAAU,QAAQ,OAAO;;AAEjD;AACA;AACA;AACA;;AAGA,MAAMC,oBAAoB,gBAAGF,aAAa,CAAuB,IAAI,CAAC;AACtEE,oBAAoB,CAACC,WAAW,GAAG,2BAA2B;AAE9D,OAAO,MAAMC,qBAAqB,GAAGF,oBAAoB,CAACG,QAAQ;AAElE,OAAO,SAASC,gBAAgBA,CAAA,EAAyB;EACvD,OAAOL,UAAU,CAACC,oBAAoB,CAAC;AACzC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ImageResolverProvider","useImageResolver"],"sourceRoot":"../../../src","sources":["image-resolver/index.ts"],"mappings":";;AAAA,SAASA,qBAAqB,EAAEC,gBAAgB,QAA4B,cAAW","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../../src/avatar/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../../src/avatar/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAK/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAyO3C,eAAO,MAAM,MAAM,yCAAwB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A function that resolves opaque identifiers (e.g. file IDs) to
|
|
3
|
+
* loadable image URLs. Returns `undefined` when no URL is available yet.
|
|
4
|
+
*/
|
|
5
|
+
export type ImageResolver = (id: string) => string | undefined;
|
|
6
|
+
export declare const ImageResolverProvider: import("react").Provider<ImageResolver | null>;
|
|
7
|
+
export declare function useImageResolver(): ImageResolver | null;
|
|
8
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/image-resolver/context.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAK/D,eAAO,MAAM,qBAAqB,gDAAgC,CAAC;AAEnE,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,IAAI,CAEvD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/image-resolver/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../../src/avatar/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../../src/avatar/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAK/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAyO3C,eAAO,MAAM,MAAM,yCAAwB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A function that resolves opaque identifiers (e.g. file IDs) to
|
|
3
|
+
* loadable image URLs. Returns `undefined` when no URL is available yet.
|
|
4
|
+
*/
|
|
5
|
+
export type ImageResolver = (id: string) => string | undefined;
|
|
6
|
+
export declare const ImageResolverProvider: import("react").Provider<ImageResolver | null>;
|
|
7
|
+
export declare function useImageResolver(): ImageResolver | null;
|
|
8
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/image-resolver/context.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;AAK/D,eAAO,MAAM,qBAAqB,gDAAgC,CAAC;AAEnE,wBAAgB,gBAAgB,IAAI,aAAa,GAAG,IAAI,CAEvD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/image-resolver/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oxyhq/bloom",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "Bloom UI — Oxy ecosystem component library for React Native + Expo + Web",
|
|
5
5
|
"main": "lib/commonjs/index.js",
|
|
6
6
|
"module": "lib/module/index.js",
|
|
@@ -23,6 +23,17 @@
|
|
|
23
23
|
"default": "./lib/commonjs/index.js"
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
|
+
"./image-resolver": {
|
|
27
|
+
"react-native": "./src/image-resolver/index.ts",
|
|
28
|
+
"import": {
|
|
29
|
+
"types": "./lib/typescript/module/image-resolver/index.d.ts",
|
|
30
|
+
"default": "./lib/module/image-resolver/index.js"
|
|
31
|
+
},
|
|
32
|
+
"require": {
|
|
33
|
+
"types": "./lib/typescript/commonjs/image-resolver/index.d.ts",
|
|
34
|
+
"default": "./lib/commonjs/image-resolver/index.js"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
26
37
|
"./theme": {
|
|
27
38
|
"react-native": "./src/theme/index.ts",
|
|
28
39
|
"import": {
|
package/src/avatar/Avatar.tsx
CHANGED
|
@@ -2,6 +2,7 @@ import React, { memo, useMemo, useRef, useState } from 'react';
|
|
|
2
2
|
import { View, Image, StyleSheet, TouchableOpacity } from 'react-native';
|
|
3
3
|
|
|
4
4
|
import { useTheme } from '../theme/use-theme';
|
|
5
|
+
import { useImageResolver } from '../image-resolver/context';
|
|
5
6
|
import type { AvatarProps } from './types';
|
|
6
7
|
|
|
7
8
|
// Squircle clip path normalized to 0–1 coordinate space (viewBox="0 0 1 1").
|
|
@@ -131,11 +132,20 @@ const AvatarComponent: React.FC<AvatarProps> = ({
|
|
|
131
132
|
}
|
|
132
133
|
}
|
|
133
134
|
|
|
134
|
-
|
|
135
|
+
const imageResolver = useImageResolver();
|
|
136
|
+
|
|
137
|
+
// Resolve source prop: string → uri, object → ImageSourcePropType.
|
|
138
|
+
// HTTP/data URLs pass through directly. Non-URL strings (e.g. file
|
|
139
|
+
// IDs) are resolved via the app-provided ImageResolver if available.
|
|
135
140
|
const resolvedUri = useMemo(() => {
|
|
136
|
-
if (typeof source === 'string')
|
|
141
|
+
if (typeof source === 'string') {
|
|
142
|
+
if (source.startsWith('http://') || source.startsWith('https://') || source.startsWith('data:')) {
|
|
143
|
+
return source;
|
|
144
|
+
}
|
|
145
|
+
return imageResolver?.(source);
|
|
146
|
+
}
|
|
137
147
|
return uri;
|
|
138
|
-
}, [source, uri]);
|
|
148
|
+
}, [source, uri, imageResolver]);
|
|
139
149
|
|
|
140
150
|
const resolvedImageSource = useMemo(() => {
|
|
141
151
|
if (source != null && typeof source !== 'string') return source;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { createContext, useContext } from 'react';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A function that resolves opaque identifiers (e.g. file IDs) to
|
|
5
|
+
* loadable image URLs. Returns `undefined` when no URL is available yet.
|
|
6
|
+
*/
|
|
7
|
+
export type ImageResolver = (id: string) => string | undefined;
|
|
8
|
+
|
|
9
|
+
const ImageResolverContext = createContext<ImageResolver | null>(null);
|
|
10
|
+
ImageResolverContext.displayName = 'BloomImageResolverContext';
|
|
11
|
+
|
|
12
|
+
export const ImageResolverProvider = ImageResolverContext.Provider;
|
|
13
|
+
|
|
14
|
+
export function useImageResolver(): ImageResolver | null {
|
|
15
|
+
return useContext(ImageResolverContext);
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { ImageResolverProvider, useImageResolver, type ImageResolver } from './context';
|