Skip to content

Commit 368b626

Browse files
committed
Separated the VSCollectionData from VSCollectionKit Module
Since ViewModel needs import VSCollectionKit only for the VSCollectionData, so separated the VSCollectionData from VSCollectionKit, so that view-model can be used independently on multiple platform
1 parent a5d0999 commit 368b626

13 files changed

Lines changed: 174 additions & 42 deletions

File tree

VSCollectionKit/CollectionKitTestApp/AlbumsCollectionViewModel.swift

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@
66
// Copyright © 2020 Vinodh Govindaswamy. All rights reserved.
77
//
88

9-
import VSCollectionKit
9+
import Foundation
10+
import VSCollectionViewData
1011

1112
protocol AlbumCollectionViewAPI {
1213
var collectionViewData: VSCollectionViewData? { get set }
@@ -45,7 +46,7 @@ struct AlbumSectionModel: SectionModel {
4546
var items: [CellModel] = []
4647

4748
init(photoUrls: [String]) {
48-
self.sectionID = UUID().uuidString
49+
self.sectionID = ProcessInfo.processInfo.globallyUniqueString
4950
photoUrls.forEach { (url) in
5051
items.append(PhotoCellModel(photoUrl: url))
5152
}

VSCollectionKit/CollectionKitTestApp/PhotosSectionHandler.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import UIKit
1010
import VSCollectionKit
11+
import VSCollectionViewData
1112

1213
class PhotosSectionHandler: SectionHandler {
1314
var type: String {

VSCollectionKit/VSCollectionKit.xcodeproj/project.pbxproj

Lines changed: 118 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,17 @@
1717
531DDD6C243C859D0096EC9D /* VSCollectionKitTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 531DDD6B243C859D0096EC9D /* VSCollectionKitTests.swift */; };
1818
531DDD6E243C859D0096EC9D /* VSCollectionKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 531DDD60243C859D0096EC9D /* VSCollectionKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
1919
531DDD90243C87D50096EC9D /* VSSectionHandlerProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = 531DDD88243C87D50096EC9D /* VSSectionHandlerProtocol.swift */; };
20-
531DDD91243C87D50096EC9D /* VSCollectionViewData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 531DDD89243C87D50096EC9D /* VSCollectionViewData.swift */; };
2120
531DDD92243C87D50096EC9D /* VSCollectionViewDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 531DDD8A243C87D50096EC9D /* VSCollectionViewDelegate.swift */; };
22-
531DDD93243C87D50096EC9D /* VSCollectionViewUpdate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 531DDD8B243C87D50096EC9D /* VSCollectionViewUpdate.swift */; };
2321
531DDD94243C87D50096EC9D /* VSCollectionViewSectionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 531DDD8C243C87D50096EC9D /* VSCollectionViewSectionHandler.swift */; };
2422
531DDD95243C87D50096EC9D /* VSCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 531DDD8D243C87D50096EC9D /* VSCollectionViewController.swift */; };
2523
531DDD96243C87D50096EC9D /* VSCollectionViewDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 531DDD8E243C87D50096EC9D /* VSCollectionViewDataSource.swift */; };
2624
531DDD97243C87D50096EC9D /* VSCollectionViewLayoutProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 531DDD8F243C87D50096EC9D /* VSCollectionViewLayoutProvider.swift */; };
2725
53A1FED22449A47700BB7F0C /* VSCollectionViewSectionHandlerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53A1FED12449A47700BB7F0C /* VSCollectionViewSectionHandlerTests.swift */; };
2826
53A1FED42449B74300BB7F0C /* VSCollectionViewLayoutProviderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53A1FED32449B74300BB7F0C /* VSCollectionViewLayoutProviderTests.swift */; };
27+
53A9CADA255D83A700373F74 /* VSCollectionViewData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 531DDD89243C87D50096EC9D /* VSCollectionViewData.swift */; };
28+
53A9CAE0255D83CA00373F74 /* libVSCollectionViewData.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 53A9CACB255D839F00373F74 /* libVSCollectionViewData.a */; };
29+
53A9CAED255D84F900373F74 /* VSCollectionViewUpdate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 531DDD8B243C87D50096EC9D /* VSCollectionViewUpdate.swift */; };
30+
53A9CAF6255DA45100373F74 /* VSCollectionKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 531DDD5D243C859D0096EC9D /* VSCollectionKit.framework */; };
2931
53F85A9F244C6A22001451FB /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F85A9E244C6A22001451FB /* AppDelegate.swift */; };
3032
53F85AA1244C6A22001451FB /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 53F85AA0244C6A22001451FB /* SceneDelegate.swift */; };
3133
53F85AAA244C6A23001451FB /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 53F85AA9244C6A23001451FB /* Assets.xcassets */; };
@@ -54,6 +56,18 @@
5456
};
5557
/* End PBXContainerItemProxy section */
5658

59+
/* Begin PBXCopyFilesBuildPhase section */
60+
53A9CAC9255D839F00373F74 /* CopyFiles */ = {
61+
isa = PBXCopyFilesBuildPhase;
62+
buildActionMask = 2147483647;
63+
dstPath = "include/$(PRODUCT_NAME)";
64+
dstSubfolderSpec = 16;
65+
files = (
66+
);
67+
runOnlyForDeploymentPostprocessing = 0;
68+
};
69+
/* End PBXCopyFilesBuildPhase section */
70+
5771
/* Begin PBXFileReference section */
5872
5316E27B2444872300D30576 /* MockSectionModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockSectionModel.swift; sourceTree = "<group>"; };
5973
5316E27D2444874300D30576 /* MockCellModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MockCellModel.swift; sourceTree = "<group>"; };
@@ -77,6 +91,7 @@
7791
531DDD8F243C87D50096EC9D /* VSCollectionViewLayoutProvider.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VSCollectionViewLayoutProvider.swift; sourceTree = "<group>"; };
7892
53A1FED12449A47700BB7F0C /* VSCollectionViewSectionHandlerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VSCollectionViewSectionHandlerTests.swift; sourceTree = "<group>"; };
7993
53A1FED32449B74300BB7F0C /* VSCollectionViewLayoutProviderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VSCollectionViewLayoutProviderTests.swift; sourceTree = "<group>"; };
94+
53A9CACB255D839F00373F74 /* libVSCollectionViewData.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libVSCollectionViewData.a; sourceTree = BUILT_PRODUCTS_DIR; };
8095
53F85A9C244C6A22001451FB /* CollectionKitTestApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CollectionKitTestApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
8196
53F85A9E244C6A22001451FB /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
8297
53F85AA0244C6A22001451FB /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
@@ -95,6 +110,7 @@
95110
isa = PBXFrameworksBuildPhase;
96111
buildActionMask = 2147483647;
97112
files = (
113+
53A9CAE0255D83CA00373F74 /* libVSCollectionViewData.a in Frameworks */,
98114
);
99115
runOnlyForDeploymentPostprocessing = 0;
100116
};
@@ -106,10 +122,18 @@
106122
);
107123
runOnlyForDeploymentPostprocessing = 0;
108124
};
125+
53A9CAC8255D839F00373F74 /* Frameworks */ = {
126+
isa = PBXFrameworksBuildPhase;
127+
buildActionMask = 2147483647;
128+
files = (
129+
);
130+
runOnlyForDeploymentPostprocessing = 0;
131+
};
109132
53F85A99244C6A22001451FB /* Frameworks */ = {
110133
isa = PBXFrameworksBuildPhase;
111134
buildActionMask = 2147483647;
112135
files = (
136+
53A9CAF6255DA45100373F74 /* VSCollectionKit.framework in Frameworks */,
113137
);
114138
runOnlyForDeploymentPostprocessing = 0;
115139
};
@@ -122,7 +146,9 @@
122146
531DDD5F243C859D0096EC9D /* VSCollectionKit */,
123147
531DDD6A243C859D0096EC9D /* VSCollectionKitTests */,
124148
53F85A9D244C6A22001451FB /* CollectionKitTestApp */,
149+
53A9CACC255D839F00373F74 /* VSCollectionViewData */,
125150
531DDD5E243C859D0096EC9D /* Products */,
151+
53A9CADF255D83CA00373F74 /* Frameworks */,
126152
);
127153
sourceTree = "<group>";
128154
};
@@ -132,6 +158,7 @@
132158
531DDD5D243C859D0096EC9D /* VSCollectionKit.framework */,
133159
531DDD66243C859D0096EC9D /* VSCollectionKitTests.xctest */,
134160
53F85A9C244C6A22001451FB /* CollectionKitTestApp.app */,
161+
53A9CACB255D839F00373F74 /* libVSCollectionViewData.a */,
135162
);
136163
name = Products;
137164
sourceTree = "<group>";
@@ -167,17 +194,31 @@
167194
isa = PBXGroup;
168195
children = (
169196
531DDD8D243C87D50096EC9D /* VSCollectionViewController.swift */,
170-
531DDD89243C87D50096EC9D /* VSCollectionViewData.swift */,
171197
531DDD8E243C87D50096EC9D /* VSCollectionViewDataSource.swift */,
172198
531DDD8A243C87D50096EC9D /* VSCollectionViewDelegate.swift */,
173199
531DDD8F243C87D50096EC9D /* VSCollectionViewLayoutProvider.swift */,
174200
531DDD8C243C87D50096EC9D /* VSCollectionViewSectionHandler.swift */,
175-
531DDD8B243C87D50096EC9D /* VSCollectionViewUpdate.swift */,
176201
531DDD88243C87D50096EC9D /* VSSectionHandlerProtocol.swift */,
177202
);
178203
path = VSCollectionViewController;
179204
sourceTree = "<group>";
180205
};
206+
53A9CACC255D839F00373F74 /* VSCollectionViewData */ = {
207+
isa = PBXGroup;
208+
children = (
209+
531DDD89243C87D50096EC9D /* VSCollectionViewData.swift */,
210+
531DDD8B243C87D50096EC9D /* VSCollectionViewUpdate.swift */,
211+
);
212+
path = VSCollectionViewData;
213+
sourceTree = "<group>";
214+
};
215+
53A9CADF255D83CA00373F74 /* Frameworks */ = {
216+
isa = PBXGroup;
217+
children = (
218+
);
219+
name = Frameworks;
220+
sourceTree = "<group>";
221+
};
181222
53F85A9D244C6A22001451FB /* CollectionKitTestApp */ = {
182223
isa = PBXGroup;
183224
children = (
@@ -245,6 +286,23 @@
245286
productReference = 531DDD66243C859D0096EC9D /* VSCollectionKitTests.xctest */;
246287
productType = "com.apple.product-type.bundle.unit-test";
247288
};
289+
53A9CACA255D839F00373F74 /* VSCollectionViewData */ = {
290+
isa = PBXNativeTarget;
291+
buildConfigurationList = 53A9CACF255D839F00373F74 /* Build configuration list for PBXNativeTarget "VSCollectionViewData" */;
292+
buildPhases = (
293+
53A9CAC7255D839F00373F74 /* Sources */,
294+
53A9CAC8255D839F00373F74 /* Frameworks */,
295+
53A9CAC9255D839F00373F74 /* CopyFiles */,
296+
);
297+
buildRules = (
298+
);
299+
dependencies = (
300+
);
301+
name = VSCollectionViewData;
302+
productName = VSCollectionViewData;
303+
productReference = 53A9CACB255D839F00373F74 /* libVSCollectionViewData.a */;
304+
productType = "com.apple.product-type.library.static";
305+
};
248306
53F85A9B244C6A22001451FB /* CollectionKitTestApp */ = {
249307
isa = PBXNativeTarget;
250308
buildConfigurationList = 53F85AB1244C6A23001451FB /* Build configuration list for PBXNativeTarget "CollectionKitTestApp" */;
@@ -269,8 +327,8 @@
269327
531DDD54243C859D0096EC9D /* Project object */ = {
270328
isa = PBXProject;
271329
attributes = {
272-
LastSwiftUpdateCheck = 1130;
273-
LastUpgradeCheck = 1130;
330+
LastSwiftUpdateCheck = 1210;
331+
LastUpgradeCheck = 1210;
274332
ORGANIZATIONNAME = "Vinodh Govindaswamy";
275333
TargetAttributes = {
276334
531DDD5C243C859D0096EC9D = {
@@ -280,6 +338,9 @@
280338
531DDD65243C859D0096EC9D = {
281339
CreatedOnToolsVersion = 11.3.1;
282340
};
341+
53A9CACA255D839F00373F74 = {
342+
CreatedOnToolsVersion = 12.1;
343+
};
283344
53F85A9B244C6A22001451FB = {
284345
CreatedOnToolsVersion = 11.3.1;
285346
};
@@ -301,6 +362,7 @@
301362
531DDD5C243C859D0096EC9D /* VSCollectionKit */,
302363
531DDD65243C859D0096EC9D /* VSCollectionKitTests */,
303364
53F85A9B244C6A22001451FB /* CollectionKitTestApp */,
365+
53A9CACA255D839F00373F74 /* VSCollectionViewData */,
304366
);
305367
};
306368
/* End PBXProject section */
@@ -342,9 +404,7 @@
342404
531DDD92243C87D50096EC9D /* VSCollectionViewDelegate.swift in Sources */,
343405
531DDD90243C87D50096EC9D /* VSSectionHandlerProtocol.swift in Sources */,
344406
531DDD94243C87D50096EC9D /* VSCollectionViewSectionHandler.swift in Sources */,
345-
531DDD93243C87D50096EC9D /* VSCollectionViewUpdate.swift in Sources */,
346407
531DDD95243C87D50096EC9D /* VSCollectionViewController.swift in Sources */,
347-
531DDD91243C87D50096EC9D /* VSCollectionViewData.swift in Sources */,
348408
);
349409
runOnlyForDeploymentPostprocessing = 0;
350410
};
@@ -364,6 +424,15 @@
364424
);
365425
runOnlyForDeploymentPostprocessing = 0;
366426
};
427+
53A9CAC7255D839F00373F74 /* Sources */ = {
428+
isa = PBXSourcesBuildPhase;
429+
buildActionMask = 2147483647;
430+
files = (
431+
53A9CAED255D84F900373F74 /* VSCollectionViewUpdate.swift in Sources */,
432+
53A9CADA255D83A700373F74 /* VSCollectionViewData.swift in Sources */,
433+
);
434+
runOnlyForDeploymentPostprocessing = 0;
435+
};
367436
53F85A98244C6A22001451FB /* Sources */ = {
368437
isa = PBXSourcesBuildPhase;
369438
buildActionMask = 2147483647;
@@ -430,6 +499,7 @@
430499
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
431500
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
432501
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
502+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
433503
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
434504
CLANG_WARN_STRICT_PROTOTYPES = YES;
435505
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@@ -493,6 +563,7 @@
493563
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
494564
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
495565
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
566+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
496567
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
497568
CLANG_WARN_STRICT_PROTOTYPES = YES;
498569
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@@ -536,6 +607,7 @@
536607
DYLIB_INSTALL_NAME_BASE = "@rpath";
537608
INFOPLIST_FILE = VSCollectionKit/Info.plist;
538609
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
610+
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
539611
LD_RUNPATH_SEARCH_PATHS = (
540612
"$(inherited)",
541613
"@executable_path/Frameworks",
@@ -562,6 +634,7 @@
562634
DYLIB_INSTALL_NAME_BASE = "@rpath";
563635
INFOPLIST_FILE = VSCollectionKit/Info.plist;
564636
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
637+
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
565638
LD_RUNPATH_SEARCH_PATHS = (
566639
"$(inherited)",
567640
"@executable_path/Frameworks",
@@ -613,6 +686,34 @@
613686
};
614687
name = Release;
615688
};
689+
53A9CAD0255D839F00373F74 /* Debug */ = {
690+
isa = XCBuildConfiguration;
691+
buildSettings = {
692+
CODE_SIGN_STYLE = Automatic;
693+
DEVELOPMENT_TEAM = 6XYPCYQXKC;
694+
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
695+
OTHER_LDFLAGS = "-ObjC";
696+
PRODUCT_NAME = "$(TARGET_NAME)";
697+
SKIP_INSTALL = YES;
698+
SWIFT_VERSION = 5.0;
699+
TARGETED_DEVICE_FAMILY = "1,2";
700+
};
701+
name = Debug;
702+
};
703+
53A9CAD1255D839F00373F74 /* Release */ = {
704+
isa = XCBuildConfiguration;
705+
buildSettings = {
706+
CODE_SIGN_STYLE = Automatic;
707+
DEVELOPMENT_TEAM = 6XYPCYQXKC;
708+
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
709+
OTHER_LDFLAGS = "-ObjC";
710+
PRODUCT_NAME = "$(TARGET_NAME)";
711+
SKIP_INSTALL = YES;
712+
SWIFT_VERSION = 5.0;
713+
TARGETED_DEVICE_FAMILY = "1,2";
714+
};
715+
name = Release;
716+
};
616717
53F85AAF244C6A23001451FB /* Debug */ = {
617718
isa = XCBuildConfiguration;
618719
buildSettings = {
@@ -679,6 +780,15 @@
679780
defaultConfigurationIsVisible = 0;
680781
defaultConfigurationName = Release;
681782
};
783+
53A9CACF255D839F00373F74 /* Build configuration list for PBXNativeTarget "VSCollectionViewData" */ = {
784+
isa = XCConfigurationList;
785+
buildConfigurations = (
786+
53A9CAD0255D839F00373F74 /* Debug */,
787+
53A9CAD1255D839F00373F74 /* Release */,
788+
);
789+
defaultConfigurationIsVisible = 0;
790+
defaultConfigurationName = Release;
791+
};
682792
53F85AB1244C6A23001451FB /* Build configuration list for PBXNativeTarget "CollectionKitTestApp" */ = {
683793
isa = XCConfigurationList;
684794
buildConfigurations = (

VSCollectionKit/VSCollectionKit.xcodeproj/xcshareddata/xcschemes/VSCollectionKit.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "1130"
3+
LastUpgradeVersion = "1210"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"

VSCollectionKit/VSCollectionKit/VSCollectionViewController/VSCollectionViewController.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//
88

99
import UIKit
10+
import VSCollectionViewData
1011

1112
open class VSCollectionViewController: UIViewController {
1213

VSCollectionKit/VSCollectionKit/VSCollectionViewController/VSCollectionViewDataSource.swift

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//
88

99
import UIKit
10+
import VSCollectionViewData
1011

1112
public class VSCollectionViewDataSource: NSObject, UICollectionViewDataSource {
1213

@@ -82,21 +83,24 @@ public class VSCollectionViewDataSource: NSObject, UICollectionViewDataSource {
8283
collectionView.insertSections(insertedSection)
8384
}
8485
if let insertedRows = update.updatedRows {
85-
collectionView.insertItems(at: insertedRows)
86+
let insertedItems = insertedRows.map{ IndexPath(item: $0.item, section: $0.section) }
87+
collectionView.insertItems(at: insertedItems)
8688
}
8789
case .delete:
8890
if let deletedSection = update.updatedSections {
8991
collectionView.deleteSections(deletedSection)
9092
}
9193
if let deletedRows = update.updatedRows {
92-
collectionView.deleteItems(at: deletedRows)
94+
let deletedItems = deletedRows.map{ IndexPath(item: $0.item, section: $0.section) }
95+
collectionView.deleteItems(at: deletedItems)
9396
}
9497
case .reload:
9598
if let reloadSections = update.updatedSections {
9699
collectionView.reloadSections(reloadSections)
97100
}
98101
if let reloadRows = update.updatedRows {
99-
collectionView.reloadItems(at: reloadRows)
102+
let updatedItems = reloadRows.map{ IndexPath(item: $0.item, section: $0.section) }
103+
collectionView.reloadItems(at: updatedItems)
100104
}
101105
}
102106
}

VSCollectionKit/VSCollectionKit/VSCollectionViewController/VSCollectionViewDelegate.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//
88

99
import UIKit
10+
import VSCollectionViewData
1011

1112
public class VSCollectionViewDelegate: NSObject, UICollectionViewDelegate {
1213

VSCollectionKit/VSCollectionKit/VSCollectionViewController/VSCollectionViewLayoutProvider.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//
88

99
import UIKit
10+
import VSCollectionViewData
1011

1112
public class VSCollectionViewLayoutProvider {
1213

VSCollectionKit/VSCollectionKit/VSCollectionViewController/VSCollectionViewSectionHandler.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
//
88

99
import UIKit
10+
import VSCollectionViewData
1011

1112
public class VSCollectionViewSectionHandller {
1213

0 commit comments

Comments
 (0)