@breakside/jskit 2022.26.1 → 2022.32.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 (63) hide show
  1. package/Frameworks/DOM.jsframework/Info.json +2 -2
  2. package/Frameworks/DOM.jsframework/io.breakside.JSKit.DOM-bundle.js +2 -2
  3. package/Frameworks/FontKit.jsframework/Info.json +2 -2
  4. package/Frameworks/FontKit.jsframework/io.breakside.JSKit.FontKit-bundle.js +2 -2
  5. package/Frameworks/Foundation.jsframework/Info.json +2 -2
  6. package/Frameworks/Foundation.jsframework/JS/JSFileManager+HTML.js +29 -19
  7. package/Frameworks/Foundation.jsframework/JS/JSTextTypesetter.js +2 -3
  8. package/Frameworks/Foundation.jsframework/JS/JSTimeZone.js +11 -4
  9. package/Frameworks/Foundation.jsframework/JS/JSUserDefaults.js +2 -2
  10. package/Frameworks/Foundation.jsframework/JS/String+JS.js +367 -0
  11. package/Frameworks/Foundation.jsframework/JS/UnicodeChar.js +283 -1
  12. package/Frameworks/Foundation.jsframework/JS/UnicodeProperties.js +12 -0
  13. package/Frameworks/Foundation.jsframework/io.breakside.JSKit.Foundation-bundle.js +2 -2
  14. package/Frameworks/SecurityKit.jsframework/Info.json +2 -2
  15. package/Frameworks/SecurityKit.jsframework/io.breakside.JSKit.SecurityKit-bundle.js +2 -2
  16. package/Info.json +2 -2
  17. package/Node/HTMLBuilder.js +1 -1
  18. package/Node/io.breakside.jskit-bundle.js +2 -2
  19. package/Root/Frameworks/APIKit/Info.yaml +1 -1
  20. package/Root/Frameworks/APIKitTesting/Info.yaml +1 -1
  21. package/Root/Frameworks/AuthKit/Info.yaml +1 -1
  22. package/Root/Frameworks/CSSOM/Info.yaml +1 -1
  23. package/Root/Frameworks/ChartKit/Info.yaml +1 -1
  24. package/Root/Frameworks/ConferenceKit/Info.yaml +1 -1
  25. package/Root/Frameworks/DBKit/Info.yaml +1 -1
  26. package/Root/Frameworks/DOM/Info.yaml +1 -1
  27. package/Root/Frameworks/Dispatch/Info.yaml +1 -1
  28. package/Root/Frameworks/FontKit/Info.yaml +1 -1
  29. package/Root/Frameworks/Foundation/Info.yaml +1 -1
  30. package/Root/Frameworks/Foundation/JSFileManager+HTML.js +29 -19
  31. package/Root/Frameworks/Foundation/JSTextTypesetter.js +2 -3
  32. package/Root/Frameworks/Foundation/JSTimeZone.js +11 -4
  33. package/Root/Frameworks/Foundation/JSUserDefaults.js +2 -2
  34. package/Root/Frameworks/Foundation/String+JS.js +367 -0
  35. package/Root/Frameworks/Foundation/UnicodeChar.js +283 -1
  36. package/Root/Frameworks/Foundation/UnicodeProperties.js +12 -0
  37. package/Root/Frameworks/ImageKit/Info.yaml +1 -1
  38. package/Root/Frameworks/MediaKit/Info.yaml +1 -1
  39. package/Root/Frameworks/MediaKitUI/Info.yaml +1 -1
  40. package/Root/Frameworks/NotificationKit/Info.yaml +1 -1
  41. package/Root/Frameworks/PDFKit/Info.yaml +1 -1
  42. package/Root/Frameworks/QRKit/Info.yaml +1 -1
  43. package/Root/Frameworks/SearchKit/Info.yaml +1 -1
  44. package/Root/Frameworks/SecurityKit/Info.yaml +1 -1
  45. package/Root/Frameworks/ServerKit/Info.yaml +1 -1
  46. package/Root/Frameworks/ServerKitTesting/Info.yaml +1 -1
  47. package/Root/Frameworks/TestKit/Info.yaml +1 -1
  48. package/Root/Frameworks/UIKit/Info.yaml +1 -1
  49. package/Root/Frameworks/UIKit/UIApplication.js +33 -15
  50. package/Root/Frameworks/UIKit/UICheckbox.js +15 -8
  51. package/Root/Frameworks/UIKit/UICollectionView.js +2 -2
  52. package/Root/Frameworks/UIKit/UIDisplayServer.js +51 -10
  53. package/Root/Frameworks/UIKit/UIHTMLTextTypesetter.js +2 -2
  54. package/Root/Frameworks/UIKit/UILayer.js +3 -0
  55. package/Root/Frameworks/UIKit/UIListView.js +10 -6
  56. package/Root/Frameworks/UIKit/UIMenuView.js +77 -18
  57. package/Root/Frameworks/UIKit/UINavigationBar.js +45 -22
  58. package/Root/Frameworks/UIKit/UIScrollView.js +26 -6
  59. package/Root/Frameworks/UIKit/UISlider.js +1 -1
  60. package/Root/Frameworks/UIKit/UITextField.js +8 -1
  61. package/Root/Frameworks/UIKit/UIView.js +11 -0
  62. package/Root/Frameworks/UIKitTesting/Info.yaml +1 -1
  63. package/package.json +1 -1
@@ -49,6 +49,7 @@ UnicodeChar.GeneralCategoryPropertyMap = {
49
49
 
50
50
  UnicodeChar.LineBreaks = {
51
51
  newLine: 0x000A,
52
+ verticalTab: 0x000B,
52
53
  formFeed: 0x000C,
53
54
  carriageReturn: 0x000D,
54
55
  nextLine: 0x0085,
@@ -56,6 +57,52 @@ UnicodeChar.LineBreaks = {
56
57
  paragraphSeparator: 0x2029
57
58
  };
58
59
 
60
+ UnicodeChar.LineBreakingClass = {
61
+ ambiguous: 0, // AI
62
+ alphabetic: 1, // AL
63
+ breakAfter: 2, // BA
64
+ breakBefore: 3, // BB
65
+ breakOpportunity: 4, // B2
66
+ mandatoryBreak: 5, // BK
67
+ contingentBreak: 6, // CB
68
+ conditionalJapaneseStarter: 7, // CJ
69
+ closePunctuation: 8, // CL
70
+ combiningMark: 9, // CM
71
+ closingParenthesis: 10, // CP
72
+ carriageReturn: 11, // CR
73
+ emojiBase: 12, // EB
74
+ emojiModifier: 13, // EM
75
+ exclamation: 14, // EX
76
+ glue: 15, // GL
77
+ hangulLV: 16, // H2
78
+ hangulLVT: 17, // H3
79
+ hyphen: 18, // HY
80
+ ideographic: 19, // ID
81
+ hebrewLetter: 20, // HL
82
+ inseperable: 21, // IN
83
+ infixNumeric: 22, // IS
84
+ hangulLJambo: 23, // JL
85
+ hangulTJambo: 24, // JT
86
+ hangulVJambo: 25, // JV
87
+ lineFeed: 26, // LF
88
+ nextLine: 27, // NL
89
+ nonstarters: 28, // NS
90
+ numeric: 29, // NU
91
+ openPunctuation: 30, // OP
92
+ postfixNumeric: 31, // PO
93
+ prefixNumeric: 32, // PR
94
+ quotation: 33, // QU
95
+ regionalIndicator: 34, // RI
96
+ complexContentDependent: 35, // SA
97
+ surrogate: 36, // SG
98
+ space: 37, // SP
99
+ symbolsBreakAfter: 38, // SY
100
+ wordJoiner: 39, // WJ
101
+ unknown: 40, // XX
102
+ zeroWidthSpace: 41, // ZW
103
+ zeroWidthJoiner: 42, // ZWJ
104
+ };
105
+
59
106
  UnicodeChar.prototype = Object.create(Object.prototype, {
60
107
 
61
108
  utf16: {
@@ -178,6 +225,241 @@ UnicodeChar.prototype = Object.create(Object.prototype, {
178
225
  }
179
226
  },
180
227
 
228
+ lineBreakingClass: {
229
+ configurable: true,
230
+ get: function UnicodeChar_lazy_lineBreakAmbiguous(){
231
+ // Start with basic ascii (0x00-0x7F)
232
+ if (this.code === 0x0009){
233
+ return UnicodeChar.LineBreakingClass.breakAfter;
234
+ }
235
+ if (this.code === 0x000A){
236
+ return UnicodeChar.LineBreakingClass.lineFeed;
237
+ }
238
+ if (this.code === 0x000B || this.code === 0x000C || this.code === 0x2028 || this.code === 0x2029){
239
+ return UnicodeChar.LineBreakingClass.mandatoryBreak;
240
+ }
241
+ if (this.code === 0x000D){
242
+ return UnicodeChar.LineBreakingClass.carriageReturn;
243
+ }
244
+ if (this.code < 0x0020){
245
+ return UnicodeChar.LineBreakingClass.combiningMark;
246
+ }
247
+ if (this.code === 0x0020){
248
+ return UnicodeChar.LineBreakingClass.space;
249
+ }
250
+ if (this.code === 0x0021){
251
+ return UnicodeChar.LineBreakingClass.exclamation;
252
+ }
253
+ if (this.code === 0x0022 || this.code === 0x0027){
254
+ return UnicodeChar.LineBreakingClass.quotation;
255
+ }
256
+ if (this.code === 0x0023){
257
+ return UnicodeChar.LineBreakingClass.alphabetic;
258
+ }
259
+ if (this.code === 0x0024){
260
+ return UnicodeChar.LineBreakingClass.prefixNumeric;
261
+ }
262
+ if (this.code === 0x0025){
263
+ return UnicodeChar.LineBreakingClass.postfixNumeric;
264
+ }
265
+ if (this.code === 0x0026){
266
+ return UnicodeChar.LineBreakingClass.alphabetic;
267
+ }
268
+ if (this.code === 0x0028){
269
+ return UnicodeChar.LineBreakingClass.openPunctuation;
270
+ }
271
+ if (this.code === 0x0029 || this.code === 0x005D){
272
+ return UnicodeChar.LineBreakingClass.closingParenthesis;
273
+ }
274
+ if (this.code === 0x002A){
275
+ return UnicodeChar.LineBreakingClass.alphabetic;
276
+ }
277
+ if (this.code === 0x002B){
278
+ return UnicodeChar.LineBreakingClass.prefixNumeric;
279
+ }
280
+ if ((this.code === 0x002C) || (this.code === 0x002E)){
281
+ return UnicodeChar.LineBreakingClass.infixNumeric;
282
+ }
283
+ if (this.code === 0x002D){
284
+ return UnicodeChar.LineBreakingClass.hyphen;
285
+ }
286
+ if (this.code === 0x002F){
287
+ return UnicodeChar.LineBreakingClass.symbolsBreakAfter;
288
+ }
289
+ if (this.code <= 0x0039){
290
+ return UnicodeChar.LineBreakingClass.numeric;
291
+ }
292
+ if (this.code <= 0x003B){
293
+ return UnicodeChar.LineBreakingClass.infixNumeric;
294
+ }
295
+ if (this.code <= 0x003E){
296
+ return UnicodeChar.LineBreakingClass.alphabetic;
297
+ }
298
+ if (this.code === 0x003F){
299
+ return UnicodeChar.LineBreakingClass.exclamation;
300
+ }
301
+ if (this.code <= 0x005A){
302
+ return UnicodeChar.LineBreakingClass.alphabetic;
303
+ }
304
+ if (this.code === 0x005B){
305
+ return UnicodeChar.LineBreakingClass.openPunctuation;
306
+ }
307
+ if (this.code === 0x005C){
308
+ return UnicodeChar.LineBreakingClass.prefixNumeric;
309
+ }
310
+ if (this.code === 0x005D){
311
+ return UnicodeChar.LineBreakingClass.closingParenthesis;
312
+ }
313
+ if (this.code <= 0x007A){
314
+ return UnicodeChar.LineBreakingClass.alphabetic;
315
+ }
316
+ if (this.code === 0x007B){
317
+ return UnicodeChar.LineBreakingClass.openPunctuation;
318
+ }
319
+ if (this.code === 0x007C){
320
+ return UnicodeChar.LineBreakingClass.breakAfter;
321
+ }
322
+ if (this.code === 0x007D){
323
+ return UnicodeChar.LineBreakingClass.closePunctuation;
324
+ }
325
+ if (this.code === 0x007E){
326
+ return UnicodeChar.LineBreakingClass.alphabetic;
327
+ }
328
+ if (this.code === 0x007F){
329
+ return UnicodeChar.LineBreakingClass.combiningMark;
330
+ }
331
+
332
+ // Next do simple classes with only one or a few characters
333
+ if (this.code === 0x0085){
334
+ return UnicodeChar.LineBreakingClass.nextLine;
335
+ }
336
+ if (this.code === 0x200B){
337
+ return UnicodeChar.LineBreakingClass.zeroWidthSpace;
338
+ }
339
+ if (this.code === 0x200D){
340
+ return UnicodeChar.LineBreakingClass.zeroWidthJoiner;
341
+ }
342
+ if (this.code === 0x2060 || this.code === 0xFEFF){
343
+ return UnicodeChar.LineBreakingClass.wordJoiner;
344
+ }
345
+ if (this.code === 0x2014 || (this.code >= 0x2E3A && this.code <= 0x2E3B)){
346
+ return UnicodeChar.LineBreakingClass.breakOpportunity;
347
+ }
348
+ if (this.code === 0xFFFC){
349
+ return UnicodeChar.LineBreakingClass.contingentBreak;
350
+ }
351
+ if (this.code >= 0x1F3FB && this.code <= 0x1F3FF){
352
+ return UnicodeChar.LineBreakingClass.emojiModifier;
353
+ }
354
+ if (this.code >= 0x2024 && this.code <= 0x2026){
355
+ return UnicodeChar.LineBreakingClass.inseperable;
356
+ }
357
+ if ((this.code === 0x22EF) || (this.code === 0xFE19) || (this.code === 0x10AF6)){
358
+ return UnicodeChar.LineBreakingClass.inseperable;
359
+ }
360
+ if ((this.code === 0x037E) || (this.code === 0x0589) || (this.code === 0x060C) || (this.code === 0x060D)){
361
+ return UnicodeChar.LineBreakingClass.infixNumeric;
362
+ }
363
+ if ((this.code === 0x07F8) || (this.code === 0x2044) || (this.code === 0xFE10) || (this.code === 0xFE13) || (this.code === 0xFE14)){
364
+ return UnicodeChar.LineBreakingClass.infixNumeric;
365
+ }
366
+ if (this.code >= 0x1F1E6 && this.code <= 0x1F1FF){
367
+ return UnicodeChar.LineBreakingClass.regionalIndicator;
368
+ }
369
+ if (this.code >= 0xD800 && this.code <= 0xDFFF){
370
+ // Surrogate, resolve to alphabetic
371
+ // return UnicodeChar.LineBreakingClass.surrogate;
372
+ return UnicodeChar.LineBreakingClass.alphabetic;
373
+ }
374
+ if ((this.code >= 0xE000 && this.code <= 0xF8FF) || (this.code >= 0xF0000 && this.code <= 0xFFFFD) || this.code > 0x100000){
375
+ // Surrogate, resolve to alphabetic
376
+ // return UnicodeChar.LineBreakingClass.unknown;
377
+ return UnicodeChar.LineBreakingClass.alphabetic;
378
+ }
379
+
380
+ // Next, use properties that search larger ranges of characters
381
+ if (this.lineBreakIsNumeric){
382
+ return UnicodeChar.LineBreakingClass.numeric;
383
+ }
384
+ if (this.lineBreakIsInfixNumeric){
385
+ return UnicodeChar.LineBreakingClass.infixNumeric;
386
+ }
387
+ if (this.lineBreakIsQuotation){
388
+ return UnicodeChar.LineBreakingClass.quotation;
389
+ }
390
+ if (UnicodeProperties.isLineBreak(this.code, 'Emoji_Base')){
391
+ return UnicodeChar.LineBreakingClass.emojiBase;
392
+ }
393
+ if (UnicodeProperties.isLineBreak(this.code, 'Exclamation')){
394
+ return UnicodeChar.LineBreakingClass.exclamation;
395
+ }
396
+ if (UnicodeProperties.isLineBreak(this.code, 'Break_Before')){
397
+ return UnicodeChar.LineBreakingClass.breakBefore;
398
+ }
399
+ if (UnicodeProperties.isLineBreak(this.code, 'Break_After')){
400
+ return UnicodeChar.LineBreakingClass.breakAfter;
401
+ }
402
+ if (UnicodeProperties.isLineBreak(this.code, 'Conditional_Japanese')){
403
+ // maps to nonstarters
404
+ // return UnicodeChar.LineBreakingClass.conditionalJapaneseStarter;
405
+ return UnicodeChar.LineBreakingClass.nonstarters;
406
+ }
407
+ if (UnicodeProperties.isLineBreak(this.code, 'Close_Punctuation')){
408
+ return UnicodeChar.LineBreakingClass.closePunctuation;
409
+ }
410
+ if (UnicodeProperties.isLineBreak(this.code, 'Combining_Mark')){
411
+ return UnicodeChar.LineBreakingClass.combiningMark;
412
+ }
413
+ if (UnicodeProperties.isLineBreak(this.code, 'Glue')){
414
+ return UnicodeChar.LineBreakingClass.glue;
415
+ }
416
+ if (UnicodeProperties.isLineBreak(this.code, 'Nonstarters')){
417
+ return UnicodeChar.LineBreakingClass.nonstarters;
418
+ }
419
+ if (UnicodeProperties.isLineBreak(this.code, 'Open_Punctuation')){
420
+ return UnicodeChar.LineBreakingClass.openPunctuation;
421
+ }
422
+ if (UnicodeProperties.isLineBreak(this.code, 'Postfix_Numeric')){
423
+ return UnicodeChar.LineBreakingClass.postfixNumeric;
424
+ }
425
+ if (UnicodeProperties.isLineBreak(this.code, 'Prefix_Numeric')){
426
+ return UnicodeChar.LineBreakingClass.prefixNumeric;
427
+ }
428
+ if (this.lineBreakIsComplexContext){
429
+ // complex content resolves to combiningMark or alphabetic
430
+ // return UnicodeChar.LineBreakingClass.complexContentDependent;
431
+ if (this.generalCategoryIsSpacingMark){ // FIXME: also include non-spacing-marks
432
+ return UnicodeChar.LineBreakingClass.combiningMark;
433
+ }else{
434
+ return UnicodeChar.LineBreakingClass.alphabetic;
435
+ }
436
+ }
437
+ if (this.hangulSyllableTypeIsL){
438
+ return UnicodeChar.LineBreakingClass.hangulLJambo;
439
+ }
440
+ if (this.hangulSyllableTypeIsT){
441
+ return UnicodeChar.LineBreakingClass.hangulTJambo;
442
+ }
443
+ if (this.hangulSyllableTypeIsV){
444
+ return UnicodeChar.LineBreakingClass.hangulVJambo;
445
+ }
446
+ if (this.hangulSyllableTypeIsLV){
447
+ return UnicodeChar.LineBreakingClass.hangulLV;
448
+ }
449
+ if (this.hangulSyllableTypeIsLVT){
450
+ return UnicodeChar.LineBreakingClass.hangulLVT;
451
+ }
452
+ if (this.ideographic){
453
+ return UnicodeChar.LineBreakingClass.ideographic;
454
+ }
455
+ if (this.wordBreakIsHebrewLetter){
456
+ return UnicodeChar.LineBreakingClass.hebrewLetter;
457
+ }
458
+ // Finally, anything else is considered alphabetic
459
+ return UnicodeChar.LineBreakingClass.alphabetic;
460
+ }
461
+ },
462
+
181
463
  lineBreakIsComplexContext: {
182
464
  configurable: true,
183
465
  get: function UnicodeChar_lazy_lineBreakIsComplexContext(){
@@ -786,6 +1068,6 @@ UnicodeChar.prototype = Object.create(Object.prototype, {
786
1068
  Object.defineProperty(this, 'isParagraphBreak', {value: this.code === UnicodeChar.LineBreaks.newLine || this.code === UnicodeChar.LineBreaks.formFeed || this.code === UnicodeChar.LineBreaks.carriageReturn || this.code === UnicodeChar.LineBreaks.nextLine || this.code === UnicodeChar.LineBreaks.paragraphSeparator});
787
1069
  return this.isParagraphBreak;
788
1070
  }
789
- }
1071
+ },
790
1072
 
791
1073
  });
@@ -48,6 +48,18 @@ JSGlobalObject.UnicodeProperties = {
48
48
  Line_Break_Numeric: [[48, 10], [1632, 10], [1643, 2], [1776, 10], [1984, 10], [2406, 10], [2534, 10], [2662, 10], [2790, 10], [2918, 10], [3046, 10], [3174, 10], [3302, 10], [3430, 10], [3558, 10], [3664, 10], [3792, 10], [3872, 10], [4160, 10], [4240, 10], [6112, 10], [6160, 10], [6470, 10], [6608, 10], [6784, 10], [6800, 10], [6992, 10], [7088, 10], [7232, 10], [7248, 10], [42528, 10], [43216, 10], [43264, 10], [43472, 10], [43504, 10], [43600, 10], [44016, 10], [66720, 10], [69734, 10], [69872, 10], [69942, 10], [70096, 10], [70384, 10], [70864, 10], [71248, 10], [71360, 10], [71472, 10], [71904, 10], [92768, 10], [93008, 10], [120782, 50]],
49
49
  Line_Break_Complex_Context: [[3585, 48], [3633, 1], [3634, 2], [3636, 7], [3648, 6], [3654, 1], [3655, 8], [3713, 2], [3716, 1], [3719, 2], [3722, 1], [3725, 1], [3732, 4], [3737, 7], [3745, 3], [3749, 1], [3751, 1], [3754, 2], [3757, 4], [3761, 1], [3762, 2], [3764, 6], [3771, 2], [3773, 1], [3776, 5], [3782, 1], [3784, 6], [3804, 4], [4096, 43], [4139, 2], [4141, 4], [4145, 1], [4146, 6], [4152, 1], [4153, 2], [4155, 2], [4157, 2], [4159, 1], [4176, 6], [4182, 2], [4184, 2], [4186, 4], [4190, 3], [4193, 1], [4194, 3], [4197, 2], [4199, 7], [4206, 3], [4209, 4], [4213, 13], [4226, 1], [4227, 2], [4229, 2], [4231, 6], [4237, 1], [4238, 1], [4239, 1], [4250, 3], [4253, 1], [4254, 2], [6016, 52], [6068, 2], [6070, 1], [6071, 7], [6078, 8], [6086, 1], [6087, 2], [6089, 11], [6103, 1], [6108, 1], [6109, 1], [6480, 30], [6512, 5], [6528, 44], [6576, 26], [6618, 1], [6622, 2], [6688, 53], [6741, 1], [6742, 1], [6743, 1], [6744, 7], [6752, 1], [6753, 1], [6754, 1], [6755, 2], [6757, 8], [6765, 6], [6771, 10], [6816, 7], [6823, 1], [6824, 6], [43488, 5], [43493, 1], [43494, 1], [43495, 9], [43514, 5], [43616, 16], [43632, 1], [43633, 6], [43639, 3], [43642, 1], [43643, 1], [43644, 1], [43645, 1], [43646, 2], [43648, 48], [43696, 1], [43697, 1], [43698, 3], [43701, 2], [43703, 2], [43705, 5], [43710, 2], [43712, 1], [43713, 1], [43714, 1], [43739, 2], [43741, 1], [43742, 2], [71424, 26], [71453, 3], [71456, 2], [71458, 4], [71462, 1], [71463, 5], [71482, 2], [71487, 1]],
50
50
  Line_Break_Quotation: [[34, 1], [39, 1], [171, 1], [187, 1], [8216, 1], [8217, 1], [8219, 2], [8221, 1], [8223, 1], [8249, 1], [8250, 1], [10075, 6], [11776, 2], [11778, 1], [11779, 1], [11780, 1], [11781, 1], [11782, 3], [11785, 1], [11786, 1], [11787, 1], [11788, 1], [11789, 1], [11804, 1], [11805, 1], [11808, 1], [11809, 1], [128630, 3]],
51
+ Line_Break_Emoji_Base: [[9757,1],[9977,1],[9994,4],[127877,1],[127938,3],[127943,1],[127946,3],[128066,2],[128070,11],[128102,19],[128124,1],[128129,3],[128133,3],[128143,1],[128145,1],[128170,1],[128372,2],[128378,1],[128400,1],[128405,2],[128581,3],[128587,5],[128675,1],[128692,3],[128704,1],[128716,1],[129292,1],[129295,1],[129304,8],[129318,1],[129328,10],[129340,3],[129399,1],[129461,2],[129464,2],[129467,1],[129485,3],[129489,13],[129731,3],[129776,7]],
52
+ Line_Break_Exclamation: [[33,1],[63,1],[1478,1],[1563,1],[1565,3],[1748,1],[2041,1],[3853,5],[3860,1],[6146,2],[6152,2],[6468,2],[10082,2],[11513,1],[11518,1],[11822,1],[11859,2],[42510,1],[43126,2],[65045,2],[65110,2],[65281,1],[65311,1],[71108,2],[72817,1]],
53
+ Line_Break_Break_After: [[9, 1], [124, 1], [173, 1], [1418, 1], [1470, 1], [2404, 2], [3674, 2], [3851, 1], [3892, 1], [3967, 1], [3973, 1], [4030, 2], [4050, 1], [4170, 2], [4961, 1], [5120, 1], [5760, 1], [5867, 3], [5941, 2], [6100, 2], [6104, 1], [6106, 1], [6148, 2], [7002, 2], [7005, 4], [7037, 2], [7227, 5], [7294, 2], [8192, 7], [8200, 3], [8208, 1], [8210, 2], [8231, 1], [8278, 1], [8280, 4], [8285, 2], [8287, 1], [11514, 3], [11519, 1], [11632, 1], [11790, 8], [11799, 1], [11801, 1], [11818, 4], [11824, 2], [11827, 2], [11836, 3], [11840, 1], [11841, 1], [11843, 8], [11852, 1], [11854, 2], [11869, 1], [12288, 1], [42238, 2], [42509, 1], [42511, 1], [42739, 5], [43214, 2], [43310, 2], [43463, 3], [43613, 3], [43760, 2], [44011, 1], [65792, 3], [66463, 1], [66512, 1], [67671, 1], [67871, 1], [68176, 8], [68336, 6], [68409, 7], [69293, 1], [69703, 2], [69822, 4], [69952, 4], [70085, 2], [70088, 1], [70109, 3], [70200, 2], [70203, 2], [70313, 1], [70731, 4], [70746, 2], [71106, 2], [71113, 15], [71233, 2], [71484, 3], [72004, 3], [72257, 4], [72346, 3], [72353, 2], [72769, 5], [73727, 1], [74864, 5], [92782, 2], [92917, 1], [92983, 3], [92996, 1], [93847, 2], [113823, 1], [121479, 4]],
54
+ Line_Break_Break_Before: [[180, 1], [712, 1], [716, 1], [735, 1], [3191, 1], [3204, 1], [3841, 3], [3844, 1], [3846, 2], [3849, 2], [4048, 2], [4051, 1], [6150, 1], [8189, 1], [43124, 2], [43260, 1], [70005, 1], [70107, 1], [71105, 1], [71264, 13], [72162, 1], [72255, 1], [72261, 1], [72350, 3], [72816, 1]],
55
+ Line_Break_Conditional_Japanese: [[12353, 1], [12355, 1], [12357, 1], [12359, 1], [12361, 1], [12387, 1], [12419, 1], [12421, 1], [12423, 1], [12430, 1], [12437, 2], [12449, 1], [12451, 1], [12453, 1], [12455, 1], [12457, 1], [12483, 1], [12515, 1], [12517, 1], [12519, 1], [12526, 1], [12533, 2], [12540, 1], [12784, 16], [65383, 9], [65392, 1], [110928, 3], [110948, 4]],
56
+ Line_Break_Close_Punctuation: [[125, 1], [3899, 1], [3901, 1], [5788, 1], [8262, 1], [8318, 1], [8334, 1], [8969, 1], [8971, 1], [9002, 1], [10089, 1], [10091, 1], [10093, 1], [10095, 1], [10097, 1], [10099, 1], [10101, 1], [10182, 1], [10215, 1], [10217, 1], [10219, 1], [10221, 1], [10223, 1], [10628, 1], [10630, 1], [10632, 1], [10634, 1], [10636, 1], [10638, 1], [10640, 1], [10642, 1], [10644, 1], [10646, 1], [10648, 1], [10713, 1], [10715, 1], [10749, 1], [11811, 1], [11813, 1], [11815, 1], [11817, 1], [11862, 1], [11864, 1], [11866, 1], [11868, 1], [12289, 2], [12297, 1], [12299, 1], [12301, 1], [12303, 1], [12305, 1], [12309, 1], [12311, 1], [12313, 1], [12315, 1], [12318, 2], [64830, 1], [65041, 2], [65048, 1], [65078, 1], [65080, 1], [65082, 1], [65084, 1], [65086, 1], [65088, 1], [65090, 1], [65092, 1], [65096, 1], [65104, 1], [65106, 1], [65114, 1], [65116, 1], [65118, 1], [65289, 1], [65292, 1], [65294, 1], [65341, 1], [65373, 1], [65376, 1], [65377, 1], [65379, 1], [65380, 1], [78427, 3], [78466, 1], [78471, 1], [78473, 1], [78714, 2], [78904, 1], [83407, 1]],
57
+ Line_Break_Combining_Mark: [[0, 9], [14, 18], [127, 1], [128, 5], [134, 26], [768, 79], [848, 12], [867, 13], [1155, 5], [1160, 2], [1425, 45], [1471, 1], [1473, 2], [1476, 2], [1479, 1], [1552, 11], [1564, 1], [1611, 21], [1648, 1], [1750, 7], [1759, 6], [1767, 2], [1770, 4], [1809, 1], [1840, 27], [1958, 11], [2027, 9], [2045, 1], [2070, 4], [2075, 9], [2085, 3], [2089, 5], [2137, 3], [2200, 8], [2250, 24], [2275, 29], [2304, 3], [2307, 1], [2362, 1], [2363, 1], [2364, 1], [2366, 3], [2369, 8], [2377, 4], [2381, 1], [2382, 2], [2385, 7], [2402, 2], [2433, 1], [2434, 2], [2492, 1], [2494, 3], [2497, 4], [2503, 2], [2507, 2], [2509, 1], [2519, 1], [2530, 2], [2558, 1], [2561, 2], [2563, 1], [2620, 1], [2622, 3], [2625, 2], [2631, 2], [2635, 3], [2641, 1], [2672, 2], [2677, 1], [2689, 2], [2691, 1], [2748, 1], [2750, 3], [2753, 5], [2759, 2], [2761, 1], [2763, 2], [2765, 1], [2786, 2], [2810, 6], [2817, 1], [2818, 2], [2876, 1], [2878, 1], [2879, 1], [2880, 1], [2881, 4], [2887, 2], [2891, 2], [2893, 1], [2901, 2], [2903, 1], [2914, 2], [2946, 1], [3006, 2], [3008, 1], [3009, 2], [3014, 3], [3018, 3], [3021, 1], [3031, 1], [3072, 1], [3073, 3], [3076, 1], [3132, 1], [3134, 3], [3137, 4], [3142, 3], [3146, 4], [3157, 2], [3170, 2], [3201, 1], [3202, 2], [3260, 1], [3262, 1], [3263, 1], [3264, 5], [3270, 1], [3271, 2], [3274, 2], [3276, 2], [3285, 2], [3298, 2], [3328, 2], [3330, 2], [3387, 2], [3390, 3], [3393, 4], [3398, 3], [3402, 3], [3405, 1], [3415, 1], [3426, 2], [3457, 1], [3458, 2], [3530, 1], [3535, 3], [3538, 3], [3542, 1], [3544, 8], [3570, 2], [3864, 2], [3893, 1], [3895, 1], [3897, 1], [3902, 2], [3953, 14], [3968, 5], [3974, 2], [3981, 11], [3993, 36], [4038, 1], [4957, 3], [5906, 3], [5909, 1], [5938, 2], [5940, 1], [5970, 2], [6002, 2], [6155, 3], [6159, 1], [6277, 2], [6313, 1], [6432, 3], [6435, 4], [6439, 2], [6441, 3], [6448, 2], [6450, 1], [6451, 6], [6457, 3], [6679, 2], [6681, 2], [6683, 1], [6783, 1], [6832, 14], [6846, 1], [6847, 16], [6912, 4], [6916, 1], [6964, 1], [6965, 1], [6966, 5], [6971, 1], [6972, 1], [6973, 5], [6978, 1], [6979, 2], [7019, 9], [7040, 2], [7042, 1], [7073, 1], [7074, 4], [7078, 2], [7080, 2], [7082, 1], [7083, 3], [7142, 1], [7143, 1], [7144, 2], [7146, 3], [7149, 1], [7150, 1], [7151, 3], [7154, 2], [7204, 8], [7212, 8], [7220, 2], [7222, 2], [7376, 3], [7380, 13], [7393, 1], [7394, 7], [7405, 1], [7412, 1], [7415, 1], [7416, 2], [7616, 64], [8204, 1], [8206, 2], [8234, 5], [8294, 10], [8400, 13], [8413, 4], [8417, 1], [8418, 3], [8421, 12], [11503, 3], [11647, 1], [11744, 32], [12330, 4], [12334, 2], [12341, 1], [12441, 2], [42607, 1], [42608, 3], [42612, 10], [42654, 2], [42736, 2], [43010, 1], [43014, 1], [43019, 1], [43043, 2], [43045, 2], [43047, 1], [43052, 1], [43136, 2], [43188, 16], [43204, 2], [43232, 18], [43263, 1], [43302, 8], [43335, 11], [43346, 2], [43392, 3], [43395, 1], [43443, 1], [43444, 2], [43446, 4], [43450, 2], [43452, 2], [43454, 3], [43561, 6], [43567, 2], [43569, 2], [43571, 2], [43573, 2], [43587, 1], [43596, 1], [43597, 1], [43755, 1], [43756, 2], [43758, 2], [43765, 1], [43766, 1], [44003, 2], [44005, 1], [44006, 2], [44008, 1], [44009, 2], [44012, 1], [44013, 1], [64286, 1], [65024, 16], [65056, 16], [65529, 3], [66045, 1], [66272, 1], [66422, 5], [68097, 3], [68101, 2], [68108, 4], [68152, 3], [68159, 1], [68325, 2], [68900, 4], [69291, 2], [69446, 11], [69506, 4], [69632, 1], [69633, 1], [69634, 1], [69688, 15], [69744, 1], [69747, 2], [69759, 1], [69760, 2], [69762, 1], [69808, 3], [69811, 4], [69815, 2], [69817, 2], [69826, 1], [69888, 3], [69927, 5], [69932, 1], [69933, 8], [69957, 2], [70003, 1], [70016, 2], [70018, 1], [70067, 3], [70070, 9], [70079, 2], [70089, 4], [70094, 1], [70095, 1], [70188, 3], [70191, 3], [70194, 2], [70196, 1], [70197, 1], [70198, 2], [70206, 1], [70367, 1], [70368, 3], [70371, 8], [70400, 2], [70402, 2], [70459, 2], [70462, 2], [70464, 1], [70465, 4], [70471, 2], [70475, 3], [70487, 1], [70498, 2], [70502, 7], [70512, 5], [70709, 3], [70712, 8], [70720, 2], [70722, 3], [70725, 1], [70726, 1], [70750, 1], [70832, 3], [70835, 6], [70841, 1], [70842, 1], [70843, 4], [70847, 2], [70849, 1], [70850, 2], [71087, 3], [71090, 4], [71096, 4], [71100, 2], [71102, 1], [71103, 2], [71132, 2], [71216, 3], [71219, 8], [71227, 2], [71229, 1], [71230, 1], [71231, 2], [71339, 1], [71340, 1], [71341, 1], [71342, 2], [71344, 6], [71350, 1], [71351, 1], [71724, 3], [71727, 9], [71736, 1], [71737, 2], [71984, 6], [71991, 2], [71995, 2], [71997, 1], [71998, 1], [72000, 1], [72002, 1], [72003, 1], [72145, 3], [72148, 4], [72154, 2], [72156, 4], [72160, 1], [72164, 1], [72193, 10], [72243, 6], [72249, 1], [72251, 4], [72263, 1], [72273, 6], [72279, 2], [72281, 3], [72330, 13], [72343, 1], [72344, 2], [72751, 1], [72752, 7], [72760, 6], [72766, 1], [72767, 1], [72850, 22], [72873, 1], [72874, 7], [72881, 1], [72882, 2], [72884, 1], [72885, 2], [73009, 6], [73018, 1], [73020, 2], [73023, 7], [73031, 1], [73098, 5], [73104, 2], [73107, 2], [73109, 1], [73110, 1], [73111, 1], [73459, 2], [73461, 2], [92912, 5], [92976, 7], [94031, 1], [94033, 55], [94095, 4], [94192, 2], [113821, 2], [113824, 4], [118528, 46], [118576, 23], [119141, 2], [119143, 3], [119149, 6], [119155, 8], [119163, 8], [119173, 7], [119210, 4], [119362, 3], [121344, 55], [121403, 50], [121461, 1], [121476, 1], [121499, 5], [121505, 15], [122880, 7], [122888, 17], [122907, 7], [122915, 2], [122918, 5], [123184, 7], [123566, 1], [123628, 4], [125136, 7], [125252, 7], [917505, 1], [917536, 96], [917760, 240]],
58
+ Line_Break_Glue: [[160, 1], [847, 1], [860, 7], [3848, 1], [3852, 1], [3858, 1], [4057, 2], [6158, 1], [8199, 1], [8209, 1], [8239, 1], [78896, 7], [94180, 1]],
59
+ Line_Break_Nonstarters: [[6102, 1], [8252, 2], [8263, 3], [12293, 1], [12316, 1], [12347, 1], [12348, 1], [12443, 2], [12445, 2], [12448, 1], [12539, 1], [12541, 2], [40981, 1], [65108, 2], [65306, 2], [65381, 1], [65438, 2], [94176, 2], [94178, 1], [94179, 1], [128633, 3]],
60
+ Line_Break_Open_Punctuation: [[40, 1], [91, 1], [123, 1], [161, 1], [191, 1], [3898, 1], [3900, 1], [5787, 1], [8218, 1], [8222, 1], [8261, 1], [8317, 1], [8333, 1], [8968, 1], [8970, 1], [9001, 1], [10088, 1], [10090, 1], [10092, 1], [10094, 1], [10096, 1], [10098, 1], [10100, 1], [10181, 1], [10214, 1], [10216, 1], [10218, 1], [10220, 1], [10222, 1], [10627, 1], [10629, 1], [10631, 1], [10633, 1], [10635, 1], [10637, 1], [10639, 1], [10641, 1], [10643, 1], [10645, 1], [10647, 1], [10712, 1], [10714, 1], [10748, 1], [11800, 1], [11810, 1], [11812, 1], [11814, 1], [11816, 1], [11842, 1], [11861, 1], [11863, 1], [11865, 1], [11867, 1], [12296, 1], [12298, 1], [12300, 1], [12302, 1], [12304, 1], [12308, 1], [12310, 1], [12312, 1], [12314, 1], [12317, 1], [64831, 1], [65047, 1], [65077, 1], [65079, 1], [65081, 1], [65083, 1], [65085, 1], [65087, 1], [65089, 1], [65091, 1], [65095, 1], [65113, 1], [65115, 1], [65117, 1], [65288, 1], [65339, 1], [65371, 1], [65375, 1], [65378, 1], [78424, 3], [78470, 1], [78472, 1], [78713, 1], [78903, 1], [83406, 1], [125278, 2]],
61
+ Line_Break_Postfix_Numeric: [[37, 1], [162, 1], [176, 1], [1545, 2], [1547, 1], [1642, 1], [2546, 2], [2553, 1], [3449, 1], [8240, 8], [8359, 1], [8374, 1], [8379, 1], [8382, 1], [8384, 1], [8451, 1], [8457, 1], [43064, 1], [65020, 1], [65130, 1], [65285, 1], [65504, 1], [73693, 4], [126124, 1], [126128, 1]],
62
+ Line_Break_Prefix_Numeric: [[36, 1], [43, 1], [92, 1], [163, 3], [177, 1], [1423, 1], [2046, 2], [2555, 1], [2801, 1], [3065, 1], [3647, 1], [6107, 1], [8352, 7], [8360, 14], [8375, 4], [8380, 2], [8383, 1], [8385, 15], [8470, 1], [8722, 2], [65129, 1], [65284, 1], [65505, 1], [65509, 2], [123647, 1]],
51
63
 
52
64
  Default_Ignorable_Code_Point: [[173, 1], [847, 1], [1564, 1], [4447, 2], [6068, 2], [6155, 3], [6158, 1], [8203, 5], [8234, 5], [8288, 5], [8293, 1], [8294, 10], [12644, 1], [65024, 16], [65279, 1], [65440, 1], [65520, 9], [113824, 4], [119155, 8], [917504, 1], [917505, 1], [917506, 30], [917536, 96], [917632, 128], [917760, 240], [918000, 3600]],
53
65
 
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.ImageKit
3
- JSBundleVersion: 2022.26.1
3
+ JSBundleVersion: 2022.32.0
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2020 Breakside Inc.
6
6
  JSBundleEnvironments:
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.MediaKit
3
- JSBundleVersion: 2022.26.1
3
+ JSBundleVersion: 2022.32.0
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2020 Breakside Inc.
6
6
  JSBundleEnvironments:
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.MediaKitUI
3
- JSBundleVersion: 2022.26.1
3
+ JSBundleVersion: 2022.32.0
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2020 Breakside Inc.
6
6
  JSBundleEnvironments:
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.NotificationKit
3
- JSBundleVersion: 2022.26.1
3
+ JSBundleVersion: 2022.32.0
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2021 Breakside Inc.
6
6
  JSBundleEnvironments:
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.PDFKit
3
- JSBundleVersion: 2022.26.1
3
+ JSBundleVersion: 2022.32.0
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2020 Breakside Inc.
6
6
  JSLicenseNotice: |
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.QRKit
3
- JSBundleVersion: 2022.26.1
3
+ JSBundleVersion: 2022.32.0
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2020 Breakside Inc.
6
6
  JSLicenseNotice: |
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.SearchKit
3
- JSBundleVersion: 2022.26.1
3
+ JSBundleVersion: 2022.32.0
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2020 Breakside Inc.
6
6
  JSLicenseNotice: |
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.SecurityKit
3
- JSBundleVersion: 2022.26.1
3
+ JSBundleVersion: 2022.32.0
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2020 Breakside Inc.
6
6
  JSBundleEnvironments:
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.ServerKit
3
- JSBundleVersion: 2022.26.1
3
+ JSBundleVersion: 2022.32.0
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2020 Breakside Inc.
6
6
  JSBundleEnvironments:
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.ServerKitTesting
3
- JSBundleVersion: 2022.26.1
3
+ JSBundleVersion: 2022.32.0
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2020 Breakside Inc.
6
6
  JSLicenseNotice: |
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.TestKit
3
- JSBundleVersion: 2022.26.1
3
+ JSBundleVersion: 2022.32.0
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2020 Breakside Inc.
6
6
  JSLicenseNotice: |
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.UIKit
3
- JSBundleVersion: 2022.26.1
3
+ JSBundleVersion: 2022.32.0
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2020 Breakside Inc.
6
6
  JSBundleEnvironments:
@@ -400,31 +400,49 @@ JSClass('UIApplication', UIResponder, {
400
400
 
401
401
  // MARK: - Touch Event Conversion
402
402
 
403
+ convertsTouchesToMouseEvents: false,
404
+
403
405
  touchesBegan: function(touches, event){
404
- // The application should be the final responder, so if a touch gets
405
- // all the way here, it means nothing handled it, and we should try
406
- // to re-send it as a mouse event to see if something handles that
407
- var touch = touches[0];
408
- var location = touch.window.convertPointToScreen(touch.locationInWindow);
409
- this.windowServer.createMouseEvent(UIEvent.Type.leftMouseDown, event.timestamp, location);
406
+ if (this.convertsTouchesToMouseEvents){
407
+ // The application should be the final responder, so if a touch gets
408
+ // all the way here, it means nothing handled it, and we should try
409
+ // to re-send it as a mouse event to see if something handles that
410
+ var touch = touches[0];
411
+ var location = touch.window.convertPointToScreen(touch.locationInWindow);
412
+ this.windowServer.createMouseEvent(UIEvent.Type.leftMouseDown, event.timestamp, location);
413
+ }else{
414
+ UIApplication.$super.touchesBegan.call(this, touches, event);
415
+ }
410
416
  },
411
417
 
412
418
  touchesMoved: function(touches, event){
413
- var touch = touches[0];
414
- var location = touch.window.convertPointToScreen(touch.locationInWindow);
415
- this.windowServer.createMouseEvent(UIEvent.Type.leftMouseDragged, event.timestamp, location);
419
+ if (this.convertsTouchesToMouseEvents){
420
+ var touch = touches[0];
421
+ var location = touch.window.convertPointToScreen(touch.locationInWindow);
422
+ this.windowServer.createMouseEvent(UIEvent.Type.leftMouseDragged, event.timestamp, location);
423
+ }else{
424
+ UIApplication.$super.touchesMoved.call(this, touches, event);
425
+ }
416
426
  },
417
427
 
418
428
  touchesEnded: function(touches, event){
419
- var touch = touches[0];
420
- var location = touch.window.convertPointToScreen(touch.locationInWindow);
421
- this.windowServer.createMouseEvent(UIEvent.Type.leftMouseUp, event.timestamp, location);
429
+ if (this.convertsTouchesToMouseEvents){
430
+ var touch = touches[0];
431
+ var location = touch.window.convertPointToScreen(touch.locationInWindow);
432
+ this.windowServer.createMouseEvent(UIEvent.Type.leftMouseUp, event.timestamp, location);
433
+ }else{
434
+ UIApplication.$super.touchesEnded.call(this, touches, event);
435
+ }
422
436
  },
423
437
 
424
438
  touchesCanceled: function(touches, event){
425
- var touch = touches[0];
426
- var location = touch.window.convertPointToScreen(touch.locationInWindow);
427
- this.windowServer.createMouseEvent(UIEvent.Type.leftMouseUp, event.timestamp, location);
439
+ if (this.convertsTouchesToMouseEvents){
440
+ var touch = touches[0];
441
+ var location = touch.window.convertPointToScreen(touch.locationInWindow);
442
+ this.windowServer.createMouseEvent(UIEvent.Type.leftMouseUp, event.timestamp, location);
443
+ }else{
444
+ UIApplication.$super.touchesCanceled.call(this, touches, event);
445
+ }
428
446
  },
429
447
 
430
448
  // MARK: - Fonts
@@ -323,17 +323,24 @@ JSClass("UICheckboxDefaultStyler", UICheckboxStyler, {
323
323
 
324
324
  sizeControlToFitSize: function(checkbox, maxSize){
325
325
  var height = checkbox._titleLabel.font.displayLineHeight;
326
- var maxTitleSize = JSSize(maxSize);
327
- var boxWidth = height + this.titleSpacing;
328
- maxTitleSize.width -= boxWidth;
329
- checkbox._titleLabel.sizeToFitSize(maxTitleSize);
330
- checkbox.bounds = JSRect(0, 0, boxWidth + checkbox._titleLabel.frame.size.width, height);
326
+ if (checkbox._titleLabel.text !== ""){
327
+ var maxTitleSize = JSSize(maxSize);
328
+ var boxWidth = height + this.titleSpacing;
329
+ maxTitleSize.width -= boxWidth;
330
+ checkbox._titleLabel.sizeToFitSize(maxTitleSize);
331
+ checkbox.bounds = JSRect(0, 0, boxWidth + checkbox._titleLabel.frame.size.width, height);
332
+ }
333
+ checkbox.bounds = JSRect(0, 0, height, height);
331
334
  },
332
335
 
333
336
  intrinsicSizeOfControl: function(checkbox){
334
- var size = JSSize(checkbox._titleLabel.intrinsicSize);
335
- size.width += size.height + this.titleSpacing;
336
- return size;
337
+ if (checkbox._titleLabel.text !== ""){
338
+ var size = JSSize(checkbox._titleLabel.intrinsicSize);
339
+ size.width += size.height + this.titleSpacing;
340
+ return size;
341
+ }
342
+ var height = checkbox._titleLabel.font.displayLineHeight;
343
+ return JSSize(height, height);
337
344
  },
338
345
 
339
346
  focusRingPathForControl: function(checkbox){
@@ -1009,7 +1009,7 @@ JSClass("UICollectionView", UIScrollView, {
1009
1009
  return;
1010
1010
  }
1011
1011
  this._touch = {
1012
- location0: touches[0].locationInView(this),
1012
+ location0: touches[0].locationInWindow,
1013
1013
  cell: null,
1014
1014
  timer: JSTimer.scheduledTimerWithInterval(0.05, function(){
1015
1015
  this._touch.timer = null;
@@ -1021,7 +1021,7 @@ JSClass("UICollectionView", UIScrollView, {
1021
1021
  touchesMoved: function(touches, event){
1022
1022
  UICollectionView.$super.touchesMoved.call(this, touches, event);
1023
1023
  if (this._touch !== null){
1024
- var location = touches[0].locationInView(this);
1024
+ var location = touches[0].locationInWindow;
1025
1025
  var diff = location.subtracting(this._touch.location0);
1026
1026
  if ((diff.x * diff.x + diff.y * diff.y) > 2){
1027
1027
  this._cancelTouchSelection();