@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.
- package/Frameworks/DOM.jsframework/Info.json +2 -2
- package/Frameworks/DOM.jsframework/io.breakside.JSKit.DOM-bundle.js +2 -2
- package/Frameworks/FontKit.jsframework/Info.json +2 -2
- package/Frameworks/FontKit.jsframework/io.breakside.JSKit.FontKit-bundle.js +2 -2
- package/Frameworks/Foundation.jsframework/Info.json +2 -2
- package/Frameworks/Foundation.jsframework/io.breakside.JSKit.Foundation-bundle.js +2 -2
- package/Frameworks/SecurityKit.jsframework/Info.json +2 -2
- package/Frameworks/SecurityKit.jsframework/io.breakside.JSKit.SecurityKit-bundle.js +2 -2
- package/Info.json +2 -2
- package/Node/TestCommand.js +1 -1
- package/Node/io.breakside.jskit-bundle.js +2 -2
- package/Root/Frameworks/APIKit/Info.yaml +1 -1
- package/Root/Frameworks/APIKitTesting/Info.yaml +1 -1
- package/Root/Frameworks/AuthKit/Info.yaml +1 -1
- package/Root/Frameworks/CSSOM/Info.yaml +1 -1
- package/Root/Frameworks/ChartKit/Info.yaml +1 -1
- package/Root/Frameworks/ConferenceKit/Info.yaml +1 -1
- package/Root/Frameworks/DBKit/Info.yaml +1 -1
- package/Root/Frameworks/DOM/Info.yaml +1 -1
- package/Root/Frameworks/Dispatch/Info.yaml +1 -1
- package/Root/Frameworks/FontKit/Info.yaml +1 -1
- package/Root/Frameworks/Foundation/Info.yaml +1 -1
- package/Root/Frameworks/ImageKit/Info.yaml +1 -1
- package/Root/Frameworks/MediaKit/Info.yaml +1 -1
- package/Root/Frameworks/MediaKitUI/Info.yaml +1 -1
- package/Root/Frameworks/NotificationKit/Info.yaml +1 -1
- package/Root/Frameworks/PDFKit/Info.yaml +1 -1
- package/Root/Frameworks/QRKit/Info.yaml +1 -1
- package/Root/Frameworks/SearchKit/Info.yaml +1 -1
- package/Root/Frameworks/SecurityKit/Info.yaml +1 -1
- package/Root/Frameworks/ServerKit/Info.yaml +1 -1
- package/Root/Frameworks/ServerKitTesting/Info.yaml +1 -1
- package/Root/Frameworks/TestKit/Info.yaml +1 -1
- package/Root/Frameworks/UIKit/Info.yaml +1 -1
- package/Root/Frameworks/UIKit/UICollectionViewGridLayout.js +59 -19
- package/Root/Frameworks/UIKitTesting/Info.yaml +1 -1
- 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
|
+
"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": "
|
|
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.
|
|
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": "
|
|
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
|
+
"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": "
|
|
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.
|
|
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": "
|
|
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
|
+
"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": "
|
|
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.
|
|
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": "
|
|
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
|
+
"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": "
|
|
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.
|
|
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": "
|
|
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
|
+
"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": "
|
|
11
|
+
"GitRevision": "4d2276988e1dc6a50451389c84f740a16249d16e"
|
|
12
12
|
}
|
package/Node/TestCommand.js
CHANGED
|
@@ -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.
|
|
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": "
|
|
13
|
+
"GitRevision": "4d2276988e1dc6a50451389c84f740a16249d16e"
|
|
14
14
|
},
|
|
15
15
|
"Resources": [
|
|
16
16
|
{
|
|
@@ -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
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
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 *
|
|
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
|
-
|
|
289
|
+
sectionHeaderHeight
|
|
252
290
|
),
|
|
253
291
|
footerFrame: JSRect(
|
|
254
292
|
origin.x + this._sectionInsets.left,
|
|
255
|
-
origin.y + size.height - this._sectionInsets.bottom -
|
|
293
|
+
origin.y + size.height - this._sectionInsets.bottom - sectionFooterHeight,
|
|
256
294
|
availableWidth,
|
|
257
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
369
|
+
sectionLayout.columns[columnIndex].x,
|
|
330
370
|
y,
|
|
331
|
-
|
|
332
|
-
|
|
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 =
|
|
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
|
-
|
|
358
|
-
sectionLayout.cellsFrame.origin.y + rowIndex * (
|
|
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
|
-
|
|
402
|
+
sectionLayout.cellSize
|
|
363
403
|
);
|
|
364
404
|
var attributes = UICollectionViewLayoutAttributes.initCellAtIndexPath(indexPath, frame);
|
|
365
405
|
attributes.rowIndex = sectionLayout.rowOffset + rowIndex;
|