bare-ui-kit 0.2.0 → 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.
- package/CMakeLists.txt +7 -1
- package/README.md +42 -1
- package/binding.m +558 -2
- package/index.d.ts +41 -0
- package/index.js +16 -0
- package/lib/activity-indicator-view.d.ts +29 -0
- package/lib/activity-indicator-view.h +181 -0
- package/lib/activity-indicator-view.js +56 -0
- package/lib/alert-action.d.ts +33 -0
- package/lib/alert-action.js +48 -0
- package/lib/alert-controller.d.ts +20 -0
- package/lib/alert-controller.h +199 -0
- package/lib/alert-controller.js +33 -0
- package/lib/attributed-string.d.ts +45 -0
- package/lib/attributed-string.h +176 -0
- package/lib/attributed-string.js +51 -0
- package/lib/attributes.js +34 -0
- package/lib/bezier-path.d.ts +26 -0
- package/lib/bezier-path.h +145 -0
- package/lib/bezier-path.js +51 -0
- package/lib/bridging.h +600 -2
- package/lib/color.d.ts +86 -0
- package/lib/color.h +286 -0
- package/lib/color.js +170 -0
- package/lib/events.js +35 -0
- package/lib/font-descriptor.d.ts +30 -0
- package/lib/font-descriptor.h +96 -0
- package/lib/font-descriptor.js +47 -0
- package/lib/font-metrics.d.ts +38 -0
- package/lib/font-metrics.h +109 -0
- package/lib/font-metrics.js +58 -0
- package/lib/font.d.ts +59 -0
- package/lib/font.h +424 -0
- package/lib/font.js +100 -0
- package/lib/handle.d.ts +5 -0
- package/lib/handle.js +6 -0
- package/lib/image-view.d.ts +15 -0
- package/lib/image-view.h +75 -0
- package/lib/image-view.js +27 -0
- package/lib/image.d.ts +37 -0
- package/lib/image.h +205 -0
- package/lib/image.js +60 -0
- package/lib/label.d.ts +51 -0
- package/lib/label.h +331 -0
- package/lib/label.js +94 -0
- package/lib/paragraph-style.d.ts +20 -0
- package/lib/paragraph-style.h +94 -0
- package/lib/paragraph-style.js +42 -0
- package/lib/pasteboard.d.ts +31 -0
- package/lib/pasteboard.h +123 -0
- package/lib/pasteboard.js +63 -0
- package/lib/retain.js +12 -0
- package/lib/runtime.m +92 -15
- package/lib/scene.d.ts +30 -0
- package/lib/scene.h +87 -0
- package/lib/scene.js +48 -0
- package/lib/scratch.js +4 -0
- package/lib/screen.d.ts +26 -0
- package/lib/screen.h +194 -0
- package/lib/screen.js +52 -0
- package/lib/scroll-view.d.ts +39 -0
- package/lib/scroll-view.h +246 -0
- package/lib/scroll-view.js +64 -0
- package/lib/switch.d.ts +22 -0
- package/lib/switch.h +166 -0
- package/lib/switch.js +42 -0
- package/lib/text-field.d.ts +103 -0
- package/lib/text-field.h +562 -0
- package/lib/text-field.js +183 -0
- package/lib/text-view.d.ts +59 -0
- package/lib/text-view.h +497 -0
- package/lib/text-view.js +138 -0
- package/lib/view-controller.d.ts +37 -0
- package/lib/view-controller.h +108 -20
- package/lib/view-controller.js +50 -5
- package/lib/view.d.ts +158 -0
- package/lib/view.h +1385 -20
- package/lib/view.js +276 -7
- package/lib/window.d.ts +44 -0
- package/lib/window.h +167 -27
- package/lib/window.js +62 -9
- package/lib/wrap.js +7 -0
- package/package.json +12 -3
- package/prebuilds/ios-arm64/bare +0 -0
- package/prebuilds/ios-arm64/bare-ui-kit.bare +0 -0
- package/prebuilds/ios-arm64-simulator/bare +0 -0
- package/prebuilds/ios-arm64-simulator/bare-ui-kit.bare +0 -0
- package/prebuilds/ios-x64-simulator/bare +0 -0
- package/prebuilds/ios-x64-simulator/bare-ui-kit.bare +0 -0
package/lib/text-field.h
ADDED
|
@@ -0,0 +1,562 @@
|
|
|
1
|
+
#import <assert.h>
|
|
2
|
+
#import <bare.h>
|
|
3
|
+
#import <js.h>
|
|
4
|
+
|
|
5
|
+
#import <UIKit/UIKit.h>
|
|
6
|
+
|
|
7
|
+
#import "bridging.h"
|
|
8
|
+
|
|
9
|
+
enum {
|
|
10
|
+
bare_ui_kit_text_field_event_did_begin_editing = 1 << 0,
|
|
11
|
+
bare_ui_kit_text_field_event_did_end_editing = 1 << 1,
|
|
12
|
+
bare_ui_kit_text_field_event_did_change = 1 << 2,
|
|
13
|
+
bare_ui_kit_text_field_event_should_change_characters = 1 << 3,
|
|
14
|
+
bare_ui_kit_text_field_event_should_return = 1 << 4,
|
|
15
|
+
bare_ui_kit_text_field_event_did_change_selection = 1 << 5,
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
@interface BareTextField : UITextField <UITextFieldDelegate, BareEventTarget> {
|
|
19
|
+
@public
|
|
20
|
+
js_env_t *env;
|
|
21
|
+
js_ref_t *ctx;
|
|
22
|
+
|
|
23
|
+
int32_t mask;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
@end
|
|
27
|
+
|
|
28
|
+
@implementation BareTextField
|
|
29
|
+
|
|
30
|
+
- (void)dealloc {
|
|
31
|
+
int err;
|
|
32
|
+
|
|
33
|
+
err = js_delete_reference(env, ctx);
|
|
34
|
+
assert(err == 0);
|
|
35
|
+
|
|
36
|
+
[super dealloc];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
- (int32_t)eventMask {
|
|
40
|
+
return mask;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
- (void)setEventMask:(int32_t)value {
|
|
44
|
+
mask = value;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
- (void)textFieldDidBeginEditing:(UITextField *)field {
|
|
48
|
+
if ((mask & bare_ui_kit_text_field_event_did_begin_editing) == 0) return;
|
|
49
|
+
|
|
50
|
+
bare_ui_kit__emit(env, ctx, "_ondidbeginediting");
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
- (void)textFieldDidEndEditing:(UITextField *)field {
|
|
54
|
+
if ((mask & bare_ui_kit_text_field_event_did_end_editing) == 0) return;
|
|
55
|
+
|
|
56
|
+
bare_ui_kit__emit(env, ctx, "_ondidendediting");
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
- (void)textFieldDidChangeSelection:(UITextField *)field {
|
|
60
|
+
if ((mask & bare_ui_kit_text_field_event_did_change_selection) == 0) return;
|
|
61
|
+
|
|
62
|
+
bare_ui_kit__emit(env, ctx, "_ondidchangeselection");
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// UIKit reports an edit before it happens and a change after it, and both are
|
|
66
|
+
// needed.
|
|
67
|
+
- (BOOL)textField:(UITextField *)field shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
|
|
68
|
+
if ((mask & bare_ui_kit_text_field_event_should_change_characters) != 0) {
|
|
69
|
+
bare_ui_kit__emit_replacement(env, ctx, "_onshouldchangecharacters", (int32_t) range.location, (int32_t) range.length, string);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return YES;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
- (BOOL)textFieldShouldReturn:(UITextField *)field {
|
|
76
|
+
if ((mask & bare_ui_kit_text_field_event_should_return) != 0) {
|
|
77
|
+
bare_ui_kit__emit(env, ctx, "_onshouldreturn");
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return YES;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
- (void)bareEditingChanged:(id)sender {
|
|
84
|
+
if ((mask & bare_ui_kit_text_field_event_did_change) == 0) return;
|
|
85
|
+
|
|
86
|
+
bare_ui_kit__emit(env, ctx, "_ondidchange");
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
@end
|
|
90
|
+
|
|
91
|
+
static js_value_t *
|
|
92
|
+
bare_ui_kit_text_field_init(js_env_t *env, js_callback_info_t *info) {
|
|
93
|
+
int err;
|
|
94
|
+
|
|
95
|
+
size_t argc = 5;
|
|
96
|
+
js_value_t *argv[5];
|
|
97
|
+
|
|
98
|
+
bare_ui_kit_state_t *state;
|
|
99
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
100
|
+
assert(err == 0);
|
|
101
|
+
|
|
102
|
+
assert(argc == 5);
|
|
103
|
+
|
|
104
|
+
double x;
|
|
105
|
+
if (!bare_ui_kit__read_double(env, argv[0], "x", &x)) return NULL;
|
|
106
|
+
|
|
107
|
+
double y;
|
|
108
|
+
if (!bare_ui_kit__read_double(env, argv[1], "y", &y)) return NULL;
|
|
109
|
+
|
|
110
|
+
double width;
|
|
111
|
+
if (!bare_ui_kit__read_double(env, argv[2], "width", &width)) return NULL;
|
|
112
|
+
|
|
113
|
+
double height;
|
|
114
|
+
if (!bare_ui_kit__read_double(env, argv[3], "height", &height)) return NULL;
|
|
115
|
+
|
|
116
|
+
js_value_t *result;
|
|
117
|
+
|
|
118
|
+
@autoreleasepool {
|
|
119
|
+
BareTextField *handle = [[[BareTextField alloc]
|
|
120
|
+
initWithFrame:CGRectMake(x, y, width, height)] autorelease];
|
|
121
|
+
|
|
122
|
+
result = bare_foundation_bridge(env, state->registry, handle);
|
|
123
|
+
|
|
124
|
+
handle->env = env;
|
|
125
|
+
|
|
126
|
+
err = js_create_reference(env, argv[4], 0, &handle->ctx);
|
|
127
|
+
assert(err == 0);
|
|
128
|
+
|
|
129
|
+
handle.delegate = handle;
|
|
130
|
+
|
|
131
|
+
// The delegate hears about an edit before it happens. The change itself is
|
|
132
|
+
// a control event, as for every other `UIControl`.
|
|
133
|
+
[handle addTarget:handle
|
|
134
|
+
action:@selector(bareEditingChanged:)
|
|
135
|
+
forControlEvents:UIControlEventEditingChanged];
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
return result;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// A field selects with opaque positions, so they are turned into offsets here
|
|
142
|
+
// with `UITextInput`.
|
|
143
|
+
static js_value_t *
|
|
144
|
+
bare_ui_kit_text_field_selected_range(js_env_t *env, js_callback_info_t *info) {
|
|
145
|
+
int err;
|
|
146
|
+
|
|
147
|
+
size_t argc = 3;
|
|
148
|
+
js_value_t *argv[3];
|
|
149
|
+
|
|
150
|
+
bare_ui_kit_state_t *state;
|
|
151
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
152
|
+
assert(err == 0);
|
|
153
|
+
|
|
154
|
+
assert(argc == 1 || argc == 3);
|
|
155
|
+
|
|
156
|
+
void *handle;
|
|
157
|
+
if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
|
|
158
|
+
|
|
159
|
+
js_value_t *result = NULL;
|
|
160
|
+
|
|
161
|
+
@autoreleasepool {
|
|
162
|
+
UITextField *text_field = (__bridge UITextField *) handle;
|
|
163
|
+
|
|
164
|
+
if (argc == 1) {
|
|
165
|
+
UITextRange *range = text_field.selectedTextRange;
|
|
166
|
+
|
|
167
|
+
NSInteger location = 0;
|
|
168
|
+
NSInteger length = 0;
|
|
169
|
+
|
|
170
|
+
if (range != nil) {
|
|
171
|
+
location = [text_field offsetFromPosition:text_field.beginningOfDocument toPosition:range.start];
|
|
172
|
+
length = [text_field offsetFromPosition:range.start toPosition:range.end];
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
result = bare_ui_kit__from_range(env, NSMakeRange(location, length));
|
|
176
|
+
} else {
|
|
177
|
+
int32_t location;
|
|
178
|
+
if (!bare_ui_kit__read_int32(env, argv[1], "location", &location)) return NULL;
|
|
179
|
+
|
|
180
|
+
int32_t length;
|
|
181
|
+
if (!bare_ui_kit__read_int32(env, argv[2], "length", &length)) return NULL;
|
|
182
|
+
|
|
183
|
+
UITextPosition *start = [text_field positionFromPosition:text_field.beginningOfDocument offset:location];
|
|
184
|
+
UITextPosition *end = [text_field positionFromPosition:start offset:length];
|
|
185
|
+
|
|
186
|
+
if (start != nil && end != nil) {
|
|
187
|
+
text_field.selectedTextRange = [text_field textRangeFromPosition:start toPosition:end];
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
return result;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
static js_value_t *
|
|
196
|
+
bare_ui_kit_text_field_text(js_env_t *env, js_callback_info_t *info) {
|
|
197
|
+
int err;
|
|
198
|
+
|
|
199
|
+
size_t argc = 2;
|
|
200
|
+
js_value_t *argv[2];
|
|
201
|
+
|
|
202
|
+
bare_ui_kit_state_t *state;
|
|
203
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
204
|
+
assert(err == 0);
|
|
205
|
+
|
|
206
|
+
assert(argc == 1 || argc == 2);
|
|
207
|
+
|
|
208
|
+
void *handle;
|
|
209
|
+
if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
|
|
210
|
+
|
|
211
|
+
js_value_t *result = NULL;
|
|
212
|
+
|
|
213
|
+
@autoreleasepool {
|
|
214
|
+
UITextField *text_field = (__bridge UITextField *) handle;
|
|
215
|
+
|
|
216
|
+
if (argc == 1) {
|
|
217
|
+
result = bare_ui_kit__from_string(env, text_field.text);
|
|
218
|
+
} else {
|
|
219
|
+
text_field.text = bare_ui_kit__to_string(env, argv[1]);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
return result;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
static js_value_t *
|
|
227
|
+
bare_ui_kit_text_field_placeholder(js_env_t *env, js_callback_info_t *info) {
|
|
228
|
+
int err;
|
|
229
|
+
|
|
230
|
+
size_t argc = 2;
|
|
231
|
+
js_value_t *argv[2];
|
|
232
|
+
|
|
233
|
+
bare_ui_kit_state_t *state;
|
|
234
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
235
|
+
assert(err == 0);
|
|
236
|
+
|
|
237
|
+
assert(argc == 1 || argc == 2);
|
|
238
|
+
|
|
239
|
+
void *handle;
|
|
240
|
+
if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
|
|
241
|
+
|
|
242
|
+
js_value_t *result = NULL;
|
|
243
|
+
|
|
244
|
+
@autoreleasepool {
|
|
245
|
+
UITextField *text_field = (__bridge UITextField *) handle;
|
|
246
|
+
|
|
247
|
+
if (argc == 1) {
|
|
248
|
+
result = bare_ui_kit__from_string(env, text_field.placeholder);
|
|
249
|
+
} else {
|
|
250
|
+
text_field.placeholder = bare_ui_kit__to_string(env, argv[1]);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
return result;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
static js_value_t *
|
|
258
|
+
bare_ui_kit_text_field_font(js_env_t *env, js_callback_info_t *info) {
|
|
259
|
+
int err;
|
|
260
|
+
|
|
261
|
+
size_t argc = 2;
|
|
262
|
+
js_value_t *argv[2];
|
|
263
|
+
|
|
264
|
+
bare_ui_kit_state_t *state;
|
|
265
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
266
|
+
assert(err == 0);
|
|
267
|
+
|
|
268
|
+
assert(argc == 1 || argc == 2);
|
|
269
|
+
|
|
270
|
+
void *handle;
|
|
271
|
+
if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
|
|
272
|
+
|
|
273
|
+
js_value_t *result = NULL;
|
|
274
|
+
|
|
275
|
+
@autoreleasepool {
|
|
276
|
+
UITextField *text_field = (__bridge UITextField *) handle;
|
|
277
|
+
|
|
278
|
+
if (argc == 1) {
|
|
279
|
+
result = bare_foundation_bridge(env, state->registry, text_field.font);
|
|
280
|
+
} else {
|
|
281
|
+
text_field.font = bare_foundation_to_object(env, state->registry, argv[1]);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
return result;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
static js_value_t *
|
|
289
|
+
bare_ui_kit_text_field_text_color(js_env_t *env, js_callback_info_t *info) {
|
|
290
|
+
int err;
|
|
291
|
+
|
|
292
|
+
size_t argc = 2;
|
|
293
|
+
js_value_t *argv[2];
|
|
294
|
+
|
|
295
|
+
bare_ui_kit_state_t *state;
|
|
296
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
297
|
+
assert(err == 0);
|
|
298
|
+
|
|
299
|
+
assert(argc == 1 || argc == 2);
|
|
300
|
+
|
|
301
|
+
void *handle;
|
|
302
|
+
if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
|
|
303
|
+
|
|
304
|
+
js_value_t *result = NULL;
|
|
305
|
+
|
|
306
|
+
@autoreleasepool {
|
|
307
|
+
UITextField *text_field = (__bridge UITextField *) handle;
|
|
308
|
+
|
|
309
|
+
if (argc == 1) {
|
|
310
|
+
result = bare_foundation_bridge(env, state->registry, text_field.textColor);
|
|
311
|
+
} else {
|
|
312
|
+
text_field.textColor = bare_foundation_to_object(env, state->registry, argv[1]);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
return result;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
static js_value_t *
|
|
320
|
+
bare_ui_kit_text_field_text_alignment(js_env_t *env, js_callback_info_t *info) {
|
|
321
|
+
int err;
|
|
322
|
+
|
|
323
|
+
size_t argc = 2;
|
|
324
|
+
js_value_t *argv[2];
|
|
325
|
+
|
|
326
|
+
bare_ui_kit_state_t *state;
|
|
327
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
328
|
+
assert(err == 0);
|
|
329
|
+
|
|
330
|
+
assert(argc == 1 || argc == 2);
|
|
331
|
+
|
|
332
|
+
void *handle;
|
|
333
|
+
if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
|
|
334
|
+
|
|
335
|
+
js_value_t *result = NULL;
|
|
336
|
+
|
|
337
|
+
@autoreleasepool {
|
|
338
|
+
UITextField *text_field = (__bridge UITextField *) handle;
|
|
339
|
+
|
|
340
|
+
if (argc == 1) {
|
|
341
|
+
err = js_create_int32(env, (int32_t) text_field.textAlignment, &result);
|
|
342
|
+
assert(err == 0);
|
|
343
|
+
} else {
|
|
344
|
+
int32_t value;
|
|
345
|
+
if (!bare_ui_kit__read_int32(env, argv[1], "text_alignment", &value)) return NULL;
|
|
346
|
+
|
|
347
|
+
text_field.textAlignment = value;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
return result;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
static js_value_t *
|
|
355
|
+
bare_ui_kit_text_field_secure_text_entry(js_env_t *env, js_callback_info_t *info) {
|
|
356
|
+
int err;
|
|
357
|
+
|
|
358
|
+
size_t argc = 2;
|
|
359
|
+
js_value_t *argv[2];
|
|
360
|
+
|
|
361
|
+
bare_ui_kit_state_t *state;
|
|
362
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
363
|
+
assert(err == 0);
|
|
364
|
+
|
|
365
|
+
assert(argc == 1 || argc == 2);
|
|
366
|
+
|
|
367
|
+
void *handle;
|
|
368
|
+
if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
|
|
369
|
+
|
|
370
|
+
js_value_t *result = NULL;
|
|
371
|
+
|
|
372
|
+
@autoreleasepool {
|
|
373
|
+
UITextField *text_field = (__bridge UITextField *) handle;
|
|
374
|
+
|
|
375
|
+
if (argc == 1) {
|
|
376
|
+
err = js_get_boolean(env, text_field.secureTextEntry, &result);
|
|
377
|
+
assert(err == 0);
|
|
378
|
+
} else {
|
|
379
|
+
bool value;
|
|
380
|
+
if (!bare_ui_kit__read_bool(env, argv[1], "secure_text_entry", &value)) return NULL;
|
|
381
|
+
|
|
382
|
+
text_field.secureTextEntry = value;
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
return result;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
static js_value_t *
|
|
390
|
+
bare_ui_kit_text_field_keyboard_type(js_env_t *env, js_callback_info_t *info) {
|
|
391
|
+
int err;
|
|
392
|
+
|
|
393
|
+
size_t argc = 2;
|
|
394
|
+
js_value_t *argv[2];
|
|
395
|
+
|
|
396
|
+
bare_ui_kit_state_t *state;
|
|
397
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
398
|
+
assert(err == 0);
|
|
399
|
+
|
|
400
|
+
assert(argc == 1 || argc == 2);
|
|
401
|
+
|
|
402
|
+
void *handle;
|
|
403
|
+
if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
|
|
404
|
+
|
|
405
|
+
js_value_t *result = NULL;
|
|
406
|
+
|
|
407
|
+
@autoreleasepool {
|
|
408
|
+
UITextField *text_field = (__bridge UITextField *) handle;
|
|
409
|
+
|
|
410
|
+
if (argc == 1) {
|
|
411
|
+
err = js_create_int32(env, (int32_t) text_field.keyboardType, &result);
|
|
412
|
+
assert(err == 0);
|
|
413
|
+
} else {
|
|
414
|
+
int32_t value;
|
|
415
|
+
if (!bare_ui_kit__read_int32(env, argv[1], "keyboard_type", &value)) return NULL;
|
|
416
|
+
|
|
417
|
+
text_field.keyboardType = value;
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
return result;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
static js_value_t *
|
|
425
|
+
bare_ui_kit_text_field_return_key_type(js_env_t *env, js_callback_info_t *info) {
|
|
426
|
+
int err;
|
|
427
|
+
|
|
428
|
+
size_t argc = 2;
|
|
429
|
+
js_value_t *argv[2];
|
|
430
|
+
|
|
431
|
+
bare_ui_kit_state_t *state;
|
|
432
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
433
|
+
assert(err == 0);
|
|
434
|
+
|
|
435
|
+
assert(argc == 1 || argc == 2);
|
|
436
|
+
|
|
437
|
+
void *handle;
|
|
438
|
+
if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
|
|
439
|
+
|
|
440
|
+
js_value_t *result = NULL;
|
|
441
|
+
|
|
442
|
+
@autoreleasepool {
|
|
443
|
+
UITextField *text_field = (__bridge UITextField *) handle;
|
|
444
|
+
|
|
445
|
+
if (argc == 1) {
|
|
446
|
+
err = js_create_int32(env, (int32_t) text_field.returnKeyType, &result);
|
|
447
|
+
assert(err == 0);
|
|
448
|
+
} else {
|
|
449
|
+
int32_t value;
|
|
450
|
+
if (!bare_ui_kit__read_int32(env, argv[1], "return_key_type", &value)) return NULL;
|
|
451
|
+
|
|
452
|
+
text_field.returnKeyType = value;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
return result;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
static js_value_t *
|
|
460
|
+
bare_ui_kit_text_field_autocapitalization_type(js_env_t *env, js_callback_info_t *info) {
|
|
461
|
+
int err;
|
|
462
|
+
|
|
463
|
+
size_t argc = 2;
|
|
464
|
+
js_value_t *argv[2];
|
|
465
|
+
|
|
466
|
+
bare_ui_kit_state_t *state;
|
|
467
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
468
|
+
assert(err == 0);
|
|
469
|
+
|
|
470
|
+
assert(argc == 1 || argc == 2);
|
|
471
|
+
|
|
472
|
+
void *handle;
|
|
473
|
+
if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
|
|
474
|
+
|
|
475
|
+
js_value_t *result = NULL;
|
|
476
|
+
|
|
477
|
+
@autoreleasepool {
|
|
478
|
+
UITextField *text_field = (__bridge UITextField *) handle;
|
|
479
|
+
|
|
480
|
+
if (argc == 1) {
|
|
481
|
+
err = js_create_int32(env, (int32_t) text_field.autocapitalizationType, &result);
|
|
482
|
+
assert(err == 0);
|
|
483
|
+
} else {
|
|
484
|
+
int32_t value;
|
|
485
|
+
if (!bare_ui_kit__read_int32(env, argv[1], "autocapitalization_type", &value)) return NULL;
|
|
486
|
+
|
|
487
|
+
text_field.autocapitalizationType = value;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
return result;
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
static js_value_t *
|
|
495
|
+
bare_ui_kit_text_field_autocorrection_type(js_env_t *env, js_callback_info_t *info) {
|
|
496
|
+
int err;
|
|
497
|
+
|
|
498
|
+
size_t argc = 2;
|
|
499
|
+
js_value_t *argv[2];
|
|
500
|
+
|
|
501
|
+
bare_ui_kit_state_t *state;
|
|
502
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
503
|
+
assert(err == 0);
|
|
504
|
+
|
|
505
|
+
assert(argc == 1 || argc == 2);
|
|
506
|
+
|
|
507
|
+
void *handle;
|
|
508
|
+
if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
|
|
509
|
+
|
|
510
|
+
js_value_t *result = NULL;
|
|
511
|
+
|
|
512
|
+
@autoreleasepool {
|
|
513
|
+
UITextField *text_field = (__bridge UITextField *) handle;
|
|
514
|
+
|
|
515
|
+
if (argc == 1) {
|
|
516
|
+
err = js_create_int32(env, (int32_t) text_field.autocorrectionType, &result);
|
|
517
|
+
assert(err == 0);
|
|
518
|
+
} else {
|
|
519
|
+
int32_t value;
|
|
520
|
+
if (!bare_ui_kit__read_int32(env, argv[1], "autocorrection_type", &value)) return NULL;
|
|
521
|
+
|
|
522
|
+
text_field.autocorrectionType = value;
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
return result;
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
static js_value_t *
|
|
530
|
+
bare_ui_kit_text_field_enabled(js_env_t *env, js_callback_info_t *info) {
|
|
531
|
+
int err;
|
|
532
|
+
|
|
533
|
+
size_t argc = 2;
|
|
534
|
+
js_value_t *argv[2];
|
|
535
|
+
|
|
536
|
+
bare_ui_kit_state_t *state;
|
|
537
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
538
|
+
assert(err == 0);
|
|
539
|
+
|
|
540
|
+
assert(argc == 1 || argc == 2);
|
|
541
|
+
|
|
542
|
+
void *handle;
|
|
543
|
+
if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
|
|
544
|
+
|
|
545
|
+
js_value_t *result = NULL;
|
|
546
|
+
|
|
547
|
+
@autoreleasepool {
|
|
548
|
+
UITextField *text_field = (__bridge UITextField *) handle;
|
|
549
|
+
|
|
550
|
+
if (argc == 1) {
|
|
551
|
+
err = js_get_boolean(env, text_field.enabled, &result);
|
|
552
|
+
assert(err == 0);
|
|
553
|
+
} else {
|
|
554
|
+
bool value;
|
|
555
|
+
if (!bare_ui_kit__read_bool(env, argv[1], "enabled", &value)) return NULL;
|
|
556
|
+
|
|
557
|
+
text_field.enabled = value;
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
return result;
|
|
562
|
+
}
|