@unif/react-native-design 0.32.2 → 0.33.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.
Files changed (64) hide show
  1. package/lib/module/components/ui/Avatar/Avatar.js +3 -3
  2. package/lib/module/components/ui/Avatar/Avatar.js.map +1 -1
  3. package/lib/module/components/ui/DrawerHeader/DrawerHeader.js +3 -3
  4. package/lib/module/components/ui/DrawerHeader/DrawerHeader.js.map +1 -1
  5. package/lib/module/components/ui/TextField/TextFieldBase.js +7 -1
  6. package/lib/module/components/ui/TextField/TextFieldBase.js.map +1 -1
  7. package/lib/module/components/ui/TextField/constants.js +2 -1
  8. package/lib/module/components/ui/TextField/constants.js.map +1 -1
  9. package/lib/module/components/ui/TextField/styles.js +5 -0
  10. package/lib/module/components/ui/TextField/styles.js.map +1 -1
  11. package/lib/module/components/ui/TextField/useMultilineLayout.js +4 -4
  12. package/lib/module/components/ui/TextField/useMultilineLayout.js.map +1 -1
  13. package/lib/module/components/ui/TextField/useMultilineLayout.web.js +4 -4
  14. package/lib/module/components/ui/TextField/useMultilineLayout.web.js.map +1 -1
  15. package/lib/module/components/ui/Textarea/Textarea.js +7 -3
  16. package/lib/module/components/ui/Textarea/Textarea.js.map +1 -1
  17. package/lib/module/components/ui/Thumbnail/Thumbnail.js +3 -3
  18. package/lib/module/components/ui/Thumbnail/Thumbnail.js.map +1 -1
  19. package/lib/module/components/ui/shared/ImageAttempt.js.map +1 -1
  20. package/lib/module/components/ui/shared/selectImageAttemptSource.shared.js +6 -5
  21. package/lib/module/components/ui/shared/selectImageAttemptSource.shared.js.map +1 -1
  22. package/lib/module/components/ui/shared/useImageSource.js +11 -0
  23. package/lib/module/components/ui/shared/useImageSource.js.map +1 -0
  24. package/lib/module/utils/imageSource.js +47 -13
  25. package/lib/module/utils/imageSource.js.map +1 -1
  26. package/lib/typescript/src/components/ui/TextField/TextFieldBase.d.ts.map +1 -1
  27. package/lib/typescript/src/components/ui/TextField/constants.d.ts +1 -0
  28. package/lib/typescript/src/components/ui/TextField/constants.d.ts.map +1 -1
  29. package/lib/typescript/src/components/ui/TextField/styles.d.ts +5 -0
  30. package/lib/typescript/src/components/ui/TextField/styles.d.ts.map +1 -1
  31. package/lib/typescript/src/components/ui/TextField/types.d.ts +3 -0
  32. package/lib/typescript/src/components/ui/TextField/types.d.ts.map +1 -1
  33. package/lib/typescript/src/components/ui/TextField/useMultilineLayout.d.ts +1 -1
  34. package/lib/typescript/src/components/ui/TextField/useMultilineLayout.d.ts.map +1 -1
  35. package/lib/typescript/src/components/ui/TextField/useMultilineLayout.web.d.ts +1 -1
  36. package/lib/typescript/src/components/ui/TextField/useMultilineLayout.web.d.ts.map +1 -1
  37. package/lib/typescript/src/components/ui/Textarea/Textarea.d.ts +1 -1
  38. package/lib/typescript/src/components/ui/Textarea/Textarea.d.ts.map +1 -1
  39. package/lib/typescript/src/components/ui/Textarea/types.d.ts +4 -2
  40. package/lib/typescript/src/components/ui/Textarea/types.d.ts.map +1 -1
  41. package/lib/typescript/src/components/ui/shared/ImageAttempt.d.ts +3 -2
  42. package/lib/typescript/src/components/ui/shared/ImageAttempt.d.ts.map +1 -1
  43. package/lib/typescript/src/components/ui/shared/selectImageAttemptSource.shared.d.ts +3 -2
  44. package/lib/typescript/src/components/ui/shared/selectImageAttemptSource.shared.d.ts.map +1 -1
  45. package/lib/typescript/src/components/ui/shared/useImageSource.d.ts +6 -0
  46. package/lib/typescript/src/components/ui/shared/useImageSource.d.ts.map +1 -0
  47. package/lib/typescript/src/utils/imageSource.d.ts +3 -2
  48. package/lib/typescript/src/utils/imageSource.d.ts.map +1 -1
  49. package/package.json +1 -1
  50. package/src/components/ui/Avatar/Avatar.tsx +3 -3
  51. package/src/components/ui/DrawerHeader/DrawerHeader.tsx +3 -3
  52. package/src/components/ui/TextField/TextFieldBase.tsx +13 -1
  53. package/src/components/ui/TextField/constants.ts +2 -1
  54. package/src/components/ui/TextField/styles.ts +5 -0
  55. package/src/components/ui/TextField/types.ts +3 -0
  56. package/src/components/ui/TextField/useMultilineLayout.ts +3 -3
  57. package/src/components/ui/TextField/useMultilineLayout.web.ts +4 -5
  58. package/src/components/ui/Textarea/Textarea.tsx +8 -3
  59. package/src/components/ui/Textarea/types.ts +4 -2
  60. package/src/components/ui/Thumbnail/Thumbnail.tsx +3 -3
  61. package/src/components/ui/shared/ImageAttempt.tsx +3 -2
  62. package/src/components/ui/shared/selectImageAttemptSource.shared.ts +7 -5
  63. package/src/components/ui/shared/useImageSource.ts +8 -0
  64. package/src/utils/imageSource.ts +78 -15
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
 
3
3
  const hasOwn = (value, key) => Object.prototype.hasOwnProperty.call(value, key);
4
- function valid(snapshot, canonical) {
4
+ function valid(snapshot, canonical, children) {
5
5
  return {
6
6
  valid: true,
7
7
  snapshot,
8
- canonical
8
+ canonical,
9
+ children
9
10
  };
10
11
  }
11
12
  function invalid(kind) {
@@ -14,7 +15,7 @@ function invalid(kind) {
14
15
  canonical: `invalid:${kind}`
15
16
  };
16
17
  }
17
- function visitArray(value, keys, seen) {
18
+ function visitArray(value, keys, seen, previous) {
18
19
  if (!keys.includes('length')) return invalid('descriptor');
19
20
  const lengthDescriptor = Reflect.getOwnPropertyDescriptor(value, 'length');
20
21
  if (lengthDescriptor === undefined || lengthDescriptor.enumerable || !hasOwn(lengthDescriptor, 'value') || typeof lengthDescriptor.value !== 'number' || !Number.isInteger(lengthDescriptor.value) || lengthDescriptor.value < 0) {
@@ -25,6 +26,9 @@ function visitArray(value, keys, seen) {
25
26
  const keySet = new Set(keys);
26
27
  const parts = [];
27
28
  const snapshot = [];
29
+ const children = new Map();
30
+ const previousChildren = previous?.valid ? previous.children : undefined;
31
+ let unchanged = previous?.valid === true && Array.isArray(previous.snapshot) && previousChildren?.size === length;
28
32
  let allValid = true;
29
33
  for (let index = 0; index < length; index += 1) {
30
34
  const key = String(index);
@@ -33,7 +37,10 @@ function visitArray(value, keys, seen) {
33
37
  if (descriptor === undefined || !descriptor.enumerable || !hasOwn(descriptor, 'value')) {
34
38
  return invalid('descriptor');
35
39
  }
36
- const item = visit(descriptor.value, seen);
40
+ const priorItem = previousChildren?.get(key);
41
+ const item = visit(descriptor.value, seen, priorItem);
42
+ children.set(key, item);
43
+ unchanged = unchanged && item === priorItem;
37
44
  parts.push(item.canonical);
38
45
  if (item.valid) {
39
46
  snapshot.push(item.snapshot);
@@ -41,22 +48,29 @@ function visitArray(value, keys, seen) {
41
48
  allValid = false;
42
49
  }
43
50
  }
51
+ if (allValid && unchanged && previous?.valid) return previous;
44
52
  const canonical = `array:[${parts.join(',')}]`;
45
- return allValid ? valid(Object.freeze(snapshot), canonical) : {
53
+ return allValid ? valid(Object.freeze(snapshot), canonical, children) : {
46
54
  valid: false,
47
55
  canonical
48
56
  };
49
57
  }
50
- function visitObject(value, keys, seen) {
58
+ function visitObject(value, keys, seen, previous) {
51
59
  const snapshot = {};
52
60
  const parts = [];
61
+ const children = new Map();
62
+ const previousChildren = previous?.valid ? previous.children : undefined;
63
+ let unchanged = previous?.valid === true && previous.snapshot !== null && typeof previous.snapshot === 'object' && !Array.isArray(previous.snapshot) && previousChildren?.size === keys.length;
53
64
  let allValid = true;
54
65
  for (const key of [...keys].sort()) {
55
66
  const descriptor = Reflect.getOwnPropertyDescriptor(value, key);
56
67
  if (descriptor === undefined) return invalid('descriptor');
57
68
  if (!descriptor.enumerable) return invalid('non-enumerable');
58
69
  if (!hasOwn(descriptor, 'value')) return invalid('accessor');
59
- const item = visit(descriptor.value, seen);
70
+ const priorItem = previousChildren?.get(key);
71
+ const item = visit(descriptor.value, seen, priorItem);
72
+ children.set(key, item);
73
+ unchanged = unchanged && item === priorItem;
60
74
  parts.push(`${JSON.stringify(key)}:${item.canonical}`);
61
75
  if (item.valid) {
62
76
  Object.defineProperty(snapshot, key, {
@@ -69,8 +83,9 @@ function visitObject(value, keys, seen) {
69
83
  allValid = false;
70
84
  }
71
85
  }
86
+ if (allValid && unchanged && previous?.valid) return previous;
72
87
  const canonical = `object:{${parts.join(',')}}`;
73
- return allValid ? valid(Object.freeze(snapshot), canonical) : {
88
+ return allValid ? valid(Object.freeze(snapshot), canonical, children) : {
74
89
  valid: false,
75
90
  canonical
76
91
  };
@@ -80,7 +95,10 @@ function visitObject(value, keys, seen) {
80
95
  * 只从 own data descriptor 读取一次,绝不执行 getter。snapshot 与 canonical
81
96
  * key 因而来自同一份值;任何 descriptor / Proxy 异常都失败关闭。
82
97
  */
83
- function visit(value, seen) {
98
+ function visit(value, seen, previous) {
99
+ // Objects are always re-read through their descriptors: callers can mutate
100
+ // an existing source or supply a Proxy. Only observed primitive values are reused.
101
+ if ((value === null || typeof value !== 'object') && previous?.valid && Object.is(previous.snapshot, value)) return previous;
84
102
  if (value === undefined) return valid(undefined, 'undefined:');
85
103
  if (value === null) return valid(null, 'null:');
86
104
  switch (typeof value) {
@@ -110,7 +128,7 @@ function visit(value, seen) {
110
128
  }
111
129
  seen.add(value);
112
130
  try {
113
- return isArray ? visitArray(value, keys, seen) : visitObject(value, keys, seen);
131
+ return isArray ? visitArray(value, keys, seen, previous) : visitObject(value, keys, seen, previous);
114
132
  } finally {
115
133
  seen.delete(value);
116
134
  }
@@ -118,9 +136,9 @@ function visit(value, seen) {
118
136
  return invalid('exception');
119
137
  }
120
138
  }
121
- function snapshotValue(value) {
139
+ function snapshotValue(value, previous) {
122
140
  try {
123
- return visit(value, new WeakSet());
141
+ return visit(value, new WeakSet(), previous);
124
142
  } catch {
125
143
  return invalid('exception');
126
144
  }
@@ -174,7 +192,9 @@ function asImageSource(snapshot) {
174
192
  * 与 semantic key。调用方必须把同一返回值里的 source / key 一起交给 attempt。
175
193
  */
176
194
  export function resolveImageSource(source) {
177
- const result = snapshotValue(source);
195
+ return resolveSnapshot(snapshotValue(source));
196
+ }
197
+ function resolveSnapshot(result) {
178
198
  if (!result.valid) return undefined;
179
199
  const snapshot = asImageSource(result.snapshot);
180
200
  if (snapshot === undefined) return undefined;
@@ -183,6 +203,20 @@ export function resolveImageSource(source) {
183
203
  key: `image-source:${result.canonical}`
184
204
  });
185
205
  }
206
+
207
+ /** One resolver belongs to one mounted media component; only its latest tree is kept. */
208
+ export function createImageSourceResolver() {
209
+ let previous;
210
+ let resolved;
211
+ return source => {
212
+ const next = snapshotValue(source, previous);
213
+ if (next !== previous) {
214
+ resolved = resolveSnapshot(next);
215
+ previous = resolved === undefined ? undefined : next;
216
+ }
217
+ return resolved;
218
+ };
219
+ }
186
220
  export function imageSourceKey(source) {
187
221
  return `image-source:${snapshotValue(source).canonical}`;
188
222
  }
@@ -1 +1 @@
1
- {"version":3,"names":["hasOwn","value","key","Object","prototype","hasOwnProperty","call","valid","snapshot","canonical","invalid","kind","visitArray","keys","seen","includes","lengthDescriptor","Reflect","getOwnPropertyDescriptor","undefined","enumerable","Number","isInteger","length","keySet","Set","parts","allValid","index","String","has","descriptor","item","visit","push","join","freeze","visitObject","sort","JSON","stringify","defineProperty","configurable","writable","isFinite","isArray","Array","ownKeys","add","delete","snapshotValue","WeakSet","canonicalSourceValue","URI_STRING_FIELDS","CACHE_POLICIES","isSnapshotObject","isValidHeaders","every","isValidUriSource","uri","trim","field","fieldValue","headers","cache","asImageSource","resolveImageSource","source","result","imageSourceKey","isValidImageSource"],"sourceRoot":"../../../src","sources":["utils/imageSource.ts"],"mappings":";;AAiCA,MAAMA,MAAM,GAAGA,CAACC,KAAa,EAAEC,GAAgB,KAC7CC,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACL,KAAK,EAAEC,GAAG,CAAC;AAElD,SAASK,KAAKA,CAACC,QAAuB,EAAEC,SAAiB,EAAkB;EACzE,OAAO;IAAEF,KAAK,EAAE,IAAI;IAAEC,QAAQ;IAAEC;EAAU,CAAC;AAC7C;AAEA,SAASC,OAAOA,CAACC,IAAY,EAAkB;EAC7C,OAAO;IAAEJ,KAAK,EAAE,KAAK;IAAEE,SAAS,EAAE,WAAWE,IAAI;EAAG,CAAC;AACvD;AAEA,SAASC,UAAUA,CACjBX,KAAa,EACbY,IAAuB,EACvBC,IAAqB,EACL;EAChB,IAAI,CAACD,IAAI,CAACE,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAOL,OAAO,CAAC,YAAY,CAAC;EAE1D,MAAMM,gBAAgB,GAAGC,OAAO,CAACC,wBAAwB,CAACjB,KAAK,EAAE,QAAQ,CAAC;EAC1E,IACEe,gBAAgB,KAAKG,SAAS,IAC9BH,gBAAgB,CAACI,UAAU,IAC3B,CAACpB,MAAM,CAACgB,gBAAgB,EAAE,OAAO,CAAC,IAClC,OAAOA,gBAAgB,CAACf,KAAK,KAAK,QAAQ,IAC1C,CAACoB,MAAM,CAACC,SAAS,CAACN,gBAAgB,CAACf,KAAK,CAAC,IACzCe,gBAAgB,CAACf,KAAK,GAAG,CAAC,EAC1B;IACA,OAAOS,OAAO,CAAC,YAAY,CAAC;EAC9B;EAEA,MAAMa,MAAM,GAAGP,gBAAgB,CAACf,KAAK;EACrC,IAAIY,IAAI,CAACU,MAAM,KAAKA,MAAM,GAAG,CAAC,EAAE,OAAOb,OAAO,CAAC,YAAY,CAAC;EAE5D,MAAMc,MAAM,GAAG,IAAIC,GAAG,CAACZ,IAAI,CAAC;EAC5B,MAAMa,KAAe,GAAG,EAAE;EAC1B,MAAMlB,QAAyB,GAAG,EAAE;EACpC,IAAImB,QAAQ,GAAG,IAAI;EAEnB,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGL,MAAM,EAAEK,KAAK,IAAI,CAAC,EAAE;IAC9C,MAAM1B,GAAG,GAAG2B,MAAM,CAACD,KAAK,CAAC;IACzB,IAAI,CAACJ,MAAM,CAACM,GAAG,CAAC5B,GAAG,CAAC,EAAE,OAAOQ,OAAO,CAAC,YAAY,CAAC;IAElD,MAAMqB,UAAU,GAAGd,OAAO,CAACC,wBAAwB,CAACjB,KAAK,EAAEC,GAAG,CAAC;IAC/D,IACE6B,UAAU,KAAKZ,SAAS,IACxB,CAACY,UAAU,CAACX,UAAU,IACtB,CAACpB,MAAM,CAAC+B,UAAU,EAAE,OAAO,CAAC,EAC5B;MACA,OAAOrB,OAAO,CAAC,YAAY,CAAC;IAC9B;IAEA,MAAMsB,IAAI,GAAGC,KAAK,CAACF,UAAU,CAAC9B,KAAK,EAAEa,IAAI,CAAC;IAC1CY,KAAK,CAACQ,IAAI,CAACF,IAAI,CAACvB,SAAS,CAAC;IAC1B,IAAIuB,IAAI,CAACzB,KAAK,EAAE;MACdC,QAAQ,CAAC0B,IAAI,CAACF,IAAI,CAACxB,QAAQ,CAAC;IAC9B,CAAC,MAAM;MACLmB,QAAQ,GAAG,KAAK;IAClB;EACF;EAEA,MAAMlB,SAAS,GAAG,UAAUiB,KAAK,CAACS,IAAI,CAAC,GAAG,CAAC,GAAG;EAC9C,OAAOR,QAAQ,GACXpB,KAAK,CAACJ,MAAM,CAACiC,MAAM,CAAC5B,QAAQ,CAAC,EAAEC,SAAS,CAAC,GACzC;IAAEF,KAAK,EAAE,KAAK;IAAEE;EAAU,CAAC;AACjC;AAEA,SAAS4B,WAAWA,CAClBpC,KAAa,EACbY,IAAuB,EACvBC,IAAqB,EACL;EAChB,MAAMN,QAAuC,GAAG,CAAC,CAAC;EAClD,MAAMkB,KAAe,GAAG,EAAE;EAC1B,IAAIC,QAAQ,GAAG,IAAI;EAEnB,KAAK,MAAMzB,GAAG,IAAI,CAAC,GAAGW,IAAI,CAAC,CAACyB,IAAI,CAAC,CAAC,EAAE;IAClC,MAAMP,UAAU,GAAGd,OAAO,CAACC,wBAAwB,CAACjB,KAAK,EAAEC,GAAG,CAAC;IAC/D,IAAI6B,UAAU,KAAKZ,SAAS,EAAE,OAAOT,OAAO,CAAC,YAAY,CAAC;IAC1D,IAAI,CAACqB,UAAU,CAACX,UAAU,EAAE,OAAOV,OAAO,CAAC,gBAAgB,CAAC;IAC5D,IAAI,CAACV,MAAM,CAAC+B,UAAU,EAAE,OAAO,CAAC,EAAE,OAAOrB,OAAO,CAAC,UAAU,CAAC;IAE5D,MAAMsB,IAAI,GAAGC,KAAK,CAACF,UAAU,CAAC9B,KAAK,EAAEa,IAAI,CAAC;IAC1CY,KAAK,CAACQ,IAAI,CAAC,GAAGK,IAAI,CAACC,SAAS,CAACtC,GAAG,CAAC,IAAI8B,IAAI,CAACvB,SAAS,EAAE,CAAC;IACtD,IAAIuB,IAAI,CAACzB,KAAK,EAAE;MACdJ,MAAM,CAACsC,cAAc,CAACjC,QAAQ,EAAEN,GAAG,EAAE;QACnCwC,YAAY,EAAE,KAAK;QACnBtB,UAAU,EAAE,IAAI;QAChBnB,KAAK,EAAE+B,IAAI,CAACxB,QAAQ;QACpBmC,QAAQ,EAAE;MACZ,CAAC,CAAC;IACJ,CAAC,MAAM;MACLhB,QAAQ,GAAG,KAAK;IAClB;EACF;EAEA,MAAMlB,SAAS,GAAG,WAAWiB,KAAK,CAACS,IAAI,CAAC,GAAG,CAAC,GAAG;EAC/C,OAAOR,QAAQ,GACXpB,KAAK,CAACJ,MAAM,CAACiC,MAAM,CAAC5B,QAAQ,CAAC,EAAEC,SAAS,CAAC,GACzC;IAAEF,KAAK,EAAE,KAAK;IAAEE;EAAU,CAAC;AACjC;;AAEA;AACA;AACA;AACA;AACA,SAASwB,KAAKA,CAAChC,KAAc,EAAEa,IAAqB,EAAkB;EACpE,IAAIb,KAAK,KAAKkB,SAAS,EAAE,OAAOZ,KAAK,CAACY,SAAS,EAAE,YAAY,CAAC;EAC9D,IAAIlB,KAAK,KAAK,IAAI,EAAE,OAAOM,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC;EAE/C,QAAQ,OAAON,KAAK;IAClB,KAAK,QAAQ;MACX,OAAOM,KAAK,CAACN,KAAK,EAAE,UAAUsC,IAAI,CAACC,SAAS,CAACvC,KAAK,CAAC,EAAE,CAAC;IACxD,KAAK,QAAQ;MACX,OAAOoB,MAAM,CAACuB,QAAQ,CAAC3C,KAAK,CAAC,GACzBM,KAAK,CAACN,KAAK,EAAE,UAAUA,KAAK,EAAE,CAAC,GAC/BS,OAAO,CAAC,QAAQ,CAAC;IACvB,KAAK,SAAS;MACZ,OAAOH,KAAK,CAACN,KAAK,EAAE,WAAW4B,MAAM,CAAC5B,KAAK,CAAC,EAAE,CAAC;IACjD,KAAK,UAAU;IACf,KAAK,QAAQ;IACb,KAAK,QAAQ;MACX,OAAOS,OAAO,CAAC,OAAOT,KAAK,CAAC;IAC9B,KAAK,QAAQ;MACX;IACF,KAAK,WAAW;MACd,OAAOM,KAAK,CAACY,SAAS,EAAE,YAAY,CAAC;EACzC;EAEA,IAAI;IACF,IAAIL,IAAI,CAACgB,GAAG,CAAC7B,KAAK,CAAC,EAAE,OAAOS,OAAO,CAAC,OAAO,CAAC;IAE5C,MAAMmC,OAAO,GAAGC,KAAK,CAACD,OAAO,CAAC5C,KAAK,CAAC;IACpC,MAAM8C,OAAO,GAAG9B,OAAO,CAAC8B,OAAO,CAAC9C,KAAK,CAAC;IACtC,MAAMY,IAAc,GAAG,EAAE;IACzB,KAAK,MAAMX,GAAG,IAAI6C,OAAO,EAAE;MACzB,IAAI,OAAO7C,GAAG,KAAK,QAAQ,EAAE,OAAOQ,OAAO,CAAC,YAAY,CAAC;MACzDG,IAAI,CAACqB,IAAI,CAAChC,GAAG,CAAC;IAChB;IAEAY,IAAI,CAACkC,GAAG,CAAC/C,KAAK,CAAC;IACf,IAAI;MACF,OAAO4C,OAAO,GACVjC,UAAU,CAACX,KAAK,EAAEY,IAAI,EAAEC,IAAI,CAAC,GAC7BuB,WAAW,CAACpC,KAAK,EAAEY,IAAI,EAAEC,IAAI,CAAC;IACpC,CAAC,SAAS;MACRA,IAAI,CAACmC,MAAM,CAAChD,KAAK,CAAC;IACpB;EACF,CAAC,CAAC,MAAM;IACN,OAAOS,OAAO,CAAC,WAAW,CAAC;EAC7B;AACF;AAEA,SAASwC,aAAaA,CAACjD,KAAc,EAAkB;EACrD,IAAI;IACF,OAAOgC,KAAK,CAAChC,KAAK,EAAE,IAAIkD,OAAO,CAAS,CAAC,CAAC;EAC5C,CAAC,CAAC,MAAM;IACN,OAAOzC,OAAO,CAAC,WAAW,CAAC;EAC7B;AACF;AAEA,OAAO,SAAS0C,oBAAoBA,CAACnD,KAAc,EAAU;EAC3D,OAAOiD,aAAa,CAACjD,KAAK,CAAC,CAACQ,SAAS;AACvC;AAEA,MAAM4C,iBAAiB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAU;AAC/D,MAAMC,cAAc,GAAG,IAAI7B,GAAG,CAAC,CAC7B,SAAS,EACT,QAAQ,EACR,aAAa,EACb,gBAAgB,CACjB,CAAC;AAEF,SAAS8B,gBAAgBA,CAACtD,KAAoB,EAA2B;EACvE,OAAOA,KAAK,KAAK,IAAI,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,CAAC6C,KAAK,CAACD,OAAO,CAAC5C,KAAK,CAAC;AAC7E;AAEA,SAASuD,cAAcA,CAACvD,KAAoB,EAAW;EACrD,IAAIA,KAAK,KAAKkB,SAAS,EAAE,OAAO,IAAI;EACpC,IAAI,CAACoC,gBAAgB,CAACtD,KAAK,CAAC,EAAE,OAAO,KAAK;EAC1C,OAAOE,MAAM,CAACU,IAAI,CAACZ,KAAK,CAAC,CAACwD,KAAK,CAAEvD,GAAG,IAAK,OAAOD,KAAK,CAACC,GAAG,CAAC,KAAK,QAAQ,CAAC;AAC1E;AAEA,SAASwD,gBAAgBA,CAACzD,KAAoB,EAAW;EACvD,IAAI,CAACsD,gBAAgB,CAACtD,KAAK,CAAC,IAAI,CAACD,MAAM,CAACC,KAAK,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK;EAEnE,MAAM0D,GAAG,GAAG1D,KAAK,CAAC0D,GAAG;EACrB,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAIA,GAAG,CAACC,IAAI,CAAC,CAAC,CAACrC,MAAM,KAAK,CAAC,EAAE,OAAO,KAAK;EAEpE,KAAK,MAAMsC,KAAK,IAAIR,iBAAiB,EAAE;IACrC,MAAMS,UAAU,GAAG7D,KAAK,CAAC4D,KAAK,CAAC;IAC/B,IAAIC,UAAU,KAAK3C,SAAS,IAAI,OAAO2C,UAAU,KAAK,QAAQ,EAAE;MAC9D,OAAO,KAAK;IACd;EACF;EAEA,IAAI,CAACN,cAAc,CAACvD,KAAK,CAAC8D,OAAO,CAAC,EAAE,OAAO,KAAK;EAEhD,MAAMC,KAAK,GAAG/D,KAAK,CAAC+D,KAAK;EACzB,IAAIA,KAAK,KAAK7C,SAAS,IAAI,CAACmC,cAAc,CAACxB,GAAG,CAACkC,KAAe,CAAC,EAAE,OAAO,KAAK;EAE7E,KAAK,MAAMH,KAAK,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAW;IACzD,MAAMC,UAAU,GAAG7D,KAAK,CAAC4D,KAAK,CAAC;IAC/B,IACEC,UAAU,KAAK3C,SAAS,KACvB,OAAO2C,UAAU,KAAK,QAAQ,IAAI,CAACzC,MAAM,CAACuB,QAAQ,CAACkB,UAAU,CAAC,CAAC,EAChE;MACA,OAAO,KAAK;IACd;EACF;EAEA,OAAO,IAAI;AACb;AAEA,SAASG,aAAaA,CACpBzD,QAAuB,EACU;EACjC,IAAI,OAAOA,QAAQ,KAAK,QAAQ,EAAE;IAChC,OAAOa,MAAM,CAACuB,QAAQ,CAACpC,QAAQ,CAAC,IAC9BA,QAAQ,GAAG,CAAC,IACZa,MAAM,CAACC,SAAS,CAACd,QAAQ,CAAC,GACxBA,QAAQ,GACRW,SAAS;EACf;EAEA,IAAI2B,KAAK,CAACD,OAAO,CAACrC,QAAQ,CAAC,EAAE;IAC3B,OAAOA,QAAQ,CAACe,MAAM,GAAG,CAAC,IAAIf,QAAQ,CAACiD,KAAK,CAACC,gBAAgB,CAAC,GACzDlD,QAAQ,GACTW,SAAS;EACf;EAEA,OAAOuC,gBAAgB,CAAClD,QAAQ,CAAC,GAC5BA,QAAQ,GACTW,SAAS;AACf;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAAS+C,kBAAkBA,CAChCC,MAAe,EACkB;EACjC,MAAMC,MAAM,GAAGlB,aAAa,CAACiB,MAAM,CAAC;EACpC,IAAI,CAACC,MAAM,CAAC7D,KAAK,EAAE,OAAOY,SAAS;EAEnC,MAAMX,QAAQ,GAAGyD,aAAa,CAACG,MAAM,CAAC5D,QAAQ,CAAC;EAC/C,IAAIA,QAAQ,KAAKW,SAAS,EAAE,OAAOA,SAAS;EAE5C,OAAOhB,MAAM,CAACiC,MAAM,CAAC;IACnB+B,MAAM,EAAE3D,QAAQ;IAChBN,GAAG,EAAE,gBAAgBkE,MAAM,CAAC3D,SAAS;EACvC,CAAC,CAAC;AACJ;AAEA,OAAO,SAAS4D,cAAcA,CAC5BF,MAAuC,EAC/B;EACR,OAAO,gBAAgBjB,aAAa,CAACiB,MAAM,CAAC,CAAC1D,SAAS,EAAE;AAC1D;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAAS6D,kBAAkBA,CAChCH,MAAe,EACgB;EAC/B,OAAOD,kBAAkB,CAACC,MAAM,CAAC,KAAKhD,SAAS;AACjD","ignoreList":[]}
1
+ {"version":3,"names":["hasOwn","value","key","Object","prototype","hasOwnProperty","call","valid","snapshot","canonical","children","invalid","kind","visitArray","keys","seen","previous","includes","lengthDescriptor","Reflect","getOwnPropertyDescriptor","undefined","enumerable","Number","isInteger","length","keySet","Set","parts","Map","previousChildren","unchanged","Array","isArray","size","allValid","index","String","has","descriptor","priorItem","get","item","visit","set","push","join","freeze","visitObject","sort","JSON","stringify","defineProperty","configurable","writable","is","isFinite","ownKeys","add","delete","snapshotValue","WeakSet","canonicalSourceValue","URI_STRING_FIELDS","CACHE_POLICIES","isSnapshotObject","isValidHeaders","every","isValidUriSource","uri","trim","field","fieldValue","headers","cache","asImageSource","resolveImageSource","source","resolveSnapshot","result","createImageSourceResolver","resolved","next","imageSourceKey","isValidImageSource"],"sourceRoot":"../../../src","sources":["utils/imageSource.ts"],"mappings":";;AAkCA,MAAMA,MAAM,GAAGA,CAACC,KAAa,EAAEC,GAAgB,KAC7CC,MAAM,CAACC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACL,KAAK,EAAEC,GAAG,CAAC;AAElD,SAASK,KAAKA,CACZC,QAAuB,EACvBC,SAAiB,EACjBC,QAA8C,EAC9B;EAChB,OAAO;IAAEH,KAAK,EAAE,IAAI;IAAEC,QAAQ;IAAEC,SAAS;IAAEC;EAAS,CAAC;AACvD;AAEA,SAASC,OAAOA,CAACC,IAAY,EAAkB;EAC7C,OAAO;IAAEL,KAAK,EAAE,KAAK;IAAEE,SAAS,EAAE,WAAWG,IAAI;EAAG,CAAC;AACvD;AAEA,SAASC,UAAUA,CACjBZ,KAAa,EACba,IAAuB,EACvBC,IAAqB,EACrBC,QAAyB,EACT;EAChB,IAAI,CAACF,IAAI,CAACG,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAON,OAAO,CAAC,YAAY,CAAC;EAE1D,MAAMO,gBAAgB,GAAGC,OAAO,CAACC,wBAAwB,CAACnB,KAAK,EAAE,QAAQ,CAAC;EAC1E,IACEiB,gBAAgB,KAAKG,SAAS,IAC9BH,gBAAgB,CAACI,UAAU,IAC3B,CAACtB,MAAM,CAACkB,gBAAgB,EAAE,OAAO,CAAC,IAClC,OAAOA,gBAAgB,CAACjB,KAAK,KAAK,QAAQ,IAC1C,CAACsB,MAAM,CAACC,SAAS,CAACN,gBAAgB,CAACjB,KAAK,CAAC,IACzCiB,gBAAgB,CAACjB,KAAK,GAAG,CAAC,EAC1B;IACA,OAAOU,OAAO,CAAC,YAAY,CAAC;EAC9B;EAEA,MAAMc,MAAM,GAAGP,gBAAgB,CAACjB,KAAK;EACrC,IAAIa,IAAI,CAACW,MAAM,KAAKA,MAAM,GAAG,CAAC,EAAE,OAAOd,OAAO,CAAC,YAAY,CAAC;EAE5D,MAAMe,MAAM,GAAG,IAAIC,GAAG,CAACb,IAAI,CAAC;EAC5B,MAAMc,KAAe,GAAG,EAAE;EAC1B,MAAMpB,QAAyB,GAAG,EAAE;EACpC,MAAME,QAAQ,GAAG,IAAImB,GAAG,CAAyB,CAAC;EAClD,MAAMC,gBAAgB,GAAGd,QAAQ,EAAET,KAAK,GAAGS,QAAQ,CAACN,QAAQ,GAAGW,SAAS;EACxE,IAAIU,SAAS,GACXf,QAAQ,EAAET,KAAK,KAAK,IAAI,IACxByB,KAAK,CAACC,OAAO,CAACjB,QAAQ,CAACR,QAAQ,CAAC,IAChCsB,gBAAgB,EAAEI,IAAI,KAAKT,MAAM;EACnC,IAAIU,QAAQ,GAAG,IAAI;EAEnB,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGX,MAAM,EAAEW,KAAK,IAAI,CAAC,EAAE;IAC9C,MAAMlC,GAAG,GAAGmC,MAAM,CAACD,KAAK,CAAC;IACzB,IAAI,CAACV,MAAM,CAACY,GAAG,CAACpC,GAAG,CAAC,EAAE,OAAOS,OAAO,CAAC,YAAY,CAAC;IAElD,MAAM4B,UAAU,GAAGpB,OAAO,CAACC,wBAAwB,CAACnB,KAAK,EAAEC,GAAG,CAAC;IAC/D,IACEqC,UAAU,KAAKlB,SAAS,IACxB,CAACkB,UAAU,CAACjB,UAAU,IACtB,CAACtB,MAAM,CAACuC,UAAU,EAAE,OAAO,CAAC,EAC5B;MACA,OAAO5B,OAAO,CAAC,YAAY,CAAC;IAC9B;IAEA,MAAM6B,SAAS,GAAGV,gBAAgB,EAAEW,GAAG,CAACvC,GAAG,CAAC;IAC5C,MAAMwC,IAAI,GAAGC,KAAK,CAACJ,UAAU,CAACtC,KAAK,EAAEc,IAAI,EAAEyB,SAAS,CAAC;IACrD9B,QAAQ,CAACkC,GAAG,CAAC1C,GAAG,EAAEwC,IAAI,CAAC;IACvBX,SAAS,GAAGA,SAAS,IAAIW,IAAI,KAAKF,SAAS;IAC3CZ,KAAK,CAACiB,IAAI,CAACH,IAAI,CAACjC,SAAS,CAAC;IAC1B,IAAIiC,IAAI,CAACnC,KAAK,EAAE;MACdC,QAAQ,CAACqC,IAAI,CAACH,IAAI,CAAClC,QAAQ,CAAC;IAC9B,CAAC,MAAM;MACL2B,QAAQ,GAAG,KAAK;IAClB;EACF;EAEA,IAAIA,QAAQ,IAAIJ,SAAS,IAAIf,QAAQ,EAAET,KAAK,EAAE,OAAOS,QAAQ;EAC7D,MAAMP,SAAS,GAAG,UAAUmB,KAAK,CAACkB,IAAI,CAAC,GAAG,CAAC,GAAG;EAC9C,OAAOX,QAAQ,GACX5B,KAAK,CAACJ,MAAM,CAAC4C,MAAM,CAACvC,QAAQ,CAAC,EAAEC,SAAS,EAAEC,QAAQ,CAAC,GACnD;IAAEH,KAAK,EAAE,KAAK;IAAEE;EAAU,CAAC;AACjC;AAEA,SAASuC,WAAWA,CAClB/C,KAAa,EACba,IAAuB,EACvBC,IAAqB,EACrBC,QAAyB,EACT;EAChB,MAAMR,QAAuC,GAAG,CAAC,CAAC;EAClD,MAAMoB,KAAe,GAAG,EAAE;EAC1B,MAAMlB,QAAQ,GAAG,IAAImB,GAAG,CAAyB,CAAC;EAClD,MAAMC,gBAAgB,GAAGd,QAAQ,EAAET,KAAK,GAAGS,QAAQ,CAACN,QAAQ,GAAGW,SAAS;EACxE,IAAIU,SAAS,GACXf,QAAQ,EAAET,KAAK,KAAK,IAAI,IACxBS,QAAQ,CAACR,QAAQ,KAAK,IAAI,IAC1B,OAAOQ,QAAQ,CAACR,QAAQ,KAAK,QAAQ,IACrC,CAACwB,KAAK,CAACC,OAAO,CAACjB,QAAQ,CAACR,QAAQ,CAAC,IACjCsB,gBAAgB,EAAEI,IAAI,KAAKpB,IAAI,CAACW,MAAM;EACxC,IAAIU,QAAQ,GAAG,IAAI;EAEnB,KAAK,MAAMjC,GAAG,IAAI,CAAC,GAAGY,IAAI,CAAC,CAACmC,IAAI,CAAC,CAAC,EAAE;IAClC,MAAMV,UAAU,GAAGpB,OAAO,CAACC,wBAAwB,CAACnB,KAAK,EAAEC,GAAG,CAAC;IAC/D,IAAIqC,UAAU,KAAKlB,SAAS,EAAE,OAAOV,OAAO,CAAC,YAAY,CAAC;IAC1D,IAAI,CAAC4B,UAAU,CAACjB,UAAU,EAAE,OAAOX,OAAO,CAAC,gBAAgB,CAAC;IAC5D,IAAI,CAACX,MAAM,CAACuC,UAAU,EAAE,OAAO,CAAC,EAAE,OAAO5B,OAAO,CAAC,UAAU,CAAC;IAE5D,MAAM6B,SAAS,GAAGV,gBAAgB,EAAEW,GAAG,CAACvC,GAAG,CAAC;IAC5C,MAAMwC,IAAI,GAAGC,KAAK,CAACJ,UAAU,CAACtC,KAAK,EAAEc,IAAI,EAAEyB,SAAS,CAAC;IACrD9B,QAAQ,CAACkC,GAAG,CAAC1C,GAAG,EAAEwC,IAAI,CAAC;IACvBX,SAAS,GAAGA,SAAS,IAAIW,IAAI,KAAKF,SAAS;IAC3CZ,KAAK,CAACiB,IAAI,CAAC,GAAGK,IAAI,CAACC,SAAS,CAACjD,GAAG,CAAC,IAAIwC,IAAI,CAACjC,SAAS,EAAE,CAAC;IACtD,IAAIiC,IAAI,CAACnC,KAAK,EAAE;MACdJ,MAAM,CAACiD,cAAc,CAAC5C,QAAQ,EAAEN,GAAG,EAAE;QACnCmD,YAAY,EAAE,KAAK;QACnB/B,UAAU,EAAE,IAAI;QAChBrB,KAAK,EAAEyC,IAAI,CAAClC,QAAQ;QACpB8C,QAAQ,EAAE;MACZ,CAAC,CAAC;IACJ,CAAC,MAAM;MACLnB,QAAQ,GAAG,KAAK;IAClB;EACF;EAEA,IAAIA,QAAQ,IAAIJ,SAAS,IAAIf,QAAQ,EAAET,KAAK,EAAE,OAAOS,QAAQ;EAC7D,MAAMP,SAAS,GAAG,WAAWmB,KAAK,CAACkB,IAAI,CAAC,GAAG,CAAC,GAAG;EAC/C,OAAOX,QAAQ,GACX5B,KAAK,CAACJ,MAAM,CAAC4C,MAAM,CAACvC,QAAQ,CAAC,EAAEC,SAAS,EAAEC,QAAQ,CAAC,GACnD;IAAEH,KAAK,EAAE,KAAK;IAAEE;EAAU,CAAC;AACjC;;AAEA;AACA;AACA;AACA;AACA,SAASkC,KAAKA,CACZ1C,KAAc,EACdc,IAAqB,EACrBC,QAAyB,EACT;EAChB;EACA;EACA,IACE,CAACf,KAAK,KAAK,IAAI,IAAI,OAAOA,KAAK,KAAK,QAAQ,KAC5Ce,QAAQ,EAAET,KAAK,IACfJ,MAAM,CAACoD,EAAE,CAACvC,QAAQ,CAACR,QAAQ,EAAEP,KAAK,CAAC,EAEnC,OAAOe,QAAQ;EACjB,IAAIf,KAAK,KAAKoB,SAAS,EAAE,OAAOd,KAAK,CAACc,SAAS,EAAE,YAAY,CAAC;EAC9D,IAAIpB,KAAK,KAAK,IAAI,EAAE,OAAOM,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC;EAE/C,QAAQ,OAAON,KAAK;IAClB,KAAK,QAAQ;MACX,OAAOM,KAAK,CAACN,KAAK,EAAE,UAAUiD,IAAI,CAACC,SAAS,CAAClD,KAAK,CAAC,EAAE,CAAC;IACxD,KAAK,QAAQ;MACX,OAAOsB,MAAM,CAACiC,QAAQ,CAACvD,KAAK,CAAC,GACzBM,KAAK,CAACN,KAAK,EAAE,UAAUA,KAAK,EAAE,CAAC,GAC/BU,OAAO,CAAC,QAAQ,CAAC;IACvB,KAAK,SAAS;MACZ,OAAOJ,KAAK,CAACN,KAAK,EAAE,WAAWoC,MAAM,CAACpC,KAAK,CAAC,EAAE,CAAC;IACjD,KAAK,UAAU;IACf,KAAK,QAAQ;IACb,KAAK,QAAQ;MACX,OAAOU,OAAO,CAAC,OAAOV,KAAK,CAAC;IAC9B,KAAK,QAAQ;MACX;IACF,KAAK,WAAW;MACd,OAAOM,KAAK,CAACc,SAAS,EAAE,YAAY,CAAC;EACzC;EAEA,IAAI;IACF,IAAIN,IAAI,CAACuB,GAAG,CAACrC,KAAK,CAAC,EAAE,OAAOU,OAAO,CAAC,OAAO,CAAC;IAE5C,MAAMsB,OAAO,GAAGD,KAAK,CAACC,OAAO,CAAChC,KAAK,CAAC;IACpC,MAAMwD,OAAO,GAAGtC,OAAO,CAACsC,OAAO,CAACxD,KAAK,CAAC;IACtC,MAAMa,IAAc,GAAG,EAAE;IACzB,KAAK,MAAMZ,GAAG,IAAIuD,OAAO,EAAE;MACzB,IAAI,OAAOvD,GAAG,KAAK,QAAQ,EAAE,OAAOS,OAAO,CAAC,YAAY,CAAC;MACzDG,IAAI,CAAC+B,IAAI,CAAC3C,GAAG,CAAC;IAChB;IAEAa,IAAI,CAAC2C,GAAG,CAACzD,KAAK,CAAC;IACf,IAAI;MACF,OAAOgC,OAAO,GACVpB,UAAU,CAACZ,KAAK,EAAEa,IAAI,EAAEC,IAAI,EAAEC,QAAQ,CAAC,GACvCgC,WAAW,CAAC/C,KAAK,EAAEa,IAAI,EAAEC,IAAI,EAAEC,QAAQ,CAAC;IAC9C,CAAC,SAAS;MACRD,IAAI,CAAC4C,MAAM,CAAC1D,KAAK,CAAC;IACpB;EACF,CAAC,CAAC,MAAM;IACN,OAAOU,OAAO,CAAC,WAAW,CAAC;EAC7B;AACF;AAEA,SAASiD,aAAaA,CACpB3D,KAAc,EACde,QAAyB,EACT;EAChB,IAAI;IACF,OAAO2B,KAAK,CAAC1C,KAAK,EAAE,IAAI4D,OAAO,CAAS,CAAC,EAAE7C,QAAQ,CAAC;EACtD,CAAC,CAAC,MAAM;IACN,OAAOL,OAAO,CAAC,WAAW,CAAC;EAC7B;AACF;AAEA,OAAO,SAASmD,oBAAoBA,CAAC7D,KAAc,EAAU;EAC3D,OAAO2D,aAAa,CAAC3D,KAAK,CAAC,CAACQ,SAAS;AACvC;AAEA,MAAMsD,iBAAiB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAU;AAC/D,MAAMC,cAAc,GAAG,IAAIrC,GAAG,CAAC,CAC7B,SAAS,EACT,QAAQ,EACR,aAAa,EACb,gBAAgB,CACjB,CAAC;AAEF,SAASsC,gBAAgBA,CAAChE,KAAoB,EAA2B;EACvE,OAAOA,KAAK,KAAK,IAAI,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAI,CAAC+B,KAAK,CAACC,OAAO,CAAChC,KAAK,CAAC;AAC7E;AAEA,SAASiE,cAAcA,CAACjE,KAAoB,EAAW;EACrD,IAAIA,KAAK,KAAKoB,SAAS,EAAE,OAAO,IAAI;EACpC,IAAI,CAAC4C,gBAAgB,CAAChE,KAAK,CAAC,EAAE,OAAO,KAAK;EAC1C,OAAOE,MAAM,CAACW,IAAI,CAACb,KAAK,CAAC,CAACkE,KAAK,CAAEjE,GAAG,IAAK,OAAOD,KAAK,CAACC,GAAG,CAAC,KAAK,QAAQ,CAAC;AAC1E;AAEA,SAASkE,gBAAgBA,CAACnE,KAAoB,EAAW;EACvD,IAAI,CAACgE,gBAAgB,CAAChE,KAAK,CAAC,IAAI,CAACD,MAAM,CAACC,KAAK,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK;EAEnE,MAAMoE,GAAG,GAAGpE,KAAK,CAACoE,GAAG;EACrB,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAIA,GAAG,CAACC,IAAI,CAAC,CAAC,CAAC7C,MAAM,KAAK,CAAC,EAAE,OAAO,KAAK;EAEpE,KAAK,MAAM8C,KAAK,IAAIR,iBAAiB,EAAE;IACrC,MAAMS,UAAU,GAAGvE,KAAK,CAACsE,KAAK,CAAC;IAC/B,IAAIC,UAAU,KAAKnD,SAAS,IAAI,OAAOmD,UAAU,KAAK,QAAQ,EAAE;MAC9D,OAAO,KAAK;IACd;EACF;EAEA,IAAI,CAACN,cAAc,CAACjE,KAAK,CAACwE,OAAO,CAAC,EAAE,OAAO,KAAK;EAEhD,MAAMC,KAAK,GAAGzE,KAAK,CAACyE,KAAK;EACzB,IAAIA,KAAK,KAAKrD,SAAS,IAAI,CAAC2C,cAAc,CAAC1B,GAAG,CAACoC,KAAe,CAAC,EAAE,OAAO,KAAK;EAE7E,KAAK,MAAMH,KAAK,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAW;IACzD,MAAMC,UAAU,GAAGvE,KAAK,CAACsE,KAAK,CAAC;IAC/B,IACEC,UAAU,KAAKnD,SAAS,KACvB,OAAOmD,UAAU,KAAK,QAAQ,IAAI,CAACjD,MAAM,CAACiC,QAAQ,CAACgB,UAAU,CAAC,CAAC,EAChE;MACA,OAAO,KAAK;IACd;EACF;EAEA,OAAO,IAAI;AACb;AAEA,SAASG,aAAaA,CACpBnE,QAAuB,EACU;EACjC,IAAI,OAAOA,QAAQ,KAAK,QAAQ,EAAE;IAChC,OAAOe,MAAM,CAACiC,QAAQ,CAAChD,QAAQ,CAAC,IAC9BA,QAAQ,GAAG,CAAC,IACZe,MAAM,CAACC,SAAS,CAAChB,QAAQ,CAAC,GACxBA,QAAQ,GACRa,SAAS;EACf;EAEA,IAAIW,KAAK,CAACC,OAAO,CAACzB,QAAQ,CAAC,EAAE;IAC3B,OAAOA,QAAQ,CAACiB,MAAM,GAAG,CAAC,IAAIjB,QAAQ,CAAC2D,KAAK,CAACC,gBAAgB,CAAC,GACzD5D,QAAQ,GACTa,SAAS;EACf;EAEA,OAAO+C,gBAAgB,CAAC5D,QAAQ,CAAC,GAC5BA,QAAQ,GACTa,SAAS;AACf;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASuD,kBAAkBA,CAChCC,MAAe,EACkB;EACjC,OAAOC,eAAe,CAAClB,aAAa,CAACiB,MAAM,CAAC,CAAC;AAC/C;AAEA,SAASC,eAAeA,CACtBC,MAAsB,EACW;EACjC,IAAI,CAACA,MAAM,CAACxE,KAAK,EAAE,OAAOc,SAAS;EAEnC,MAAMb,QAAQ,GAAGmE,aAAa,CAACI,MAAM,CAACvE,QAAQ,CAAC;EAC/C,IAAIA,QAAQ,KAAKa,SAAS,EAAE,OAAOA,SAAS;EAE5C,OAAOlB,MAAM,CAAC4C,MAAM,CAAC;IACnB8B,MAAM,EAAErE,QAAQ;IAChBN,GAAG,EAAE,gBAAgB6E,MAAM,CAACtE,SAAS;EACvC,CAAC,CAAC;AACJ;;AAEA;AACA,OAAO,SAASuE,yBAAyBA,CAAA,EAAG;EAC1C,IAAIhE,QAAoC;EACxC,IAAIiE,QAAyC;EAC7C,OAAQJ,MAAe,IAAsC;IAC3D,MAAMK,IAAI,GAAGtB,aAAa,CAACiB,MAAM,EAAE7D,QAAQ,CAAC;IAC5C,IAAIkE,IAAI,KAAKlE,QAAQ,EAAE;MACrBiE,QAAQ,GAAGH,eAAe,CAACI,IAAI,CAAC;MAChClE,QAAQ,GAAGiE,QAAQ,KAAK5D,SAAS,GAAGA,SAAS,GAAG6D,IAAI;IACtD;IACA,OAAOD,QAAQ;EACjB,CAAC;AACH;AAEA,OAAO,SAASE,cAAcA,CAC5BN,MAAuC,EAC/B;EACR,OAAO,gBAAgBjB,aAAa,CAACiB,MAAM,CAAC,CAACpE,SAAS,EAAE;AAC1D;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAAS2E,kBAAkBA,CAChCP,MAAe,EACgB;EAC/B,OAAOD,kBAAkB,CAACC,MAAM,CAAC,KAAKxD,SAAS;AACjD","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"TextFieldBase.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/TextFieldBase.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAaf,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAUnE,0EAA0E;AAC1E,eAAO,MAAM,aAAa,4FAwOzB,CAAC"}
1
+ {"version":3,"file":"TextFieldBase.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/TextFieldBase.tsx"],"names":[],"mappings":"AAAA,OAAO,KAMN,MAAM,OAAO,CAAC;AAaf,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAcnE,0EAA0E;AAC1E,eAAO,MAAM,aAAa,4FAgPzB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export declare const TEXT_FIELD_BORDER_WIDTH = 1;
2
2
  export declare const TEXTAREA_VERTICAL_PADDING: number;
3
+ export declare const TEXTAREA_PLAIN_VERTICAL_INSET: number;
3
4
  export declare const TEXTAREA_VERTICAL_INSET: number;
4
5
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,yBAAyB,QAAW,CAAC;AAClD,eAAO,MAAM,uBAAuB,QACuB,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,yBAAyB,QAAW,CAAC;AAClD,eAAO,MAAM,6BAA6B,QAAgC,CAAC;AAC3E,eAAO,MAAM,uBAAuB,QACyB,CAAC"}
@@ -13,6 +13,11 @@ export declare const makeStyles: (c: ColorTokens) => Readonly<{
13
13
  paddingVertical: number;
14
14
  alignItems: "flex-start";
15
15
  };
16
+ wrapPlain: {
17
+ backgroundColor: string;
18
+ borderWidth: number;
19
+ borderRadius: number;
20
+ };
16
21
  /** Search 的可见底色/边框绝不承载命中区域。 */
17
22
  searchInteractiveRow: {
18
23
  borderWidth: number;
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/styles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAMlD,yDAAyD;AACzD,eAAO,MAAM,UAAU,GAAI,GAAG,WAAW;;;;;;;;;;;;;IAcrC,+BAA+B;;;;;;;;;;;;;;;IAe/B,qEAAqE;;;;;;;;;;;;;;;;;;;;;;IAuBrE,sCAAsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkDtC,CAAC"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/styles.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAMlD,yDAAyD;AACzD,eAAO,MAAM,UAAU,GAAI,GAAG,WAAW;;;;;;;;;;;;;;;;;;IAmBrC,+BAA+B;;;;;;;;;;;;;;;IAe/B,qEAAqE;;;;;;;;;;;;;;;;;;;;;;IAuBrE,sCAAsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkDtC,CAAC"}
@@ -109,12 +109,15 @@ export type TextFieldBaseProps = Omit<TextInputProps, RemovedTextInputProps> & T
109
109
  maxHeight?: number;
110
110
  /** internal:Search 的 44pt interactive row + 36pt decorative surface。 */
111
111
  searchLayout?: SearchFieldLayout;
112
+ /** internal:仅由 Textarea 的公开 surface 选择,无独立表面的多行输入。 */
113
+ plainSurface?: boolean;
112
114
  };
113
115
  export interface MultilineLayoutInput {
114
116
  enabled: boolean;
115
117
  value: string;
116
118
  minHeight: number;
117
119
  maxHeight: number | undefined;
120
+ verticalInset: number;
118
121
  fontSize: number | undefined;
119
122
  placeholder: string | undefined;
120
123
  inputRef: RefObject<ComponentRef<typeof TextInput> | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/types.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import type { MultilineLayout, MultilineLayoutInput } from './types';
2
2
  /** 原生 Yoga 直接测量文本;固定 height 会阻断 iOS Fabric 的后续内容尺寸通知。 */
3
- export declare function useMultilineLayout({ minHeight, maxHeight, }: MultilineLayoutInput): MultilineLayout;
3
+ export declare function useMultilineLayout({ minHeight, maxHeight, verticalInset, }: MultilineLayoutInput): MultilineLayout;
4
4
  //# sourceMappingURL=useMultilineLayout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMultilineLayout.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/useMultilineLayout.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAErE,yDAAyD;AACzD,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,EACT,SAAS,GACV,EAAE,oBAAoB,GAAG,eAAe,CAYxC"}
1
+ {"version":3,"file":"useMultilineLayout.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/useMultilineLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAErE,yDAAyD;AACzD,wBAAgB,kBAAkB,CAAC,EACjC,SAAS,EACT,SAAS,EACT,aAAa,GACd,EAAE,oBAAoB,GAAG,eAAe,CAYxC"}
@@ -1,4 +1,4 @@
1
1
  import type { MultilineLayout, MultilineLayoutInput } from './types';
2
2
  /** RNW 的 contentSize 使用 scrollHeight,固定高度会阻止缩短,须临时解除高度后测量。 */
3
- export declare function useMultilineLayout({ enabled, value, minHeight, maxHeight, fontSize, placeholder, inputRef, }: MultilineLayoutInput): MultilineLayout;
3
+ export declare function useMultilineLayout({ enabled, value, minHeight, maxHeight, verticalInset, fontSize, placeholder, inputRef, }: MultilineLayoutInput): MultilineLayout;
4
4
  //# sourceMappingURL=useMultilineLayout.web.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMultilineLayout.web.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/useMultilineLayout.web.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EAErB,MAAM,SAAS,CAAC;AAEjB,8DAA8D;AAC9D,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,KAAK,EACL,SAAS,EACT,SAAS,EACT,QAAQ,EACR,WAAW,EACX,QAAQ,GACT,EAAE,oBAAoB,GAAG,eAAe,CAyCxC"}
1
+ {"version":3,"file":"useMultilineLayout.web.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/TextField/useMultilineLayout.web.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EAErB,MAAM,SAAS,CAAC;AAEjB,8DAA8D;AAC9D,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,KAAK,EACL,SAAS,EACT,SAAS,EACT,aAAa,EACb,QAAQ,EACR,WAAW,EACX,QAAQ,GACT,EAAE,oBAAoB,GAAG,eAAe,CAwCxC"}
@@ -1,7 +1,7 @@
1
1
  import type { TextFieldHandle } from '../TextField/types';
2
2
  import type { TextareaProps } from './types';
3
3
  /**
4
- * 多行文本输入框 —— 视觉与 Input 一致(idle/focus/filled/error/disabled)。
4
+ * 多行文本输入框 —— 默认视觉与 Input 一致;plain 供外层已提供表面的组合使用。
5
5
  *
6
6
  * 跟 Input 区别:
7
7
  * - 内置 `multiline=true`,业务不用传
@@ -1 +1 @@
1
- {"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Textarea/Textarea.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,QAAQ,2GASpB,CAAC"}
1
+ {"version":3,"file":"Textarea.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Textarea/Textarea.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,QAAQ,2GAcpB,CAAC"}
@@ -6,8 +6,10 @@ import type { RemovedTextInputProps, TextFieldCommonProps, TextFieldValueProps }
6
6
  * 内部固定 `multiline=true`;高度在 `[minHeight, maxHeight]` 之间根据内容增长。
7
7
  * 继承除 `style` / `multiline` / `numberOfLines` 之外的 RN `TextInputProps`。
8
8
  */
9
- export type TextareaProps = Omit<TextInputProps, RemovedTextInputProps> & TextFieldCommonProps & TextFieldValueProps & TextareaHeightProps;
10
- interface TextareaHeightProps {
9
+ export type TextareaProps = Omit<TextInputProps, RemovedTextInputProps> & TextFieldCommonProps & TextFieldValueProps & TextareaLayoutProps;
10
+ interface TextareaLayoutProps {
11
+ /** default 绘制独立输入表面;plain 嵌入复合输入,保留文字内边距但不绘制表面。 */
12
+ surface?: 'default' | 'plain';
11
13
  /** 最小高度,默认 96(约 5 行) */
12
14
  minHeight?: number;
13
15
  /** 最大高度(超过后内部滚动),默认不限制 */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Textarea/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,qBAAqB,CAAC,GACrE,oBAAoB,GACpB,mBAAmB,GACnB,mBAAmB,CAAC;AAEtB,UAAU,mBAAmB;IAC3B,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/Textarea/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,oBAAoB,CAAC;AAE5B;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE,qBAAqB,CAAC,GACrE,oBAAoB,GACpB,mBAAmB,GACnB,mBAAmB,CAAC;AAEtB,UAAU,mBAAmB;IAC3B,mDAAmD;IACnD,OAAO,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IAC9B,wBAAwB;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
@@ -1,7 +1,8 @@
1
1
  import React from 'react';
2
- import type { ImageProps, ImageSourcePropType } from 'react-native';
2
+ import type { ImageProps } from 'react-native';
3
+ import type { ResolvedImageSource } from '../../../utils/imageSource';
3
4
  type ImageAttemptProps = Omit<ImageProps, 'onError' | 'source'> & {
4
- source: ImageSourcePropType;
5
+ source: ResolvedImageSource;
5
6
  fallback: React.ReactNode;
6
7
  };
7
8
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"ImageAttempt.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/shared/ImageAttempt.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGpE,KAAK,iBAAiB,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,QAAQ,CAAC,GAAG;IAChE,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,QAAQ,EACR,GAAG,UAAU,EACd,EAAE,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWvC"}
1
+ {"version":3,"file":"ImageAttempt.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/shared/ImageAttempt.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAGtE,KAAK,iBAAiB,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,GAAG,QAAQ,CAAC,GAAG;IAChE,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,QAAQ,EACR,GAAG,UAAU,EACd,EAAE,iBAAiB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAWvC"}
@@ -1,4 +1,5 @@
1
1
  import type { ImageSourcePropType } from 'react-native';
2
- export declare function selectNativeImageAttemptSource(source: unknown): ImageSourcePropType | undefined;
3
- export declare function selectWebImageAttemptSource(source: unknown): ImageSourcePropType | undefined;
2
+ import type { ResolvedImageSource } from '../../../utils/imageSource';
3
+ export declare function selectNativeImageAttemptSource(resolved: ResolvedImageSource | undefined): ImageSourcePropType | undefined;
4
+ export declare function selectWebImageAttemptSource(resolved: ResolvedImageSource | undefined): ImageSourcePropType | undefined;
4
5
  //# sourceMappingURL=selectImageAttemptSource.shared.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"selectImageAttemptSource.shared.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/shared/selectImageAttemptSource.shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGxD,wBAAgB,8BAA8B,CAC5C,MAAM,EAAE,OAAO,GACd,mBAAmB,GAAG,SAAS,CAEjC;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,OAAO,GACd,mBAAmB,GAAG,SAAS,CAKjC"}
1
+ {"version":3,"file":"selectImageAttemptSource.shared.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/shared/selectImageAttemptSource.shared.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAItE,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,mBAAmB,GAAG,SAAS,GACxC,mBAAmB,GAAG,SAAS,CAEjC;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,mBAAmB,GAAG,SAAS,GACxC,mBAAmB,GAAG,SAAS,CAKjC"}
@@ -0,0 +1,6 @@
1
+ /** Reuse immutable image inputs without retaining a global source cache. */
2
+ export declare function useImageSource(source: unknown): Readonly<{
3
+ source: import("react-native").ImageSourcePropType;
4
+ key: string;
5
+ }> | undefined;
6
+ //# sourceMappingURL=useImageSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useImageSource.d.ts","sourceRoot":"","sources":["../../../../../../src/components/ui/shared/useImageSource.ts"],"names":[],"mappings":"AAGA,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO;;;eAG7C"}
@@ -1,5 +1,5 @@
1
1
  import type { ImageSourcePropType } from 'react-native';
2
- type ResolvedImageSource = Readonly<{
2
+ export type ResolvedImageSource = Readonly<{
3
3
  source: ImageSourcePropType;
4
4
  key: string;
5
5
  }>;
@@ -9,6 +9,8 @@ export declare function canonicalSourceValue(value: unknown): string;
9
9
  * 与 semantic key。调用方必须把同一返回值里的 source / key 一起交给 attempt。
10
10
  */
11
11
  export declare function resolveImageSource(source: unknown): ResolvedImageSource | undefined;
12
+ /** One resolver belongs to one mounted media component; only its latest tree is kept. */
13
+ export declare function createImageSourceResolver(): (source: unknown) => ResolvedImageSource | undefined;
12
14
  export declare function imageSourceKey(source: ImageSourcePropType | undefined): string;
13
15
  /**
14
16
  * JS 消费者可能绕过类型系统。只有能安全 snapshot 的 asset id、URI object 或
@@ -16,5 +18,4 @@ export declare function imageSourceKey(source: ImageSourcePropType | undefined):
16
18
  * 一律失败关闭。
17
19
  */
18
20
  export declare function isValidImageSource(source: unknown): source is ImageSourcePropType;
19
- export {};
20
21
  //# sourceMappingURL=imageSource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"imageSource.d.ts","sourceRoot":"","sources":["../../../../src/utils/imageSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AA4BxD,KAAK,mBAAmB,GAAG,QAAQ,CAAC;IAClC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;CACb,CAAC,CAAC;AAkKH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE3D;AAyED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,OAAO,GACd,mBAAmB,GAAG,SAAS,CAWjC;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,mBAAmB,GAAG,SAAS,GACtC,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,OAAO,GACd,MAAM,IAAI,mBAAmB,CAE/B"}
1
+ {"version":3,"file":"imageSource.d.ts","sourceRoot":"","sources":["../../../../src/utils/imageSource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AA6BxD,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;IACzC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;CACb,CAAC,CAAC;AA6MH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE3D;AAyED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,OAAO,GACd,mBAAmB,GAAG,SAAS,CAEjC;AAgBD,yFAAyF;AACzF,wBAAgB,yBAAyB,KAG/B,QAAQ,OAAO,KAAG,mBAAmB,GAAG,SAAS,CAQ1D;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,mBAAmB,GAAG,SAAS,GACtC,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,OAAO,GACd,MAAM,IAAI,mBAAmB,CAE/B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unif/react-native-design",
3
- "version": "0.32.2",
3
+ "version": "0.33.1",
4
4
  "description": "Unif React Native 设计系统:基础组件、主题、字体和图标",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { Text, View } from 'react-native';
3
3
  import { scaleFontMetric, useColors, useFontScale } from '../../../theme';
4
- import { resolveImageSource } from '../../../utils/imageSource';
4
+ import { useImageSource } from '../shared/useImageSource';
5
5
  import { ImageAttempt } from '../shared/ImageAttempt';
6
6
  import { paletteFor, styles } from './styles';
7
7
  import { resolveAvatarBorderRadius, sizingFor } from './geometry';
@@ -27,7 +27,7 @@ export function Avatar({
27
27
  const dims = sizingFor(size);
28
28
  const palette = paletteFor(variant, c);
29
29
  const labelFontSize = scaleFontMetric(dims.fs, fontScale);
30
- const resolvedSource = resolveImageSource(source);
30
+ const resolvedSource = useImageSource(source);
31
31
  const fallback = (
32
32
  <Text
33
33
  style={[styles.label, { fontSize: labelFontSize, color: palette.fg }]}
@@ -58,7 +58,7 @@ export function Avatar({
58
58
  ) : (
59
59
  <ImageAttempt
60
60
  key={resolvedSource.key}
61
- source={resolvedSource.source}
61
+ source={resolvedSource}
62
62
  fallback={fallback}
63
63
  style={styles.image}
64
64
  resizeMode="cover"
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { Text, View } from 'react-native';
3
3
  import { useThemedStyles } from '../../../theme';
4
- import { resolveImageSource } from '../../../utils/imageSource';
4
+ import { useImageSource } from '../shared/useImageSource';
5
5
  import { A11Y_HIDDEN_PROPS } from '../shared/a11y';
6
6
  import { ImageAttempt } from '../shared/ImageAttempt';
7
7
  import { makeStyles } from './styles';
@@ -21,7 +21,7 @@ export function DrawerHeader({
21
21
  const styles = useThemedStyles(makeStyles);
22
22
  // [L-51] 码点级取首字,防 emoji / 代理对被截断为乱码。
23
23
  const initial = [...name.trim()][0] ?? '?';
24
- const resolvedSource = resolveImageSource(source);
24
+ const resolvedSource = useImageSource(source);
25
25
  const fallback = <Text style={styles.avatarText}>{initial}</Text>;
26
26
 
27
27
  return (
@@ -38,7 +38,7 @@ export function DrawerHeader({
38
38
  ) : (
39
39
  <ImageAttempt
40
40
  key={resolvedSource.key}
41
- source={resolvedSource.source}
41
+ source={resolvedSource}
42
42
  fallback={fallback}
43
43
  style={styles.avatarImage}
44
44
  resizeMode="cover"
@@ -21,6 +21,10 @@ import type { TextFieldBaseProps, TextFieldHandle } from './types';
21
21
  import { useErrorAnnouncement } from './useErrorAnnouncement';
22
22
  import { useTextFieldValue } from './useTextFieldValue';
23
23
  import { useMultilineLayout } from './useMultilineLayout';
24
+ import {
25
+ TEXTAREA_PLAIN_VERTICAL_INSET,
26
+ TEXTAREA_VERTICAL_INSET,
27
+ } from './constants';
24
28
 
25
29
  const log = createLogger('TextField');
26
30
 
@@ -36,6 +40,7 @@ export const TextFieldBase = forwardRef<TextFieldHandle, TextFieldBaseProps>(
36
40
  minHeight,
37
41
  maxHeight,
38
42
  searchLayout,
43
+ plainSurface,
39
44
  leading,
40
45
  trailing,
41
46
  error,
@@ -48,6 +53,7 @@ export const TextFieldBase = forwardRef<TextFieldHandle, TextFieldBaseProps>(
48
53
  accessibilityState,
49
54
  accessibilityRole,
50
55
  placeholderTextColor: callerPlaceholder,
56
+ underlineColorAndroid: callerUnderline,
51
57
  onFocus,
52
58
  onBlur,
53
59
  onContentSizeChange,
@@ -98,11 +104,15 @@ export const TextFieldBase = forwardRef<TextFieldHandle, TextFieldBaseProps>(
98
104
  minHeight,
99
105
  maxHeight
100
106
  );
107
+ const plain = multiline && plainSurface === true;
101
108
  const multilineLayout = useMultilineLayout({
102
109
  enabled: multiline,
103
110
  value: controller.value,
104
111
  minHeight: normalizedTextareaHeights.minHeight,
105
112
  maxHeight: normalizedTextareaHeights.maxHeight,
113
+ verticalInset: plain
114
+ ? TEXTAREA_PLAIN_VERTICAL_INSET
115
+ : TEXTAREA_VERTICAL_INSET,
106
116
  fontSize: styles.input.fontSize,
107
117
  placeholder: allowedNativeProps.placeholder as string | undefined,
108
118
  inputRef: nativeRef,
@@ -169,8 +179,9 @@ export const TextFieldBase = forwardRef<TextFieldHandle, TextFieldBaseProps>(
169
179
  style={[
170
180
  styles.wrap,
171
181
  multiline && styles.wrapMultiline,
172
- searchLayout === undefined && wrapStateStyles,
182
+ searchLayout === undefined && !plain && wrapStateStyles,
173
183
  searchLayout !== undefined && styles.searchInteractiveRow,
184
+ plain && styles.wrapPlain,
174
185
  multiline
175
186
  ? {
176
187
  minHeight: normalizedHeight,
@@ -236,6 +247,7 @@ export const TextFieldBase = forwardRef<TextFieldHandle, TextFieldBaseProps>(
236
247
  },
237
248
  ]}
238
249
  placeholderTextColor={callerPlaceholder ?? colors.foregroundSubtle}
250
+ underlineColorAndroid={plain ? 'transparent' : callerUnderline}
239
251
  accessibilityRole={accessibilityRole}
240
252
  accessibilityState={mergedAccessibilityState}
241
253
  testID={childTestID(testID, 'input')}
@@ -2,5 +2,6 @@ import { space } from '../../../theme';
2
2
 
3
3
  export const TEXT_FIELD_BORDER_WIDTH = 1;
4
4
  export const TEXTAREA_VERTICAL_PADDING = space[4];
5
+ export const TEXTAREA_PLAIN_VERTICAL_INSET = 2 * TEXTAREA_VERTICAL_PADDING;
5
6
  export const TEXTAREA_VERTICAL_INSET =
6
- 2 * (TEXTAREA_VERTICAL_PADDING + TEXT_FIELD_BORDER_WIDTH);
7
+ TEXTAREA_PLAIN_VERTICAL_INSET + 2 * TEXT_FIELD_BORDER_WIDTH;
@@ -21,6 +21,11 @@ export const makeStyles = (c: ColorTokens) =>
21
21
  paddingVertical: TEXTAREA_VERTICAL_PADDING,
22
22
  alignItems: 'flex-start',
23
23
  },
24
+ wrapPlain: {
25
+ backgroundColor: 'transparent',
26
+ borderWidth: 0,
27
+ borderRadius: 0,
28
+ },
24
29
  /** Search 的可见底色/边框绝不承载命中区域。 */
25
30
  searchInteractiveRow: {
26
31
  borderWidth: 0,
@@ -133,6 +133,8 @@ export type TextFieldBaseProps = Omit<TextInputProps, RemovedTextInputProps> &
133
133
  maxHeight?: number;
134
134
  /** internal:Search 的 44pt interactive row + 36pt decorative surface。 */
135
135
  searchLayout?: SearchFieldLayout;
136
+ /** internal:仅由 Textarea 的公开 surface 选择,无独立表面的多行输入。 */
137
+ plainSurface?: boolean;
136
138
  };
137
139
 
138
140
  export interface MultilineLayoutInput {
@@ -140,6 +142,7 @@ export interface MultilineLayoutInput {
140
142
  value: string;
141
143
  minHeight: number;
142
144
  maxHeight: number | undefined;
145
+ verticalInset: number;
143
146
  fontSize: number | undefined;
144
147
  placeholder: string | undefined;
145
148
  inputRef: RefObject<ComponentRef<typeof TextInput> | null>;
@@ -1,18 +1,18 @@
1
- import { TEXTAREA_VERTICAL_INSET } from './constants';
2
1
  import type { MultilineLayout, MultilineLayoutInput } from './types';
3
2
 
4
3
  /** 原生 Yoga 直接测量文本;固定 height 会阻断 iOS Fabric 的后续内容尺寸通知。 */
5
4
  export function useMultilineLayout({
6
5
  minHeight,
7
6
  maxHeight,
7
+ verticalInset,
8
8
  }: MultilineLayoutInput): MultilineLayout {
9
9
  return {
10
10
  inputStyle: {
11
- minHeight: Math.max(0, minHeight - TEXTAREA_VERTICAL_INSET),
11
+ minHeight: Math.max(0, minHeight - verticalInset),
12
12
  maxHeight:
13
13
  maxHeight === undefined
14
14
  ? undefined
15
- : Math.max(0, maxHeight - TEXTAREA_VERTICAL_INSET),
15
+ : Math.max(0, maxHeight - verticalInset),
16
16
  },
17
17
  // 原生仅在内容溢出时滚动;min=max 时也不等待不会再变化的框高事件。
18
18
  scrollEnabled: true,