@tamagui/image 1.101.0 → 1.101.1
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/dist/cjs/Image.js +19 -3
- package/dist/cjs/Image.js.map +1 -1
- package/dist/cjs/Image.native.js +165 -5
- package/dist/cjs/Image.native.js.map +2 -2
- package/dist/esm/Image.js +19 -2
- package/dist/esm/Image.js.map +1 -1
- package/dist/esm/Image.mjs +15 -3
- package/dist/esm/Image.native.js +165 -4
- package/dist/esm/Image.native.js.map +2 -2
- package/dist/jsx/Image.js +19 -2
- package/dist/jsx/Image.js.map +1 -1
- package/dist/jsx/Image.mjs +15 -3
- package/dist/jsx/Image.native.js +165 -4
- package/dist/jsx/Image.native.js.map +2 -2
- package/package.json +5 -6
- package/src/Image.tsx +26 -3
- package/types/Image.d.ts +1 -1
- package/types/Image.d.ts.map +1 -1
package/dist/cjs/Image.js
CHANGED
|
@@ -17,7 +17,7 @@ __export(Image_exports, {
|
|
|
17
17
|
Image: () => Image
|
|
18
18
|
});
|
|
19
19
|
module.exports = __toCommonJS(Image_exports);
|
|
20
|
-
var import_constants = require("@tamagui/constants"), import_core = require("@tamagui/core"), import_react_native = require("react-native-web"), import_jsx_runtime = require("react/jsx-runtime");
|
|
20
|
+
var import_constants = require("@tamagui/constants"), import_core = require("@tamagui/core"), import_react = require("react"), import_react_native = require("react-native-web"), import_jsx_runtime = require("react/jsx-runtime");
|
|
21
21
|
const StyledImage = (0, import_core.styled)(import_react_native.Image, {
|
|
22
22
|
name: "Image"
|
|
23
23
|
});
|
|
@@ -27,8 +27,24 @@ const Image = StyledImage.styleable((inProps, ref) => {
|
|
|
27
27
|
process.env.NODE_ENV === "development" && typeof src == "string" && (typeof props.width == "string" && props.width[0] !== "$" || typeof props.height == "string" && props.height[0] !== "$") && (hasWarned || (hasWarned = !0, console.warn(
|
|
28
28
|
'React Native expects a numerical width/height. If you want to use a percent you must define the "source" prop with width, height, and uri.'
|
|
29
29
|
)));
|
|
30
|
-
let finalSource = typeof src == "string" ? {
|
|
31
|
-
|
|
30
|
+
let finalSource = typeof src == "string" ? {
|
|
31
|
+
uri: src,
|
|
32
|
+
...import_constants.isWeb && {
|
|
33
|
+
width: props.width || style?.width,
|
|
34
|
+
height: props.height || style?.height
|
|
35
|
+
}
|
|
36
|
+
} : source ?? src;
|
|
37
|
+
return finalSource && typeof finalSource == "object" && (process.env.NODE_ENV === "development" && process.env.TAMAGUI_IMAGE_CHECK_ERROR && (0, import_react.useEffect)(() => {
|
|
38
|
+
async function run() {
|
|
39
|
+
if (typeof src == "string")
|
|
40
|
+
try {
|
|
41
|
+
await fetch(src).then((res) => res.text());
|
|
42
|
+
} catch {
|
|
43
|
+
console.error(`Error loading image: ${src}`, { props });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
run();
|
|
47
|
+
}, [src]), finalSource.default && (finalSource = finalSource.default)), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_native.Image, { ref, source: finalSource, style, ...rest });
|
|
32
48
|
});
|
|
33
49
|
Image.getSize = import_react_native.Image.getSize;
|
|
34
50
|
Image.getSizeWithHeaders = import_react_native.Image.getSizeWithHeaders;
|
package/dist/cjs/Image.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Image.tsx"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAsB,+BAQtB,cAAyC,
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,uBAAsB,+BAQtB,cAAyC,0BACzC,eAAmC,kBACnC,sBAAiC,yBAgHxB;AA9GT,MAAM,kBAAc,oBAAO,oBAAAA,OAAS;AAAA,EAClC,MAAM;AACR,CAAC;AAmCD,IAAI,YAAY;AAET,MAAM,QAAQ,YAAY,UAAsB,CAAC,SAAS,QAAQ;AACvE,QAAM,CAAC,OAAO,KAAK,QAAI,8BAAiB,OAAO,GACzC,EAAE,KAAK,QAAQ,GAAG,KAAK,IAAI;AAEjC,EAAI,QAAQ,IAAI,aAAa,iBACvB,OAAO,OAAQ,aAEd,OAAO,MAAM,SAAU,YAAY,MAAM,MAAM,CAAC,MAAM,OACtD,OAAO,MAAM,UAAW,YAAY,MAAM,OAAO,CAAC,MAAM,SAEpD,cACH,YAAY,IACZ,QAAQ;AAAA,IACN;AAAA,EACF;AAMR,MAAI,cACF,OAAO,OAAQ,WACX;AAAA,IACE,KAAK;AAAA,IACL,GAAI,0BAAS;AAAA,MACX,OAAO,MAAM,SAAS,OAAO;AAAA,MAC7B,QAAQ,MAAM,UAAU,OAAO;AAAA,IACjC;AAAA,EACF,IACA,UAAU;AAEhB,SAAI,eAAe,OAAO,eAAgB,aAgBpC,QAAQ,IAAI,aAAa,iBAAiB,QAAQ,IAAI,iCAExD,wBAAU,MAAM;AACd,mBAAe,MAAM;AACnB,UAAI,OAAO,OAAQ;AACjB,YAAI;AACF,gBAAM,MAAM,GAAG,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC;AAAA,QAC3C,QAAc;AACZ,kBAAQ,MAAM,wBAAwB,GAAG,IAAI,EAAE,MAAM,CAAC;AAAA,QACxD;AAAA,IAEJ;AAEA,QAAI;AAAA,EACN,GAAG,CAAC,GAAG,CAAC,GAIN,YAAY,YACd,cAAc,YAAY,WAKvB,4CAAC,oBAAAA,OAAA,EAAQ,KAAU,QAAQ,aAAa,OAAe,GAAI,MAAc;AAClF,CAAC;AAED,MAAM,UAAU,oBAAAA,MAAQ;AACxB,MAAM,qBAAqB,oBAAAA,MAAQ;AACnC,MAAM,WAAW,oBAAAA,MAAQ;AACzB,MAAM,uBAAuB,oBAAAA,MAAQ;AACrC,MAAM,gBAAgB,oBAAAA,MAAQ;AAC9B,MAAM,aAAa,oBAAAA,MAAQ;",
|
|
5
5
|
"names": ["RNImage"]
|
|
6
6
|
}
|
package/dist/cjs/Image.native.js
CHANGED
|
@@ -18,7 +18,7 @@ __export(Image_exports, {
|
|
|
18
18
|
Image: () => Image
|
|
19
19
|
});
|
|
20
20
|
module.exports = __toCommonJS(Image_exports);
|
|
21
|
-
var import_jsx_runtime = require("react/jsx-runtime"), import_constants = require("@tamagui/constants"), import_core = require("@tamagui/core"), import_react_native = require("react-native");
|
|
21
|
+
var import_jsx_runtime = require("react/jsx-runtime"), import_constants = require("@tamagui/constants"), import_core = require("@tamagui/core"), import_react = require("react"), import_react_native = require("react-native");
|
|
22
22
|
function _array_like_to_array(arr, len) {
|
|
23
23
|
(len == null || len > arr.length) && (len = arr.length);
|
|
24
24
|
for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
|
|
@@ -27,6 +27,30 @@ function _array_like_to_array(arr, len) {
|
|
|
27
27
|
function _array_with_holes(arr) {
|
|
28
28
|
if (Array.isArray(arr)) return arr;
|
|
29
29
|
}
|
|
30
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
31
|
+
try {
|
|
32
|
+
var info = gen[key](arg), value = info.value;
|
|
33
|
+
} catch (error) {
|
|
34
|
+
reject(error);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
info.done ? resolve(value) : Promise.resolve(value).then(_next, _throw);
|
|
38
|
+
}
|
|
39
|
+
function _async_to_generator(fn) {
|
|
40
|
+
return function() {
|
|
41
|
+
var self = this, args = arguments;
|
|
42
|
+
return new Promise(function(resolve, reject) {
|
|
43
|
+
var gen = fn.apply(self, args);
|
|
44
|
+
function _next(value) {
|
|
45
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
46
|
+
}
|
|
47
|
+
function _throw(err) {
|
|
48
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
49
|
+
}
|
|
50
|
+
_next(void 0);
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
}
|
|
30
54
|
function _define_property(obj, key, value) {
|
|
31
55
|
return key in obj ? Object.defineProperty(obj, key, {
|
|
32
56
|
value,
|
|
@@ -96,6 +120,92 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
96
120
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
97
121
|
}
|
|
98
122
|
}
|
|
123
|
+
function _ts_generator(thisArg, body) {
|
|
124
|
+
var f, y, t, g, _ = {
|
|
125
|
+
label: 0,
|
|
126
|
+
sent: function() {
|
|
127
|
+
if (t[0] & 1) throw t[1];
|
|
128
|
+
return t[1];
|
|
129
|
+
},
|
|
130
|
+
trys: [],
|
|
131
|
+
ops: []
|
|
132
|
+
};
|
|
133
|
+
return g = {
|
|
134
|
+
next: verb(0),
|
|
135
|
+
throw: verb(1),
|
|
136
|
+
return: verb(2)
|
|
137
|
+
}, typeof Symbol == "function" && (g[Symbol.iterator] = function() {
|
|
138
|
+
return this;
|
|
139
|
+
}), g;
|
|
140
|
+
function verb(n) {
|
|
141
|
+
return function(v) {
|
|
142
|
+
return step([
|
|
143
|
+
n,
|
|
144
|
+
v
|
|
145
|
+
]);
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
function step(op) {
|
|
149
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
150
|
+
for (; _; ) try {
|
|
151
|
+
if (f = 1, y && (t = op[0] & 2 ? y.return : op[0] ? y.throw || ((t = y.return) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
152
|
+
switch (y = 0, t && (op = [
|
|
153
|
+
op[0] & 2,
|
|
154
|
+
t.value
|
|
155
|
+
]), op[0]) {
|
|
156
|
+
case 0:
|
|
157
|
+
case 1:
|
|
158
|
+
t = op;
|
|
159
|
+
break;
|
|
160
|
+
case 4:
|
|
161
|
+
return _.label++, {
|
|
162
|
+
value: op[1],
|
|
163
|
+
done: !1
|
|
164
|
+
};
|
|
165
|
+
case 5:
|
|
166
|
+
_.label++, y = op[1], op = [
|
|
167
|
+
0
|
|
168
|
+
];
|
|
169
|
+
continue;
|
|
170
|
+
case 7:
|
|
171
|
+
op = _.ops.pop(), _.trys.pop();
|
|
172
|
+
continue;
|
|
173
|
+
default:
|
|
174
|
+
if (t = _.trys, !(t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
175
|
+
_ = 0;
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
179
|
+
_.label = op[1];
|
|
180
|
+
break;
|
|
181
|
+
}
|
|
182
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
183
|
+
_.label = t[1], t = op;
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
if (t && _.label < t[2]) {
|
|
187
|
+
_.label = t[2], _.ops.push(op);
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
t[2] && _.ops.pop(), _.trys.pop();
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
op = body.call(thisArg, _);
|
|
194
|
+
} catch (e) {
|
|
195
|
+
op = [
|
|
196
|
+
6,
|
|
197
|
+
e
|
|
198
|
+
], y = 0;
|
|
199
|
+
} finally {
|
|
200
|
+
f = t = 0;
|
|
201
|
+
}
|
|
202
|
+
if (op[0] & 5) throw op[1];
|
|
203
|
+
return {
|
|
204
|
+
value: op[0] ? op[1] : void 0,
|
|
205
|
+
done: !0
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
}
|
|
99
209
|
var StyledImage = (0, import_core.styled)(import_react_native.Image, {
|
|
100
210
|
name: "Image"
|
|
101
211
|
}), hasWarned = !1, Image = StyledImage.styleable(function(inProps, ref) {
|
|
@@ -107,8 +217,8 @@ var StyledImage = (0, import_core.styled)(import_react_native.Image, {
|
|
|
107
217
|
var finalSource = typeof src == "string" ? _object_spread({
|
|
108
218
|
uri: src
|
|
109
219
|
}, import_constants.isWeb && {
|
|
110
|
-
width: props.width,
|
|
111
|
-
height: props.height
|
|
220
|
+
width: props.width || (style == null ? void 0 : style.width),
|
|
221
|
+
height: props.height || (style == null ? void 0 : style.height)
|
|
112
222
|
}) : source ?? src;
|
|
113
223
|
if (finalSource && typeof finalSource == "object") {
|
|
114
224
|
if (!Array.isArray(finalSource) && typeof finalSource.uri == "number" && (finalSource = finalSource.uri, source && typeof source == "object" && !Array.isArray(source))) {
|
|
@@ -117,9 +227,59 @@ var StyledImage = (0, import_core.styled)(import_react_native.Image, {
|
|
|
117
227
|
var _height;
|
|
118
228
|
(_height = (_style1 = style).height) !== null && _height !== void 0 || (_style1.height = source.height);
|
|
119
229
|
}
|
|
120
|
-
|
|
230
|
+
process.env.NODE_ENV === "development" && process.env.TAMAGUI_IMAGE_CHECK_ERROR && (0, import_react.useEffect)(function() {
|
|
231
|
+
var run = function() {
|
|
232
|
+
return _run.apply(this, arguments);
|
|
233
|
+
};
|
|
234
|
+
function _run() {
|
|
235
|
+
return _run = _async_to_generator(function() {
|
|
236
|
+
var err;
|
|
237
|
+
return _ts_generator(this, function(_state) {
|
|
238
|
+
switch (_state.label) {
|
|
239
|
+
case 0:
|
|
240
|
+
if (typeof src != "string") return [
|
|
241
|
+
3,
|
|
242
|
+
4
|
|
243
|
+
];
|
|
244
|
+
_state.label = 1;
|
|
245
|
+
case 1:
|
|
246
|
+
return _state.trys.push([
|
|
247
|
+
1,
|
|
248
|
+
3,
|
|
249
|
+
,
|
|
250
|
+
4
|
|
251
|
+
]), [
|
|
252
|
+
4,
|
|
253
|
+
fetch(src).then(function(res) {
|
|
254
|
+
return res.text();
|
|
255
|
+
})
|
|
256
|
+
];
|
|
257
|
+
case 2:
|
|
258
|
+
return _state.sent(), [
|
|
259
|
+
3,
|
|
260
|
+
4
|
|
261
|
+
];
|
|
262
|
+
case 3:
|
|
263
|
+
return err = _state.sent(), console.error("Error loading image: ".concat(src), {
|
|
264
|
+
props
|
|
265
|
+
}), [
|
|
266
|
+
3,
|
|
267
|
+
4
|
|
268
|
+
];
|
|
269
|
+
case 4:
|
|
270
|
+
return [
|
|
271
|
+
2
|
|
272
|
+
];
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
}), _run.apply(this, arguments);
|
|
276
|
+
}
|
|
277
|
+
run();
|
|
278
|
+
}, [
|
|
279
|
+
src
|
|
280
|
+
]), finalSource.default && (finalSource = finalSource.default);
|
|
121
281
|
}
|
|
122
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
282
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_native.Image, _object_spread({
|
|
123
283
|
ref,
|
|
124
284
|
source: finalSource,
|
|
125
285
|
style
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Users/n8/tamagui/packages/image/src/Image.tsx"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;uDAAA,mBAAsB,+BAQtB,cAAyC,
|
|
5
|
-
"names": ["StyledImage", "styled", "RNImage", "name", "hasWarned", "Image", "styleable", "inProps", "ref", "usePropsAndStyle", "props", "style", "src", "source", "rest", "process", "env", "NODE_ENV", "width", "height", "console", "warn", "finalSource", "uri", "isWeb", "Array", "isArray", "_jsx", "getSize", "getSizeWithHeaders", "prefetch", "prefetchWithMetadata", "abortPrefetch", "queryCache"]
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["StyledImage", "styled", "RNImage", "name", "hasWarned", "Image", "styleable", "inProps", "ref", "usePropsAndStyle", "props", "style", "src", "source", "rest", "process", "env", "NODE_ENV", "width", "height", "console", "warn", "finalSource", "uri", "isWeb", "Array", "isArray", "TAMAGUI_IMAGE_CHECK_ERROR", "useEffect", "run", "err", "fetch", "then", "res", "text", "error", "_jsx", "getSize", "getSizeWithHeaders", "prefetch", "prefetchWithMetadata", "abortPrefetch", "queryCache"]
|
|
6
6
|
}
|
package/dist/esm/Image.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { isWeb } from "@tamagui/constants";
|
|
2
2
|
import { styled, usePropsAndStyle } from "@tamagui/core";
|
|
3
|
+
import { useEffect } from "react";
|
|
3
4
|
import { Image as RNImage } from "react-native-web";
|
|
4
5
|
import { jsx } from "react/jsx-runtime";
|
|
5
6
|
const StyledImage = styled(RNImage, {
|
|
@@ -11,8 +12,24 @@ const Image = StyledImage.styleable((inProps, ref) => {
|
|
|
11
12
|
process.env.NODE_ENV === "development" && typeof src == "string" && (typeof props.width == "string" && props.width[0] !== "$" || typeof props.height == "string" && props.height[0] !== "$") && (hasWarned || (hasWarned = !0, console.warn(
|
|
12
13
|
'React Native expects a numerical width/height. If you want to use a percent you must define the "source" prop with width, height, and uri.'
|
|
13
14
|
)));
|
|
14
|
-
let finalSource = typeof src == "string" ? {
|
|
15
|
-
|
|
15
|
+
let finalSource = typeof src == "string" ? {
|
|
16
|
+
uri: src,
|
|
17
|
+
...isWeb && {
|
|
18
|
+
width: props.width || style?.width,
|
|
19
|
+
height: props.height || style?.height
|
|
20
|
+
}
|
|
21
|
+
} : source ?? src;
|
|
22
|
+
return finalSource && typeof finalSource == "object" && (process.env.NODE_ENV === "development" && process.env.TAMAGUI_IMAGE_CHECK_ERROR && useEffect(() => {
|
|
23
|
+
async function run() {
|
|
24
|
+
if (typeof src == "string")
|
|
25
|
+
try {
|
|
26
|
+
await fetch(src).then((res) => res.text());
|
|
27
|
+
} catch {
|
|
28
|
+
console.error(`Error loading image: ${src}`, { props });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
run();
|
|
32
|
+
}, [src]), finalSource.default && (finalSource = finalSource.default)), /* @__PURE__ */ jsx(RNImage, { ref, source: finalSource, style, ...rest });
|
|
16
33
|
});
|
|
17
34
|
Image.getSize = RNImage.getSize;
|
|
18
35
|
Image.getSizeWithHeaders = RNImage.getSizeWithHeaders;
|
package/dist/esm/Image.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Image.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,aAAa;AAQtB,SAAS,QAAQ,wBAAwB;
|
|
4
|
+
"mappings": "AAAA,SAAS,aAAa;AAQtB,SAAS,QAAQ,wBAAwB;AACzC,SAAS,iBAA0B;AACnC,SAAS,SAAS,eAAe;AAgHxB;AA9GT,MAAM,cAAc,OAAO,SAAS;AAAA,EAClC,MAAM;AACR,CAAC;AAmCD,IAAI,YAAY;AAET,MAAM,QAAQ,YAAY,UAAsB,CAAC,SAAS,QAAQ;AACvE,QAAM,CAAC,OAAO,KAAK,IAAI,iBAAiB,OAAO,GACzC,EAAE,KAAK,QAAQ,GAAG,KAAK,IAAI;AAEjC,EAAI,QAAQ,IAAI,aAAa,iBACvB,OAAO,OAAQ,aAEd,OAAO,MAAM,SAAU,YAAY,MAAM,MAAM,CAAC,MAAM,OACtD,OAAO,MAAM,UAAW,YAAY,MAAM,OAAO,CAAC,MAAM,SAEpD,cACH,YAAY,IACZ,QAAQ;AAAA,IACN;AAAA,EACF;AAMR,MAAI,cACF,OAAO,OAAQ,WACX;AAAA,IACE,KAAK;AAAA,IACL,GAAI,SAAS;AAAA,MACX,OAAO,MAAM,SAAS,OAAO;AAAA,MAC7B,QAAQ,MAAM,UAAU,OAAO;AAAA,IACjC;AAAA,EACF,IACA,UAAU;AAEhB,SAAI,eAAe,OAAO,eAAgB,aAgBpC,QAAQ,IAAI,aAAa,iBAAiB,QAAQ,IAAI,6BAExD,UAAU,MAAM;AACd,mBAAe,MAAM;AACnB,UAAI,OAAO,OAAQ;AACjB,YAAI;AACF,gBAAM,MAAM,GAAG,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC;AAAA,QAC3C,QAAc;AACZ,kBAAQ,MAAM,wBAAwB,GAAG,IAAI,EAAE,MAAM,CAAC;AAAA,QACxD;AAAA,IAEJ;AAEA,QAAI;AAAA,EACN,GAAG,CAAC,GAAG,CAAC,GAIN,YAAY,YACd,cAAc,YAAY,WAKvB,oBAAC,WAAQ,KAAU,QAAQ,aAAa,OAAe,GAAI,MAAc;AAClF,CAAC;AAED,MAAM,UAAU,QAAQ;AACxB,MAAM,qBAAqB,QAAQ;AACnC,MAAM,WAAW,QAAQ;AACzB,MAAM,uBAAuB,QAAQ;AACrC,MAAM,gBAAgB,QAAQ;AAC9B,MAAM,aAAa,QAAQ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/esm/Image.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { isWeb } from "@tamagui/constants";
|
|
2
2
|
import { styled, usePropsAndStyle } from "@tamagui/core";
|
|
3
|
+
import { useEffect } from "react";
|
|
3
4
|
import { Image as RNImage } from "react-native-web";
|
|
4
5
|
import { jsx } from "react/jsx-runtime";
|
|
5
6
|
const StyledImage = styled(RNImage, {
|
|
@@ -17,11 +18,22 @@ const Image = StyledImage.styleable((inProps, ref) => {
|
|
|
17
18
|
let finalSource = typeof src == "string" ? {
|
|
18
19
|
uri: src,
|
|
19
20
|
...(isWeb && {
|
|
20
|
-
width: props.width,
|
|
21
|
-
height: props.height
|
|
21
|
+
width: props.width || style?.width,
|
|
22
|
+
height: props.height || style?.height
|
|
22
23
|
})
|
|
23
24
|
} : source ?? src;
|
|
24
|
-
return finalSource && typeof finalSource == "object" &&
|
|
25
|
+
return finalSource && typeof finalSource == "object" && (process.env.NODE_ENV === "development" && process.env.TAMAGUI_IMAGE_CHECK_ERROR && useEffect(() => {
|
|
26
|
+
async function run() {
|
|
27
|
+
if (typeof src == "string") try {
|
|
28
|
+
await fetch(src).then(res => res.text());
|
|
29
|
+
} catch {
|
|
30
|
+
console.error(`Error loading image: ${src}`, {
|
|
31
|
+
props
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
run();
|
|
36
|
+
}, [src]), finalSource.default && (finalSource = finalSource.default)), /* @__PURE__ */jsx(RNImage, {
|
|
25
37
|
ref,
|
|
26
38
|
source: finalSource,
|
|
27
39
|
style,
|
package/dist/esm/Image.native.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { isWeb } from "@tamagui/constants";
|
|
3
3
|
import { styled, usePropsAndStyle } from "@tamagui/core";
|
|
4
|
+
import { useEffect } from "react";
|
|
4
5
|
import { Image as RNImage } from "react-native";
|
|
5
6
|
function _array_like_to_array(arr, len) {
|
|
6
7
|
(len == null || len > arr.length) && (len = arr.length);
|
|
@@ -10,6 +11,30 @@ function _array_like_to_array(arr, len) {
|
|
|
10
11
|
function _array_with_holes(arr) {
|
|
11
12
|
if (Array.isArray(arr)) return arr;
|
|
12
13
|
}
|
|
14
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
15
|
+
try {
|
|
16
|
+
var info = gen[key](arg), value = info.value;
|
|
17
|
+
} catch (error) {
|
|
18
|
+
reject(error);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
info.done ? resolve(value) : Promise.resolve(value).then(_next, _throw);
|
|
22
|
+
}
|
|
23
|
+
function _async_to_generator(fn) {
|
|
24
|
+
return function() {
|
|
25
|
+
var self = this, args = arguments;
|
|
26
|
+
return new Promise(function(resolve, reject) {
|
|
27
|
+
var gen = fn.apply(self, args);
|
|
28
|
+
function _next(value) {
|
|
29
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
30
|
+
}
|
|
31
|
+
function _throw(err) {
|
|
32
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
33
|
+
}
|
|
34
|
+
_next(void 0);
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
}
|
|
13
38
|
function _define_property(obj, key, value) {
|
|
14
39
|
return key in obj ? Object.defineProperty(obj, key, {
|
|
15
40
|
value,
|
|
@@ -79,6 +104,92 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
79
104
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
80
105
|
}
|
|
81
106
|
}
|
|
107
|
+
function _ts_generator(thisArg, body) {
|
|
108
|
+
var f, y, t, g, _ = {
|
|
109
|
+
label: 0,
|
|
110
|
+
sent: function() {
|
|
111
|
+
if (t[0] & 1) throw t[1];
|
|
112
|
+
return t[1];
|
|
113
|
+
},
|
|
114
|
+
trys: [],
|
|
115
|
+
ops: []
|
|
116
|
+
};
|
|
117
|
+
return g = {
|
|
118
|
+
next: verb(0),
|
|
119
|
+
throw: verb(1),
|
|
120
|
+
return: verb(2)
|
|
121
|
+
}, typeof Symbol == "function" && (g[Symbol.iterator] = function() {
|
|
122
|
+
return this;
|
|
123
|
+
}), g;
|
|
124
|
+
function verb(n) {
|
|
125
|
+
return function(v) {
|
|
126
|
+
return step([
|
|
127
|
+
n,
|
|
128
|
+
v
|
|
129
|
+
]);
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
function step(op) {
|
|
133
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
134
|
+
for (; _; ) try {
|
|
135
|
+
if (f = 1, y && (t = op[0] & 2 ? y.return : op[0] ? y.throw || ((t = y.return) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
136
|
+
switch (y = 0, t && (op = [
|
|
137
|
+
op[0] & 2,
|
|
138
|
+
t.value
|
|
139
|
+
]), op[0]) {
|
|
140
|
+
case 0:
|
|
141
|
+
case 1:
|
|
142
|
+
t = op;
|
|
143
|
+
break;
|
|
144
|
+
case 4:
|
|
145
|
+
return _.label++, {
|
|
146
|
+
value: op[1],
|
|
147
|
+
done: !1
|
|
148
|
+
};
|
|
149
|
+
case 5:
|
|
150
|
+
_.label++, y = op[1], op = [
|
|
151
|
+
0
|
|
152
|
+
];
|
|
153
|
+
continue;
|
|
154
|
+
case 7:
|
|
155
|
+
op = _.ops.pop(), _.trys.pop();
|
|
156
|
+
continue;
|
|
157
|
+
default:
|
|
158
|
+
if (t = _.trys, !(t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
159
|
+
_ = 0;
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
163
|
+
_.label = op[1];
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
167
|
+
_.label = t[1], t = op;
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
if (t && _.label < t[2]) {
|
|
171
|
+
_.label = t[2], _.ops.push(op);
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
t[2] && _.ops.pop(), _.trys.pop();
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
op = body.call(thisArg, _);
|
|
178
|
+
} catch (e) {
|
|
179
|
+
op = [
|
|
180
|
+
6,
|
|
181
|
+
e
|
|
182
|
+
], y = 0;
|
|
183
|
+
} finally {
|
|
184
|
+
f = t = 0;
|
|
185
|
+
}
|
|
186
|
+
if (op[0] & 5) throw op[1];
|
|
187
|
+
return {
|
|
188
|
+
value: op[0] ? op[1] : void 0,
|
|
189
|
+
done: !0
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
}
|
|
82
193
|
var StyledImage = styled(RNImage, {
|
|
83
194
|
name: "Image"
|
|
84
195
|
}), hasWarned = !1, Image = StyledImage.styleable(function(inProps, ref) {
|
|
@@ -90,8 +201,8 @@ var StyledImage = styled(RNImage, {
|
|
|
90
201
|
var finalSource = typeof src == "string" ? _object_spread({
|
|
91
202
|
uri: src
|
|
92
203
|
}, isWeb && {
|
|
93
|
-
width: props.width,
|
|
94
|
-
height: props.height
|
|
204
|
+
width: props.width || (style == null ? void 0 : style.width),
|
|
205
|
+
height: props.height || (style == null ? void 0 : style.height)
|
|
95
206
|
}) : source ?? src;
|
|
96
207
|
if (finalSource && typeof finalSource == "object") {
|
|
97
208
|
if (!Array.isArray(finalSource) && typeof finalSource.uri == "number" && (finalSource = finalSource.uri, source && typeof source == "object" && !Array.isArray(source))) {
|
|
@@ -100,9 +211,59 @@ var StyledImage = styled(RNImage, {
|
|
|
100
211
|
var _height;
|
|
101
212
|
(_height = (_style1 = style).height) !== null && _height !== void 0 || (_style1.height = source.height);
|
|
102
213
|
}
|
|
103
|
-
|
|
214
|
+
process.env.NODE_ENV === "development" && process.env.TAMAGUI_IMAGE_CHECK_ERROR && useEffect(function() {
|
|
215
|
+
var run = function() {
|
|
216
|
+
return _run.apply(this, arguments);
|
|
217
|
+
};
|
|
218
|
+
function _run() {
|
|
219
|
+
return _run = _async_to_generator(function() {
|
|
220
|
+
var err;
|
|
221
|
+
return _ts_generator(this, function(_state) {
|
|
222
|
+
switch (_state.label) {
|
|
223
|
+
case 0:
|
|
224
|
+
if (typeof src != "string") return [
|
|
225
|
+
3,
|
|
226
|
+
4
|
|
227
|
+
];
|
|
228
|
+
_state.label = 1;
|
|
229
|
+
case 1:
|
|
230
|
+
return _state.trys.push([
|
|
231
|
+
1,
|
|
232
|
+
3,
|
|
233
|
+
,
|
|
234
|
+
4
|
|
235
|
+
]), [
|
|
236
|
+
4,
|
|
237
|
+
fetch(src).then(function(res) {
|
|
238
|
+
return res.text();
|
|
239
|
+
})
|
|
240
|
+
];
|
|
241
|
+
case 2:
|
|
242
|
+
return _state.sent(), [
|
|
243
|
+
3,
|
|
244
|
+
4
|
|
245
|
+
];
|
|
246
|
+
case 3:
|
|
247
|
+
return err = _state.sent(), console.error("Error loading image: ".concat(src), {
|
|
248
|
+
props
|
|
249
|
+
}), [
|
|
250
|
+
3,
|
|
251
|
+
4
|
|
252
|
+
];
|
|
253
|
+
case 4:
|
|
254
|
+
return [
|
|
255
|
+
2
|
|
256
|
+
];
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
}), _run.apply(this, arguments);
|
|
260
|
+
}
|
|
261
|
+
run();
|
|
262
|
+
}, [
|
|
263
|
+
src
|
|
264
|
+
]), finalSource.default && (finalSource = finalSource.default);
|
|
104
265
|
}
|
|
105
|
-
return /* @__PURE__ */ _jsx(
|
|
266
|
+
return /* @__PURE__ */ _jsx(RNImage, _object_spread({
|
|
106
267
|
ref,
|
|
107
268
|
source: finalSource,
|
|
108
269
|
style
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Users/n8/tamagui/packages/image/src/Image.tsx"],
|
|
4
|
-
"mappings": ";AAAA,SAASA,aAAa;AAQtB,SAASC,QAAQC,wBAAwB;
|
|
5
|
-
"names": ["isWeb", "styled", "usePropsAndStyle", "Image", "RNImage", "StyledImage", "name", "hasWarned", "styleable", "inProps", "ref", "props", "style", "src", "source", "rest", "process", "env", "NODE_ENV", "width", "height", "console", "warn", "finalSource", "uri", "Array", "isArray", "getSize", "getSizeWithHeaders", "prefetch", "prefetchWithMetadata", "abortPrefetch", "queryCache"]
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["isWeb", "styled", "usePropsAndStyle", "useEffect", "Image", "RNImage", "StyledImage", "name", "hasWarned", "styleable", "inProps", "ref", "props", "style", "src", "source", "rest", "process", "env", "NODE_ENV", "width", "height", "console", "warn", "finalSource", "uri", "Array", "isArray", "TAMAGUI_IMAGE_CHECK_ERROR", "run", "err", "fetch", "then", "res", "text", "error", "getSize", "getSizeWithHeaders", "prefetch", "prefetchWithMetadata", "abortPrefetch", "queryCache"]
|
|
6
6
|
}
|
package/dist/jsx/Image.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { isWeb } from "@tamagui/constants";
|
|
2
2
|
import { styled, usePropsAndStyle } from "@tamagui/core";
|
|
3
|
+
import { useEffect } from "react";
|
|
3
4
|
import { Image as RNImage } from "react-native-web";
|
|
4
5
|
import { jsx } from "react/jsx-runtime";
|
|
5
6
|
const StyledImage = styled(RNImage, {
|
|
@@ -11,8 +12,24 @@ const Image = StyledImage.styleable((inProps, ref) => {
|
|
|
11
12
|
process.env.NODE_ENV === "development" && typeof src == "string" && (typeof props.width == "string" && props.width[0] !== "$" || typeof props.height == "string" && props.height[0] !== "$") && (hasWarned || (hasWarned = !0, console.warn(
|
|
12
13
|
'React Native expects a numerical width/height. If you want to use a percent you must define the "source" prop with width, height, and uri.'
|
|
13
14
|
)));
|
|
14
|
-
let finalSource = typeof src == "string" ? {
|
|
15
|
-
|
|
15
|
+
let finalSource = typeof src == "string" ? {
|
|
16
|
+
uri: src,
|
|
17
|
+
...isWeb && {
|
|
18
|
+
width: props.width || style?.width,
|
|
19
|
+
height: props.height || style?.height
|
|
20
|
+
}
|
|
21
|
+
} : source ?? src;
|
|
22
|
+
return finalSource && typeof finalSource == "object" && (process.env.NODE_ENV === "development" && process.env.TAMAGUI_IMAGE_CHECK_ERROR && useEffect(() => {
|
|
23
|
+
async function run() {
|
|
24
|
+
if (typeof src == "string")
|
|
25
|
+
try {
|
|
26
|
+
await fetch(src).then((res) => res.text());
|
|
27
|
+
} catch {
|
|
28
|
+
console.error(`Error loading image: ${src}`, { props });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
run();
|
|
32
|
+
}, [src]), finalSource.default && (finalSource = finalSource.default)), /* @__PURE__ */ jsx(RNImage, { ref, source: finalSource, style, ...rest });
|
|
16
33
|
});
|
|
17
34
|
Image.getSize = RNImage.getSize;
|
|
18
35
|
Image.getSizeWithHeaders = RNImage.getSizeWithHeaders;
|
package/dist/jsx/Image.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Image.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,aAAa;AAQtB,SAAS,QAAQ,wBAAwB;
|
|
4
|
+
"mappings": "AAAA,SAAS,aAAa;AAQtB,SAAS,QAAQ,wBAAwB;AACzC,SAAS,iBAA0B;AACnC,SAAS,SAAS,eAAe;AAgHxB;AA9GT,MAAM,cAAc,OAAO,SAAS;AAAA,EAClC,MAAM;AACR,CAAC;AAmCD,IAAI,YAAY;AAET,MAAM,QAAQ,YAAY,UAAsB,CAAC,SAAS,QAAQ;AACvE,QAAM,CAAC,OAAO,KAAK,IAAI,iBAAiB,OAAO,GACzC,EAAE,KAAK,QAAQ,GAAG,KAAK,IAAI;AAEjC,EAAI,QAAQ,IAAI,aAAa,iBACvB,OAAO,OAAQ,aAEd,OAAO,MAAM,SAAU,YAAY,MAAM,MAAM,CAAC,MAAM,OACtD,OAAO,MAAM,UAAW,YAAY,MAAM,OAAO,CAAC,MAAM,SAEpD,cACH,YAAY,IACZ,QAAQ;AAAA,IACN;AAAA,EACF;AAMR,MAAI,cACF,OAAO,OAAQ,WACX;AAAA,IACE,KAAK;AAAA,IACL,GAAI,SAAS;AAAA,MACX,OAAO,MAAM,SAAS,OAAO;AAAA,MAC7B,QAAQ,MAAM,UAAU,OAAO;AAAA,IACjC;AAAA,EACF,IACA,UAAU;AAEhB,SAAI,eAAe,OAAO,eAAgB,aAgBpC,QAAQ,IAAI,aAAa,iBAAiB,QAAQ,IAAI,6BAExD,UAAU,MAAM;AACd,mBAAe,MAAM;AACnB,UAAI,OAAO,OAAQ;AACjB,YAAI;AACF,gBAAM,MAAM,GAAG,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC;AAAA,QAC3C,QAAc;AACZ,kBAAQ,MAAM,wBAAwB,GAAG,IAAI,EAAE,MAAM,CAAC;AAAA,QACxD;AAAA,IAEJ;AAEA,QAAI;AAAA,EACN,GAAG,CAAC,GAAG,CAAC,GAIN,YAAY,YACd,cAAc,YAAY,WAKvB,oBAAC,WAAQ,KAAU,QAAQ,aAAa,OAAe,GAAI,MAAc;AAClF,CAAC;AAED,MAAM,UAAU,QAAQ;AACxB,MAAM,qBAAqB,QAAQ;AACnC,MAAM,WAAW,QAAQ;AACzB,MAAM,uBAAuB,QAAQ;AACrC,MAAM,gBAAgB,QAAQ;AAC9B,MAAM,aAAa,QAAQ;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/jsx/Image.mjs
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { isWeb } from "@tamagui/constants";
|
|
2
2
|
import { styled, usePropsAndStyle } from "@tamagui/core";
|
|
3
|
+
import { useEffect } from "react";
|
|
3
4
|
import { Image as RNImage } from "react-native-web";
|
|
4
5
|
import { jsx } from "react/jsx-runtime";
|
|
5
6
|
const StyledImage = styled(RNImage, {
|
|
@@ -17,11 +18,22 @@ const Image = StyledImage.styleable((inProps, ref) => {
|
|
|
17
18
|
let finalSource = typeof src == "string" ? {
|
|
18
19
|
uri: src,
|
|
19
20
|
...(isWeb && {
|
|
20
|
-
width: props.width,
|
|
21
|
-
height: props.height
|
|
21
|
+
width: props.width || style?.width,
|
|
22
|
+
height: props.height || style?.height
|
|
22
23
|
})
|
|
23
24
|
} : source ?? src;
|
|
24
|
-
return finalSource && typeof finalSource == "object" &&
|
|
25
|
+
return finalSource && typeof finalSource == "object" && (process.env.NODE_ENV === "development" && process.env.TAMAGUI_IMAGE_CHECK_ERROR && useEffect(() => {
|
|
26
|
+
async function run() {
|
|
27
|
+
if (typeof src == "string") try {
|
|
28
|
+
await fetch(src).then(res => res.text());
|
|
29
|
+
} catch {
|
|
30
|
+
console.error(`Error loading image: ${src}`, {
|
|
31
|
+
props
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
run();
|
|
36
|
+
}, [src]), finalSource.default && (finalSource = finalSource.default)), /* @__PURE__ */jsx(RNImage, {
|
|
25
37
|
ref,
|
|
26
38
|
source: finalSource,
|
|
27
39
|
style,
|
package/dist/jsx/Image.native.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { isWeb } from "@tamagui/constants";
|
|
3
3
|
import { styled, usePropsAndStyle } from "@tamagui/core";
|
|
4
|
+
import { useEffect } from "react";
|
|
4
5
|
import { Image as RNImage } from "react-native";
|
|
5
6
|
function _array_like_to_array(arr, len) {
|
|
6
7
|
(len == null || len > arr.length) && (len = arr.length);
|
|
@@ -10,6 +11,30 @@ function _array_like_to_array(arr, len) {
|
|
|
10
11
|
function _array_with_holes(arr) {
|
|
11
12
|
if (Array.isArray(arr)) return arr;
|
|
12
13
|
}
|
|
14
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
15
|
+
try {
|
|
16
|
+
var info = gen[key](arg), value = info.value;
|
|
17
|
+
} catch (error) {
|
|
18
|
+
reject(error);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
info.done ? resolve(value) : Promise.resolve(value).then(_next, _throw);
|
|
22
|
+
}
|
|
23
|
+
function _async_to_generator(fn) {
|
|
24
|
+
return function() {
|
|
25
|
+
var self = this, args = arguments;
|
|
26
|
+
return new Promise(function(resolve, reject) {
|
|
27
|
+
var gen = fn.apply(self, args);
|
|
28
|
+
function _next(value) {
|
|
29
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
30
|
+
}
|
|
31
|
+
function _throw(err) {
|
|
32
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
33
|
+
}
|
|
34
|
+
_next(void 0);
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
}
|
|
13
38
|
function _define_property(obj, key, value) {
|
|
14
39
|
return key in obj ? Object.defineProperty(obj, key, {
|
|
15
40
|
value,
|
|
@@ -79,6 +104,92 @@ function _unsupported_iterable_to_array(o, minLen) {
|
|
|
79
104
|
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
80
105
|
}
|
|
81
106
|
}
|
|
107
|
+
function _ts_generator(thisArg, body) {
|
|
108
|
+
var f, y, t, g, _ = {
|
|
109
|
+
label: 0,
|
|
110
|
+
sent: function() {
|
|
111
|
+
if (t[0] & 1) throw t[1];
|
|
112
|
+
return t[1];
|
|
113
|
+
},
|
|
114
|
+
trys: [],
|
|
115
|
+
ops: []
|
|
116
|
+
};
|
|
117
|
+
return g = {
|
|
118
|
+
next: verb(0),
|
|
119
|
+
throw: verb(1),
|
|
120
|
+
return: verb(2)
|
|
121
|
+
}, typeof Symbol == "function" && (g[Symbol.iterator] = function() {
|
|
122
|
+
return this;
|
|
123
|
+
}), g;
|
|
124
|
+
function verb(n) {
|
|
125
|
+
return function(v) {
|
|
126
|
+
return step([
|
|
127
|
+
n,
|
|
128
|
+
v
|
|
129
|
+
]);
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
function step(op) {
|
|
133
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
134
|
+
for (; _; ) try {
|
|
135
|
+
if (f = 1, y && (t = op[0] & 2 ? y.return : op[0] ? y.throw || ((t = y.return) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
136
|
+
switch (y = 0, t && (op = [
|
|
137
|
+
op[0] & 2,
|
|
138
|
+
t.value
|
|
139
|
+
]), op[0]) {
|
|
140
|
+
case 0:
|
|
141
|
+
case 1:
|
|
142
|
+
t = op;
|
|
143
|
+
break;
|
|
144
|
+
case 4:
|
|
145
|
+
return _.label++, {
|
|
146
|
+
value: op[1],
|
|
147
|
+
done: !1
|
|
148
|
+
};
|
|
149
|
+
case 5:
|
|
150
|
+
_.label++, y = op[1], op = [
|
|
151
|
+
0
|
|
152
|
+
];
|
|
153
|
+
continue;
|
|
154
|
+
case 7:
|
|
155
|
+
op = _.ops.pop(), _.trys.pop();
|
|
156
|
+
continue;
|
|
157
|
+
default:
|
|
158
|
+
if (t = _.trys, !(t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
159
|
+
_ = 0;
|
|
160
|
+
continue;
|
|
161
|
+
}
|
|
162
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
163
|
+
_.label = op[1];
|
|
164
|
+
break;
|
|
165
|
+
}
|
|
166
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
167
|
+
_.label = t[1], t = op;
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
if (t && _.label < t[2]) {
|
|
171
|
+
_.label = t[2], _.ops.push(op);
|
|
172
|
+
break;
|
|
173
|
+
}
|
|
174
|
+
t[2] && _.ops.pop(), _.trys.pop();
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
op = body.call(thisArg, _);
|
|
178
|
+
} catch (e) {
|
|
179
|
+
op = [
|
|
180
|
+
6,
|
|
181
|
+
e
|
|
182
|
+
], y = 0;
|
|
183
|
+
} finally {
|
|
184
|
+
f = t = 0;
|
|
185
|
+
}
|
|
186
|
+
if (op[0] & 5) throw op[1];
|
|
187
|
+
return {
|
|
188
|
+
value: op[0] ? op[1] : void 0,
|
|
189
|
+
done: !0
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
}
|
|
82
193
|
var StyledImage = styled(RNImage, {
|
|
83
194
|
name: "Image"
|
|
84
195
|
}), hasWarned = !1, Image = StyledImage.styleable(function(inProps, ref) {
|
|
@@ -90,8 +201,8 @@ var StyledImage = styled(RNImage, {
|
|
|
90
201
|
var finalSource = typeof src == "string" ? _object_spread({
|
|
91
202
|
uri: src
|
|
92
203
|
}, isWeb && {
|
|
93
|
-
width: props.width,
|
|
94
|
-
height: props.height
|
|
204
|
+
width: props.width || (style == null ? void 0 : style.width),
|
|
205
|
+
height: props.height || (style == null ? void 0 : style.height)
|
|
95
206
|
}) : source ?? src;
|
|
96
207
|
if (finalSource && typeof finalSource == "object") {
|
|
97
208
|
if (!Array.isArray(finalSource) && typeof finalSource.uri == "number" && (finalSource = finalSource.uri, source && typeof source == "object" && !Array.isArray(source))) {
|
|
@@ -100,9 +211,59 @@ var StyledImage = styled(RNImage, {
|
|
|
100
211
|
var _height;
|
|
101
212
|
(_height = (_style1 = style).height) !== null && _height !== void 0 || (_style1.height = source.height);
|
|
102
213
|
}
|
|
103
|
-
|
|
214
|
+
process.env.NODE_ENV === "development" && process.env.TAMAGUI_IMAGE_CHECK_ERROR && useEffect(function() {
|
|
215
|
+
var run = function() {
|
|
216
|
+
return _run.apply(this, arguments);
|
|
217
|
+
};
|
|
218
|
+
function _run() {
|
|
219
|
+
return _run = _async_to_generator(function() {
|
|
220
|
+
var err;
|
|
221
|
+
return _ts_generator(this, function(_state) {
|
|
222
|
+
switch (_state.label) {
|
|
223
|
+
case 0:
|
|
224
|
+
if (typeof src != "string") return [
|
|
225
|
+
3,
|
|
226
|
+
4
|
|
227
|
+
];
|
|
228
|
+
_state.label = 1;
|
|
229
|
+
case 1:
|
|
230
|
+
return _state.trys.push([
|
|
231
|
+
1,
|
|
232
|
+
3,
|
|
233
|
+
,
|
|
234
|
+
4
|
|
235
|
+
]), [
|
|
236
|
+
4,
|
|
237
|
+
fetch(src).then(function(res) {
|
|
238
|
+
return res.text();
|
|
239
|
+
})
|
|
240
|
+
];
|
|
241
|
+
case 2:
|
|
242
|
+
return _state.sent(), [
|
|
243
|
+
3,
|
|
244
|
+
4
|
|
245
|
+
];
|
|
246
|
+
case 3:
|
|
247
|
+
return err = _state.sent(), console.error("Error loading image: ".concat(src), {
|
|
248
|
+
props
|
|
249
|
+
}), [
|
|
250
|
+
3,
|
|
251
|
+
4
|
|
252
|
+
];
|
|
253
|
+
case 4:
|
|
254
|
+
return [
|
|
255
|
+
2
|
|
256
|
+
];
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
}), _run.apply(this, arguments);
|
|
260
|
+
}
|
|
261
|
+
run();
|
|
262
|
+
}, [
|
|
263
|
+
src
|
|
264
|
+
]), finalSource.default && (finalSource = finalSource.default);
|
|
104
265
|
}
|
|
105
|
-
return /* @__PURE__ */ _jsx(
|
|
266
|
+
return /* @__PURE__ */ _jsx(RNImage, _object_spread({
|
|
106
267
|
ref,
|
|
107
268
|
source: finalSource,
|
|
108
269
|
style
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/Users/n8/tamagui/packages/image/src/Image.tsx"],
|
|
4
|
-
"mappings": ";AAAA,SAASA,aAAa;AAQtB,SAASC,QAAQC,wBAAwB;
|
|
5
|
-
"names": ["isWeb", "styled", "usePropsAndStyle", "Image", "RNImage", "StyledImage", "name", "hasWarned", "styleable", "inProps", "ref", "props", "style", "src", "source", "rest", "process", "env", "NODE_ENV", "width", "height", "console", "warn", "finalSource", "uri", "Array", "isArray", "getSize", "getSizeWithHeaders", "prefetch", "prefetchWithMetadata", "abortPrefetch", "queryCache"]
|
|
4
|
+
"mappings": "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",
|
|
5
|
+
"names": ["isWeb", "styled", "usePropsAndStyle", "useEffect", "Image", "RNImage", "StyledImage", "name", "hasWarned", "styleable", "inProps", "ref", "props", "style", "src", "source", "rest", "process", "env", "NODE_ENV", "width", "height", "console", "warn", "finalSource", "uri", "Array", "isArray", "TAMAGUI_IMAGE_CHECK_ERROR", "run", "err", "fetch", "then", "res", "text", "error", "getSize", "getSizeWithHeaders", "prefetch", "prefetchWithMetadata", "abortPrefetch", "queryCache"]
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/image",
|
|
3
|
-
"version": "1.101.
|
|
3
|
+
"version": "1.101.1",
|
|
4
4
|
"sideEffects": [
|
|
5
5
|
"*.css"
|
|
6
6
|
],
|
|
@@ -32,15 +32,14 @@
|
|
|
32
32
|
}
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
35
|
-
"@tamagui/constants": "1.101.
|
|
36
|
-
"@tamagui/core": "1.101.
|
|
35
|
+
"@tamagui/constants": "1.101.1",
|
|
36
|
+
"@tamagui/core": "1.101.1"
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|
|
39
|
-
"react": "*"
|
|
40
|
-
"react-native": "*"
|
|
39
|
+
"react": "*"
|
|
41
40
|
},
|
|
42
41
|
"devDependencies": {
|
|
43
|
-
"@tamagui/build": "1.101.
|
|
42
|
+
"@tamagui/build": "1.101.1",
|
|
44
43
|
"react": "^18.2.0",
|
|
45
44
|
"react-native": "0.74.1"
|
|
46
45
|
},
|
package/src/Image.tsx
CHANGED
|
@@ -7,7 +7,7 @@ import type {
|
|
|
7
7
|
ThemeValueFallback,
|
|
8
8
|
} from '@tamagui/core'
|
|
9
9
|
import { styled, usePropsAndStyle } from '@tamagui/core'
|
|
10
|
-
import type
|
|
10
|
+
import { useEffect, type FC } from 'react'
|
|
11
11
|
import { Image as RNImage } from 'react-native'
|
|
12
12
|
|
|
13
13
|
const StyledImage = styled(RNImage, {
|
|
@@ -71,7 +71,13 @@ export const Image = StyledImage.styleable<ImageProps>((inProps, ref) => {
|
|
|
71
71
|
|
|
72
72
|
let finalSource =
|
|
73
73
|
typeof src === 'string'
|
|
74
|
-
? {
|
|
74
|
+
? {
|
|
75
|
+
uri: src,
|
|
76
|
+
...(isWeb && {
|
|
77
|
+
width: props.width || style?.width,
|
|
78
|
+
height: props.height || style?.height,
|
|
79
|
+
}),
|
|
80
|
+
}
|
|
75
81
|
: source ?? src
|
|
76
82
|
|
|
77
83
|
if (finalSource && typeof finalSource === 'object') {
|
|
@@ -90,6 +96,23 @@ export const Image = StyledImage.styleable<ImageProps>((inProps, ref) => {
|
|
|
90
96
|
}
|
|
91
97
|
}
|
|
92
98
|
|
|
99
|
+
if (process.env.NODE_ENV === 'development' && process.env.TAMAGUI_IMAGE_CHECK_ERROR) {
|
|
100
|
+
// lets add an onload timeout and warning if it fails to load in console
|
|
101
|
+
useEffect(() => {
|
|
102
|
+
async function run() {
|
|
103
|
+
if (typeof src === 'string') {
|
|
104
|
+
try {
|
|
105
|
+
await fetch(src).then((res) => res.text())
|
|
106
|
+
} catch (err) {
|
|
107
|
+
console.error(`Error loading image: ${src}`, { props })
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
run()
|
|
113
|
+
}, [src])
|
|
114
|
+
}
|
|
115
|
+
|
|
93
116
|
// require compat across native/web
|
|
94
117
|
if (finalSource['default']) {
|
|
95
118
|
finalSource = finalSource['default']
|
|
@@ -97,7 +120,7 @@ export const Image = StyledImage.styleable<ImageProps>((inProps, ref) => {
|
|
|
97
120
|
}
|
|
98
121
|
|
|
99
122
|
// must set defaultSource to allow SSR, default it to the same as src
|
|
100
|
-
return <
|
|
123
|
+
return <RNImage ref={ref} source={finalSource} style={style} {...(rest as any)} />
|
|
101
124
|
}) as any as ImageType
|
|
102
125
|
|
|
103
126
|
Image.getSize = RNImage.getSize
|
package/types/Image.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { GetProps, RadiusTokens, SizeTokens, StackProps, ThemeValueFallback } from '@tamagui/core';
|
|
2
|
-
import type
|
|
2
|
+
import { type FC } from 'react';
|
|
3
3
|
import { Image as RNImage } from 'react-native';
|
|
4
4
|
declare const StyledImage: import("@tamagui/core").TamaguiComponent<import("@tamagui/core").TamaDefer, RNImage, import("@tamagui/core").TamaguiComponentPropsBaseBase & import("react-native").ImageProps, import("@tamagui/core").StackStyleBase, {}, import("@tamagui/core").StaticConfigPublic>;
|
|
5
5
|
type StyledImageProps = Omit<GetProps<typeof StyledImage>, 'borderRadius'> & {
|
package/types/Image.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../src/Image.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,UAAU,EACV,kBAAkB,EACnB,MAAM,eAAe,CAAA;AAEtB,OAAO,KAAK,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"Image.d.ts","sourceRoot":"","sources":["../src/Image.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,UAAU,EACV,kBAAkB,EACnB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAa,KAAK,EAAE,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,MAAM,cAAc,CAAA;AAE/C,QAAA,MAAM,WAAW,yQAEf,CAAA;AAEF,KAAK,gBAAgB,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,WAAW,CAAC,EAAE,cAAc,CAAC,GAAG;IAC3E,YAAY,CAAC,EAAE,YAAY,CAAA;CAC5B,CAAA;AAED,KAAK,SAAS,GAAG,IAAI,CACnB,gBAAgB,EAChB,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,CACzD,GAAG;IACF,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,kBAAkB,CAAA;IACzD,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,kBAAkB,CAAA;IAE1D;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IACzC,wCAAwC;IACxC,UAAU,CAAC,EAAE,gBAAgB,CAAC,YAAY,CAAC,CAAA;IAC3C,SAAS,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAA;CAC7C,CAAA;AAED,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,SAAS,CAAC,CAAA;AAEtE,KAAK,WAAW,GAAG,OAAO,OAAO,CAAA;AAEjC,KAAK,SAAS,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG;IAChC,OAAO,EAAE,WAAW,CAAC,SAAS,CAAC,CAAA;IAC/B,kBAAkB,EAAE,WAAW,CAAC,oBAAoB,CAAC,CAAA;IACrD,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,CAAA;IACjC,oBAAoB,EAAE,WAAW,CAAC,sBAAsB,CAAC,CAAA;IACzD,aAAa,EAAE,WAAW,CAAC,eAAe,CAAC,CAAA;IAC3C,UAAU,EAAE,WAAW,CAAC,YAAY,CAAC,CAAA;CACtC,CAAA;AAID,eAAO,MAAM,KAAK,EAwEL,SAAS,CAAA"}
|