@breakside/jskit 2026.4.1 → 2026.6.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 (37) 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/TestCommand.js +1 -1
  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/ImageKit/Info.yaml +1 -1
  24. package/Root/Frameworks/MediaKit/Info.yaml +1 -1
  25. package/Root/Frameworks/MediaKitUI/Info.yaml +1 -1
  26. package/Root/Frameworks/NotificationKit/Info.yaml +1 -1
  27. package/Root/Frameworks/PDFKit/Info.yaml +1 -1
  28. package/Root/Frameworks/QRKit/Info.yaml +1 -1
  29. package/Root/Frameworks/SearchKit/Info.yaml +1 -1
  30. package/Root/Frameworks/SecurityKit/Info.yaml +1 -1
  31. package/Root/Frameworks/ServerKit/Info.yaml +1 -1
  32. package/Root/Frameworks/ServerKitTesting/Info.yaml +1 -1
  33. package/Root/Frameworks/TestKit/Info.yaml +1 -1
  34. package/Root/Frameworks/UIKit/Info.yaml +1 -1
  35. package/Root/Frameworks/UIKit/UICollectionViewGridLayout.js +59 -19
  36. package/Root/Frameworks/UIKitTesting/Info.yaml +1 -1
  37. 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.4.1",
4
+ "JSBundleVersion": "2026.6.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": "81476f101c402411441be784d6beeee4a31239a4"
12
+ "GitRevision": "4d2276988e1dc6a50451389c84f740a16249d16e"
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.4.1",
6
+ "JSBundleVersion": "2026.6.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": "81476f101c402411441be784d6beeee4a31239a4"
14
+ "GitRevision": "4d2276988e1dc6a50451389c84f740a16249d16e"
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.4.1",
4
+ "JSBundleVersion": "2026.6.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": "81476f101c402411441be784d6beeee4a31239a4"
11
+ "GitRevision": "4d2276988e1dc6a50451389c84f740a16249d16e"
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.4.1",
6
+ "JSBundleVersion": "2026.6.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": "81476f101c402411441be784d6beeee4a31239a4"
13
+ "GitRevision": "4d2276988e1dc6a50451389c84f740a16249d16e"
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.4.1",
4
+ "JSBundleVersion": "2026.6.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": "81476f101c402411441be784d6beeee4a31239a4"
12
+ "GitRevision": "4d2276988e1dc6a50451389c84f740a16249d16e"
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": "2026.4.1",
6
+ "JSBundleVersion": "2026.6.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": "81476f101c402411441be784d6beeee4a31239a4"
14
+ "GitRevision": "4d2276988e1dc6a50451389c84f740a16249d16e"
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.4.1",
4
+ "JSBundleVersion": "2026.6.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": "81476f101c402411441be784d6beeee4a31239a4"
12
+ "GitRevision": "4d2276988e1dc6a50451389c84f740a16249d16e"
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.4.1",
6
+ "JSBundleVersion": "2026.6.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": "81476f101c402411441be784d6beeee4a31239a4"
14
+ "GitRevision": "4d2276988e1dc6a50451389c84f740a16249d16e"
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.4.1",
4
+ "JSBundleVersion": "2026.6.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": "81476f101c402411441be784d6beeee4a31239a4"
11
+ "GitRevision": "4d2276988e1dc6a50451389c84f740a16249d16e"
12
12
  }
@@ -239,7 +239,7 @@ JSClass("TestCommand", Command, {
239
239
  var query = url.query;
240
240
  query.add("headless");
241
241
  url.query = query;
242
- var page = await browser.newPage();
242
+ var page = await browser.newPage({locale: Intl.DateTimeFormat().resolvedOptions().locale});
243
243
  var cmd = this;
244
244
  await new Promise(function(resolve, reject){
245
245
  page.exposeFunction("headlessPrint", function(text, ttyOnly){
@@ -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.4.1",
6
+ "JSBundleVersion": "2026.6.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": "81476f101c402411441be784d6beeee4a31239a4"
13
+ "GitRevision": "4d2276988e1dc6a50451389c84f740a16249d16e"
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.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.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: 2026.4.1
3
+ JSBundleVersion: 2026.6.0
4
4
  JSDevelopmentLanguage: en
5
5
  JSCopyright: Copyright © 2020 Breakside Inc.
6
6
  JSBundleEnvironments:
@@ -17,6 +17,14 @@
17
17
  /* global UICollectionView */
18
18
  "use strict";
19
19
 
20
+ JSProtocol("UICollectionViewGridLayoutDelegate", JSProtocol, {
21
+
22
+ heightForCollectionViewHeaderInSection: function(collectionView, sectionIndex){},
23
+ heightForCollectionViewFooterInSection: function(collectionView, sectionIndex){},
24
+ cellSizeForCollectionViewInSection: function(collectionView, sectionIndex){},
25
+
26
+ });
27
+
20
28
  JSClass("UICollectionViewGridLayout", UICollectionViewLayout, {
21
29
 
22
30
  init: function(){
@@ -228,33 +236,63 @@ JSClass("UICollectionViewGridLayout", UICollectionViewLayout, {
228
236
  var rowOffset = 0;
229
237
  var sectionHeaderAndSpacingHeight = 0;
230
238
  var sectionFooterAndSpacingHeight = 0;
231
- if (this._sectionHeaderHeight > 0){
232
- sectionHeaderAndSpacingHeight = this._sectionHeaderHeight + this._sectionHeaderSpacing;
233
- }
234
- if (this._sectionFooterHeight > 0){
235
- sectionFooterAndSpacingHeight= this._sectionFooterHeight + this._sectionFooterSpacing;
236
- }
239
+ var sectionHeaderHeight;
240
+ var sectionFooterHeight;
241
+ var sectionCellSize;
242
+ var sectionColumns;
237
243
  for (sectionIndex = 0; sectionIndex < sectionCount; ++sectionIndex){
244
+ sectionHeaderHeight = this._sectionHeaderHeight;
245
+ sectionFooterHeight = this._sectionFooterHeight;
246
+ sectionCellSize = this._cellSize;
247
+ if (this.collectionView.delegate && this.collectionView.delegate.heightForCollectionViewHeaderInSection){
248
+ sectionHeaderHeight = this.collectionView.delegate.heightForCollectionViewHeaderInSection(this.collectionView, sectionIndex);
249
+ }
250
+ if (this.collectionView.delegate && this.collectionView.delegate.heightForCollectionViewFooterInSection){
251
+ sectionFooterHeight = this.collectionView.delegate.heightForCollectionViewFooterInSection(this.collectionView, sectionIndex);
252
+ }
253
+ if (this.collectionView.delegate && this.collectionView.delegate.cellSizeForCollectionViewInSection){
254
+ sectionCellSize = this.collectionView.delegate.cellSizeForCollectionViewInSection(this.collectionView, sectionIndex);
255
+ }
256
+ if (sectionHeaderHeight > 0){
257
+ sectionHeaderAndSpacingHeight = sectionHeaderHeight + this._sectionHeaderSpacing;
258
+ }
259
+ if (sectionFooterHeight > 0){
260
+ sectionFooterAndSpacingHeight= sectionFooterHeight + this._sectionFooterSpacing;
261
+ }
262
+ if (sectionCellSize.width != this._cellSize.width){
263
+ columnCount = Math.max(1, Math.floor((availableWidth + this._columnSpacing) / (sectionCellSize.width + this._columnSpacing)));
264
+ x = this._collectionInsets.left + this._sectionInsets.left;
265
+ sectionColumns = [];
266
+ for (columnIndex = 0; columnIndex < columnCount; ++columnIndex){
267
+ sectionColumns.push({x: x});
268
+ x += sectionCellSize.width + this._columnSpacing;
269
+ }
270
+ }else{
271
+ columnCount = this._cachedLayout.columns.length;
272
+ sectionColumns = this._cachedLayout.columns;
273
+ }
238
274
  cellCount = this.collectionView.dataSource.numberOfCellsInCollectionViewSection(this.collectionView, sectionIndex);
239
275
  rowCount = Math.ceil(cellCount / columnCount);
240
276
  size.height = this._sectionInsets.height + sectionHeaderAndSpacingHeight + sectionFooterAndSpacingHeight;
241
- size.height += rowCount * this._cellSize.height + (rowCount - 1) * this._rowSpacing;
277
+ size.height += rowCount * sectionCellSize.height + (rowCount - 1) * this._rowSpacing;
242
278
  this._cachedLayout.sections.push({
243
279
  rowOffset: rowOffset,
244
280
  cellCount: cellCount,
245
281
  rowCount: rowCount,
246
282
  frame: JSRect(origin, size),
283
+ columns: sectionColumns,
284
+ cellSize: sectionCellSize,
247
285
  headerFrame: JSRect(
248
286
  origin.x + this._sectionInsets.left,
249
287
  origin.y + this._sectionInsets.top,
250
288
  availableWidth,
251
- this._sectionHeaderHeight
289
+ sectionHeaderHeight
252
290
  ),
253
291
  footerFrame: JSRect(
254
292
  origin.x + this._sectionInsets.left,
255
- origin.y + size.height - this._sectionInsets.bottom - this._sectionFooterHeight,
293
+ origin.y + size.height - this._sectionInsets.bottom - sectionFooterHeight,
256
294
  availableWidth,
257
- this._sectionFooterHeight
295
+ sectionFooterHeight
258
296
  ),
259
297
  cellsFrame: JSRect(
260
298
  origin.x + this._sectionInsets.left,
@@ -295,7 +333,7 @@ JSClass("UICollectionViewGridLayout", UICollectionViewLayout, {
295
333
  if (this._cachedLayout.headerFrame.size.height > 0 && (this._headersStickToTop || rect.intersectsRect(this._cachedLayout.headerFrame))){
296
334
  attributes.push(this.layoutAttributesForSupplimentaryViewAtIndexPath(JSIndexPath([]), UICollectionViewGridLayout.SupplimentaryKind.header));
297
335
  }
298
- var columnCount = this._cachedLayout.columns.length;
336
+ var columnCount;
299
337
  var columnIndex;
300
338
  var sectionIndex;
301
339
  var sectionCount = this._cachedLayout.sections.length;
@@ -304,12 +342,14 @@ JSClass("UICollectionViewGridLayout", UICollectionViewLayout, {
304
342
  var y;
305
343
  var y0 = rect.origin.y;
306
344
  var y1 = rect.origin.y + rect.size.height;
307
- var rowHeight = this._cellSize.height + this._rowSpacing;
345
+ var rowHeight;
308
346
  var rowIndex;
309
347
  var attrs;
310
348
  // FIXME: can do a more efficient search of sections
311
349
  for (sectionIndex = 0; sectionIndex < sectionCount; ++sectionIndex){
312
350
  sectionLayout = this._cachedLayout.sections[sectionIndex];
351
+ columnCount = sectionLayout.columns.length;
352
+ rowHeight = sectionLayout.cellSize.height + this._rowSpacing;
313
353
  if (sectionLayout.frame.size.height > 0 && rect.intersectsRect(sectionLayout.frame)){
314
354
  if (this._showsSectionBackgroundViews){
315
355
  attributes.push(this.layoutAttributesForSupplimentaryViewAtIndexPath(JSIndexPath([sectionIndex]), UICollectionViewGridLayout.SupplimentaryKind.background));
@@ -326,10 +366,10 @@ JSClass("UICollectionViewGridLayout", UICollectionViewLayout, {
326
366
  for (; rowIndex < sectionLayout.rowCount && y < y1; ++rowIndex, y += rowHeight){
327
367
  for (columnIndex = 0; columnIndex < columnCount && indexPath.row < sectionLayout.cellCount; ++columnIndex, ++indexPath.row){
328
368
  attrs = UICollectionViewLayoutAttributes.initCellAtIndexPath(indexPath, JSRect(
329
- this._cachedLayout.columns[columnIndex].x,
369
+ sectionLayout.columns[columnIndex].x,
330
370
  y,
331
- this._cellSize.width,
332
- this._cellSize.height
371
+ sectionLayout.cellSize.width,
372
+ sectionLayout.cellSize.height
333
373
  ));
334
374
  attrs.rowIndex = sectionLayout.rowOffset + rowIndex;
335
375
  attrs.columnIndex = columnIndex;
@@ -350,16 +390,16 @@ JSClass("UICollectionViewGridLayout", UICollectionViewLayout, {
350
390
 
351
391
  layoutAttributesForCellAtIndexPath: function(indexPath){
352
392
  var sectionLayout = this._cachedLayout.sections[indexPath.section];
353
- var columnCount = this._cachedLayout.columns.length;
393
+ var columnCount = sectionLayout.columns.length;
354
394
  var rowIndex = Math.floor(indexPath.row / columnCount);
355
395
  var columnIndex = indexPath.row % columnCount;
356
396
  var origin = JSPoint(
357
- this._cachedLayout.columns[columnIndex].x,
358
- sectionLayout.cellsFrame.origin.y + rowIndex * (this._cellSize.height + this._rowSpacing)
397
+ sectionLayout.columns[columnIndex].x,
398
+ sectionLayout.cellsFrame.origin.y + rowIndex * (sectionLayout.cellSize.height + this._rowSpacing)
359
399
  );
360
400
  var frame = JSRect(
361
401
  origin,
362
- this._cellSize
402
+ sectionLayout.cellSize
363
403
  );
364
404
  var attributes = UICollectionViewLayoutAttributes.initCellAtIndexPath(indexPath, frame);
365
405
  attributes.rowIndex = sectionLayout.rowOffset + rowIndex;
@@ -1,6 +1,6 @@
1
1
  JSBundleType: framework
2
2
  JSBundleIdentifier: io.breakside.JSKit.UIKitTesting
3
- JSBundleVersion: 2026.4.1
3
+ JSBundleVersion: 2026.6.0
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.4.1",
15
+ "version": "2026.6.0",
16
16
  "license": "SEE LICENSE IN LICENSE.txt",
17
17
  "files": [
18
18
  "*"