bare-ui-kit 0.2.1 → 0.3.0

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 (89) hide show
  1. package/CMakeLists.txt +7 -1
  2. package/README.md +42 -1
  3. package/binding.m +558 -2
  4. package/index.d.ts +41 -0
  5. package/index.js +16 -0
  6. package/lib/activity-indicator-view.d.ts +29 -0
  7. package/lib/activity-indicator-view.h +181 -0
  8. package/lib/activity-indicator-view.js +56 -0
  9. package/lib/alert-action.d.ts +33 -0
  10. package/lib/alert-action.js +48 -0
  11. package/lib/alert-controller.d.ts +20 -0
  12. package/lib/alert-controller.h +199 -0
  13. package/lib/alert-controller.js +33 -0
  14. package/lib/attributed-string.d.ts +45 -0
  15. package/lib/attributed-string.h +176 -0
  16. package/lib/attributed-string.js +51 -0
  17. package/lib/attributes.js +34 -0
  18. package/lib/bezier-path.d.ts +26 -0
  19. package/lib/bezier-path.h +145 -0
  20. package/lib/bezier-path.js +51 -0
  21. package/lib/bridging.h +600 -2
  22. package/lib/color.d.ts +86 -0
  23. package/lib/color.h +286 -0
  24. package/lib/color.js +170 -0
  25. package/lib/events.js +35 -0
  26. package/lib/font-descriptor.d.ts +30 -0
  27. package/lib/font-descriptor.h +96 -0
  28. package/lib/font-descriptor.js +47 -0
  29. package/lib/font-metrics.d.ts +38 -0
  30. package/lib/font-metrics.h +109 -0
  31. package/lib/font-metrics.js +58 -0
  32. package/lib/font.d.ts +59 -0
  33. package/lib/font.h +424 -0
  34. package/lib/font.js +100 -0
  35. package/lib/handle.d.ts +5 -0
  36. package/lib/handle.js +6 -0
  37. package/lib/image-view.d.ts +15 -0
  38. package/lib/image-view.h +75 -0
  39. package/lib/image-view.js +27 -0
  40. package/lib/image.d.ts +37 -0
  41. package/lib/image.h +205 -0
  42. package/lib/image.js +60 -0
  43. package/lib/label.d.ts +51 -0
  44. package/lib/label.h +331 -0
  45. package/lib/label.js +94 -0
  46. package/lib/paragraph-style.d.ts +20 -0
  47. package/lib/paragraph-style.h +94 -0
  48. package/lib/paragraph-style.js +42 -0
  49. package/lib/pasteboard.d.ts +31 -0
  50. package/lib/pasteboard.h +123 -0
  51. package/lib/pasteboard.js +63 -0
  52. package/lib/retain.js +12 -0
  53. package/lib/runtime.m +92 -15
  54. package/lib/scene.d.ts +30 -0
  55. package/lib/scene.h +87 -0
  56. package/lib/scene.js +48 -0
  57. package/lib/scratch.js +4 -0
  58. package/lib/screen.d.ts +26 -0
  59. package/lib/screen.h +194 -0
  60. package/lib/screen.js +52 -0
  61. package/lib/scroll-view.d.ts +39 -0
  62. package/lib/scroll-view.h +246 -0
  63. package/lib/scroll-view.js +64 -0
  64. package/lib/switch.d.ts +22 -0
  65. package/lib/switch.h +166 -0
  66. package/lib/switch.js +42 -0
  67. package/lib/text-field.d.ts +103 -0
  68. package/lib/text-field.h +562 -0
  69. package/lib/text-field.js +183 -0
  70. package/lib/text-view.d.ts +59 -0
  71. package/lib/text-view.h +497 -0
  72. package/lib/text-view.js +138 -0
  73. package/lib/view-controller.d.ts +37 -0
  74. package/lib/view-controller.h +108 -20
  75. package/lib/view-controller.js +50 -5
  76. package/lib/view.d.ts +158 -0
  77. package/lib/view.h +1385 -20
  78. package/lib/view.js +276 -7
  79. package/lib/window.d.ts +44 -0
  80. package/lib/window.h +167 -27
  81. package/lib/window.js +62 -9
  82. package/lib/wrap.js +7 -0
  83. package/package.json +12 -3
  84. package/prebuilds/ios-arm64/bare +0 -0
  85. package/prebuilds/ios-arm64/bare-ui-kit.bare +0 -0
  86. package/prebuilds/ios-arm64-simulator/bare +0 -0
  87. package/prebuilds/ios-arm64-simulator/bare-ui-kit.bare +0 -0
  88. package/prebuilds/ios-x64-simulator/bare +0 -0
  89. package/prebuilds/ios-x64-simulator/bare-ui-kit.bare +0 -0
package/CMakeLists.txt CHANGED
@@ -5,7 +5,7 @@ find_package(cmake-fetch REQUIRED PATHS node_modules/cmake-fetch)
5
5
 
6
6
  project(bare_ui_kit C OBJC)
7
7
 
8
- fetch_package("github:holepunchto/bare@1.29.4")
8
+ fetch_package("github:holepunchto/bare@1.33.5")
9
9
  fetch_package("github:holepunchto/libpath")
10
10
 
11
11
  add_bare_module(bare_ui_kit)
@@ -16,6 +16,12 @@ target_sources(
16
16
  binding.m
17
17
  )
18
18
 
19
+ target_include_directories(
20
+ ${bare_ui_kit}
21
+ PRIVATE
22
+ node_modules/bare-foundation-registry/lib
23
+ )
24
+
19
25
  target_link_libraries(
20
26
  ${bare_ui_kit}
21
27
  PUBLIC
package/README.md CHANGED
@@ -1,11 +1,52 @@
1
1
  # bare-ui-kit
2
2
 
3
- UIKit bindings and runtime for Bare.
3
+ UIKit for Bare on iOS. It gives you UIKit's views in JavaScript, along with a runtime that starts the app for you, so a Bare app can have a native iOS screen.
4
4
 
5
5
  ```
6
6
  npm i bare-ui-kit
7
7
  ```
8
8
 
9
+ ## Usage
10
+
11
+ ```js
12
+ const { Scene, Window, ViewController, Label, Color, Font } = require('bare-ui-kit')
13
+
14
+ // A window is only shown in a scene, and the runtime connects one at launch.
15
+ const [scene] = Scene.connected
16
+
17
+ const window = new Window({ scene })
18
+
19
+ const controller = new ViewController()
20
+
21
+ window.rootViewController = controller
22
+ window.makeKeyAndVisible()
23
+
24
+ const root = controller.view
25
+
26
+ root.backgroundColor = Color.systemBackgroundColor
27
+
28
+ const label = new Label()
29
+
30
+ label.text = 'Hello'
31
+ label.font = Font.systemFont(34, Font.WEIGHT.BOLD)
32
+ label.textAlignment = Label.TEXT_ALIGNMENT.CENTER
33
+
34
+ root.addSubview(label)
35
+
36
+ // The controller lays its view out to fill the window, so the label follows it.
37
+ controller.on('didLayoutSubviews', () => {
38
+ label.frame = root.bounds
39
+ })
40
+ ```
41
+
42
+ Build the app with `bare-build` and this runtime:
43
+
44
+ ```console
45
+ bare-build --host ios-arm64 --runtime bare-ui-kit/runtime --identifier com.example.Hello index.js
46
+ ```
47
+
48
+ Objects that have events, such as views, text fields and switches, emit them as ordinary events. UIKit is only asked to report an event while something listens to it.
49
+
9
50
  ## License
10
51
 
11
52
  Apache-2.0
package/binding.m CHANGED
@@ -5,6 +5,25 @@
5
5
 
6
6
  #import <UIKit/UIKit.h>
7
7
 
8
+ #import "lib/alert-controller.h"
9
+ #import "lib/attributed-string.h"
10
+ #import "lib/color.h"
11
+ #import "lib/font.h"
12
+ #import "lib/font-descriptor.h"
13
+ #import "lib/font-metrics.h"
14
+ #import "lib/image.h"
15
+ #import "lib/image-view.h"
16
+ #import "lib/bezier-path.h"
17
+ #import "lib/label.h"
18
+ #import "lib/paragraph-style.h"
19
+ #import "lib/pasteboard.h"
20
+ #import "lib/scene.h"
21
+ #import "lib/screen.h"
22
+ #import "lib/scroll-view.h"
23
+ #import "lib/activity-indicator-view.h"
24
+ #import "lib/switch.h"
25
+ #import "lib/text-field.h"
26
+ #import "lib/text-view.h"
8
27
  #import "lib/view.h"
9
28
  #import "lib/view-controller.h"
10
29
  #import "lib/window.h"
@@ -13,26 +32,563 @@ static js_value_t *
13
32
  bare_ui_kit_exports(js_env_t *env, js_value_t *exports) {
14
33
  int err;
15
34
 
35
+ bare_ui_kit_state_t *state = bare_ui_kit_state_create(env, exports);
36
+
37
+ #define T(name, fn, signature, typed) \
38
+ { \
39
+ js_value_t *val; \
40
+ err = js_create_typed_function(env, name, -1, fn, signature, typed, state, &val); \
41
+ assert(err == 0); \
42
+ err = js_set_named_property(env, exports, name, val); \
43
+ assert(err == 0); \
44
+ }
45
+
16
46
  #define V(name, fn) \
17
47
  { \
18
48
  js_value_t *val; \
19
- err = js_create_function(env, name, -1, fn, NULL, &val); \
49
+ err = js_create_function(env, name, -1, fn, state, &val); \
50
+ assert(err == 0); \
51
+ err = js_set_named_property(env, exports, name, val); \
52
+ assert(err == 0); \
53
+ }
54
+
55
+ // The registry's own functions take the registry, not the state around it.
56
+ #define R(name, fn) \
57
+ { \
58
+ js_value_t *val; \
59
+ err = js_create_function(env, name, -1, fn, state->registry, &val); \
20
60
  assert(err == 0); \
21
61
  err = js_set_named_property(env, exports, name, val); \
22
62
  assert(err == 0); \
23
63
  }
24
64
 
25
- V("viewHidden", bare_ui_kit_view_hidden)
65
+ R("claim", bare_foundation_claim)
66
+ R("wrapper", bare_foundation_wrapper)
67
+ R("registrySize", bare_foundation_registry_size)
68
+ V("eventMask", bare_ui_kit_event_mask)
69
+ R("handle", bare_foundation_handle)
70
+ R("adopt", bare_foundation_adopt)
71
+
72
+ V("colorSystem", bare_ui_kit_color_system)
73
+ V("colorRGB", bare_ui_kit_color_rgb)
74
+ V("colorHSB", bare_ui_kit_color_hsb)
75
+ V("colorWhite", bare_ui_kit_color_white)
76
+ V("colorWithAlphaComponent", bare_ui_kit_color_with_alpha_component)
77
+ T(
78
+ "colorComponentsInto",
79
+ bare_ui_kit_color_components_into,
80
+ &((js_callback_signature_t){
81
+ .version = 0,
82
+ .result = js_undefined,
83
+ .args_len = 4,
84
+ .args = (int[]){js_object, js_int32, js_object, js_uint32},
85
+ }),
86
+ bare_ui_kit_color_components_into_typed
87
+ )
88
+
89
+ V("fontSystemFont", bare_ui_kit_font_system_font)
90
+ V("fontBoldSystemFont", bare_ui_kit_font_bold_system_font)
91
+ V("fontMonospacedSystemFont", bare_ui_kit_font_monospaced_system_font)
92
+ V("fontWithName", bare_ui_kit_font_with_name)
93
+ V("fontFontName", bare_ui_kit_font_font_name)
94
+ V("fontFamilyName", bare_ui_kit_font_family_name)
95
+ V("fontPointSize", bare_ui_kit_font_point_size)
96
+ V("fontAscender", bare_ui_kit_font_ascender)
97
+ V("fontDescender", bare_ui_kit_font_descender)
98
+ V("fontCapHeight", bare_ui_kit_font_cap_height)
99
+ V("fontXHeight", bare_ui_kit_font_x_height)
100
+ V("fontLeading", bare_ui_kit_font_leading)
101
+ V("fontLineHeight", bare_ui_kit_font_line_height)
102
+ V("fontWithDescriptor", bare_ui_kit_font_with_descriptor)
103
+ V("fontFontDescriptor", bare_ui_kit_font_font_descriptor)
104
+
105
+ V("fontDescriptorSymbolicTraits", bare_ui_kit_font_descriptor_symbolic_traits)
106
+ V("fontDescriptorWithSymbolicTraits", bare_ui_kit_font_descriptor_with_symbolic_traits)
107
+ V("fontDescriptorWithFamily", bare_ui_kit_font_descriptor_with_family)
108
+
109
+ V("attributedStringInit", bare_ui_kit_attributed_string_init)
110
+ V("attributedStringString", bare_ui_kit_attributed_string_string)
111
+ V("attributedStringLength", bare_ui_kit_attributed_string_length)
112
+ V("attributedStringAttributesAt", bare_ui_kit_attributed_string_attributes_at)
113
+ V("attributedStringAppend", bare_ui_kit_attributed_string_append)
114
+ V("attributedStringAppendString", bare_ui_kit_attributed_string_append_string)
115
+
116
+ V("paragraphStyleInit", bare_ui_kit_paragraph_style_init)
117
+ V("paragraphStyleAlignment", bare_ui_kit_paragraph_style_alignment)
118
+ V("paragraphStyleLineBreakMode", bare_ui_kit_paragraph_style_line_break_mode)
119
+
120
+ V("imageWithContentsOfFile", bare_ui_kit_image_with_contents_of_file)
121
+ V("imageNamed", bare_ui_kit_image_named)
122
+ T(
123
+ "imageSizeInto",
124
+ bare_ui_kit_image_size_into,
125
+ &((js_callback_signature_t){
126
+ .version = 0,
127
+ .result = js_undefined,
128
+ .args_len = 4,
129
+ .args = (int[]){js_object, js_int32, js_object, js_uint32},
130
+ }),
131
+ bare_ui_kit_image_size_into_typed
132
+ )
133
+ V("imageScale", bare_ui_kit_image_scale)
134
+ V("imageRenderingMode", bare_ui_kit_image_rendering_mode)
135
+ V("imageWithRenderingMode", bare_ui_kit_image_with_rendering_mode)
136
+
137
+ V("imageViewInit", bare_ui_kit_image_view_init)
138
+ V("imageViewImage", bare_ui_kit_image_view_image)
139
+
140
+ V("activityIndicatorViewInit", bare_ui_kit_activity_indicator_view_init)
141
+ V("activityIndicatorViewStyle", bare_ui_kit_activity_indicator_view_style)
142
+ V("activityIndicatorViewColor", bare_ui_kit_activity_indicator_view_color)
143
+ V("activityIndicatorViewHidesWhenStopped", bare_ui_kit_activity_indicator_view_hides_when_stopped)
144
+ V("activityIndicatorViewAnimating", bare_ui_kit_activity_indicator_view_animating)
145
+
146
+ V("switchInit", bare_ui_kit_switch_init)
147
+ V("switchOn", bare_ui_kit_switch_on)
148
+ V("switchEnabled", bare_ui_kit_switch_enabled)
149
+
150
+ V("textFieldInit", bare_ui_kit_text_field_init)
151
+ V("textFieldSelectedRange", bare_ui_kit_text_field_selected_range)
152
+ V("textFieldText", bare_ui_kit_text_field_text)
153
+ V("textFieldPlaceholder", bare_ui_kit_text_field_placeholder)
154
+ V("textFieldFont", bare_ui_kit_text_field_font)
155
+ V("textFieldTextColor", bare_ui_kit_text_field_text_color)
156
+ V("textFieldTextAlignment", bare_ui_kit_text_field_text_alignment)
157
+ V("textFieldSecureTextEntry", bare_ui_kit_text_field_secure_text_entry)
158
+ V("textFieldKeyboardType", bare_ui_kit_text_field_keyboard_type)
159
+ V("textFieldReturnKeyType", bare_ui_kit_text_field_return_key_type)
160
+ V("textFieldAutocapitalizationType", bare_ui_kit_text_field_autocapitalization_type)
161
+ V("textFieldAutocorrectionType", bare_ui_kit_text_field_autocorrection_type)
162
+ V("textFieldEnabled", bare_ui_kit_text_field_enabled)
163
+
164
+ V("textViewInit", bare_ui_kit_text_view_init)
165
+ V("textViewSelectedRange", bare_ui_kit_text_view_selected_range)
166
+ V("textViewText", bare_ui_kit_text_view_text)
167
+ V("textViewFont", bare_ui_kit_text_view_font)
168
+ V("textViewTextColor", bare_ui_kit_text_view_text_color)
169
+ V("textViewTextAlignment", bare_ui_kit_text_view_text_alignment)
170
+ V("textViewEditable", bare_ui_kit_text_view_editable)
171
+ V("textViewKeyboardType", bare_ui_kit_text_view_keyboard_type)
172
+ V("textViewReturnKeyType", bare_ui_kit_text_view_return_key_type)
173
+ V("textViewAutocapitalizationType", bare_ui_kit_text_view_autocapitalization_type)
174
+ V("textViewAutocorrectionType", bare_ui_kit_text_view_autocorrection_type)
175
+ V("textViewScrollEnabled", bare_ui_kit_text_view_scroll_enabled)
176
+
177
+ V("bezierPathInit", bare_ui_kit_bezier_path_init)
178
+ V("bezierPathMoveTo", bare_ui_kit_bezier_path_move_to)
179
+ V("bezierPathLineTo", bare_ui_kit_bezier_path_line_to)
180
+ V("bezierPathCurveTo", bare_ui_kit_bezier_path_curve_to)
181
+ V("bezierPathAddArc", bare_ui_kit_bezier_path_add_arc)
182
+ V("bezierPathClose", bare_ui_kit_bezier_path_close)
183
+
184
+ V("labelInit", bare_ui_kit_label_init)
185
+ V("labelText", bare_ui_kit_label_text)
186
+ V("labelAttributedText", bare_ui_kit_label_attributed_text)
187
+ V("labelFont", bare_ui_kit_label_font)
188
+ V("labelTextColor", bare_ui_kit_label_text_color)
189
+ T(
190
+ "labelTextAlignment",
191
+ bare_ui_kit_label_text_alignment,
192
+ &((js_callback_signature_t){
193
+ .version = 0,
194
+ .result = js_undefined,
195
+ .args_len = 3,
196
+ .args = (int[]){js_object, js_int32, js_int32},
197
+ }),
198
+ bare_ui_kit_label_text_alignment_typed
199
+ )
200
+ T(
201
+ "labelNumberOfLines",
202
+ bare_ui_kit_label_number_of_lines,
203
+ &((js_callback_signature_t){
204
+ .version = 0,
205
+ .result = js_undefined,
206
+ .args_len = 3,
207
+ .args = (int[]){js_object, js_int32, js_int32},
208
+ }),
209
+ bare_ui_kit_label_number_of_lines_typed
210
+ )
211
+ T(
212
+ "labelLineBreakMode",
213
+ bare_ui_kit_label_line_break_mode,
214
+ &((js_callback_signature_t){
215
+ .version = 0,
216
+ .result = js_undefined,
217
+ .args_len = 3,
218
+ .args = (int[]){js_object, js_int32, js_int32},
219
+ }),
220
+ bare_ui_kit_label_line_break_mode_typed
221
+ )
222
+
223
+ V("fontMetricsDefaultMetrics", bare_ui_kit_font_metrics_default_metrics)
224
+ V("fontMetricsForTextStyle", bare_ui_kit_font_metrics_for_text_style)
225
+ V("fontMetricsScaledValueForValue", bare_ui_kit_font_metrics_scaled_value_for_value)
226
+ V("fontMetricsScaledFontForFont", bare_ui_kit_font_metrics_scaled_font_for_font)
227
+
228
+ V("alertActionInit", bare_ui_kit_alert_action_init)
229
+ V("alertActionTitle", bare_ui_kit_alert_action_title)
230
+ V("alertActionStyle", bare_ui_kit_alert_action_style)
231
+
232
+ V("alertControllerInit", bare_ui_kit_alert_controller_init)
233
+ V("alertControllerAddAction", bare_ui_kit_alert_controller_add_action)
234
+
235
+ V("viewControllerPresent", bare_ui_kit_view_controller_present)
236
+ V("viewControllerDismiss", bare_ui_kit_view_controller_dismiss)
237
+
238
+ V("pasteboardGeneralPasteboard", bare_ui_kit_pasteboard_general_pasteboard)
239
+ V("pasteboardString", bare_ui_kit_pasteboard_string)
240
+ V("pasteboardHasStrings", bare_ui_kit_pasteboard_has_strings)
241
+ V("pasteboardHasUrls", bare_ui_kit_pasteboard_has_urls)
242
+ V("pasteboardHasImages", bare_ui_kit_pasteboard_has_images)
243
+ V("pasteboardHasColors", bare_ui_kit_pasteboard_has_colors)
244
+ V("pasteboardNumberOfItems", bare_ui_kit_pasteboard_number_of_items)
245
+ V("pasteboardChangeCount", bare_ui_kit_pasteboard_change_count)
246
+
247
+ V("sceneConnected", bare_ui_kit_scene_connected)
248
+ V("sceneScreen", bare_ui_kit_scene_screen)
249
+ V("sceneActivationState", bare_ui_kit_scene_activation_state)
250
+
251
+ V("screenMainScreen", bare_ui_kit_screen_main_screen)
252
+ T(
253
+ "screenBoundsInto",
254
+ bare_ui_kit_screen_bounds_into,
255
+ &((js_callback_signature_t){
256
+ .version = 0,
257
+ .result = js_undefined,
258
+ .args_len = 4,
259
+ .args = (int[]){js_object, js_int32, js_object, js_uint32},
260
+ }),
261
+ bare_ui_kit_screen_bounds_into_typed
262
+ )
263
+ V("screenNativeBoundsInto", bare_ui_kit_screen_native_bounds_into)
264
+ V("screenScale", bare_ui_kit_screen_scale)
265
+ V("screenNativeScale", bare_ui_kit_screen_native_scale)
266
+
267
+ V("scrollViewInit", bare_ui_kit_scroll_view_init)
268
+ V("scrollViewContentSize", bare_ui_kit_scroll_view_content_size)
269
+ V("scrollViewContentOffset", bare_ui_kit_scroll_view_content_offset)
270
+ V("scrollViewContentInsetAdjustmentBehavior", bare_ui_kit_scroll_view_content_inset_adjustment_behavior)
271
+ V("scrollViewAdjustedContentInsetInto", bare_ui_kit_scroll_view_adjusted_content_inset_into)
272
+
273
+ V("viewEndEditing", bare_ui_kit_view_end_editing)
274
+ V("viewConvertPointToView", bare_ui_kit_view_convert_point_to_view)
275
+ V("viewConvertPointFromView", bare_ui_kit_view_convert_point_from_view)
276
+ V("viewSizeThatFitsInto", bare_ui_kit_view_size_that_fits_into)
277
+ V("viewBecomeFirstResponder", bare_ui_kit_view_become_first_responder)
278
+ V("viewResignFirstResponder", bare_ui_kit_view_resign_first_responder)
279
+ V("viewIsFirstResponder", bare_ui_kit_view_is_first_responder)
280
+
281
+ V("viewInit", bare_ui_kit_view_init)
282
+ T(
283
+ "viewFrame",
284
+ bare_ui_kit_view_frame,
285
+ &((js_callback_signature_t){
286
+ .version = 0,
287
+ .result = js_undefined,
288
+ .args_len = 6,
289
+ .args = (int[]){js_object, js_int32, js_float64, js_float64, js_float64, js_float64},
290
+ }),
291
+ bare_ui_kit_view_frame_typed
292
+ )
293
+ T(
294
+ "viewFrameInto",
295
+ bare_ui_kit_view_frame_into,
296
+ &((js_callback_signature_t){
297
+ .version = 0,
298
+ .result = js_undefined,
299
+ .args_len = 4,
300
+ .args = (int[]){js_object, js_int32, js_object, js_uint32},
301
+ }),
302
+ bare_ui_kit_view_frame_into_typed
303
+ )
304
+ T(
305
+ "viewBounds",
306
+ bare_ui_kit_view_bounds,
307
+ &((js_callback_signature_t){
308
+ .version = 0,
309
+ .result = js_undefined,
310
+ .args_len = 6,
311
+ .args = (int[]){js_object, js_int32, js_float64, js_float64, js_float64, js_float64},
312
+ }),
313
+ bare_ui_kit_view_bounds_typed
314
+ )
315
+ T(
316
+ "viewBoundsInto",
317
+ bare_ui_kit_view_bounds_into,
318
+ &((js_callback_signature_t){
319
+ .version = 0,
320
+ .result = js_undefined,
321
+ .args_len = 4,
322
+ .args = (int[]){js_object, js_int32, js_object, js_uint32},
323
+ }),
324
+ bare_ui_kit_view_bounds_into_typed
325
+ )
326
+ T(
327
+ "viewHidden",
328
+ bare_ui_kit_view_hidden,
329
+ &((js_callback_signature_t){
330
+ .version = 0,
331
+ .result = js_undefined,
332
+ .args_len = 3,
333
+ .args = (int[]){js_object, js_int32, js_boolean},
334
+ }),
335
+ bare_ui_kit_view_hidden_typed
336
+ )
337
+ T(
338
+ "viewAlpha",
339
+ bare_ui_kit_view_alpha,
340
+ &((js_callback_signature_t){
341
+ .version = 0,
342
+ .result = js_undefined,
343
+ .args_len = 3,
344
+ .args = (int[]){js_object, js_int32, js_float64},
345
+ }),
346
+ bare_ui_kit_view_alpha_typed
347
+ )
348
+ T(
349
+ "viewContentMode",
350
+ bare_ui_kit_view_content_mode,
351
+ &((js_callback_signature_t){
352
+ .version = 0,
353
+ .result = js_undefined,
354
+ .args_len = 3,
355
+ .args = (int[]){js_object, js_int32, js_int32},
356
+ }),
357
+ bare_ui_kit_view_content_mode_typed
358
+ )
359
+ T(
360
+ "viewClipsToBounds",
361
+ bare_ui_kit_view_clips_to_bounds,
362
+ &((js_callback_signature_t){
363
+ .version = 0,
364
+ .result = js_undefined,
365
+ .args_len = 3,
366
+ .args = (int[]){js_object, js_int32, js_boolean},
367
+ }),
368
+ bare_ui_kit_view_clips_to_bounds_typed
369
+ )
370
+ T(
371
+ "viewUserInteractionEnabled",
372
+ bare_ui_kit_view_user_interaction_enabled,
373
+ &((js_callback_signature_t){
374
+ .version = 0,
375
+ .result = js_undefined,
376
+ .args_len = 3,
377
+ .args = (int[]){js_object, js_int32, js_boolean},
378
+ }),
379
+ bare_ui_kit_view_user_interaction_enabled_typed
380
+ )
381
+ V("viewBackgroundColor", bare_ui_kit_view_background_color)
382
+ V("viewTintColor", bare_ui_kit_view_tint_color)
383
+ V("viewOverrideUserInterfaceStyle", bare_ui_kit_view_override_user_interface_style)
384
+ V("viewUserInterfaceStyle", bare_ui_kit_view_user_interface_style)
385
+ V("viewSuperview", bare_ui_kit_view_superview)
386
+ V("viewSubviews", bare_ui_kit_view_subviews)
26
387
  V("viewAddSubview", bare_ui_kit_view_add_subview)
388
+ V("viewInsertSubviewAtIndex", bare_ui_kit_view_insert_subview_at_index)
389
+ V("viewInsertSubviewBelowSubview", bare_ui_kit_view_insert_subview_below_subview)
390
+ V("viewInsertSubviewAboveSubview", bare_ui_kit_view_insert_subview_above_subview)
391
+ V("viewRemoveFromSuperview", bare_ui_kit_view_remove_from_superview)
392
+ V("viewSetNeedsLayout", bare_ui_kit_view_set_needs_layout)
393
+ V("viewSetNeedsDisplay", bare_ui_kit_view_set_needs_display)
394
+ V("viewSizeToFit", bare_ui_kit_view_size_to_fit)
395
+ T(
396
+ "viewSafeAreaInsetsInto",
397
+ bare_ui_kit_view_safe_area_insets_into,
398
+ &((js_callback_signature_t){
399
+ .version = 0,
400
+ .result = js_undefined,
401
+ .args_len = 4,
402
+ .args = (int[]){js_object, js_int32, js_object, js_uint32},
403
+ }),
404
+ bare_ui_kit_view_safe_area_insets_into_typed
405
+ )
27
406
 
28
407
  V("viewControllerInit", bare_ui_kit_view_controller_init)
29
408
  V("viewControllerView", bare_ui_kit_view_controller_view)
30
409
 
31
410
  V("windowInit", bare_ui_kit_window_init)
411
+ V("windowWindowScene", bare_ui_kit_window_window_scene)
32
412
  V("windowRootViewController", bare_ui_kit_window_root_view_controller)
413
+ V("windowKeyWindow", bare_ui_kit_window_key_window)
33
414
  V("windowMakeKeyWindow", bare_ui_kit_window_make_key_window)
415
+ V("windowMakeKeyAndVisible", bare_ui_kit_window_make_key_and_visible)
416
+ #undef R
417
+ #undef V
418
+ #undef T
419
+
420
+ #define V(name, n) \
421
+ { \
422
+ js_value_t *val; \
423
+ err = js_create_int32(env, n, &val); \
424
+ assert(err == 0); \
425
+ err = js_set_named_property(env, exports, name, val); \
426
+ assert(err == 0); \
427
+ }
428
+
429
+ #define V_COLOR(name, selector) V("COLOR_" #name, bare_ui_kit_color_##name)
430
+ BARE_UI_KIT_COLORS(V_COLOR)
431
+ #undef V_COLOR
432
+
433
+ V("LINE_BREAK_MODE_WORD_WRAPPING", NSLineBreakByWordWrapping)
434
+ V("LINE_BREAK_MODE_CHAR_WRAPPING", NSLineBreakByCharWrapping)
435
+ V("LINE_BREAK_MODE_CLIPPING", NSLineBreakByClipping)
436
+ V("LINE_BREAK_MODE_TRUNCATING_HEAD", NSLineBreakByTruncatingHead)
437
+ V("LINE_BREAK_MODE_TRUNCATING_TAIL", NSLineBreakByTruncatingTail)
438
+ V("LINE_BREAK_MODE_TRUNCATING_MIDDLE", NSLineBreakByTruncatingMiddle)
439
+
440
+ V("SCENE_ACTIVATION_STATE_UNATTACHED", UISceneActivationStateUnattached)
441
+ V("SCENE_ACTIVATION_STATE_FOREGROUND_ACTIVE", UISceneActivationStateForegroundActive)
442
+ V("SCENE_ACTIVATION_STATE_FOREGROUND_INACTIVE", UISceneActivationStateForegroundInactive)
443
+ V("SCENE_ACTIVATION_STATE_BACKGROUND", UISceneActivationStateBackground)
444
+
445
+ V("FONT_DESCRIPTOR_TRAIT_ITALIC", UIFontDescriptorTraitItalic)
446
+ V("FONT_DESCRIPTOR_TRAIT_BOLD", UIFontDescriptorTraitBold)
447
+ V("FONT_DESCRIPTOR_TRAIT_EXPANDED", UIFontDescriptorTraitExpanded)
448
+ V("FONT_DESCRIPTOR_TRAIT_CONDENSED", UIFontDescriptorTraitCondensed)
449
+ V("FONT_DESCRIPTOR_TRAIT_MONO_SPACE", UIFontDescriptorTraitMonoSpace)
450
+
451
+ V("TEXT_ALIGNMENT_LEFT", NSTextAlignmentLeft)
452
+ V("TEXT_ALIGNMENT_RIGHT", NSTextAlignmentRight)
453
+ V("TEXT_ALIGNMENT_CENTER", NSTextAlignmentCenter)
454
+ V("TEXT_ALIGNMENT_JUSTIFIED", NSTextAlignmentJustified)
455
+ V("TEXT_ALIGNMENT_NATURAL", NSTextAlignmentNatural)
456
+
457
+ V("IMAGE_RENDERING_MODE_AUTOMATIC", UIImageRenderingModeAutomatic)
458
+ V("IMAGE_RENDERING_MODE_ALWAYS_ORIGINAL", UIImageRenderingModeAlwaysOriginal)
459
+ V("IMAGE_RENDERING_MODE_ALWAYS_TEMPLATE", UIImageRenderingModeAlwaysTemplate)
460
+
461
+ V("VIEW_CONTENT_MODE_SCALE_TO_FILL", UIViewContentModeScaleToFill)
462
+ V("VIEW_CONTENT_MODE_SCALE_ASPECT_FIT", UIViewContentModeScaleAspectFit)
463
+ V("VIEW_CONTENT_MODE_SCALE_ASPECT_FILL", UIViewContentModeScaleAspectFill)
464
+ V("VIEW_CONTENT_MODE_REDRAW", UIViewContentModeRedraw)
465
+ V("VIEW_CONTENT_MODE_CENTER", UIViewContentModeCenter)
466
+ V("VIEW_CONTENT_MODE_TOP", UIViewContentModeTop)
467
+ V("VIEW_CONTENT_MODE_BOTTOM", UIViewContentModeBottom)
468
+ V("VIEW_CONTENT_MODE_LEFT", UIViewContentModeLeft)
469
+ V("VIEW_CONTENT_MODE_RIGHT", UIViewContentModeRight)
470
+ V("VIEW_CONTENT_MODE_TOP_LEFT", UIViewContentModeTopLeft)
471
+ V("VIEW_CONTENT_MODE_TOP_RIGHT", UIViewContentModeTopRight)
472
+ V("VIEW_CONTENT_MODE_BOTTOM_LEFT", UIViewContentModeBottomLeft)
473
+ V("VIEW_CONTENT_MODE_BOTTOM_RIGHT", UIViewContentModeBottomRight)
474
+
475
+ V("TEXT_FIELD_EVENT_DID_BEGIN_EDITING", bare_ui_kit_text_field_event_did_begin_editing)
476
+ V("TEXT_FIELD_EVENT_DID_END_EDITING", bare_ui_kit_text_field_event_did_end_editing)
477
+ V("ACTIVITY_INDICATOR_VIEW_STYLE_MEDIUM", UIActivityIndicatorViewStyleMedium)
478
+ V("ACTIVITY_INDICATOR_VIEW_STYLE_LARGE", UIActivityIndicatorViewStyleLarge)
479
+
480
+ V("SWITCH_EVENT_VALUE_CHANGED", bare_ui_kit_switch_event_value_changed)
481
+
482
+ V("TEXT_FIELD_EVENT_DID_CHANGE", bare_ui_kit_text_field_event_did_change)
483
+ V("TEXT_FIELD_EVENT_SHOULD_CHANGE_CHARACTERS", bare_ui_kit_text_field_event_should_change_characters)
484
+ V("TEXT_FIELD_EVENT_SHOULD_RETURN", bare_ui_kit_text_field_event_should_return)
485
+ V("TEXT_FIELD_EVENT_DID_CHANGE_SELECTION", bare_ui_kit_text_field_event_did_change_selection)
486
+
487
+ V("TEXT_VIEW_EVENT_DID_BEGIN_EDITING", bare_ui_kit_text_view_event_did_begin_editing)
488
+ V("TEXT_VIEW_EVENT_DID_END_EDITING", bare_ui_kit_text_view_event_did_end_editing)
489
+ V("TEXT_VIEW_EVENT_DID_CHANGE", bare_ui_kit_text_view_event_did_change)
490
+ V("TEXT_VIEW_EVENT_SHOULD_CHANGE_TEXT", bare_ui_kit_text_view_event_should_change_text)
491
+ V("TEXT_VIEW_EVENT_DID_CHANGE_SELECTION", bare_ui_kit_text_view_event_did_change_selection)
492
+
493
+ V("KEYBOARD_TYPE_DEFAULT", UIKeyboardTypeDefault)
494
+ V("KEYBOARD_TYPE_NUMBER_PAD", UIKeyboardTypeNumberPad)
495
+ V("KEYBOARD_TYPE_DECIMAL_PAD", UIKeyboardTypeDecimalPad)
496
+ V("KEYBOARD_TYPE_NUMBERS_AND_PUNCTUATION", UIKeyboardTypeNumbersAndPunctuation)
497
+ V("KEYBOARD_TYPE_EMAIL_ADDRESS", UIKeyboardTypeEmailAddress)
498
+ V("KEYBOARD_TYPE_PHONE_PAD", UIKeyboardTypePhonePad)
499
+ V("KEYBOARD_TYPE_URL", UIKeyboardTypeURL)
500
+
501
+ V("RETURN_KEY_TYPE_DEFAULT", UIReturnKeyDefault)
502
+ V("RETURN_KEY_TYPE_DONE", UIReturnKeyDone)
503
+ V("RETURN_KEY_TYPE_GO", UIReturnKeyGo)
504
+ V("RETURN_KEY_TYPE_NEXT", UIReturnKeyNext)
505
+ V("RETURN_KEY_TYPE_SEARCH", UIReturnKeySearch)
506
+ V("RETURN_KEY_TYPE_SEND", UIReturnKeySend)
507
+
508
+ V("AUTOCAPITALIZATION_TYPE_NONE", UITextAutocapitalizationTypeNone)
509
+ V("AUTOCAPITALIZATION_TYPE_WORDS", UITextAutocapitalizationTypeWords)
510
+ V("AUTOCAPITALIZATION_TYPE_SENTENCES", UITextAutocapitalizationTypeSentences)
511
+ V("AUTOCAPITALIZATION_TYPE_ALL_CHARACTERS", UITextAutocapitalizationTypeAllCharacters)
512
+
513
+ V("AUTOCORRECTION_TYPE_DEFAULT", UITextAutocorrectionTypeDefault)
514
+ V("AUTOCORRECTION_TYPE_NO", UITextAutocorrectionTypeNo)
515
+ V("AUTOCORRECTION_TYPE_YES", UITextAutocorrectionTypeYes)
516
+
517
+ V("WINDOW_EVENT_KEYBOARD_WILL_CHANGE_FRAME", bare_ui_kit_window_event_keyboard_will_change_frame)
518
+
519
+ V("VIEW_EVENT_TOUCHES_BEGAN", bare_ui_kit_view_event_touches_began)
520
+ V("VIEW_EVENT_TOUCHES_MOVED", bare_ui_kit_view_event_touches_moved)
521
+ V("VIEW_EVENT_TOUCHES_ENDED", bare_ui_kit_view_event_touches_ended)
522
+ V("VIEW_EVENT_TOUCHES_CANCELLED", bare_ui_kit_view_event_touches_cancelled)
523
+ V("VIEW_EVENT_TRAIT_CHANGE", bare_ui_kit_view_event_trait_change)
524
+
525
+ V("ALERT_ACTION_STYLE_DEFAULT", UIAlertActionStyleDefault)
526
+ V("ALERT_ACTION_STYLE_CANCEL", UIAlertActionStyleCancel)
527
+ V("ALERT_ACTION_STYLE_DESTRUCTIVE", UIAlertActionStyleDestructive)
528
+
529
+ V("ALERT_CONTROLLER_STYLE_ACTION_SHEET", UIAlertControllerStyleActionSheet)
530
+ V("ALERT_CONTROLLER_STYLE_ALERT", UIAlertControllerStyleAlert)
531
+
532
+ #define S(name, str) \
533
+ { \
534
+ js_value_t *val; \
535
+ err = js_create_string_utf8(env, (const utf8_t *) [str UTF8String], -1, &val); \
536
+ assert(err == 0); \
537
+ err = js_set_named_property(env, exports, name, val); \
538
+ assert(err == 0); \
539
+ }
540
+
541
+ S("FONT_TEXT_STYLE_LARGE_TITLE", UIFontTextStyleLargeTitle)
542
+ S("FONT_TEXT_STYLE_TITLE1", UIFontTextStyleTitle1)
543
+ S("FONT_TEXT_STYLE_TITLE2", UIFontTextStyleTitle2)
544
+ S("FONT_TEXT_STYLE_TITLE3", UIFontTextStyleTitle3)
545
+ S("FONT_TEXT_STYLE_HEADLINE", UIFontTextStyleHeadline)
546
+ S("FONT_TEXT_STYLE_SUBHEADLINE", UIFontTextStyleSubheadline)
547
+ S("FONT_TEXT_STYLE_BODY", UIFontTextStyleBody)
548
+ S("FONT_TEXT_STYLE_CALLOUT", UIFontTextStyleCallout)
549
+ S("FONT_TEXT_STYLE_FOOTNOTE", UIFontTextStyleFootnote)
550
+ S("FONT_TEXT_STYLE_CAPTION1", UIFontTextStyleCaption1)
551
+ S("FONT_TEXT_STYLE_CAPTION2", UIFontTextStyleCaption2)
552
+ #undef S
553
+
554
+
555
+ V("SCROLL_VIEW_CONTENT_INSET_ADJUSTMENT_BEHAVIOR_AUTOMATIC", UIScrollViewContentInsetAdjustmentAutomatic)
556
+ V("SCROLL_VIEW_CONTENT_INSET_ADJUSTMENT_BEHAVIOR_SCROLLABLE_AXES", UIScrollViewContentInsetAdjustmentScrollableAxes)
557
+ V("SCROLL_VIEW_CONTENT_INSET_ADJUSTMENT_BEHAVIOR_NEVER", UIScrollViewContentInsetAdjustmentNever)
558
+ V("SCROLL_VIEW_CONTENT_INSET_ADJUSTMENT_BEHAVIOR_ALWAYS", UIScrollViewContentInsetAdjustmentAlways)
559
+
560
+ V("VIEW_CONTROLLER_EVENT_DID_LAYOUT_SUBVIEWS", bare_ui_kit_view_controller_event_did_layout_subviews)
561
+ V("VIEW_CONTROLLER_EVENT_SAFE_AREA_INSETS_DID_CHANGE", bare_ui_kit_view_controller_event_safe_area_insets_did_change)
562
+
563
+ V("USER_INTERFACE_STYLE_UNSPECIFIED", UIUserInterfaceStyleUnspecified)
564
+ V("USER_INTERFACE_STYLE_LIGHT", UIUserInterfaceStyleLight)
565
+ V("USER_INTERFACE_STYLE_DARK", UIUserInterfaceStyleDark)
566
+
567
+ V("SCROLL_VIEW_EVENT_DID_SCROLL", bare_ui_kit_scroll_view_event_did_scroll)
34
568
  #undef V
35
569
 
570
+ // Font weights are fractions between thin and black, not an enumeration, so
571
+ // they cross as numbers.
572
+ #define W(name, n) \
573
+ { \
574
+ js_value_t *val; \
575
+ err = js_create_double(env, n, &val); \
576
+ assert(err == 0); \
577
+ err = js_set_named_property(env, exports, name, val); \
578
+ assert(err == 0); \
579
+ }
580
+
581
+ W("FONT_WEIGHT_ULTRA_LIGHT", UIFontWeightUltraLight)
582
+ W("FONT_WEIGHT_THIN", UIFontWeightThin)
583
+ W("FONT_WEIGHT_LIGHT", UIFontWeightLight)
584
+ W("FONT_WEIGHT_REGULAR", UIFontWeightRegular)
585
+ W("FONT_WEIGHT_MEDIUM", UIFontWeightMedium)
586
+ W("FONT_WEIGHT_SEMIBOLD", UIFontWeightSemibold)
587
+ W("FONT_WEIGHT_BOLD", UIFontWeightBold)
588
+ W("FONT_WEIGHT_HEAVY", UIFontWeightHeavy)
589
+ W("FONT_WEIGHT_BLACK", UIFontWeightBlack)
590
+ #undef W
591
+
36
592
  return exports;
37
593
  }
38
594