From 38d74dc17985811cd85e7f10eacc6a6284246046 Mon Sep 17 00:00:00 2001 From: Ivan Rep Date: Tue, 16 May 2017 18:37:02 +0200 Subject: [PATCH 1/3] LayoutAdapter with cached layouts --- LayoutKit.xcodeproj/project.pbxproj | 36 +++- .../xcschemes/ExampleLayouts-iOS.xcscheme | 3 +- .../BatchUpdatesArrayUpdateTest.swift | 176 ++++++++++++++++++ .../LayoutAdapterWithCacheTest.swift | 146 +++++++++++++++ LayoutKitTests/SafeArrayTest.swift | 84 +++++++++ Sources/Internal/SafeArray.swift | 49 +++++ Sources/Views/BatchUpdatesArrayUpdate.swift | 70 +++++++ Sources/Views/LayoutAdapter.swift | 13 ++ Sources/Views/LayoutAdapterWithCache.swift | 52 ++++++ 9 files changed, 624 insertions(+), 5 deletions(-) create mode 100644 LayoutKitTests/BatchUpdatesArrayUpdateTest.swift create mode 100644 LayoutKitTests/LayoutAdapterWithCacheTest.swift create mode 100644 LayoutKitTests/SafeArrayTest.swift create mode 100644 Sources/Internal/SafeArray.swift create mode 100644 Sources/Views/BatchUpdatesArrayUpdate.swift create mode 100644 Sources/Views/LayoutAdapter.swift create mode 100644 Sources/Views/LayoutAdapterWithCache.swift diff --git a/LayoutKit.xcodeproj/project.pbxproj b/LayoutKit.xcodeproj/project.pbxproj index 4d3ca593..4b3dab17 100644 --- a/LayoutKit.xcodeproj/project.pbxproj +++ b/LayoutKit.xcodeproj/project.pbxproj @@ -209,8 +209,6 @@ 44F968181E4263DC00392763 /* TextViewLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44F968161E42639500392763 /* TextViewLayoutTests.swift */; }; 44F968191E4263DC00392763 /* TextViewLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44F968161E42639500392763 /* TextViewLayoutTests.swift */; }; 44F9681A1E42640400392763 /* TextViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44F968141E425F5D00392763 /* TextViewLayout.swift */; }; - AD2C36441EA5AFB500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD2C36421EA5AF9500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift */; }; - ADE5FCC11EA5B5F3006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADE5FCBF1EA5B5C8006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift */; }; 75D94A361EA01B6A00A5FD01 /* OverlayLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A351EA01B6A00A5FD01 /* OverlayLayout.swift */; }; 75D94A371EA01B7100A5FD01 /* OverlayLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A351EA01B6A00A5FD01 /* OverlayLayout.swift */; }; 75D94A381EA01B7200A5FD01 /* OverlayLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A351EA01B6A00A5FD01 /* OverlayLayout.swift */; }; @@ -218,6 +216,15 @@ 75D94A3C1EA045F100A5FD01 /* OverlayLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A3A1EA045F100A5FD01 /* OverlayLayoutTests.swift */; }; 75D94A3D1EA045F100A5FD01 /* OverlayLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A3A1EA045F100A5FD01 /* OverlayLayoutTests.swift */; }; 75D94A401EA05D5A00A5FD01 /* OverlayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A3F1EA05D5A00A5FD01 /* OverlayViewController.swift */; }; + AD2C36441EA5AFB500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD2C36421EA5AF9500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift */; }; + ADE5FCC11EA5B5F3006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADE5FCBF1EA5B5C8006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift */; }; + F6A1A8F51ECAEFC80058DF07 /* LayoutAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8F41ECAEFC80058DF07 /* LayoutAdapter.swift */; }; + F6A1A8F71ECAF0920058DF07 /* LayoutAdapterWithCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8F61ECAF0920058DF07 /* LayoutAdapterWithCache.swift */; }; + F6A1A8F91ECAF1040058DF07 /* BatchUpdatesArrayUpdate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8F81ECAF1040058DF07 /* BatchUpdatesArrayUpdate.swift */; }; + F6A1A8FB1ECAF1380058DF07 /* SafeArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8FA1ECAF1380058DF07 /* SafeArray.swift */; }; + F6A1A8FE1ECB07AF0058DF07 /* BatchUpdatesArrayUpdateTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8FC1ECB03B90058DF07 /* BatchUpdatesArrayUpdateTest.swift */; }; + F6A1A9021ECB09880058DF07 /* SafeArrayTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A9001ECB08FA0058DF07 /* SafeArrayTest.swift */; }; + F6A1A90E1ECB513B0058DF07 /* LayoutAdapterWithCacheTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A90C1ECB510E0058DF07 /* LayoutAdapterWithCacheTest.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -395,11 +402,18 @@ 448CEC0E1E4E0CB500F8AD9E /* TextViewDefaultFont.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextViewDefaultFont.swift; sourceTree = ""; }; 44F968141E425F5D00392763 /* TextViewLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextViewLayout.swift; sourceTree = ""; }; 44F968161E42639500392763 /* TextViewLayoutTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextViewLayoutTests.swift; sourceTree = ""; }; - AD2C36421EA5AF9500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift; sourceTree = ""; }; - ADE5FCBF1EA5B5C8006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewLayoutAdapterTableViewOverrideTests.swift; sourceTree = ""; }; 75D94A351EA01B6A00A5FD01 /* OverlayLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OverlayLayout.swift; sourceTree = ""; }; 75D94A3A1EA045F100A5FD01 /* OverlayLayoutTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OverlayLayoutTests.swift; sourceTree = ""; }; 75D94A3F1EA05D5A00A5FD01 /* OverlayViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OverlayViewController.swift; sourceTree = ""; }; + AD2C36421EA5AF9500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift; sourceTree = ""; }; + ADE5FCBF1EA5B5C8006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewLayoutAdapterTableViewOverrideTests.swift; sourceTree = ""; }; + F6A1A8F41ECAEFC80058DF07 /* LayoutAdapter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapter.swift; sourceTree = ""; }; + F6A1A8F61ECAF0920058DF07 /* LayoutAdapterWithCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapterWithCache.swift; sourceTree = ""; }; + F6A1A8F81ECAF1040058DF07 /* BatchUpdatesArrayUpdate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdatesArrayUpdate.swift; sourceTree = ""; }; + F6A1A8FA1ECAF1380058DF07 /* SafeArray.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SafeArray.swift; sourceTree = ""; }; + F6A1A8FC1ECB03B90058DF07 /* BatchUpdatesArrayUpdateTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdatesArrayUpdateTest.swift; sourceTree = ""; }; + F6A1A9001ECB08FA0058DF07 /* SafeArrayTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SafeArrayTest.swift; sourceTree = ""; }; + F6A1A90C1ECB510E0058DF07 /* LayoutAdapterWithCacheTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapterWithCacheTest.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -598,6 +612,9 @@ 44F968161E42639500392763 /* TextViewLayoutTests.swift */, 0BCB76671D8725310065E02A /* UIFontExtension.swift */, 0BCB76681D8725310065E02A /* ViewRecyclerTests.swift */, + F6A1A8FC1ECB03B90058DF07 /* BatchUpdatesArrayUpdateTest.swift */, + F6A1A9001ECB08FA0058DF07 /* SafeArrayTest.swift */, + F6A1A90C1ECB510E0058DF07 /* LayoutAdapterWithCacheTest.swift */, ); path = LayoutKitTests; sourceTree = ""; @@ -628,6 +645,7 @@ 0B765F2B1DC0514F000BF1FD /* CGFloatExtension.swift */, 4468A31C1E46460B00341D07 /* NSAttributedStringExtension.swift */, 448CEC0E1E4E0CB500F8AD9E /* TextViewDefaultFont.swift */, + F6A1A8FA1ECAF1380058DF07 /* SafeArray.swift */, ); path = Internal; sourceTree = ""; @@ -661,6 +679,7 @@ isa = PBXGroup; children = ( 0BCB75ED1D8724800065E02A /* BatchUpdates.swift */, + F6A1A8F81ECAF1040058DF07 /* BatchUpdatesArrayUpdate.swift */, 0BCB75EE1D8724800065E02A /* LayoutAdapterCollectionView.swift */, 0BCB75EF1D8724800065E02A /* LayoutAdapterTableView.swift */, 0BCB75F01D8724800065E02A /* ReloadableView.swift */, @@ -669,6 +688,8 @@ 0BCB75F31D8724800065E02A /* ReloadableViewLayoutAdapter.swift */, 0BCB75F41D8724800065E02A /* ReloadableViewUpdateManager.swift */, 0BCB75F51D8724800065E02A /* StackView.swift */, + F6A1A8F41ECAEFC80058DF07 /* LayoutAdapter.swift */, + F6A1A8F61ECAF0920058DF07 /* LayoutAdapterWithCache.swift */, ); path = Views; sourceTree = ""; @@ -1032,7 +1053,10 @@ 0BCB76051D8724800065E02A /* StackLayout.swift in Sources */, 0BCB760D1D8724800065E02A /* LayoutAdapterTableView.swift in Sources */, 0BCB76071D8724800065E02A /* AxisPoint.swift in Sources */, + F6A1A8F91ECAF1040058DF07 /* BatchUpdatesArrayUpdate.swift in Sources */, + F6A1A8FB1ECAF1380058DF07 /* SafeArray.swift in Sources */, 0BCB75F71D8724800065E02A /* Animation.swift in Sources */, + F6A1A8F51ECAEFC80058DF07 /* LayoutAdapter.swift in Sources */, 0BCB76081D8724800065E02A /* AxisSize.swift in Sources */, 0B193BB81D887BCF00FCA22D /* CollectionExtension.swift in Sources */, 4468A31D1E46460B00341D07 /* NSAttributedStringExtension.swift in Sources */, @@ -1042,6 +1066,7 @@ 0BCB76021D8724800065E02A /* InsetLayout.swift in Sources */, 0BCB76061D8724800065E02A /* AxisFlexibility.swift in Sources */, 448CEC0F1E4E0CB500F8AD9E /* TextViewDefaultFont.swift in Sources */, + F6A1A8F71ECAF0920058DF07 /* LayoutAdapterWithCache.swift in Sources */, 0BCB760E1D8724800065E02A /* ReloadableView.swift in Sources */, 75D94A361EA01B6A00A5FD01 /* OverlayLayout.swift in Sources */, 0BCB75FD1D8724800065E02A /* CGSizeExtension.swift in Sources */, @@ -1074,6 +1099,9 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + F6A1A90E1ECB513B0058DF07 /* LayoutAdapterWithCacheTest.swift in Sources */, + F6A1A9021ECB09880058DF07 /* SafeArrayTest.swift in Sources */, + F6A1A8FE1ECB07AF0058DF07 /* BatchUpdatesArrayUpdateTest.swift in Sources */, ADE5FCC11EA5B5F3006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift in Sources */, AD2C36441EA5AFB500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift in Sources */, 0B765F301DC135B8000BF1FD /* CGFloatExtensionTests.swift in Sources */, diff --git a/LayoutKit.xcodeproj/xcshareddata/xcschemes/ExampleLayouts-iOS.xcscheme b/LayoutKit.xcodeproj/xcshareddata/xcschemes/ExampleLayouts-iOS.xcscheme index afebc451..e00e09b5 100644 --- a/LayoutKit.xcodeproj/xcshareddata/xcschemes/ExampleLayouts-iOS.xcscheme +++ b/LayoutKit.xcodeproj/xcshareddata/xcschemes/ExampleLayouts-iOS.xcscheme @@ -26,7 +26,8 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES"> + shouldUseLaunchSchemeArgsEnv = "YES" + codeCoverageEnabled = "YES"> diff --git a/LayoutKitTests/BatchUpdatesArrayUpdateTest.swift b/LayoutKitTests/BatchUpdatesArrayUpdateTest.swift new file mode 100644 index 00000000..051b42ff --- /dev/null +++ b/LayoutKitTests/BatchUpdatesArrayUpdateTest.swift @@ -0,0 +1,176 @@ +import XCTest +@testable import LayoutKit + +class BatchUpdatesArrayUpdateTest: XCTestCase { + + // Delete item + + func test_SingleItem_Delete() { + let oldArray = BatchUpdatesViewModel(strings: [["test 1", "test 2"]]) + let expectedArray = BatchUpdatesViewModel(strings: [["test 1"]]) + let batchUpdates = BatchUpdates() + batchUpdates.deleteItems = [IndexPath(row: 1, section: 0)] + + performTest(oldArray: oldArray, expectedArray: expectedArray, batchUpdates: batchUpdates) + } + + func test_MultipleItems_Delete() { + let oldArray = BatchUpdatesViewModel(strings: [["test 1", "test 2", "test 3", "test 4"]]) + let expectedArray = BatchUpdatesViewModel(strings: [["test 1", "test 4"]]) + let batchUpdates = BatchUpdates() + batchUpdates.deleteItems = [IndexPath(row: 1, section: 0), IndexPath(row: 2, section: 0)] + + performTest(oldArray: oldArray, expectedArray: expectedArray, batchUpdates: batchUpdates) + } + + func test_MultipleItems_MultipleSections_Delete() { + let oldArray = BatchUpdatesViewModel(strings: [["test 1", "test 2", "test 3", "test 4"], ["test 5", "test 6"]]) + let expectedArray = BatchUpdatesViewModel(strings: [["test 1", "test 4"], []]) + let batchUpdates = BatchUpdates() + batchUpdates.deleteItems = [IndexPath(row: 1, section: 0), IndexPath(row: 2, section: 0), IndexPath(row: 0, section: 1), IndexPath(row: 1, section: 1)] + + performTest(oldArray: oldArray, expectedArray: expectedArray, batchUpdates: batchUpdates) + } + + // Delete section + + func test_SingleSection_Delete() { + let oldArray = BatchUpdatesViewModel(strings: [["test 1", "test 2"]]) + let expectedArray = BatchUpdatesViewModel(strings: []) + let batchUpdates = BatchUpdates() + batchUpdates.deleteSections = [0] + + performTest(oldArray: oldArray, expectedArray: expectedArray, batchUpdates: batchUpdates) + } + + func test_SingleSection_DeleteSecond() { + let oldArray = BatchUpdatesViewModel(strings: [["test 1", "test 2"], ["test 3", "test 4"]]) + let expectedArray = BatchUpdatesViewModel(strings: [["test 1", "test 2"]]) + let batchUpdates = BatchUpdates() + batchUpdates.deleteSections = [1] + + performTest(oldArray: oldArray, expectedArray: expectedArray, batchUpdates: batchUpdates) + } + + func test_MultipleSection_Delete() { + let oldArray = BatchUpdatesViewModel(strings: [["test 1", "test 2"], ["test 3", "test 4"], ["test 5", "test 6"]]) + let expectedArray = BatchUpdatesViewModel(strings: [["test 3", "test 4"]]) + let batchUpdates = BatchUpdates() + batchUpdates.deleteSections = [0, 2] + + performTest(oldArray: oldArray, expectedArray: expectedArray, batchUpdates: batchUpdates) + } + + // Insert item + + func test_SingleItem_Insert() { + let oldArray = BatchUpdatesViewModel(strings: [["test 1"]]) + let expectedArray = BatchUpdatesViewModel(strings: [["test 1", "row: 1 section: 0"]]) + let batchUpdates = BatchUpdates() + batchUpdates.insertItems = [IndexPath(row: 1, section: 0)] + + performTest(oldArray: oldArray, expectedArray: expectedArray, batchUpdates: batchUpdates) + } + + func test_MultipleItem_Insert() { + let oldArray = BatchUpdatesViewModel(strings: [["test 1"], ["test 2"]]) + let expectedArray = BatchUpdatesViewModel(strings: [["row: 0 section: 0", "test 1", "row: 2 section: 0"], + ["row: 0 section: 1", "row: 1 section: 1", "test 2"]]) + let batchUpdates = BatchUpdates() + batchUpdates.insertItems = [IndexPath(row: 0, section: 0), IndexPath(row: 2, section: 0), IndexPath(row: 0, section: 1), IndexPath(row: 1, section: 1)] + + performTest(oldArray: oldArray, expectedArray: expectedArray, batchUpdates: batchUpdates) + } + + func test_SingleItem_Insert_SectionDoesNotExist() { + let oldArray = BatchUpdatesViewModel(strings: [[]]) + let expectedArray = BatchUpdatesViewModel(strings: [["row: 0 section: 0"]]) + let batchUpdates = BatchUpdates() + batchUpdates.insertItems = [IndexPath(row: 0, section: 0)] + + performTest(oldArray: oldArray, expectedArray: expectedArray, batchUpdates: batchUpdates) + } + + // Insert section + + func test_SingleSection_Insert() { + let oldArray = BatchUpdatesViewModel(strings: []) + let expectedArray = BatchUpdatesViewModel(strings: [[]]) + let batchUpdates = BatchUpdates() + batchUpdates.insertSections = [0] + + performTest(oldArray: oldArray, expectedArray: expectedArray, batchUpdates: batchUpdates) + } + + func test_MultipleSection_Insert() { + let oldArray = BatchUpdatesViewModel(strings: []) + let expectedArray = BatchUpdatesViewModel(strings: [[], [], []]) + let batchUpdates = BatchUpdates() + batchUpdates.insertSections = [0, 1, 2] + + performTest(oldArray: oldArray, expectedArray: expectedArray, batchUpdates: batchUpdates) + } + + // Item reload + + func test_SingleItem_Reload() { + let oldArray = BatchUpdatesViewModel(strings: [["test 1"]]) + let expectedArray = BatchUpdatesViewModel(strings: [["row: 0 section: 0"]]) + let batchUpdates = BatchUpdates() + batchUpdates.reloadItems = [IndexPath(row: 0, section: 0)] + + performTest(oldArray: oldArray, expectedArray: expectedArray, batchUpdates: batchUpdates) + } + + func test_MultipleItems_Reload() { + let oldArray = BatchUpdatesViewModel(strings: [["test 1"], ["test 2", "test 3"]]) + let expectedArray = BatchUpdatesViewModel(strings: [["row: 0 section: 0"], ["test 2", "row: 1 section: 1"]]) + let batchUpdates = BatchUpdates() + batchUpdates.reloadItems = [IndexPath(row: 0, section: 0), IndexPath(row: 1, section: 1)] + + performTest(oldArray: oldArray, expectedArray: expectedArray, batchUpdates: batchUpdates) + } + + // Section reload + + func test_SingleSection_Reload() { + let oldArray = BatchUpdatesViewModel(strings: [["test 1"]]) + let expectedArray = BatchUpdatesViewModel(strings: [["row: 0 section: 0"]]) + let batchUpdates = BatchUpdates() + batchUpdates.reloadSections = [0] + + performTest(oldArray: oldArray, expectedArray: expectedArray, batchUpdates: batchUpdates) + } + + // Helpers + + func performTest(oldArray: BatchUpdatesViewModel, expectedArray: BatchUpdatesViewModel, batchUpdates: BatchUpdates) { + if let newArray = try? batchUpdates.updateArray(oldArray.strings, elementCreationCallback: { indexPath in + return "row: \(indexPath.row) section: \(indexPath.section)" + }) { + XCTAssert(BatchUpdatesViewModel(strings: newArray) == expectedArray) + } else { + XCTAssertTrue(false) + } + } +} + +struct BatchUpdatesViewModel { + let strings: [[String]] +} + +extension BatchUpdatesViewModel: Equatable {} + +func == (lhs: BatchUpdatesViewModel, rhs: BatchUpdatesViewModel) -> Bool { + guard lhs.strings.count == rhs.strings.count else { return false } + + for i in 0..( + width: CGFloat?, + height: CGFloat?, + synchronous: Bool, + batchUpdates: BatchUpdates?, + layoutProvider: @escaping (Void) -> T, + completion: (() -> Void)?) where U.Iterator.Element == Layout, T.Iterator.Element == Section { + reloadLayouts.append(layoutProvider()) + } +} + +class MockSizeLayout: SizeLayout { + let indexPath: IndexPath + + init(indexPath: IndexPath) { + self.indexPath = indexPath + } +} + +extension MockSizeLayout: Equatable {} + +func == (lhs: MockSizeLayout, rhs: MockSizeLayout) -> Bool { + return lhs.indexPath == rhs.indexPath +} diff --git a/LayoutKitTests/SafeArrayTest.swift b/LayoutKitTests/SafeArrayTest.swift new file mode 100644 index 00000000..d81e0c9a --- /dev/null +++ b/LayoutKitTests/SafeArrayTest.swift @@ -0,0 +1,84 @@ +import XCTest +@testable import LayoutKit + +class SafeArrayTest: XCTestCase { + func testRemove_Successful() { + var array = [1, 2, 3] + + array.remove(safeAt: 1) + + XCTAssert(array == [1, 3]) + } + + func testRemove_Failure() { + var array = [1, 2, 3] + + array.remove(safeAt: 3) + + XCTAssert(array == [1, 2, 3]) + } + + func testInsert_Successful() { + var array = [1, 2, 3] + + array.insert(4, safeAt: 1) + + XCTAssert(array == [1, 4, 2, 3]) + } + + func testInsert_Successful_AtEnd() { + var array = [1, 2, 3] + + array.insert(4, safeAt: 3) + + XCTAssert(array == [1, 2, 3, 4]) + } + + func testInsert_Failure() { + var array = [1, 2, 3] + + array.insert(4, safeAt: 5) + + XCTAssert(array == [1, 2, 3]) + } + + func testGet_Successful() { + var array = [1, 2, 3] + + let element = array[safe: 1] + + XCTAssert(element == 2) + } + + func testGet_Failure() { + var array = [1, 2, 3] + + let element = array[safe: 4] + + XCTAssert(element == nil) + } + + func testSet_Successful() { + var array = [1, 2, 3] + + array[safe: 1] = 4 + + XCTAssert(array == [1, 4, 3]) + } + + func testSet_Successful_AtEnd() { + var array = [1, 2, 3] + + array[safe: 3] = 4 + + XCTAssert(array == [1, 2, 3, 4]) + } + + func testSet_Failure() { + var array = [1, 2, 3] + + array[safe: 4] = 4 + + XCTAssert(array == [1, 2, 3]) + } +} diff --git a/Sources/Internal/SafeArray.swift b/Sources/Internal/SafeArray.swift new file mode 100644 index 00000000..a1dc4dba --- /dev/null +++ b/Sources/Internal/SafeArray.swift @@ -0,0 +1,49 @@ +/** + Safe array get, set, insert and delete. + All action that would cause an error are ignored. + */ +extension Array { + + /** + Removes element at index. + Action that would cause an error are ignored. + */ + mutating func remove(safeAt index: Index) { + guard index >= 0 && index < count else { + print("Index out of bounds while deleting item at index \(index) in \(self). This action is ignored.") + return + } + + remove(at: index) + } + + /** + Inserts element at index. + Action that would cause an error are ignored. + */ + mutating func insert(_ element: Element, safeAt index: Index) { + guard index >= 0 && index <= count else { + print("Index out of bounds while inserting item at index \(index) in \(self). This action is ignored") + return + } + + insert(element, at: index) + } + + /** + Safe get set subscript. + Action that would cause an error are ignored. + */ + subscript (safe index: Index) -> Element? { + get { + return indices.contains(index) ? self[index] : nil + } + set { + remove(safeAt: index) + + if let element = newValue { + insert(element, safeAt: index) + } + } + } +} diff --git a/Sources/Views/BatchUpdatesArrayUpdate.swift b/Sources/Views/BatchUpdatesArrayUpdate.swift new file mode 100644 index 00000000..08ab527f --- /dev/null +++ b/Sources/Views/BatchUpdatesArrayUpdate.swift @@ -0,0 +1,70 @@ +extension BatchUpdates { + + /// Creates new array updated using BatchUpdates + /// + /// - Parameter array: array to be updated + /// - Parameter elementCreationCallback: callback for element creation + /// - Returns: updated array + func updateArray(_ array: [[T]], elementCreationCallback: (IndexPath) -> T) -> [[T]] { + var newArray = updateArraySections(array, elementCreationCallback: elementCreationCallback) + + newArray = updateArrayItems(newArray, elementCreationCallback: elementCreationCallback) + + return newArray + } + + /// Creates new array with updated sections using BatchUpdates + func updateArraySections(_ array: [[T]], elementCreationCallback: (IndexPath) -> T) -> [[T]] { + var newArray = array + + for deletedSection in deleteSections.sorted(by: { $0 > $1 }) { + newArray.remove(safeAt: deletedSection) + } + + for insertSection in insertSections.sorted(by: { $0 < $1 }) { + newArray.insert([], safeAt: insertSection) + } + + for reloadSection in reloadSections { + if let element = newArray[safe: reloadSection] { + newArray[safe: reloadSection] = [] + + // Reloads all elements in reloaded section + for i in 0..(_ array: [[T]], elementCreationCallback: (IndexPath) -> T) -> [[T]] { + var newArray = array + + for deleteItem in deleteItems.sorted(by: { lhs, rhs in + lhs.row > rhs.row + }) { + newArray[safe: deleteItem.section]?.remove(safeAt: deleteItem.row) + } + + // Create new sections if needed + for insertItem in insertItems where (insertItem.section < 0 || insertItem.section >= newArray.count) { + newArray.insert([], safeAt: insertItem.section) + } + + for insertItem in insertItems.sorted(by: { lhs, rhs in + lhs.row < rhs.row + }) { + newArray[safe: insertItem.section]?.insert(elementCreationCallback(insertItem), safeAt: insertItem.row) + } + + for reloadItem in reloadItems { + newArray[safe: reloadItem.section]?[safe: reloadItem.row] = elementCreationCallback(reloadItem) + } + + return newArray + } +} diff --git a/Sources/Views/LayoutAdapter.swift b/Sources/Views/LayoutAdapter.swift new file mode 100644 index 00000000..74eb83e2 --- /dev/null +++ b/Sources/Views/LayoutAdapter.swift @@ -0,0 +1,13 @@ +import UIKit + +public protocol LayoutAdapter { + func reload( + width: CGFloat?, + height: CGFloat?, + synchronous: Bool, + batchUpdates: BatchUpdates?, + layoutProvider: @escaping (Void) -> T, + completion: (() -> Void)?) where U.Iterator.Element == Layout, T.Iterator.Element == Section +} + +extension ReloadableViewLayoutAdapter: LayoutAdapter {} diff --git a/Sources/Views/LayoutAdapterWithCache.swift b/Sources/Views/LayoutAdapterWithCache.swift new file mode 100644 index 00000000..bee64577 --- /dev/null +++ b/Sources/Views/LayoutAdapterWithCache.swift @@ -0,0 +1,52 @@ +public class LayoutAdapterCacheHandler { + var layouts = [Section<[Layout]>]() + let layoutAdapter: LayoutAdapter + + public init(layoutAdapter: LayoutAdapter) { + self.layoutAdapter = layoutAdapter + } + + /// Reloads reloadableView calculating only needed layouts + public func reload( + batchUpdates: BatchUpdates, + layoutProvider: @escaping (IndexPath) -> Layout, + sectionProvider: @escaping (Int, [Layout]) -> Section<[Layout]> = LayoutAdapterCacheHandler.defaultSectionProvider, + animated: Bool = true, + completion: (() -> Void)? = nil) { + + layoutAdapter.reload( + width: nil, + height: nil, + synchronous: false, + batchUpdates: animated ? batchUpdates : nil, + layoutProvider: { + self.cachedLayout( + batchUpdates: batchUpdates, + layoutProvider: layoutProvider, + sectionProvider: sectionProvider + ) + }, + completion: completion + ) + } + + /// Updates layouts that have changed using batchUpdates + func cachedLayout( + batchUpdates: BatchUpdates, + layoutProvider: @escaping (IndexPath) -> Layout, + sectionProvider: (Int, [Layout]) -> Section<[Layout]> = LayoutAdapterCacheHandler.defaultSectionProvider) -> [Section<[Layout]>] { + + let elements = batchUpdates + .updateArray(layouts.map { $0.items }, elementCreationCallback: layoutProvider) + + layouts = elements + .enumerated() + .map { sectionProvider($0.offset, $0.element) } + + return layouts + } + + static func defaultSectionProvider(index: Int, layouts: [Layout]) -> Section<[Layout]> { + return Section(items: layouts) + } +} From f287af2e9b802f025217c419932e2fcc675e3485 Mon Sep 17 00:00:00 2001 From: Ivan Rep Date: Tue, 16 May 2017 18:37:02 +0200 Subject: [PATCH 2/3] LayoutAdapter with cached layouts --- LayoutKit.xcodeproj/project.pbxproj | 20 +- LayoutKit.xcodeproj/project.pbxproj.orig | 2362 +++++++++++++++++ .../BatchUpdatesFromArrayDifferenceTest.swift | 186 ++ .../BatchUpdatesFromArrayDifference.swift | 57 + Sources/Views/LayoutAdapterCacheHandler.swift | 52 + ...youtAdapterWithAutomaticBatchUpdates.swift | 33 + 6 files changed, 2706 insertions(+), 4 deletions(-) create mode 100644 LayoutKit.xcodeproj/project.pbxproj.orig create mode 100644 LayoutKitTests/BatchUpdatesFromArrayDifferenceTest.swift create mode 100644 Sources/Views/BatchUpdatesFromArrayDifference.swift create mode 100644 Sources/Views/LayoutAdapterCacheHandler.swift create mode 100644 Sources/Views/LayoutAdapterWithAutomaticBatchUpdates.swift diff --git a/LayoutKit.xcodeproj/project.pbxproj b/LayoutKit.xcodeproj/project.pbxproj index 4b3dab17..cd8bacb1 100644 --- a/LayoutKit.xcodeproj/project.pbxproj +++ b/LayoutKit.xcodeproj/project.pbxproj @@ -219,12 +219,15 @@ AD2C36441EA5AFB500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD2C36421EA5AF9500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift */; }; ADE5FCC11EA5B5F3006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADE5FCBF1EA5B5C8006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift */; }; F6A1A8F51ECAEFC80058DF07 /* LayoutAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8F41ECAEFC80058DF07 /* LayoutAdapter.swift */; }; - F6A1A8F71ECAF0920058DF07 /* LayoutAdapterWithCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8F61ECAF0920058DF07 /* LayoutAdapterWithCache.swift */; }; + F6A1A8F71ECAF0920058DF07 /* LayoutAdapterCacheHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8F61ECAF0920058DF07 /* LayoutAdapterCacheHandler.swift */; }; F6A1A8F91ECAF1040058DF07 /* BatchUpdatesArrayUpdate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8F81ECAF1040058DF07 /* BatchUpdatesArrayUpdate.swift */; }; F6A1A8FB1ECAF1380058DF07 /* SafeArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8FA1ECAF1380058DF07 /* SafeArray.swift */; }; F6A1A8FE1ECB07AF0058DF07 /* BatchUpdatesArrayUpdateTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8FC1ECB03B90058DF07 /* BatchUpdatesArrayUpdateTest.swift */; }; F6A1A9021ECB09880058DF07 /* SafeArrayTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A9001ECB08FA0058DF07 /* SafeArrayTest.swift */; }; F6A1A90E1ECB513B0058DF07 /* LayoutAdapterWithCacheTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A90C1ECB510E0058DF07 /* LayoutAdapterWithCacheTest.swift */; }; + F6A1A9101ECB661F0058DF07 /* LayoutAdapterWithAutomaticBatchUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A90F1ECB661F0058DF07 /* LayoutAdapterWithAutomaticBatchUpdates.swift */; }; + F6A1A9121ECB66500058DF07 /* BatchUpdatesFromArrayDifference.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A9111ECB66500058DF07 /* BatchUpdatesFromArrayDifference.swift */; }; + F6A1A9151ECB66C00058DF07 /* BatchUpdatesFromArrayDifferenceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A9131ECB66AD0058DF07 /* BatchUpdatesFromArrayDifferenceTest.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -408,12 +411,15 @@ AD2C36421EA5AF9500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift; sourceTree = ""; }; ADE5FCBF1EA5B5C8006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewLayoutAdapterTableViewOverrideTests.swift; sourceTree = ""; }; F6A1A8F41ECAEFC80058DF07 /* LayoutAdapter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapter.swift; sourceTree = ""; }; - F6A1A8F61ECAF0920058DF07 /* LayoutAdapterWithCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapterWithCache.swift; sourceTree = ""; }; + F6A1A8F61ECAF0920058DF07 /* LayoutAdapterCacheHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapterCacheHandler.swift; sourceTree = ""; }; F6A1A8F81ECAF1040058DF07 /* BatchUpdatesArrayUpdate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdatesArrayUpdate.swift; sourceTree = ""; }; F6A1A8FA1ECAF1380058DF07 /* SafeArray.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SafeArray.swift; sourceTree = ""; }; F6A1A8FC1ECB03B90058DF07 /* BatchUpdatesArrayUpdateTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdatesArrayUpdateTest.swift; sourceTree = ""; }; F6A1A9001ECB08FA0058DF07 /* SafeArrayTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SafeArrayTest.swift; sourceTree = ""; }; F6A1A90C1ECB510E0058DF07 /* LayoutAdapterWithCacheTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapterWithCacheTest.swift; sourceTree = ""; }; + F6A1A90F1ECB661F0058DF07 /* LayoutAdapterWithAutomaticBatchUpdates.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapterWithAutomaticBatchUpdates.swift; sourceTree = ""; }; + F6A1A9111ECB66500058DF07 /* BatchUpdatesFromArrayDifference.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdatesFromArrayDifference.swift; sourceTree = ""; }; + F6A1A9131ECB66AD0058DF07 /* BatchUpdatesFromArrayDifferenceTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdatesFromArrayDifferenceTest.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -615,6 +621,7 @@ F6A1A8FC1ECB03B90058DF07 /* BatchUpdatesArrayUpdateTest.swift */, F6A1A9001ECB08FA0058DF07 /* SafeArrayTest.swift */, F6A1A90C1ECB510E0058DF07 /* LayoutAdapterWithCacheTest.swift */, + F6A1A9131ECB66AD0058DF07 /* BatchUpdatesFromArrayDifferenceTest.swift */, ); path = LayoutKitTests; sourceTree = ""; @@ -680,6 +687,7 @@ children = ( 0BCB75ED1D8724800065E02A /* BatchUpdates.swift */, F6A1A8F81ECAF1040058DF07 /* BatchUpdatesArrayUpdate.swift */, + F6A1A9111ECB66500058DF07 /* BatchUpdatesFromArrayDifference.swift */, 0BCB75EE1D8724800065E02A /* LayoutAdapterCollectionView.swift */, 0BCB75EF1D8724800065E02A /* LayoutAdapterTableView.swift */, 0BCB75F01D8724800065E02A /* ReloadableView.swift */, @@ -689,7 +697,8 @@ 0BCB75F41D8724800065E02A /* ReloadableViewUpdateManager.swift */, 0BCB75F51D8724800065E02A /* StackView.swift */, F6A1A8F41ECAEFC80058DF07 /* LayoutAdapter.swift */, - F6A1A8F61ECAF0920058DF07 /* LayoutAdapterWithCache.swift */, + F6A1A8F61ECAF0920058DF07 /* LayoutAdapterCacheHandler.swift */, + F6A1A90F1ECB661F0058DF07 /* LayoutAdapterWithAutomaticBatchUpdates.swift */, ); path = Views; sourceTree = ""; @@ -1064,11 +1073,13 @@ 0BD5F8291DB43B4500108688 /* ButtonLayout.swift in Sources */, 0BCB76001D8724800065E02A /* LayoutMeasurement.swift in Sources */, 0BCB76021D8724800065E02A /* InsetLayout.swift in Sources */, + F6A1A9121ECB66500058DF07 /* BatchUpdatesFromArrayDifference.swift in Sources */, 0BCB76061D8724800065E02A /* AxisFlexibility.swift in Sources */, 448CEC0F1E4E0CB500F8AD9E /* TextViewDefaultFont.swift in Sources */, - F6A1A8F71ECAF0920058DF07 /* LayoutAdapterWithCache.swift in Sources */, + F6A1A8F71ECAF0920058DF07 /* LayoutAdapterCacheHandler.swift in Sources */, 0BCB760E1D8724800065E02A /* ReloadableView.swift in Sources */, 75D94A361EA01B6A00A5FD01 /* OverlayLayout.swift in Sources */, + F6A1A9101ECB661F0058DF07 /* LayoutAdapterWithAutomaticBatchUpdates.swift in Sources */, 0BCB75FD1D8724800065E02A /* CGSizeExtension.swift in Sources */, 0BCB760B1D8724800065E02A /* BatchUpdates.swift in Sources */, 0BCB76011D8724800065E02A /* BaseLayout.swift in Sources */, @@ -1099,6 +1110,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + F6A1A9151ECB66C00058DF07 /* BatchUpdatesFromArrayDifferenceTest.swift in Sources */, F6A1A90E1ECB513B0058DF07 /* LayoutAdapterWithCacheTest.swift in Sources */, F6A1A9021ECB09880058DF07 /* SafeArrayTest.swift in Sources */, F6A1A8FE1ECB07AF0058DF07 /* BatchUpdatesArrayUpdateTest.swift in Sources */, diff --git a/LayoutKit.xcodeproj/project.pbxproj.orig b/LayoutKit.xcodeproj/project.pbxproj.orig new file mode 100644 index 00000000..8f0895f9 --- /dev/null +++ b/LayoutKit.xcodeproj/project.pbxproj.orig @@ -0,0 +1,2362 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 0B193BB81D887BCF00FCA22D /* CollectionExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B193BB61D887BCF00FCA22D /* CollectionExtension.swift */; }; + 0B193BB91D887BCF00FCA22D /* IndexSetExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B193BB71D887BCF00FCA22D /* IndexSetExtension.swift */; }; + 0B193BBA1D888B6300FCA22D /* IndexSetExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B193BB71D887BCF00FCA22D /* IndexSetExtension.swift */; }; + 0B193BBB1D888B6400FCA22D /* IndexSetExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B193BB71D887BCF00FCA22D /* IndexSetExtension.swift */; }; + 0B193BBC1D888B6D00FCA22D /* CollectionExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B193BB61D887BCF00FCA22D /* CollectionExtension.swift */; }; + 0B193BBD1D888B6D00FCA22D /* CollectionExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B193BB61D887BCF00FCA22D /* CollectionExtension.swift */; }; + 0B2D09231D872F75007E487C /* AlignmentTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76531D8725310065E02A /* AlignmentTests.swift */; }; + 0B2D09251D872F75007E487C /* CollectionViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76551D8725310065E02A /* CollectionViewTests.swift */; }; + 0B2D09261D872F75007E487C /* DensityAssertions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76561D8725310065E02A /* DensityAssertions.swift */; }; + 0B2D09271D872F75007E487C /* InsetLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76571D8725310065E02A /* InsetLayoutTests.swift */; }; + 0B2D09281D872F75007E487C /* LabelLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76581D8725310065E02A /* LabelLayoutTests.swift */; }; + 0B2D09291D872F75007E487C /* LayoutArrangementTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76591D8725310065E02A /* LayoutArrangementTests.swift */; }; + 0B2D092C1D872F75007E487C /* ReloadableViewLayoutAdapterCollectionViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB765C1D8725310065E02A /* ReloadableViewLayoutAdapterCollectionViewTests.swift */; }; + 0B2D092D1D872F75007E487C /* ReloadableViewLayoutAdapterTableViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB765D1D8725310065E02A /* ReloadableViewLayoutAdapterTableViewTests.swift */; }; + 0B2D092E1D872F75007E487C /* ReloadableViewLayoutAdapterTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB765E1D8725310065E02A /* ReloadableViewLayoutAdapterTestCase.swift */; }; + 0B2D092F1D872F75007E487C /* SizeLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB765F1D8725310065E02A /* SizeLayoutTests.swift */; }; + 0B2D09301D872F75007E487C /* StackLayoutDistributionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76601D8725310065E02A /* StackLayoutDistributionTests.swift */; }; + 0B2D09311D872F75007E487C /* StackLayoutFlexibilityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76611D8725310065E02A /* StackLayoutFlexibilityTests.swift */; }; + 0B2D09321D872F75007E487C /* StackLayoutSpacingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76621D8725310065E02A /* StackLayoutSpacingTests.swift */; }; + 0B2D09331D872F75007E487C /* StackLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76631D8725310065E02A /* StackLayoutTests.swift */; }; + 0B2D09341D872F75007E487C /* StackViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76641D8725310065E02A /* StackViewTests.swift */; }; + 0B2D09351D872F75007E487C /* TableViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76651D8725310065E02A /* TableViewTests.swift */; }; + 0B2D09361D872F75007E487C /* TestStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76661D8725310065E02A /* TestStack.swift */; }; + 0B2D09371D872F75007E487C /* UIFontExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76671D8725310065E02A /* UIFontExtension.swift */; }; + 0B2D09381D872F75007E487C /* ViewRecyclerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76681D8725310065E02A /* ViewRecyclerTests.swift */; }; + 0B2D09391D872F75007E487C /* AlignmentTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76531D8725310065E02A /* AlignmentTests.swift */; }; + 0B2D093B1D872F75007E487C /* CollectionViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76551D8725310065E02A /* CollectionViewTests.swift */; }; + 0B2D093C1D872F75007E487C /* DensityAssertions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76561D8725310065E02A /* DensityAssertions.swift */; }; + 0B2D093D1D872F75007E487C /* InsetLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76571D8725310065E02A /* InsetLayoutTests.swift */; }; + 0B2D093E1D872F75007E487C /* LabelLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76581D8725310065E02A /* LabelLayoutTests.swift */; }; + 0B2D093F1D872F75007E487C /* LayoutArrangementTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76591D8725310065E02A /* LayoutArrangementTests.swift */; }; + 0B2D09421D872F75007E487C /* ReloadableViewLayoutAdapterCollectionViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB765C1D8725310065E02A /* ReloadableViewLayoutAdapterCollectionViewTests.swift */; }; + 0B2D09431D872F75007E487C /* ReloadableViewLayoutAdapterTableViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB765D1D8725310065E02A /* ReloadableViewLayoutAdapterTableViewTests.swift */; }; + 0B2D09441D872F75007E487C /* ReloadableViewLayoutAdapterTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB765E1D8725310065E02A /* ReloadableViewLayoutAdapterTestCase.swift */; }; + 0B2D09451D872F75007E487C /* SizeLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB765F1D8725310065E02A /* SizeLayoutTests.swift */; }; + 0B2D09461D872F75007E487C /* StackLayoutDistributionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76601D8725310065E02A /* StackLayoutDistributionTests.swift */; }; + 0B2D09471D872F75007E487C /* StackLayoutFlexibilityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76611D8725310065E02A /* StackLayoutFlexibilityTests.swift */; }; + 0B2D09481D872F75007E487C /* StackLayoutSpacingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76621D8725310065E02A /* StackLayoutSpacingTests.swift */; }; + 0B2D09491D872F75007E487C /* StackLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76631D8725310065E02A /* StackLayoutTests.swift */; }; + 0B2D094A1D872F75007E487C /* StackViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76641D8725310065E02A /* StackViewTests.swift */; }; + 0B2D094B1D872F75007E487C /* TableViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76651D8725310065E02A /* TableViewTests.swift */; }; + 0B2D094C1D872F75007E487C /* TestStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76661D8725310065E02A /* TestStack.swift */; }; + 0B2D094D1D872F75007E487C /* UIFontExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76671D8725310065E02A /* UIFontExtension.swift */; }; + 0B2D094E1D872F75007E487C /* ViewRecyclerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76681D8725310065E02A /* ViewRecyclerTests.swift */; }; + 0B2D094F1D872F76007E487C /* AlignmentTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76531D8725310065E02A /* AlignmentTests.swift */; }; + 0B2D09521D872F76007E487C /* DensityAssertions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76561D8725310065E02A /* DensityAssertions.swift */; }; + 0B2D09531D872F76007E487C /* InsetLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76571D8725310065E02A /* InsetLayoutTests.swift */; }; + 0B2D095B1D872F76007E487C /* SizeLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB765F1D8725310065E02A /* SizeLayoutTests.swift */; }; + 0B2D095C1D872F76007E487C /* StackLayoutDistributionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76601D8725310065E02A /* StackLayoutDistributionTests.swift */; }; + 0B2D095D1D872F76007E487C /* StackLayoutFlexibilityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76611D8725310065E02A /* StackLayoutFlexibilityTests.swift */; }; + 0B2D095E1D872F76007E487C /* StackLayoutSpacingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76621D8725310065E02A /* StackLayoutSpacingTests.swift */; }; + 0B2D095F1D872F76007E487C /* StackLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76631D8725310065E02A /* StackLayoutTests.swift */; }; + 0B2D09621D872F76007E487C /* TestStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76661D8725310065E02A /* TestStack.swift */; }; + 0B2D09641D872F76007E487C /* ViewRecyclerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76681D8725310065E02A /* ViewRecyclerTests.swift */; }; + 0B2D096E1D8734DB007E487C /* CircleImagePileLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09651D8734DB007E487C /* CircleImagePileLayout.swift */; }; + 0B2D096F1D8734DB007E487C /* DividerStackLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09661D8734DB007E487C /* DividerStackLayout.swift */; }; + 0B2D09701D8734DB007E487C /* FeedItemLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09671D8734DB007E487C /* FeedItemLayout.swift */; }; + 0B2D09711D8734DB007E487C /* FixedWidthCellCollectionViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09681D8734DB007E487C /* FixedWidthCellCollectionViewLayout.swift */; }; + 0B2D09721D8734DB007E487C /* HelloWorldAutoLayoutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09691D8734DB007E487C /* HelloWorldAutoLayoutView.swift */; }; + 0B2D09731D8734DB007E487C /* HelloWorldLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D096A1D8734DB007E487C /* HelloWorldLayout.swift */; }; + 0B2D09741D8734DB007E487C /* MiniProfileLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D096B1D8734DB007E487C /* MiniProfileLayout.swift */; }; + 0B2D09751D8734DB007E487C /* ProfileCardLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D096C1D8734DB007E487C /* ProfileCardLayout.swift */; }; + 0B2D09761D8734DB007E487C /* SkillsCardLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D096D1D8734DB007E487C /* SkillsCardLayout.swift */; }; + 0B2D09E01D87365F007E487C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09C21D87365F007E487C /* AppDelegate.swift */; }; + 0B2D09E11D87365F007E487C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0B2D09C31D87365F007E487C /* Assets.xcassets */; }; + 0B2D09E21D87365F007E487C /* BackgroundMiniProfileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09C41D87365F007E487C /* BackgroundMiniProfileViewController.swift */; }; + 0B2D09E31D87365F007E487C /* BatchUpdatesBaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09C51D87365F007E487C /* BatchUpdatesBaseViewController.swift */; }; + 0B2D09E41D87365F007E487C /* BatchUpdatesCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09C61D87365F007E487C /* BatchUpdatesCollectionViewController.swift */; }; + 0B2D09E51D87365F007E487C /* BatchUpdatesTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09C71D87365F007E487C /* BatchUpdatesTableViewController.swift */; }; + 0B2D09E61D87365F007E487C /* BenchmarkViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09C91D87365F007E487C /* BenchmarkViewController.swift */; }; + 0B2D09E71D87365F007E487C /* CollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09CA1D87365F007E487C /* CollectionViewController.swift */; }; + 0B2D09E81D87365F007E487C /* DataBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09CB1D87365F007E487C /* DataBinder.swift */; }; + 0B2D09E91D87365F007E487C /* FeedItemAutoLayoutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09CC1D87365F007E487C /* FeedItemAutoLayoutView.swift */; }; + 0B2D09EA1D87365F007E487C /* FeedItemData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09CD1D87365F007E487C /* FeedItemData.swift */; }; + 0B2D09EB1D87365F007E487C /* FeedItemLayoutKitView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09CE1D87365F007E487C /* FeedItemLayoutKitView.swift */; }; + 0B2D09EC1D87365F007E487C /* FeedItemManualView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09CF1D87365F007E487C /* FeedItemManualView.swift */; }; + 0B2D09ED1D87365F007E487C /* FeedItemUIStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09D01D87365F007E487C /* FeedItemUIStackView.swift */; }; + 0B2D09EE1D87365F007E487C /* Stopwatch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09D11D87365F007E487C /* Stopwatch.swift */; }; + 0B2D09EF1D87365F007E487C /* TableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09D21D87365F007E487C /* TableViewController.swift */; }; + 0B2D09F01D87365F007E487C /* FeedBaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09D31D87365F007E487C /* FeedBaseViewController.swift */; }; + 0B2D09F11D87365F007E487C /* FeedCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09D41D87365F007E487C /* FeedCollectionViewController.swift */; }; + 0B2D09F21D87365F007E487C /* FeedScrollViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09D51D87365F007E487C /* FeedScrollViewController.swift */; }; + 0B2D09F31D87365F007E487C /* FeedTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09D61D87365F007E487C /* FeedTableViewController.swift */; }; + 0B2D09F41D87365F007E487C /* ForegroundProfileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09D71D87365F007E487C /* ForegroundProfileViewController.swift */; }; + 0B2D09F51D87365F007E487C /* LabledImageLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09D81D87365F007E487C /* LabledImageLayout.swift */; }; + 0B2D09F61D87365F007E487C /* MenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09D91D87365F007E487C /* MenuViewController.swift */; }; + 0B2D09F71D87365F007E487C /* NestedCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09DA1D87365F007E487C /* NestedCollectionViewController.swift */; }; + 0B2D09F81D87365F007E487C /* StackViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09DB1D87365F007E487C /* StackViewController.swift */; }; + 0B2D09F91D87365F007E487C /* UrlImageLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09DC1D87365F007E487C /* UrlImageLayout.swift */; }; + 0B2D09FC1D873726007E487C /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0B2D09FB1D873726007E487C /* LaunchScreen.xib */; }; + 0B6B04371DC8402E00F23EEA /* DWURecyclingAlert.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B6B04361DC8402E00F23EEA /* DWURecyclingAlert.m */; }; + 0B6B04381DC8470200F23EEA /* LayoutKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BCB755F1D8720110065E02A /* LayoutKit.framework */; }; + 0B6B04391DC8470200F23EEA /* LayoutKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0BCB755F1D8720110065E02A /* LayoutKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 0B6B043B1DC8472A00F23EEA /* ExampleLayouts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BCB75B61D8723B30065E02A /* ExampleLayouts.framework */; }; + 0B6B043C1DC8472A00F23EEA /* ExampleLayouts.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0BCB75B61D8723B30065E02A /* ExampleLayouts.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 0B765F2C1DC0514F000BF1FD /* CGFloatExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B765F2B1DC0514F000BF1FD /* CGFloatExtension.swift */; }; + 0B765F2D1DC0514F000BF1FD /* CGFloatExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B765F2B1DC0514F000BF1FD /* CGFloatExtension.swift */; }; + 0B765F301DC135B8000BF1FD /* CGFloatExtensionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B765F2F1DC135B8000BF1FD /* CGFloatExtensionTests.swift */; }; + 0B765F311DC135B8000BF1FD /* CGFloatExtensionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B765F2F1DC135B8000BF1FD /* CGFloatExtensionTests.swift */; }; + 0B8C078B1DC3E881001CD5EE /* ButtonLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BD5F8281DB43B4500108688 /* ButtonLayout.swift */; }; + 0B8C078C1DC3E88A001CD5EE /* ButtonLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BD5F82B1DB43F9B00108688 /* ButtonLayoutTests.swift */; }; + 0BA02E481D874BBB00F1E8D3 /* LayoutArrangementTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76591D8725310065E02A /* LayoutArrangementTests.swift */; }; + 0BB380DB1DB73EFF00E2614F /* TextExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BB380DA1DB73EFF00E2614F /* TextExtension.swift */; }; + 0BB380DC1DB73EFF00E2614F /* TextExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BB380DA1DB73EFF00E2614F /* TextExtension.swift */; }; + 0BCB75691D8720110065E02A /* LayoutKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BCB755F1D8720110065E02A /* LayoutKit.framework */; }; + 0BCB75701D8720110065E02A /* LayoutKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BCB75621D8720110065E02A /* LayoutKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0BCB75851D8721370065E02A /* LayoutKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BCB757C1D8721370065E02A /* LayoutKit.framework */; }; + 0BCB75A11D8722370065E02A /* LayoutKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BCB75981D8722370065E02A /* LayoutKit.framework */; }; + 0BCB75B01D8722BD0065E02A /* LayoutKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BCB75621D8720110065E02A /* LayoutKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0BCB75BA1D8723B30065E02A /* ExampleLayouts.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BCB75B81D8723B30065E02A /* ExampleLayouts.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0BCB75F61D8724800065E02A /* Alignment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D41D8724800065E02A /* Alignment.swift */; }; + 0BCB75F71D8724800065E02A /* Animation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D51D8724800065E02A /* Animation.swift */; }; + 0BCB75F91D8724800065E02A /* Axis.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D71D8724800065E02A /* Axis.swift */; }; + 0BCB75FA1D8724800065E02A /* ConfigurableLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D81D8724800065E02A /* ConfigurableLayout.swift */; }; + 0BCB75FB1D8724800065E02A /* Flexibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D91D8724800065E02A /* Flexibility.swift */; }; + 0BCB75FC1D8724800065E02A /* CFAbsoluteTimeExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DB1D8724800065E02A /* CFAbsoluteTimeExtension.swift */; }; + 0BCB75FD1D8724800065E02A /* CGSizeExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DC1D8724800065E02A /* CGSizeExtension.swift */; }; + 0BCB75FE1D8724800065E02A /* Layout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DD1D8724800065E02A /* Layout.swift */; }; + 0BCB75FF1D8724800065E02A /* LayoutArrangement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DE1D8724800065E02A /* LayoutArrangement.swift */; }; + 0BCB76001D8724800065E02A /* LayoutMeasurement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DF1D8724800065E02A /* LayoutMeasurement.swift */; }; + 0BCB76011D8724800065E02A /* BaseLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E11D8724800065E02A /* BaseLayout.swift */; }; + 0BCB76021D8724800065E02A /* InsetLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E21D8724800065E02A /* InsetLayout.swift */; }; + 0BCB76031D8724800065E02A /* LabelLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E31D8724800065E02A /* LabelLayout.swift */; }; + 0BCB76041D8724800065E02A /* SizeLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E41D8724800065E02A /* SizeLayout.swift */; }; + 0BCB76051D8724800065E02A /* StackLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E51D8724800065E02A /* StackLayout.swift */; }; + 0BCB76061D8724800065E02A /* AxisFlexibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E71D8724800065E02A /* AxisFlexibility.swift */; }; + 0BCB76071D8724800065E02A /* AxisPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E81D8724800065E02A /* AxisPoint.swift */; }; + 0BCB76081D8724800065E02A /* AxisSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E91D8724800065E02A /* AxisSize.swift */; }; + 0BCB76091D8724800065E02A /* UIKitSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EA1D8724800065E02A /* UIKitSupport.swift */; }; + 0BCB760A1D8724800065E02A /* ViewRecycler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EB1D8724800065E02A /* ViewRecycler.swift */; }; + 0BCB760B1D8724800065E02A /* BatchUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75ED1D8724800065E02A /* BatchUpdates.swift */; }; + 0BCB760C1D8724800065E02A /* LayoutAdapterCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EE1D8724800065E02A /* LayoutAdapterCollectionView.swift */; }; + 0BCB760D1D8724800065E02A /* LayoutAdapterTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EF1D8724800065E02A /* LayoutAdapterTableView.swift */; }; + 0BCB760E1D8724800065E02A /* ReloadableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F01D8724800065E02A /* ReloadableView.swift */; }; + 0BCB760F1D8724800065E02A /* ReloadableViewLayoutAdapter+UICollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F11D8724800065E02A /* ReloadableViewLayoutAdapter+UICollectionView.swift */; }; + 0BCB76101D8724800065E02A /* ReloadableViewLayoutAdapter+UITableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F21D8724800065E02A /* ReloadableViewLayoutAdapter+UITableView.swift */; }; + 0BCB76111D8724800065E02A /* ReloadableViewLayoutAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F31D8724800065E02A /* ReloadableViewLayoutAdapter.swift */; }; + 0BCB76121D8724800065E02A /* ReloadableViewUpdateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F41D8724800065E02A /* ReloadableViewUpdateManager.swift */; }; + 0BCB76131D8724800065E02A /* StackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F51D8724800065E02A /* StackView.swift */; }; + 0BCB76141D8724C00065E02A /* Alignment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D41D8724800065E02A /* Alignment.swift */; }; + 0BCB76151D8724C00065E02A /* Animation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D51D8724800065E02A /* Animation.swift */; }; + 0BCB76171D8724C00065E02A /* Axis.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D71D8724800065E02A /* Axis.swift */; }; + 0BCB76181D8724C00065E02A /* ConfigurableLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D81D8724800065E02A /* ConfigurableLayout.swift */; }; + 0BCB76191D8724C00065E02A /* Flexibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D91D8724800065E02A /* Flexibility.swift */; }; + 0BCB761A1D8724C10065E02A /* Alignment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D41D8724800065E02A /* Alignment.swift */; }; + 0BCB761B1D8724C10065E02A /* Animation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D51D8724800065E02A /* Animation.swift */; }; + 0BCB761C1D8724C10065E02A /* AppKitSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D61D8724800065E02A /* AppKitSupport.swift */; }; + 0BCB761D1D8724C10065E02A /* Axis.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D71D8724800065E02A /* Axis.swift */; }; + 0BCB761E1D8724C10065E02A /* ConfigurableLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D81D8724800065E02A /* ConfigurableLayout.swift */; }; + 0BCB761F1D8724C10065E02A /* Flexibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D91D8724800065E02A /* Flexibility.swift */; }; + 0BCB762B1D8724C70065E02A /* CFAbsoluteTimeExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DB1D8724800065E02A /* CFAbsoluteTimeExtension.swift */; }; + 0BCB762C1D8724C70065E02A /* CGSizeExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DC1D8724800065E02A /* CGSizeExtension.swift */; }; + 0BCB762D1D8724C70065E02A /* Layout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DD1D8724800065E02A /* Layout.swift */; }; + 0BCB762E1D8724C70065E02A /* LayoutArrangement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DE1D8724800065E02A /* LayoutArrangement.swift */; }; + 0BCB762F1D8724C70065E02A /* LayoutKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BCB75621D8720110065E02A /* LayoutKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0BCB76301D8724C70065E02A /* LayoutMeasurement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DF1D8724800065E02A /* LayoutMeasurement.swift */; }; + 0BCB76311D8724C70065E02A /* CFAbsoluteTimeExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DB1D8724800065E02A /* CFAbsoluteTimeExtension.swift */; }; + 0BCB76321D8724C70065E02A /* CGSizeExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DC1D8724800065E02A /* CGSizeExtension.swift */; }; + 0BCB76331D8724C70065E02A /* Layout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DD1D8724800065E02A /* Layout.swift */; }; + 0BCB76341D8724C70065E02A /* LayoutArrangement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DE1D8724800065E02A /* LayoutArrangement.swift */; }; + 0BCB76351D8724C70065E02A /* LayoutMeasurement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DF1D8724800065E02A /* LayoutMeasurement.swift */; }; + 0BCB76361D8724CA0065E02A /* BaseLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E11D8724800065E02A /* BaseLayout.swift */; }; + 0BCB76371D8724CA0065E02A /* InsetLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E21D8724800065E02A /* InsetLayout.swift */; }; + 0BCB76381D8724CA0065E02A /* LabelLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E31D8724800065E02A /* LabelLayout.swift */; }; + 0BCB76391D8724CA0065E02A /* SizeLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E41D8724800065E02A /* SizeLayout.swift */; }; + 0BCB763A1D8724CA0065E02A /* StackLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E51D8724800065E02A /* StackLayout.swift */; }; + 0BCB763B1D8724CB0065E02A /* BaseLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E11D8724800065E02A /* BaseLayout.swift */; }; + 0BCB763C1D8724CB0065E02A /* InsetLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E21D8724800065E02A /* InsetLayout.swift */; }; + 0BCB763E1D8724CB0065E02A /* SizeLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E41D8724800065E02A /* SizeLayout.swift */; }; + 0BCB763F1D8724CB0065E02A /* StackLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E51D8724800065E02A /* StackLayout.swift */; }; + 0BCB76401D8724CF0065E02A /* AxisFlexibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E71D8724800065E02A /* AxisFlexibility.swift */; }; + 0BCB76411D8724CF0065E02A /* AxisPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E81D8724800065E02A /* AxisPoint.swift */; }; + 0BCB76421D8724CF0065E02A /* AxisSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E91D8724800065E02A /* AxisSize.swift */; }; + 0BCB76431D8724CF0065E02A /* UIKitSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EA1D8724800065E02A /* UIKitSupport.swift */; }; + 0BCB76441D8724CF0065E02A /* ViewRecycler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EB1D8724800065E02A /* ViewRecycler.swift */; }; + 0BCB76451D8724D00065E02A /* AxisFlexibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E71D8724800065E02A /* AxisFlexibility.swift */; }; + 0BCB76461D8724D00065E02A /* AxisPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E81D8724800065E02A /* AxisPoint.swift */; }; + 0BCB76471D8724D00065E02A /* AxisSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E91D8724800065E02A /* AxisSize.swift */; }; + 0BCB76491D8724D00065E02A /* ViewRecycler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EB1D8724800065E02A /* ViewRecycler.swift */; }; + 0BCB764A1D8724E70065E02A /* BatchUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75ED1D8724800065E02A /* BatchUpdates.swift */; }; + 0BCB764B1D8724E70065E02A /* LayoutAdapterCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EE1D8724800065E02A /* LayoutAdapterCollectionView.swift */; }; + 0BCB764C1D8724E70065E02A /* LayoutAdapterTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EF1D8724800065E02A /* LayoutAdapterTableView.swift */; }; + 0BCB764D1D8724E70065E02A /* ReloadableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F01D8724800065E02A /* ReloadableView.swift */; }; + 0BCB764E1D8724E70065E02A /* ReloadableViewLayoutAdapter+UICollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F11D8724800065E02A /* ReloadableViewLayoutAdapter+UICollectionView.swift */; }; + 0BCB764F1D8724E70065E02A /* ReloadableViewLayoutAdapter+UITableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F21D8724800065E02A /* ReloadableViewLayoutAdapter+UITableView.swift */; }; + 0BCB76501D8724E70065E02A /* ReloadableViewLayoutAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F31D8724800065E02A /* ReloadableViewLayoutAdapter.swift */; }; + 0BCB76511D8724E70065E02A /* ReloadableViewUpdateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F41D8724800065E02A /* ReloadableViewUpdateManager.swift */; }; + 0BCB76521D8724E70065E02A /* StackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F51D8724800065E02A /* StackView.swift */; }; + 0BD42BDC1DB5EAAD00E04AA3 /* Text.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BD42BDB1DB5EAAD00E04AA3 /* Text.swift */; }; + 0BD42BDD1DB5EC8800E04AA3 /* Text.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BD42BDB1DB5EAAD00E04AA3 /* Text.swift */; }; + 0BD5F8291DB43B4500108688 /* ButtonLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BD5F8281DB43B4500108688 /* ButtonLayout.swift */; }; + 0BD5F82C1DB43F9B00108688 /* ButtonLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BD5F82B1DB43F9B00108688 /* ButtonLayoutTests.swift */; }; + 0BDDF95B1E25ACCE008B0A6F /* ReloadableViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BDDF95A1E25ACCE008B0A6F /* ReloadableViewTests.swift */; }; + 0BDDF95C1E25ACCE008B0A6F /* ReloadableViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BDDF95A1E25ACCE008B0A6F /* ReloadableViewTests.swift */; }; + 4468A31D1E46460B00341D07 /* NSAttributedStringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4468A31C1E46460B00341D07 /* NSAttributedStringExtension.swift */; }; + 4468A31E1E464A3900341D07 /* NSAttributedStringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4468A31C1E46460B00341D07 /* NSAttributedStringExtension.swift */; }; + 448CEC0F1E4E0CB500F8AD9E /* TextViewDefaultFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 448CEC0E1E4E0CB500F8AD9E /* TextViewDefaultFont.swift */; }; + 448CEC101E4E0CEE00F8AD9E /* TextViewDefaultFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 448CEC0E1E4E0CB500F8AD9E /* TextViewDefaultFont.swift */; }; + 44F968151E425F5D00392763 /* TextViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44F968141E425F5D00392763 /* TextViewLayout.swift */; }; + 44F968181E4263DC00392763 /* TextViewLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44F968161E42639500392763 /* TextViewLayoutTests.swift */; }; + 44F968191E4263DC00392763 /* TextViewLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44F968161E42639500392763 /* TextViewLayoutTests.swift */; }; + 44F9681A1E42640400392763 /* TextViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44F968141E425F5D00392763 /* TextViewLayout.swift */; }; + 75D94A361EA01B6A00A5FD01 /* OverlayLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A351EA01B6A00A5FD01 /* OverlayLayout.swift */; }; + 75D94A371EA01B7100A5FD01 /* OverlayLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A351EA01B6A00A5FD01 /* OverlayLayout.swift */; }; + 75D94A381EA01B7200A5FD01 /* OverlayLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A351EA01B6A00A5FD01 /* OverlayLayout.swift */; }; + 75D94A3B1EA045F100A5FD01 /* OverlayLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A3A1EA045F100A5FD01 /* OverlayLayoutTests.swift */; }; + 75D94A3C1EA045F100A5FD01 /* OverlayLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A3A1EA045F100A5FD01 /* OverlayLayoutTests.swift */; }; + 75D94A3D1EA045F100A5FD01 /* OverlayLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A3A1EA045F100A5FD01 /* OverlayLayoutTests.swift */; }; + 75D94A401EA05D5A00A5FD01 /* OverlayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A3F1EA05D5A00A5FD01 /* OverlayViewController.swift */; }; + AD2C36441EA5AFB500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD2C36421EA5AF9500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift */; }; + ADE5FCC11EA5B5F3006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADE5FCBF1EA5B5C8006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift */; }; + F6A1A8F51ECAEFC80058DF07 /* LayoutAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8F41ECAEFC80058DF07 /* LayoutAdapter.swift */; }; +<<<<<<< HEAD + F6A1A8F71ECAF0920058DF07 /* LayoutAdapterWithCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8F61ECAF0920058DF07 /* LayoutAdapterWithCache.swift */; }; +======= + F6A1A8F71ECAF0920058DF07 /* LayoutAdapterCacheHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8F61ECAF0920058DF07 /* LayoutAdapterCacheHandler.swift */; }; +>>>>>>> LayoutAdapter with cached layouts + F6A1A8F91ECAF1040058DF07 /* BatchUpdatesArrayUpdate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8F81ECAF1040058DF07 /* BatchUpdatesArrayUpdate.swift */; }; + F6A1A8FB1ECAF1380058DF07 /* SafeArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8FA1ECAF1380058DF07 /* SafeArray.swift */; }; + F6A1A8FE1ECB07AF0058DF07 /* BatchUpdatesArrayUpdateTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8FC1ECB03B90058DF07 /* BatchUpdatesArrayUpdateTest.swift */; }; + F6A1A9021ECB09880058DF07 /* SafeArrayTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A9001ECB08FA0058DF07 /* SafeArrayTest.swift */; }; + F6A1A90E1ECB513B0058DF07 /* LayoutAdapterWithCacheTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A90C1ECB510E0058DF07 /* LayoutAdapterWithCacheTest.swift */; }; +<<<<<<< HEAD +======= + F6A1A9101ECB661F0058DF07 /* LayoutAdapterWithAutomaticBatchUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A90F1ECB661F0058DF07 /* LayoutAdapterWithAutomaticBatchUpdates.swift */; }; + F6A1A9121ECB66500058DF07 /* BatchUpdatesFromArrayDifference.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A9111ECB66500058DF07 /* BatchUpdatesFromArrayDifference.swift */; }; + F6A1A9151ECB66C00058DF07 /* BatchUpdatesFromArrayDifferenceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A9131ECB66AD0058DF07 /* BatchUpdatesFromArrayDifferenceTest.swift */; }; +>>>>>>> LayoutAdapter with cached layouts +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 0B2D09FD1D873777007E487C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0BCB75541D871FC40065E02A /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0BCB755E1D8720110065E02A; + remoteInfo = "LayoutKit-iOS"; + }; + 0B2D09FF1D873777007E487C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0BCB75541D871FC40065E02A /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0BCB75B51D8723B30065E02A; + remoteInfo = "ExampleLayouts-iOS"; + }; + 0B2D0A011D87377F007E487C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0BCB75541D871FC40065E02A /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0BCB755E1D8720110065E02A; + remoteInfo = "LayoutKit-iOS"; + }; + 0BCB756A1D8720110065E02A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0BCB75541D871FC40065E02A /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0BCB755E1D8720110065E02A; + remoteInfo = "LayoutKit-iOS"; + }; + 0BCB75861D8721370065E02A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0BCB75541D871FC40065E02A /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0BCB757B1D8721370065E02A; + remoteInfo = "LayoutKit-tvOS"; + }; + 0BCB75A21D8722370065E02A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 0BCB75541D871FC40065E02A /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0BCB75971D8722370065E02A; + remoteInfo = "LayoutKit-macOS"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 0B6B043A1DC8470200F23EEA /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 0B6B043C1DC8472A00F23EEA /* ExampleLayouts.framework in Embed Frameworks */, + 0B6B04391DC8470200F23EEA /* LayoutKit.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 0B193BB61D887BCF00FCA22D /* CollectionExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionExtension.swift; sourceTree = ""; }; + 0B193BB71D887BCF00FCA22D /* IndexSetExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IndexSetExtension.swift; sourceTree = ""; }; + 0B2D09651D8734DB007E487C /* CircleImagePileLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CircleImagePileLayout.swift; sourceTree = ""; }; + 0B2D09661D8734DB007E487C /* DividerStackLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DividerStackLayout.swift; sourceTree = ""; }; + 0B2D09671D8734DB007E487C /* FeedItemLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedItemLayout.swift; sourceTree = ""; }; + 0B2D09681D8734DB007E487C /* FixedWidthCellCollectionViewLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FixedWidthCellCollectionViewLayout.swift; sourceTree = ""; }; + 0B2D09691D8734DB007E487C /* HelloWorldAutoLayoutView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HelloWorldAutoLayoutView.swift; sourceTree = ""; }; + 0B2D096A1D8734DB007E487C /* HelloWorldLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HelloWorldLayout.swift; sourceTree = ""; }; + 0B2D096B1D8734DB007E487C /* MiniProfileLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MiniProfileLayout.swift; sourceTree = ""; }; + 0B2D096C1D8734DB007E487C /* ProfileCardLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProfileCardLayout.swift; sourceTree = ""; }; + 0B2D096D1D8734DB007E487C /* SkillsCardLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SkillsCardLayout.swift; sourceTree = ""; }; + 0B2D09B01D8735E1007E487C /* LayoutKitSampleApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LayoutKitSampleApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 0B2D09BE1D8735E1007E487C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 0B2D09C21D87365F007E487C /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 0B2D09C31D87365F007E487C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 0B2D09C41D87365F007E487C /* BackgroundMiniProfileViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BackgroundMiniProfileViewController.swift; sourceTree = ""; }; + 0B2D09C51D87365F007E487C /* BatchUpdatesBaseViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdatesBaseViewController.swift; sourceTree = ""; }; + 0B2D09C61D87365F007E487C /* BatchUpdatesCollectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdatesCollectionViewController.swift; sourceTree = ""; }; + 0B2D09C71D87365F007E487C /* BatchUpdatesTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdatesTableViewController.swift; sourceTree = ""; }; + 0B2D09C91D87365F007E487C /* BenchmarkViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BenchmarkViewController.swift; sourceTree = ""; }; + 0B2D09CA1D87365F007E487C /* CollectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewController.swift; sourceTree = ""; }; + 0B2D09CB1D87365F007E487C /* DataBinder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataBinder.swift; sourceTree = ""; }; + 0B2D09CC1D87365F007E487C /* FeedItemAutoLayoutView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedItemAutoLayoutView.swift; sourceTree = ""; }; + 0B2D09CD1D87365F007E487C /* FeedItemData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedItemData.swift; sourceTree = ""; }; + 0B2D09CE1D87365F007E487C /* FeedItemLayoutKitView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedItemLayoutKitView.swift; sourceTree = ""; }; + 0B2D09CF1D87365F007E487C /* FeedItemManualView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedItemManualView.swift; sourceTree = ""; }; + 0B2D09D01D87365F007E487C /* FeedItemUIStackView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedItemUIStackView.swift; sourceTree = ""; }; + 0B2D09D11D87365F007E487C /* Stopwatch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Stopwatch.swift; sourceTree = ""; }; + 0B2D09D21D87365F007E487C /* TableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableViewController.swift; sourceTree = ""; }; + 0B2D09D31D87365F007E487C /* FeedBaseViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedBaseViewController.swift; sourceTree = ""; }; + 0B2D09D41D87365F007E487C /* FeedCollectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedCollectionViewController.swift; sourceTree = ""; }; + 0B2D09D51D87365F007E487C /* FeedScrollViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedScrollViewController.swift; sourceTree = ""; }; + 0B2D09D61D87365F007E487C /* FeedTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedTableViewController.swift; sourceTree = ""; }; + 0B2D09D71D87365F007E487C /* ForegroundProfileViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ForegroundProfileViewController.swift; sourceTree = ""; }; + 0B2D09D81D87365F007E487C /* LabledImageLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LabledImageLayout.swift; sourceTree = ""; }; + 0B2D09D91D87365F007E487C /* MenuViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuViewController.swift; sourceTree = ""; }; + 0B2D09DA1D87365F007E487C /* NestedCollectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NestedCollectionViewController.swift; sourceTree = ""; }; + 0B2D09DB1D87365F007E487C /* StackViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StackViewController.swift; sourceTree = ""; }; + 0B2D09DC1D87365F007E487C /* UrlImageLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UrlImageLayout.swift; sourceTree = ""; }; + 0B2D09FB1D873726007E487C /* LaunchScreen.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LaunchScreen.xib; sourceTree = ""; }; + 0B6B04361DC8402E00F23EEA /* DWURecyclingAlert.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DWURecyclingAlert.m; sourceTree = ""; }; + 0B765F2B1DC0514F000BF1FD /* CGFloatExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CGFloatExtension.swift; sourceTree = ""; }; + 0B765F2F1DC135B8000BF1FD /* CGFloatExtensionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CGFloatExtensionTests.swift; sourceTree = ""; }; + 0B7B269E1D919A9200CD1956 /* LayoutKit.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = LayoutKit.playground; sourceTree = ""; }; + 0BB380DA1DB73EFF00E2614F /* TextExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextExtension.swift; sourceTree = ""; }; + 0BCB755F1D8720110065E02A /* LayoutKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LayoutKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 0BCB75621D8720110065E02A /* LayoutKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LayoutKit.h; sourceTree = ""; }; + 0BCB75631D8720110065E02A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 0BCB75681D8720110065E02A /* LayoutKit-iOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "LayoutKit-iOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 0BCB756F1D8720110065E02A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 0BCB757C1D8721370065E02A /* LayoutKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LayoutKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 0BCB75841D8721370065E02A /* LayoutKit-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "LayoutKit-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 0BCB75981D8722370065E02A /* LayoutKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LayoutKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 0BCB75A01D8722370065E02A /* LayoutKit-macOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "LayoutKit-macOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 0BCB75B61D8723B30065E02A /* ExampleLayouts.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ExampleLayouts.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 0BCB75B81D8723B30065E02A /* ExampleLayouts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ExampleLayouts.h; sourceTree = ""; }; + 0BCB75B91D8723B30065E02A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 0BCB75D41D8724800065E02A /* Alignment.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Alignment.swift; sourceTree = ""; }; + 0BCB75D51D8724800065E02A /* Animation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Animation.swift; sourceTree = ""; }; + 0BCB75D61D8724800065E02A /* AppKitSupport.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppKitSupport.swift; sourceTree = ""; }; + 0BCB75D71D8724800065E02A /* Axis.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Axis.swift; sourceTree = ""; }; + 0BCB75D81D8724800065E02A /* ConfigurableLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConfigurableLayout.swift; sourceTree = ""; }; + 0BCB75D91D8724800065E02A /* Flexibility.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Flexibility.swift; sourceTree = ""; }; + 0BCB75DB1D8724800065E02A /* CFAbsoluteTimeExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CFAbsoluteTimeExtension.swift; sourceTree = ""; }; + 0BCB75DC1D8724800065E02A /* CGSizeExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CGSizeExtension.swift; sourceTree = ""; }; + 0BCB75DD1D8724800065E02A /* Layout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Layout.swift; sourceTree = ""; }; + 0BCB75DE1D8724800065E02A /* LayoutArrangement.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutArrangement.swift; sourceTree = ""; }; + 0BCB75DF1D8724800065E02A /* LayoutMeasurement.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutMeasurement.swift; sourceTree = ""; }; + 0BCB75E11D8724800065E02A /* BaseLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseLayout.swift; sourceTree = ""; }; + 0BCB75E21D8724800065E02A /* InsetLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InsetLayout.swift; sourceTree = ""; }; + 0BCB75E31D8724800065E02A /* LabelLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LabelLayout.swift; sourceTree = ""; }; + 0BCB75E41D8724800065E02A /* SizeLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SizeLayout.swift; sourceTree = ""; }; + 0BCB75E51D8724800065E02A /* StackLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StackLayout.swift; sourceTree = ""; }; + 0BCB75E71D8724800065E02A /* AxisFlexibility.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AxisFlexibility.swift; sourceTree = ""; }; + 0BCB75E81D8724800065E02A /* AxisPoint.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AxisPoint.swift; sourceTree = ""; }; + 0BCB75E91D8724800065E02A /* AxisSize.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AxisSize.swift; sourceTree = ""; }; + 0BCB75EA1D8724800065E02A /* UIKitSupport.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIKitSupport.swift; sourceTree = ""; }; + 0BCB75EB1D8724800065E02A /* ViewRecycler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewRecycler.swift; sourceTree = ""; }; + 0BCB75ED1D8724800065E02A /* BatchUpdates.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdates.swift; sourceTree = ""; }; + 0BCB75EE1D8724800065E02A /* LayoutAdapterCollectionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapterCollectionView.swift; sourceTree = ""; }; + 0BCB75EF1D8724800065E02A /* LayoutAdapterTableView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapterTableView.swift; sourceTree = ""; }; + 0BCB75F01D8724800065E02A /* ReloadableView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableView.swift; sourceTree = ""; }; + 0BCB75F11D8724800065E02A /* ReloadableViewLayoutAdapter+UICollectionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ReloadableViewLayoutAdapter+UICollectionView.swift"; sourceTree = ""; }; + 0BCB75F21D8724800065E02A /* ReloadableViewLayoutAdapter+UITableView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ReloadableViewLayoutAdapter+UITableView.swift"; sourceTree = ""; }; + 0BCB75F31D8724800065E02A /* ReloadableViewLayoutAdapter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewLayoutAdapter.swift; sourceTree = ""; }; + 0BCB75F41D8724800065E02A /* ReloadableViewUpdateManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewUpdateManager.swift; sourceTree = ""; }; + 0BCB75F51D8724800065E02A /* StackView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StackView.swift; sourceTree = ""; }; + 0BCB76531D8725310065E02A /* AlignmentTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AlignmentTests.swift; sourceTree = ""; }; + 0BCB76551D8725310065E02A /* CollectionViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewTests.swift; sourceTree = ""; }; + 0BCB76561D8725310065E02A /* DensityAssertions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DensityAssertions.swift; sourceTree = ""; }; + 0BCB76571D8725310065E02A /* InsetLayoutTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InsetLayoutTests.swift; sourceTree = ""; }; + 0BCB76581D8725310065E02A /* LabelLayoutTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LabelLayoutTests.swift; sourceTree = ""; }; + 0BCB76591D8725310065E02A /* LayoutArrangementTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutArrangementTests.swift; sourceTree = ""; }; + 0BCB765C1D8725310065E02A /* ReloadableViewLayoutAdapterCollectionViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewLayoutAdapterCollectionViewTests.swift; sourceTree = ""; }; + 0BCB765D1D8725310065E02A /* ReloadableViewLayoutAdapterTableViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewLayoutAdapterTableViewTests.swift; sourceTree = ""; }; + 0BCB765E1D8725310065E02A /* ReloadableViewLayoutAdapterTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewLayoutAdapterTestCase.swift; sourceTree = ""; }; + 0BCB765F1D8725310065E02A /* SizeLayoutTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SizeLayoutTests.swift; sourceTree = ""; }; + 0BCB76601D8725310065E02A /* StackLayoutDistributionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StackLayoutDistributionTests.swift; sourceTree = ""; }; + 0BCB76611D8725310065E02A /* StackLayoutFlexibilityTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StackLayoutFlexibilityTests.swift; sourceTree = ""; }; + 0BCB76621D8725310065E02A /* StackLayoutSpacingTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StackLayoutSpacingTests.swift; sourceTree = ""; }; + 0BCB76631D8725310065E02A /* StackLayoutTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StackLayoutTests.swift; sourceTree = ""; }; + 0BCB76641D8725310065E02A /* StackViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StackViewTests.swift; sourceTree = ""; }; + 0BCB76651D8725310065E02A /* TableViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableViewTests.swift; sourceTree = ""; }; + 0BCB76661D8725310065E02A /* TestStack.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestStack.swift; sourceTree = ""; }; + 0BCB76671D8725310065E02A /* UIFontExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIFontExtension.swift; sourceTree = ""; }; + 0BCB76681D8725310065E02A /* ViewRecyclerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewRecyclerTests.swift; sourceTree = ""; }; + 0BD42BDB1DB5EAAD00E04AA3 /* Text.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Text.swift; sourceTree = ""; }; + 0BD5F8281DB43B4500108688 /* ButtonLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ButtonLayout.swift; sourceTree = ""; }; + 0BD5F82B1DB43F9B00108688 /* ButtonLayoutTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ButtonLayoutTests.swift; sourceTree = ""; }; + 0BDDF95A1E25ACCE008B0A6F /* ReloadableViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewTests.swift; sourceTree = ""; }; + 4468A31C1E46460B00341D07 /* NSAttributedStringExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSAttributedStringExtension.swift; sourceTree = ""; }; + 448CEC0E1E4E0CB500F8AD9E /* TextViewDefaultFont.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextViewDefaultFont.swift; sourceTree = ""; }; + 44F968141E425F5D00392763 /* TextViewLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextViewLayout.swift; sourceTree = ""; }; + 44F968161E42639500392763 /* TextViewLayoutTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextViewLayoutTests.swift; sourceTree = ""; }; + 75D94A351EA01B6A00A5FD01 /* OverlayLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OverlayLayout.swift; sourceTree = ""; }; + 75D94A3A1EA045F100A5FD01 /* OverlayLayoutTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OverlayLayoutTests.swift; sourceTree = ""; }; + 75D94A3F1EA05D5A00A5FD01 /* OverlayViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OverlayViewController.swift; sourceTree = ""; }; + AD2C36421EA5AF9500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift; sourceTree = ""; }; + ADE5FCBF1EA5B5C8006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewLayoutAdapterTableViewOverrideTests.swift; sourceTree = ""; }; + F6A1A8F41ECAEFC80058DF07 /* LayoutAdapter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapter.swift; sourceTree = ""; }; +<<<<<<< HEAD + F6A1A8F61ECAF0920058DF07 /* LayoutAdapterWithCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapterWithCache.swift; sourceTree = ""; }; +======= + F6A1A8F61ECAF0920058DF07 /* LayoutAdapterCacheHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapterCacheHandler.swift; sourceTree = ""; }; +>>>>>>> LayoutAdapter with cached layouts + F6A1A8F81ECAF1040058DF07 /* BatchUpdatesArrayUpdate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdatesArrayUpdate.swift; sourceTree = ""; }; + F6A1A8FA1ECAF1380058DF07 /* SafeArray.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SafeArray.swift; sourceTree = ""; }; + F6A1A8FC1ECB03B90058DF07 /* BatchUpdatesArrayUpdateTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdatesArrayUpdateTest.swift; sourceTree = ""; }; + F6A1A9001ECB08FA0058DF07 /* SafeArrayTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SafeArrayTest.swift; sourceTree = ""; }; + F6A1A90C1ECB510E0058DF07 /* LayoutAdapterWithCacheTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapterWithCacheTest.swift; sourceTree = ""; }; +<<<<<<< HEAD +======= + F6A1A90F1ECB661F0058DF07 /* LayoutAdapterWithAutomaticBatchUpdates.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapterWithAutomaticBatchUpdates.swift; sourceTree = ""; }; + F6A1A9111ECB66500058DF07 /* BatchUpdatesFromArrayDifference.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdatesFromArrayDifference.swift; sourceTree = ""; }; + F6A1A9131ECB66AD0058DF07 /* BatchUpdatesFromArrayDifferenceTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdatesFromArrayDifferenceTest.swift; sourceTree = ""; }; +>>>>>>> LayoutAdapter with cached layouts +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 0B2D09AD1D8735E1007E487C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0B6B043B1DC8472A00F23EEA /* ExampleLayouts.framework in Frameworks */, + 0B6B04381DC8470200F23EEA /* LayoutKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB755B1D8720110065E02A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB75651D8720110065E02A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0BCB75691D8720110065E02A /* LayoutKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB75781D8721370065E02A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB75811D8721370065E02A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0BCB75851D8721370065E02A /* LayoutKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB75941D8722370065E02A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB759D1D8722370065E02A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 0BCB75A11D8722370065E02A /* LayoutKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB75B21D8723B30065E02A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0B2D09B11D8735E1007E487C /* LayoutKitSampleApp */ = { + isa = PBXGroup; + children = ( + 0B2D09C21D87365F007E487C /* AppDelegate.swift */, + 0B2D09C31D87365F007E487C /* Assets.xcassets */, + 0B2D09C41D87365F007E487C /* BackgroundMiniProfileViewController.swift */, + 0B2D09C51D87365F007E487C /* BatchUpdatesBaseViewController.swift */, + 0B2D09C61D87365F007E487C /* BatchUpdatesCollectionViewController.swift */, + 0B2D09C71D87365F007E487C /* BatchUpdatesTableViewController.swift */, + 0B2D09C81D87365F007E487C /* Benchmarks */, + 0B2D09D31D87365F007E487C /* FeedBaseViewController.swift */, + 0B2D09D41D87365F007E487C /* FeedCollectionViewController.swift */, + 0B2D09D51D87365F007E487C /* FeedScrollViewController.swift */, + 0B2D09D61D87365F007E487C /* FeedTableViewController.swift */, + 0B2D09D71D87365F007E487C /* ForegroundProfileViewController.swift */, + 75D94A3F1EA05D5A00A5FD01 /* OverlayViewController.swift */, + 0B2D09BE1D8735E1007E487C /* Info.plist */, + 0B2D09D81D87365F007E487C /* LabledImageLayout.swift */, + 0B2D09FB1D873726007E487C /* LaunchScreen.xib */, + 0B2D09D91D87365F007E487C /* MenuViewController.swift */, + 0B2D09DA1D87365F007E487C /* NestedCollectionViewController.swift */, + 0B2D09DB1D87365F007E487C /* StackViewController.swift */, + 0B2D09DC1D87365F007E487C /* UrlImageLayout.swift */, + 0B6B04361DC8402E00F23EEA /* DWURecyclingAlert.m */, + ); + path = LayoutKitSampleApp; + sourceTree = ""; + }; + 0B2D09C81D87365F007E487C /* Benchmarks */ = { + isa = PBXGroup; + children = ( + 0B2D09C91D87365F007E487C /* BenchmarkViewController.swift */, + 0B2D09CA1D87365F007E487C /* CollectionViewController.swift */, + 0B2D09CB1D87365F007E487C /* DataBinder.swift */, + 0B2D09CC1D87365F007E487C /* FeedItemAutoLayoutView.swift */, + 0B2D09CD1D87365F007E487C /* FeedItemData.swift */, + 0B2D09CE1D87365F007E487C /* FeedItemLayoutKitView.swift */, + 0B2D09CF1D87365F007E487C /* FeedItemManualView.swift */, + 0B2D09D01D87365F007E487C /* FeedItemUIStackView.swift */, + 0B2D09D11D87365F007E487C /* Stopwatch.swift */, + 0B2D09D21D87365F007E487C /* TableViewController.swift */, + ); + path = Benchmarks; + sourceTree = ""; + }; + 0BCB75531D871FC40065E02A = { + isa = PBXGroup; + children = ( + 0B7B269E1D919A9200CD1956 /* LayoutKit.playground */, + 0BCB75611D8720110065E02A /* LayoutKit */, + 0BCB756C1D8720110065E02A /* LayoutKitTests */, + 0BCB75B71D8723B30065E02A /* ExampleLayouts */, + 0B2D09B11D8735E1007E487C /* LayoutKitSampleApp */, + 0BCB75601D8720110065E02A /* Products */, + ); + sourceTree = ""; + }; + 0BCB75601D8720110065E02A /* Products */ = { + isa = PBXGroup; + children = ( + 0BCB755F1D8720110065E02A /* LayoutKit.framework */, + 0BCB75681D8720110065E02A /* LayoutKit-iOSTests.xctest */, + 0BCB757C1D8721370065E02A /* LayoutKit.framework */, + 0BCB75841D8721370065E02A /* LayoutKit-tvOSTests.xctest */, + 0BCB75981D8722370065E02A /* LayoutKit.framework */, + 0BCB75A01D8722370065E02A /* LayoutKit-macOSTests.xctest */, + 0BCB75B61D8723B30065E02A /* ExampleLayouts.framework */, + 0B2D09B01D8735E1007E487C /* LayoutKitSampleApp.app */, + ); + name = Products; + sourceTree = ""; + }; + 0BCB75611D8720110065E02A /* LayoutKit */ = { + isa = PBXGroup; + children = ( + 0BCB75D41D8724800065E02A /* Alignment.swift */, + 0BCB75D51D8724800065E02A /* Animation.swift */, + 0BCB75D61D8724800065E02A /* AppKitSupport.swift */, + 0BCB75D71D8724800065E02A /* Axis.swift */, + 0BCB75D81D8724800065E02A /* ConfigurableLayout.swift */, + 0BCB75D91D8724800065E02A /* Flexibility.swift */, + 0BCB75631D8720110065E02A /* Info.plist */, + 0BCB75DA1D8724800065E02A /* Internal */, + 0BCB75DD1D8724800065E02A /* Layout.swift */, + 0BCB75DE1D8724800065E02A /* LayoutArrangement.swift */, + 0BCB75621D8720110065E02A /* LayoutKit.h */, + 0BCB75DF1D8724800065E02A /* LayoutMeasurement.swift */, + 0BCB75E01D8724800065E02A /* Layouts */, + 0BCB75E61D8724800065E02A /* Math */, + 0BD42BDB1DB5EAAD00E04AA3 /* Text.swift */, + 0BCB75EA1D8724800065E02A /* UIKitSupport.swift */, + 0BCB75EB1D8724800065E02A /* ViewRecycler.swift */, + 0BCB75EC1D8724800065E02A /* Views */, + ); + name = LayoutKit; + path = Sources; + sourceTree = ""; + }; + 0BCB756C1D8720110065E02A /* LayoutKitTests */ = { + isa = PBXGroup; + children = ( + 0BCB76531D8725310065E02A /* AlignmentTests.swift */, + 0BD5F82B1DB43F9B00108688 /* ButtonLayoutTests.swift */, + 0B765F2F1DC135B8000BF1FD /* CGFloatExtensionTests.swift */, + 0B193BB61D887BCF00FCA22D /* CollectionExtension.swift */, + 0BCB76551D8725310065E02A /* CollectionViewTests.swift */, + 0BCB76561D8725310065E02A /* DensityAssertions.swift */, + 0B193BB71D887BCF00FCA22D /* IndexSetExtension.swift */, + 0BCB756F1D8720110065E02A /* Info.plist */, + 0BCB76571D8725310065E02A /* InsetLayoutTests.swift */, + 0BCB76581D8725310065E02A /* LabelLayoutTests.swift */, + 0BCB76591D8725310065E02A /* LayoutArrangementTests.swift */, + 75D94A3A1EA045F100A5FD01 /* OverlayLayoutTests.swift */, + 0BCB765C1D8725310065E02A /* ReloadableViewLayoutAdapterCollectionViewTests.swift */, + AD2C36421EA5AF9500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift */, + 0BCB765D1D8725310065E02A /* ReloadableViewLayoutAdapterTableViewTests.swift */, + ADE5FCBF1EA5B5C8006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift */, + 0BCB765E1D8725310065E02A /* ReloadableViewLayoutAdapterTestCase.swift */, + 0BDDF95A1E25ACCE008B0A6F /* ReloadableViewTests.swift */, + 0BCB765F1D8725310065E02A /* SizeLayoutTests.swift */, + 0BCB76601D8725310065E02A /* StackLayoutDistributionTests.swift */, + 0BCB76611D8725310065E02A /* StackLayoutFlexibilityTests.swift */, + 0BCB76621D8725310065E02A /* StackLayoutSpacingTests.swift */, + 0BCB76631D8725310065E02A /* StackLayoutTests.swift */, + 0BCB76641D8725310065E02A /* StackViewTests.swift */, + 0BCB76651D8725310065E02A /* TableViewTests.swift */, + 0BCB76661D8725310065E02A /* TestStack.swift */, + 0BB380DA1DB73EFF00E2614F /* TextExtension.swift */, + 44F968161E42639500392763 /* TextViewLayoutTests.swift */, + 0BCB76671D8725310065E02A /* UIFontExtension.swift */, + 0BCB76681D8725310065E02A /* ViewRecyclerTests.swift */, + F6A1A8FC1ECB03B90058DF07 /* BatchUpdatesArrayUpdateTest.swift */, + F6A1A9001ECB08FA0058DF07 /* SafeArrayTest.swift */, + F6A1A90C1ECB510E0058DF07 /* LayoutAdapterWithCacheTest.swift */, +<<<<<<< HEAD +======= + F6A1A9131ECB66AD0058DF07 /* BatchUpdatesFromArrayDifferenceTest.swift */, +>>>>>>> LayoutAdapter with cached layouts + ); + path = LayoutKitTests; + sourceTree = ""; + }; + 0BCB75B71D8723B30065E02A /* ExampleLayouts */ = { + isa = PBXGroup; + children = ( + 0B2D09651D8734DB007E487C /* CircleImagePileLayout.swift */, + 0B2D09661D8734DB007E487C /* DividerStackLayout.swift */, + 0B2D09671D8734DB007E487C /* FeedItemLayout.swift */, + 0B2D09681D8734DB007E487C /* FixedWidthCellCollectionViewLayout.swift */, + 0B2D09691D8734DB007E487C /* HelloWorldAutoLayoutView.swift */, + 0B2D096A1D8734DB007E487C /* HelloWorldLayout.swift */, + 0B2D096B1D8734DB007E487C /* MiniProfileLayout.swift */, + 0B2D096C1D8734DB007E487C /* ProfileCardLayout.swift */, + 0B2D096D1D8734DB007E487C /* SkillsCardLayout.swift */, + 0BCB75B81D8723B30065E02A /* ExampleLayouts.h */, + 0BCB75B91D8723B30065E02A /* Info.plist */, + ); + path = ExampleLayouts; + sourceTree = ""; + }; + 0BCB75DA1D8724800065E02A /* Internal */ = { + isa = PBXGroup; + children = ( + 0BCB75DB1D8724800065E02A /* CFAbsoluteTimeExtension.swift */, + 0BCB75DC1D8724800065E02A /* CGSizeExtension.swift */, + 0B765F2B1DC0514F000BF1FD /* CGFloatExtension.swift */, + 4468A31C1E46460B00341D07 /* NSAttributedStringExtension.swift */, + 448CEC0E1E4E0CB500F8AD9E /* TextViewDefaultFont.swift */, + F6A1A8FA1ECAF1380058DF07 /* SafeArray.swift */, + ); + path = Internal; + sourceTree = ""; + }; + 0BCB75E01D8724800065E02A /* Layouts */ = { + isa = PBXGroup; + children = ( + 0BCB75E11D8724800065E02A /* BaseLayout.swift */, + 0BD5F8281DB43B4500108688 /* ButtonLayout.swift */, + 0BCB75E21D8724800065E02A /* InsetLayout.swift */, + 0BCB75E31D8724800065E02A /* LabelLayout.swift */, + 75D94A351EA01B6A00A5FD01 /* OverlayLayout.swift */, + 0BCB75E41D8724800065E02A /* SizeLayout.swift */, + 0BCB75E51D8724800065E02A /* StackLayout.swift */, + 44F968141E425F5D00392763 /* TextViewLayout.swift */, + ); + path = Layouts; + sourceTree = ""; + }; + 0BCB75E61D8724800065E02A /* Math */ = { + isa = PBXGroup; + children = ( + 0BCB75E71D8724800065E02A /* AxisFlexibility.swift */, + 0BCB75E81D8724800065E02A /* AxisPoint.swift */, + 0BCB75E91D8724800065E02A /* AxisSize.swift */, + ); + path = Math; + sourceTree = ""; + }; + 0BCB75EC1D8724800065E02A /* Views */ = { + isa = PBXGroup; + children = ( + 0BCB75ED1D8724800065E02A /* BatchUpdates.swift */, + F6A1A8F81ECAF1040058DF07 /* BatchUpdatesArrayUpdate.swift */, +<<<<<<< HEAD +======= + F6A1A9111ECB66500058DF07 /* BatchUpdatesFromArrayDifference.swift */, +>>>>>>> LayoutAdapter with cached layouts + 0BCB75EE1D8724800065E02A /* LayoutAdapterCollectionView.swift */, + 0BCB75EF1D8724800065E02A /* LayoutAdapterTableView.swift */, + 0BCB75F01D8724800065E02A /* ReloadableView.swift */, + 0BCB75F11D8724800065E02A /* ReloadableViewLayoutAdapter+UICollectionView.swift */, + 0BCB75F21D8724800065E02A /* ReloadableViewLayoutAdapter+UITableView.swift */, + 0BCB75F31D8724800065E02A /* ReloadableViewLayoutAdapter.swift */, + 0BCB75F41D8724800065E02A /* ReloadableViewUpdateManager.swift */, + 0BCB75F51D8724800065E02A /* StackView.swift */, + F6A1A8F41ECAEFC80058DF07 /* LayoutAdapter.swift */, +<<<<<<< HEAD + F6A1A8F61ECAF0920058DF07 /* LayoutAdapterWithCache.swift */, +======= + F6A1A8F61ECAF0920058DF07 /* LayoutAdapterCacheHandler.swift */, + F6A1A90F1ECB661F0058DF07 /* LayoutAdapterWithAutomaticBatchUpdates.swift */, +>>>>>>> LayoutAdapter with cached layouts + ); + path = Views; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 0BCB755C1D8720110065E02A /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 0BCB75701D8720110065E02A /* LayoutKit.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB75791D8721370065E02A /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 0BCB762F1D8724C70065E02A /* LayoutKit.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB75951D8722370065E02A /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 0BCB75B01D8722BD0065E02A /* LayoutKit.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB75B31D8723B30065E02A /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 0BCB75BA1D8723B30065E02A /* ExampleLayouts.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 0B2D09AF1D8735E1007E487C /* LayoutKitSampleApp */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0B2D09BF1D8735E1007E487C /* Build configuration list for PBXNativeTarget "LayoutKitSampleApp" */; + buildPhases = ( + 0B2D09AC1D8735E1007E487C /* Sources */, + 0B2D09AD1D8735E1007E487C /* Frameworks */, + 0B2D09AE1D8735E1007E487C /* Resources */, + 0B6B043A1DC8470200F23EEA /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 0B2D09FE1D873777007E487C /* PBXTargetDependency */, + 0B2D0A001D873777007E487C /* PBXTargetDependency */, + ); + name = LayoutKitSampleApp; + productName = LayoutKitSampleApp; + productReference = 0B2D09B01D8735E1007E487C /* LayoutKitSampleApp.app */; + productType = "com.apple.product-type.application"; + }; + 0BCB755E1D8720110065E02A /* LayoutKit-iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0BCB75711D8720110065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-iOS" */; + buildPhases = ( + 0BCB755A1D8720110065E02A /* Sources */, + 0BCB755B1D8720110065E02A /* Frameworks */, + 0BCB755C1D8720110065E02A /* Headers */, + 0BCB755D1D8720110065E02A /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "LayoutKit-iOS"; + productName = "LayoutKit-iOS"; + productReference = 0BCB755F1D8720110065E02A /* LayoutKit.framework */; + productType = "com.apple.product-type.framework"; + }; + 0BCB75671D8720110065E02A /* LayoutKit-iOSTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0BCB75741D8720110065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-iOSTests" */; + buildPhases = ( + 0BCB75641D8720110065E02A /* Sources */, + 0BCB75651D8720110065E02A /* Frameworks */, + 0BCB75661D8720110065E02A /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 0BCB756B1D8720110065E02A /* PBXTargetDependency */, + ); + name = "LayoutKit-iOSTests"; + productName = "LayoutKit-iOSTests"; + productReference = 0BCB75681D8720110065E02A /* LayoutKit-iOSTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 0BCB757B1D8721370065E02A /* LayoutKit-tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0BCB758D1D8721370065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-tvOS" */; + buildPhases = ( + 0BCB75771D8721370065E02A /* Sources */, + 0BCB75781D8721370065E02A /* Frameworks */, + 0BCB75791D8721370065E02A /* Headers */, + 0BCB757A1D8721370065E02A /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "LayoutKit-tvOS"; + productName = "LayoutKit-tvOS"; + productReference = 0BCB757C1D8721370065E02A /* LayoutKit.framework */; + productType = "com.apple.product-type.framework"; + }; + 0BCB75831D8721370065E02A /* LayoutKit-tvOSTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0BCB75901D8721370065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-tvOSTests" */; + buildPhases = ( + 0BCB75801D8721370065E02A /* Sources */, + 0BCB75811D8721370065E02A /* Frameworks */, + 0BCB75821D8721370065E02A /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 0BCB75871D8721370065E02A /* PBXTargetDependency */, + ); + name = "LayoutKit-tvOSTests"; + productName = "LayoutKit-tvOSTests"; + productReference = 0BCB75841D8721370065E02A /* LayoutKit-tvOSTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 0BCB75971D8722370065E02A /* LayoutKit-macOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0BCB75A91D8722370065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-macOS" */; + buildPhases = ( + 0BCB75931D8722370065E02A /* Sources */, + 0BCB75941D8722370065E02A /* Frameworks */, + 0BCB75951D8722370065E02A /* Headers */, + 0BCB75961D8722370065E02A /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "LayoutKit-macOS"; + productName = "LayoutKit-macOS"; + productReference = 0BCB75981D8722370065E02A /* LayoutKit.framework */; + productType = "com.apple.product-type.framework"; + }; + 0BCB759F1D8722370065E02A /* LayoutKit-macOSTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0BCB75AC1D8722370065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-macOSTests" */; + buildPhases = ( + 0BCB759C1D8722370065E02A /* Sources */, + 0BCB759D1D8722370065E02A /* Frameworks */, + 0BCB759E1D8722370065E02A /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 0BCB75A31D8722370065E02A /* PBXTargetDependency */, + ); + name = "LayoutKit-macOSTests"; + productName = "LayoutKit-macOSTests"; + productReference = 0BCB75A01D8722370065E02A /* LayoutKit-macOSTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 0BCB75B51D8723B30065E02A /* ExampleLayouts-iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0BCB75BB1D8723B30065E02A /* Build configuration list for PBXNativeTarget "ExampleLayouts-iOS" */; + buildPhases = ( + 0BCB75B11D8723B30065E02A /* Sources */, + 0BCB75B21D8723B30065E02A /* Frameworks */, + 0BCB75B31D8723B30065E02A /* Headers */, + 0BCB75B41D8723B30065E02A /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 0B2D0A021D87377F007E487C /* PBXTargetDependency */, + ); + name = "ExampleLayouts-iOS"; + productName = "ExampleLayouts-iOS"; + productReference = 0BCB75B61D8723B30065E02A /* ExampleLayouts.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 0BCB75541D871FC40065E02A /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0800; + LastUpgradeCheck = 0820; + TargetAttributes = { + 0B2D09AF1D8735E1007E487C = { + CreatedOnToolsVersion = 8.0; + LastSwiftMigration = 0800; + ProvisioningStyle = Automatic; + }; + 0BCB755E1D8720110065E02A = { + CreatedOnToolsVersion = 8.0; + LastSwiftMigration = 0800; + ProvisioningStyle = Automatic; + }; + 0BCB75671D8720110065E02A = { + CreatedOnToolsVersion = 8.0; + ProvisioningStyle = Automatic; + }; + 0BCB757B1D8721370065E02A = { + CreatedOnToolsVersion = 8.0; + ProvisioningStyle = Automatic; + }; + 0BCB75831D8721370065E02A = { + CreatedOnToolsVersion = 8.0; + ProvisioningStyle = Automatic; + }; + 0BCB75971D8722370065E02A = { + CreatedOnToolsVersion = 8.0; + ProvisioningStyle = Automatic; + }; + 0BCB759F1D8722370065E02A = { + CreatedOnToolsVersion = 8.0; + ProvisioningStyle = Automatic; + }; + 0BCB75B51D8723B30065E02A = { + CreatedOnToolsVersion = 8.0; + LastSwiftMigration = 0800; + ProvisioningStyle = Automatic; + }; + }; + }; + buildConfigurationList = 0BCB75571D871FC40065E02A /* Build configuration list for PBXProject "LayoutKit" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 0BCB75531D871FC40065E02A; + productRefGroup = 0BCB75601D8720110065E02A /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 0BCB755E1D8720110065E02A /* LayoutKit-iOS */, + 0BCB757B1D8721370065E02A /* LayoutKit-tvOS */, + 0BCB75971D8722370065E02A /* LayoutKit-macOS */, + 0BCB75B51D8723B30065E02A /* ExampleLayouts-iOS */, + 0BCB75671D8720110065E02A /* LayoutKit-iOSTests */, + 0BCB75831D8721370065E02A /* LayoutKit-tvOSTests */, + 0BCB759F1D8722370065E02A /* LayoutKit-macOSTests */, + 0B2D09AF1D8735E1007E487C /* LayoutKitSampleApp */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 0B2D09AE1D8735E1007E487C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0B2D09FC1D873726007E487C /* LaunchScreen.xib in Resources */, + 0B2D09E11D87365F007E487C /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB755D1D8720110065E02A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB75661D8720110065E02A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB757A1D8721370065E02A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB75821D8721370065E02A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB75961D8722370065E02A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB759E1D8722370065E02A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB75B41D8723B30065E02A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 0B2D09AC1D8735E1007E487C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0B2D09E41D87365F007E487C /* BatchUpdatesCollectionViewController.swift in Sources */, + 0B2D09E81D87365F007E487C /* DataBinder.swift in Sources */, + 0B2D09EA1D87365F007E487C /* FeedItemData.swift in Sources */, + 75D94A401EA05D5A00A5FD01 /* OverlayViewController.swift in Sources */, + 0B2D09F41D87365F007E487C /* ForegroundProfileViewController.swift in Sources */, + 0B2D09ED1D87365F007E487C /* FeedItemUIStackView.swift in Sources */, + 0B2D09EC1D87365F007E487C /* FeedItemManualView.swift in Sources */, + 0B2D09F01D87365F007E487C /* FeedBaseViewController.swift in Sources */, + 0B2D09EE1D87365F007E487C /* Stopwatch.swift in Sources */, + 0B2D09E31D87365F007E487C /* BatchUpdatesBaseViewController.swift in Sources */, + 0B2D09F81D87365F007E487C /* StackViewController.swift in Sources */, + 0B6B04371DC8402E00F23EEA /* DWURecyclingAlert.m in Sources */, + 0B2D09F51D87365F007E487C /* LabledImageLayout.swift in Sources */, + 0B2D09F11D87365F007E487C /* FeedCollectionViewController.swift in Sources */, + 0B2D09F31D87365F007E487C /* FeedTableViewController.swift in Sources */, + 0B2D09E01D87365F007E487C /* AppDelegate.swift in Sources */, + 0B2D09E21D87365F007E487C /* BackgroundMiniProfileViewController.swift in Sources */, + 0B2D09E91D87365F007E487C /* FeedItemAutoLayoutView.swift in Sources */, + 0B2D09F61D87365F007E487C /* MenuViewController.swift in Sources */, + 0B2D09F91D87365F007E487C /* UrlImageLayout.swift in Sources */, + 0B2D09E71D87365F007E487C /* CollectionViewController.swift in Sources */, + 0B2D09EB1D87365F007E487C /* FeedItemLayoutKitView.swift in Sources */, + 0B2D09E61D87365F007E487C /* BenchmarkViewController.swift in Sources */, + 0B2D09F71D87365F007E487C /* NestedCollectionViewController.swift in Sources */, + 0B2D09EF1D87365F007E487C /* TableViewController.swift in Sources */, + 0B2D09E51D87365F007E487C /* BatchUpdatesTableViewController.swift in Sources */, + 0B2D09F21D87365F007E487C /* FeedScrollViewController.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB755A1D8720110065E02A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0BCB76051D8724800065E02A /* StackLayout.swift in Sources */, + 0BCB760D1D8724800065E02A /* LayoutAdapterTableView.swift in Sources */, + 0BCB76071D8724800065E02A /* AxisPoint.swift in Sources */, + F6A1A8F91ECAF1040058DF07 /* BatchUpdatesArrayUpdate.swift in Sources */, + F6A1A8FB1ECAF1380058DF07 /* SafeArray.swift in Sources */, + 0BCB75F71D8724800065E02A /* Animation.swift in Sources */, + F6A1A8F51ECAEFC80058DF07 /* LayoutAdapter.swift in Sources */, + 0BCB76081D8724800065E02A /* AxisSize.swift in Sources */, + 0B193BB81D887BCF00FCA22D /* CollectionExtension.swift in Sources */, + 4468A31D1E46460B00341D07 /* NSAttributedStringExtension.swift in Sources */, + 0BCB760C1D8724800065E02A /* LayoutAdapterCollectionView.swift in Sources */, + 0BD5F8291DB43B4500108688 /* ButtonLayout.swift in Sources */, + 0BCB76001D8724800065E02A /* LayoutMeasurement.swift in Sources */, + 0BCB76021D8724800065E02A /* InsetLayout.swift in Sources */, + F6A1A9121ECB66500058DF07 /* BatchUpdatesFromArrayDifference.swift in Sources */, + 0BCB76061D8724800065E02A /* AxisFlexibility.swift in Sources */, + 448CEC0F1E4E0CB500F8AD9E /* TextViewDefaultFont.swift in Sources */, +<<<<<<< HEAD + F6A1A8F71ECAF0920058DF07 /* LayoutAdapterWithCache.swift in Sources */, +======= + F6A1A8F71ECAF0920058DF07 /* LayoutAdapterCacheHandler.swift in Sources */, +>>>>>>> LayoutAdapter with cached layouts + 0BCB760E1D8724800065E02A /* ReloadableView.swift in Sources */, + 75D94A361EA01B6A00A5FD01 /* OverlayLayout.swift in Sources */, + F6A1A9101ECB661F0058DF07 /* LayoutAdapterWithAutomaticBatchUpdates.swift in Sources */, + 0BCB75FD1D8724800065E02A /* CGSizeExtension.swift in Sources */, + 0BCB760B1D8724800065E02A /* BatchUpdates.swift in Sources */, + 0BCB76011D8724800065E02A /* BaseLayout.swift in Sources */, + 0BCB75FA1D8724800065E02A /* ConfigurableLayout.swift in Sources */, + 0BCB76111D8724800065E02A /* ReloadableViewLayoutAdapter.swift in Sources */, + 0BCB75F91D8724800065E02A /* Axis.swift in Sources */, + 0BCB760A1D8724800065E02A /* ViewRecycler.swift in Sources */, + 0BCB76091D8724800065E02A /* UIKitSupport.swift in Sources */, + 0BCB75FE1D8724800065E02A /* Layout.swift in Sources */, + 0BCB75FF1D8724800065E02A /* LayoutArrangement.swift in Sources */, + 0BCB760F1D8724800065E02A /* ReloadableViewLayoutAdapter+UICollectionView.swift in Sources */, + 0BCB75F61D8724800065E02A /* Alignment.swift in Sources */, + 0B193BB91D887BCF00FCA22D /* IndexSetExtension.swift in Sources */, + 0BCB75FC1D8724800065E02A /* CFAbsoluteTimeExtension.swift in Sources */, + 0B765F2C1DC0514F000BF1FD /* CGFloatExtension.swift in Sources */, + 0BCB76041D8724800065E02A /* SizeLayout.swift in Sources */, + 0BCB76031D8724800065E02A /* LabelLayout.swift in Sources */, + 0BCB76101D8724800065E02A /* ReloadableViewLayoutAdapter+UITableView.swift in Sources */, + 0BCB75FB1D8724800065E02A /* Flexibility.swift in Sources */, + 0BCB76121D8724800065E02A /* ReloadableViewUpdateManager.swift in Sources */, + 44F968151E425F5D00392763 /* TextViewLayout.swift in Sources */, + 0BD42BDC1DB5EAAD00E04AA3 /* Text.swift in Sources */, + 0BCB76131D8724800065E02A /* StackView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB75641D8720110065E02A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( +<<<<<<< HEAD +======= + F6A1A9151ECB66C00058DF07 /* BatchUpdatesFromArrayDifferenceTest.swift in Sources */, +>>>>>>> LayoutAdapter with cached layouts + F6A1A90E1ECB513B0058DF07 /* LayoutAdapterWithCacheTest.swift in Sources */, + F6A1A9021ECB09880058DF07 /* SafeArrayTest.swift in Sources */, + F6A1A8FE1ECB07AF0058DF07 /* BatchUpdatesArrayUpdateTest.swift in Sources */, + ADE5FCC11EA5B5F3006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift in Sources */, + AD2C36441EA5AFB500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift in Sources */, + 0B765F301DC135B8000BF1FD /* CGFloatExtensionTests.swift in Sources */, + 0B2D092C1D872F75007E487C /* ReloadableViewLayoutAdapterCollectionViewTests.swift in Sources */, + 0B2D092E1D872F75007E487C /* ReloadableViewLayoutAdapterTestCase.swift in Sources */, + 0B2D092D1D872F75007E487C /* ReloadableViewLayoutAdapterTableViewTests.swift in Sources */, + 0B2D09321D872F75007E487C /* StackLayoutSpacingTests.swift in Sources */, + 75D94A3B1EA045F100A5FD01 /* OverlayLayoutTests.swift in Sources */, + 44F968181E4263DC00392763 /* TextViewLayoutTests.swift in Sources */, + 0B2D09381D872F75007E487C /* ViewRecyclerTests.swift in Sources */, + 0B2D09341D872F75007E487C /* StackViewTests.swift in Sources */, + 0B2D09281D872F75007E487C /* LabelLayoutTests.swift in Sources */, + 0B2D09231D872F75007E487C /* AlignmentTests.swift in Sources */, + 0B2D09261D872F75007E487C /* DensityAssertions.swift in Sources */, + 0BD5F82C1DB43F9B00108688 /* ButtonLayoutTests.swift in Sources */, + 0BB380DB1DB73EFF00E2614F /* TextExtension.swift in Sources */, + 0BDDF95B1E25ACCE008B0A6F /* ReloadableViewTests.swift in Sources */, + 0B2D09271D872F75007E487C /* InsetLayoutTests.swift in Sources */, + 0B2D09371D872F75007E487C /* UIFontExtension.swift in Sources */, + 0B2D09251D872F75007E487C /* CollectionViewTests.swift in Sources */, + 0B2D092F1D872F75007E487C /* SizeLayoutTests.swift in Sources */, + 0B2D09361D872F75007E487C /* TestStack.swift in Sources */, + 0B2D09351D872F75007E487C /* TableViewTests.swift in Sources */, + 0B2D09311D872F75007E487C /* StackLayoutFlexibilityTests.swift in Sources */, + 0B2D09301D872F75007E487C /* StackLayoutDistributionTests.swift in Sources */, + 0B2D09331D872F75007E487C /* StackLayoutTests.swift in Sources */, + 0B2D09291D872F75007E487C /* LayoutArrangementTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB75771D8721370065E02A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0BCB763A1D8724CA0065E02A /* StackLayout.swift in Sources */, + 0BCB76411D8724CF0065E02A /* AxisPoint.swift in Sources */, + 0BCB764B1D8724E70065E02A /* LayoutAdapterCollectionView.swift in Sources */, + 0BCB764A1D8724E70065E02A /* BatchUpdates.swift in Sources */, + 0BCB76151D8724C00065E02A /* Animation.swift in Sources */, + 0BCB76421D8724CF0065E02A /* AxisSize.swift in Sources */, + 4468A31E1E464A3900341D07 /* NSAttributedStringExtension.swift in Sources */, + 0BCB76301D8724C70065E02A /* LayoutMeasurement.swift in Sources */, + 0B193BBA1D888B6300FCA22D /* IndexSetExtension.swift in Sources */, + 0BCB76371D8724CA0065E02A /* InsetLayout.swift in Sources */, + 0BCB76401D8724CF0065E02A /* AxisFlexibility.swift in Sources */, + 0BCB762C1D8724C70065E02A /* CGSizeExtension.swift in Sources */, + 0BCB76361D8724CA0065E02A /* BaseLayout.swift in Sources */, + 0BCB76181D8724C00065E02A /* ConfigurableLayout.swift in Sources */, + 75D94A371EA01B7100A5FD01 /* OverlayLayout.swift in Sources */, + 448CEC101E4E0CEE00F8AD9E /* TextViewDefaultFont.swift in Sources */, + 0B8C078B1DC3E881001CD5EE /* ButtonLayout.swift in Sources */, + 0BCB76521D8724E70065E02A /* StackView.swift in Sources */, + 0BCB76511D8724E70065E02A /* ReloadableViewUpdateManager.swift in Sources */, + 0BCB76171D8724C00065E02A /* Axis.swift in Sources */, + 0BCB764D1D8724E70065E02A /* ReloadableView.swift in Sources */, + 0BCB76441D8724CF0065E02A /* ViewRecycler.swift in Sources */, + 0BCB764F1D8724E70065E02A /* ReloadableViewLayoutAdapter+UITableView.swift in Sources */, + 0BCB76431D8724CF0065E02A /* UIKitSupport.swift in Sources */, + 0BCB762D1D8724C70065E02A /* Layout.swift in Sources */, + 0B193BBC1D888B6D00FCA22D /* CollectionExtension.swift in Sources */, + 0BCB762E1D8724C70065E02A /* LayoutArrangement.swift in Sources */, + 0BCB76141D8724C00065E02A /* Alignment.swift in Sources */, + 0BCB76501D8724E70065E02A /* ReloadableViewLayoutAdapter.swift in Sources */, + 0B765F2D1DC0514F000BF1FD /* CGFloatExtension.swift in Sources */, + 0BCB762B1D8724C70065E02A /* CFAbsoluteTimeExtension.swift in Sources */, + 0BCB76391D8724CA0065E02A /* SizeLayout.swift in Sources */, + 0BCB76381D8724CA0065E02A /* LabelLayout.swift in Sources */, + 0BCB76191D8724C00065E02A /* Flexibility.swift in Sources */, + 0BCB764C1D8724E70065E02A /* LayoutAdapterTableView.swift in Sources */, + 44F9681A1E42640400392763 /* TextViewLayout.swift in Sources */, + 0BD42BDD1DB5EC8800E04AA3 /* Text.swift in Sources */, + 0BCB764E1D8724E70065E02A /* ReloadableViewLayoutAdapter+UICollectionView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB75801D8721370065E02A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0B765F311DC135B8000BF1FD /* CGFloatExtensionTests.swift in Sources */, + 0B2D09421D872F75007E487C /* ReloadableViewLayoutAdapterCollectionViewTests.swift in Sources */, + 0B2D09441D872F75007E487C /* ReloadableViewLayoutAdapterTestCase.swift in Sources */, + 0B2D09431D872F75007E487C /* ReloadableViewLayoutAdapterTableViewTests.swift in Sources */, + 0B2D09481D872F75007E487C /* StackLayoutSpacingTests.swift in Sources */, + 75D94A3C1EA045F100A5FD01 /* OverlayLayoutTests.swift in Sources */, + 44F968191E4263DC00392763 /* TextViewLayoutTests.swift in Sources */, + 0B2D094E1D872F75007E487C /* ViewRecyclerTests.swift in Sources */, + 0B2D094A1D872F75007E487C /* StackViewTests.swift in Sources */, + 0B2D093E1D872F75007E487C /* LabelLayoutTests.swift in Sources */, + 0B2D09391D872F75007E487C /* AlignmentTests.swift in Sources */, + 0B2D093C1D872F75007E487C /* DensityAssertions.swift in Sources */, + 0BB380DC1DB73EFF00E2614F /* TextExtension.swift in Sources */, + 0B8C078C1DC3E88A001CD5EE /* ButtonLayoutTests.swift in Sources */, + 0BDDF95C1E25ACCE008B0A6F /* ReloadableViewTests.swift in Sources */, + 0B2D093D1D872F75007E487C /* InsetLayoutTests.swift in Sources */, + 0B2D094D1D872F75007E487C /* UIFontExtension.swift in Sources */, + 0B2D093B1D872F75007E487C /* CollectionViewTests.swift in Sources */, + 0B2D09451D872F75007E487C /* SizeLayoutTests.swift in Sources */, + 0B2D094C1D872F75007E487C /* TestStack.swift in Sources */, + 0B2D094B1D872F75007E487C /* TableViewTests.swift in Sources */, + 0B2D09471D872F75007E487C /* StackLayoutFlexibilityTests.swift in Sources */, + 0B2D09461D872F75007E487C /* StackLayoutDistributionTests.swift in Sources */, + 0B2D09491D872F75007E487C /* StackLayoutTests.swift in Sources */, + 0B2D093F1D872F75007E487C /* LayoutArrangementTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB75931D8722370065E02A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0BCB763F1D8724CB0065E02A /* StackLayout.swift in Sources */, + 0BCB76461D8724D00065E02A /* AxisPoint.swift in Sources */, + 0BCB761C1D8724C10065E02A /* AppKitSupport.swift in Sources */, + 0BCB761B1D8724C10065E02A /* Animation.swift in Sources */, + 0BCB76471D8724D00065E02A /* AxisSize.swift in Sources */, + 0BCB76351D8724C70065E02A /* LayoutMeasurement.swift in Sources */, + 0BCB763C1D8724CB0065E02A /* InsetLayout.swift in Sources */, + 0B193BBB1D888B6400FCA22D /* IndexSetExtension.swift in Sources */, + 0B193BBD1D888B6D00FCA22D /* CollectionExtension.swift in Sources */, + 0BCB76451D8724D00065E02A /* AxisFlexibility.swift in Sources */, + 0BCB76321D8724C70065E02A /* CGSizeExtension.swift in Sources */, + 0BCB763B1D8724CB0065E02A /* BaseLayout.swift in Sources */, + 0BCB761E1D8724C10065E02A /* ConfigurableLayout.swift in Sources */, + 0BCB761D1D8724C10065E02A /* Axis.swift in Sources */, + 0BCB76491D8724D00065E02A /* ViewRecycler.swift in Sources */, + 0BCB76331D8724C70065E02A /* Layout.swift in Sources */, + 75D94A381EA01B7200A5FD01 /* OverlayLayout.swift in Sources */, + 0BCB76341D8724C70065E02A /* LayoutArrangement.swift in Sources */, + 0BCB761A1D8724C10065E02A /* Alignment.swift in Sources */, + 0BCB76311D8724C70065E02A /* CFAbsoluteTimeExtension.swift in Sources */, + 0BCB763E1D8724CB0065E02A /* SizeLayout.swift in Sources */, + 0BCB761F1D8724C10065E02A /* Flexibility.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB759C1D8722370065E02A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0B2D095E1D872F76007E487C /* StackLayoutSpacingTests.swift in Sources */, + 0B2D09641D872F76007E487C /* ViewRecyclerTests.swift in Sources */, + 0B2D094F1D872F76007E487C /* AlignmentTests.swift in Sources */, + 0B2D09521D872F76007E487C /* DensityAssertions.swift in Sources */, + 0B2D09531D872F76007E487C /* InsetLayoutTests.swift in Sources */, + 0BA02E481D874BBB00F1E8D3 /* LayoutArrangementTests.swift in Sources */, + 75D94A3D1EA045F100A5FD01 /* OverlayLayoutTests.swift in Sources */, + 0B2D095B1D872F76007E487C /* SizeLayoutTests.swift in Sources */, + 0B2D09621D872F76007E487C /* TestStack.swift in Sources */, + 0B2D095D1D872F76007E487C /* StackLayoutFlexibilityTests.swift in Sources */, + 0B2D095C1D872F76007E487C /* StackLayoutDistributionTests.swift in Sources */, + 0B2D095F1D872F76007E487C /* StackLayoutTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0BCB75B11D8723B30065E02A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0B2D09711D8734DB007E487C /* FixedWidthCellCollectionViewLayout.swift in Sources */, + 0B2D09761D8734DB007E487C /* SkillsCardLayout.swift in Sources */, + 0B2D096F1D8734DB007E487C /* DividerStackLayout.swift in Sources */, + 0B2D096E1D8734DB007E487C /* CircleImagePileLayout.swift in Sources */, + 0B2D09751D8734DB007E487C /* ProfileCardLayout.swift in Sources */, + 0B2D09731D8734DB007E487C /* HelloWorldLayout.swift in Sources */, + 0B2D09721D8734DB007E487C /* HelloWorldAutoLayoutView.swift in Sources */, + 0B2D09701D8734DB007E487C /* FeedItemLayout.swift in Sources */, + 0B2D09741D8734DB007E487C /* MiniProfileLayout.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 0B2D09FE1D873777007E487C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 0BCB755E1D8720110065E02A /* LayoutKit-iOS */; + targetProxy = 0B2D09FD1D873777007E487C /* PBXContainerItemProxy */; + }; + 0B2D0A001D873777007E487C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 0BCB75B51D8723B30065E02A /* ExampleLayouts-iOS */; + targetProxy = 0B2D09FF1D873777007E487C /* PBXContainerItemProxy */; + }; + 0B2D0A021D87377F007E487C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 0BCB755E1D8720110065E02A /* LayoutKit-iOS */; + targetProxy = 0B2D0A011D87377F007E487C /* PBXContainerItemProxy */; + }; + 0BCB756B1D8720110065E02A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 0BCB755E1D8720110065E02A /* LayoutKit-iOS */; + targetProxy = 0BCB756A1D8720110065E02A /* PBXContainerItemProxy */; + }; + 0BCB75871D8721370065E02A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 0BCB757B1D8721370065E02A /* LayoutKit-tvOS */; + targetProxy = 0BCB75861D8721370065E02A /* PBXContainerItemProxy */; + }; + 0BCB75A31D8722370065E02A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 0BCB75971D8722370065E02A /* LayoutKit-macOS */; + targetProxy = 0BCB75A21D8722370065E02A /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 0B2D09C01D8735E1007E487C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = LayoutKitSampleApp/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = com.linkedin.LayoutKitSampleApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 0B2D09C11D8735E1007E487C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = LayoutKitSampleApp/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = com.linkedin.LayoutKitSampleApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 0BCB75581D871FC40065E02A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Debug; + }; + 0BCB75591D871FC40065E02A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + }; + name = Release; + }; + 0BCB75721D8720110065E02A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-iOS"; + PRODUCT_NAME = LayoutKit; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 0BCB75731D8720110065E02A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-iOS"; + PRODUCT_NAME = LayoutKit; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 0BCB75751D8720110065E02A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = LayoutKitTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-iOSTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; + }; + name = Debug; + }; + 0BCB75761D8720110065E02A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = LayoutKitTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-iOSTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 0BCB758E1D8721370065E02A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = ""; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-tvOS"; + PRODUCT_NAME = LayoutKit; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 9.0; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 0BCB758F1D8721370065E02A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = ""; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-tvOS"; + PRODUCT_NAME = LayoutKit; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 9.0; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 0BCB75911D8721370065E02A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = LayoutKitTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-tvOSTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; + TVOS_DEPLOYMENT_TARGET = 9.2; + }; + name = Debug; + }; + 0BCB75921D8721370065E02A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = LayoutKitTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-tvOSTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; + TVOS_DEPLOYMENT_TARGET = 9.2; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 0BCB75AA1D8722370065E02A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + FRAMEWORK_VERSION = A; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-macOS"; + PRODUCT_NAME = LayoutKit; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 0BCB75AB1D8722370065E02A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + FRAMEWORK_VERSION = A; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-macOS"; + PRODUCT_NAME = LayoutKit; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 0BCB75AD1D8722370065E02A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = LayoutKitTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-macOSTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; + }; + name = Debug; + }; + 0BCB75AE1D8722370065E02A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "-"; + COMBINE_HIDPI_IMAGES = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = LayoutKitTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.11; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-macOSTests"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; + }; + name = Release; + }; + 0BCB75BC1D8723B30065E02A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "$(SRCROOT)/ExampleLayouts/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.ExampleLayouts-iOS"; + PRODUCT_NAME = ExampleLayouts; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 0BCB75BD1D8723B30065E02A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "$(SRCROOT)/ExampleLayouts/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.ExampleLayouts-iOS"; + PRODUCT_NAME = ExampleLayouts; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + SWIFT_VERSION = 3.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 0B2D09BF1D8735E1007E487C /* Build configuration list for PBXNativeTarget "LayoutKitSampleApp" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0B2D09C01D8735E1007E487C /* Debug */, + 0B2D09C11D8735E1007E487C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 0BCB75571D871FC40065E02A /* Build configuration list for PBXProject "LayoutKit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0BCB75581D871FC40065E02A /* Debug */, + 0BCB75591D871FC40065E02A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 0BCB75711D8720110065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0BCB75721D8720110065E02A /* Debug */, + 0BCB75731D8720110065E02A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 0BCB75741D8720110065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-iOSTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0BCB75751D8720110065E02A /* Debug */, + 0BCB75761D8720110065E02A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 0BCB758D1D8721370065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0BCB758E1D8721370065E02A /* Debug */, + 0BCB758F1D8721370065E02A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 0BCB75901D8721370065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-tvOSTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0BCB75911D8721370065E02A /* Debug */, + 0BCB75921D8721370065E02A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 0BCB75A91D8722370065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-macOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0BCB75AA1D8722370065E02A /* Debug */, + 0BCB75AB1D8722370065E02A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 0BCB75AC1D8722370065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-macOSTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0BCB75AD1D8722370065E02A /* Debug */, + 0BCB75AE1D8722370065E02A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 0BCB75BB1D8723B30065E02A /* Build configuration list for PBXNativeTarget "ExampleLayouts-iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 0BCB75BC1D8723B30065E02A /* Debug */, + 0BCB75BD1D8723B30065E02A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 0BCB75541D871FC40065E02A /* Project object */; +} diff --git a/LayoutKitTests/BatchUpdatesFromArrayDifferenceTest.swift b/LayoutKitTests/BatchUpdatesFromArrayDifferenceTest.swift new file mode 100644 index 00000000..9f27683c --- /dev/null +++ b/LayoutKitTests/BatchUpdatesFromArrayDifferenceTest.swift @@ -0,0 +1,186 @@ +import XCTest +@testable import LayoutKit + +class BatchUpdatesFromArrayDifferenceTest: XCTestCase { + + // Insert + + func test_SingleItem_Insert() { + let oldArray = [[1, 2]] + let newArray = [[1, 2, 3]] + let expectedBatchUpdates = BatchUpdates() + expectedBatchUpdates.insertItems = [IndexPath(row: 2, section: 0)] + + performTest(oldArray: oldArray, newArray: newArray, expectedBatchUpdates: expectedBatchUpdates) + } + + func test_MultipleItems_Insert() { + let oldArray = [[1, 2], []] + let newArray = [[1, 2, 3], [4, 5], [6]] + let expectedBatchUpdates = BatchUpdates() + expectedBatchUpdates.insertItems = [ + IndexPath(row: 2, section: 0), + IndexPath(row: 0, section: 1), + IndexPath(row: 1, section: 1), + IndexPath(row: 0, section: 2) + ] + expectedBatchUpdates.insertSections = [2] + + performTest(oldArray: oldArray, newArray: newArray, expectedBatchUpdates: expectedBatchUpdates) + } + + func test_MultipleItems_Insert_Complex() { + let oldArray = [[1, 2], [4]] + let newArray = [[1, 2, 3], [4, 5], [6], [], [8, 9]] + let expectedBatchUpdates = BatchUpdates() + expectedBatchUpdates.insertItems = [ + IndexPath(row: 2, section: 0), + IndexPath(row: 1, section: 1), + IndexPath(row: 0, section: 2), + IndexPath(row: 0, section: 4), + IndexPath(row: 1, section: 4) + ] + expectedBatchUpdates.insertSections = [2, 3, 4] + + performTest(oldArray: oldArray, newArray: newArray, expectedBatchUpdates: expectedBatchUpdates) + } + + // Deleted + + func test_SingleItem_Delete() { + let oldArray = [[1, 2, 3]] + let newArray = [[1, 2]] + let expectedBatchUpdates = BatchUpdates() + expectedBatchUpdates.deleteItems = [IndexPath(row: 2, section: 0)] + + performTest(oldArray: oldArray, newArray: newArray, expectedBatchUpdates: expectedBatchUpdates) + } + + func test_MultipleItems_Delete() { + let oldArray = [[1, 2, 3], [4, 5], [6]] + let newArray = [[1, 2], []] + let expectedBatchUpdates = BatchUpdates() + expectedBatchUpdates.deleteItems = [ + IndexPath(row: 2, section: 0), + IndexPath(row: 0, section: 1), + IndexPath(row: 1, section: 1) + ] + expectedBatchUpdates.deleteSections = [2] + + performTest(oldArray: oldArray, newArray: newArray, expectedBatchUpdates: expectedBatchUpdates) + } + + func test_MultipleItems_Delete_Complex() { + let oldArray = [[1, 2, 3], [4, 5], [6], [], [8, 9]] + let newArray = [[1, 2], [4]] + let expectedBatchUpdates = BatchUpdates() + expectedBatchUpdates.deleteItems = [ + IndexPath(row: 2, section: 0), + IndexPath(row: 1, section: 1) + ] + expectedBatchUpdates.deleteSections = [2, 3, 4] + + performTest(oldArray: oldArray, newArray: newArray, expectedBatchUpdates: expectedBatchUpdates) + } + + // Move + + func test_SingleItem_Move() { + let oldArray = [[1, 2]] + let newArray = [[2, 1]] + let expectedBatchUpdates = BatchUpdates() + expectedBatchUpdates.moveItems = [ + ItemMove(from: IndexPath(row: 0, section: 0), to: IndexPath(row: 1, section: 0)), + ItemMove(from: IndexPath(row: 1, section: 0), to: IndexPath(row: 0, section: 0)) + ] + + performTest(oldArray: oldArray, newArray: newArray, expectedBatchUpdates: expectedBatchUpdates) + } + + func test_MultipleItems_Move() { + let oldArray = [[1, 2], [3, 4, 5], [6, 7, 8]] + let newArray = [[2, 1], [4, 5, 3], [7, 6, 8]] + let expectedBatchUpdates = BatchUpdates() + expectedBatchUpdates.moveItems = [ + ItemMove(from: IndexPath(row: 0, section: 0), to: IndexPath(row: 1, section: 0)), + ItemMove(from: IndexPath(row: 1, section: 0), to: IndexPath(row: 0, section: 0)), + ItemMove(from: IndexPath(row: 0, section: 1), to: IndexPath(row: 2, section: 1)), + ItemMove(from: IndexPath(row: 1, section: 1), to: IndexPath(row: 0, section: 1)), + ItemMove(from: IndexPath(row: 2, section: 1), to: IndexPath(row: 1, section: 1)), + ItemMove(from: IndexPath(row: 0, section: 2), to: IndexPath(row: 1, section: 2)), + ItemMove(from: IndexPath(row: 1, section: 2), to: IndexPath(row: 0, section: 2)) + ] + + performTest(oldArray: oldArray, newArray: newArray, expectedBatchUpdates: expectedBatchUpdates) + } + + // All + + func test_All_Complex() { + let oldArray = [[-1, 0, 1, 2, 3], [4, 5, 6], [7], [], [8, 9, 10, 11]] + let newArray = [[1, 2, 0, 3, 13], [5, 4, 12], [10, 11]] + + let expectedBatchUpdates = BatchUpdates() + expectedBatchUpdates.deleteItems = [ + IndexPath(row: 0, section: 0), + IndexPath(row: 2, section: 1), + IndexPath(row: 0, section: 2) + ] + + expectedBatchUpdates.insertItems = [ + IndexPath(row: 4, section: 0), + IndexPath(row: 2, section: 1), + IndexPath(row: 0, section: 2), + IndexPath(row: 1, section: 2) + ] + + expectedBatchUpdates.moveItems = [ + ItemMove(from: IndexPath(row: 1, section: 0), to: IndexPath(row: 2, section: 0)), + ItemMove(from: IndexPath(row: 2, section: 0), to: IndexPath(row: 0, section: 0)), + ItemMove(from: IndexPath(row: 3, section: 0), to: IndexPath(row: 1, section: 0)), + ItemMove(from: IndexPath(row: 4, section: 0), to: IndexPath(row: 3, section: 0)), + ItemMove(from: IndexPath(row: 0, section: 1), to: IndexPath(row: 1, section: 1)), + ItemMove(from: IndexPath(row: 1, section: 1), to: IndexPath(row: 0, section: 1)) + ] + + expectedBatchUpdates.deleteSections = [3, 4] + + performTest(oldArray: oldArray, newArray: newArray, expectedBatchUpdates: expectedBatchUpdates) + } + + // Helpers + + func performTest(oldArray: [[Int]], newArray: [[Int]], expectedBatchUpdates: BatchUpdates) { + let batchUpdates = BatchUpdates.calculate(old: oldArray, new: newArray, elementCompareCallback: { lhs, rhs in + return compareWithType(lhs: lhs, rhs: rhs, type: Int.self) + }) + + XCTAssert(batchUpdates == expectedBatchUpdates) + } +} + +func compareWithType(lhs: Any, rhs: Any, type: T.Type) -> Bool { + if let lhs = lhs as? T, let rhs = rhs as? T { + return lhs == rhs + } + + return false +} + +extension BatchUpdates { + open override func isEqual(_ object: Any?) -> Bool { + if let object = object as? BatchUpdates { + return object.insertItems == insertItems && + object.deleteItems == deleteItems && + object.moveItems == moveItems && + object.reloadItems == reloadItems && + + object.deleteSections == deleteSections && + object.insertSections == insertSections && + object.moveSections == moveSections && + object.reloadSections == reloadSections + } + + return false + } +} diff --git a/Sources/Views/BatchUpdatesFromArrayDifference.swift b/Sources/Views/BatchUpdatesFromArrayDifference.swift new file mode 100644 index 00000000..841bd22c --- /dev/null +++ b/Sources/Views/BatchUpdatesFromArrayDifference.swift @@ -0,0 +1,57 @@ +extension BatchUpdates { + static func calculate(old: [[Any]], new: [[Any]], elementCompareCallback: (Any, Any) -> Bool) -> BatchUpdates { + var deleted = [IndexPath]() + var inserted = [IndexPath]() + var moved = [ItemMove]() + + for i in 0.. old.count { + batchUpdates.insertSections = changedSections + + for i in min(new.count, old.count)..]() + let layoutAdapter: LayoutAdapter + + public init(layoutAdapter: LayoutAdapter) { + self.layoutAdapter = layoutAdapter + } + + /// Reloads reloadableView calculating only needed layouts + public func reload( + batchUpdates: BatchUpdates, + layoutProvider: @escaping (IndexPath) -> Layout, + sectionProvider: @escaping (Int, [Layout]) -> Section<[Layout]> = LayoutAdapterCacheHandler.defaultSectionProvider, + animated: Bool = true, + completion: (() -> Void)? = nil) { + + layoutAdapter.reload( + width: nil, + height: nil, + synchronous: false, + batchUpdates: animated ? batchUpdates : nil, + layoutProvider: { + self.cachedLayout( + batchUpdates: batchUpdates, + layoutProvider: layoutProvider, + sectionProvider: sectionProvider + ) + }, + completion: completion + ) + } + + /// Updates layouts that have changed using batchUpdates + func cachedLayout( + batchUpdates: BatchUpdates, + layoutProvider: @escaping (IndexPath) -> Layout, + sectionProvider: (Int, [Layout]) -> Section<[Layout]> = LayoutAdapterCacheHandler.defaultSectionProvider) -> [Section<[Layout]>] { + + let elements = batchUpdates + .updateArray(layouts.map { $0.items }, elementCreationCallback: layoutProvider) + + layouts = elements + .enumerated() + .map { sectionProvider($0.offset, $0.element) } + + return layouts + } + + static func defaultSectionProvider(index: Int, layouts: [Layout]) -> Section<[Layout]> { + return Section(items: layouts) + } +} diff --git a/Sources/Views/LayoutAdapterWithAutomaticBatchUpdates.swift b/Sources/Views/LayoutAdapterWithAutomaticBatchUpdates.swift new file mode 100644 index 00000000..04c14977 --- /dev/null +++ b/Sources/Views/LayoutAdapterWithAutomaticBatchUpdates.swift @@ -0,0 +1,33 @@ +public class LayoutAdapterWithAutomaticBatchUpdates { + var viewModel = [[Any]]() + + let layoutAdapter: LayoutAdapterCacheHandler + + public init(layoutAdapter: LayoutAdapterCacheHandler) { + self.layoutAdapter = layoutAdapter + } + + /// Reloads data and automaticaly calculates and performs animations + public func reload( + viewModel: [[Any]], + elementCompareCallback: @escaping (Any, Any) -> Bool = { _ in return false }, + layoutProvider: @escaping (IndexPath) -> Layout, + animated: Bool = true, + completion: (() -> Void)? = nil) { + let batchUpdates = BatchUpdates + .calculate( + old: self.viewModel.filter { $0.count > 0}, + new: viewModel.filter { $0.count > 0 }, + elementCompareCallback: elementCompareCallback + ) + + self.viewModel = viewModel + + layoutAdapter.reload( + batchUpdates: batchUpdates, + layoutProvider: layoutProvider, + animated: animated, + completion: completion + ) + } +} From e2452499250f25e94a0d7b787202abb249968e30 Mon Sep 17 00:00:00 2001 From: Ivan Rep Date: Tue, 16 May 2017 19:35:12 +0200 Subject: [PATCH 3/3] Removed .orig files --- LayoutKit.xcodeproj/project.pbxproj.orig | 2362 ---------------------- 1 file changed, 2362 deletions(-) delete mode 100644 LayoutKit.xcodeproj/project.pbxproj.orig diff --git a/LayoutKit.xcodeproj/project.pbxproj.orig b/LayoutKit.xcodeproj/project.pbxproj.orig deleted file mode 100644 index 8f0895f9..00000000 --- a/LayoutKit.xcodeproj/project.pbxproj.orig +++ /dev/null @@ -1,2362 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 0B193BB81D887BCF00FCA22D /* CollectionExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B193BB61D887BCF00FCA22D /* CollectionExtension.swift */; }; - 0B193BB91D887BCF00FCA22D /* IndexSetExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B193BB71D887BCF00FCA22D /* IndexSetExtension.swift */; }; - 0B193BBA1D888B6300FCA22D /* IndexSetExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B193BB71D887BCF00FCA22D /* IndexSetExtension.swift */; }; - 0B193BBB1D888B6400FCA22D /* IndexSetExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B193BB71D887BCF00FCA22D /* IndexSetExtension.swift */; }; - 0B193BBC1D888B6D00FCA22D /* CollectionExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B193BB61D887BCF00FCA22D /* CollectionExtension.swift */; }; - 0B193BBD1D888B6D00FCA22D /* CollectionExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B193BB61D887BCF00FCA22D /* CollectionExtension.swift */; }; - 0B2D09231D872F75007E487C /* AlignmentTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76531D8725310065E02A /* AlignmentTests.swift */; }; - 0B2D09251D872F75007E487C /* CollectionViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76551D8725310065E02A /* CollectionViewTests.swift */; }; - 0B2D09261D872F75007E487C /* DensityAssertions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76561D8725310065E02A /* DensityAssertions.swift */; }; - 0B2D09271D872F75007E487C /* InsetLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76571D8725310065E02A /* InsetLayoutTests.swift */; }; - 0B2D09281D872F75007E487C /* LabelLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76581D8725310065E02A /* LabelLayoutTests.swift */; }; - 0B2D09291D872F75007E487C /* LayoutArrangementTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76591D8725310065E02A /* LayoutArrangementTests.swift */; }; - 0B2D092C1D872F75007E487C /* ReloadableViewLayoutAdapterCollectionViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB765C1D8725310065E02A /* ReloadableViewLayoutAdapterCollectionViewTests.swift */; }; - 0B2D092D1D872F75007E487C /* ReloadableViewLayoutAdapterTableViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB765D1D8725310065E02A /* ReloadableViewLayoutAdapterTableViewTests.swift */; }; - 0B2D092E1D872F75007E487C /* ReloadableViewLayoutAdapterTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB765E1D8725310065E02A /* ReloadableViewLayoutAdapterTestCase.swift */; }; - 0B2D092F1D872F75007E487C /* SizeLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB765F1D8725310065E02A /* SizeLayoutTests.swift */; }; - 0B2D09301D872F75007E487C /* StackLayoutDistributionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76601D8725310065E02A /* StackLayoutDistributionTests.swift */; }; - 0B2D09311D872F75007E487C /* StackLayoutFlexibilityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76611D8725310065E02A /* StackLayoutFlexibilityTests.swift */; }; - 0B2D09321D872F75007E487C /* StackLayoutSpacingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76621D8725310065E02A /* StackLayoutSpacingTests.swift */; }; - 0B2D09331D872F75007E487C /* StackLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76631D8725310065E02A /* StackLayoutTests.swift */; }; - 0B2D09341D872F75007E487C /* StackViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76641D8725310065E02A /* StackViewTests.swift */; }; - 0B2D09351D872F75007E487C /* TableViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76651D8725310065E02A /* TableViewTests.swift */; }; - 0B2D09361D872F75007E487C /* TestStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76661D8725310065E02A /* TestStack.swift */; }; - 0B2D09371D872F75007E487C /* UIFontExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76671D8725310065E02A /* UIFontExtension.swift */; }; - 0B2D09381D872F75007E487C /* ViewRecyclerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76681D8725310065E02A /* ViewRecyclerTests.swift */; }; - 0B2D09391D872F75007E487C /* AlignmentTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76531D8725310065E02A /* AlignmentTests.swift */; }; - 0B2D093B1D872F75007E487C /* CollectionViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76551D8725310065E02A /* CollectionViewTests.swift */; }; - 0B2D093C1D872F75007E487C /* DensityAssertions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76561D8725310065E02A /* DensityAssertions.swift */; }; - 0B2D093D1D872F75007E487C /* InsetLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76571D8725310065E02A /* InsetLayoutTests.swift */; }; - 0B2D093E1D872F75007E487C /* LabelLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76581D8725310065E02A /* LabelLayoutTests.swift */; }; - 0B2D093F1D872F75007E487C /* LayoutArrangementTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76591D8725310065E02A /* LayoutArrangementTests.swift */; }; - 0B2D09421D872F75007E487C /* ReloadableViewLayoutAdapterCollectionViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB765C1D8725310065E02A /* ReloadableViewLayoutAdapterCollectionViewTests.swift */; }; - 0B2D09431D872F75007E487C /* ReloadableViewLayoutAdapterTableViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB765D1D8725310065E02A /* ReloadableViewLayoutAdapterTableViewTests.swift */; }; - 0B2D09441D872F75007E487C /* ReloadableViewLayoutAdapterTestCase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB765E1D8725310065E02A /* ReloadableViewLayoutAdapterTestCase.swift */; }; - 0B2D09451D872F75007E487C /* SizeLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB765F1D8725310065E02A /* SizeLayoutTests.swift */; }; - 0B2D09461D872F75007E487C /* StackLayoutDistributionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76601D8725310065E02A /* StackLayoutDistributionTests.swift */; }; - 0B2D09471D872F75007E487C /* StackLayoutFlexibilityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76611D8725310065E02A /* StackLayoutFlexibilityTests.swift */; }; - 0B2D09481D872F75007E487C /* StackLayoutSpacingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76621D8725310065E02A /* StackLayoutSpacingTests.swift */; }; - 0B2D09491D872F75007E487C /* StackLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76631D8725310065E02A /* StackLayoutTests.swift */; }; - 0B2D094A1D872F75007E487C /* StackViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76641D8725310065E02A /* StackViewTests.swift */; }; - 0B2D094B1D872F75007E487C /* TableViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76651D8725310065E02A /* TableViewTests.swift */; }; - 0B2D094C1D872F75007E487C /* TestStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76661D8725310065E02A /* TestStack.swift */; }; - 0B2D094D1D872F75007E487C /* UIFontExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76671D8725310065E02A /* UIFontExtension.swift */; }; - 0B2D094E1D872F75007E487C /* ViewRecyclerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76681D8725310065E02A /* ViewRecyclerTests.swift */; }; - 0B2D094F1D872F76007E487C /* AlignmentTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76531D8725310065E02A /* AlignmentTests.swift */; }; - 0B2D09521D872F76007E487C /* DensityAssertions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76561D8725310065E02A /* DensityAssertions.swift */; }; - 0B2D09531D872F76007E487C /* InsetLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76571D8725310065E02A /* InsetLayoutTests.swift */; }; - 0B2D095B1D872F76007E487C /* SizeLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB765F1D8725310065E02A /* SizeLayoutTests.swift */; }; - 0B2D095C1D872F76007E487C /* StackLayoutDistributionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76601D8725310065E02A /* StackLayoutDistributionTests.swift */; }; - 0B2D095D1D872F76007E487C /* StackLayoutFlexibilityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76611D8725310065E02A /* StackLayoutFlexibilityTests.swift */; }; - 0B2D095E1D872F76007E487C /* StackLayoutSpacingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76621D8725310065E02A /* StackLayoutSpacingTests.swift */; }; - 0B2D095F1D872F76007E487C /* StackLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76631D8725310065E02A /* StackLayoutTests.swift */; }; - 0B2D09621D872F76007E487C /* TestStack.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76661D8725310065E02A /* TestStack.swift */; }; - 0B2D09641D872F76007E487C /* ViewRecyclerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76681D8725310065E02A /* ViewRecyclerTests.swift */; }; - 0B2D096E1D8734DB007E487C /* CircleImagePileLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09651D8734DB007E487C /* CircleImagePileLayout.swift */; }; - 0B2D096F1D8734DB007E487C /* DividerStackLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09661D8734DB007E487C /* DividerStackLayout.swift */; }; - 0B2D09701D8734DB007E487C /* FeedItemLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09671D8734DB007E487C /* FeedItemLayout.swift */; }; - 0B2D09711D8734DB007E487C /* FixedWidthCellCollectionViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09681D8734DB007E487C /* FixedWidthCellCollectionViewLayout.swift */; }; - 0B2D09721D8734DB007E487C /* HelloWorldAutoLayoutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09691D8734DB007E487C /* HelloWorldAutoLayoutView.swift */; }; - 0B2D09731D8734DB007E487C /* HelloWorldLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D096A1D8734DB007E487C /* HelloWorldLayout.swift */; }; - 0B2D09741D8734DB007E487C /* MiniProfileLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D096B1D8734DB007E487C /* MiniProfileLayout.swift */; }; - 0B2D09751D8734DB007E487C /* ProfileCardLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D096C1D8734DB007E487C /* ProfileCardLayout.swift */; }; - 0B2D09761D8734DB007E487C /* SkillsCardLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D096D1D8734DB007E487C /* SkillsCardLayout.swift */; }; - 0B2D09E01D87365F007E487C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09C21D87365F007E487C /* AppDelegate.swift */; }; - 0B2D09E11D87365F007E487C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0B2D09C31D87365F007E487C /* Assets.xcassets */; }; - 0B2D09E21D87365F007E487C /* BackgroundMiniProfileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09C41D87365F007E487C /* BackgroundMiniProfileViewController.swift */; }; - 0B2D09E31D87365F007E487C /* BatchUpdatesBaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09C51D87365F007E487C /* BatchUpdatesBaseViewController.swift */; }; - 0B2D09E41D87365F007E487C /* BatchUpdatesCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09C61D87365F007E487C /* BatchUpdatesCollectionViewController.swift */; }; - 0B2D09E51D87365F007E487C /* BatchUpdatesTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09C71D87365F007E487C /* BatchUpdatesTableViewController.swift */; }; - 0B2D09E61D87365F007E487C /* BenchmarkViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09C91D87365F007E487C /* BenchmarkViewController.swift */; }; - 0B2D09E71D87365F007E487C /* CollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09CA1D87365F007E487C /* CollectionViewController.swift */; }; - 0B2D09E81D87365F007E487C /* DataBinder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09CB1D87365F007E487C /* DataBinder.swift */; }; - 0B2D09E91D87365F007E487C /* FeedItemAutoLayoutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09CC1D87365F007E487C /* FeedItemAutoLayoutView.swift */; }; - 0B2D09EA1D87365F007E487C /* FeedItemData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09CD1D87365F007E487C /* FeedItemData.swift */; }; - 0B2D09EB1D87365F007E487C /* FeedItemLayoutKitView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09CE1D87365F007E487C /* FeedItemLayoutKitView.swift */; }; - 0B2D09EC1D87365F007E487C /* FeedItemManualView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09CF1D87365F007E487C /* FeedItemManualView.swift */; }; - 0B2D09ED1D87365F007E487C /* FeedItemUIStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09D01D87365F007E487C /* FeedItemUIStackView.swift */; }; - 0B2D09EE1D87365F007E487C /* Stopwatch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09D11D87365F007E487C /* Stopwatch.swift */; }; - 0B2D09EF1D87365F007E487C /* TableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09D21D87365F007E487C /* TableViewController.swift */; }; - 0B2D09F01D87365F007E487C /* FeedBaseViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09D31D87365F007E487C /* FeedBaseViewController.swift */; }; - 0B2D09F11D87365F007E487C /* FeedCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09D41D87365F007E487C /* FeedCollectionViewController.swift */; }; - 0B2D09F21D87365F007E487C /* FeedScrollViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09D51D87365F007E487C /* FeedScrollViewController.swift */; }; - 0B2D09F31D87365F007E487C /* FeedTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09D61D87365F007E487C /* FeedTableViewController.swift */; }; - 0B2D09F41D87365F007E487C /* ForegroundProfileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09D71D87365F007E487C /* ForegroundProfileViewController.swift */; }; - 0B2D09F51D87365F007E487C /* LabledImageLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09D81D87365F007E487C /* LabledImageLayout.swift */; }; - 0B2D09F61D87365F007E487C /* MenuViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09D91D87365F007E487C /* MenuViewController.swift */; }; - 0B2D09F71D87365F007E487C /* NestedCollectionViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09DA1D87365F007E487C /* NestedCollectionViewController.swift */; }; - 0B2D09F81D87365F007E487C /* StackViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09DB1D87365F007E487C /* StackViewController.swift */; }; - 0B2D09F91D87365F007E487C /* UrlImageLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B2D09DC1D87365F007E487C /* UrlImageLayout.swift */; }; - 0B2D09FC1D873726007E487C /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 0B2D09FB1D873726007E487C /* LaunchScreen.xib */; }; - 0B6B04371DC8402E00F23EEA /* DWURecyclingAlert.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B6B04361DC8402E00F23EEA /* DWURecyclingAlert.m */; }; - 0B6B04381DC8470200F23EEA /* LayoutKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BCB755F1D8720110065E02A /* LayoutKit.framework */; }; - 0B6B04391DC8470200F23EEA /* LayoutKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0BCB755F1D8720110065E02A /* LayoutKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 0B6B043B1DC8472A00F23EEA /* ExampleLayouts.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BCB75B61D8723B30065E02A /* ExampleLayouts.framework */; }; - 0B6B043C1DC8472A00F23EEA /* ExampleLayouts.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 0BCB75B61D8723B30065E02A /* ExampleLayouts.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 0B765F2C1DC0514F000BF1FD /* CGFloatExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B765F2B1DC0514F000BF1FD /* CGFloatExtension.swift */; }; - 0B765F2D1DC0514F000BF1FD /* CGFloatExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B765F2B1DC0514F000BF1FD /* CGFloatExtension.swift */; }; - 0B765F301DC135B8000BF1FD /* CGFloatExtensionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B765F2F1DC135B8000BF1FD /* CGFloatExtensionTests.swift */; }; - 0B765F311DC135B8000BF1FD /* CGFloatExtensionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B765F2F1DC135B8000BF1FD /* CGFloatExtensionTests.swift */; }; - 0B8C078B1DC3E881001CD5EE /* ButtonLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BD5F8281DB43B4500108688 /* ButtonLayout.swift */; }; - 0B8C078C1DC3E88A001CD5EE /* ButtonLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BD5F82B1DB43F9B00108688 /* ButtonLayoutTests.swift */; }; - 0BA02E481D874BBB00F1E8D3 /* LayoutArrangementTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB76591D8725310065E02A /* LayoutArrangementTests.swift */; }; - 0BB380DB1DB73EFF00E2614F /* TextExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BB380DA1DB73EFF00E2614F /* TextExtension.swift */; }; - 0BB380DC1DB73EFF00E2614F /* TextExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BB380DA1DB73EFF00E2614F /* TextExtension.swift */; }; - 0BCB75691D8720110065E02A /* LayoutKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BCB755F1D8720110065E02A /* LayoutKit.framework */; }; - 0BCB75701D8720110065E02A /* LayoutKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BCB75621D8720110065E02A /* LayoutKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0BCB75851D8721370065E02A /* LayoutKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BCB757C1D8721370065E02A /* LayoutKit.framework */; }; - 0BCB75A11D8722370065E02A /* LayoutKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BCB75981D8722370065E02A /* LayoutKit.framework */; }; - 0BCB75B01D8722BD0065E02A /* LayoutKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BCB75621D8720110065E02A /* LayoutKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0BCB75BA1D8723B30065E02A /* ExampleLayouts.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BCB75B81D8723B30065E02A /* ExampleLayouts.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0BCB75F61D8724800065E02A /* Alignment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D41D8724800065E02A /* Alignment.swift */; }; - 0BCB75F71D8724800065E02A /* Animation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D51D8724800065E02A /* Animation.swift */; }; - 0BCB75F91D8724800065E02A /* Axis.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D71D8724800065E02A /* Axis.swift */; }; - 0BCB75FA1D8724800065E02A /* ConfigurableLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D81D8724800065E02A /* ConfigurableLayout.swift */; }; - 0BCB75FB1D8724800065E02A /* Flexibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D91D8724800065E02A /* Flexibility.swift */; }; - 0BCB75FC1D8724800065E02A /* CFAbsoluteTimeExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DB1D8724800065E02A /* CFAbsoluteTimeExtension.swift */; }; - 0BCB75FD1D8724800065E02A /* CGSizeExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DC1D8724800065E02A /* CGSizeExtension.swift */; }; - 0BCB75FE1D8724800065E02A /* Layout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DD1D8724800065E02A /* Layout.swift */; }; - 0BCB75FF1D8724800065E02A /* LayoutArrangement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DE1D8724800065E02A /* LayoutArrangement.swift */; }; - 0BCB76001D8724800065E02A /* LayoutMeasurement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DF1D8724800065E02A /* LayoutMeasurement.swift */; }; - 0BCB76011D8724800065E02A /* BaseLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E11D8724800065E02A /* BaseLayout.swift */; }; - 0BCB76021D8724800065E02A /* InsetLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E21D8724800065E02A /* InsetLayout.swift */; }; - 0BCB76031D8724800065E02A /* LabelLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E31D8724800065E02A /* LabelLayout.swift */; }; - 0BCB76041D8724800065E02A /* SizeLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E41D8724800065E02A /* SizeLayout.swift */; }; - 0BCB76051D8724800065E02A /* StackLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E51D8724800065E02A /* StackLayout.swift */; }; - 0BCB76061D8724800065E02A /* AxisFlexibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E71D8724800065E02A /* AxisFlexibility.swift */; }; - 0BCB76071D8724800065E02A /* AxisPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E81D8724800065E02A /* AxisPoint.swift */; }; - 0BCB76081D8724800065E02A /* AxisSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E91D8724800065E02A /* AxisSize.swift */; }; - 0BCB76091D8724800065E02A /* UIKitSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EA1D8724800065E02A /* UIKitSupport.swift */; }; - 0BCB760A1D8724800065E02A /* ViewRecycler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EB1D8724800065E02A /* ViewRecycler.swift */; }; - 0BCB760B1D8724800065E02A /* BatchUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75ED1D8724800065E02A /* BatchUpdates.swift */; }; - 0BCB760C1D8724800065E02A /* LayoutAdapterCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EE1D8724800065E02A /* LayoutAdapterCollectionView.swift */; }; - 0BCB760D1D8724800065E02A /* LayoutAdapterTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EF1D8724800065E02A /* LayoutAdapterTableView.swift */; }; - 0BCB760E1D8724800065E02A /* ReloadableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F01D8724800065E02A /* ReloadableView.swift */; }; - 0BCB760F1D8724800065E02A /* ReloadableViewLayoutAdapter+UICollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F11D8724800065E02A /* ReloadableViewLayoutAdapter+UICollectionView.swift */; }; - 0BCB76101D8724800065E02A /* ReloadableViewLayoutAdapter+UITableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F21D8724800065E02A /* ReloadableViewLayoutAdapter+UITableView.swift */; }; - 0BCB76111D8724800065E02A /* ReloadableViewLayoutAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F31D8724800065E02A /* ReloadableViewLayoutAdapter.swift */; }; - 0BCB76121D8724800065E02A /* ReloadableViewUpdateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F41D8724800065E02A /* ReloadableViewUpdateManager.swift */; }; - 0BCB76131D8724800065E02A /* StackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F51D8724800065E02A /* StackView.swift */; }; - 0BCB76141D8724C00065E02A /* Alignment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D41D8724800065E02A /* Alignment.swift */; }; - 0BCB76151D8724C00065E02A /* Animation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D51D8724800065E02A /* Animation.swift */; }; - 0BCB76171D8724C00065E02A /* Axis.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D71D8724800065E02A /* Axis.swift */; }; - 0BCB76181D8724C00065E02A /* ConfigurableLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D81D8724800065E02A /* ConfigurableLayout.swift */; }; - 0BCB76191D8724C00065E02A /* Flexibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D91D8724800065E02A /* Flexibility.swift */; }; - 0BCB761A1D8724C10065E02A /* Alignment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D41D8724800065E02A /* Alignment.swift */; }; - 0BCB761B1D8724C10065E02A /* Animation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D51D8724800065E02A /* Animation.swift */; }; - 0BCB761C1D8724C10065E02A /* AppKitSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D61D8724800065E02A /* AppKitSupport.swift */; }; - 0BCB761D1D8724C10065E02A /* Axis.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D71D8724800065E02A /* Axis.swift */; }; - 0BCB761E1D8724C10065E02A /* ConfigurableLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D81D8724800065E02A /* ConfigurableLayout.swift */; }; - 0BCB761F1D8724C10065E02A /* Flexibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D91D8724800065E02A /* Flexibility.swift */; }; - 0BCB762B1D8724C70065E02A /* CFAbsoluteTimeExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DB1D8724800065E02A /* CFAbsoluteTimeExtension.swift */; }; - 0BCB762C1D8724C70065E02A /* CGSizeExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DC1D8724800065E02A /* CGSizeExtension.swift */; }; - 0BCB762D1D8724C70065E02A /* Layout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DD1D8724800065E02A /* Layout.swift */; }; - 0BCB762E1D8724C70065E02A /* LayoutArrangement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DE1D8724800065E02A /* LayoutArrangement.swift */; }; - 0BCB762F1D8724C70065E02A /* LayoutKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BCB75621D8720110065E02A /* LayoutKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0BCB76301D8724C70065E02A /* LayoutMeasurement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DF1D8724800065E02A /* LayoutMeasurement.swift */; }; - 0BCB76311D8724C70065E02A /* CFAbsoluteTimeExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DB1D8724800065E02A /* CFAbsoluteTimeExtension.swift */; }; - 0BCB76321D8724C70065E02A /* CGSizeExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DC1D8724800065E02A /* CGSizeExtension.swift */; }; - 0BCB76331D8724C70065E02A /* Layout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DD1D8724800065E02A /* Layout.swift */; }; - 0BCB76341D8724C70065E02A /* LayoutArrangement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DE1D8724800065E02A /* LayoutArrangement.swift */; }; - 0BCB76351D8724C70065E02A /* LayoutMeasurement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DF1D8724800065E02A /* LayoutMeasurement.swift */; }; - 0BCB76361D8724CA0065E02A /* BaseLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E11D8724800065E02A /* BaseLayout.swift */; }; - 0BCB76371D8724CA0065E02A /* InsetLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E21D8724800065E02A /* InsetLayout.swift */; }; - 0BCB76381D8724CA0065E02A /* LabelLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E31D8724800065E02A /* LabelLayout.swift */; }; - 0BCB76391D8724CA0065E02A /* SizeLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E41D8724800065E02A /* SizeLayout.swift */; }; - 0BCB763A1D8724CA0065E02A /* StackLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E51D8724800065E02A /* StackLayout.swift */; }; - 0BCB763B1D8724CB0065E02A /* BaseLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E11D8724800065E02A /* BaseLayout.swift */; }; - 0BCB763C1D8724CB0065E02A /* InsetLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E21D8724800065E02A /* InsetLayout.swift */; }; - 0BCB763E1D8724CB0065E02A /* SizeLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E41D8724800065E02A /* SizeLayout.swift */; }; - 0BCB763F1D8724CB0065E02A /* StackLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E51D8724800065E02A /* StackLayout.swift */; }; - 0BCB76401D8724CF0065E02A /* AxisFlexibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E71D8724800065E02A /* AxisFlexibility.swift */; }; - 0BCB76411D8724CF0065E02A /* AxisPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E81D8724800065E02A /* AxisPoint.swift */; }; - 0BCB76421D8724CF0065E02A /* AxisSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E91D8724800065E02A /* AxisSize.swift */; }; - 0BCB76431D8724CF0065E02A /* UIKitSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EA1D8724800065E02A /* UIKitSupport.swift */; }; - 0BCB76441D8724CF0065E02A /* ViewRecycler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EB1D8724800065E02A /* ViewRecycler.swift */; }; - 0BCB76451D8724D00065E02A /* AxisFlexibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E71D8724800065E02A /* AxisFlexibility.swift */; }; - 0BCB76461D8724D00065E02A /* AxisPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E81D8724800065E02A /* AxisPoint.swift */; }; - 0BCB76471D8724D00065E02A /* AxisSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E91D8724800065E02A /* AxisSize.swift */; }; - 0BCB76491D8724D00065E02A /* ViewRecycler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EB1D8724800065E02A /* ViewRecycler.swift */; }; - 0BCB764A1D8724E70065E02A /* BatchUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75ED1D8724800065E02A /* BatchUpdates.swift */; }; - 0BCB764B1D8724E70065E02A /* LayoutAdapterCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EE1D8724800065E02A /* LayoutAdapterCollectionView.swift */; }; - 0BCB764C1D8724E70065E02A /* LayoutAdapterTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EF1D8724800065E02A /* LayoutAdapterTableView.swift */; }; - 0BCB764D1D8724E70065E02A /* ReloadableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F01D8724800065E02A /* ReloadableView.swift */; }; - 0BCB764E1D8724E70065E02A /* ReloadableViewLayoutAdapter+UICollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F11D8724800065E02A /* ReloadableViewLayoutAdapter+UICollectionView.swift */; }; - 0BCB764F1D8724E70065E02A /* ReloadableViewLayoutAdapter+UITableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F21D8724800065E02A /* ReloadableViewLayoutAdapter+UITableView.swift */; }; - 0BCB76501D8724E70065E02A /* ReloadableViewLayoutAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F31D8724800065E02A /* ReloadableViewLayoutAdapter.swift */; }; - 0BCB76511D8724E70065E02A /* ReloadableViewUpdateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F41D8724800065E02A /* ReloadableViewUpdateManager.swift */; }; - 0BCB76521D8724E70065E02A /* StackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F51D8724800065E02A /* StackView.swift */; }; - 0BD42BDC1DB5EAAD00E04AA3 /* Text.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BD42BDB1DB5EAAD00E04AA3 /* Text.swift */; }; - 0BD42BDD1DB5EC8800E04AA3 /* Text.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BD42BDB1DB5EAAD00E04AA3 /* Text.swift */; }; - 0BD5F8291DB43B4500108688 /* ButtonLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BD5F8281DB43B4500108688 /* ButtonLayout.swift */; }; - 0BD5F82C1DB43F9B00108688 /* ButtonLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BD5F82B1DB43F9B00108688 /* ButtonLayoutTests.swift */; }; - 0BDDF95B1E25ACCE008B0A6F /* ReloadableViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BDDF95A1E25ACCE008B0A6F /* ReloadableViewTests.swift */; }; - 0BDDF95C1E25ACCE008B0A6F /* ReloadableViewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BDDF95A1E25ACCE008B0A6F /* ReloadableViewTests.swift */; }; - 4468A31D1E46460B00341D07 /* NSAttributedStringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4468A31C1E46460B00341D07 /* NSAttributedStringExtension.swift */; }; - 4468A31E1E464A3900341D07 /* NSAttributedStringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4468A31C1E46460B00341D07 /* NSAttributedStringExtension.swift */; }; - 448CEC0F1E4E0CB500F8AD9E /* TextViewDefaultFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 448CEC0E1E4E0CB500F8AD9E /* TextViewDefaultFont.swift */; }; - 448CEC101E4E0CEE00F8AD9E /* TextViewDefaultFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 448CEC0E1E4E0CB500F8AD9E /* TextViewDefaultFont.swift */; }; - 44F968151E425F5D00392763 /* TextViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44F968141E425F5D00392763 /* TextViewLayout.swift */; }; - 44F968181E4263DC00392763 /* TextViewLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44F968161E42639500392763 /* TextViewLayoutTests.swift */; }; - 44F968191E4263DC00392763 /* TextViewLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44F968161E42639500392763 /* TextViewLayoutTests.swift */; }; - 44F9681A1E42640400392763 /* TextViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44F968141E425F5D00392763 /* TextViewLayout.swift */; }; - 75D94A361EA01B6A00A5FD01 /* OverlayLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A351EA01B6A00A5FD01 /* OverlayLayout.swift */; }; - 75D94A371EA01B7100A5FD01 /* OverlayLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A351EA01B6A00A5FD01 /* OverlayLayout.swift */; }; - 75D94A381EA01B7200A5FD01 /* OverlayLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A351EA01B6A00A5FD01 /* OverlayLayout.swift */; }; - 75D94A3B1EA045F100A5FD01 /* OverlayLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A3A1EA045F100A5FD01 /* OverlayLayoutTests.swift */; }; - 75D94A3C1EA045F100A5FD01 /* OverlayLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A3A1EA045F100A5FD01 /* OverlayLayoutTests.swift */; }; - 75D94A3D1EA045F100A5FD01 /* OverlayLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A3A1EA045F100A5FD01 /* OverlayLayoutTests.swift */; }; - 75D94A401EA05D5A00A5FD01 /* OverlayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A3F1EA05D5A00A5FD01 /* OverlayViewController.swift */; }; - AD2C36441EA5AFB500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD2C36421EA5AF9500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift */; }; - ADE5FCC11EA5B5F3006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADE5FCBF1EA5B5C8006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift */; }; - F6A1A8F51ECAEFC80058DF07 /* LayoutAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8F41ECAEFC80058DF07 /* LayoutAdapter.swift */; }; -<<<<<<< HEAD - F6A1A8F71ECAF0920058DF07 /* LayoutAdapterWithCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8F61ECAF0920058DF07 /* LayoutAdapterWithCache.swift */; }; -======= - F6A1A8F71ECAF0920058DF07 /* LayoutAdapterCacheHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8F61ECAF0920058DF07 /* LayoutAdapterCacheHandler.swift */; }; ->>>>>>> LayoutAdapter with cached layouts - F6A1A8F91ECAF1040058DF07 /* BatchUpdatesArrayUpdate.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8F81ECAF1040058DF07 /* BatchUpdatesArrayUpdate.swift */; }; - F6A1A8FB1ECAF1380058DF07 /* SafeArray.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8FA1ECAF1380058DF07 /* SafeArray.swift */; }; - F6A1A8FE1ECB07AF0058DF07 /* BatchUpdatesArrayUpdateTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A8FC1ECB03B90058DF07 /* BatchUpdatesArrayUpdateTest.swift */; }; - F6A1A9021ECB09880058DF07 /* SafeArrayTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A9001ECB08FA0058DF07 /* SafeArrayTest.swift */; }; - F6A1A90E1ECB513B0058DF07 /* LayoutAdapterWithCacheTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A90C1ECB510E0058DF07 /* LayoutAdapterWithCacheTest.swift */; }; -<<<<<<< HEAD -======= - F6A1A9101ECB661F0058DF07 /* LayoutAdapterWithAutomaticBatchUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A90F1ECB661F0058DF07 /* LayoutAdapterWithAutomaticBatchUpdates.swift */; }; - F6A1A9121ECB66500058DF07 /* BatchUpdatesFromArrayDifference.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A9111ECB66500058DF07 /* BatchUpdatesFromArrayDifference.swift */; }; - F6A1A9151ECB66C00058DF07 /* BatchUpdatesFromArrayDifferenceTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6A1A9131ECB66AD0058DF07 /* BatchUpdatesFromArrayDifferenceTest.swift */; }; ->>>>>>> LayoutAdapter with cached layouts -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 0B2D09FD1D873777007E487C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0BCB75541D871FC40065E02A /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0BCB755E1D8720110065E02A; - remoteInfo = "LayoutKit-iOS"; - }; - 0B2D09FF1D873777007E487C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0BCB75541D871FC40065E02A /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0BCB75B51D8723B30065E02A; - remoteInfo = "ExampleLayouts-iOS"; - }; - 0B2D0A011D87377F007E487C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0BCB75541D871FC40065E02A /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0BCB755E1D8720110065E02A; - remoteInfo = "LayoutKit-iOS"; - }; - 0BCB756A1D8720110065E02A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0BCB75541D871FC40065E02A /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0BCB755E1D8720110065E02A; - remoteInfo = "LayoutKit-iOS"; - }; - 0BCB75861D8721370065E02A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0BCB75541D871FC40065E02A /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0BCB757B1D8721370065E02A; - remoteInfo = "LayoutKit-tvOS"; - }; - 0BCB75A21D8722370065E02A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 0BCB75541D871FC40065E02A /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0BCB75971D8722370065E02A; - remoteInfo = "LayoutKit-macOS"; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 0B6B043A1DC8470200F23EEA /* Embed Frameworks */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 10; - files = ( - 0B6B043C1DC8472A00F23EEA /* ExampleLayouts.framework in Embed Frameworks */, - 0B6B04391DC8470200F23EEA /* LayoutKit.framework in Embed Frameworks */, - ); - name = "Embed Frameworks"; - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 0B193BB61D887BCF00FCA22D /* CollectionExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionExtension.swift; sourceTree = ""; }; - 0B193BB71D887BCF00FCA22D /* IndexSetExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IndexSetExtension.swift; sourceTree = ""; }; - 0B2D09651D8734DB007E487C /* CircleImagePileLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CircleImagePileLayout.swift; sourceTree = ""; }; - 0B2D09661D8734DB007E487C /* DividerStackLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DividerStackLayout.swift; sourceTree = ""; }; - 0B2D09671D8734DB007E487C /* FeedItemLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedItemLayout.swift; sourceTree = ""; }; - 0B2D09681D8734DB007E487C /* FixedWidthCellCollectionViewLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FixedWidthCellCollectionViewLayout.swift; sourceTree = ""; }; - 0B2D09691D8734DB007E487C /* HelloWorldAutoLayoutView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HelloWorldAutoLayoutView.swift; sourceTree = ""; }; - 0B2D096A1D8734DB007E487C /* HelloWorldLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HelloWorldLayout.swift; sourceTree = ""; }; - 0B2D096B1D8734DB007E487C /* MiniProfileLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MiniProfileLayout.swift; sourceTree = ""; }; - 0B2D096C1D8734DB007E487C /* ProfileCardLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ProfileCardLayout.swift; sourceTree = ""; }; - 0B2D096D1D8734DB007E487C /* SkillsCardLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SkillsCardLayout.swift; sourceTree = ""; }; - 0B2D09B01D8735E1007E487C /* LayoutKitSampleApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LayoutKitSampleApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; - 0B2D09BE1D8735E1007E487C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 0B2D09C21D87365F007E487C /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 0B2D09C31D87365F007E487C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; - 0B2D09C41D87365F007E487C /* BackgroundMiniProfileViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BackgroundMiniProfileViewController.swift; sourceTree = ""; }; - 0B2D09C51D87365F007E487C /* BatchUpdatesBaseViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdatesBaseViewController.swift; sourceTree = ""; }; - 0B2D09C61D87365F007E487C /* BatchUpdatesCollectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdatesCollectionViewController.swift; sourceTree = ""; }; - 0B2D09C71D87365F007E487C /* BatchUpdatesTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdatesTableViewController.swift; sourceTree = ""; }; - 0B2D09C91D87365F007E487C /* BenchmarkViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BenchmarkViewController.swift; sourceTree = ""; }; - 0B2D09CA1D87365F007E487C /* CollectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewController.swift; sourceTree = ""; }; - 0B2D09CB1D87365F007E487C /* DataBinder.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataBinder.swift; sourceTree = ""; }; - 0B2D09CC1D87365F007E487C /* FeedItemAutoLayoutView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedItemAutoLayoutView.swift; sourceTree = ""; }; - 0B2D09CD1D87365F007E487C /* FeedItemData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedItemData.swift; sourceTree = ""; }; - 0B2D09CE1D87365F007E487C /* FeedItemLayoutKitView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedItemLayoutKitView.swift; sourceTree = ""; }; - 0B2D09CF1D87365F007E487C /* FeedItemManualView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedItemManualView.swift; sourceTree = ""; }; - 0B2D09D01D87365F007E487C /* FeedItemUIStackView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedItemUIStackView.swift; sourceTree = ""; }; - 0B2D09D11D87365F007E487C /* Stopwatch.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Stopwatch.swift; sourceTree = ""; }; - 0B2D09D21D87365F007E487C /* TableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableViewController.swift; sourceTree = ""; }; - 0B2D09D31D87365F007E487C /* FeedBaseViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedBaseViewController.swift; sourceTree = ""; }; - 0B2D09D41D87365F007E487C /* FeedCollectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedCollectionViewController.swift; sourceTree = ""; }; - 0B2D09D51D87365F007E487C /* FeedScrollViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedScrollViewController.swift; sourceTree = ""; }; - 0B2D09D61D87365F007E487C /* FeedTableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FeedTableViewController.swift; sourceTree = ""; }; - 0B2D09D71D87365F007E487C /* ForegroundProfileViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ForegroundProfileViewController.swift; sourceTree = ""; }; - 0B2D09D81D87365F007E487C /* LabledImageLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LabledImageLayout.swift; sourceTree = ""; }; - 0B2D09D91D87365F007E487C /* MenuViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuViewController.swift; sourceTree = ""; }; - 0B2D09DA1D87365F007E487C /* NestedCollectionViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NestedCollectionViewController.swift; sourceTree = ""; }; - 0B2D09DB1D87365F007E487C /* StackViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StackViewController.swift; sourceTree = ""; }; - 0B2D09DC1D87365F007E487C /* UrlImageLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UrlImageLayout.swift; sourceTree = ""; }; - 0B2D09FB1D873726007E487C /* LaunchScreen.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LaunchScreen.xib; sourceTree = ""; }; - 0B6B04361DC8402E00F23EEA /* DWURecyclingAlert.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DWURecyclingAlert.m; sourceTree = ""; }; - 0B765F2B1DC0514F000BF1FD /* CGFloatExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CGFloatExtension.swift; sourceTree = ""; }; - 0B765F2F1DC135B8000BF1FD /* CGFloatExtensionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CGFloatExtensionTests.swift; sourceTree = ""; }; - 0B7B269E1D919A9200CD1956 /* LayoutKit.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = LayoutKit.playground; sourceTree = ""; }; - 0BB380DA1DB73EFF00E2614F /* TextExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextExtension.swift; sourceTree = ""; }; - 0BCB755F1D8720110065E02A /* LayoutKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LayoutKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0BCB75621D8720110065E02A /* LayoutKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LayoutKit.h; sourceTree = ""; }; - 0BCB75631D8720110065E02A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 0BCB75681D8720110065E02A /* LayoutKit-iOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "LayoutKit-iOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - 0BCB756F1D8720110065E02A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 0BCB757C1D8721370065E02A /* LayoutKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LayoutKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0BCB75841D8721370065E02A /* LayoutKit-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "LayoutKit-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - 0BCB75981D8722370065E02A /* LayoutKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LayoutKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0BCB75A01D8722370065E02A /* LayoutKit-macOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "LayoutKit-macOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; - 0BCB75B61D8723B30065E02A /* ExampleLayouts.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ExampleLayouts.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0BCB75B81D8723B30065E02A /* ExampleLayouts.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ExampleLayouts.h; sourceTree = ""; }; - 0BCB75B91D8723B30065E02A /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 0BCB75D41D8724800065E02A /* Alignment.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Alignment.swift; sourceTree = ""; }; - 0BCB75D51D8724800065E02A /* Animation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Animation.swift; sourceTree = ""; }; - 0BCB75D61D8724800065E02A /* AppKitSupport.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppKitSupport.swift; sourceTree = ""; }; - 0BCB75D71D8724800065E02A /* Axis.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Axis.swift; sourceTree = ""; }; - 0BCB75D81D8724800065E02A /* ConfigurableLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConfigurableLayout.swift; sourceTree = ""; }; - 0BCB75D91D8724800065E02A /* Flexibility.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Flexibility.swift; sourceTree = ""; }; - 0BCB75DB1D8724800065E02A /* CFAbsoluteTimeExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CFAbsoluteTimeExtension.swift; sourceTree = ""; }; - 0BCB75DC1D8724800065E02A /* CGSizeExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CGSizeExtension.swift; sourceTree = ""; }; - 0BCB75DD1D8724800065E02A /* Layout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Layout.swift; sourceTree = ""; }; - 0BCB75DE1D8724800065E02A /* LayoutArrangement.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutArrangement.swift; sourceTree = ""; }; - 0BCB75DF1D8724800065E02A /* LayoutMeasurement.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutMeasurement.swift; sourceTree = ""; }; - 0BCB75E11D8724800065E02A /* BaseLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BaseLayout.swift; sourceTree = ""; }; - 0BCB75E21D8724800065E02A /* InsetLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InsetLayout.swift; sourceTree = ""; }; - 0BCB75E31D8724800065E02A /* LabelLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LabelLayout.swift; sourceTree = ""; }; - 0BCB75E41D8724800065E02A /* SizeLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SizeLayout.swift; sourceTree = ""; }; - 0BCB75E51D8724800065E02A /* StackLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StackLayout.swift; sourceTree = ""; }; - 0BCB75E71D8724800065E02A /* AxisFlexibility.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AxisFlexibility.swift; sourceTree = ""; }; - 0BCB75E81D8724800065E02A /* AxisPoint.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AxisPoint.swift; sourceTree = ""; }; - 0BCB75E91D8724800065E02A /* AxisSize.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AxisSize.swift; sourceTree = ""; }; - 0BCB75EA1D8724800065E02A /* UIKitSupport.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIKitSupport.swift; sourceTree = ""; }; - 0BCB75EB1D8724800065E02A /* ViewRecycler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewRecycler.swift; sourceTree = ""; }; - 0BCB75ED1D8724800065E02A /* BatchUpdates.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdates.swift; sourceTree = ""; }; - 0BCB75EE1D8724800065E02A /* LayoutAdapterCollectionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapterCollectionView.swift; sourceTree = ""; }; - 0BCB75EF1D8724800065E02A /* LayoutAdapterTableView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapterTableView.swift; sourceTree = ""; }; - 0BCB75F01D8724800065E02A /* ReloadableView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableView.swift; sourceTree = ""; }; - 0BCB75F11D8724800065E02A /* ReloadableViewLayoutAdapter+UICollectionView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ReloadableViewLayoutAdapter+UICollectionView.swift"; sourceTree = ""; }; - 0BCB75F21D8724800065E02A /* ReloadableViewLayoutAdapter+UITableView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "ReloadableViewLayoutAdapter+UITableView.swift"; sourceTree = ""; }; - 0BCB75F31D8724800065E02A /* ReloadableViewLayoutAdapter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewLayoutAdapter.swift; sourceTree = ""; }; - 0BCB75F41D8724800065E02A /* ReloadableViewUpdateManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewUpdateManager.swift; sourceTree = ""; }; - 0BCB75F51D8724800065E02A /* StackView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StackView.swift; sourceTree = ""; }; - 0BCB76531D8725310065E02A /* AlignmentTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AlignmentTests.swift; sourceTree = ""; }; - 0BCB76551D8725310065E02A /* CollectionViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CollectionViewTests.swift; sourceTree = ""; }; - 0BCB76561D8725310065E02A /* DensityAssertions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DensityAssertions.swift; sourceTree = ""; }; - 0BCB76571D8725310065E02A /* InsetLayoutTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InsetLayoutTests.swift; sourceTree = ""; }; - 0BCB76581D8725310065E02A /* LabelLayoutTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LabelLayoutTests.swift; sourceTree = ""; }; - 0BCB76591D8725310065E02A /* LayoutArrangementTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutArrangementTests.swift; sourceTree = ""; }; - 0BCB765C1D8725310065E02A /* ReloadableViewLayoutAdapterCollectionViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewLayoutAdapterCollectionViewTests.swift; sourceTree = ""; }; - 0BCB765D1D8725310065E02A /* ReloadableViewLayoutAdapterTableViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewLayoutAdapterTableViewTests.swift; sourceTree = ""; }; - 0BCB765E1D8725310065E02A /* ReloadableViewLayoutAdapterTestCase.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewLayoutAdapterTestCase.swift; sourceTree = ""; }; - 0BCB765F1D8725310065E02A /* SizeLayoutTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SizeLayoutTests.swift; sourceTree = ""; }; - 0BCB76601D8725310065E02A /* StackLayoutDistributionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StackLayoutDistributionTests.swift; sourceTree = ""; }; - 0BCB76611D8725310065E02A /* StackLayoutFlexibilityTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StackLayoutFlexibilityTests.swift; sourceTree = ""; }; - 0BCB76621D8725310065E02A /* StackLayoutSpacingTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StackLayoutSpacingTests.swift; sourceTree = ""; }; - 0BCB76631D8725310065E02A /* StackLayoutTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StackLayoutTests.swift; sourceTree = ""; }; - 0BCB76641D8725310065E02A /* StackViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StackViewTests.swift; sourceTree = ""; }; - 0BCB76651D8725310065E02A /* TableViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableViewTests.swift; sourceTree = ""; }; - 0BCB76661D8725310065E02A /* TestStack.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestStack.swift; sourceTree = ""; }; - 0BCB76671D8725310065E02A /* UIFontExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UIFontExtension.swift; sourceTree = ""; }; - 0BCB76681D8725310065E02A /* ViewRecyclerTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewRecyclerTests.swift; sourceTree = ""; }; - 0BD42BDB1DB5EAAD00E04AA3 /* Text.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Text.swift; sourceTree = ""; }; - 0BD5F8281DB43B4500108688 /* ButtonLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ButtonLayout.swift; sourceTree = ""; }; - 0BD5F82B1DB43F9B00108688 /* ButtonLayoutTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ButtonLayoutTests.swift; sourceTree = ""; }; - 0BDDF95A1E25ACCE008B0A6F /* ReloadableViewTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewTests.swift; sourceTree = ""; }; - 4468A31C1E46460B00341D07 /* NSAttributedStringExtension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSAttributedStringExtension.swift; sourceTree = ""; }; - 448CEC0E1E4E0CB500F8AD9E /* TextViewDefaultFont.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextViewDefaultFont.swift; sourceTree = ""; }; - 44F968141E425F5D00392763 /* TextViewLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextViewLayout.swift; sourceTree = ""; }; - 44F968161E42639500392763 /* TextViewLayoutTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TextViewLayoutTests.swift; sourceTree = ""; }; - 75D94A351EA01B6A00A5FD01 /* OverlayLayout.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OverlayLayout.swift; sourceTree = ""; }; - 75D94A3A1EA045F100A5FD01 /* OverlayLayoutTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OverlayLayoutTests.swift; sourceTree = ""; }; - 75D94A3F1EA05D5A00A5FD01 /* OverlayViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OverlayViewController.swift; sourceTree = ""; }; - AD2C36421EA5AF9500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift; sourceTree = ""; }; - ADE5FCBF1EA5B5C8006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewLayoutAdapterTableViewOverrideTests.swift; sourceTree = ""; }; - F6A1A8F41ECAEFC80058DF07 /* LayoutAdapter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapter.swift; sourceTree = ""; }; -<<<<<<< HEAD - F6A1A8F61ECAF0920058DF07 /* LayoutAdapterWithCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapterWithCache.swift; sourceTree = ""; }; -======= - F6A1A8F61ECAF0920058DF07 /* LayoutAdapterCacheHandler.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapterCacheHandler.swift; sourceTree = ""; }; ->>>>>>> LayoutAdapter with cached layouts - F6A1A8F81ECAF1040058DF07 /* BatchUpdatesArrayUpdate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdatesArrayUpdate.swift; sourceTree = ""; }; - F6A1A8FA1ECAF1380058DF07 /* SafeArray.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SafeArray.swift; sourceTree = ""; }; - F6A1A8FC1ECB03B90058DF07 /* BatchUpdatesArrayUpdateTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdatesArrayUpdateTest.swift; sourceTree = ""; }; - F6A1A9001ECB08FA0058DF07 /* SafeArrayTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SafeArrayTest.swift; sourceTree = ""; }; - F6A1A90C1ECB510E0058DF07 /* LayoutAdapterWithCacheTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapterWithCacheTest.swift; sourceTree = ""; }; -<<<<<<< HEAD -======= - F6A1A90F1ECB661F0058DF07 /* LayoutAdapterWithAutomaticBatchUpdates.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutAdapterWithAutomaticBatchUpdates.swift; sourceTree = ""; }; - F6A1A9111ECB66500058DF07 /* BatchUpdatesFromArrayDifference.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdatesFromArrayDifference.swift; sourceTree = ""; }; - F6A1A9131ECB66AD0058DF07 /* BatchUpdatesFromArrayDifferenceTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BatchUpdatesFromArrayDifferenceTest.swift; sourceTree = ""; }; ->>>>>>> LayoutAdapter with cached layouts -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 0B2D09AD1D8735E1007E487C /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 0B6B043B1DC8472A00F23EEA /* ExampleLayouts.framework in Frameworks */, - 0B6B04381DC8470200F23EEA /* LayoutKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB755B1D8720110065E02A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB75651D8720110065E02A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 0BCB75691D8720110065E02A /* LayoutKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB75781D8721370065E02A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB75811D8721370065E02A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 0BCB75851D8721370065E02A /* LayoutKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB75941D8722370065E02A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB759D1D8722370065E02A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 0BCB75A11D8722370065E02A /* LayoutKit.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB75B21D8723B30065E02A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 0B2D09B11D8735E1007E487C /* LayoutKitSampleApp */ = { - isa = PBXGroup; - children = ( - 0B2D09C21D87365F007E487C /* AppDelegate.swift */, - 0B2D09C31D87365F007E487C /* Assets.xcassets */, - 0B2D09C41D87365F007E487C /* BackgroundMiniProfileViewController.swift */, - 0B2D09C51D87365F007E487C /* BatchUpdatesBaseViewController.swift */, - 0B2D09C61D87365F007E487C /* BatchUpdatesCollectionViewController.swift */, - 0B2D09C71D87365F007E487C /* BatchUpdatesTableViewController.swift */, - 0B2D09C81D87365F007E487C /* Benchmarks */, - 0B2D09D31D87365F007E487C /* FeedBaseViewController.swift */, - 0B2D09D41D87365F007E487C /* FeedCollectionViewController.swift */, - 0B2D09D51D87365F007E487C /* FeedScrollViewController.swift */, - 0B2D09D61D87365F007E487C /* FeedTableViewController.swift */, - 0B2D09D71D87365F007E487C /* ForegroundProfileViewController.swift */, - 75D94A3F1EA05D5A00A5FD01 /* OverlayViewController.swift */, - 0B2D09BE1D8735E1007E487C /* Info.plist */, - 0B2D09D81D87365F007E487C /* LabledImageLayout.swift */, - 0B2D09FB1D873726007E487C /* LaunchScreen.xib */, - 0B2D09D91D87365F007E487C /* MenuViewController.swift */, - 0B2D09DA1D87365F007E487C /* NestedCollectionViewController.swift */, - 0B2D09DB1D87365F007E487C /* StackViewController.swift */, - 0B2D09DC1D87365F007E487C /* UrlImageLayout.swift */, - 0B6B04361DC8402E00F23EEA /* DWURecyclingAlert.m */, - ); - path = LayoutKitSampleApp; - sourceTree = ""; - }; - 0B2D09C81D87365F007E487C /* Benchmarks */ = { - isa = PBXGroup; - children = ( - 0B2D09C91D87365F007E487C /* BenchmarkViewController.swift */, - 0B2D09CA1D87365F007E487C /* CollectionViewController.swift */, - 0B2D09CB1D87365F007E487C /* DataBinder.swift */, - 0B2D09CC1D87365F007E487C /* FeedItemAutoLayoutView.swift */, - 0B2D09CD1D87365F007E487C /* FeedItemData.swift */, - 0B2D09CE1D87365F007E487C /* FeedItemLayoutKitView.swift */, - 0B2D09CF1D87365F007E487C /* FeedItemManualView.swift */, - 0B2D09D01D87365F007E487C /* FeedItemUIStackView.swift */, - 0B2D09D11D87365F007E487C /* Stopwatch.swift */, - 0B2D09D21D87365F007E487C /* TableViewController.swift */, - ); - path = Benchmarks; - sourceTree = ""; - }; - 0BCB75531D871FC40065E02A = { - isa = PBXGroup; - children = ( - 0B7B269E1D919A9200CD1956 /* LayoutKit.playground */, - 0BCB75611D8720110065E02A /* LayoutKit */, - 0BCB756C1D8720110065E02A /* LayoutKitTests */, - 0BCB75B71D8723B30065E02A /* ExampleLayouts */, - 0B2D09B11D8735E1007E487C /* LayoutKitSampleApp */, - 0BCB75601D8720110065E02A /* Products */, - ); - sourceTree = ""; - }; - 0BCB75601D8720110065E02A /* Products */ = { - isa = PBXGroup; - children = ( - 0BCB755F1D8720110065E02A /* LayoutKit.framework */, - 0BCB75681D8720110065E02A /* LayoutKit-iOSTests.xctest */, - 0BCB757C1D8721370065E02A /* LayoutKit.framework */, - 0BCB75841D8721370065E02A /* LayoutKit-tvOSTests.xctest */, - 0BCB75981D8722370065E02A /* LayoutKit.framework */, - 0BCB75A01D8722370065E02A /* LayoutKit-macOSTests.xctest */, - 0BCB75B61D8723B30065E02A /* ExampleLayouts.framework */, - 0B2D09B01D8735E1007E487C /* LayoutKitSampleApp.app */, - ); - name = Products; - sourceTree = ""; - }; - 0BCB75611D8720110065E02A /* LayoutKit */ = { - isa = PBXGroup; - children = ( - 0BCB75D41D8724800065E02A /* Alignment.swift */, - 0BCB75D51D8724800065E02A /* Animation.swift */, - 0BCB75D61D8724800065E02A /* AppKitSupport.swift */, - 0BCB75D71D8724800065E02A /* Axis.swift */, - 0BCB75D81D8724800065E02A /* ConfigurableLayout.swift */, - 0BCB75D91D8724800065E02A /* Flexibility.swift */, - 0BCB75631D8720110065E02A /* Info.plist */, - 0BCB75DA1D8724800065E02A /* Internal */, - 0BCB75DD1D8724800065E02A /* Layout.swift */, - 0BCB75DE1D8724800065E02A /* LayoutArrangement.swift */, - 0BCB75621D8720110065E02A /* LayoutKit.h */, - 0BCB75DF1D8724800065E02A /* LayoutMeasurement.swift */, - 0BCB75E01D8724800065E02A /* Layouts */, - 0BCB75E61D8724800065E02A /* Math */, - 0BD42BDB1DB5EAAD00E04AA3 /* Text.swift */, - 0BCB75EA1D8724800065E02A /* UIKitSupport.swift */, - 0BCB75EB1D8724800065E02A /* ViewRecycler.swift */, - 0BCB75EC1D8724800065E02A /* Views */, - ); - name = LayoutKit; - path = Sources; - sourceTree = ""; - }; - 0BCB756C1D8720110065E02A /* LayoutKitTests */ = { - isa = PBXGroup; - children = ( - 0BCB76531D8725310065E02A /* AlignmentTests.swift */, - 0BD5F82B1DB43F9B00108688 /* ButtonLayoutTests.swift */, - 0B765F2F1DC135B8000BF1FD /* CGFloatExtensionTests.swift */, - 0B193BB61D887BCF00FCA22D /* CollectionExtension.swift */, - 0BCB76551D8725310065E02A /* CollectionViewTests.swift */, - 0BCB76561D8725310065E02A /* DensityAssertions.swift */, - 0B193BB71D887BCF00FCA22D /* IndexSetExtension.swift */, - 0BCB756F1D8720110065E02A /* Info.plist */, - 0BCB76571D8725310065E02A /* InsetLayoutTests.swift */, - 0BCB76581D8725310065E02A /* LabelLayoutTests.swift */, - 0BCB76591D8725310065E02A /* LayoutArrangementTests.swift */, - 75D94A3A1EA045F100A5FD01 /* OverlayLayoutTests.swift */, - 0BCB765C1D8725310065E02A /* ReloadableViewLayoutAdapterCollectionViewTests.swift */, - AD2C36421EA5AF9500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift */, - 0BCB765D1D8725310065E02A /* ReloadableViewLayoutAdapterTableViewTests.swift */, - ADE5FCBF1EA5B5C8006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift */, - 0BCB765E1D8725310065E02A /* ReloadableViewLayoutAdapterTestCase.swift */, - 0BDDF95A1E25ACCE008B0A6F /* ReloadableViewTests.swift */, - 0BCB765F1D8725310065E02A /* SizeLayoutTests.swift */, - 0BCB76601D8725310065E02A /* StackLayoutDistributionTests.swift */, - 0BCB76611D8725310065E02A /* StackLayoutFlexibilityTests.swift */, - 0BCB76621D8725310065E02A /* StackLayoutSpacingTests.swift */, - 0BCB76631D8725310065E02A /* StackLayoutTests.swift */, - 0BCB76641D8725310065E02A /* StackViewTests.swift */, - 0BCB76651D8725310065E02A /* TableViewTests.swift */, - 0BCB76661D8725310065E02A /* TestStack.swift */, - 0BB380DA1DB73EFF00E2614F /* TextExtension.swift */, - 44F968161E42639500392763 /* TextViewLayoutTests.swift */, - 0BCB76671D8725310065E02A /* UIFontExtension.swift */, - 0BCB76681D8725310065E02A /* ViewRecyclerTests.swift */, - F6A1A8FC1ECB03B90058DF07 /* BatchUpdatesArrayUpdateTest.swift */, - F6A1A9001ECB08FA0058DF07 /* SafeArrayTest.swift */, - F6A1A90C1ECB510E0058DF07 /* LayoutAdapterWithCacheTest.swift */, -<<<<<<< HEAD -======= - F6A1A9131ECB66AD0058DF07 /* BatchUpdatesFromArrayDifferenceTest.swift */, ->>>>>>> LayoutAdapter with cached layouts - ); - path = LayoutKitTests; - sourceTree = ""; - }; - 0BCB75B71D8723B30065E02A /* ExampleLayouts */ = { - isa = PBXGroup; - children = ( - 0B2D09651D8734DB007E487C /* CircleImagePileLayout.swift */, - 0B2D09661D8734DB007E487C /* DividerStackLayout.swift */, - 0B2D09671D8734DB007E487C /* FeedItemLayout.swift */, - 0B2D09681D8734DB007E487C /* FixedWidthCellCollectionViewLayout.swift */, - 0B2D09691D8734DB007E487C /* HelloWorldAutoLayoutView.swift */, - 0B2D096A1D8734DB007E487C /* HelloWorldLayout.swift */, - 0B2D096B1D8734DB007E487C /* MiniProfileLayout.swift */, - 0B2D096C1D8734DB007E487C /* ProfileCardLayout.swift */, - 0B2D096D1D8734DB007E487C /* SkillsCardLayout.swift */, - 0BCB75B81D8723B30065E02A /* ExampleLayouts.h */, - 0BCB75B91D8723B30065E02A /* Info.plist */, - ); - path = ExampleLayouts; - sourceTree = ""; - }; - 0BCB75DA1D8724800065E02A /* Internal */ = { - isa = PBXGroup; - children = ( - 0BCB75DB1D8724800065E02A /* CFAbsoluteTimeExtension.swift */, - 0BCB75DC1D8724800065E02A /* CGSizeExtension.swift */, - 0B765F2B1DC0514F000BF1FD /* CGFloatExtension.swift */, - 4468A31C1E46460B00341D07 /* NSAttributedStringExtension.swift */, - 448CEC0E1E4E0CB500F8AD9E /* TextViewDefaultFont.swift */, - F6A1A8FA1ECAF1380058DF07 /* SafeArray.swift */, - ); - path = Internal; - sourceTree = ""; - }; - 0BCB75E01D8724800065E02A /* Layouts */ = { - isa = PBXGroup; - children = ( - 0BCB75E11D8724800065E02A /* BaseLayout.swift */, - 0BD5F8281DB43B4500108688 /* ButtonLayout.swift */, - 0BCB75E21D8724800065E02A /* InsetLayout.swift */, - 0BCB75E31D8724800065E02A /* LabelLayout.swift */, - 75D94A351EA01B6A00A5FD01 /* OverlayLayout.swift */, - 0BCB75E41D8724800065E02A /* SizeLayout.swift */, - 0BCB75E51D8724800065E02A /* StackLayout.swift */, - 44F968141E425F5D00392763 /* TextViewLayout.swift */, - ); - path = Layouts; - sourceTree = ""; - }; - 0BCB75E61D8724800065E02A /* Math */ = { - isa = PBXGroup; - children = ( - 0BCB75E71D8724800065E02A /* AxisFlexibility.swift */, - 0BCB75E81D8724800065E02A /* AxisPoint.swift */, - 0BCB75E91D8724800065E02A /* AxisSize.swift */, - ); - path = Math; - sourceTree = ""; - }; - 0BCB75EC1D8724800065E02A /* Views */ = { - isa = PBXGroup; - children = ( - 0BCB75ED1D8724800065E02A /* BatchUpdates.swift */, - F6A1A8F81ECAF1040058DF07 /* BatchUpdatesArrayUpdate.swift */, -<<<<<<< HEAD -======= - F6A1A9111ECB66500058DF07 /* BatchUpdatesFromArrayDifference.swift */, ->>>>>>> LayoutAdapter with cached layouts - 0BCB75EE1D8724800065E02A /* LayoutAdapterCollectionView.swift */, - 0BCB75EF1D8724800065E02A /* LayoutAdapterTableView.swift */, - 0BCB75F01D8724800065E02A /* ReloadableView.swift */, - 0BCB75F11D8724800065E02A /* ReloadableViewLayoutAdapter+UICollectionView.swift */, - 0BCB75F21D8724800065E02A /* ReloadableViewLayoutAdapter+UITableView.swift */, - 0BCB75F31D8724800065E02A /* ReloadableViewLayoutAdapter.swift */, - 0BCB75F41D8724800065E02A /* ReloadableViewUpdateManager.swift */, - 0BCB75F51D8724800065E02A /* StackView.swift */, - F6A1A8F41ECAEFC80058DF07 /* LayoutAdapter.swift */, -<<<<<<< HEAD - F6A1A8F61ECAF0920058DF07 /* LayoutAdapterWithCache.swift */, -======= - F6A1A8F61ECAF0920058DF07 /* LayoutAdapterCacheHandler.swift */, - F6A1A90F1ECB661F0058DF07 /* LayoutAdapterWithAutomaticBatchUpdates.swift */, ->>>>>>> LayoutAdapter with cached layouts - ); - path = Views; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 0BCB755C1D8720110065E02A /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 0BCB75701D8720110065E02A /* LayoutKit.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB75791D8721370065E02A /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 0BCB762F1D8724C70065E02A /* LayoutKit.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB75951D8722370065E02A /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 0BCB75B01D8722BD0065E02A /* LayoutKit.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB75B31D8723B30065E02A /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 0BCB75BA1D8723B30065E02A /* ExampleLayouts.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 0B2D09AF1D8735E1007E487C /* LayoutKitSampleApp */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0B2D09BF1D8735E1007E487C /* Build configuration list for PBXNativeTarget "LayoutKitSampleApp" */; - buildPhases = ( - 0B2D09AC1D8735E1007E487C /* Sources */, - 0B2D09AD1D8735E1007E487C /* Frameworks */, - 0B2D09AE1D8735E1007E487C /* Resources */, - 0B6B043A1DC8470200F23EEA /* Embed Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 0B2D09FE1D873777007E487C /* PBXTargetDependency */, - 0B2D0A001D873777007E487C /* PBXTargetDependency */, - ); - name = LayoutKitSampleApp; - productName = LayoutKitSampleApp; - productReference = 0B2D09B01D8735E1007E487C /* LayoutKitSampleApp.app */; - productType = "com.apple.product-type.application"; - }; - 0BCB755E1D8720110065E02A /* LayoutKit-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0BCB75711D8720110065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-iOS" */; - buildPhases = ( - 0BCB755A1D8720110065E02A /* Sources */, - 0BCB755B1D8720110065E02A /* Frameworks */, - 0BCB755C1D8720110065E02A /* Headers */, - 0BCB755D1D8720110065E02A /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "LayoutKit-iOS"; - productName = "LayoutKit-iOS"; - productReference = 0BCB755F1D8720110065E02A /* LayoutKit.framework */; - productType = "com.apple.product-type.framework"; - }; - 0BCB75671D8720110065E02A /* LayoutKit-iOSTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0BCB75741D8720110065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-iOSTests" */; - buildPhases = ( - 0BCB75641D8720110065E02A /* Sources */, - 0BCB75651D8720110065E02A /* Frameworks */, - 0BCB75661D8720110065E02A /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 0BCB756B1D8720110065E02A /* PBXTargetDependency */, - ); - name = "LayoutKit-iOSTests"; - productName = "LayoutKit-iOSTests"; - productReference = 0BCB75681D8720110065E02A /* LayoutKit-iOSTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 0BCB757B1D8721370065E02A /* LayoutKit-tvOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0BCB758D1D8721370065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-tvOS" */; - buildPhases = ( - 0BCB75771D8721370065E02A /* Sources */, - 0BCB75781D8721370065E02A /* Frameworks */, - 0BCB75791D8721370065E02A /* Headers */, - 0BCB757A1D8721370065E02A /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "LayoutKit-tvOS"; - productName = "LayoutKit-tvOS"; - productReference = 0BCB757C1D8721370065E02A /* LayoutKit.framework */; - productType = "com.apple.product-type.framework"; - }; - 0BCB75831D8721370065E02A /* LayoutKit-tvOSTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0BCB75901D8721370065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-tvOSTests" */; - buildPhases = ( - 0BCB75801D8721370065E02A /* Sources */, - 0BCB75811D8721370065E02A /* Frameworks */, - 0BCB75821D8721370065E02A /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 0BCB75871D8721370065E02A /* PBXTargetDependency */, - ); - name = "LayoutKit-tvOSTests"; - productName = "LayoutKit-tvOSTests"; - productReference = 0BCB75841D8721370065E02A /* LayoutKit-tvOSTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 0BCB75971D8722370065E02A /* LayoutKit-macOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0BCB75A91D8722370065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-macOS" */; - buildPhases = ( - 0BCB75931D8722370065E02A /* Sources */, - 0BCB75941D8722370065E02A /* Frameworks */, - 0BCB75951D8722370065E02A /* Headers */, - 0BCB75961D8722370065E02A /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "LayoutKit-macOS"; - productName = "LayoutKit-macOS"; - productReference = 0BCB75981D8722370065E02A /* LayoutKit.framework */; - productType = "com.apple.product-type.framework"; - }; - 0BCB759F1D8722370065E02A /* LayoutKit-macOSTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0BCB75AC1D8722370065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-macOSTests" */; - buildPhases = ( - 0BCB759C1D8722370065E02A /* Sources */, - 0BCB759D1D8722370065E02A /* Frameworks */, - 0BCB759E1D8722370065E02A /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 0BCB75A31D8722370065E02A /* PBXTargetDependency */, - ); - name = "LayoutKit-macOSTests"; - productName = "LayoutKit-macOSTests"; - productReference = 0BCB75A01D8722370065E02A /* LayoutKit-macOSTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - 0BCB75B51D8723B30065E02A /* ExampleLayouts-iOS */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0BCB75BB1D8723B30065E02A /* Build configuration list for PBXNativeTarget "ExampleLayouts-iOS" */; - buildPhases = ( - 0BCB75B11D8723B30065E02A /* Sources */, - 0BCB75B21D8723B30065E02A /* Frameworks */, - 0BCB75B31D8723B30065E02A /* Headers */, - 0BCB75B41D8723B30065E02A /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 0B2D0A021D87377F007E487C /* PBXTargetDependency */, - ); - name = "ExampleLayouts-iOS"; - productName = "ExampleLayouts-iOS"; - productReference = 0BCB75B61D8723B30065E02A /* ExampleLayouts.framework */; - productType = "com.apple.product-type.framework"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 0BCB75541D871FC40065E02A /* Project object */ = { - isa = PBXProject; - attributes = { - LastSwiftUpdateCheck = 0800; - LastUpgradeCheck = 0820; - TargetAttributes = { - 0B2D09AF1D8735E1007E487C = { - CreatedOnToolsVersion = 8.0; - LastSwiftMigration = 0800; - ProvisioningStyle = Automatic; - }; - 0BCB755E1D8720110065E02A = { - CreatedOnToolsVersion = 8.0; - LastSwiftMigration = 0800; - ProvisioningStyle = Automatic; - }; - 0BCB75671D8720110065E02A = { - CreatedOnToolsVersion = 8.0; - ProvisioningStyle = Automatic; - }; - 0BCB757B1D8721370065E02A = { - CreatedOnToolsVersion = 8.0; - ProvisioningStyle = Automatic; - }; - 0BCB75831D8721370065E02A = { - CreatedOnToolsVersion = 8.0; - ProvisioningStyle = Automatic; - }; - 0BCB75971D8722370065E02A = { - CreatedOnToolsVersion = 8.0; - ProvisioningStyle = Automatic; - }; - 0BCB759F1D8722370065E02A = { - CreatedOnToolsVersion = 8.0; - ProvisioningStyle = Automatic; - }; - 0BCB75B51D8723B30065E02A = { - CreatedOnToolsVersion = 8.0; - LastSwiftMigration = 0800; - ProvisioningStyle = Automatic; - }; - }; - }; - buildConfigurationList = 0BCB75571D871FC40065E02A /* Build configuration list for PBXProject "LayoutKit" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 0BCB75531D871FC40065E02A; - productRefGroup = 0BCB75601D8720110065E02A /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 0BCB755E1D8720110065E02A /* LayoutKit-iOS */, - 0BCB757B1D8721370065E02A /* LayoutKit-tvOS */, - 0BCB75971D8722370065E02A /* LayoutKit-macOS */, - 0BCB75B51D8723B30065E02A /* ExampleLayouts-iOS */, - 0BCB75671D8720110065E02A /* LayoutKit-iOSTests */, - 0BCB75831D8721370065E02A /* LayoutKit-tvOSTests */, - 0BCB759F1D8722370065E02A /* LayoutKit-macOSTests */, - 0B2D09AF1D8735E1007E487C /* LayoutKitSampleApp */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 0B2D09AE1D8735E1007E487C /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0B2D09FC1D873726007E487C /* LaunchScreen.xib in Resources */, - 0B2D09E11D87365F007E487C /* Assets.xcassets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB755D1D8720110065E02A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB75661D8720110065E02A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB757A1D8721370065E02A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB75821D8721370065E02A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB75961D8722370065E02A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB759E1D8722370065E02A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB75B41D8723B30065E02A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 0B2D09AC1D8735E1007E487C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0B2D09E41D87365F007E487C /* BatchUpdatesCollectionViewController.swift in Sources */, - 0B2D09E81D87365F007E487C /* DataBinder.swift in Sources */, - 0B2D09EA1D87365F007E487C /* FeedItemData.swift in Sources */, - 75D94A401EA05D5A00A5FD01 /* OverlayViewController.swift in Sources */, - 0B2D09F41D87365F007E487C /* ForegroundProfileViewController.swift in Sources */, - 0B2D09ED1D87365F007E487C /* FeedItemUIStackView.swift in Sources */, - 0B2D09EC1D87365F007E487C /* FeedItemManualView.swift in Sources */, - 0B2D09F01D87365F007E487C /* FeedBaseViewController.swift in Sources */, - 0B2D09EE1D87365F007E487C /* Stopwatch.swift in Sources */, - 0B2D09E31D87365F007E487C /* BatchUpdatesBaseViewController.swift in Sources */, - 0B2D09F81D87365F007E487C /* StackViewController.swift in Sources */, - 0B6B04371DC8402E00F23EEA /* DWURecyclingAlert.m in Sources */, - 0B2D09F51D87365F007E487C /* LabledImageLayout.swift in Sources */, - 0B2D09F11D87365F007E487C /* FeedCollectionViewController.swift in Sources */, - 0B2D09F31D87365F007E487C /* FeedTableViewController.swift in Sources */, - 0B2D09E01D87365F007E487C /* AppDelegate.swift in Sources */, - 0B2D09E21D87365F007E487C /* BackgroundMiniProfileViewController.swift in Sources */, - 0B2D09E91D87365F007E487C /* FeedItemAutoLayoutView.swift in Sources */, - 0B2D09F61D87365F007E487C /* MenuViewController.swift in Sources */, - 0B2D09F91D87365F007E487C /* UrlImageLayout.swift in Sources */, - 0B2D09E71D87365F007E487C /* CollectionViewController.swift in Sources */, - 0B2D09EB1D87365F007E487C /* FeedItemLayoutKitView.swift in Sources */, - 0B2D09E61D87365F007E487C /* BenchmarkViewController.swift in Sources */, - 0B2D09F71D87365F007E487C /* NestedCollectionViewController.swift in Sources */, - 0B2D09EF1D87365F007E487C /* TableViewController.swift in Sources */, - 0B2D09E51D87365F007E487C /* BatchUpdatesTableViewController.swift in Sources */, - 0B2D09F21D87365F007E487C /* FeedScrollViewController.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB755A1D8720110065E02A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0BCB76051D8724800065E02A /* StackLayout.swift in Sources */, - 0BCB760D1D8724800065E02A /* LayoutAdapterTableView.swift in Sources */, - 0BCB76071D8724800065E02A /* AxisPoint.swift in Sources */, - F6A1A8F91ECAF1040058DF07 /* BatchUpdatesArrayUpdate.swift in Sources */, - F6A1A8FB1ECAF1380058DF07 /* SafeArray.swift in Sources */, - 0BCB75F71D8724800065E02A /* Animation.swift in Sources */, - F6A1A8F51ECAEFC80058DF07 /* LayoutAdapter.swift in Sources */, - 0BCB76081D8724800065E02A /* AxisSize.swift in Sources */, - 0B193BB81D887BCF00FCA22D /* CollectionExtension.swift in Sources */, - 4468A31D1E46460B00341D07 /* NSAttributedStringExtension.swift in Sources */, - 0BCB760C1D8724800065E02A /* LayoutAdapterCollectionView.swift in Sources */, - 0BD5F8291DB43B4500108688 /* ButtonLayout.swift in Sources */, - 0BCB76001D8724800065E02A /* LayoutMeasurement.swift in Sources */, - 0BCB76021D8724800065E02A /* InsetLayout.swift in Sources */, - F6A1A9121ECB66500058DF07 /* BatchUpdatesFromArrayDifference.swift in Sources */, - 0BCB76061D8724800065E02A /* AxisFlexibility.swift in Sources */, - 448CEC0F1E4E0CB500F8AD9E /* TextViewDefaultFont.swift in Sources */, -<<<<<<< HEAD - F6A1A8F71ECAF0920058DF07 /* LayoutAdapterWithCache.swift in Sources */, -======= - F6A1A8F71ECAF0920058DF07 /* LayoutAdapterCacheHandler.swift in Sources */, ->>>>>>> LayoutAdapter with cached layouts - 0BCB760E1D8724800065E02A /* ReloadableView.swift in Sources */, - 75D94A361EA01B6A00A5FD01 /* OverlayLayout.swift in Sources */, - F6A1A9101ECB661F0058DF07 /* LayoutAdapterWithAutomaticBatchUpdates.swift in Sources */, - 0BCB75FD1D8724800065E02A /* CGSizeExtension.swift in Sources */, - 0BCB760B1D8724800065E02A /* BatchUpdates.swift in Sources */, - 0BCB76011D8724800065E02A /* BaseLayout.swift in Sources */, - 0BCB75FA1D8724800065E02A /* ConfigurableLayout.swift in Sources */, - 0BCB76111D8724800065E02A /* ReloadableViewLayoutAdapter.swift in Sources */, - 0BCB75F91D8724800065E02A /* Axis.swift in Sources */, - 0BCB760A1D8724800065E02A /* ViewRecycler.swift in Sources */, - 0BCB76091D8724800065E02A /* UIKitSupport.swift in Sources */, - 0BCB75FE1D8724800065E02A /* Layout.swift in Sources */, - 0BCB75FF1D8724800065E02A /* LayoutArrangement.swift in Sources */, - 0BCB760F1D8724800065E02A /* ReloadableViewLayoutAdapter+UICollectionView.swift in Sources */, - 0BCB75F61D8724800065E02A /* Alignment.swift in Sources */, - 0B193BB91D887BCF00FCA22D /* IndexSetExtension.swift in Sources */, - 0BCB75FC1D8724800065E02A /* CFAbsoluteTimeExtension.swift in Sources */, - 0B765F2C1DC0514F000BF1FD /* CGFloatExtension.swift in Sources */, - 0BCB76041D8724800065E02A /* SizeLayout.swift in Sources */, - 0BCB76031D8724800065E02A /* LabelLayout.swift in Sources */, - 0BCB76101D8724800065E02A /* ReloadableViewLayoutAdapter+UITableView.swift in Sources */, - 0BCB75FB1D8724800065E02A /* Flexibility.swift in Sources */, - 0BCB76121D8724800065E02A /* ReloadableViewUpdateManager.swift in Sources */, - 44F968151E425F5D00392763 /* TextViewLayout.swift in Sources */, - 0BD42BDC1DB5EAAD00E04AA3 /* Text.swift in Sources */, - 0BCB76131D8724800065E02A /* StackView.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB75641D8720110065E02A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( -<<<<<<< HEAD -======= - F6A1A9151ECB66C00058DF07 /* BatchUpdatesFromArrayDifferenceTest.swift in Sources */, ->>>>>>> LayoutAdapter with cached layouts - F6A1A90E1ECB513B0058DF07 /* LayoutAdapterWithCacheTest.swift in Sources */, - F6A1A9021ECB09880058DF07 /* SafeArrayTest.swift in Sources */, - F6A1A8FE1ECB07AF0058DF07 /* BatchUpdatesArrayUpdateTest.swift in Sources */, - ADE5FCC11EA5B5F3006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift in Sources */, - AD2C36441EA5AFB500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift in Sources */, - 0B765F301DC135B8000BF1FD /* CGFloatExtensionTests.swift in Sources */, - 0B2D092C1D872F75007E487C /* ReloadableViewLayoutAdapterCollectionViewTests.swift in Sources */, - 0B2D092E1D872F75007E487C /* ReloadableViewLayoutAdapterTestCase.swift in Sources */, - 0B2D092D1D872F75007E487C /* ReloadableViewLayoutAdapterTableViewTests.swift in Sources */, - 0B2D09321D872F75007E487C /* StackLayoutSpacingTests.swift in Sources */, - 75D94A3B1EA045F100A5FD01 /* OverlayLayoutTests.swift in Sources */, - 44F968181E4263DC00392763 /* TextViewLayoutTests.swift in Sources */, - 0B2D09381D872F75007E487C /* ViewRecyclerTests.swift in Sources */, - 0B2D09341D872F75007E487C /* StackViewTests.swift in Sources */, - 0B2D09281D872F75007E487C /* LabelLayoutTests.swift in Sources */, - 0B2D09231D872F75007E487C /* AlignmentTests.swift in Sources */, - 0B2D09261D872F75007E487C /* DensityAssertions.swift in Sources */, - 0BD5F82C1DB43F9B00108688 /* ButtonLayoutTests.swift in Sources */, - 0BB380DB1DB73EFF00E2614F /* TextExtension.swift in Sources */, - 0BDDF95B1E25ACCE008B0A6F /* ReloadableViewTests.swift in Sources */, - 0B2D09271D872F75007E487C /* InsetLayoutTests.swift in Sources */, - 0B2D09371D872F75007E487C /* UIFontExtension.swift in Sources */, - 0B2D09251D872F75007E487C /* CollectionViewTests.swift in Sources */, - 0B2D092F1D872F75007E487C /* SizeLayoutTests.swift in Sources */, - 0B2D09361D872F75007E487C /* TestStack.swift in Sources */, - 0B2D09351D872F75007E487C /* TableViewTests.swift in Sources */, - 0B2D09311D872F75007E487C /* StackLayoutFlexibilityTests.swift in Sources */, - 0B2D09301D872F75007E487C /* StackLayoutDistributionTests.swift in Sources */, - 0B2D09331D872F75007E487C /* StackLayoutTests.swift in Sources */, - 0B2D09291D872F75007E487C /* LayoutArrangementTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB75771D8721370065E02A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0BCB763A1D8724CA0065E02A /* StackLayout.swift in Sources */, - 0BCB76411D8724CF0065E02A /* AxisPoint.swift in Sources */, - 0BCB764B1D8724E70065E02A /* LayoutAdapterCollectionView.swift in Sources */, - 0BCB764A1D8724E70065E02A /* BatchUpdates.swift in Sources */, - 0BCB76151D8724C00065E02A /* Animation.swift in Sources */, - 0BCB76421D8724CF0065E02A /* AxisSize.swift in Sources */, - 4468A31E1E464A3900341D07 /* NSAttributedStringExtension.swift in Sources */, - 0BCB76301D8724C70065E02A /* LayoutMeasurement.swift in Sources */, - 0B193BBA1D888B6300FCA22D /* IndexSetExtension.swift in Sources */, - 0BCB76371D8724CA0065E02A /* InsetLayout.swift in Sources */, - 0BCB76401D8724CF0065E02A /* AxisFlexibility.swift in Sources */, - 0BCB762C1D8724C70065E02A /* CGSizeExtension.swift in Sources */, - 0BCB76361D8724CA0065E02A /* BaseLayout.swift in Sources */, - 0BCB76181D8724C00065E02A /* ConfigurableLayout.swift in Sources */, - 75D94A371EA01B7100A5FD01 /* OverlayLayout.swift in Sources */, - 448CEC101E4E0CEE00F8AD9E /* TextViewDefaultFont.swift in Sources */, - 0B8C078B1DC3E881001CD5EE /* ButtonLayout.swift in Sources */, - 0BCB76521D8724E70065E02A /* StackView.swift in Sources */, - 0BCB76511D8724E70065E02A /* ReloadableViewUpdateManager.swift in Sources */, - 0BCB76171D8724C00065E02A /* Axis.swift in Sources */, - 0BCB764D1D8724E70065E02A /* ReloadableView.swift in Sources */, - 0BCB76441D8724CF0065E02A /* ViewRecycler.swift in Sources */, - 0BCB764F1D8724E70065E02A /* ReloadableViewLayoutAdapter+UITableView.swift in Sources */, - 0BCB76431D8724CF0065E02A /* UIKitSupport.swift in Sources */, - 0BCB762D1D8724C70065E02A /* Layout.swift in Sources */, - 0B193BBC1D888B6D00FCA22D /* CollectionExtension.swift in Sources */, - 0BCB762E1D8724C70065E02A /* LayoutArrangement.swift in Sources */, - 0BCB76141D8724C00065E02A /* Alignment.swift in Sources */, - 0BCB76501D8724E70065E02A /* ReloadableViewLayoutAdapter.swift in Sources */, - 0B765F2D1DC0514F000BF1FD /* CGFloatExtension.swift in Sources */, - 0BCB762B1D8724C70065E02A /* CFAbsoluteTimeExtension.swift in Sources */, - 0BCB76391D8724CA0065E02A /* SizeLayout.swift in Sources */, - 0BCB76381D8724CA0065E02A /* LabelLayout.swift in Sources */, - 0BCB76191D8724C00065E02A /* Flexibility.swift in Sources */, - 0BCB764C1D8724E70065E02A /* LayoutAdapterTableView.swift in Sources */, - 44F9681A1E42640400392763 /* TextViewLayout.swift in Sources */, - 0BD42BDD1DB5EC8800E04AA3 /* Text.swift in Sources */, - 0BCB764E1D8724E70065E02A /* ReloadableViewLayoutAdapter+UICollectionView.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB75801D8721370065E02A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0B765F311DC135B8000BF1FD /* CGFloatExtensionTests.swift in Sources */, - 0B2D09421D872F75007E487C /* ReloadableViewLayoutAdapterCollectionViewTests.swift in Sources */, - 0B2D09441D872F75007E487C /* ReloadableViewLayoutAdapterTestCase.swift in Sources */, - 0B2D09431D872F75007E487C /* ReloadableViewLayoutAdapterTableViewTests.swift in Sources */, - 0B2D09481D872F75007E487C /* StackLayoutSpacingTests.swift in Sources */, - 75D94A3C1EA045F100A5FD01 /* OverlayLayoutTests.swift in Sources */, - 44F968191E4263DC00392763 /* TextViewLayoutTests.swift in Sources */, - 0B2D094E1D872F75007E487C /* ViewRecyclerTests.swift in Sources */, - 0B2D094A1D872F75007E487C /* StackViewTests.swift in Sources */, - 0B2D093E1D872F75007E487C /* LabelLayoutTests.swift in Sources */, - 0B2D09391D872F75007E487C /* AlignmentTests.swift in Sources */, - 0B2D093C1D872F75007E487C /* DensityAssertions.swift in Sources */, - 0BB380DC1DB73EFF00E2614F /* TextExtension.swift in Sources */, - 0B8C078C1DC3E88A001CD5EE /* ButtonLayoutTests.swift in Sources */, - 0BDDF95C1E25ACCE008B0A6F /* ReloadableViewTests.swift in Sources */, - 0B2D093D1D872F75007E487C /* InsetLayoutTests.swift in Sources */, - 0B2D094D1D872F75007E487C /* UIFontExtension.swift in Sources */, - 0B2D093B1D872F75007E487C /* CollectionViewTests.swift in Sources */, - 0B2D09451D872F75007E487C /* SizeLayoutTests.swift in Sources */, - 0B2D094C1D872F75007E487C /* TestStack.swift in Sources */, - 0B2D094B1D872F75007E487C /* TableViewTests.swift in Sources */, - 0B2D09471D872F75007E487C /* StackLayoutFlexibilityTests.swift in Sources */, - 0B2D09461D872F75007E487C /* StackLayoutDistributionTests.swift in Sources */, - 0B2D09491D872F75007E487C /* StackLayoutTests.swift in Sources */, - 0B2D093F1D872F75007E487C /* LayoutArrangementTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB75931D8722370065E02A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0BCB763F1D8724CB0065E02A /* StackLayout.swift in Sources */, - 0BCB76461D8724D00065E02A /* AxisPoint.swift in Sources */, - 0BCB761C1D8724C10065E02A /* AppKitSupport.swift in Sources */, - 0BCB761B1D8724C10065E02A /* Animation.swift in Sources */, - 0BCB76471D8724D00065E02A /* AxisSize.swift in Sources */, - 0BCB76351D8724C70065E02A /* LayoutMeasurement.swift in Sources */, - 0BCB763C1D8724CB0065E02A /* InsetLayout.swift in Sources */, - 0B193BBB1D888B6400FCA22D /* IndexSetExtension.swift in Sources */, - 0B193BBD1D888B6D00FCA22D /* CollectionExtension.swift in Sources */, - 0BCB76451D8724D00065E02A /* AxisFlexibility.swift in Sources */, - 0BCB76321D8724C70065E02A /* CGSizeExtension.swift in Sources */, - 0BCB763B1D8724CB0065E02A /* BaseLayout.swift in Sources */, - 0BCB761E1D8724C10065E02A /* ConfigurableLayout.swift in Sources */, - 0BCB761D1D8724C10065E02A /* Axis.swift in Sources */, - 0BCB76491D8724D00065E02A /* ViewRecycler.swift in Sources */, - 0BCB76331D8724C70065E02A /* Layout.swift in Sources */, - 75D94A381EA01B7200A5FD01 /* OverlayLayout.swift in Sources */, - 0BCB76341D8724C70065E02A /* LayoutArrangement.swift in Sources */, - 0BCB761A1D8724C10065E02A /* Alignment.swift in Sources */, - 0BCB76311D8724C70065E02A /* CFAbsoluteTimeExtension.swift in Sources */, - 0BCB763E1D8724CB0065E02A /* SizeLayout.swift in Sources */, - 0BCB761F1D8724C10065E02A /* Flexibility.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB759C1D8722370065E02A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0B2D095E1D872F76007E487C /* StackLayoutSpacingTests.swift in Sources */, - 0B2D09641D872F76007E487C /* ViewRecyclerTests.swift in Sources */, - 0B2D094F1D872F76007E487C /* AlignmentTests.swift in Sources */, - 0B2D09521D872F76007E487C /* DensityAssertions.swift in Sources */, - 0B2D09531D872F76007E487C /* InsetLayoutTests.swift in Sources */, - 0BA02E481D874BBB00F1E8D3 /* LayoutArrangementTests.swift in Sources */, - 75D94A3D1EA045F100A5FD01 /* OverlayLayoutTests.swift in Sources */, - 0B2D095B1D872F76007E487C /* SizeLayoutTests.swift in Sources */, - 0B2D09621D872F76007E487C /* TestStack.swift in Sources */, - 0B2D095D1D872F76007E487C /* StackLayoutFlexibilityTests.swift in Sources */, - 0B2D095C1D872F76007E487C /* StackLayoutDistributionTests.swift in Sources */, - 0B2D095F1D872F76007E487C /* StackLayoutTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 0BCB75B11D8723B30065E02A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 0B2D09711D8734DB007E487C /* FixedWidthCellCollectionViewLayout.swift in Sources */, - 0B2D09761D8734DB007E487C /* SkillsCardLayout.swift in Sources */, - 0B2D096F1D8734DB007E487C /* DividerStackLayout.swift in Sources */, - 0B2D096E1D8734DB007E487C /* CircleImagePileLayout.swift in Sources */, - 0B2D09751D8734DB007E487C /* ProfileCardLayout.swift in Sources */, - 0B2D09731D8734DB007E487C /* HelloWorldLayout.swift in Sources */, - 0B2D09721D8734DB007E487C /* HelloWorldAutoLayoutView.swift in Sources */, - 0B2D09701D8734DB007E487C /* FeedItemLayout.swift in Sources */, - 0B2D09741D8734DB007E487C /* MiniProfileLayout.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 0B2D09FE1D873777007E487C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 0BCB755E1D8720110065E02A /* LayoutKit-iOS */; - targetProxy = 0B2D09FD1D873777007E487C /* PBXContainerItemProxy */; - }; - 0B2D0A001D873777007E487C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 0BCB75B51D8723B30065E02A /* ExampleLayouts-iOS */; - targetProxy = 0B2D09FF1D873777007E487C /* PBXContainerItemProxy */; - }; - 0B2D0A021D87377F007E487C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 0BCB755E1D8720110065E02A /* LayoutKit-iOS */; - targetProxy = 0B2D0A011D87377F007E487C /* PBXContainerItemProxy */; - }; - 0BCB756B1D8720110065E02A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 0BCB755E1D8720110065E02A /* LayoutKit-iOS */; - targetProxy = 0BCB756A1D8720110065E02A /* PBXContainerItemProxy */; - }; - 0BCB75871D8721370065E02A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 0BCB757B1D8721370065E02A /* LayoutKit-tvOS */; - targetProxy = 0BCB75861D8721370065E02A /* PBXContainerItemProxy */; - }; - 0BCB75A31D8722370065E02A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 0BCB75971D8722370065E02A /* LayoutKit-macOS */; - targetProxy = 0BCB75A21D8722370065E02A /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 0B2D09C01D8735E1007E487C /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = LayoutKitSampleApp/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = com.linkedin.LayoutKitSampleApp; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - 0B2D09C11D8735E1007E487C /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = LayoutKitSampleApp/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = com.linkedin.LayoutKitSampleApp; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 0BCB75581D871FC40065E02A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - }; - name = Debug; - }; - 0BCB75591D871FC40065E02A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - }; - name = Release; - }; - 0BCB75721D8720110065E02A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - APPLICATION_EXTENSION_API_ONLY = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-iOS"; - PRODUCT_NAME = LayoutKit; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 0BCB75731D8720110065E02A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - APPLICATION_EXTENSION_API_ONLY = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-iOS"; - PRODUCT_NAME = LayoutKit; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 0BCB75751D8720110065E02A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = LayoutKitTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-iOSTests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; - }; - name = Debug; - }; - 0BCB75761D8720110065E02A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = LayoutKitTests/Info.plist; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-iOSTests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 0BCB758E1D8721370065E02A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - APPLICATION_EXTENSION_API_ONLY = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = ""; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-tvOS"; - PRODUCT_NAME = LayoutKit; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 9.0; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 0BCB758F1D8721370065E02A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - APPLICATION_EXTENSION_API_ONLY = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = ""; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-tvOS"; - PRODUCT_NAME = LayoutKit; - SDKROOT = appletvos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = 3; - TVOS_DEPLOYMENT_TARGET = 9.0; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 0BCB75911D8721370065E02A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = LayoutKitTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-tvOSTests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; - TVOS_DEPLOYMENT_TARGET = 9.2; - }; - name = Debug; - }; - 0BCB75921D8721370065E02A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = LayoutKitTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-tvOSTests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = appletvos; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; - TVOS_DEPLOYMENT_TARGET = 9.2; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 0BCB75AA1D8722370065E02A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - APPLICATION_EXTENSION_API_ONLY = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "-"; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - FRAMEWORK_VERSION = A; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-macOS"; - PRODUCT_NAME = LayoutKit; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 0BCB75AB1D8722370065E02A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - APPLICATION_EXTENSION_API_ONLY = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "-"; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - FRAMEWORK_VERSION = A; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "$(SRCROOT)/Sources/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-macOS"; - PRODUCT_NAME = LayoutKit; - SDKROOT = macosx; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 0BCB75AD1D8722370065E02A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "-"; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = LayoutKitTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-macOSTests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = macosx; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; - }; - name = Debug; - }; - 0BCB75AE1D8722370065E02A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = "-"; - COMBINE_HIDPI_IMAGES = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = LayoutKitTests/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 10.11; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKit-macOSTests"; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = macosx; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; - }; - name = Release; - }; - 0BCB75BC1D8723B30065E02A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = dwarf; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "$(SRCROOT)/ExampleLayouts/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.ExampleLayouts-iOS"; - PRODUCT_NAME = ExampleLayouts; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 0BCB75BD1D8723B30065E02A /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_SUSPICIOUS_MOVES = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - CODE_SIGN_IDENTITY = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 1; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - INFOPLIST_FILE = "$(SRCROOT)/ExampleLayouts/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.ExampleLayouts-iOS"; - PRODUCT_NAME = ExampleLayouts; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; - SWIFT_VERSION = 3.0; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 0B2D09BF1D8735E1007E487C /* Build configuration list for PBXNativeTarget "LayoutKitSampleApp" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0B2D09C01D8735E1007E487C /* Debug */, - 0B2D09C11D8735E1007E487C /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 0BCB75571D871FC40065E02A /* Build configuration list for PBXProject "LayoutKit" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0BCB75581D871FC40065E02A /* Debug */, - 0BCB75591D871FC40065E02A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 0BCB75711D8720110065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-iOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0BCB75721D8720110065E02A /* Debug */, - 0BCB75731D8720110065E02A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 0BCB75741D8720110065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-iOSTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0BCB75751D8720110065E02A /* Debug */, - 0BCB75761D8720110065E02A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 0BCB758D1D8721370065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-tvOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0BCB758E1D8721370065E02A /* Debug */, - 0BCB758F1D8721370065E02A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 0BCB75901D8721370065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-tvOSTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0BCB75911D8721370065E02A /* Debug */, - 0BCB75921D8721370065E02A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 0BCB75A91D8722370065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-macOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0BCB75AA1D8722370065E02A /* Debug */, - 0BCB75AB1D8722370065E02A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 0BCB75AC1D8722370065E02A /* Build configuration list for PBXNativeTarget "LayoutKit-macOSTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0BCB75AD1D8722370065E02A /* Debug */, - 0BCB75AE1D8722370065E02A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 0BCB75BB1D8723B30065E02A /* Build configuration list for PBXNativeTarget "ExampleLayouts-iOS" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 0BCB75BC1D8723B30065E02A /* Debug */, - 0BCB75BD1D8723B30065E02A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 0BCB75541D871FC40065E02A /* Project object */; -}