one 2.0.0-beta.158.1 → 2.0.0-beta.159.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 (27) hide show
  1. package/android/src/main/java/dev/onejs/one/OneKotlinHostEvents.kt +0 -2
  2. package/android/src/main/java/dev/onejs/one/OneKotlinHostManager.kt +0 -8
  3. package/android/src/main/java/dev/onejs/one/OneKotlinHostView.kt +22 -42
  4. package/cpp/HybridOneStorage.cpp +7 -4
  5. package/dist/cjs/platform/native-source/view.native.cjs +25 -23
  6. package/dist/cjs/platform/native-source/view.native.js +25 -23
  7. package/dist/cjs/platform/native-source/view.native.js.map +1 -1
  8. package/dist/cjs/platform/specs/OneKotlinHostNativeComponent.cjs +0 -2
  9. package/dist/cjs/platform/specs/OneKotlinHostNativeComponent.native.cjs +0 -2
  10. package/dist/cjs/platform/specs/OneKotlinHostNativeComponent.native.js +0 -2
  11. package/dist/cjs/platform/specs/OneKotlinHostNativeComponent.native.js.map +2 -2
  12. package/dist/esm/platform/native-source/view.native.js +27 -25
  13. package/dist/esm/platform/native-source/view.native.js.map +1 -1
  14. package/dist/esm/platform/specs/OneKotlinHostNativeComponent.mjs +0 -2
  15. package/dist/esm/platform/specs/OneKotlinHostNativeComponent.mjs.map +2 -2
  16. package/dist/esm/platform/specs/OneKotlinHostNativeComponent.native.js +0 -2
  17. package/dist/esm/platform/specs/OneKotlinHostNativeComponent.native.js.map +2 -2
  18. package/package.json +10 -10
  19. package/src/platform/native-source/view.native.tsx +32 -42
  20. package/src/platform/native-source/viewTypes.ts +3 -1
  21. package/src/platform/specs/OneKotlinHostNativeComponent.ts +5 -4
  22. package/types/platform/native-source/view.native.d.ts +1 -1
  23. package/types/platform/native-source/view.native.d.ts.map +1 -1
  24. package/types/platform/native-source/viewTypes.d.ts +4 -1
  25. package/types/platform/native-source/viewTypes.d.ts.map +1 -1
  26. package/types/platform/specs/OneKotlinHostNativeComponent.d.ts +0 -3
  27. package/types/platform/specs/OneKotlinHostNativeComponent.d.ts.map +1 -1
@@ -26,7 +26,6 @@ internal class OneKotlinHostSizeEvent(
26
26
  viewTag: Int,
27
27
  private val width: Double,
28
28
  private val height: Double,
29
- private val intrinsicWidth: Boolean,
30
29
  ) : Event<OneKotlinHostSizeEvent>(surfaceId, viewTag) {
31
30
  override fun getEventName(): String = "topHostSizeChange"
32
31
 
@@ -36,6 +35,5 @@ internal class OneKotlinHostSizeEvent(
36
35
  Arguments.createMap().apply {
37
36
  putDouble("width", width)
38
37
  putDouble("height", height)
39
- putBoolean("intrinsicWidth", intrinsicWidth)
40
38
  }
41
39
  }
@@ -59,14 +59,6 @@ class OneKotlinHostManager :
59
59
  view.stageContractHash(value)
60
60
  }
61
61
 
62
- override fun setIntrinsicWidth(view: OneKotlinHostView, value: Boolean) {
63
- view.setIntrinsicWidth(value)
64
- }
65
-
66
- override fun setIntrinsicHeight(view: OneKotlinHostView, value: Boolean) {
67
- view.setIntrinsicHeight(value)
68
- }
69
-
70
62
  override fun setProps(view: OneKotlinHostView, value: String?) {
71
63
  view.stageProps(value)
72
64
  }
@@ -31,13 +31,8 @@ class OneKotlinHostView(context: Context) : ReactViewGroup(context) {
31
31
  private var committedContractHash by mutableStateOf("")
32
32
  private var committedProps by mutableStateOf("{}")
33
33
 
34
- private var intrinsicWidth = false
35
- private var intrinsicHeight = false
36
- private var measuresIntrinsicWidth: Boolean? = null
37
- private var hasYogaLayout = false
38
34
  private val contentLayout = Runnable { layoutComposeContent() }
39
35
 
40
- private var reportedIntrinsicWidth: Boolean? = null
41
36
  private var reportedWidth = -1.0
42
37
  private var reportedHeight = -1.0
43
38
 
@@ -105,22 +100,9 @@ class OneKotlinHostView(context: Context) : ReactViewGroup(context) {
105
100
  }
106
101
  }
107
102
 
108
- internal fun setIntrinsicWidth(value: Boolean) {
109
- if (intrinsicWidth == value) return
110
- intrinsicWidth = value
111
- measuresIntrinsicWidth = null
112
- requestLayout()
113
- }
114
-
115
- internal fun setIntrinsicHeight(value: Boolean) {
116
- if (intrinsicHeight == value) return
117
- intrinsicHeight = value
118
- requestLayout()
119
- }
120
-
121
103
  override fun requestLayout() {
122
104
  super.requestLayout()
123
- if (hasYogaLayout) {
105
+ if (isAttachedToWindow) {
124
106
  removeCallbacks(contentLayout)
125
107
  post(contentLayout)
126
108
  }
@@ -146,15 +128,13 @@ class OneKotlinHostView(context: Context) : ReactViewGroup(context) {
146
128
  sizeView: String,
147
129
  widthPx: Int,
148
130
  heightPx: Int,
149
- widthIsIntrinsic: Boolean,
150
131
  ) {
151
132
  if (!isAttachedToWindow || sizeSource != committedSource || sizeView != committedView) return
152
133
  val density = resources.displayMetrics.density.toDouble()
153
134
  if (density <= 0.0) return
154
135
  val widthDp = widthPx / density
155
136
  val heightDp = heightPx / density
156
- if (widthDp == reportedWidth && heightDp == reportedHeight && widthIsIntrinsic == reportedIntrinsicWidth) return
157
- reportedIntrinsicWidth = widthIsIntrinsic
137
+ if (widthDp == reportedWidth && heightDp == reportedHeight) return
158
138
  reportedWidth = widthDp
159
139
  reportedHeight = heightDp
160
140
  val reactContext = UIManagerHelper.getReactContext(this) ?: return
@@ -165,14 +145,12 @@ class OneKotlinHostView(context: Context) : ReactViewGroup(context) {
165
145
  viewTag = id,
166
146
  width = widthDp,
167
147
  height = heightDp,
168
- intrinsicWidth = widthIsIntrinsic,
169
148
  )
170
149
  )
171
150
  }
172
151
 
173
152
  override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int) {
174
153
  super.onLayout(changed, left, top, right, bottom)
175
- hasYogaLayout = true
176
154
  layoutComposeContent()
177
155
  }
178
156
 
@@ -182,25 +160,32 @@ class OneKotlinHostView(context: Context) : ReactViewGroup(context) {
182
160
  }
183
161
 
184
162
  private fun layoutComposeContent() {
185
- if (!hasYogaLayout || !composeView.isAttachedToWindow || committedSource.isEmpty() || committedView.isEmpty()) return
186
- // a nonzero initial yoga width can come from the parent's default stretch.
187
- val widthIsIntrinsic = measuresIntrinsicWidth ?: (intrinsicWidth && width == 0).also {
188
- measuresIntrinsicWidth = it
189
- }
163
+ if (!composeView.isAttachedToWindow || committedSource.isEmpty() || committedView.isEmpty()) return
164
+ // measure content before letting yoga apply the outer constraints.
190
165
  composeView.measure(
191
- if (widthIsIntrinsic) MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)
192
- else MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
193
- if (intrinsicHeight) MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)
194
- else MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY),
166
+ MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
167
+ MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
195
168
  )
196
- composeView.layout(0, 0, composeView.measuredWidth, composeView.measuredHeight)
169
+ val naturalWidth = composeView.measuredWidth
170
+ var naturalHeight = composeView.measuredHeight
171
+ if (width > 0 && width != naturalWidth) {
172
+ composeView.measure(
173
+ MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
174
+ MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
175
+ )
176
+ naturalHeight = composeView.measuredHeight
177
+ }
197
178
  onContentSizeChanged(
198
179
  committedSource,
199
180
  committedView,
200
- composeView.measuredWidth,
201
- composeView.measuredHeight,
202
- widthIsIntrinsic,
181
+ naturalWidth,
182
+ naturalHeight,
183
+ )
184
+ composeView.measure(
185
+ MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY),
186
+ MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY),
203
187
  )
188
+ composeView.layout(0, 0, width, height)
204
189
  }
205
190
 
206
191
  override fun onDetachedFromWindow() {
@@ -211,11 +196,6 @@ class OneKotlinHostView(context: Context) : ReactViewGroup(context) {
211
196
 
212
197
  internal fun resetForReuse() {
213
198
  removeCallbacks(contentLayout)
214
- intrinsicWidth = false
215
- intrinsicHeight = false
216
- measuresIntrinsicWidth = null
217
- hasYogaLayout = false
218
- reportedIntrinsicWidth = null
219
199
  reportedWidth = -1.0
220
200
  reportedHeight = -1.0
221
201
  committedSource = ""
@@ -173,11 +173,12 @@ class StorageLog {
173
173
  // room for a `size` byte record that replaces `replaced` live bytes. the
174
174
  // log is only compacted when it is full: if at least half of it is dead it
175
175
  // is rewritten at twice the live size, otherwise it doubles. writes into
176
- // existing room never pay for compaction.
176
+ // existing room never pay for compaction. the snapshot still holds the
177
+ // replaced record, so the compacted log is sized to fit it and the new one.
177
178
  uint8_t* reserve(size_t size, size_t replaced) {
178
179
  if (used_ + size > capacity_) {
179
180
  size_t live = live_ - replaced + size;
180
- if (live * 2 <= used_) compact(pageAligned(live * 2));
181
+ if (live * 2 <= used_) compact(pageAligned(std::max(live * 2, live_ + size)));
181
182
  if (used_ + size > capacity_) remap(fd_, capacity_, pageAligned(std::max(capacity_ * 2, used_ + size)));
182
183
  }
183
184
  return base_ + used_;
@@ -247,13 +248,15 @@ class StorageLog {
247
248
  uint8_t op = base_[offset++];
248
249
  size_t keyStart = 0;
249
250
  size_t keySize = 0;
251
+ Slot slot{};
252
+ // the whole record parses before it touches the map, so a torn record
253
+ // leaves the entries and their live size exactly as the prior ones left them.
250
254
  if ((op != kSetOp && op != kRemoveOp) || !field(keyStart, keySize)) break;
255
+ if (op == kSetOp && !field(slot.offset, slot.size)) break;
251
256
  key.assign(reinterpret_cast<const char*>(base_ + keyStart), keySize);
252
257
  auto found = entries_.find(key);
253
258
  if (found != entries_.end()) live_ -= setSize(keySize, found->second.size);
254
259
  if (op == kSetOp) {
255
- Slot slot{};
256
- if (!field(slot.offset, slot.size)) break;
257
260
  live_ += setSize(keySize, slot.size);
258
261
  if (found != entries_.end()) {
259
262
  found->second = slot;
@@ -36,28 +36,30 @@ var import_OneKotlinHostNativeComponent = __toESM(require("../specs/OneKotlinHos
36
36
  function KotlinSourceView(param) {
37
37
  var { source, view, contractHash, props } = param;
38
38
  var [contentSize, setContentSize] = (0, import_react.useState)();
39
- var rootStyle = import_react_native.StyleSheet.flatten(props === null || props === void 0 ? void 0 : props.style);
40
- var stretchedWidth = (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.width) != null || typeof (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.flex) === "number" && rootStyle.flex > 0 || typeof (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.flexGrow) === "number" && rootStyle.flexGrow > 0 || (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.alignSelf) === "stretch";
41
- var stretchedHeight = (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.height) != null || typeof (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.flex) === "number" && rootStyle.flex > 0 || typeof (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.flexGrow) === "number" && rootStyle.flexGrow > 0 || (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.alignSelf) === "stretch";
42
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_OneKotlinHostNativeComponent.default, {
43
- source,
44
- view,
45
- contractHash,
46
- intrinsicWidth: !stretchedWidth,
47
- intrinsicHeight: !stretchedHeight,
48
- props: JSON.stringify(props, function(_key, value) {
49
- return typeof value === "function" ? true : value;
50
- }),
51
- onHostEvent: function(event) {
52
- var callback = props[event.nativeEvent.name];
53
- if (typeof callback === "function") callback(...JSON.parse(event.nativeEvent.args));
54
- },
55
- onHostSizeChange: function(event) {
56
- setContentSize(event.nativeEvent);
57
- },
58
- style: [contentSize && {
59
- width: stretchedWidth || !contentSize.intrinsicWidth ? void 0 : contentSize.width,
60
- height: stretchedHeight ? void 0 : contentSize.height
61
- }, props === null || props === void 0 ? void 0 : props.style]
39
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react_native.View, {
40
+ style: props.style,
41
+ collapsable: false,
42
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_native.View, {
43
+ pointerEvents: "none",
44
+ style: contentSize
45
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_OneKotlinHostNativeComponent.default, {
46
+ source,
47
+ view,
48
+ contractHash,
49
+ props: JSON.stringify(props, function(_key, value) {
50
+ return typeof value === "function" ? true : value;
51
+ }),
52
+ onHostEvent: function(event) {
53
+ var callback = props[event.nativeEvent.name];
54
+ if (typeof callback === "function") callback(...JSON.parse(event.nativeEvent.args));
55
+ },
56
+ onHostSizeChange: function(event) {
57
+ setContentSize({
58
+ width: event.nativeEvent.width,
59
+ height: event.nativeEvent.height
60
+ });
61
+ },
62
+ style: import_react_native.StyleSheet.absoluteFill
63
+ })]
62
64
  });
63
65
  }
@@ -36,29 +36,31 @@ var import_OneKotlinHostNativeComponent = __toESM(require("../specs/OneKotlinHos
36
36
  function KotlinSourceView(param) {
37
37
  var { source, view, contractHash, props } = param;
38
38
  var [contentSize, setContentSize] = (0, import_react.useState)();
39
- var rootStyle = import_react_native.StyleSheet.flatten(props === null || props === void 0 ? void 0 : props.style);
40
- var stretchedWidth = (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.width) != null || typeof (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.flex) === "number" && rootStyle.flex > 0 || typeof (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.flexGrow) === "number" && rootStyle.flexGrow > 0 || (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.alignSelf) === "stretch";
41
- var stretchedHeight = (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.height) != null || typeof (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.flex) === "number" && rootStyle.flex > 0 || typeof (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.flexGrow) === "number" && rootStyle.flexGrow > 0 || (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.alignSelf) === "stretch";
42
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_OneKotlinHostNativeComponent.default, {
43
- source,
44
- view,
45
- contractHash,
46
- intrinsicWidth: !stretchedWidth,
47
- intrinsicHeight: !stretchedHeight,
48
- props: JSON.stringify(props, function(_key, value) {
49
- return typeof value === "function" ? true : value;
50
- }),
51
- onHostEvent: function(event) {
52
- var callback = props[event.nativeEvent.name];
53
- if (typeof callback === "function") callback(...JSON.parse(event.nativeEvent.args));
54
- },
55
- onHostSizeChange: function(event) {
56
- setContentSize(event.nativeEvent);
57
- },
58
- style: [contentSize && {
59
- width: stretchedWidth || !contentSize.intrinsicWidth ? void 0 : contentSize.width,
60
- height: stretchedHeight ? void 0 : contentSize.height
61
- }, props === null || props === void 0 ? void 0 : props.style]
39
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react_native.View, {
40
+ style: props.style,
41
+ collapsable: false,
42
+ children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_native.View, {
43
+ pointerEvents: "none",
44
+ style: contentSize
45
+ }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_OneKotlinHostNativeComponent.default, {
46
+ source,
47
+ view,
48
+ contractHash,
49
+ props: JSON.stringify(props, function(_key, value) {
50
+ return typeof value === "function" ? true : value;
51
+ }),
52
+ onHostEvent: function(event) {
53
+ var callback = props[event.nativeEvent.name];
54
+ if (typeof callback === "function") callback(...JSON.parse(event.nativeEvent.args));
55
+ },
56
+ onHostSizeChange: function(event) {
57
+ setContentSize({
58
+ width: event.nativeEvent.width,
59
+ height: event.nativeEvent.height
60
+ });
61
+ },
62
+ style: import_react_native.StyleSheet.absoluteFill
63
+ })]
62
64
  });
63
65
  }
64
66
 
@@ -1 +1 @@
1
- {"version":3,"file":"view.native.js","names":[],"sources":["cjs/platform/native-source/view.native.js"],"sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar view_native_exports = {};\n__export(view_native_exports, {\n KotlinSourceView: () => KotlinSourceView\n});\nmodule.exports = __toCommonJS(view_native_exports);\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar import_react = require(\"react\");\nvar import_react_native = require(\"react-native\");\nvar import_OneKotlinHostNativeComponent = __toESM(require(\"../specs/OneKotlinHostNativeComponent\"), 1);\nfunction KotlinSourceView(param) {\n var { source, view, contractHash, props } = param;\n var [contentSize, setContentSize] = (0, import_react.useState)();\n var rootStyle = import_react_native.StyleSheet.flatten(props === null || props === void 0 ? void 0 : props.style);\n var stretchedWidth = (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.width) != null || typeof (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.flex) === \"number\" && rootStyle.flex > 0 || typeof (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.flexGrow) === \"number\" && rootStyle.flexGrow > 0 || (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.alignSelf) === \"stretch\";\n var stretchedHeight = (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.height) != null || typeof (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.flex) === \"number\" && rootStyle.flex > 0 || typeof (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.flexGrow) === \"number\" && rootStyle.flexGrow > 0 || (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.alignSelf) === \"stretch\";\n return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_OneKotlinHostNativeComponent.default, {\n source,\n view,\n contractHash,\n intrinsicWidth: !stretchedWidth,\n intrinsicHeight: !stretchedHeight,\n // a callback travels as true; the composable's lambda reports its call\n props: JSON.stringify(props, function(_key, value) {\n return typeof value === \"function\" ? true : value;\n }),\n onHostEvent: function(event) {\n var callback = props[event.nativeEvent.name];\n if (typeof callback === \"function\") callback(...JSON.parse(event.nativeEvent.args));\n },\n onHostSizeChange: function(event) {\n setContentSize(event.nativeEvent);\n },\n style: [\n contentSize && {\n width: stretchedWidth || !contentSize.intrinsicWidth ? void 0 : contentSize.width,\n height: stretchedHeight ? void 0 : contentSize.height\n },\n props === null || props === void 0 ? void 0 : props.style\n ]\n });\n}\n//# sourceMappingURL=view.native.js.map\n"],"mappings":";;;AACA,IAAI,WAAW,OAAO;AACtB,IAAI,YAAY,OAAO;AACvB,IAAI,mBAAmB,OAAO;AAC9B,IAAI,oBAAoB,OAAO;AAC/B,IAAI,eAAe,OAAO;AAC1B,IAAI,eAAe,OAAO,UAAU;AACpC,IAAI,YAAY,QAAQ,QAAQ;CAC9B,KAAK,IAAI,QAAQ,KACf,UAAU,QAAQ,MAAM;EAAE,KAAK,IAAI;EAAO,YAAY;CAAK,CAAC;AAChE;AACA,IAAI,eAAe,IAAI,MAAM,QAAQ,SAAS;CAC5C,IAAI,QAAQ,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY;EAClE,KAAK,IAAI,OAAO,kBAAkB,IAAI,GACpC,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,QAAQ,QACzC,UAAU,IAAI,KAAK;GAAE,WAAW,KAAK;GAAM,YAAY,EAAE,OAAO,iBAAiB,MAAM,GAAG,MAAM,KAAK;EAAW,CAAC;CACvH;CACA,OAAO;AACT;AACA,IAAI,WAAW,KAAK,YAAY,YAAY,SAAS,OAAO,OAAO,SAAS,aAAa,GAAG,CAAC,IAAI,CAAC,GAAG,YAKnG,cAAc,CAAC,OAAO,CAAC,IAAI,aAAa,UAAU,QAAQ,WAAW;CAAE,OAAO;CAAK,YAAY;AAAK,CAAC,IAAI,QACzG,GACF;AACA,IAAI,gBAAgB,QAAQ,YAAY,UAAU,CAAC,GAAG,cAAc,EAAE,OAAO,KAAK,CAAC,GAAG,GAAG;AACzF,IAAI,sBAAsB,CAAC;AAC3B,SAAS,qBAAqB,EAC5B,wBAAwB,iBAC1B,CAAC;AACD,OAAO,UAAU,aAAa,mBAAmB;AACjD,IAAI,qBAAqB,QAAQ,mBAAmB;AACpD,IAAI,eAAe,QAAQ,OAAO;AAClC,IAAI,sBAAsB,QAAQ,cAAc;AAChD,IAAI,sCAAsC,QAAQ,QAAQ,iDAAuC,GAAG,CAAC;AACrG,SAAS,iBAAiB,OAAO;CAC/B,IAAI,EAAE,QAAQ,MAAM,cAAc,UAAU;CAC5C,IAAI,CAAC,aAAa,mBAAmB,GAAG,aAAa,SAAQ,CAAE;CAC/D,IAAI,YAAY,oBAAoB,WAAW,QAAQ,UAAU,QAAQ,UAAU,KAAK,IAAI,KAAK,IAAI,MAAM,KAAK;CAChH,IAAI,kBAAkB,cAAc,QAAQ,cAAc,KAAK,IAAI,KAAK,IAAI,UAAU,UAAU,QAAQ,QAAQ,cAAc,QAAQ,cAAc,KAAK,IAAI,KAAK,IAAI,UAAU,UAAU,YAAY,UAAU,OAAO,KAAK,QAAQ,cAAc,QAAQ,cAAc,KAAK,IAAI,KAAK,IAAI,UAAU,cAAc,YAAY,UAAU,WAAW,MAAM,cAAc,QAAQ,cAAc,KAAK,IAAI,KAAK,IAAI,UAAU,eAAe;CACxa,IAAI,mBAAmB,cAAc,QAAQ,cAAc,KAAK,IAAI,KAAK,IAAI,UAAU,WAAW,QAAQ,QAAQ,cAAc,QAAQ,cAAc,KAAK,IAAI,KAAK,IAAI,UAAU,UAAU,YAAY,UAAU,OAAO,KAAK,QAAQ,cAAc,QAAQ,cAAc,KAAK,IAAI,KAAK,IAAI,UAAU,cAAc,YAAY,UAAU,WAAW,MAAM,cAAc,QAAQ,cAAc,KAAK,IAAI,KAAK,IAAI,UAAU,eAAe;CAC1a,OAAuB,iBAAC,GAAG,mBAAmB,IAAG,CAAE,oCAAoC,SAAS;EAC9F;EACA;EACA;EACA,gBAAgB,CAAC;EACjB,iBAAiB,CAAC;EAElB,OAAO,KAAK,UAAU,OAAO,SAAS,MAAM,OAAO;GACjD,OAAO,OAAO,UAAU,aAAa,OAAO;EAC9C,CAAC;EACD,aAAa,SAAS,OAAO;GAC3B,IAAI,WAAW,MAAM,MAAM,YAAY;GACvC,IAAI,OAAO,aAAa,YAAY,SAAS,GAAG,KAAK,MAAM,MAAM,YAAY,IAAI,CAAC;EACpF;EACA,kBAAkB,SAAS,OAAO;GAChC,eAAe,MAAM,WAAW;EAClC;EACA,OAAO,CACL,eAAe;GACb,OAAO,kBAAkB,CAAC,YAAY,iBAAiB,KAAK,IAAI,YAAY;GAC5E,QAAQ,kBAAkB,KAAK,IAAI,YAAY;EACjD,GACA,UAAU,QAAQ,UAAU,KAAK,IAAI,KAAK,IAAI,MAAM,KACtD;CACF,CAAC;AACH"}
1
+ {"version":3,"file":"view.native.js","names":[],"sources":["cjs/platform/native-source/view.native.js"],"sourcesContent":["\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar view_native_exports = {};\n__export(view_native_exports, {\n KotlinSourceView: () => KotlinSourceView\n});\nmodule.exports = __toCommonJS(view_native_exports);\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar import_react = require(\"react\");\nvar import_react_native = require(\"react-native\");\nvar import_OneKotlinHostNativeComponent = __toESM(require(\"../specs/OneKotlinHostNativeComponent\"), 1);\nfunction KotlinSourceView(param) {\n var { source, view, contractHash, props } = param;\n var [contentSize, setContentSize] = (0, import_react.useState)();\n return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_react_native.View, {\n style: props.style,\n collapsable: false,\n children: [\n /* yoga uses the natural child size while retaining parent flex and stretch. */\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_native.View, {\n pointerEvents: \"none\",\n style: contentSize\n }),\n /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_OneKotlinHostNativeComponent.default, {\n source,\n view,\n contractHash,\n props: JSON.stringify(props, function(_key, value) {\n return typeof value === \"function\" ? true : value;\n }),\n onHostEvent: function(event) {\n var callback = props[event.nativeEvent.name];\n if (typeof callback === \"function\") callback(...JSON.parse(event.nativeEvent.args));\n },\n onHostSizeChange: function(event) {\n setContentSize({\n width: event.nativeEvent.width,\n height: event.nativeEvent.height\n });\n },\n style: import_react_native.StyleSheet.absoluteFill\n })\n ]\n });\n}\n//# sourceMappingURL=view.native.js.map\n"],"mappings":";;;AACA,IAAI,WAAW,OAAO;AACtB,IAAI,YAAY,OAAO;AACvB,IAAI,mBAAmB,OAAO;AAC9B,IAAI,oBAAoB,OAAO;AAC/B,IAAI,eAAe,OAAO;AAC1B,IAAI,eAAe,OAAO,UAAU;AACpC,IAAI,YAAY,QAAQ,QAAQ;CAC9B,KAAK,IAAI,QAAQ,KACf,UAAU,QAAQ,MAAM;EAAE,KAAK,IAAI;EAAO,YAAY;CAAK,CAAC;AAChE;AACA,IAAI,eAAe,IAAI,MAAM,QAAQ,SAAS;CAC5C,IAAI,QAAQ,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY;EAClE,KAAK,IAAI,OAAO,kBAAkB,IAAI,GACpC,IAAI,CAAC,aAAa,KAAK,IAAI,GAAG,KAAK,QAAQ,QACzC,UAAU,IAAI,KAAK;GAAE,WAAW,KAAK;GAAM,YAAY,EAAE,OAAO,iBAAiB,MAAM,GAAG,MAAM,KAAK;EAAW,CAAC;CACvH;CACA,OAAO;AACT;AACA,IAAI,WAAW,KAAK,YAAY,YAAY,SAAS,OAAO,OAAO,SAAS,aAAa,GAAG,CAAC,IAAI,CAAC,GAAG,YAKnG,cAAc,CAAC,OAAO,CAAC,IAAI,aAAa,UAAU,QAAQ,WAAW;CAAE,OAAO;CAAK,YAAY;AAAK,CAAC,IAAI,QACzG,GACF;AACA,IAAI,gBAAgB,QAAQ,YAAY,UAAU,CAAC,GAAG,cAAc,EAAE,OAAO,KAAK,CAAC,GAAG,GAAG;AACzF,IAAI,sBAAsB,CAAC;AAC3B,SAAS,qBAAqB,EAC5B,wBAAwB,iBAC1B,CAAC;AACD,OAAO,UAAU,aAAa,mBAAmB;AACjD,IAAI,qBAAqB,QAAQ,mBAAmB;AACpD,IAAI,eAAe,QAAQ,OAAO;AAClC,IAAI,sBAAsB,QAAQ,cAAc;AAChD,IAAI,sCAAsC,QAAQ,QAAQ,iDAAuC,GAAG,CAAC;AACrG,SAAS,iBAAiB,OAAO;CAC/B,IAAI,EAAE,QAAQ,MAAM,cAAc,UAAU;CAC5C,IAAI,CAAC,aAAa,mBAAmB,GAAG,aAAa,SAAQ,CAAE;CAC/D,OAAuB,iBAAC,GAAG,mBAAmB,KAAI,CAAE,oBAAoB,MAAM;EAC5E,OAAO,MAAM;EACb,aAAa;EACb,UAAU,CAEQ,iBAAC,GAAG,mBAAmB,IAAG,CAAE,oBAAoB,MAAM;GACpE,eAAe;GACf,OAAO;EACT,CAAC,GACe,iBAAC,GAAG,mBAAmB,IAAG,CAAE,oCAAoC,SAAS;GACvF;GACA;GACA;GACA,OAAO,KAAK,UAAU,OAAO,SAAS,MAAM,OAAO;IACjD,OAAO,OAAO,UAAU,aAAa,OAAO;GAC9C,CAAC;GACD,aAAa,SAAS,OAAO;IAC3B,IAAI,WAAW,MAAM,MAAM,YAAY;IACvC,IAAI,OAAO,aAAa,YAAY,SAAS,GAAG,KAAK,MAAM,MAAM,YAAY,IAAI,CAAC;GACpF;GACA,kBAAkB,SAAS,OAAO;IAChC,eAAe;KACb,OAAO,MAAM,YAAY;KACzB,QAAQ,MAAM,YAAY;IAC5B,CAAC;GACH;GACA,OAAO,oBAAoB,WAAW;EACxC,CAAC,CACH;CACF,CAAC;AACH"}
@@ -41,8 +41,6 @@ const __INTERNAL_VIEW_CONFIG = {
41
41
  view: true,
42
42
  contractHash: true,
43
43
  props: true,
44
- intrinsicWidth: true,
45
- intrinsicHeight: true,
46
44
  ...ConditionallyIgnoredEventHandlers({
47
45
  onHostEvent: true,
48
46
  onHostSizeChange: true
@@ -41,8 +41,6 @@ const __INTERNAL_VIEW_CONFIG = {
41
41
  view: true,
42
42
  contractHash: true,
43
43
  props: true,
44
- intrinsicWidth: true,
45
- intrinsicHeight: true,
46
44
  ...ConditionallyIgnoredEventHandlers({
47
45
  onHostEvent: true,
48
46
  onHostSizeChange: true
@@ -41,8 +41,6 @@ const __INTERNAL_VIEW_CONFIG = {
41
41
  view: true,
42
42
  contractHash: true,
43
43
  props: true,
44
- intrinsicWidth: true,
45
- intrinsicHeight: true,
46
44
  ...ConditionallyIgnoredEventHandlers({
47
45
  onHostEvent: true,
48
46
  onHostSizeChange: true
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["src/platform/specs/OneKotlinHostNativeComponent.ts"],
4
- "sourcesContent": ["// the device host for a composable imported from a react native `.kt` file:\n// the app's generated view dispatch renders it with the element's props as\n// json text, and reports each callback call back as an event.\nimport type { ViewProps } from 'react-native';\nimport type { DirectEventHandler, Double } from 'react-native/Libraries/Types/CodegenTypes';\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\ntype KotlinHostEvent = Readonly<{\n name: string;\n args: string;\n}>;\ntype KotlinHostSizeEvent = Readonly<{\n width: Double;\n height: Double;\n intrinsicWidth: boolean;\n}>;\ninterface NativeProps extends ViewProps {\n // the kotlin source id the bundler derived from the imported file's path\n source: string;\n view: string;\n contractHash: string;\n props: string;\n intrinsicWidth: boolean;\n intrinsicHeight: boolean;\n onHostEvent?: DirectEventHandler<KotlinHostEvent>;\n onHostSizeChange?: DirectEventHandler<KotlinHostSizeEvent>;\n}\nconst NativeComponentRegistry = require('react-native/Libraries/NativeComponent/NativeComponentRegistry');\nconst {\n ConditionallyIgnoredEventHandlers\n} = require('react-native/Libraries/NativeComponent/ViewConfigIgnore');\nlet nativeComponentName = 'OneKotlinHost';\nexport const __INTERNAL_VIEW_CONFIG = {\n uiViewClassName: \"OneKotlinHost\",\n directEventTypes: {\n topHostEvent: {\n registrationName: \"onHostEvent\"\n },\n topHostSizeChange: {\n registrationName: \"onHostSizeChange\"\n }\n },\n validAttributes: {\n source: true,\n view: true,\n contractHash: true,\n props: true,\n intrinsicWidth: true,\n intrinsicHeight: true,\n ...ConditionallyIgnoredEventHandlers({\n onHostEvent: true,\n onHostSizeChange: true\n })\n }\n};\nexport default NativeComponentRegistry.get(nativeComponentName, () => __INTERNAL_VIEW_CONFIG);"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA0BA,MAAM,0BAA0B,QAAQ,gEAAgE;AACxG,MAAM;AAAA,EACJ;AACF,IAAI,QAAQ,yDAAyD;AACrE,IAAI,sBAAsB;AACnB,MAAM,yBAAyB;AAAA,EACpC,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,IAChB,cAAc;AAAA,MACZ,kBAAkB;AAAA,IACpB;AAAA,IACA,mBAAmB;AAAA,MACjB,kBAAkB;AAAA,IACpB;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,cAAc;AAAA,IACd,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,IACjB,GAAG,kCAAkC;AAAA,MACnC,aAAa;AAAA,MACb,kBAAkB;AAAA,IACpB,CAAC;AAAA,EACH;AACF;AACA,IAAO,uCAAQ,wBAAwB,IAAI,qBAAqB,MAAM,sBAAsB;",
4
+ "sourcesContent": ["// the device host for a composable imported from a react native `.kt` file:\n// the app's generated view dispatch renders it with the element's props as\n// json text, and reports each callback call back as an event.\nimport type { ViewProps } from 'react-native';\nimport type { DirectEventHandler, Double } from 'react-native/Libraries/Types/CodegenTypes';\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\ntype KotlinHostEvent = Readonly<{\n name: string;\n args: string;\n}>;\ntype KotlinHostSizeEvent = Readonly<{\n width: Double;\n height: Double;\n}>;\ninterface NativeProps extends ViewProps {\n // the kotlin source id the bundler derived from the imported file's path\n source: string;\n view: string;\n contractHash: string;\n props: string;\n onHostEvent?: DirectEventHandler<KotlinHostEvent>;\n onHostSizeChange?: DirectEventHandler<KotlinHostSizeEvent>;\n}\nconst NativeComponentRegistry = require('react-native/Libraries/NativeComponent/NativeComponentRegistry');\nconst {\n ConditionallyIgnoredEventHandlers\n} = require('react-native/Libraries/NativeComponent/ViewConfigIgnore');\nlet nativeComponentName = 'OneKotlinHost';\nexport const __INTERNAL_VIEW_CONFIG = {\n uiViewClassName: \"OneKotlinHost\",\n directEventTypes: {\n topHostEvent: {\n registrationName: \"onHostEvent\"\n },\n topHostSizeChange: {\n registrationName: \"onHostSizeChange\"\n }\n },\n validAttributes: {\n source: true,\n view: true,\n contractHash: true,\n props: true,\n ...ConditionallyIgnoredEventHandlers({\n onHostEvent: true,\n onHostSizeChange: true\n })\n }\n};\nexport default NativeComponentRegistry.get(nativeComponentName, () => __INTERNAL_VIEW_CONFIG);"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAuBA,MAAM,0BAA0B,QAAQ,gEAAgE;AACxG,MAAM;AAAA,EACJ;AACF,IAAI,QAAQ,yDAAyD;AACrE,IAAI,sBAAsB;AACnB,MAAM,yBAAyB;AAAA,EACpC,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,IAChB,cAAc;AAAA,MACZ,kBAAkB;AAAA,IACpB;AAAA,IACA,mBAAmB;AAAA,MACjB,kBAAkB;AAAA,IACpB;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,cAAc;AAAA,IACd,OAAO;AAAA,IACP,GAAG,kCAAkC;AAAA,MACnC,aAAa;AAAA,MACb,kBAAkB;AAAA,IACpB,CAAC;AAAA,EACH;AACF;AACA,IAAO,uCAAQ,wBAAwB,IAAI,qBAAqB,MAAM,sBAAsB;",
6
6
  "names": []
7
7
  }
@@ -1,34 +1,36 @@
1
- import { jsx } from "react/jsx-runtime";
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { useState } from "react";
3
- import { StyleSheet } from "react-native";
3
+ import { StyleSheet, View } from "react-native";
4
4
  import NativeKotlinHost from "../specs/OneKotlinHostNativeComponent.native.js";
5
5
 
6
6
  function KotlinSourceView(param) {
7
7
  var { source, view, contractHash, props } = param;
8
8
  var [contentSize, setContentSize] = useState();
9
- var rootStyle = StyleSheet.flatten(props === null || props === void 0 ? void 0 : props.style);
10
- var stretchedWidth = (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.width) != null || typeof (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.flex) === "number" && rootStyle.flex > 0 || typeof (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.flexGrow) === "number" && rootStyle.flexGrow > 0 || (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.alignSelf) === "stretch";
11
- var stretchedHeight = (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.height) != null || typeof (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.flex) === "number" && rootStyle.flex > 0 || typeof (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.flexGrow) === "number" && rootStyle.flexGrow > 0 || (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.alignSelf) === "stretch";
12
- return /* @__PURE__ */ jsx(NativeKotlinHost, {
13
- source,
14
- view,
15
- contractHash,
16
- intrinsicWidth: !stretchedWidth,
17
- intrinsicHeight: !stretchedHeight,
18
- props: JSON.stringify(props, function(_key, value) {
19
- return typeof value === "function" ? true : value;
20
- }),
21
- onHostEvent: function(event) {
22
- var callback = props[event.nativeEvent.name];
23
- if (typeof callback === "function") callback(...JSON.parse(event.nativeEvent.args));
24
- },
25
- onHostSizeChange: function(event) {
26
- setContentSize(event.nativeEvent);
27
- },
28
- style: [contentSize && {
29
- width: stretchedWidth || !contentSize.intrinsicWidth ? void 0 : contentSize.width,
30
- height: stretchedHeight ? void 0 : contentSize.height
31
- }, props === null || props === void 0 ? void 0 : props.style]
9
+ return /* @__PURE__ */ jsxs(View, {
10
+ style: props.style,
11
+ collapsable: false,
12
+ children: [/* @__PURE__ */ jsx(View, {
13
+ pointerEvents: "none",
14
+ style: contentSize
15
+ }), /* @__PURE__ */ jsx(NativeKotlinHost, {
16
+ source,
17
+ view,
18
+ contractHash,
19
+ props: JSON.stringify(props, function(_key, value) {
20
+ return typeof value === "function" ? true : value;
21
+ }),
22
+ onHostEvent: function(event) {
23
+ var callback = props[event.nativeEvent.name];
24
+ if (typeof callback === "function") callback(...JSON.parse(event.nativeEvent.args));
25
+ },
26
+ onHostSizeChange: function(event) {
27
+ setContentSize({
28
+ width: event.nativeEvent.width,
29
+ height: event.nativeEvent.height
30
+ });
31
+ },
32
+ style: StyleSheet.absoluteFill
33
+ })]
32
34
  });
33
35
  }
34
36
 
@@ -1 +1 @@
1
- {"version":3,"file":"view.native.js","names":[],"sources":["esm/platform/native-source/view.native.js"],"sourcesContent":["import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useState } from \"react\";\nimport { StyleSheet } from \"react-native\";\nimport NativeKotlinHost from \"../specs/OneKotlinHostNativeComponent\";\nfunction KotlinSourceView(param) {\n var { source, view, contractHash, props } = param;\n var [contentSize, setContentSize] = useState();\n var rootStyle = StyleSheet.flatten(props === null || props === void 0 ? void 0 : props.style);\n var stretchedWidth = (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.width) != null || typeof (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.flex) === \"number\" && rootStyle.flex > 0 || typeof (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.flexGrow) === \"number\" && rootStyle.flexGrow > 0 || (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.alignSelf) === \"stretch\";\n var stretchedHeight = (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.height) != null || typeof (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.flex) === \"number\" && rootStyle.flex > 0 || typeof (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.flexGrow) === \"number\" && rootStyle.flexGrow > 0 || (rootStyle === null || rootStyle === void 0 ? void 0 : rootStyle.alignSelf) === \"stretch\";\n return /* @__PURE__ */ _jsx(NativeKotlinHost, {\n source,\n view,\n contractHash,\n intrinsicWidth: !stretchedWidth,\n intrinsicHeight: !stretchedHeight,\n // a callback travels as true; the composable's lambda reports its call\n props: JSON.stringify(props, function(_key, value) {\n return typeof value === \"function\" ? true : value;\n }),\n onHostEvent: function(event) {\n var callback = props[event.nativeEvent.name];\n if (typeof callback === \"function\") callback(...JSON.parse(event.nativeEvent.args));\n },\n onHostSizeChange: function(event) {\n setContentSize(event.nativeEvent);\n },\n style: [\n contentSize && {\n width: stretchedWidth || !contentSize.intrinsicWidth ? void 0 : contentSize.width,\n height: stretchedHeight ? void 0 : contentSize.height\n },\n props === null || props === void 0 ? void 0 : props.style\n ]\n });\n}\nexport {\n KotlinSourceView\n};\n//# sourceMappingURL=view.native.js.map\n"],"mappings":";;;;;;AAIA,SAAS,iBAAiB,OAAO;CAC/B,IAAI,EAAE,QAAQ,MAAM,cAAc,UAAU;CAC5C,IAAI,CAAC,aAAa,kBAAkB,SAAS;CAC7C,IAAI,YAAY,WAAW,QAAQ,UAAU,QAAQ,UAAU,KAAK,IAAI,KAAK,IAAI,MAAM,KAAK;CAC5F,IAAI,kBAAkB,cAAc,QAAQ,cAAc,KAAK,IAAI,KAAK,IAAI,UAAU,UAAU,QAAQ,QAAQ,cAAc,QAAQ,cAAc,KAAK,IAAI,KAAK,IAAI,UAAU,UAAU,YAAY,UAAU,OAAO,KAAK,QAAQ,cAAc,QAAQ,cAAc,KAAK,IAAI,KAAK,IAAI,UAAU,cAAc,YAAY,UAAU,WAAW,MAAM,cAAc,QAAQ,cAAc,KAAK,IAAI,KAAK,IAAI,UAAU,eAAe;CACxa,IAAI,mBAAmB,cAAc,QAAQ,cAAc,KAAK,IAAI,KAAK,IAAI,UAAU,WAAW,QAAQ,QAAQ,cAAc,QAAQ,cAAc,KAAK,IAAI,KAAK,IAAI,UAAU,UAAU,YAAY,UAAU,OAAO,KAAK,QAAQ,cAAc,QAAQ,cAAc,KAAK,IAAI,KAAK,IAAI,UAAU,cAAc,YAAY,UAAU,WAAW,MAAM,cAAc,QAAQ,cAAc,KAAK,IAAI,KAAK,IAAI,UAAU,eAAe;CAC1a,OAAuB,oBAAK,kBAAkB;EAC5C;EACA;EACA;EACA,gBAAgB,CAAC;EACjB,iBAAiB,CAAC;EAElB,OAAO,KAAK,UAAU,OAAO,SAAS,MAAM,OAAO;GACjD,OAAO,OAAO,UAAU,aAAa,OAAO;EAC9C,CAAC;EACD,aAAa,SAAS,OAAO;GAC3B,IAAI,WAAW,MAAM,MAAM,YAAY;GACvC,IAAI,OAAO,aAAa,YAAY,SAAS,GAAG,KAAK,MAAM,MAAM,YAAY,IAAI,CAAC;EACpF;EACA,kBAAkB,SAAS,OAAO;GAChC,eAAe,MAAM,WAAW;EAClC;EACA,OAAO,CACL,eAAe;GACb,OAAO,kBAAkB,CAAC,YAAY,iBAAiB,KAAK,IAAI,YAAY;GAC5E,QAAQ,kBAAkB,KAAK,IAAI,YAAY;EACjD,GACA,UAAU,QAAQ,UAAU,KAAK,IAAI,KAAK,IAAI,MAAM,KACtD;CACF,CAAC;AACH"}
1
+ {"version":3,"file":"view.native.js","names":[],"sources":["esm/platform/native-source/view.native.js"],"sourcesContent":["import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useState } from \"react\";\nimport { StyleSheet, View } from \"react-native\";\nimport NativeKotlinHost from \"../specs/OneKotlinHostNativeComponent\";\nfunction KotlinSourceView(param) {\n var { source, view, contractHash, props } = param;\n var [contentSize, setContentSize] = useState();\n return /* @__PURE__ */ _jsxs(View, {\n style: props.style,\n collapsable: false,\n children: [\n /* yoga uses the natural child size while retaining parent flex and stretch. */\n /* @__PURE__ */ _jsx(View, {\n pointerEvents: \"none\",\n style: contentSize\n }),\n /* @__PURE__ */ _jsx(NativeKotlinHost, {\n source,\n view,\n contractHash,\n props: JSON.stringify(props, function(_key, value) {\n return typeof value === \"function\" ? true : value;\n }),\n onHostEvent: function(event) {\n var callback = props[event.nativeEvent.name];\n if (typeof callback === \"function\") callback(...JSON.parse(event.nativeEvent.args));\n },\n onHostSizeChange: function(event) {\n setContentSize({\n width: event.nativeEvent.width,\n height: event.nativeEvent.height\n });\n },\n style: StyleSheet.absoluteFill\n })\n ]\n });\n}\nexport {\n KotlinSourceView\n};\n//# sourceMappingURL=view.native.js.map\n"],"mappings":";;;;;;AAIA,SAAS,iBAAiB,OAAO;CAC/B,IAAI,EAAE,QAAQ,MAAM,cAAc,UAAU;CAC5C,IAAI,CAAC,aAAa,kBAAkB,SAAS;CAC7C,OAAuB,qBAAM,MAAM;EACjC,OAAO,MAAM;EACb,aAAa;EACb,UAAU,CAEQ,oBAAK,MAAM;GACzB,eAAe;GACf,OAAO;EACT,CAAC,GACe,oBAAK,kBAAkB;GACrC;GACA;GACA;GACA,OAAO,KAAK,UAAU,OAAO,SAAS,MAAM,OAAO;IACjD,OAAO,OAAO,UAAU,aAAa,OAAO;GAC9C,CAAC;GACD,aAAa,SAAS,OAAO;IAC3B,IAAI,WAAW,MAAM,MAAM,YAAY;IACvC,IAAI,OAAO,aAAa,YAAY,SAAS,GAAG,KAAK,MAAM,MAAM,YAAY,IAAI,CAAC;GACpF;GACA,kBAAkB,SAAS,OAAO;IAChC,eAAe;KACb,OAAO,MAAM,YAAY;KACzB,QAAQ,MAAM,YAAY;IAC5B,CAAC;GACH;GACA,OAAO,WAAW;EACpB,CAAC,CACH;CACF,CAAC;AACH"}
@@ -18,8 +18,6 @@ const __INTERNAL_VIEW_CONFIG = {
18
18
  view: true,
19
19
  contractHash: true,
20
20
  props: true,
21
- intrinsicWidth: true,
22
- intrinsicHeight: true,
23
21
  ...ConditionallyIgnoredEventHandlers({
24
22
  onHostEvent: true,
25
23
  onHostSizeChange: true
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["src/platform/specs/OneKotlinHostNativeComponent.ts"],
4
- "sourcesContent": ["// the device host for a composable imported from a react native `.kt` file:\n// the app's generated view dispatch renders it with the element's props as\n// json text, and reports each callback call back as an event.\nimport type { ViewProps } from 'react-native';\nimport type { DirectEventHandler, Double } from 'react-native/Libraries/Types/CodegenTypes';\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\ntype KotlinHostEvent = Readonly<{\n name: string;\n args: string;\n}>;\ntype KotlinHostSizeEvent = Readonly<{\n width: Double;\n height: Double;\n intrinsicWidth: boolean;\n}>;\ninterface NativeProps extends ViewProps {\n // the kotlin source id the bundler derived from the imported file's path\n source: string;\n view: string;\n contractHash: string;\n props: string;\n intrinsicWidth: boolean;\n intrinsicHeight: boolean;\n onHostEvent?: DirectEventHandler<KotlinHostEvent>;\n onHostSizeChange?: DirectEventHandler<KotlinHostSizeEvent>;\n}\nconst NativeComponentRegistry = require('react-native/Libraries/NativeComponent/NativeComponentRegistry');\nconst {\n ConditionallyIgnoredEventHandlers\n} = require('react-native/Libraries/NativeComponent/ViewConfigIgnore');\nlet nativeComponentName = 'OneKotlinHost';\nexport const __INTERNAL_VIEW_CONFIG = {\n uiViewClassName: \"OneKotlinHost\",\n directEventTypes: {\n topHostEvent: {\n registrationName: \"onHostEvent\"\n },\n topHostSizeChange: {\n registrationName: \"onHostSizeChange\"\n }\n },\n validAttributes: {\n source: true,\n view: true,\n contractHash: true,\n props: true,\n intrinsicWidth: true,\n intrinsicHeight: true,\n ...ConditionallyIgnoredEventHandlers({\n onHostEvent: true,\n onHostSizeChange: true\n })\n }\n};\nexport default NativeComponentRegistry.get(nativeComponentName, () => __INTERNAL_VIEW_CONFIG);"],
5
- "mappings": "AA0BA,MAAM,0BAA0B,QAAQ,gEAAgE;AACxG,MAAM;AAAA,EACJ;AACF,IAAI,QAAQ,yDAAyD;AACrE,IAAI,sBAAsB;AACnB,MAAM,yBAAyB;AAAA,EACpC,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,IAChB,cAAc;AAAA,MACZ,kBAAkB;AAAA,IACpB;AAAA,IACA,mBAAmB;AAAA,MACjB,kBAAkB;AAAA,IACpB;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,cAAc;AAAA,IACd,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,IACjB,GAAG,kCAAkC;AAAA,MACnC,aAAa;AAAA,MACb,kBAAkB;AAAA,IACpB,CAAC;AAAA,EACH;AACF;AACA,IAAO,uCAAQ,wBAAwB,IAAI,qBAAqB,MAAM,sBAAsB;",
4
+ "sourcesContent": ["// the device host for a composable imported from a react native `.kt` file:\n// the app's generated view dispatch renders it with the element's props as\n// json text, and reports each callback call back as an event.\nimport type { ViewProps } from 'react-native';\nimport type { DirectEventHandler, Double } from 'react-native/Libraries/Types/CodegenTypes';\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\ntype KotlinHostEvent = Readonly<{\n name: string;\n args: string;\n}>;\ntype KotlinHostSizeEvent = Readonly<{\n width: Double;\n height: Double;\n}>;\ninterface NativeProps extends ViewProps {\n // the kotlin source id the bundler derived from the imported file's path\n source: string;\n view: string;\n contractHash: string;\n props: string;\n onHostEvent?: DirectEventHandler<KotlinHostEvent>;\n onHostSizeChange?: DirectEventHandler<KotlinHostSizeEvent>;\n}\nconst NativeComponentRegistry = require('react-native/Libraries/NativeComponent/NativeComponentRegistry');\nconst {\n ConditionallyIgnoredEventHandlers\n} = require('react-native/Libraries/NativeComponent/ViewConfigIgnore');\nlet nativeComponentName = 'OneKotlinHost';\nexport const __INTERNAL_VIEW_CONFIG = {\n uiViewClassName: \"OneKotlinHost\",\n directEventTypes: {\n topHostEvent: {\n registrationName: \"onHostEvent\"\n },\n topHostSizeChange: {\n registrationName: \"onHostSizeChange\"\n }\n },\n validAttributes: {\n source: true,\n view: true,\n contractHash: true,\n props: true,\n ...ConditionallyIgnoredEventHandlers({\n onHostEvent: true,\n onHostSizeChange: true\n })\n }\n};\nexport default NativeComponentRegistry.get(nativeComponentName, () => __INTERNAL_VIEW_CONFIG);"],
5
+ "mappings": "AAuBA,MAAM,0BAA0B,QAAQ,gEAAgE;AACxG,MAAM;AAAA,EACJ;AACF,IAAI,QAAQ,yDAAyD;AACrE,IAAI,sBAAsB;AACnB,MAAM,yBAAyB;AAAA,EACpC,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,IAChB,cAAc;AAAA,MACZ,kBAAkB;AAAA,IACpB;AAAA,IACA,mBAAmB;AAAA,MACjB,kBAAkB;AAAA,IACpB;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,cAAc;AAAA,IACd,OAAO;AAAA,IACP,GAAG,kCAAkC;AAAA,MACnC,aAAa;AAAA,MACb,kBAAkB;AAAA,IACpB,CAAC;AAAA,EACH;AACF;AACA,IAAO,uCAAQ,wBAAwB,IAAI,qBAAqB,MAAM,sBAAsB;",
6
6
  "names": []
7
7
  }
@@ -18,8 +18,6 @@ const __INTERNAL_VIEW_CONFIG = {
18
18
  view: true,
19
19
  contractHash: true,
20
20
  props: true,
21
- intrinsicWidth: true,
22
- intrinsicHeight: true,
23
21
  ...ConditionallyIgnoredEventHandlers({
24
22
  onHostEvent: true,
25
23
  onHostSizeChange: true
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["src/platform/specs/OneKotlinHostNativeComponent.ts"],
4
- "sourcesContent": ["// the device host for a composable imported from a react native `.kt` file:\n// the app's generated view dispatch renders it with the element's props as\n// json text, and reports each callback call back as an event.\nimport type { ViewProps } from 'react-native';\nimport type { DirectEventHandler, Double } from 'react-native/Libraries/Types/CodegenTypes';\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\ntype KotlinHostEvent = Readonly<{\n name: string;\n args: string;\n}>;\ntype KotlinHostSizeEvent = Readonly<{\n width: Double;\n height: Double;\n intrinsicWidth: boolean;\n}>;\ninterface NativeProps extends ViewProps {\n // the kotlin source id the bundler derived from the imported file's path\n source: string;\n view: string;\n contractHash: string;\n props: string;\n intrinsicWidth: boolean;\n intrinsicHeight: boolean;\n onHostEvent?: DirectEventHandler<KotlinHostEvent>;\n onHostSizeChange?: DirectEventHandler<KotlinHostSizeEvent>;\n}\nconst NativeComponentRegistry = require('react-native/Libraries/NativeComponent/NativeComponentRegistry');\nconst {\n ConditionallyIgnoredEventHandlers\n} = require('react-native/Libraries/NativeComponent/ViewConfigIgnore');\nlet nativeComponentName = 'OneKotlinHost';\nexport const __INTERNAL_VIEW_CONFIG = {\n uiViewClassName: \"OneKotlinHost\",\n directEventTypes: {\n topHostEvent: {\n registrationName: \"onHostEvent\"\n },\n topHostSizeChange: {\n registrationName: \"onHostSizeChange\"\n }\n },\n validAttributes: {\n source: true,\n view: true,\n contractHash: true,\n props: true,\n intrinsicWidth: true,\n intrinsicHeight: true,\n ...ConditionallyIgnoredEventHandlers({\n onHostEvent: true,\n onHostSizeChange: true\n })\n }\n};\nexport default NativeComponentRegistry.get(nativeComponentName, () => __INTERNAL_VIEW_CONFIG);"],
5
- "mappings": "AA0BA,MAAM,0BAA0B,QAAQ,gEAAgE;AACxG,MAAM;AAAA,EACJ;AACF,IAAI,QAAQ,yDAAyD;AACrE,IAAI,sBAAsB;AACnB,MAAM,yBAAyB;AAAA,EACpC,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,IAChB,cAAc;AAAA,MACZ,kBAAkB;AAAA,IACpB;AAAA,IACA,mBAAmB;AAAA,MACjB,kBAAkB;AAAA,IACpB;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,cAAc;AAAA,IACd,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,IACjB,GAAG,kCAAkC;AAAA,MACnC,aAAa;AAAA,MACb,kBAAkB;AAAA,IACpB,CAAC;AAAA,EACH;AACF;AACA,IAAO,uCAAQ,wBAAwB,IAAI,qBAAqB,MAAM,sBAAsB;",
4
+ "sourcesContent": ["// the device host for a composable imported from a react native `.kt` file:\n// the app's generated view dispatch renders it with the element's props as\n// json text, and reports each callback call back as an event.\nimport type { ViewProps } from 'react-native';\nimport type { DirectEventHandler, Double } from 'react-native/Libraries/Types/CodegenTypes';\nimport codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent';\ntype KotlinHostEvent = Readonly<{\n name: string;\n args: string;\n}>;\ntype KotlinHostSizeEvent = Readonly<{\n width: Double;\n height: Double;\n}>;\ninterface NativeProps extends ViewProps {\n // the kotlin source id the bundler derived from the imported file's path\n source: string;\n view: string;\n contractHash: string;\n props: string;\n onHostEvent?: DirectEventHandler<KotlinHostEvent>;\n onHostSizeChange?: DirectEventHandler<KotlinHostSizeEvent>;\n}\nconst NativeComponentRegistry = require('react-native/Libraries/NativeComponent/NativeComponentRegistry');\nconst {\n ConditionallyIgnoredEventHandlers\n} = require('react-native/Libraries/NativeComponent/ViewConfigIgnore');\nlet nativeComponentName = 'OneKotlinHost';\nexport const __INTERNAL_VIEW_CONFIG = {\n uiViewClassName: \"OneKotlinHost\",\n directEventTypes: {\n topHostEvent: {\n registrationName: \"onHostEvent\"\n },\n topHostSizeChange: {\n registrationName: \"onHostSizeChange\"\n }\n },\n validAttributes: {\n source: true,\n view: true,\n contractHash: true,\n props: true,\n ...ConditionallyIgnoredEventHandlers({\n onHostEvent: true,\n onHostSizeChange: true\n })\n }\n};\nexport default NativeComponentRegistry.get(nativeComponentName, () => __INTERNAL_VIEW_CONFIG);"],
5
+ "mappings": "AAuBA,MAAM,0BAA0B,QAAQ,gEAAgE;AACxG,MAAM;AAAA,EACJ;AACF,IAAI,QAAQ,yDAAyD;AACrE,IAAI,sBAAsB;AACnB,MAAM,yBAAyB;AAAA,EACpC,iBAAiB;AAAA,EACjB,kBAAkB;AAAA,IAChB,cAAc;AAAA,MACZ,kBAAkB;AAAA,IACpB;AAAA,IACA,mBAAmB;AAAA,MACjB,kBAAkB;AAAA,IACpB;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,cAAc;AAAA,IACd,OAAO;AAAA,IACP,GAAG,kCAAkC;AAAA,MACnC,aAAa;AAAA,MACb,kBAAkB;AAAA,IACpB,CAAC;AAAA,EACH;AACF;AACA,IAAO,uCAAQ,wBAAwB,IAAI,qBAAqB,MAAM,sBAAsB;",
6
6
  "names": []
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "one",
3
- "version": "2.0.0-beta.158.1",
3
+ "version": "2.0.0-beta.159.1",
4
4
  "description": "One is a React framework for web, iOS, and Android apps.",
5
5
  "license": "BSD-3-Clause",
6
6
  "sideEffects": [
@@ -218,18 +218,18 @@
218
218
  "@react-navigation/native-stack": "8.0.0-alpha.52",
219
219
  "@react-navigation/routers": "8.0.0-alpha.17",
220
220
  "@ungap/structured-clone": "^1.2.0",
221
- "@vxrn/color-scheme": "2.0.0-beta.158.1",
222
- "@vxrn/compiler": "2.0.0-beta.158.1",
223
- "@vxrn/resolve": "2.0.0-beta.158.1",
224
- "@vxrn/tslib-lite": "2.0.0-beta.158.1",
225
- "@vxrn/use-isomorphic-layout-effect": "2.0.0-beta.158.1",
226
- "@vxrn/utils": "2.0.0-beta.158.1",
227
- "@vxrn/vite-plugin-metro": "2.0.0-beta.158.1",
221
+ "@vxrn/color-scheme": "2.0.0-beta.159.1",
222
+ "@vxrn/compiler": "2.0.0-beta.159.1",
223
+ "@vxrn/resolve": "2.0.0-beta.159.1",
224
+ "@vxrn/tslib-lite": "2.0.0-beta.159.1",
225
+ "@vxrn/use-isomorphic-layout-effect": "2.0.0-beta.159.1",
226
+ "@vxrn/utils": "2.0.0-beta.159.1",
227
+ "@vxrn/vite-plugin-metro": "2.0.0-beta.159.1",
228
228
  "babel-dead-code-elimination": "1.0.10",
229
229
  "babel-plugin-module-resolver": "^5.0.2",
230
230
  "citty": "^0.1.6",
231
231
  "core-js": "^3.38.1",
232
- "create-vxrn": "2.0.0-beta.158.1",
232
+ "create-vxrn": "2.0.0-beta.159.1",
233
233
  "escape-string-regexp": "^5.0.0",
234
234
  "fast-deep-equal": "^3.1.3",
235
235
  "fast-glob": "^3.3.3",
@@ -251,7 +251,7 @@
251
251
  "tsconfig-paths": "^4",
252
252
  "use-latest-callback": "^0.2.3",
253
253
  "vite": "^8.2.2",
254
- "vxrn": "2.0.0-beta.158.1",
254
+ "vxrn": "2.0.0-beta.159.1",
255
255
  "web-streams-polyfill": "^4.3.0",
256
256
  "ws": "^8.21.0",
257
257
  "xxhashjs": "^0.2.2"
@@ -1,51 +1,41 @@
1
- // the component a device build answers `import { X } from './X.kt'` with: the
2
- // composable compiled into the app, rendered by the kotlin host view.
3
1
  import { useState } from 'react'
4
- import { StyleSheet } from 'react-native'
2
+ import { StyleSheet, View } from 'react-native'
5
3
  import NativeKotlinHost from '../specs/OneKotlinHostNativeComponent'
6
4
  import type { KotlinSourceViewProps } from './viewTypes'
7
5
 
8
6
  export type { KotlinSourceViewProps } from './viewTypes'
9
7
 
10
- export function KotlinSourceView({ source, view, contractHash, props }: KotlinSourceViewProps) {
11
- const [contentSize, setContentSize] = useState<{ width: number; height: number; intrinsicWidth: boolean }>()
12
- const rootStyle = StyleSheet.flatten((props as any)?.style)
13
-
14
- const stretchedWidth =
15
- rootStyle?.width != null ||
16
- (typeof rootStyle?.flex === 'number' && rootStyle.flex > 0) ||
17
- (typeof rootStyle?.flexGrow === 'number' && rootStyle.flexGrow > 0) ||
18
- rootStyle?.alignSelf === 'stretch'
19
-
20
- const stretchedHeight =
21
- rootStyle?.height != null ||
22
- (typeof rootStyle?.flex === 'number' && rootStyle.flex > 0) ||
23
- (typeof rootStyle?.flexGrow === 'number' && rootStyle.flexGrow > 0) ||
24
- rootStyle?.alignSelf === 'stretch'
25
-
8
+ export function KotlinSourceView({
9
+ source,
10
+ view,
11
+ contractHash,
12
+ props,
13
+ }: KotlinSourceViewProps) {
14
+ const [contentSize, setContentSize] = useState<{ width: number; height: number }>()
26
15
  return (
27
- <NativeKotlinHost
28
- source={source}
29
- view={view}
30
- contractHash={contractHash}
31
- intrinsicWidth={!stretchedWidth}
32
- intrinsicHeight={!stretchedHeight}
33
- // a callback travels as true; the composable's lambda reports its call
34
- props={JSON.stringify(props, (_key, value) => (typeof value === 'function' ? true : value))}
35
- onHostEvent={(event) => {
36
- const callback = props[event.nativeEvent.name]
37
- if (typeof callback === 'function') callback(...JSON.parse(event.nativeEvent.args))
38
- }}
39
- onHostSizeChange={(event) => {
40
- setContentSize(event.nativeEvent)
41
- }}
42
- style={[
43
- contentSize && {
44
- width: stretchedWidth || !contentSize.intrinsicWidth ? undefined : contentSize.width,
45
- height: stretchedHeight ? undefined : contentSize.height,
46
- },
47
- (props as any)?.style,
48
- ]}
49
- />
16
+ <View style={props.style} collapsable={false}>
17
+ {/* yoga uses the natural child size while retaining parent flex and stretch. */}
18
+ <View pointerEvents="none" style={contentSize} />
19
+ <NativeKotlinHost
20
+ source={source}
21
+ view={view}
22
+ contractHash={contractHash}
23
+ props={JSON.stringify(props, (_key, value) =>
24
+ typeof value === 'function' ? true : value
25
+ )}
26
+ onHostEvent={(event) => {
27
+ const callback = props[event.nativeEvent.name]
28
+ if (typeof callback === 'function')
29
+ callback(...JSON.parse(event.nativeEvent.args))
30
+ }}
31
+ onHostSizeChange={(event) => {
32
+ setContentSize({
33
+ width: event.nativeEvent.width,
34
+ height: event.nativeEvent.height,
35
+ })
36
+ }}
37
+ style={StyleSheet.absoluteFill}
38
+ />
39
+ </View>
50
40
  )
51
41
  }
@@ -1,3 +1,5 @@
1
+ import type { StyleProp, ViewStyle } from 'react-native'
2
+
1
3
  export interface KotlinSourceViewProps {
2
4
  // the kotlin source id the bundler derived from the imported file's path
3
5
  source: string
@@ -5,5 +7,5 @@ export interface KotlinSourceViewProps {
5
7
  view: string
6
8
  contractHash: string
7
9
  // the importing element's props, the composable's parameters
8
- props: Record<string, unknown>
10
+ props: Record<string, unknown> & { style?: StyleProp<ViewStyle> }
9
11
  }
@@ -2,11 +2,14 @@
2
2
  // the app's generated view dispatch renders it with the element's props as
3
3
  // json text, and reports each callback call back as an event.
4
4
  import type { ViewProps } from 'react-native'
5
- import type { DirectEventHandler, Double } from 'react-native/Libraries/Types/CodegenTypes'
5
+ import type {
6
+ DirectEventHandler,
7
+ Double,
8
+ } from 'react-native/Libraries/Types/CodegenTypes'
6
9
  import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent'
7
10
 
8
11
  type KotlinHostEvent = Readonly<{ name: string; args: string }>
9
- type KotlinHostSizeEvent = Readonly<{ width: Double; height: Double; intrinsicWidth: boolean }>
12
+ type KotlinHostSizeEvent = Readonly<{ width: Double; height: Double }>
10
13
 
11
14
  interface NativeProps extends ViewProps {
12
15
  // the kotlin source id the bundler derived from the imported file's path
@@ -14,8 +17,6 @@ interface NativeProps extends ViewProps {
14
17
  view: string
15
18
  contractHash: string
16
19
  props: string
17
- intrinsicWidth: boolean
18
- intrinsicHeight: boolean
19
20
  onHostEvent?: DirectEventHandler<KotlinHostEvent>
20
21
  onHostSizeChange?: DirectEventHandler<KotlinHostSizeEvent>
21
22
  }
@@ -1,4 +1,4 @@
1
1
  import type { KotlinSourceViewProps } from './viewTypes';
2
2
  export type { KotlinSourceViewProps } from './viewTypes';
3
- export declare function KotlinSourceView({ source, view, contractHash, props }: KotlinSourceViewProps): import("react/jsx-runtime").JSX.Element;
3
+ export declare function KotlinSourceView({ source, view, contractHash, props, }: KotlinSourceViewProps): import("react/jsx-runtime").JSX.Element;
4
4
  //# sourceMappingURL=view.native.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"view.native.d.ts","sourceRoot":"","sources":["../../../src/platform/native-source/view.native.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAExD,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAExD,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,qBAAqB,2CAyC5F"}
1
+ {"version":3,"file":"view.native.d.ts","sourceRoot":"","sources":["../../../src/platform/native-source/view.native.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAExD,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAExD,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,IAAI,EACJ,YAAY,EACZ,KAAK,GACN,EAAE,qBAAqB,2CA4BvB"}
@@ -1,7 +1,10 @@
1
+ import type { StyleProp, ViewStyle } from 'react-native';
1
2
  export interface KotlinSourceViewProps {
2
3
  source: string;
3
4
  view: string;
4
5
  contractHash: string;
5
- props: Record<string, unknown>;
6
+ props: Record<string, unknown> & {
7
+ style?: StyleProp<ViewStyle>;
8
+ };
6
9
  }
7
10
  //# sourceMappingURL=viewTypes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"viewTypes.d.ts","sourceRoot":"","sources":["../../../src/platform/native-source/viewTypes.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IAEpC,MAAM,EAAE,MAAM,CAAA;IAEd,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IAEpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B"}
1
+ {"version":3,"file":"viewTypes.d.ts","sourceRoot":"","sources":["../../../src/platform/native-source/viewTypes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExD,MAAM,WAAW,qBAAqB;IAEpC,MAAM,EAAE,MAAM,CAAA;IAEd,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IAEpB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;KAAE,CAAA;CAClE"}
@@ -7,15 +7,12 @@ type KotlinHostEvent = Readonly<{
7
7
  type KotlinHostSizeEvent = Readonly<{
8
8
  width: Double;
9
9
  height: Double;
10
- intrinsicWidth: boolean;
11
10
  }>;
12
11
  interface NativeProps extends ViewProps {
13
12
  source: string;
14
13
  view: string;
15
14
  contractHash: string;
16
15
  props: string;
17
- intrinsicWidth: boolean;
18
- intrinsicHeight: boolean;
19
16
  onHostEvent?: DirectEventHandler<KotlinHostEvent>;
20
17
  onHostSizeChange?: DirectEventHandler<KotlinHostSizeEvent>;
21
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OneKotlinHostNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/platform/specs/OneKotlinHostNativeComponent.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAA;AAG3F,KAAK,eAAe,GAAG,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAC/D,KAAK,mBAAmB,GAAG,QAAQ,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,OAAO,CAAA;CAAE,CAAC,CAAA;AAE/F,UAAU,WAAY,SAAQ,SAAS;IAErC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,OAAO,CAAA;IACvB,eAAe,EAAE,OAAO,CAAA;IACxB,WAAW,CAAC,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAA;IACjD,gBAAgB,CAAC,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAA;CAC3D"}
1
+ {"version":3,"file":"OneKotlinHostNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/platform/specs/OneKotlinHostNativeComponent.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,KAAK,EACV,kBAAkB,EAClB,MAAM,EACP,MAAM,2CAA2C,CAAA;AAGlD,KAAK,eAAe,GAAG,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAC/D,KAAK,mBAAmB,GAAG,QAAQ,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAEtE,UAAU,WAAY,SAAQ,SAAS;IAErC,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,kBAAkB,CAAC,eAAe,CAAC,CAAA;IACjD,gBAAgB,CAAC,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAA;CAC3D"}