@breakside/jskit 2026.2.0 → 2026.2.2

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 (45) 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/JSFile.js +1 -1
  7. package/Frameworks/Foundation.jsframework/io.breakside.JSKit.Foundation-bundle.js +2 -2
  8. package/Frameworks/SecurityKit.jsframework/Info.json +2 -2
  9. package/Frameworks/SecurityKit.jsframework/io.breakside.JSKit.SecurityKit-bundle.js +2 -2
  10. package/Info.json +2 -2
  11. package/Node/io.breakside.jskit-bundle.js +2 -2
  12. package/Root/Frameworks/APIKit/Info.yaml +1 -1
  13. package/Root/Frameworks/APIKitTesting/Info.yaml +1 -1
  14. package/Root/Frameworks/AuthKit/Info.yaml +1 -1
  15. package/Root/Frameworks/CSSOM/Info.yaml +1 -1
  16. package/Root/Frameworks/ChartKit/Info.yaml +1 -1
  17. package/Root/Frameworks/ConferenceKit/Info.yaml +1 -1
  18. package/Root/Frameworks/DBKit/Info.yaml +1 -1
  19. package/Root/Frameworks/DOM/Info.yaml +1 -1
  20. package/Root/Frameworks/Dispatch/Info.yaml +1 -1
  21. package/Root/Frameworks/FontKit/Info.yaml +1 -1
  22. package/Root/Frameworks/Foundation/Info.yaml +1 -1
  23. package/Root/Frameworks/Foundation/JSFile.js +1 -1
  24. package/Root/Frameworks/ImageKit/Info.yaml +1 -1
  25. package/Root/Frameworks/MediaKit/Info.yaml +1 -1
  26. package/Root/Frameworks/MediaKit/MKAsset+HTML.js +5 -0
  27. package/Root/Frameworks/MediaKitUI/Info.yaml +1 -1
  28. package/Root/Frameworks/NotificationKit/Info.yaml +1 -1
  29. package/Root/Frameworks/PDFKit/Info.yaml +1 -1
  30. package/Root/Frameworks/QRKit/Info.yaml +1 -1
  31. package/Root/Frameworks/SearchKit/Info.yaml +1 -1
  32. package/Root/Frameworks/SecurityKit/Info.yaml +1 -1
  33. package/Root/Frameworks/ServerKit/Info.yaml +1 -1
  34. package/Root/Frameworks/ServerKitTesting/Info.yaml +1 -1
  35. package/Root/Frameworks/TestKit/Info.yaml +1 -1
  36. package/Root/Frameworks/UIKit/Info.yaml +1 -1
  37. package/Root/Frameworks/UIKit/UIAnimation.js +1 -1
  38. package/Root/Frameworks/UIKit/UIBasicAnimation.js +22 -1
  39. package/Root/Frameworks/UIKit/UICollectionViewCell.js +10 -1
  40. package/Root/Frameworks/UIKit/UIHTMLApplication.js +8 -1
  41. package/Root/Frameworks/UIKit/UIHTMLDisplayServerCanvasContext.js +1 -1
  42. package/Root/Frameworks/UIKit/UISlider.js +6 -0
  43. package/Root/Frameworks/UIKit/UITextEditor.js +3 -0
  44. package/Root/Frameworks/UIKitTesting/Info.yaml +1 -1
  45. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "JSBundleType": "framework",
3
3
  "JSBundleIdentifier": "io.breakside.JSKit.DOM",
4
- "JSBundleVersion": "2026.2.0",
4
+ "JSBundleVersion": "2026.2.2",
5
5
  "JSDevelopmentLanguage": "en",
6
6
  "JSCopyright": "Copyright © 2020 Breakside Inc.",
7
7
  "JSBundleEnvironments": {
@@ -9,5 +9,5 @@
9
9
  "node": "DOM+Node.js"
10
10
  },
11
11
  "JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
12
- "GitRevision": "a184c26385a142fd1043fae25732bce24d845291"
12
+ "GitRevision": "243c2bc0a9cca7be568b91320f8348fa215ed5b4"
13
13
  }
@@ -3,7 +3,7 @@ JSBundle.bundles['io.breakside.JSKit.DOM'] = {
3
3
  "Info": {
4
4
  "JSBundleType": "framework",
5
5
  "JSBundleIdentifier": "io.breakside.JSKit.DOM",
6
- "JSBundleVersion": "2026.2.0",
6
+ "JSBundleVersion": "2026.2.2",
7
7
  "JSDevelopmentLanguage": "en",
8
8
  "JSCopyright": "Copyright © 2020 Breakside Inc.",
9
9
  "JSBundleEnvironments": {
@@ -11,7 +11,7 @@ JSBundle.bundles['io.breakside.JSKit.DOM'] = {
11
11
  "node": "DOM+Node.js"
12
12
  },
13
13
  "JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
14
- "GitRevision": "a184c26385a142fd1043fae25732bce24d845291"
14
+ "GitRevision": "243c2bc0a9cca7be568b91320f8348fa215ed5b4"
15
15
  },
16
16
  "Resources": [],
17
17
  "ResourceLookup": {
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "JSBundleType": "framework",
3
3
  "JSBundleIdentifier": "io.breakside.JSKit.FontKit",
4
- "JSBundleVersion": "2026.2.0",
4
+ "JSBundleVersion": "2026.2.2",
5
5
  "JSDevelopmentLanguage": "en",
6
6
  "JSCopyright": "Copyright © 2020 Breakside Inc.",
7
7
  "JSBundleEnvironments": {
8
8
  "html": "FontKit+HTML.js"
9
9
  },
10
10
  "JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
11
- "GitRevision": "a184c26385a142fd1043fae25732bce24d845291"
11
+ "GitRevision": "243c2bc0a9cca7be568b91320f8348fa215ed5b4"
12
12
  }
@@ -3,14 +3,14 @@ JSBundle.bundles['io.breakside.JSKit.FontKit'] = {
3
3
  "Info": {
4
4
  "JSBundleType": "framework",
5
5
  "JSBundleIdentifier": "io.breakside.JSKit.FontKit",
6
- "JSBundleVersion": "2026.2.0",
6
+ "JSBundleVersion": "2026.2.2",
7
7
  "JSDevelopmentLanguage": "en",
8
8
  "JSCopyright": "Copyright © 2020 Breakside Inc.",
9
9
  "JSBundleEnvironments": {
10
10
  "html": "FontKit+HTML.js"
11
11
  },
12
12
  "JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
13
- "GitRevision": "a184c26385a142fd1043fae25732bce24d845291"
13
+ "GitRevision": "243c2bc0a9cca7be568b91320f8348fa215ed5b4"
14
14
  },
15
15
  "Resources": [],
16
16
  "ResourceLookup": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "JSBundleType": "framework",
3
3
  "JSBundleIdentifier": "io.breakside.JSKit.Foundation",
4
- "JSBundleVersion": "2026.2.0",
4
+ "JSBundleVersion": "2026.2.2",
5
5
  "JSDevelopmentLanguage": "en",
6
6
  "JSCopyright": "Copyright © 2020 Breakside Inc.",
7
7
  "JSBundleEnvironments": {
@@ -9,5 +9,5 @@
9
9
  "node": "Foundation+Node.js"
10
10
  },
11
11
  "JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
12
- "GitRevision": "a184c26385a142fd1043fae25732bce24d845291"
12
+ "GitRevision": "243c2bc0a9cca7be568b91320f8348fa215ed5b4"
13
13
  }
@@ -73,7 +73,7 @@ JSFile.unregisterContentTypeForFileExtension = function(contentType, fileExtensi
73
73
  };
74
74
 
75
75
  JSFile.contentTypeForFileExtension = function(fileExtension){
76
- return JSFile.contentTypesByFileExtension[fileExtension] || null;
76
+ return JSFile.contentTypesByFileExtension[fileExtension.toLowerCase()] || null;
77
77
  };
78
78
 
79
79
  JSClass("JSDataFile", JSFile, {
@@ -3,7 +3,7 @@ JSBundle.bundles['io.breakside.JSKit.Foundation'] = {
3
3
  "Info": {
4
4
  "JSBundleType": "framework",
5
5
  "JSBundleIdentifier": "io.breakside.JSKit.Foundation",
6
- "JSBundleVersion": "2026.2.0",
6
+ "JSBundleVersion": "2026.2.2",
7
7
  "JSDevelopmentLanguage": "en",
8
8
  "JSCopyright": "Copyright © 2020 Breakside Inc.",
9
9
  "JSBundleEnvironments": {
@@ -11,7 +11,7 @@ JSBundle.bundles['io.breakside.JSKit.Foundation'] = {
11
11
  "node": "Foundation+Node.js"
12
12
  },
13
13
  "JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
14
- "GitRevision": "a184c26385a142fd1043fae25732bce24d845291"
14
+ "GitRevision": "243c2bc0a9cca7be568b91320f8348fa215ed5b4"
15
15
  },
16
16
  "Resources": [
17
17
  {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "JSBundleType": "framework",
3
3
  "JSBundleIdentifier": "io.breakside.JSKit.SecurityKit",
4
- "JSBundleVersion": "2026.2.0",
4
+ "JSBundleVersion": "2026.2.2",
5
5
  "JSDevelopmentLanguage": "en",
6
6
  "JSCopyright": "Copyright © 2020 Breakside Inc.",
7
7
  "JSBundleEnvironments": {
@@ -9,5 +9,5 @@
9
9
  "node": "SecurityKit+Node.js"
10
10
  },
11
11
  "JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
12
- "GitRevision": "a184c26385a142fd1043fae25732bce24d845291"
12
+ "GitRevision": "243c2bc0a9cca7be568b91320f8348fa215ed5b4"
13
13
  }
@@ -3,7 +3,7 @@ JSBundle.bundles['io.breakside.JSKit.SecurityKit'] = {
3
3
  "Info": {
4
4
  "JSBundleType": "framework",
5
5
  "JSBundleIdentifier": "io.breakside.JSKit.SecurityKit",
6
- "JSBundleVersion": "2026.2.0",
6
+ "JSBundleVersion": "2026.2.2",
7
7
  "JSDevelopmentLanguage": "en",
8
8
  "JSCopyright": "Copyright © 2020 Breakside Inc.",
9
9
  "JSBundleEnvironments": {
@@ -11,7 +11,7 @@ JSBundle.bundles['io.breakside.JSKit.SecurityKit'] = {
11
11
  "node": "SecurityKit+Node.js"
12
12
  },
13
13
  "JSLicenseNotice": "Licensed under the Breakside Public License, Version 1.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nIf a copy of the License was not distributed with this file, you may\nobtain a copy at\n\n http://breakside.io/licenses/LICENSE-1.0.txt\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n",
14
- "GitRevision": "a184c26385a142fd1043fae25732bce24d845291"
14
+ "GitRevision": "243c2bc0a9cca7be568b91320f8348fa215ed5b4"
15
15
  },
16
16
  "Resources": [],
17
17
  "ResourceLookup": {
package/Info.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "JSBundleType": "node",
3
3
  "JSBundleIdentifier": "io.breakside.jskit",
4
- "JSBundleVersion": "2026.2.0",
4
+ "JSBundleVersion": "2026.2.2",
5
5
  "JSExecutableName": "jskit",
6
6
  "NPMOrganization": "breakside",
7
7
  "JSResources": [
8
8
  "Tests/HTMLTestRunner.js",
9
9
  "Tests/NodeTestRunner.js"
10
10
  ],
11
- "GitRevision": "a184c26385a142fd1043fae25732bce24d845291"
11
+ "GitRevision": "243c2bc0a9cca7be568b91320f8348fa215ed5b4"
12
12
  }
@@ -3,14 +3,14 @@ JSBundle.bundles['io.breakside.jskit'] = {
3
3
  "Info": {
4
4
  "JSBundleType": "node",
5
5
  "JSBundleIdentifier": "io.breakside.jskit",
6
- "JSBundleVersion": "2026.2.0",
6
+ "JSBundleVersion": "2026.2.2",
7
7
  "JSExecutableName": "jskit",
8
8
  "NPMOrganization": "breakside",
9
9
  "JSResources": [
10
10
  "Tests/HTMLTestRunner.js",
11
11
  "Tests/NodeTestRunner.js"
12
12
  ],
13
- "GitRevision": "a184c26385a142fd1043fae25732bce24d845291"
13
+ "GitRevision": "243c2bc0a9cca7be568b91320f8348fa215ed5b4"
14
14
  },
15
15
  "Resources": [
16
16
  {
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.APIKit
3
- JSBundleVersion: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2020 Breakside Inc.
6
6
  JSIncludeDirectories:
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.APIKitTesting
3
- JSBundleVersion: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
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.AuthKit
3
- JSBundleVersion: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
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.CSSOM
3
- JSBundleVersion: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
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.ChartKit
3
- JSBundleVersion: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
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.ConferenceKit
3
- JSBundleVersion: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
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.DBKit
3
- JSBundleVersion: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
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.DOM
3
- JSBundleVersion: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
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.Dispatch
3
- JSBundleVersion: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
4
4
  JSCopyright: Copyright © 2020 Breakside Inc.
5
5
  JSBundleEnvironments:
6
6
  html: Dispatch+HTML.js
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.FontKit
3
- JSBundleVersion: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
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.Foundation
3
- JSBundleVersion: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2020 Breakside Inc.
6
6
  JSBundleEnvironments:
@@ -73,7 +73,7 @@ JSFile.unregisterContentTypeForFileExtension = function(contentType, fileExtensi
73
73
  };
74
74
 
75
75
  JSFile.contentTypeForFileExtension = function(fileExtension){
76
- return JSFile.contentTypesByFileExtension[fileExtension] || null;
76
+ return JSFile.contentTypesByFileExtension[fileExtension.toLowerCase()] || null;
77
77
  };
78
78
 
79
79
  JSClass("JSDataFile", JSFile, {
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.ImageKit
3
- JSBundleVersion: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
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: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2020 Breakside Inc.
6
6
  JSBundleEnvironments:
@@ -73,6 +73,11 @@ MKAsset.definePropertiesFromExtensions({
73
73
  // logger.debug("drawn");
74
74
  canvas.toBlob(function(blob){
75
75
  // logger.debug("blob");
76
+ if (blob === null){
77
+ logger.error("Unable to get blob from canvas");
78
+ completion.call(target, null);
79
+ return;
80
+ }
76
81
  var reader = new FileReader();
77
82
  reader.addEventListener("loadend", function(){
78
83
  // logger.debug("read");
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.MediaKitUI
3
- JSBundleVersion: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
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: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
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: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
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: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
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: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
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: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
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: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
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: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
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: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
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: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2020 Breakside Inc.
6
6
  JSBundleEnvironments:
@@ -121,7 +121,7 @@ UIAnimation.defaultInterpolationValueToPairWithValue = function(value){
121
121
  return JSRect.Zero;
122
122
  }
123
123
  if (value instanceof JSAffineTransform){
124
- return JSAffineTransform.Zero;
124
+ return JSAffineTransform.Identity;
125
125
  }
126
126
  if (value.isKindOfClass && value.isKindOfClass(JSColor)){
127
127
  return value.colorWithAlpha(0);
@@ -19,6 +19,8 @@
19
19
 
20
20
  (function(){
21
21
 
22
+ var logger = JSLog("uikit", "animation");
23
+
22
24
  JSClass('UIBasicAnimation', UIPropertyAnimation, {
23
25
  timingFunction: null,
24
26
  duration: JSDynamicProperty('_duration', 0.25),
@@ -87,7 +89,26 @@ JSClass('UIBasicAnimation', UIPropertyAnimation, {
87
89
  _updatePresentation: function(){
88
90
  var progress = this.timingFunction(this._state.currentPercentage);
89
91
  this.isComplete = this._state.isComplete();
90
- this._updateContext[this._updateProperty] = this.interpolation(this._fromValue, this._toValue, progress);
92
+ var value = this.interpolation(this._fromValue, this._toValue, progress);
93
+ if (this._updateContext === this._layer.presentation && this._updateProperty === "transform"){
94
+ if (value === undefined || value === null){
95
+ logger.debug("fromValue = %{public}, toValue = %{public}", "" + this._fromValue, "" + this._toValue);
96
+ if (this._layer.delegate instanceof UIView){
97
+ var view = this._layer.delegate;
98
+ logger.debug("view = %{public}, viewController = %{public}", view.$class.className, view.viewController ? view.viewController.$class.className : "null");
99
+ view = view.superview;
100
+ while (view !== null){
101
+ logger.debug("superview = %{public}, viewController = %{public}", view.$class.className, view.viewController ? view.viewController.$class.className : "null");
102
+ view = view.superview;
103
+ }
104
+ }else{
105
+ logger.debug("layer delegate is not a view");
106
+ }
107
+ logger.error("interpolated transform value is null/undefined");
108
+ value = JSAffineTransform.Identity;
109
+ }
110
+ }
111
+ this._updateContext[this._updateProperty] = value;
91
112
  if (this._updateContext === this._layer.presentation && (this._updateProperty === "bounds" || this._updateProperty === "imageFrame")){
92
113
  this._layer.setNeedsDisplay();
93
114
  }
@@ -132,7 +132,16 @@ JSClass("UICollectionViewCell", UICollectionReusableView, {
132
132
  },
133
133
 
134
134
  mouseEntered: function(event){
135
- var shouldSelect = (!this.collectionView || !this.collectionView.delegate || !this.collectionView.delegate.collectionViewShouldSelectCellAtIndexPath || this.collectionView.delegate.collectionViewShouldSelectCellAtIndexPath(this.collectionView, this.collectionView.indexPathOfCell(this)));
135
+ if (!this.collectionView){
136
+ return;
137
+ }
138
+ if (this.collectionView._needsReload){
139
+ return;
140
+ }
141
+ if (this.collectionView._edit !== null){
142
+ return;
143
+ }
144
+ var shouldSelect = (!this.collectionView.delegate || !this.collectionView.delegate.collectionViewShouldSelectCellAtIndexPath || this.collectionView.delegate.collectionViewShouldSelectCellAtIndexPath(this.collectionView, this.collectionView.indexPathOfCell(this)));
136
145
  if (shouldSelect){
137
146
  this.over = true;
138
147
  }
@@ -73,12 +73,19 @@ JSClass("UIHTMLApplication", UIApplication, {
73
73
  if (options === undefined){
74
74
  options = {};
75
75
  }
76
- if (options.replacingApplication || url.scheme === "mailto" || url.scheme === "tel"){
76
+ if (options.replacingApplication){
77
77
  var application = this;
78
78
  var open = function(){
79
+ application.domWindow.addEventListener("visibilitychange", function(e){
80
+ if (application.domWindow.document.visibilityState === "visible"){
81
+ application.domWindow.location.reload();
82
+ }
83
+ });
79
84
  application.domWindow.location.href = url.encodedString;
80
85
  };
81
86
  this.stop(open);
87
+ }else if (url.scheme === "mailto" || url.scheme === "tel"){
88
+ this.domWindow.location.href = url.encodedString;
82
89
  }else{
83
90
  try{
84
91
  var child = this.domWindow.open(url.encodedString);
@@ -283,7 +283,7 @@ JSClass("UIHTMLDisplayServerCanvasContext", UIHTMLDisplayServerContext, {
283
283
  updateHTMLProperty_transform: function(layer){
284
284
  var transform = layer.presentation.transform;
285
285
  var anchorPoint = layer.presentation.anchorPoint;
286
- if (!transform.isIdentity){
286
+ if (!!transform && !transform.isIdentity){
287
287
  var cssTransform = 'matrix(%f, %f, %f, %f, %f, %f)'.sprintf(transform.a, transform.b, transform.c, transform.d, transform.tx, transform.ty);
288
288
  this.style.transform = cssTransform;
289
289
  this.style.transformOrigin = '%f%% %f%% 0'.sprintf(anchorPoint.x * 100, anchorPoint.y * 100);
@@ -185,6 +185,9 @@ JSClass("UISlider", UIControl, {
185
185
  var p0 = this._cachedMinimumPoint;
186
186
  var p1 = this._cachedMaximumPoint;
187
187
  var length = p1.x - p0.x;
188
+ if (length <= 0){
189
+ return this._minimumValue;
190
+ }
188
191
  var dx = location.x - p0.x;
189
192
  return Math.min(this._maximumValue, Math.max(this._minimumValue, this._minimumValue + (this._maximumValue - this._minimumValue) * dx / length));
190
193
  },
@@ -194,6 +197,9 @@ JSClass("UISlider", UIControl, {
194
197
  var p0 = this._cachedMinimumPoint;
195
198
  var p1 = this._cachedMaximumPoint;
196
199
  var length = p1.x - p0.x;
200
+ if (length <= 0){
201
+ return JSPoint(p0);
202
+ }
197
203
  var dx = (value - this._minimumValue) / (this._maximumValue - this._minimumValue) * length;
198
204
  return JSPoint(p0.x + dx, p0.y);
199
205
  },
@@ -21,6 +21,8 @@
21
21
 
22
22
  (function(){
23
23
 
24
+ var logger = JSLog("uikit", "textedit");
25
+
24
26
  JSClass("UITextEditor", JSObject, {
25
27
 
26
28
  layoutLayer: null,
@@ -144,6 +146,7 @@ JSClass("UITextEditor", JSObject, {
144
146
  }
145
147
  }else{
146
148
  this._handledSelectOnMouseDown = true;
149
+ this._draggingSelectionIndex = 0;
147
150
  var range = null;
148
151
  var atomicRange;
149
152
  var affinity = UITextInput.SelectionAffinity.beforeCurrentCharacter;
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.UIKitTesting
3
- JSBundleVersion: 2026.2.0
3
+ JSBundleVersion: 2026.2.2
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2020 Breakside Inc.
6
6
  JSLicenseNotice: |
package/package.json CHANGED
@@ -12,7 +12,7 @@
12
12
  "node": ">=10.10.0"
13
13
  },
14
14
  "name": "@breakside/jskit",
15
- "version": "2026.2.0",
15
+ "version": "2026.2.2",
16
16
  "license": "SEE LICENSE IN LICENSE.txt",
17
17
  "files": [
18
18
  "*"