@breakside/jskit 2022.22.3 → 2022.23.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 (49) hide show
  1. package/Frameworks/DOM.jsframework/Info.json +2 -2
  2. package/Frameworks/DOM.jsframework/JS/XMLSerializer.js +9 -4
  3. package/Frameworks/DOM.jsframework/io.breakside.JSKit.DOM-bundle.js +2 -2
  4. package/Frameworks/FontKit.jsframework/Info.json +2 -2
  5. package/Frameworks/FontKit.jsframework/io.breakside.JSKit.FontKit-bundle.js +2 -2
  6. package/Frameworks/Foundation.jsframework/Info.json +2 -2
  7. package/Frameworks/Foundation.jsframework/JS/JSAttributedString.js +144 -0
  8. package/Frameworks/Foundation.jsframework/JS/JSFont.js +39 -15
  9. package/Frameworks/Foundation.jsframework/JS/JSFontDescriptor+HTML.js +8 -0
  10. package/Frameworks/Foundation.jsframework/JS/JSFontDescriptor.js +105 -27
  11. package/Frameworks/Foundation.jsframework/JS/String+JS.js +34 -0
  12. package/Frameworks/Foundation.jsframework/io.breakside.JSKit.Foundation-bundle.js +2 -2
  13. package/Frameworks/Foundation.jsframework/sources.json +23 -22
  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/io.breakside.jskit-bundle.js +2 -2
  18. package/Node/jskit +7 -7
  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/DOM/XMLSerializer.js +9 -4
  28. package/Root/Frameworks/Dispatch/Info.yaml +1 -1
  29. package/Root/Frameworks/FontKit/Info.yaml +1 -1
  30. package/Root/Frameworks/Foundation/Info.yaml +1 -1
  31. package/Root/Frameworks/Foundation/JSAttributedString.js +144 -0
  32. package/Root/Frameworks/Foundation/JSFont.js +39 -15
  33. package/Root/Frameworks/Foundation/JSFontDescriptor+HTML.js +8 -0
  34. package/Root/Frameworks/Foundation/JSFontDescriptor.js +105 -27
  35. package/Root/Frameworks/Foundation/String+JS.js +34 -0
  36. package/Root/Frameworks/ImageKit/Info.yaml +1 -1
  37. package/Root/Frameworks/MediaKit/Info.yaml +1 -1
  38. package/Root/Frameworks/MediaKitUI/Info.yaml +1 -1
  39. package/Root/Frameworks/NotificationKit/Info.yaml +1 -1
  40. package/Root/Frameworks/PDFKit/Info.yaml +1 -1
  41. package/Root/Frameworks/QRKit/Info.yaml +1 -1
  42. package/Root/Frameworks/SearchKit/Info.yaml +1 -1
  43. package/Root/Frameworks/SecurityKit/Info.yaml +1 -1
  44. package/Root/Frameworks/ServerKit/Info.yaml +1 -1
  45. package/Root/Frameworks/ServerKitTesting/Info.yaml +1 -1
  46. package/Root/Frameworks/TestKit/Info.yaml +1 -1
  47. package/Root/Frameworks/UIKit/Info.yaml +1 -1
  48. package/Root/Frameworks/UIKitTesting/Info.yaml +1 -1
  49. package/package.json +1 -1
@@ -18,6 +18,8 @@
18
18
  // #import "UnicodeChar.js"
19
19
  // #import "Zlib.js"
20
20
  // #import "CoreTypes.js"
21
+ // #import "JSURLSession.js"
22
+ /* global JSFont */
21
23
  'use strict';
22
24
 
23
25
  (function(){
@@ -38,11 +40,11 @@ JSClass("JSFontDescriptor", JSObject, {
38
40
  unitsPerEM: JSReadOnlyProperty('_unitsPerEM', 0),
39
41
 
40
42
  descriptorWithWeight: function(weight){
41
- return this;
43
+ return JSFontDescriptor.descriptorWithFamily(this.family, weight, this.style) || this;
42
44
  },
43
45
 
44
46
  descriptorWithStyle: function(style){
45
- return this;
47
+ return JSFontDescriptor.descriptorWithFamily(this.family, this.weight, style) || this;
46
48
  },
47
49
 
48
50
  glyphForCharacter: function(character){
@@ -89,6 +91,29 @@ JSClass("JSFontDescriptor", JSObject, {
89
91
 
90
92
  });
91
93
 
94
+ JSFontDescriptor.system = null;
95
+
96
+ JSFontDescriptor.descriptorsByFamily = {
97
+ };
98
+
99
+ JSFontDescriptor.registerDescriptor = function(descriptor){
100
+ if (!(descriptor._family in JSFontDescriptor.descriptorsByFamily)){
101
+ JSFontDescriptor.descriptorsByFamily[descriptor._family] = {};
102
+ }
103
+ if (!(descriptor._weight in JSFontDescriptor.descriptorsByFamily[descriptor._family])){
104
+ JSFontDescriptor.descriptorsByFamily[descriptor._family][descriptor._weight] = {};
105
+ }
106
+ if (!(descriptor._style in JSFontDescriptor.descriptorsByFamily[descriptor._family][descriptor._weight])){
107
+ JSFontDescriptor.descriptorsByFamily[descriptor._family][descriptor._weight][descriptor._style] = descriptor;
108
+ }
109
+ };
110
+
111
+ JSFontDescriptor.descriptorWithFamily = function(family, weight, style){
112
+ var weights = JSFontDescriptor.descriptorsByFamily[family] || {};
113
+ var styles = weights[weight] || {};
114
+ return styles[style] || null;
115
+ };
116
+
92
117
  JSClass("JSDataFontDescriptor", JSFontDescriptor, {
93
118
 
94
119
  data: null,
@@ -131,23 +156,6 @@ JSClass("JSResourceFontDescriptor", JSFontDescriptor, {
131
156
  widths: null,
132
157
  };
133
158
  JSResourceFontDescriptor.descriptorsByName[metadata.font.unique_identifier] = this;
134
- if (!(this._family in JSResourceFontDescriptor.descriptorsByFamily)){
135
- JSResourceFontDescriptor.descriptorsByFamily[this._family] = {};
136
- }
137
- if (!(this._weight in JSResourceFontDescriptor.descriptorsByFamily[this._family])){
138
- JSResourceFontDescriptor.descriptorsByFamily[this._family][this._weight] = {};
139
- }
140
- if (!(this._style in JSResourceFontDescriptor.descriptorsByFamily[this._family][this._weight])){
141
- JSResourceFontDescriptor.descriptorsByFamily[this._family][this._weight][this._style] = this;
142
- }
143
- },
144
-
145
- descriptorWithWeight: function(weight){
146
- return JSResourceFontDescriptor.descriptorWithFamily(this.family, weight, this.style) || this;
147
- },
148
-
149
- descriptorWithStyle: function(style){
150
- return JSResourceFontDescriptor.descriptorWithFamily(this.family, this.weight, style) || this;
151
159
  },
152
160
 
153
161
  glyphForCharacter: function(character){
@@ -228,17 +236,87 @@ JSClass("JSResourceFontDescriptor", JSFontDescriptor, {
228
236
 
229
237
  });
230
238
 
231
- JSResourceFontDescriptor.descriptorWithFamily = function(family, weight, style){
232
- var weights = JSResourceFontDescriptor.descriptorsByFamily[family] || {};
233
- var styles = weights[weight] || {};
234
- return styles[style];
239
+ JSResourceFontDescriptor.descriptorsByName = {
235
240
  };
236
241
 
237
- JSResourceFontDescriptor.descriptorsByFamily = {
238
- };
242
+ JSClass("JSURLFontDescriptor", JSFontDescriptor, {
239
243
 
240
- JSResourceFontDescriptor.descriptorsByName = {
241
- };
244
+ url: null,
245
+
246
+ initWithURL: function(url, family, weight, style){
247
+ this.url = url;
248
+ this._family = family;
249
+ this._weight = weight;
250
+ this._style = style;
251
+ this._postScriptName = "%s-%s".sprintf(family.replace(" ", ""), this.face.replce(" ", ""));
252
+ // this._ascender
253
+ // this._descender
254
+ // this._unitsPerEM
255
+ },
256
+
257
+ getData: function(completion, target){
258
+ if (!completion){
259
+ completion = Promise.completion(Promise.rejectNonNullSecondArgument);
260
+ }
261
+ var session = JSURLSession.shared;
262
+ var task = session.dataTaskWithURL(this.url, function(error){
263
+ if (error !== null){
264
+ completion.call(target, null, error);
265
+ return;
266
+ }
267
+ try{
268
+ task.response.assertSuccess();
269
+ }catch (e){
270
+ completion.call(target, null, e);
271
+ return;
272
+ }
273
+ completion.call(target, task.response.data, null);
274
+ });
275
+ task.resume();
276
+ return completion.promise;
277
+ },
278
+
279
+ face: JSLazyInitProperty(function(){
280
+ if (this.weight === JSFont.Weight.regular){
281
+ if (this.style === JSFont.Style.italic){
282
+ return "Italic";
283
+ }
284
+ return "Regular";
285
+ }
286
+ var name = "";
287
+ switch (this.weight){
288
+ case JSFont.Weight.ultraLight:
289
+ name = "UltraLight";
290
+ break;
291
+ case JSFont.Weight.thin:
292
+ name = "Thin";
293
+ break;
294
+ case JSFont.Weight.light:
295
+ name = "Light";
296
+ break;
297
+ case JSFont.Weight.medium:
298
+ name = "Medium";
299
+ break;
300
+ case JSFont.Weight.semibold:
301
+ name = "SemiBold";
302
+ break;
303
+ case JSFont.Weight.bold:
304
+ name = "Bold";
305
+ break;
306
+ case JSFont.Weight.heavy:
307
+ name = "Heavy";
308
+ break;
309
+ case JSFont.Weight.black:
310
+ name = "Black";
311
+ break;
312
+ }
313
+ if (this.style === JSFont.Style.italic){
314
+ name += " Italic";
315
+ }
316
+ return name;
317
+ }),
318
+
319
+ });
242
320
 
243
321
  var CMap = function(format, data){
244
322
  if (this === undefined){
@@ -359,6 +359,34 @@ Object.defineProperties(String.prototype, {
359
359
  }
360
360
  },
361
361
 
362
+ utf16be: {
363
+ configurable: true,
364
+ enumerable: false,
365
+ value: function String_utf16be(){
366
+ var utf16 = JSData.initWithLength(this.length * 2);
367
+ var dataView = utf16.dataView();
368
+ var j = 0;
369
+ for (var i = 0, l = this.length; i < l; ++i, j += 2){
370
+ dataView.setUint16(j, this.charCodeAt(i));
371
+ }
372
+ return utf16;
373
+ }
374
+ },
375
+
376
+ utf16le: {
377
+ configurable: true,
378
+ enumerable: false,
379
+ value: function String_utf16le(){
380
+ var utf16 = JSData.initWithLength(this.length * 2);
381
+ var dataView = utf16.dataView();
382
+ var j = 0;
383
+ for (var i = 0, l = this.length; i < l; ++i, j += 2){
384
+ dataView.setUint16(j, this.charCodeAt(i), true);
385
+ }
386
+ return utf16;
387
+ }
388
+ },
389
+
362
390
  latin1: {
363
391
  enumerable: false,
364
392
  value: function String_latin1(){
@@ -387,6 +415,12 @@ Object.defineProperties(String.prototype, {
387
415
  if (encoding == String.Encoding.latin1){
388
416
  return this.latin1();
389
417
  }
418
+ if (encoding == String.Encoding.utf16be){
419
+ return this.utf16be();
420
+ }
421
+ if (encoding == String.Encoding.utf16le){
422
+ return this.utf16le();
423
+ }
390
424
  return null;
391
425
  }
392
426
  },
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.ImageKit
3
- JSBundleVersion: 2022.22.3
3
+ JSBundleVersion: 2022.23.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.22.3
3
+ JSBundleVersion: 2022.23.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.22.3
3
+ JSBundleVersion: 2022.23.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.22.3
3
+ JSBundleVersion: 2022.23.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.22.3
3
+ JSBundleVersion: 2022.23.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.22.3
3
+ JSBundleVersion: 2022.23.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.22.3
3
+ JSBundleVersion: 2022.23.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.22.3
3
+ JSBundleVersion: 2022.23.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.22.3
3
+ JSBundleVersion: 2022.23.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.22.3
3
+ JSBundleVersion: 2022.23.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.22.3
3
+ JSBundleVersion: 2022.23.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.22.3
3
+ JSBundleVersion: 2022.23.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.UIKitTesting
3
- JSBundleVersion: 2022.22.3
3
+ JSBundleVersion: 2022.23.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.22.3",
12
+ "version": "2022.23.0",
13
13
  "license": "SEE LICENSE IN LICENSE.txt",
14
14
  "files": [
15
15
  "*"