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/label.h
ADDED
|
@@ -0,0 +1,331 @@
|
|
|
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
|
+
static js_value_t *
|
|
10
|
+
bare_ui_kit_label_init(js_env_t *env, js_callback_info_t *info) {
|
|
11
|
+
int err;
|
|
12
|
+
|
|
13
|
+
size_t argc = 4;
|
|
14
|
+
js_value_t *argv[4];
|
|
15
|
+
|
|
16
|
+
bare_ui_kit_state_t *state;
|
|
17
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
18
|
+
assert(err == 0);
|
|
19
|
+
|
|
20
|
+
assert(argc == 4);
|
|
21
|
+
|
|
22
|
+
double x;
|
|
23
|
+
if (!bare_ui_kit__read_double(env, argv[0], "x", &x)) return NULL;
|
|
24
|
+
|
|
25
|
+
double y;
|
|
26
|
+
if (!bare_ui_kit__read_double(env, argv[1], "y", &y)) return NULL;
|
|
27
|
+
|
|
28
|
+
double width;
|
|
29
|
+
if (!bare_ui_kit__read_double(env, argv[2], "width", &width)) return NULL;
|
|
30
|
+
|
|
31
|
+
double height;
|
|
32
|
+
if (!bare_ui_kit__read_double(env, argv[3], "height", &height)) return NULL;
|
|
33
|
+
|
|
34
|
+
js_value_t *result;
|
|
35
|
+
|
|
36
|
+
@autoreleasepool {
|
|
37
|
+
UILabel *handle = [[[UILabel alloc]
|
|
38
|
+
initWithFrame:CGRectMake(x, y, width, height)] autorelease];
|
|
39
|
+
|
|
40
|
+
result = bare_foundation_bridge(env, state->registry, handle);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
static js_value_t *
|
|
47
|
+
bare_ui_kit_label_text(js_env_t *env, js_callback_info_t *info) {
|
|
48
|
+
int err;
|
|
49
|
+
|
|
50
|
+
size_t argc = 2;
|
|
51
|
+
js_value_t *argv[2];
|
|
52
|
+
|
|
53
|
+
bare_ui_kit_state_t *state;
|
|
54
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
55
|
+
assert(err == 0);
|
|
56
|
+
|
|
57
|
+
assert(argc == 1 || argc == 2);
|
|
58
|
+
|
|
59
|
+
void *handle;
|
|
60
|
+
if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
|
|
61
|
+
|
|
62
|
+
js_value_t *result = NULL;
|
|
63
|
+
|
|
64
|
+
@autoreleasepool {
|
|
65
|
+
UILabel *label = (__bridge UILabel *) handle;
|
|
66
|
+
|
|
67
|
+
if (argc == 1) {
|
|
68
|
+
result = bare_ui_kit__from_string(env, label.text);
|
|
69
|
+
} else {
|
|
70
|
+
label.text = bare_ui_kit__to_string(env, argv[1]);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return result;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
static js_value_t *
|
|
78
|
+
bare_ui_kit_label_font(js_env_t *env, js_callback_info_t *info) {
|
|
79
|
+
int err;
|
|
80
|
+
|
|
81
|
+
size_t argc = 2;
|
|
82
|
+
js_value_t *argv[2];
|
|
83
|
+
|
|
84
|
+
bare_ui_kit_state_t *state;
|
|
85
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
86
|
+
assert(err == 0);
|
|
87
|
+
|
|
88
|
+
assert(argc == 1 || argc == 2);
|
|
89
|
+
|
|
90
|
+
void *handle;
|
|
91
|
+
if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
|
|
92
|
+
|
|
93
|
+
js_value_t *result = NULL;
|
|
94
|
+
|
|
95
|
+
@autoreleasepool {
|
|
96
|
+
UILabel *label = (__bridge UILabel *) handle;
|
|
97
|
+
|
|
98
|
+
if (argc == 1) {
|
|
99
|
+
result = bare_foundation_bridge(env, state->registry, label.font);
|
|
100
|
+
} else {
|
|
101
|
+
label.font = bare_foundation_to_object(env, state->registry, argv[1]);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
return result;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
static js_value_t *
|
|
109
|
+
bare_ui_kit_label_text_color(js_env_t *env, js_callback_info_t *info) {
|
|
110
|
+
int err;
|
|
111
|
+
|
|
112
|
+
size_t argc = 2;
|
|
113
|
+
js_value_t *argv[2];
|
|
114
|
+
|
|
115
|
+
bare_ui_kit_state_t *state;
|
|
116
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
117
|
+
assert(err == 0);
|
|
118
|
+
|
|
119
|
+
assert(argc == 1 || argc == 2);
|
|
120
|
+
|
|
121
|
+
void *handle;
|
|
122
|
+
if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
|
|
123
|
+
|
|
124
|
+
js_value_t *result = NULL;
|
|
125
|
+
|
|
126
|
+
@autoreleasepool {
|
|
127
|
+
UILabel *label = (__bridge UILabel *) handle;
|
|
128
|
+
|
|
129
|
+
if (argc == 1) {
|
|
130
|
+
result = bare_foundation_bridge(env, state->registry, label.textColor);
|
|
131
|
+
} else {
|
|
132
|
+
label.textColor = bare_foundation_to_object(env, state->registry, argv[1]);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return result;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
static js_value_t *
|
|
140
|
+
bare_ui_kit_label_text_alignment(js_env_t *env, js_callback_info_t *info) {
|
|
141
|
+
int err;
|
|
142
|
+
|
|
143
|
+
size_t argc = 2;
|
|
144
|
+
js_value_t *argv[2];
|
|
145
|
+
|
|
146
|
+
bare_ui_kit_state_t *state;
|
|
147
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
148
|
+
assert(err == 0);
|
|
149
|
+
|
|
150
|
+
assert(argc == 1 || argc == 2);
|
|
151
|
+
|
|
152
|
+
void *handle;
|
|
153
|
+
if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
|
|
154
|
+
|
|
155
|
+
js_value_t *result = NULL;
|
|
156
|
+
|
|
157
|
+
@autoreleasepool {
|
|
158
|
+
UILabel *label = (__bridge UILabel *) handle;
|
|
159
|
+
|
|
160
|
+
if (argc == 1) {
|
|
161
|
+
err = js_create_int32(env, (int32_t) label.textAlignment, &result);
|
|
162
|
+
assert(err == 0);
|
|
163
|
+
} else {
|
|
164
|
+
int32_t text_alignment;
|
|
165
|
+
if (!bare_ui_kit__read_int32(env, argv[1], "text_alignment", &text_alignment)) return NULL;
|
|
166
|
+
|
|
167
|
+
label.textAlignment = text_alignment;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
return result;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
static void
|
|
175
|
+
bare_ui_kit_label_text_alignment_typed(js_value_t *receiver, int32_t bare_tag, int32_t text_alignment, js_typed_callback_info_t *info) {
|
|
176
|
+
int err;
|
|
177
|
+
|
|
178
|
+
bare_ui_kit_state_t *state;
|
|
179
|
+
err = js_get_typed_callback_info(info, NULL, (void **) &state);
|
|
180
|
+
assert(err == 0);
|
|
181
|
+
|
|
182
|
+
id bare_object = bare_foundation_object(state->registry, bare_tag);
|
|
183
|
+
|
|
184
|
+
if (bare_object == nil) return;
|
|
185
|
+
|
|
186
|
+
@autoreleasepool {
|
|
187
|
+
UILabel *label = (UILabel *) bare_object;
|
|
188
|
+
|
|
189
|
+
label.textAlignment = text_alignment;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
static js_value_t *
|
|
194
|
+
bare_ui_kit_label_number_of_lines(js_env_t *env, js_callback_info_t *info) {
|
|
195
|
+
int err;
|
|
196
|
+
|
|
197
|
+
size_t argc = 2;
|
|
198
|
+
js_value_t *argv[2];
|
|
199
|
+
|
|
200
|
+
bare_ui_kit_state_t *state;
|
|
201
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
202
|
+
assert(err == 0);
|
|
203
|
+
|
|
204
|
+
assert(argc == 1 || argc == 2);
|
|
205
|
+
|
|
206
|
+
void *handle;
|
|
207
|
+
if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
|
|
208
|
+
|
|
209
|
+
js_value_t *result = NULL;
|
|
210
|
+
|
|
211
|
+
@autoreleasepool {
|
|
212
|
+
UILabel *label = (__bridge UILabel *) handle;
|
|
213
|
+
|
|
214
|
+
if (argc == 1) {
|
|
215
|
+
err = js_create_int32(env, (int32_t) label.numberOfLines, &result);
|
|
216
|
+
assert(err == 0);
|
|
217
|
+
} else {
|
|
218
|
+
int32_t number_of_lines;
|
|
219
|
+
if (!bare_ui_kit__read_int32(env, argv[1], "number_of_lines", &number_of_lines)) return NULL;
|
|
220
|
+
|
|
221
|
+
label.numberOfLines = number_of_lines;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
return result;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
static void
|
|
229
|
+
bare_ui_kit_label_number_of_lines_typed(js_value_t *receiver, int32_t bare_tag, int32_t number_of_lines, js_typed_callback_info_t *info) {
|
|
230
|
+
int err;
|
|
231
|
+
|
|
232
|
+
bare_ui_kit_state_t *state;
|
|
233
|
+
err = js_get_typed_callback_info(info, NULL, (void **) &state);
|
|
234
|
+
assert(err == 0);
|
|
235
|
+
|
|
236
|
+
id bare_object = bare_foundation_object(state->registry, bare_tag);
|
|
237
|
+
|
|
238
|
+
if (bare_object == nil) return;
|
|
239
|
+
|
|
240
|
+
@autoreleasepool {
|
|
241
|
+
UILabel *label = (UILabel *) bare_object;
|
|
242
|
+
|
|
243
|
+
label.numberOfLines = number_of_lines;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
static js_value_t *
|
|
248
|
+
bare_ui_kit_label_line_break_mode(js_env_t *env, js_callback_info_t *info) {
|
|
249
|
+
int err;
|
|
250
|
+
|
|
251
|
+
size_t argc = 2;
|
|
252
|
+
js_value_t *argv[2];
|
|
253
|
+
|
|
254
|
+
bare_ui_kit_state_t *state;
|
|
255
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
256
|
+
assert(err == 0);
|
|
257
|
+
|
|
258
|
+
assert(argc == 1 || argc == 2);
|
|
259
|
+
|
|
260
|
+
void *handle;
|
|
261
|
+
if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
|
|
262
|
+
|
|
263
|
+
js_value_t *result = NULL;
|
|
264
|
+
|
|
265
|
+
@autoreleasepool {
|
|
266
|
+
UILabel *label = (__bridge UILabel *) handle;
|
|
267
|
+
|
|
268
|
+
if (argc == 1) {
|
|
269
|
+
err = js_create_int32(env, (int32_t) label.lineBreakMode, &result);
|
|
270
|
+
assert(err == 0);
|
|
271
|
+
} else {
|
|
272
|
+
int32_t line_break_mode;
|
|
273
|
+
if (!bare_ui_kit__read_int32(env, argv[1], "line_break_mode", &line_break_mode)) return NULL;
|
|
274
|
+
|
|
275
|
+
label.lineBreakMode = line_break_mode;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
return result;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
static void
|
|
283
|
+
bare_ui_kit_label_line_break_mode_typed(js_value_t *receiver, int32_t bare_tag, int32_t line_break_mode, js_typed_callback_info_t *info) {
|
|
284
|
+
int err;
|
|
285
|
+
|
|
286
|
+
bare_ui_kit_state_t *state;
|
|
287
|
+
err = js_get_typed_callback_info(info, NULL, (void **) &state);
|
|
288
|
+
assert(err == 0);
|
|
289
|
+
|
|
290
|
+
id bare_object = bare_foundation_object(state->registry, bare_tag);
|
|
291
|
+
|
|
292
|
+
if (bare_object == nil) return;
|
|
293
|
+
|
|
294
|
+
@autoreleasepool {
|
|
295
|
+
UILabel *label = (UILabel *) bare_object;
|
|
296
|
+
|
|
297
|
+
label.lineBreakMode = line_break_mode;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
static js_value_t *
|
|
303
|
+
bare_ui_kit_label_attributed_text(js_env_t *env, js_callback_info_t *info) {
|
|
304
|
+
int err;
|
|
305
|
+
|
|
306
|
+
size_t argc = 2;
|
|
307
|
+
js_value_t *argv[2];
|
|
308
|
+
|
|
309
|
+
bare_ui_kit_state_t *state;
|
|
310
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
311
|
+
assert(err == 0);
|
|
312
|
+
|
|
313
|
+
assert(argc == 1 || argc == 2);
|
|
314
|
+
|
|
315
|
+
void *handle;
|
|
316
|
+
if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
|
|
317
|
+
|
|
318
|
+
js_value_t *result = NULL;
|
|
319
|
+
|
|
320
|
+
@autoreleasepool {
|
|
321
|
+
UILabel *label = (__bridge UILabel *) handle;
|
|
322
|
+
|
|
323
|
+
if (argc == 1) {
|
|
324
|
+
result = bare_foundation_bridge(env, state->registry, label.attributedText);
|
|
325
|
+
} else {
|
|
326
|
+
label.attributedText = bare_foundation_to_object(env, state->registry, argv[1]);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
return result;
|
|
331
|
+
}
|
package/lib/label.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
const binding = require('../binding')
|
|
2
|
+
const { adopt } = require('./handle')
|
|
3
|
+
const wrap = require('./wrap')
|
|
4
|
+
const UIKitAttributedString = require('./attributed-string')
|
|
5
|
+
const UIKitColor = require('./color')
|
|
6
|
+
const UIKitFont = require('./font')
|
|
7
|
+
const UIKitView = require('./view')
|
|
8
|
+
|
|
9
|
+
module.exports = exports = class UIKitLabel extends UIKitView {
|
|
10
|
+
_init(opts) {
|
|
11
|
+
const { x = 0, y = 0, width = 0, height = 0 } = opts
|
|
12
|
+
|
|
13
|
+
return binding.labelInit(x, y, width, height)
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
get text() {
|
|
17
|
+
return binding.labelText(this._tag)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
set text(text) {
|
|
21
|
+
binding.labelText(this._tag, text)
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
get attributedText() {
|
|
25
|
+
return wrap(UIKitAttributedString, binding.labelAttributedText(this._tag))
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
set attributedText(value) {
|
|
29
|
+
binding.labelAttributedText(this._tag, adopt(value))
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
get font() {
|
|
33
|
+
return wrap(UIKitFont, binding.labelFont(this._tag))
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
set font(font) {
|
|
37
|
+
binding.labelFont(this._tag, adopt(font))
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
get textColor() {
|
|
41
|
+
return wrap(UIKitColor, binding.labelTextColor(this._tag))
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
set textColor(textColor) {
|
|
45
|
+
binding.labelTextColor(this._tag, adopt(textColor))
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
get textAlignment() {
|
|
49
|
+
return binding.labelTextAlignment(this._tag)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
set textAlignment(textAlignment) {
|
|
53
|
+
binding.labelTextAlignment(this._tag, textAlignment)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
get numberOfLines() {
|
|
57
|
+
return binding.labelNumberOfLines(this._tag)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
set numberOfLines(numberOfLines) {
|
|
61
|
+
binding.labelNumberOfLines(this._tag, numberOfLines)
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
get lineBreakMode() {
|
|
65
|
+
return binding.labelLineBreakMode(this._tag)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
set lineBreakMode(lineBreakMode) {
|
|
69
|
+
binding.labelLineBreakMode(this._tag, lineBreakMode)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
[Symbol.for('bare.inspect')]() {
|
|
73
|
+
return {
|
|
74
|
+
__proto__: { constructor: UIKitLabel }
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
exports.TEXT_ALIGNMENT = {
|
|
80
|
+
LEFT: binding.TEXT_ALIGNMENT_LEFT,
|
|
81
|
+
RIGHT: binding.TEXT_ALIGNMENT_RIGHT,
|
|
82
|
+
CENTER: binding.TEXT_ALIGNMENT_CENTER,
|
|
83
|
+
JUSTIFIED: binding.TEXT_ALIGNMENT_JUSTIFIED,
|
|
84
|
+
NATURAL: binding.TEXT_ALIGNMENT_NATURAL
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
exports.LINE_BREAK_MODE = {
|
|
88
|
+
WORD_WRAPPING: binding.LINE_BREAK_MODE_WORD_WRAPPING,
|
|
89
|
+
CHAR_WRAPPING: binding.LINE_BREAK_MODE_CHAR_WRAPPING,
|
|
90
|
+
CLIPPING: binding.LINE_BREAK_MODE_CLIPPING,
|
|
91
|
+
TRUNCATING_HEAD: binding.LINE_BREAK_MODE_TRUNCATING_HEAD,
|
|
92
|
+
TRUNCATING_TAIL: binding.LINE_BREAK_MODE_TRUNCATING_TAIL,
|
|
93
|
+
TRUNCATING_MIDDLE: binding.LINE_BREAK_MODE_TRUNCATING_MIDDLE
|
|
94
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { tag, handle, Handle, Wrapper } from 'bare-foundation-registry'
|
|
2
|
+
|
|
3
|
+
/** How paragraphs in an attributed string are laid out, as an `NSMutableParagraphStyle`. */
|
|
4
|
+
interface UIKitParagraphStyle {
|
|
5
|
+
/** A `UIKitLabel.TEXT_ALIGNMENT` constant. */
|
|
6
|
+
alignment: number
|
|
7
|
+
|
|
8
|
+
/** A `UIKitLabel.LINE_BREAK_MODE` constant. */
|
|
9
|
+
lineBreakMode: number
|
|
10
|
+
|
|
11
|
+
readonly [tag]: number
|
|
12
|
+
|
|
13
|
+
readonly [handle]: Handle
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
declare class UIKitParagraphStyle {
|
|
17
|
+
constructor()
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export = UIKitParagraphStyle
|
|
@@ -0,0 +1,94 @@
|
|
|
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
|
+
static js_value_t *
|
|
10
|
+
bare_ui_kit_paragraph_style_init(js_env_t *env, js_callback_info_t *info) {
|
|
11
|
+
int err;
|
|
12
|
+
|
|
13
|
+
bare_ui_kit_state_t *state;
|
|
14
|
+
err = js_get_callback_info(env, info, NULL, NULL, NULL, (void **) &state);
|
|
15
|
+
assert(err == 0);
|
|
16
|
+
|
|
17
|
+
js_value_t *result;
|
|
18
|
+
|
|
19
|
+
@autoreleasepool {
|
|
20
|
+
result = bare_foundation_bridge(env, state->registry, [[[NSMutableParagraphStyle alloc] init] autorelease]);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
static js_value_t *
|
|
27
|
+
bare_ui_kit_paragraph_style_alignment(js_env_t *env, js_callback_info_t *info) {
|
|
28
|
+
int err;
|
|
29
|
+
|
|
30
|
+
size_t argc = 2;
|
|
31
|
+
js_value_t *argv[2];
|
|
32
|
+
|
|
33
|
+
bare_ui_kit_state_t *state;
|
|
34
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
35
|
+
assert(err == 0);
|
|
36
|
+
|
|
37
|
+
assert(argc == 1 || argc == 2);
|
|
38
|
+
|
|
39
|
+
void *handle;
|
|
40
|
+
if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
|
|
41
|
+
|
|
42
|
+
js_value_t *result = NULL;
|
|
43
|
+
|
|
44
|
+
@autoreleasepool {
|
|
45
|
+
NSMutableParagraphStyle *style = (__bridge NSMutableParagraphStyle *) handle;
|
|
46
|
+
|
|
47
|
+
if (argc == 1) {
|
|
48
|
+
err = js_create_int32(env, (int32_t) style.alignment, &result);
|
|
49
|
+
assert(err == 0);
|
|
50
|
+
} else {
|
|
51
|
+
int32_t alignment;
|
|
52
|
+
if (!bare_ui_kit__read_int32(env, argv[1], "alignment", &alignment)) return NULL;
|
|
53
|
+
|
|
54
|
+
style.alignment = (NSTextAlignment) alignment;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
static js_value_t *
|
|
62
|
+
bare_ui_kit_paragraph_style_line_break_mode(js_env_t *env, js_callback_info_t *info) {
|
|
63
|
+
int err;
|
|
64
|
+
|
|
65
|
+
size_t argc = 2;
|
|
66
|
+
js_value_t *argv[2];
|
|
67
|
+
|
|
68
|
+
bare_ui_kit_state_t *state;
|
|
69
|
+
err = js_get_callback_info(env, info, &argc, argv, NULL, (void **) &state);
|
|
70
|
+
assert(err == 0);
|
|
71
|
+
|
|
72
|
+
assert(argc == 1 || argc == 2);
|
|
73
|
+
|
|
74
|
+
void *handle;
|
|
75
|
+
if (bare_foundation_read_tag(env, state->registry, argv[0], "handle", &handle) < 0) return NULL;
|
|
76
|
+
|
|
77
|
+
js_value_t *result = NULL;
|
|
78
|
+
|
|
79
|
+
@autoreleasepool {
|
|
80
|
+
NSMutableParagraphStyle *style = (__bridge NSMutableParagraphStyle *) handle;
|
|
81
|
+
|
|
82
|
+
if (argc == 1) {
|
|
83
|
+
err = js_create_int32(env, (int32_t) style.lineBreakMode, &result);
|
|
84
|
+
assert(err == 0);
|
|
85
|
+
} else {
|
|
86
|
+
int32_t mode;
|
|
87
|
+
if (!bare_ui_kit__read_int32(env, argv[1], "lineBreakMode", &mode)) return NULL;
|
|
88
|
+
|
|
89
|
+
style.lineBreakMode = (NSLineBreakMode) mode;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
const binding = require('../binding')
|
|
2
|
+
const registry = require('bare-foundation-registry')
|
|
3
|
+
|
|
4
|
+
module.exports = exports = class UIKitParagraphStyle {
|
|
5
|
+
constructor(opts = {}) {
|
|
6
|
+
const { tag = null } = opts
|
|
7
|
+
|
|
8
|
+
this._tag = tag === null ? binding.paragraphStyleInit() : tag
|
|
9
|
+
|
|
10
|
+
this._token = binding.claim(this._tag, this)
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
get [registry.tag]() {
|
|
14
|
+
return this._tag
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
get [registry.handle]() {
|
|
18
|
+
return binding.handle(this._tag)
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
get alignment() {
|
|
22
|
+
return binding.paragraphStyleAlignment(this._tag)
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
set alignment(value) {
|
|
26
|
+
binding.paragraphStyleAlignment(this._tag, value)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
get lineBreakMode() {
|
|
30
|
+
return binding.paragraphStyleLineBreakMode(this._tag)
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
set lineBreakMode(value) {
|
|
34
|
+
binding.paragraphStyleLineBreakMode(this._tag, value)
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
[Symbol.for('bare.inspect')]() {
|
|
38
|
+
return {
|
|
39
|
+
__proto__: { constructor: UIKitParagraphStyle }
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { tag, handle, Handle, Wrapper } from 'bare-foundation-registry'
|
|
2
|
+
|
|
3
|
+
/** The clipboard, as a `UIPasteboard`. */
|
|
4
|
+
interface UIKitPasteboard {
|
|
5
|
+
string: string | null
|
|
6
|
+
|
|
7
|
+
readonly hasStrings: boolean
|
|
8
|
+
|
|
9
|
+
readonly hasURLs: boolean
|
|
10
|
+
|
|
11
|
+
readonly hasImages: boolean
|
|
12
|
+
|
|
13
|
+
readonly hasColors: boolean
|
|
14
|
+
|
|
15
|
+
readonly numberOfItems: number
|
|
16
|
+
|
|
17
|
+
/** A number that changes every time the contents change. */
|
|
18
|
+
readonly changeCount: number
|
|
19
|
+
|
|
20
|
+
readonly [tag]: number
|
|
21
|
+
|
|
22
|
+
readonly [handle]: Handle
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
declare class UIKitPasteboard {
|
|
26
|
+
protected constructor()
|
|
27
|
+
|
|
28
|
+
static readonly generalPasteboard: UIKitPasteboard
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export = UIKitPasteboard
|