@breakside/jskit 2022.29.0 → 2022.45.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 (57) 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/JSAttributedString.js +1 -1
  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/String+JS.js +367 -0
  10. package/Frameworks/Foundation.jsframework/JS/UnicodeChar.js +283 -1
  11. package/Frameworks/Foundation.jsframework/JS/UnicodeProperties.js +12 -0
  12. package/Frameworks/Foundation.jsframework/io.breakside.JSKit.Foundation-bundle.js +2 -2
  13. package/Frameworks/SecurityKit.jsframework/Info.json +2 -2
  14. package/Frameworks/SecurityKit.jsframework/io.breakside.JSKit.SecurityKit-bundle.js +2 -2
  15. package/Info.json +2 -2
  16. package/Node/HTMLBuilder.js +1 -1
  17. package/Node/io.breakside.jskit-bundle.js +2 -2
  18. package/Root/Frameworks/APIKit/Info.yaml +1 -1
  19. package/Root/Frameworks/APIKitTesting/Info.yaml +1 -1
  20. package/Root/Frameworks/AuthKit/Info.yaml +1 -1
  21. package/Root/Frameworks/CSSOM/Info.yaml +1 -1
  22. package/Root/Frameworks/ChartKit/Info.yaml +1 -1
  23. package/Root/Frameworks/ConferenceKit/Info.yaml +1 -1
  24. package/Root/Frameworks/DBKit/Info.yaml +1 -1
  25. package/Root/Frameworks/DOM/Info.yaml +1 -1
  26. package/Root/Frameworks/Dispatch/Info.yaml +1 -1
  27. package/Root/Frameworks/FontKit/Info.yaml +1 -1
  28. package/Root/Frameworks/Foundation/Info.yaml +1 -1
  29. package/Root/Frameworks/Foundation/JSAttributedString.js +1 -1
  30. package/Root/Frameworks/Foundation/JSTextTypesetter.js +2 -3
  31. package/Root/Frameworks/Foundation/JSTimeZone.js +11 -4
  32. package/Root/Frameworks/Foundation/String+JS.js +367 -0
  33. package/Root/Frameworks/Foundation/UnicodeChar.js +283 -1
  34. package/Root/Frameworks/Foundation/UnicodeProperties.js +12 -0
  35. package/Root/Frameworks/ImageKit/Info.yaml +1 -1
  36. package/Root/Frameworks/MediaKit/Info.yaml +1 -1
  37. package/Root/Frameworks/MediaKitUI/Info.yaml +1 -1
  38. package/Root/Frameworks/NotificationKit/Info.yaml +1 -1
  39. package/Root/Frameworks/PDFKit/Info.yaml +1 -1
  40. package/Root/Frameworks/QRKit/Info.yaml +1 -1
  41. package/Root/Frameworks/SearchKit/Info.yaml +1 -1
  42. package/Root/Frameworks/SecurityKit/Info.yaml +1 -1
  43. package/Root/Frameworks/ServerKit/Info.yaml +1 -1
  44. package/Root/Frameworks/ServerKitTesting/Info.yaml +1 -1
  45. package/Root/Frameworks/TestKit/Info.yaml +1 -1
  46. package/Root/Frameworks/TestKit/TKTestRun.js +1 -1
  47. package/Root/Frameworks/UIKit/Info.yaml +1 -1
  48. package/Root/Frameworks/UIKit/UIAnimationTransaction.js +6 -0
  49. package/Root/Frameworks/UIKit/UIHTMLTextTypesetter.js +2 -2
  50. package/Root/Frameworks/UIKit/UILayer.js +10 -3
  51. package/Root/Frameworks/UIKit/UIListView.js +79 -61
  52. package/Root/Frameworks/UIKit/UIPopupWindow.js +3 -1
  53. package/Root/Frameworks/UIKit/UISlider.js +1 -1
  54. package/Root/Frameworks/UIKit/UIView.js +7 -0
  55. package/Root/Frameworks/UIKit/UIViewPropertyAnimator.js +1 -0
  56. package/Root/Frameworks/UIKitTesting/Info.yaml +1 -1
  57. package/package.json +1 -1
@@ -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.29.0
3
+ JSBundleVersion: 2022.45.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.29.0
3
+ JSBundleVersion: 2022.45.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.29.0
3
+ JSBundleVersion: 2022.45.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.29.0
3
+ JSBundleVersion: 2022.45.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.29.0
3
+ JSBundleVersion: 2022.45.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.29.0
3
+ JSBundleVersion: 2022.45.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.29.0
3
+ JSBundleVersion: 2022.45.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.29.0
3
+ JSBundleVersion: 2022.45.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.29.0
3
+ JSBundleVersion: 2022.45.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.29.0
3
+ JSBundleVersion: 2022.45.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.29.0
3
+ JSBundleVersion: 2022.45.0
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2020 Breakside Inc.
6
6
  JSLicenseNotice: |
@@ -151,7 +151,7 @@ JSClass('TKTestRun', JSObject, {
151
151
  args = [];
152
152
  }else{
153
153
  fn = suiteInstance[parts[0]].test;
154
- args = suiteInstance[parts[0]].inputs[parts[1]];
154
+ args = suiteInstance[parts[0]].inputs[parts.slice(1).join(".")];
155
155
  }
156
156
  var promise = fn.apply(suiteInstance, args);
157
157
  if (promise){
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.UIKit
3
- JSBundleVersion: 2022.29.0
3
+ JSBundleVersion: 2022.45.0
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2020 Breakside Inc.
6
6
  JSBundleEnvironments:
@@ -92,6 +92,12 @@ JSClass('UIAnimationTransaction', JSObject, {
92
92
  },
93
93
 
94
94
  _flush: function(){
95
+ if (this.animations.length === 0){
96
+ if (this.completionFunction){
97
+ this.completionFunction();
98
+ }
99
+ return;
100
+ }
95
101
  var animation;
96
102
  for (var i = 0, l = this.animations.length; i < l; ++i){
97
103
  animation = this.animations[i];
@@ -304,8 +304,8 @@ JSClass("UIHTMLTextTypesetter", JSTextTypesetter, {
304
304
  // word wrapping
305
305
  iterator.decrement();
306
306
  var characterBreakLocation = iterator.range.location;
307
- // back up to a word boundary
308
- while (iterator.index > range.location && !iterator.isWordBoundary){
307
+ // back up to a line break opportunity
308
+ while (iterator.index > range.location && !iterator.isLineBreakOpportunity){
309
309
  iterator.decrement();
310
310
  }
311
311
  if (iterator.range.location <= range.location){
@@ -188,6 +188,10 @@ JSClass("UILayer", JSObject, {
188
188
  this.model.bounds = JSRect(bounds);
189
189
  }
190
190
  this.didChangeProperty('bounds.origin');
191
+ this.didChangeOrigin();
192
+ }
193
+ if (this.needsDisplayOnBoundsChange){
194
+ this.setNeedsDisplay();
191
195
  }
192
196
  },
193
197
 
@@ -240,14 +244,17 @@ JSClass("UILayer", JSObject, {
240
244
  },
241
245
 
242
246
  didChangeSize: function(){
243
- if (this.needsDisplayOnBoundsChange){
244
- this.setNeedsDisplay();
245
- }
246
247
  if (this.delegate && this.delegate.layerDidChangeSize){
247
248
  this.delegate.layerDidChangeSize(this);
248
249
  }
249
250
  },
250
251
 
252
+ didChangeOrigin: function(){
253
+ if (this.delegate && this.delegate.layerDidChangeOrigin){
254
+ this.delegate.layerDidChangeOrigin(this);
255
+ }
256
+ },
257
+
251
258
  setHidden: function(hidden){
252
259
  if (hidden === this.model.hidden){
253
260
  return;
@@ -335,6 +335,9 @@ JSClass("UIListView", UIScrollView, {
335
335
  if (this._visibleItems.length === 0){
336
336
  return;
337
337
  }
338
+ if (this._edit !== null){
339
+ return;
340
+ }
338
341
  var firstVisibleItem = this._visibleItems[0];
339
342
  var lastVisibleItem = this._visibleItems[this._visibleItems.length - 1];
340
343
  var searcher = JSBinarySearcher(this._visibleItems, VisibleItem.cellIndexPathCompare);
@@ -603,31 +606,11 @@ JSClass("UIListView", UIScrollView, {
603
606
  animation = UIListView.RowAnimation.left;
604
607
  }
605
608
  this._beginEditIfNeeded(animation);
606
- var items = this._visibleItems;
607
- var itemIndex = 0;
608
- var itemCount = items.length;
609
- indexPaths = JSCopy(indexPaths);
610
- indexPaths.sort(JSIndexPath.compare);
611
609
  var indexPath;
612
- var parent;
613
- var i, l;
614
- var j;
615
- for (i = 0, l = indexPaths.length; i < l; ++i){
610
+ for (var i = 0, l = indexPaths.length; i < l; ++i){
616
611
  indexPath = indexPaths[i];
617
612
  this._edit.deletedIndexPaths.push({indexPath: JSIndexPath(indexPath), animation: animation});
618
613
  this._edit.didDeleteSelectedItem = this._edit.didDeleteSelectedItem || this._selectionContainsIndexPath(indexPath);
619
- parent = indexPath.removingLastIndex();
620
- while (itemIndex < itemCount && VisibleItem.cellIndexPathCompare(indexPath, items[itemIndex]) > 0){
621
- ++itemIndex;
622
- }
623
- if (itemIndex < itemCount && VisibleItem.cellIndexPathCompare(indexPath, items[itemIndex]) === 0){
624
- items[itemIndex].state = VisibleItem.State.deleting;
625
- items[itemIndex].animation = animation;
626
- ++itemIndex;
627
- }
628
- for (j = itemIndex; j < itemCount && items[j].indexPath.length > parent.length && items[j].indexPath.startsWith(parent); ++j){
629
- items[j].indexPath[parent.length] -= 1;
630
- }
631
614
  }
632
615
  },
633
616
 
@@ -643,7 +626,6 @@ JSClass("UIListView", UIScrollView, {
643
626
  for (var i = 0, l = sections.length; i < l; ++i){
644
627
  this._edit.insertedSections.push({section: sections[i], animation: animation});
645
628
  }
646
- this.__numberOfSections += sections.length;
647
629
  },
648
630
 
649
631
  deleteSection: function(section, animation){
@@ -655,30 +637,10 @@ JSClass("UIListView", UIScrollView, {
655
637
  animation = UIListView.RowAnimation.left;
656
638
  }
657
639
  this._beginEditIfNeeded(animation);
658
- sections = JSCopy(sections);
659
- sections.sort();
660
640
  var i, l;
661
- var j;
662
- var section;
663
- var items = this._visibleItems;
664
- var itemIndex;
665
- var itemCount = items.length;
666
641
  for (i = 0, l = sections.length; i < l; ++i){
667
- section = sections[i];
668
- this._edit.deletedSections.push({section: section, animation: animation});
669
- while (itemIndex < itemCount && VisibleItem.sectionCompare(section, items[itemIndex]) > 0){
670
- ++itemIndex;
671
- }
672
- while (itemIndex < itemCount && VisibleItem.sectionCompare(section, items[itemIndex]) === 0){
673
- items[itemIndex].state = VisibleItem.State.deleting;
674
- items[itemIndex].animation = animation;
675
- ++itemIndex;
676
- }
677
- for (j = itemIndex; j < itemIndex && items[j].indexPath.section > section; ++j){
678
- items[j].indexPath.section -= 1;
679
- }
642
+ this._edit.deletedSections.push({section: sections[i], animation: animation});
680
643
  }
681
- this.__numberOfSections -= sections.length;
682
644
  },
683
645
 
684
646
  // --------------------------------------------------------------------
@@ -1153,6 +1115,7 @@ JSClass("UIListView", UIScrollView, {
1153
1115
  return a.indexPath.compare(b.indexPath);
1154
1116
  });
1155
1117
 
1118
+ this.__numberOfSections = this.__numberOfSections + edit.insertedSections.length - edit.deletedSections.length;
1156
1119
  this._updateVisibleIndexPathsForEdit(edit);
1157
1120
  this._updateSelectedIndexPathsForEdit(edit);
1158
1121
  if (edit.didDeleteSelectedItem){
@@ -1257,6 +1220,15 @@ JSClass("UIListView", UIScrollView, {
1257
1220
  this._updateVisibleCellStates();
1258
1221
  this._updateRowCount();
1259
1222
 
1223
+ // remove deleted items from this._visibleItems
1224
+ this._visibleItems = JSCopy(items);
1225
+ for (i = this._visibleItems.length - 1; i >= 0; --i){
1226
+ item = this._visibleItems[i];
1227
+ if (item.state === VisibleItem.State.deleted){
1228
+ this._visibleItems.splice(i, 1);
1229
+ }
1230
+ }
1231
+
1260
1232
  // Animate changes
1261
1233
  var listView = this;
1262
1234
  var animations = function(){
@@ -1270,13 +1242,12 @@ JSClass("UIListView", UIScrollView, {
1270
1242
  var completion = function(){
1271
1243
  var i, l;
1272
1244
  var item;
1273
- // enqueue deleted views and remove from visible items list
1245
+ // enqueue deleted views
1274
1246
  for (i = items.length - 1; i >= 0; --i){
1275
1247
  item = items[i];
1276
1248
  if (item.state === VisibleItem.State.deleted){
1277
1249
  item.view.alpha = 1;
1278
1250
  listView._enqueueVisibleItem(item);
1279
- items.splice(i, 1);
1280
1251
  }
1281
1252
  }
1282
1253
 
@@ -1310,36 +1281,83 @@ JSClass("UIListView", UIScrollView, {
1310
1281
  },
1311
1282
 
1312
1283
  _updateVisibleIndexPathsForEdit: function(edit){
1313
- // account for inserted sections
1314
1284
  var items = this._visibleItems;
1315
- var itemIndex = 0;
1316
1285
  var itemCount = items.length;
1286
+ var itemIndex = 0;
1317
1287
  var i, l;
1318
1288
  var j;
1319
- var section;
1289
+ var indexPath;
1290
+ var parent;
1291
+ var info;
1292
+ var item;
1293
+
1294
+ // account for deleted index paths
1295
+ itemIndex = items.length - 1;
1296
+ for (i = edit.deletedIndexPaths.length - 1; i >= 0; --i){
1297
+ info = edit.deletedIndexPaths[i];
1298
+ parent = info.indexPath.removingLastIndex();
1299
+ while (itemIndex >= 0 && (items[itemIndex].kind !== VisibleItem.Kind.cell || (items[itemIndex].indexPath.isGreaterThan(info.indexPath) && !items[itemIndex].indexPath.startsWith(info.indexPath)))){
1300
+ --itemIndex;
1301
+ }
1302
+ while (itemIndex >= 0 && items[itemIndex].indexPath.startsWith(info.indexPath)){
1303
+ items[itemIndex].state = VisibleItem.State.deleting;
1304
+ items[itemIndex].animation = info.animation;
1305
+ items[itemIndex].indexPath = null;
1306
+ --itemIndex;
1307
+ }
1308
+ for (j = itemIndex + 1; j < itemCount && (items[j].indexPath === null || (items[j].indexPath.length > parent.length && items[j].indexPath.startsWith(parent))); ++j){
1309
+ if (items[j].kind === VisibleItem.Kind.cell && items[j].indexPath !== null){
1310
+ items[j].indexPath[parent.length] -= 1;
1311
+ }
1312
+ }
1313
+ }
1314
+
1315
+ // account for deleted sections
1316
+ itemIndex = items.length - 1;
1317
+ for (i = edit.deletedSections.length - 1; i >= 0; --i){
1318
+ info = edit.deletedSections[i];
1319
+ while (itemIndex >= 0 && (items[itemIndex].indexPath === null || items[itemIndex].indexPath.section > info.section)){
1320
+ --itemIndex;
1321
+ }
1322
+ while (itemIndex >= 0 && (items[itemIndex].indexPath === null || items[itemIndex].indexPath.section === info.section)){
1323
+ items[itemIndex].state = VisibleItem.State.deleting;
1324
+ items[itemIndex].animation = info.animation;
1325
+ items[itemIndex].indexPath = null;
1326
+ --itemIndex;
1327
+ }
1328
+ for (j = itemIndex + 1; j < itemCount; ++j){
1329
+ if (items[j].indexPath !== null){
1330
+ items[j].indexPath.section -= 1;
1331
+ }
1332
+ }
1333
+ }
1334
+
1335
+ // account for inserted sections
1336
+ itemIndex = 0;
1320
1337
  for (i = 0, l = edit.insertedSections.length; i < l; ++i){
1321
- section = edit.insertedSections[i];
1322
- while (itemIndex < itemCount && (items[itemIndex].state === VisibleItem.State.deleting || items[itemIndex].indexPath.section <= section)){
1338
+ info = edit.insertedSections[i];
1339
+ while (itemIndex < itemCount && (items[itemIndex].indexPath === null || items[itemIndex].indexPath.section < info.section)){
1323
1340
  ++itemIndex;
1324
1341
  }
1325
1342
  for (j = itemIndex; j < itemCount; ++j){
1326
- items[j].indexPath.section += 1;
1343
+ if (items[j].indexPath !== null){
1344
+ items[j].indexPath.section += 1;
1345
+ }
1327
1346
  }
1328
1347
  }
1329
1348
 
1330
1349
  // account for inserted index paths
1331
1350
  itemIndex = 0;
1332
- var indexPath;
1333
- var parent;
1334
- var info;
1335
1351
  for (i = 0, l = edit.insertedIndexPaths.length; i < l; ++i){
1336
1352
  info = edit.insertedIndexPaths[i];
1337
1353
  parent = info.indexPath.removingLastIndex();
1338
- while (itemIndex < itemCount && (items[itemIndex].state === VisibleItem.State.deleting || items[itemIndex].indexPath.isLessThan(info.indexPath))){
1354
+ while (itemIndex < itemCount && (items[itemIndex].indexPath === null || items[itemIndex].indexPath.isLessThan(info.indexPath))){
1339
1355
  ++itemIndex;
1340
1356
  }
1341
- for (j = itemIndex; j < itemCount && items[j].indexPath.length > parent.length && items[j].indexPath.startsWith(parent); ++j){
1342
- items[j].indexPath[parent.length] += 1;
1357
+ for (j = itemIndex; j < itemCount && (items[j].indexPath === null || (items[j].indexPath.length > parent.length && items[j].indexPath.startsWith(parent))); ++j){
1358
+ if (items[j].kind === VisibleItem.Kind.cell && items[j].indexPath !== null){
1359
+ items[j].indexPath[parent.length] += 1;
1360
+ }
1343
1361
  }
1344
1362
  }
1345
1363
 
@@ -1583,7 +1601,7 @@ JSClass("UIListView", UIScrollView, {
1583
1601
 
1584
1602
  _adoptCell: function(cell, indexPath){
1585
1603
  cell.listView = this;
1586
- cell.indexPath = indexPath;
1604
+ cell.indexPath = JSIndexPath(indexPath);
1587
1605
  cell.accessibilityRowIndex = this._rowForIndexPath(indexPath);
1588
1606
  cell.postAccessibilityElementChangedNotification();
1589
1607
  },
@@ -1755,6 +1773,9 @@ JSClass("UIListView", UIScrollView, {
1755
1773
  _setSelectedIndexPaths: function(selectedIndexPaths, options){
1756
1774
  var indexPaths = JSCopy(selectedIndexPaths);
1757
1775
  indexPaths.sort(JSIndexPath.compare);
1776
+ if (this._edit !== null){
1777
+ this._edit.selectionChanged = true;
1778
+ }
1758
1779
  if (indexPaths.length === this._selectedIndexPaths.length){
1759
1780
  for (var i = 0, l = this._selectedIndexPaths.length; i < l; ++i){
1760
1781
  if (!indexPaths[i].isEqual(this._selectedIndexPaths[i])){
@@ -1769,9 +1790,6 @@ JSClass("UIListView", UIScrollView, {
1769
1790
  return;
1770
1791
  }
1771
1792
  this._selectedIndexPaths = indexPaths;
1772
- if (this._edit !== null){
1773
- this._edit.selectionChanged = true;
1774
- }
1775
1793
  this._updateSelectedIndexPaths(options);
1776
1794
  },
1777
1795
 
@@ -284,7 +284,9 @@ JSClass("UIPopupWindow", UIWindow, {
284
284
 
285
285
  indicateModalStatus: function(){
286
286
  if (this.modalIndicationClosesWindow){
287
- this.close();
287
+ if (this.openAnimator.percentComplete > 0.9){
288
+ this.close();
289
+ }
288
290
  return;
289
291
  }
290
292
  if (this._modalAnimator !== null){
@@ -584,7 +584,7 @@ JSClass("UISliderColorStyler", UISliderLayerBasedStyler, {
584
584
  },
585
585
 
586
586
  initWithSpec: function(spec){
587
- UISliderColorStyler.$super.initWithSpec.call(this);
587
+ UISliderColorStyler.$super.initWithSpec.call(this, spec);
588
588
  this._commonColorStylerInit();
589
589
  if (spec.containsKey("gradient")){
590
590
  this.gradient = spec.valueForKey("gradient", JSGradient);
@@ -550,6 +550,13 @@ JSClass('UIView', UIResponder, {
550
550
  }
551
551
  },
552
552
 
553
+ layerDidChangeOrigin: function(layer){
554
+ if (layer === this.layer){
555
+ this.invalidateFocusRingPath();
556
+ this.updateMouseTrackingAreas();
557
+ }
558
+ },
559
+
553
560
  // -------------------------------------------------------------------------
554
561
  // MARK: - Constraints
555
562
 
@@ -116,6 +116,7 @@ JSClass("UIViewPropertyAnimator", JSObject, {
116
116
  return;
117
117
  }
118
118
  this._transaction.stop();
119
+ this._transaction.completionFunction = null;
119
120
  this._percentComplete = this._transaction.percentComplete;
120
121
  this._transaction = null;
121
122
  },
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.UIKitTesting
3
- JSBundleVersion: 2022.29.0
3
+ JSBundleVersion: 2022.45.0
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2020 Breakside Inc.
6
6
  JSLicenseNotice: |
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "node": ">=10.10.0"
10
10
  },
11
11
  "name": "@breakside/jskit",
12
- "version": "2022.29.0",
12
+ "version": "2022.45.0",
13
13
  "license": "SEE LICENSE IN LICENSE.txt",
14
14
  "files": [
15
15
  "*"