@breakside/jskit 2025.36.0 → 2025.37.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 (43) 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/io.breakside.JSKit.Foundation-bundle.js +2 -2
  7. package/Frameworks/SecurityKit.jsframework/Info.json +2 -2
  8. package/Frameworks/SecurityKit.jsframework/io.breakside.JSKit.SecurityKit-bundle.js +2 -2
  9. package/Info.json +2 -2
  10. package/Node/HTMLProjectServer.js +12 -1
  11. package/Node/Printer.js +11 -0
  12. package/Node/io.breakside.jskit-bundle.js +2 -2
  13. package/Root/Frameworks/APIKit/Info.yaml +1 -1
  14. package/Root/Frameworks/APIKitTesting/Info.yaml +1 -1
  15. package/Root/Frameworks/AuthKit/Info.yaml +1 -1
  16. package/Root/Frameworks/CSSOM/Info.yaml +1 -1
  17. package/Root/Frameworks/ChartKit/Info.yaml +1 -1
  18. package/Root/Frameworks/ConferenceKit/Info.yaml +1 -1
  19. package/Root/Frameworks/DBKit/Info.yaml +1 -1
  20. package/Root/Frameworks/DOM/Info.yaml +1 -1
  21. package/Root/Frameworks/Dispatch/Info.yaml +1 -1
  22. package/Root/Frameworks/FontKit/Info.yaml +1 -1
  23. package/Root/Frameworks/Foundation/Info.yaml +1 -1
  24. package/Root/Frameworks/ImageKit/Info.yaml +1 -1
  25. package/Root/Frameworks/MediaKit/Info.yaml +1 -1
  26. package/Root/Frameworks/MediaKitUI/Info.yaml +1 -1
  27. package/Root/Frameworks/NotificationKit/Info.yaml +1 -1
  28. package/Root/Frameworks/PDFKit/Info.yaml +1 -1
  29. package/Root/Frameworks/QRKit/Info.yaml +1 -1
  30. package/Root/Frameworks/SearchKit/Info.yaml +1 -1
  31. package/Root/Frameworks/SecurityKit/Info.yaml +1 -1
  32. package/Root/Frameworks/ServerKit/Info.yaml +1 -1
  33. package/Root/Frameworks/ServerKitTesting/Info.yaml +1 -1
  34. package/Root/Frameworks/TestKit/Info.yaml +1 -1
  35. package/Root/Frameworks/UIKit/Info.yaml +1 -1
  36. package/Root/Frameworks/UIKit/UIAccessibility.js +1 -0
  37. package/Root/Frameworks/UIKit/UIHTMLDisplayServerCanvasContext.js +5 -2
  38. package/Root/Frameworks/UIKit/UIListView.js +7 -1
  39. package/Root/Frameworks/UIKit/UIPopupButton.js +2 -0
  40. package/Root/Frameworks/UIKit/UIToolbar.js +1 -1
  41. package/Root/Frameworks/UIKit/UIView.js +1 -0
  42. package/Root/Frameworks/UIKitTesting/Info.yaml +1 -1
  43. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "JSBundleType": "framework",
3
3
  "JSBundleIdentifier": "io.breakside.JSKit.DOM",
4
- "JSBundleVersion": "2025.36.0",
4
+ "JSBundleVersion": "2025.37.0",
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": "542d9c51b5664a6f0e1a92bdb945534a06c433ea"
12
+ "GitRevision": "9291bb0c17f6a29b383c667bbee690664f9fb896"
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": "2025.36.0",
6
+ "JSBundleVersion": "2025.37.0",
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": "542d9c51b5664a6f0e1a92bdb945534a06c433ea"
14
+ "GitRevision": "9291bb0c17f6a29b383c667bbee690664f9fb896"
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": "2025.36.0",
4
+ "JSBundleVersion": "2025.37.0",
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": "542d9c51b5664a6f0e1a92bdb945534a06c433ea"
11
+ "GitRevision": "9291bb0c17f6a29b383c667bbee690664f9fb896"
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": "2025.36.0",
6
+ "JSBundleVersion": "2025.37.0",
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": "542d9c51b5664a6f0e1a92bdb945534a06c433ea"
13
+ "GitRevision": "9291bb0c17f6a29b383c667bbee690664f9fb896"
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": "2025.36.0",
4
+ "JSBundleVersion": "2025.37.0",
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": "542d9c51b5664a6f0e1a92bdb945534a06c433ea"
12
+ "GitRevision": "9291bb0c17f6a29b383c667bbee690664f9fb896"
13
13
  }
@@ -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": "2025.36.0",
6
+ "JSBundleVersion": "2025.37.0",
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": "542d9c51b5664a6f0e1a92bdb945534a06c433ea"
14
+ "GitRevision": "9291bb0c17f6a29b383c667bbee690664f9fb896"
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": "2025.36.0",
4
+ "JSBundleVersion": "2025.37.0",
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": "542d9c51b5664a6f0e1a92bdb945534a06c433ea"
12
+ "GitRevision": "9291bb0c17f6a29b383c667bbee690664f9fb896"
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": "2025.36.0",
6
+ "JSBundleVersion": "2025.37.0",
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": "542d9c51b5664a6f0e1a92bdb945534a06c433ea"
14
+ "GitRevision": "9291bb0c17f6a29b383c667bbee690664f9fb896"
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": "2025.36.0",
4
+ "JSBundleVersion": "2025.37.0",
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": "542d9c51b5664a6f0e1a92bdb945534a06c433ea"
11
+ "GitRevision": "9291bb0c17f6a29b383c667bbee690664f9fb896"
12
12
  }
@@ -101,6 +101,11 @@ JSClass("HTMLProjectServer", JSObject, {
101
101
 
102
102
  alwaysExpires: JSLazyInitProperty(() => "Thu, 01 Jan 1970 00:00:01 GMT"),
103
103
  neverExpires: JSLazyInitProperty(() => "Thu, 31 Dec 2037 23:55:55 GMT"),
104
+ ingored404URLs: JSLazyInitProperty(() => new Set([
105
+ "/favicon.ico",
106
+ "/apple-touch-icon.png",
107
+ "/apple-touch-icon-precomposed.png"
108
+ ])),
104
109
 
105
110
  _handleNodeRequest: async function(nodeRequest, nodeResponse){
106
111
  let statusCode = null;
@@ -178,6 +183,7 @@ JSClass("HTMLProjectServer", JSObject, {
178
183
  statusCode = 404;
179
184
  }
180
185
  }catch (e){
186
+ this.printer.ensureNewline();
181
187
  logger.error("Error handling request: %{error}", e);
182
188
  statusCode = 500;
183
189
  }
@@ -186,6 +192,7 @@ JSClass("HTMLProjectServer", JSObject, {
186
192
  try{
187
193
  nodeResponse.writeHead(statusCode, headers);
188
194
  }catch (e){
195
+ this.printer.ensureNewline();
189
196
  logger.error("Error sending response headers: %{error}", e);
190
197
  nodeResponse.writeHead(500);
191
198
  }
@@ -198,10 +205,14 @@ JSClass("HTMLProjectServer", JSObject, {
198
205
  nodeResponse.end();
199
206
  }
200
207
  if (statusCode >= 400){
201
- logger.warn("%d %{public} %{public}", statusCode, nodeRequest.method, nodeRequest.url);
208
+ if (statusCode !== 404 || !this.ingored404URLs.has(nodeRequest.url)){
209
+ this.printer.ensureNewline();
210
+ logger.warn("%d %{public} %{public}", statusCode, nodeRequest.method, nodeRequest.url);
211
+ }
202
212
  }
203
213
  }catch (e){
204
214
  nodeRequest.socket.destroy();
215
+ this.printer.ensureNewline();
205
216
  logger.error("Error sending response: %{error}", e);
206
217
  }
207
218
  },
package/Node/Printer.js CHANGED
@@ -75,8 +75,19 @@ JSClass("Printer", JSObject, {
75
75
  }
76
76
  },
77
77
 
78
+ atNewline: true,
79
+
80
+ ensureNewline: function(){
81
+ if (!this.atNewline){
82
+ this._printRawData("\n".utf8());
83
+ }
84
+ },
85
+
78
86
  _printRawData: function(data){
79
87
  this.stream.write(data);
88
+ if (data.length > 0){
89
+ this.atNewline = data[data.length - 1] == 0x0A;
90
+ }
80
91
  },
81
92
 
82
93
  _erase: function(count){
@@ -3,14 +3,14 @@ JSBundle.bundles['io.breakside.jskit'] = {
3
3
  "Info": {
4
4
  "JSBundleType": "node",
5
5
  "JSBundleIdentifier": "io.breakside.jskit",
6
- "JSBundleVersion": "2025.36.0",
6
+ "JSBundleVersion": "2025.37.0",
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": "542d9c51b5664a6f0e1a92bdb945534a06c433ea"
13
+ "GitRevision": "9291bb0c17f6a29b383c667bbee690664f9fb896"
14
14
  },
15
15
  "Resources": [
16
16
  {
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.APIKit
3
- JSBundleVersion: 2025.36.0
3
+ JSBundleVersion: 2025.37.0
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: 2025.36.0
3
+ JSBundleVersion: 2025.37.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.AuthKit
3
- JSBundleVersion: 2025.36.0
3
+ JSBundleVersion: 2025.37.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.CSSOM
3
- JSBundleVersion: 2025.36.0
3
+ JSBundleVersion: 2025.37.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.ChartKit
3
- JSBundleVersion: 2025.36.0
3
+ JSBundleVersion: 2025.37.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.ConferenceKit
3
- JSBundleVersion: 2025.36.0
3
+ JSBundleVersion: 2025.37.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.DBKit
3
- JSBundleVersion: 2025.36.0
3
+ JSBundleVersion: 2025.37.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.DOM
3
- JSBundleVersion: 2025.36.0
3
+ JSBundleVersion: 2025.37.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.Dispatch
3
- JSBundleVersion: 2025.36.0
3
+ JSBundleVersion: 2025.37.0
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: 2025.36.0
3
+ JSBundleVersion: 2025.37.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.Foundation
3
- JSBundleVersion: 2025.36.0
3
+ JSBundleVersion: 2025.37.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.ImageKit
3
- JSBundleVersion: 2025.36.0
3
+ JSBundleVersion: 2025.37.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: 2025.36.0
3
+ JSBundleVersion: 2025.37.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: 2025.36.0
3
+ JSBundleVersion: 2025.37.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: 2025.36.0
3
+ JSBundleVersion: 2025.37.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: 2025.36.0
3
+ JSBundleVersion: 2025.37.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: 2025.36.0
3
+ JSBundleVersion: 2025.37.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: 2025.36.0
3
+ JSBundleVersion: 2025.37.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: 2025.36.0
3
+ JSBundleVersion: 2025.37.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: 2025.36.0
3
+ JSBundleVersion: 2025.37.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: 2025.36.0
3
+ JSBundleVersion: 2025.37.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: 2025.36.0
3
+ JSBundleVersion: 2025.37.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: 2025.36.0
3
+ JSBundleVersion: 2025.37.0
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2020 Breakside Inc.
6
6
  JSBundleEnvironments:
@@ -53,6 +53,7 @@ JSProtocol("UIAccessibility", JSProtocol, {
53
53
  // Properties
54
54
  accessibilityTextualContext: null,
55
55
  accessibilityMenu: null,
56
+ accessibilityDraggable: false,
56
57
 
57
58
  // Children
58
59
  accessibilityParent: null,
@@ -953,8 +953,11 @@ JSClass("UIHTMLDisplayServerCanvasContext", UIHTMLDisplayServerContext, {
953
953
  };
954
954
  this.accessibilityMousedownListener = function(e){
955
955
  // We don't want mousedown to focus the element
956
- // Unfortunately, this prevents the element from working with drag and drop
957
- e.preventDefault();
956
+ // Unfortunately, this prevents the element from working with drag and drop,
957
+ // So elements can opt-in to allowing drag by allowing focus-on-mousedown
958
+ if (!accessibility.accessibilityDraggable){
959
+ e.preventDefault();
960
+ }
958
961
  };
959
962
  this.element.addEventListener("focus", this.accessibilityFocusListener);
960
963
  this.element.addEventListener("mousedown", this.accessibilityMousedownListener);
@@ -3384,7 +3384,13 @@ JSClass("UIListViewDefaultStyler", UIListViewStyler, {
3384
3384
  if (cell._accessoryView !== null){
3385
3385
  var accessorySize = this.accessorySize;
3386
3386
  if (accessorySize === null){
3387
- accessorySize = cell._accessoryView.intrinsicSize;
3387
+ accessorySize = JSSize(cell._accessoryView.intrinsicSize);
3388
+ if (accessorySize.width === UIView.noIntrinsicSize){
3389
+ accessorySize.width = cell._accessoryView.bounds.size.width;
3390
+ }
3391
+ if (accessorySize.height === UIView.noIntrinsicSize){
3392
+ accessorySize.height = cell._accessoryView.bounds.size.height;
3393
+ }
3388
3394
  }
3389
3395
  cell._accessoryView.frame = JSRect(cell._contentView.bounds.size.width - cell._accessoryInsets.right - accessorySize.width, (cell._contentView.bounds.size.height - accessorySize.height) / 2, accessorySize.width, accessorySize.height);
3390
3396
  size.width -= accessorySize.width + cell._accessoryInsets.width;
@@ -286,6 +286,7 @@ JSClass("UIPopupButton", UIControl, {
286
286
  this.menu.font = this.titleLabel.font;
287
287
  }
288
288
  this.menu.delegate = this;
289
+ this.sendActionsForEvents(UIControl.Event.editingDidBegin);
289
290
  if (this._pullsDown){
290
291
  this.menu.minimumWidth = this.frame.size.width;
291
292
  this.menu.openAdjacentToView(this, UIMenu.Placement.below, 1);
@@ -318,6 +319,7 @@ JSClass("UIPopupButton", UIControl, {
318
319
  this.menu.delegate = null;
319
320
  this.menu.accessibilityParent = null;
320
321
  this._isMenuOpen = false;
322
+ this.sendActionsForEvents(UIControl.Event.editingDidEnd);
321
323
  },
322
324
 
323
325
  setSelectedIndex: function(index){
@@ -678,7 +678,7 @@ JSClass("UIToolbarCustomStyler", UIToolbarStyler, {
678
678
  size = props.overflowButton.intrinsicSize;
679
679
  props.overflowButton.frame = JSRect(toolbar.bounds.size.width - this.contentInsets.right - size.width, y + (maxHeight - size.height) / 2.0, size.width, size.height);
680
680
  // reduce available width by overflow button width
681
- availableWidth -= props.overflowButton.bounds.size.width - this.itemSpacing;
681
+ availableWidth -= props.overflowButton.bounds.size.width + this.itemSpacing;
682
682
  // Back up over any overflowing items
683
683
  for (; props.lastVisibleIndex >= 0 && itemsWidth > availableWidth; --props.lastVisibleIndex){
684
684
  size = itemSizes[props.lastVisibleIndex];
@@ -1137,6 +1137,7 @@ JSClass('UIView', UIResponder, {
1137
1137
  accessibilityEnabled: null,
1138
1138
  accessibilityLevel: null,
1139
1139
  accessibilityMultiline: null,
1140
+ accessibilityDraggable: false,
1140
1141
 
1141
1142
  // Children
1142
1143
  accessibilityParent: JSReadOnlyProperty(),
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.UIKitTesting
3
- JSBundleVersion: 2025.36.0
3
+ JSBundleVersion: 2025.37.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": "2025.36.0",
12
+ "version": "2025.37.0",
13
13
  "license": "SEE LICENSE IN LICENSE.txt",
14
14
  "files": [
15
15
  "*"