IGListKit/IGListKit.xcodeproj/project.pbxproj

3313 lines
236 KiB
Text
Raw Normal View History

// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 54;
objects = {
/* Begin PBXBuildFile section */
0A8928F926CDA521003FABD8 /* IGListUpdateTransactionBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B22E722502AAC30055DC2F /* IGListUpdateTransactionBuilder.m */; };
0A8928FA26CDA53B003FABD8 /* IGListUpdateTransactionBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B22E7D2502AAC40055DC2F /* IGListUpdateTransactionBuilder.h */; };
0A8928FB26CDA591003FABD8 /* IGListReloadTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B22E762502AAC30055DC2F /* IGListReloadTransaction.h */; };
0A8928FC26CDA5BD003FABD8 /* IGListReloadTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B22E7E2502AAC40055DC2F /* IGListReloadTransaction.m */; };
0A8928FD26CDA5E1003FABD8 /* IGListDataSourceChangeTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B22E792502AAC30055DC2F /* IGListDataSourceChangeTransaction.m */; };
0A8928FE26CDA5EA003FABD8 /* IGListDataSourceChangeTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B22E742502AAC30055DC2F /* IGListDataSourceChangeTransaction.h */; };
0A8928FF26CDA62C003FABD8 /* IGListBatchUpdateTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B22E712502AAC20055DC2F /* IGListBatchUpdateTransaction.m */; };
0A89290026CDA632003FABD8 /* IGListBatchUpdateTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B22E7B2502AAC40055DC2F /* IGListBatchUpdateTransaction.h */; };
0A89290126CDA666003FABD8 /* IGListItemUpdatesCollector.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B22E7C2502AAC40055DC2F /* IGListItemUpdatesCollector.h */; };
0A89290226CDA672003FABD8 /* IGListItemUpdatesCollector.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B22E752502AAC30055DC2F /* IGListItemUpdatesCollector.m */; };
0B3B93611E08E38C008390ED /* IGListBatchUpdateDataTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EE51D870EDC007C7F66 /* IGListBatchUpdateDataTests.m */; };
Interactive Reordering Summary: I had a desire for interactive reordering in a personal project, so here's a first attempt at adding support in IGListKit. I figured I might as well get a WIP PR up for comments before I continue further as there are a few aspects to interactive reordering that don't interplay perfectly with IGListKit. As discussed in #291, I went after two prime use cases: 1. Moving items amongst a section 2. Rearranging whole sections I also "disabled" moving items between sections by having those moves revert, to mimic interactive reordering cancellation as closely as possible. You can see both in the Mixed Data example. Grid items can be moved within a section, while users can be moved to reorder whole sections. But trying to move a grid item out of a grid or a user item into a grid will auto-revert. The revert animation isn't as tight as it should be. It may be more desirable to disable the animation - though you lose the visual cue. There is a also a new example, `ReorderableViewController`, that demonstrates 2 in its pure form (likely the most desired use case), where all sections are reorderable single rows. Happy to take feedback -- this is my first experience working on IGListKit, so I would expect there to be gaps. (Ex. I haven't used `IGListStackedSectionController`, and its tests failed as I hadn't implemented reordering delegates for it. Those are simply stubbed out for now.) Issue fixed: #291 - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [x] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) - [x] Proper support in `IGListStackedSectionController` Closes https://github.com/Instagram/IGListKit/pull/976 Differential Revision: D6674493 Pulled By: rnystrom fbshipit-source-id: cd53c5fdc6fb59636edc4747c4bbd0f81a4610e5
2018-02-12 17:09:26 +00:00
13DF01731FA0FD400092A320 /* IGListTestAdapterReorderingDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 13DF01721FA0FD400092A320 /* IGListTestAdapterReorderingDataSource.m */; };
13DF01741FA0FD400092A320 /* IGListTestAdapterReorderingDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 13DF01721FA0FD400092A320 /* IGListTestAdapterReorderingDataSource.m */; };
13DF01771FA1000E0092A320 /* IGTestReorderableSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 13DF01761FA1000E0092A320 /* IGTestReorderableSection.m */; };
13DF01781FA1000E0092A320 /* IGTestReorderableSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 13DF01761FA1000E0092A320 /* IGTestReorderableSection.m */; };
Fix #1275 layouts inconsistency in `updateAnimated:completion` of IGListBindingSectionController (#1285) Summary: ## Changes in this pull request Issue fixed: https://github.com/Instagram/IGListKit/issues/1275 This PR is straintforward solution as mentioned in https://github.com/Instagram/IGListKit/issues/1275. When I finished it, I realized that it is not a problem in `IGListCollectionViewLayout Partial Optimization` and `IGListBindingSectionController` deserved it. Maybe `IGListCollectionViewLayout` is rarely used because of great builtin UICollectionViewFlowLayout or cells in section rarely need changing their sizes in practices. Despite it is not `IGListCollectionViewLayout`'s fault, I think it can be more optimized against `invalidateLayoutWithContext`. I would like to make an another PR to optimize it. Due to this PR just giving a proposed solution, it lacks of adding tests and changing log. When this solution is accepted, I would like to complete these todos. ### Checklist - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [x] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1285 Reviewed By: candance Differential Revision: D15592807 Pulled By: lorixx fbshipit-source-id: ae06abce896341509de4f3dfb73b3a7bc0a68c51
2019-06-12 05:25:14 +00:00
16B71CEB22B0A08400FE96ED /* IGTestInvalidateLayoutSectionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 16B71CE722B0A08300FE96ED /* IGTestInvalidateLayoutSectionController.m */; };
16B71CEC22B0A08400FE96ED /* IGTestInvalidateLayoutSectionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 16B71CE722B0A08300FE96ED /* IGTestInvalidateLayoutSectionController.m */; };
16B71CED22B0A08400FE96ED /* IGTestInvalidateLayoutDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 16B71CE822B0A08300FE96ED /* IGTestInvalidateLayoutDataSource.m */; };
16B71CEE22B0A08400FE96ED /* IGTestInvalidateLayoutDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 16B71CE822B0A08300FE96ED /* IGTestInvalidateLayoutDataSource.m */; };
16B71CEF22B0A08400FE96ED /* IGTestInvalidateLayoutObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 16B71CEA22B0A08300FE96ED /* IGTestInvalidateLayoutObject.m */; };
16B71CF022B0A08400FE96ED /* IGTestInvalidateLayoutObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 16B71CEA22B0A08300FE96ED /* IGTestInvalidateLayoutObject.m */; };
26271C8A1DAE94E40073E116 /* IGTestSingleNibItemDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 26271C891DAE94E40073E116 /* IGTestSingleNibItemDataSource.m */; };
26271C8C1DAE96740073E116 /* IGListSingleNibItemControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 26271C8B1DAE96740073E116 /* IGListSingleNibItemControllerTests.m */; };
290DF3771E9323E6009FE456 /* IGListDebuggerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 290DF3761E9323E6009FE456 /* IGListDebuggerTests.m */; };
2914BEE91DCD15F400C96401 /* IGTestNibSupplementaryView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2904861C1DCD02140007F41D /* IGTestNibSupplementaryView.xib */; };
294AC6321DDE4C19002FCE5D /* IGListDiffResultTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 294AC6311DDE4C19002FCE5D /* IGListDiffResultTests.m */; };
298DD9CE1E3ADD1400F76F50 /* IGListBindingSectionControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 298DD9CD1E3ADD1400F76F50 /* IGListBindingSectionControllerTests.m */; };
298DD9CF1E3ADD1400F76F50 /* IGListBindingSectionControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 298DD9CD1E3ADD1400F76F50 /* IGListBindingSectionControllerTests.m */; };
298DDA001E3AE28000F76F50 /* IGTestDiffingObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 298DD9F91E3AE1AA00F76F50 /* IGTestDiffingObject.m */; };
298DDA011E3AE28000F76F50 /* IGTestDiffingObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 298DD9F91E3AE1AA00F76F50 /* IGTestDiffingObject.m */; };
298DDA051E3AE2B000F76F50 /* IGTestStringBindableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 298DD9D91E3ADE3300F76F50 /* IGTestStringBindableCell.m */; };
298DDA061E3AE2B000F76F50 /* IGTestNumberBindableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 298DD9E11E3ADE4300F76F50 /* IGTestNumberBindableCell.m */; };
298DDA071E3AE2B100F76F50 /* IGTestStringBindableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 298DD9D91E3ADE3300F76F50 /* IGTestStringBindableCell.m */; };
298DDA081E3AE2B100F76F50 /* IGTestNumberBindableCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 298DD9E11E3ADE4300F76F50 /* IGTestNumberBindableCell.m */; };
298DDA091E3AE31D00F76F50 /* IGTestDiffingSectionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 298DD9D11E3ADDB400F76F50 /* IGTestDiffingSectionController.m */; };
298DDA0A1E3AE31E00F76F50 /* IGTestDiffingSectionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 298DD9D11E3ADDB400F76F50 /* IGTestDiffingSectionController.m */; };
298DDA131E3AE3F100F76F50 /* IGTestDiffingDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 298DDA0C1E3AE3ED00F76F50 /* IGTestDiffingDataSource.m */; };
298DDA141E3AE3F300F76F50 /* IGTestDiffingDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 298DDA0C1E3AE3ED00F76F50 /* IGTestDiffingDataSource.m */; };
298DDA241E3B15EE00F76F50 /* IGListCollectionViewLayoutTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 298DDA231E3B15EE00F76F50 /* IGListCollectionViewLayoutTests.m */; };
298DDA251E3B15EE00F76F50 /* IGListCollectionViewLayoutTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 298DDA231E3B15EE00F76F50 /* IGListCollectionViewLayoutTests.m */; };
298DDA381E3B168E00F76F50 /* IGLayoutTestItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 298DDA291E3B166100F76F50 /* IGLayoutTestItem.m */; };
298DDA391E3B168F00F76F50 /* IGLayoutTestItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 298DDA291E3B166100F76F50 /* IGLayoutTestItem.m */; };
298DDA3A1E3B16F600F76F50 /* IGLayoutTestDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 298DDA271E3B166100F76F50 /* IGLayoutTestDataSource.m */; };
298DDA3B1E3B16F800F76F50 /* IGLayoutTestDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 298DDA271E3B166100F76F50 /* IGLayoutTestDataSource.m */; };
298DDA3C1E3B170300F76F50 /* IGLayoutTestSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 298DDA2B1E3B166100F76F50 /* IGLayoutTestSection.m */; };
298DDA3D1E3B170400F76F50 /* IGLayoutTestSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 298DDA2B1E3B166100F76F50 /* IGLayoutTestSection.m */; };
2995409E1F588C9400F647CF /* IGTestBindingWithoutDeselectionDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2995409B1F588C8D00F647CF /* IGTestBindingWithoutDeselectionDelegate.m */; };
2995409F1F588C9500F647CF /* IGTestBindingWithoutDeselectionDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2995409B1F588C8D00F647CF /* IGTestBindingWithoutDeselectionDelegate.m */; };
29C4748C1DDF45F400AE68CE /* IGListAdapterProxyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 29C4748A1DDF45E700AE68CE /* IGListAdapterProxyTests.m */; };
29C4748D1DDF45F900AE68CE /* IGListAdapterProxyTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 29C4748A1DDF45E700AE68CE /* IGListAdapterProxyTests.m */; };
29C4748E1DDF460500AE68CE /* IGListAdapterStoryboardTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8240C7F11DC284C300B3AAE7 /* IGListAdapterStoryboardTests.m */; };
29C4748F1DDF460500AE68CE /* IGListDiffResultTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 294AC6311DDE4C19002FCE5D /* IGListDiffResultTests.m */; };
29C474901DDF460500AE68CE /* IGListSectionMapTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 829D7BA81DD1816400549816 /* IGListSectionMapTests.m */; };
29C5792E1DE0DA89003A149B /* IGTestNibSupplementaryView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2904861F1DCD02750007F41D /* IGTestNibSupplementaryView.m */; };
29C5792F1DE0DA8A003A149B /* IGListTestAdapterStoryboardDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8240C7FA1DC2F6CF00B3AAE7 /* IGListTestAdapterStoryboardDataSource.m */; };
29C579301DE0DA8A003A149B /* IGListTestStoryboardSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 8240C7F71DC2F3FB00B3AAE7 /* IGListTestStoryboardSection.m */; };
29C579311DE0DA8A003A149B /* IGTestNibSupplementaryView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2904861F1DCD02750007F41D /* IGTestNibSupplementaryView.m */; };
29C579321DE0DA8A003A149B /* IGTestStoryboardSupplementarySource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8240C7F41DC2D99300B3AAE7 /* IGTestStoryboardSupplementarySource.m */; };
29C579331DE0DA8A003A149B /* IGTestStoryboardSupplementaryView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8240C7EF1DC272CA00B3AAE7 /* IGTestStoryboardSupplementaryView.m */; };
29DA5CA31EA7C72400113926 /* IGListGenericSectionControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 29DA5CA21EA7C72400113926 /* IGListGenericSectionControllerTests.m */; };
29DA5CA71EA7D37000113926 /* IGListTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 29DA5CA61EA7D37000113926 /* IGListTestCase.m */; };
29DA5CA81EA7D37000113926 /* IGListTestCase.m in Sources */ = {isa = PBXBuildFile; fileRef = 29DA5CA61EA7D37000113926 /* IGListTestCase.m */; };
29EA6C491DB43A8000957A88 /* IGTestNibCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 294369B01DB1B7AE0025F6E7 /* IGTestNibCell.xib */; };
401B5E63230111EC004099D5 /* IGTestNibCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 294369B01DB1B7AE0025F6E7 /* IGTestNibCell.xib */; };
401B5E64230111F3004099D5 /* IGTestNibSupplementaryView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 2904861C1DCD02140007F41D /* IGTestNibSupplementaryView.xib */; };
401B5E65230111F7004099D5 /* IGTestStoryboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 821BC4C21DB8CAE900172ED0 /* IGTestStoryboard.storyboard */; };
57B22E6C2502AAB20055DC2F /* IGListTransitionData.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B22E662502AAB10055DC2F /* IGListTransitionData.m */; };
Improve SwiftPM support (#1546) Summary: This diff imports and refines the PR made by cntrump on GitHub. The PR introduces the following: * Sample apps now use SPM instead of CocoaPods to import IGListKit. * Adds Mac Catalyst as an example target. * Adds C++ flags to the CocoaPods specs. * Fixes a script issue that was discovered when regenerating the symlinks. The PR originally aimed to remove the need for symlinked references to the IGListKit and IGListDiffKit source files, but in testing, I couldn't get it working. It's possible SPM being too strict [on where the headers can be placed to be discovered](https://forums.swift.org/t/how-do-i-specify-the-headers-directory-for-a-objc-target-in-swift-package-managers-package-swift/58531/3). Additionally, another issue was that the original PR changed all of the `#import` statements to the the modular `import` statements, which is fine for the sample apps, but ended up breaking compatibility for any apps that had modules disabled. ## Changes in this pull request Improve SwiftPM support: Build module `IGListDiffKit` and `IGListKit` as Objective-C++. module `IGListDiffKit`: - Source/IGListDiffKit - module defined in `Source/IGListDiffKit/modulemap/module.modulemap` - requires `-fmodules` and `-fcxx-modules` module `IGListKit`: - depend on `IGListDiffKit`, use `import IGListDiffKit;` - Source/IGListKit - module defined in `Source/IGListKit/modulemap/module.modulemap` - requires `-fmodules` and `-fcxx-modules` module `IGListSwiftKit`: - depend on `IGListKit`, use `import IGListKit` - Source/IGListSwiftKit Deleted `spm/` and `scripts/generate_spm_sources_layout.sh`, it is unnecessary. Updated `.podspec`, add `'OTHER_CFLAGS' => '-fmodules'` and `'OTHER_CPLUSPLUSFLAGS' => '-fcxx-modules'`. Add missing swift files for `IGListSwiftKit` in `IGListKit.xcodeproj` ### How to use Replace `#import <IGListDiffKit/IGListDiffKit.h>` with `import IGListDiffKit;`, because `IGListDiffKit.h` isn't exist in `modulemap/`, Or create a symbol link by `ln -sf ../IGListDiffKit.h` for support it ? ### Examples Use SwiftPM for building examples. ### Checklist - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [ ] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1546 Test Plan: Test PR showing running tests: https://github.com/TimOliver/IGListKit/actions/runs/4339956050/jobs/7578047058 Reviewed By: lorixx Differential Revision: D33592395 Pulled By: TimOliver fbshipit-source-id: 8f7b1873f2b1c6a80908bb55b123e31bea13bb0c
2023-03-07 07:29:41 +00:00
57B22E6F2502AAB20055DC2F /* IGListTransitionData.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B22E692502AAB10055DC2F /* IGListTransitionData.h */; settings = {ATTRIBUTES = (Public, ); }; };
57B22E7F2502AAC40055DC2F /* IGListBatchUpdateTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B22E712502AAC20055DC2F /* IGListBatchUpdateTransaction.m */; };
57B22E802502AAC40055DC2F /* IGListUpdateTransactionBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B22E722502AAC30055DC2F /* IGListUpdateTransactionBuilder.m */; };
57B22E812502AAC40055DC2F /* IGListUpdateTransactable.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B22E732502AAC30055DC2F /* IGListUpdateTransactable.h */; };
57B22E822502AAC40055DC2F /* IGListDataSourceChangeTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B22E742502AAC30055DC2F /* IGListDataSourceChangeTransaction.h */; };
57B22E832502AAC40055DC2F /* IGListItemUpdatesCollector.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B22E752502AAC30055DC2F /* IGListItemUpdatesCollector.m */; };
57B22E842502AAC40055DC2F /* IGListReloadTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B22E762502AAC30055DC2F /* IGListReloadTransaction.h */; };
57B22E872502AAC40055DC2F /* IGListDataSourceChangeTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B22E792502AAC30055DC2F /* IGListDataSourceChangeTransaction.m */; };
57B22E892502AAC40055DC2F /* IGListBatchUpdateTransaction.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B22E7B2502AAC40055DC2F /* IGListBatchUpdateTransaction.h */; };
57B22E8A2502AAC40055DC2F /* IGListItemUpdatesCollector.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B22E7C2502AAC40055DC2F /* IGListItemUpdatesCollector.h */; };
57B22E8B2502AAC40055DC2F /* IGListUpdateTransactionBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B22E7D2502AAC40055DC2F /* IGListUpdateTransactionBuilder.h */; };
57B22E8C2502AAC40055DC2F /* IGListReloadTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B22E7E2502AAC40055DC2F /* IGListReloadTransaction.m */; };
6A9EB3611F841E5D0070C572 /* IGTestSingleWithoutDeselectionDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A9EB3601F841E5D0070C572 /* IGTestSingleWithoutDeselectionDelegate.m */; };
6A9EB3621F841E5D0070C572 /* IGTestSingleWithoutDeselectionDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A9EB3601F841E5D0070C572 /* IGTestSingleWithoutDeselectionDelegate.m */; };
7A02CEEE2361511100B49FAE /* IGListReloadDataUpdater.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEC72361510F00B49FAE /* IGListReloadDataUpdater.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CEEF2361511100B49FAE /* IGListReloadDataUpdater.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEC72361510F00B49FAE /* IGListReloadDataUpdater.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CEF12361511100B49FAE /* IGListScrollDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEC82361510F00B49FAE /* IGListScrollDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CEF22361511100B49FAE /* IGListScrollDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEC82361510F00B49FAE /* IGListScrollDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CEF42361511100B49FAE /* IGListWorkingRangeDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEC92361510F00B49FAE /* IGListWorkingRangeDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CEF52361511100B49FAE /* IGListWorkingRangeDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEC92361510F00B49FAE /* IGListWorkingRangeDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CEF72361511100B49FAE /* IGListAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CECA2361510F00B49FAE /* IGListAdapter.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CEF82361511100B49FAE /* IGListAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CECA2361510F00B49FAE /* IGListAdapter.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CEFA2361511100B49FAE /* IGListDisplayDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CECB2361510F00B49FAE /* IGListDisplayDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CEFB2361511100B49FAE /* IGListDisplayDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CECB2361510F00B49FAE /* IGListDisplayDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CEFD2361511100B49FAE /* IGListCollectionViewDelegateLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CECC2361510F00B49FAE /* IGListCollectionViewDelegateLayout.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CEFE2361511100B49FAE /* IGListCollectionViewDelegateLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CECC2361510F00B49FAE /* IGListCollectionViewDelegateLayout.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF002361511100B49FAE /* IGListCollectionView.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CECD2361510F00B49FAE /* IGListCollectionView.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF012361511100B49FAE /* IGListCollectionView.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CECD2361510F00B49FAE /* IGListCollectionView.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF032361511100B49FAE /* IGListGenericSectionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CECE2361510F00B49FAE /* IGListGenericSectionController.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF042361511100B49FAE /* IGListGenericSectionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CECE2361510F00B49FAE /* IGListGenericSectionController.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF062361511100B49FAE /* IGListBatchContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CECF2361510F00B49FAE /* IGListBatchContext.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF072361511100B49FAE /* IGListBatchContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CECF2361510F00B49FAE /* IGListBatchContext.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF092361511100B49FAE /* IGListBindingSectionControllerDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CED02361510F00B49FAE /* IGListBindingSectionControllerDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF0A2361511100B49FAE /* IGListBindingSectionControllerDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CED02361510F00B49FAE /* IGListBindingSectionControllerDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF0C2361511100B49FAE /* IGListCollectionContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CED12361510F00B49FAE /* IGListCollectionContext.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF0D2361511100B49FAE /* IGListCollectionContext.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CED12361510F00B49FAE /* IGListCollectionContext.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF0F2361511100B49FAE /* IGListAdapterDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CED22361511000B49FAE /* IGListAdapterDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF102361511100B49FAE /* IGListAdapterDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CED22361511000B49FAE /* IGListAdapterDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF122361511100B49FAE /* IGListGenericSectionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CED32361511000B49FAE /* IGListGenericSectionController.m */; };
7A02CF132361511100B49FAE /* IGListGenericSectionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CED32361511000B49FAE /* IGListGenericSectionController.m */; };
7A02CF152361511100B49FAE /* IGListCollectionViewLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CED42361511000B49FAE /* IGListCollectionViewLayout.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF162361511100B49FAE /* IGListCollectionViewLayout.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CED42361511000B49FAE /* IGListCollectionViewLayout.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF182361511100B49FAE /* IGListAdapterMoveDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CED52361511000B49FAE /* IGListAdapterMoveDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF192361511100B49FAE /* IGListAdapterMoveDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CED52361511000B49FAE /* IGListAdapterMoveDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF1B2361511100B49FAE /* IGListSectionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CED62361511000B49FAE /* IGListSectionController.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF1C2361511100B49FAE /* IGListSectionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CED62361511000B49FAE /* IGListSectionController.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF1E2361511100B49FAE /* IGListKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CED72361511000B49FAE /* IGListKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF1F2361511100B49FAE /* IGListKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CED72361511000B49FAE /* IGListKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF212361511100B49FAE /* IGListTransitionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CED82361511000B49FAE /* IGListTransitionDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF222361511100B49FAE /* IGListTransitionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CED82361511000B49FAE /* IGListTransitionDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF242361511100B49FAE /* IGListAdapterUpdateListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CED92361511000B49FAE /* IGListAdapterUpdateListener.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF252361511100B49FAE /* IGListAdapterUpdateListener.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CED92361511000B49FAE /* IGListAdapterUpdateListener.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF272361511100B49FAE /* IGListBindable.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEDA2361511000B49FAE /* IGListBindable.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF282361511100B49FAE /* IGListBindable.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEDA2361511000B49FAE /* IGListBindable.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF2A2361511100B49FAE /* IGListReloadDataUpdater.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CEDB2361511000B49FAE /* IGListReloadDataUpdater.m */; };
7A02CF2B2361511100B49FAE /* IGListReloadDataUpdater.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CEDB2361511000B49FAE /* IGListReloadDataUpdater.m */; };
7A02CF2D2361511100B49FAE /* IGListBindingSectionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEDC2361511000B49FAE /* IGListBindingSectionController.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF2E2361511100B49FAE /* IGListBindingSectionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEDC2361511000B49FAE /* IGListBindingSectionController.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF302361511100B49FAE /* IGListUpdatingDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEDD2361511000B49FAE /* IGListUpdatingDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF312361511100B49FAE /* IGListUpdatingDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEDD2361511000B49FAE /* IGListUpdatingDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF332361511100B49FAE /* IGListAdapterUpdater.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CEDE2361511000B49FAE /* IGListAdapterUpdater.m */; };
7A02CF342361511100B49FAE /* IGListAdapterUpdater.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CEDE2361511000B49FAE /* IGListAdapterUpdater.m */; };
7A02CF362361511100B49FAE /* IGListAdapterDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEDF2361511000B49FAE /* IGListAdapterDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF372361511100B49FAE /* IGListAdapterDataSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEDF2361511000B49FAE /* IGListAdapterDataSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF392361511100B49FAE /* IGListCollectionViewLayout.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CEE02361511000B49FAE /* IGListCollectionViewLayout.mm */; };
7A02CF3A2361511100B49FAE /* IGListCollectionViewLayout.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CEE02361511000B49FAE /* IGListCollectionViewLayout.mm */; };
7A02CF3C2361511100B49FAE /* IGListCollectionViewLayoutCompatible.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEE12361511000B49FAE /* IGListCollectionViewLayoutCompatible.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF3D2361511100B49FAE /* IGListCollectionViewLayoutCompatible.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEE12361511000B49FAE /* IGListCollectionViewLayoutCompatible.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF3F2361511100B49FAE /* IGListAdapterUpdaterDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEE22361511000B49FAE /* IGListAdapterUpdaterDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF402361511100B49FAE /* IGListAdapterUpdaterDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEE22361511000B49FAE /* IGListAdapterUpdaterDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF422361511100B49FAE /* IGListSingleSectionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEE32361511000B49FAE /* IGListSingleSectionController.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF432361511100B49FAE /* IGListSingleSectionController.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEE32361511000B49FAE /* IGListSingleSectionController.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF452361511100B49FAE /* IGListAdapterPerformanceDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEE42361511000B49FAE /* IGListAdapterPerformanceDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF462361511100B49FAE /* IGListAdapterPerformanceDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEE42361511000B49FAE /* IGListAdapterPerformanceDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF482361511100B49FAE /* IGListSingleSectionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CEE52361511000B49FAE /* IGListSingleSectionController.m */; };
7A02CF492361511100B49FAE /* IGListSingleSectionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CEE52361511000B49FAE /* IGListSingleSectionController.m */; };
7A02CF4B2361511100B49FAE /* IGListSupplementaryViewSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEE62361511000B49FAE /* IGListSupplementaryViewSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF4C2361511100B49FAE /* IGListSupplementaryViewSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEE62361511000B49FAE /* IGListSupplementaryViewSource.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF4E2361511100B49FAE /* IGListCollectionScrollingTraits.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEE72361511000B49FAE /* IGListCollectionScrollingTraits.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF4F2361511100B49FAE /* IGListCollectionScrollingTraits.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEE72361511000B49FAE /* IGListCollectionScrollingTraits.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF512361511100B49FAE /* IGListAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CEE82361511000B49FAE /* IGListAdapter.m */; };
7A02CF522361511100B49FAE /* IGListAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CEE82361511000B49FAE /* IGListAdapter.m */; };
7A02CF542361511100B49FAE /* IGListBindingSectionControllerSelectionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEE92361511000B49FAE /* IGListBindingSectionControllerSelectionDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF552361511100B49FAE /* IGListBindingSectionControllerSelectionDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEE92361511000B49FAE /* IGListBindingSectionControllerSelectionDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF572361511100B49FAE /* IGListBindingSectionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CEEA2361511100B49FAE /* IGListBindingSectionController.m */; };
7A02CF582361511100B49FAE /* IGListBindingSectionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CEEA2361511100B49FAE /* IGListBindingSectionController.m */; };
7A02CF5A2361511100B49FAE /* IGListAdapterUpdater.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEEB2361511100B49FAE /* IGListAdapterUpdater.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF5B2361511100B49FAE /* IGListAdapterUpdater.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CEEB2361511100B49FAE /* IGListAdapterUpdater.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02CF5D2361511100B49FAE /* IGListSectionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CEEC2361511100B49FAE /* IGListSectionController.m */; };
7A02CF5E2361511100B49FAE /* IGListSectionController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CEEC2361511100B49FAE /* IGListSectionController.m */; };
7A02CF602361511100B49FAE /* IGListCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CEED2361511100B49FAE /* IGListCollectionView.m */; };
7A02CF612361511100B49FAE /* IGListCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CEED2361511100B49FAE /* IGListCollectionView.m */; };
7A02CF902361513600B49FAE /* IGListDisplayHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF642361513300B49FAE /* IGListDisplayHandler.h */; };
7A02CF912361513600B49FAE /* IGListDisplayHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF642361513300B49FAE /* IGListDisplayHandler.h */; };
7A02CF932361513600B49FAE /* IGListAdapter+DebugDescription.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF652361513300B49FAE /* IGListAdapter+DebugDescription.m */; };
7A02CF942361513600B49FAE /* IGListAdapter+DebugDescription.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF652361513300B49FAE /* IGListAdapter+DebugDescription.m */; };
7A02CF962361513600B49FAE /* IGListAdapterInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF662361513400B49FAE /* IGListAdapterInternal.h */; };
7A02CF972361513600B49FAE /* IGListAdapterInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF662361513400B49FAE /* IGListAdapterInternal.h */; };
7A02CF992361513600B49FAE /* IGListBindingSectionController+DebugDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF672361513400B49FAE /* IGListBindingSectionController+DebugDescription.h */; };
7A02CF9A2361513600B49FAE /* IGListBindingSectionController+DebugDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF672361513400B49FAE /* IGListBindingSectionController+DebugDescription.h */; };
7A02CF9C2361513600B49FAE /* IGListCollectionViewLayoutInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF682361513400B49FAE /* IGListCollectionViewLayoutInternal.h */; };
7A02CF9D2361513600B49FAE /* IGListCollectionViewLayoutInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF682361513400B49FAE /* IGListCollectionViewLayoutInternal.h */; };
7A02CFA22361513600B49FAE /* UIScrollView+IGListKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF6A2361513400B49FAE /* UIScrollView+IGListKit.h */; };
7A02CFA32361513600B49FAE /* UIScrollView+IGListKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF6A2361513400B49FAE /* UIScrollView+IGListKit.h */; };
7A02CFA52361513600B49FAE /* UICollectionView+IGListBatchUpdateData.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF6B2361513400B49FAE /* UICollectionView+IGListBatchUpdateData.m */; };
7A02CFA62361513600B49FAE /* UICollectionView+IGListBatchUpdateData.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF6B2361513400B49FAE /* UICollectionView+IGListBatchUpdateData.m */; };
7A02CFA82361513600B49FAE /* UICollectionViewLayout+InteractiveReordering.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF6C2361513400B49FAE /* UICollectionViewLayout+InteractiveReordering.h */; };
7A02CFA92361513600B49FAE /* UICollectionViewLayout+InteractiveReordering.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF6C2361513400B49FAE /* UICollectionViewLayout+InteractiveReordering.h */; };
7A02CFAB2361513600B49FAE /* IGListReloadIndexPath.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF6D2361513400B49FAE /* IGListReloadIndexPath.m */; };
7A02CFAC2361513600B49FAE /* IGListReloadIndexPath.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF6D2361513400B49FAE /* IGListReloadIndexPath.m */; };
7A02CFAE2361513600B49FAE /* UICollectionViewLayout+InteractiveReordering.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF6E2361513400B49FAE /* UICollectionViewLayout+InteractiveReordering.m */; };
7A02CFAF2361513600B49FAE /* UICollectionViewLayout+InteractiveReordering.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF6E2361513400B49FAE /* UICollectionViewLayout+InteractiveReordering.m */; };
7A02CFB12361513600B49FAE /* UIScrollView+IGListKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF6F2361513400B49FAE /* UIScrollView+IGListKit.m */; };
7A02CFB22361513600B49FAE /* UIScrollView+IGListKit.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF6F2361513400B49FAE /* UIScrollView+IGListKit.m */; };
7A02CFB42361513600B49FAE /* IGListAdapterUpdaterInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF702361513400B49FAE /* IGListAdapterUpdaterInternal.h */; };
7A02CFB52361513600B49FAE /* IGListAdapterUpdaterInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF702361513400B49FAE /* IGListAdapterUpdaterInternal.h */; };
7A02CFB72361513600B49FAE /* IGListSectionMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF712361513400B49FAE /* IGListSectionMap.h */; };
7A02CFB82361513600B49FAE /* IGListSectionMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF712361513400B49FAE /* IGListSectionMap.h */; };
7A02CFBA2361513600B49FAE /* IGListAdapterProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF722361513400B49FAE /* IGListAdapterProxy.m */; };
7A02CFBB2361513600B49FAE /* IGListAdapterProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF722361513400B49FAE /* IGListAdapterProxy.m */; };
7A02CFBD2361513600B49FAE /* IGListAdapterUpdater+DebugDescription.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF732361513400B49FAE /* IGListAdapterUpdater+DebugDescription.m */; };
7A02CFBE2361513600B49FAE /* IGListAdapterUpdater+DebugDescription.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF732361513400B49FAE /* IGListAdapterUpdater+DebugDescription.m */; };
7A02CFC02361513600B49FAE /* IGListAdapter+UICollectionView.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF742361513400B49FAE /* IGListAdapter+UICollectionView.h */; };
7A02CFC12361513600B49FAE /* IGListAdapter+UICollectionView.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF742361513400B49FAE /* IGListAdapter+UICollectionView.h */; };
7A02CFC32361513600B49FAE /* UICollectionView+DebugDescription.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF752361513400B49FAE /* UICollectionView+DebugDescription.m */; };
7A02CFC42361513600B49FAE /* UICollectionView+DebugDescription.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF752361513400B49FAE /* UICollectionView+DebugDescription.m */; };
7A02CFC62361513600B49FAE /* IGListSectionMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF762361513400B49FAE /* IGListSectionMap.m */; };
7A02CFC72361513600B49FAE /* IGListSectionMap.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF762361513400B49FAE /* IGListSectionMap.m */; };
7A02CFC92361513600B49FAE /* UICollectionView+IGListBatchUpdateData.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF772361513400B49FAE /* UICollectionView+IGListBatchUpdateData.h */; };
7A02CFCA2361513600B49FAE /* UICollectionView+IGListBatchUpdateData.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF772361513400B49FAE /* UICollectionView+IGListBatchUpdateData.h */; };
7A02CFCC2361513600B49FAE /* IGListBatchUpdateState.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF782361513400B49FAE /* IGListBatchUpdateState.h */; };
7A02CFCD2361513600B49FAE /* IGListBatchUpdateState.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF782361513400B49FAE /* IGListBatchUpdateState.h */; };
7A02CFCF2361513600B49FAE /* IGListDebugger.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF792361513400B49FAE /* IGListDebugger.h */; };
7A02CFD02361513600B49FAE /* IGListDebugger.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF792361513400B49FAE /* IGListDebugger.h */; };
7A02CFD82361513600B49FAE /* IGListBatchUpdateData+DebugDescription.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF7C2361513400B49FAE /* IGListBatchUpdateData+DebugDescription.m */; };
7A02CFD92361513600B49FAE /* IGListBatchUpdateData+DebugDescription.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF7C2361513400B49FAE /* IGListBatchUpdateData+DebugDescription.m */; };
7A02CFDB2361513600B49FAE /* IGListAdapterProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF7D2361513400B49FAE /* IGListAdapterProxy.h */; };
7A02CFDC2361513600B49FAE /* IGListAdapterProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF7D2361513400B49FAE /* IGListAdapterProxy.h */; };
7A02CFDE2361513600B49FAE /* IGListAdapterUpdater+DebugDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF7E2361513500B49FAE /* IGListAdapterUpdater+DebugDescription.h */; };
7A02CFDF2361513600B49FAE /* IGListAdapterUpdater+DebugDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF7E2361513500B49FAE /* IGListAdapterUpdater+DebugDescription.h */; };
7A02CFE12361513600B49FAE /* IGListAdapter+DebugDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF7F2361513500B49FAE /* IGListAdapter+DebugDescription.h */; };
7A02CFE22361513600B49FAE /* IGListAdapter+DebugDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF7F2361513500B49FAE /* IGListAdapter+DebugDescription.h */; };
7A02CFE42361513600B49FAE /* IGListDisplayHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF802361513500B49FAE /* IGListDisplayHandler.m */; };
7A02CFE52361513600B49FAE /* IGListDisplayHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF802361513500B49FAE /* IGListDisplayHandler.m */; };
7A02CFE72361513600B49FAE /* IGListArrayUtilsInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF812361513500B49FAE /* IGListArrayUtilsInternal.h */; };
7A02CFE82361513600B49FAE /* IGListArrayUtilsInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF812361513500B49FAE /* IGListArrayUtilsInternal.h */; };
7A02CFED2361513600B49FAE /* IGListDebuggingUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF832361513500B49FAE /* IGListDebuggingUtilities.h */; };
7A02CFEE2361513600B49FAE /* IGListDebuggingUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF832361513500B49FAE /* IGListDebuggingUtilities.h */; };
7A02CFF02361513600B49FAE /* IGListBindingSectionController+DebugDescription.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF842361513500B49FAE /* IGListBindingSectionController+DebugDescription.m */; };
7A02CFF12361513600B49FAE /* IGListBindingSectionController+DebugDescription.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF842361513500B49FAE /* IGListBindingSectionController+DebugDescription.m */; };
7A02CFF32361513600B49FAE /* IGListAdapter+UICollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF852361513500B49FAE /* IGListAdapter+UICollectionView.m */; };
7A02CFF42361513600B49FAE /* IGListAdapter+UICollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF852361513500B49FAE /* IGListAdapter+UICollectionView.m */; };
7A02CFF62361513600B49FAE /* IGListSectionMap+DebugDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF862361513500B49FAE /* IGListSectionMap+DebugDescription.h */; };
7A02CFF72361513600B49FAE /* IGListSectionMap+DebugDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF862361513500B49FAE /* IGListSectionMap+DebugDescription.h */; };
7A02CFF92361513600B49FAE /* IGListWorkingRangeHandler.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF872361513500B49FAE /* IGListWorkingRangeHandler.mm */; };
7A02CFFA2361513600B49FAE /* IGListWorkingRangeHandler.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF872361513500B49FAE /* IGListWorkingRangeHandler.mm */; };
7A02CFFC2361513600B49FAE /* IGListReloadIndexPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF882361513500B49FAE /* IGListReloadIndexPath.h */; };
7A02CFFD2361513600B49FAE /* IGListReloadIndexPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF882361513500B49FAE /* IGListReloadIndexPath.h */; };
7A02CFFF2361513600B49FAE /* IGListDebugger.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF892361513500B49FAE /* IGListDebugger.m */; };
7A02D0002361513600B49FAE /* IGListDebugger.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF892361513500B49FAE /* IGListDebugger.m */; };
7A02D0022361513600B49FAE /* IGListSectionControllerInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF8A2361513500B49FAE /* IGListSectionControllerInternal.h */; };
7A02D0032361513600B49FAE /* IGListSectionControllerInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF8A2361513500B49FAE /* IGListSectionControllerInternal.h */; };
7A02D0052361513600B49FAE /* IGListDebuggingUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF8B2361513500B49FAE /* IGListDebuggingUtilities.m */; };
7A02D0062361513600B49FAE /* IGListDebuggingUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF8B2361513500B49FAE /* IGListDebuggingUtilities.m */; };
7A02D0082361513600B49FAE /* IGListBatchUpdateData+DebugDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF8C2361513500B49FAE /* IGListBatchUpdateData+DebugDescription.h */; };
7A02D0092361513600B49FAE /* IGListBatchUpdateData+DebugDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF8C2361513500B49FAE /* IGListBatchUpdateData+DebugDescription.h */; };
7A02D00B2361513600B49FAE /* IGListSectionMap+DebugDescription.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF8D2361513600B49FAE /* IGListSectionMap+DebugDescription.m */; };
7A02D00C2361513600B49FAE /* IGListSectionMap+DebugDescription.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02CF8D2361513600B49FAE /* IGListSectionMap+DebugDescription.m */; };
7A02D00E2361513600B49FAE /* IGListWorkingRangeHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF8E2361513600B49FAE /* IGListWorkingRangeHandler.h */; };
7A02D00F2361513600B49FAE /* IGListWorkingRangeHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF8E2361513600B49FAE /* IGListWorkingRangeHandler.h */; };
7A02D0112361513600B49FAE /* UICollectionView+DebugDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF8F2361513600B49FAE /* UICollectionView+DebugDescription.h */; };
7A02D0122361513600B49FAE /* UICollectionView+DebugDescription.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CF8F2361513600B49FAE /* UICollectionView+DebugDescription.h */; };
7A02D05B2361529F00B49FAE /* IGListDiff.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0402361529E00B49FAE /* IGListDiff.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D05C2361529F00B49FAE /* IGListDiff.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0402361529E00B49FAE /* IGListDiff.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D05D2361529F00B49FAE /* IGListDiff.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0402361529E00B49FAE /* IGListDiff.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D05E2361529F00B49FAE /* NSNumber+IGListDiffable.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D0412361529E00B49FAE /* NSNumber+IGListDiffable.m */; };
7A02D05F2361529F00B49FAE /* NSNumber+IGListDiffable.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D0412361529E00B49FAE /* NSNumber+IGListDiffable.m */; };
7A02D0602361529F00B49FAE /* NSNumber+IGListDiffable.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D0412361529E00B49FAE /* NSNumber+IGListDiffable.m */; };
7A02D0612361529F00B49FAE /* NSString+IGListDiffable.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0422361529E00B49FAE /* NSString+IGListDiffable.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0622361529F00B49FAE /* NSString+IGListDiffable.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0422361529E00B49FAE /* NSString+IGListDiffable.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0632361529F00B49FAE /* NSString+IGListDiffable.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0422361529E00B49FAE /* NSString+IGListDiffable.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0642361529F00B49FAE /* IGListIndexPathResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0432361529E00B49FAE /* IGListIndexPathResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0652361529F00B49FAE /* IGListIndexPathResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0432361529E00B49FAE /* IGListIndexPathResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0662361529F00B49FAE /* IGListIndexPathResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0432361529E00B49FAE /* IGListIndexPathResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0672361529F00B49FAE /* IGListDiffKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0442361529E00B49FAE /* IGListDiffKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0682361529F00B49FAE /* IGListDiffKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0442361529E00B49FAE /* IGListDiffKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0692361529F00B49FAE /* IGListDiffKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0442361529E00B49FAE /* IGListDiffKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D06A2361529F00B49FAE /* IGListExperiments.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0452361529E00B49FAE /* IGListExperiments.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D06B2361529F00B49FAE /* IGListExperiments.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0452361529E00B49FAE /* IGListExperiments.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D06C2361529F00B49FAE /* IGListExperiments.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0452361529E00B49FAE /* IGListExperiments.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D06D2361529F00B49FAE /* NSString+IGListDiffable.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D0462361529E00B49FAE /* NSString+IGListDiffable.m */; };
7A02D06E2361529F00B49FAE /* NSString+IGListDiffable.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D0462361529E00B49FAE /* NSString+IGListDiffable.m */; };
7A02D06F2361529F00B49FAE /* NSString+IGListDiffable.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D0462361529E00B49FAE /* NSString+IGListDiffable.m */; };
7A02D0702361529F00B49FAE /* IGListCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0472361529E00B49FAE /* IGListCompatibility.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0712361529F00B49FAE /* IGListCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0472361529E00B49FAE /* IGListCompatibility.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0722361529F00B49FAE /* IGListCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0472361529E00B49FAE /* IGListCompatibility.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0732361529F00B49FAE /* NSNumber+IGListDiffable.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0482361529E00B49FAE /* NSNumber+IGListDiffable.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0742361529F00B49FAE /* NSNumber+IGListDiffable.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0482361529E00B49FAE /* NSNumber+IGListDiffable.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0752361529F00B49FAE /* NSNumber+IGListDiffable.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0482361529E00B49FAE /* NSNumber+IGListDiffable.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0762361529F00B49FAE /* IGListIndexSetResultInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D04A2361529E00B49FAE /* IGListIndexSetResultInternal.h */; };
7A02D0772361529F00B49FAE /* IGListIndexSetResultInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D04A2361529E00B49FAE /* IGListIndexSetResultInternal.h */; };
7A02D0782361529F00B49FAE /* IGListIndexSetResultInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D04A2361529E00B49FAE /* IGListIndexSetResultInternal.h */; };
7A02D0792361529F00B49FAE /* IGListIndexPathResultInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D04B2361529E00B49FAE /* IGListIndexPathResultInternal.h */; };
7A02D07A2361529F00B49FAE /* IGListIndexPathResultInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D04B2361529E00B49FAE /* IGListIndexPathResultInternal.h */; };
7A02D07B2361529F00B49FAE /* IGListIndexPathResultInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D04B2361529E00B49FAE /* IGListIndexPathResultInternal.h */; };
7A02D07C2361529F00B49FAE /* IGListMoveIndexInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D04C2361529E00B49FAE /* IGListMoveIndexInternal.h */; };
7A02D07D2361529F00B49FAE /* IGListMoveIndexInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D04C2361529E00B49FAE /* IGListMoveIndexInternal.h */; };
7A02D07E2361529F00B49FAE /* IGListMoveIndexInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D04C2361529E00B49FAE /* IGListMoveIndexInternal.h */; };
7A02D07F2361529F00B49FAE /* IGListMoveIndexPathInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D04D2361529E00B49FAE /* IGListMoveIndexPathInternal.h */; };
7A02D0802361529F00B49FAE /* IGListMoveIndexPathInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D04D2361529E00B49FAE /* IGListMoveIndexPathInternal.h */; };
7A02D0812361529F00B49FAE /* IGListMoveIndexPathInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D04D2361529E00B49FAE /* IGListMoveIndexPathInternal.h */; };
7A02D0822361529F00B49FAE /* IGListMoveIndexPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D04E2361529E00B49FAE /* IGListMoveIndexPath.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0832361529F00B49FAE /* IGListMoveIndexPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D04E2361529E00B49FAE /* IGListMoveIndexPath.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0842361529F00B49FAE /* IGListMoveIndexPath.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D04E2361529E00B49FAE /* IGListMoveIndexPath.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0852361529F00B49FAE /* IGListDiff.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D04F2361529E00B49FAE /* IGListDiff.mm */; };
7A02D0862361529F00B49FAE /* IGListDiff.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D04F2361529E00B49FAE /* IGListDiff.mm */; };
7A02D0872361529F00B49FAE /* IGListDiff.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D04F2361529E00B49FAE /* IGListDiff.mm */; };
7A02D0882361529F00B49FAE /* IGListAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0502361529E00B49FAE /* IGListAssert.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0892361529F00B49FAE /* IGListAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0502361529E00B49FAE /* IGListAssert.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D08A2361529F00B49FAE /* IGListAssert.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0502361529E00B49FAE /* IGListAssert.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D08B2361529F00B49FAE /* IGListIndexPathResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D0512361529E00B49FAE /* IGListIndexPathResult.m */; };
7A02D08C2361529F00B49FAE /* IGListIndexPathResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D0512361529E00B49FAE /* IGListIndexPathResult.m */; };
7A02D08D2361529F00B49FAE /* IGListIndexPathResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D0512361529E00B49FAE /* IGListIndexPathResult.m */; };
7A02D08E2361529F00B49FAE /* IGListIndexSetResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D0522361529E00B49FAE /* IGListIndexSetResult.m */; };
7A02D08F2361529F00B49FAE /* IGListIndexSetResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D0522361529E00B49FAE /* IGListIndexSetResult.m */; };
7A02D0902361529F00B49FAE /* IGListIndexSetResult.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D0522361529E00B49FAE /* IGListIndexSetResult.m */; };
7A02D0912361529F00B49FAE /* IGListMoveIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D0532361529E00B49FAE /* IGListMoveIndex.m */; };
7A02D0922361529F00B49FAE /* IGListMoveIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D0532361529E00B49FAE /* IGListMoveIndex.m */; };
7A02D0932361529F00B49FAE /* IGListMoveIndex.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D0532361529E00B49FAE /* IGListMoveIndex.m */; };
7A02D0942361529F00B49FAE /* IGListBatchUpdateData.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0542361529E00B49FAE /* IGListBatchUpdateData.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0952361529F00B49FAE /* IGListBatchUpdateData.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0542361529E00B49FAE /* IGListBatchUpdateData.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0962361529F00B49FAE /* IGListBatchUpdateData.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0542361529E00B49FAE /* IGListBatchUpdateData.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0972361529F00B49FAE /* IGListMoveIndexPath.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D0552361529E00B49FAE /* IGListMoveIndexPath.m */; };
7A02D0982361529F00B49FAE /* IGListMoveIndexPath.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D0552361529E00B49FAE /* IGListMoveIndexPath.m */; };
7A02D0992361529F00B49FAE /* IGListMoveIndexPath.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D0552361529E00B49FAE /* IGListMoveIndexPath.m */; };
7A02D09A2361529F00B49FAE /* IGListDiffable.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0562361529E00B49FAE /* IGListDiffable.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D09B2361529F00B49FAE /* IGListDiffable.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0562361529E00B49FAE /* IGListDiffable.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D09C2361529F00B49FAE /* IGListDiffable.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0562361529E00B49FAE /* IGListDiffable.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D09D2361529F00B49FAE /* IGListBatchUpdateData.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D0572361529E00B49FAE /* IGListBatchUpdateData.mm */; };
7A02D09E2361529F00B49FAE /* IGListBatchUpdateData.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D0572361529E00B49FAE /* IGListBatchUpdateData.mm */; };
7A02D09F2361529F00B49FAE /* IGListBatchUpdateData.mm in Sources */ = {isa = PBXBuildFile; fileRef = 7A02D0572361529E00B49FAE /* IGListBatchUpdateData.mm */; };
7A02D0A02361529F00B49FAE /* IGListMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0582361529E00B49FAE /* IGListMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0A12361529F00B49FAE /* IGListMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0582361529E00B49FAE /* IGListMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0A22361529F00B49FAE /* IGListMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0582361529E00B49FAE /* IGListMacros.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0A32361529F00B49FAE /* IGListMoveIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0592361529E00B49FAE /* IGListMoveIndex.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0A42361529F00B49FAE /* IGListMoveIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0592361529E00B49FAE /* IGListMoveIndex.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0A52361529F00B49FAE /* IGListMoveIndex.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D0592361529E00B49FAE /* IGListMoveIndex.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0A62361529F00B49FAE /* IGListIndexSetResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D05A2361529F00B49FAE /* IGListIndexSetResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0A72361529F00B49FAE /* IGListIndexSetResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D05A2361529F00B49FAE /* IGListIndexSetResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0A82361529F00B49FAE /* IGListIndexSetResult.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02D05A2361529F00B49FAE /* IGListIndexSetResult.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A02D0A9236152F500B49FAE /* IGListDiffKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A02D0382361526600B49FAE /* IGListDiffKit.framework */; };
7A02D0AA2361530800B49FAE /* IGListDiffKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A02D02B2361525800B49FAE /* IGListDiffKit.framework */; };
7A02D0AB2361530E00B49FAE /* IGListDiffKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7A02D01D2361520200B49FAE /* IGListDiffKit.framework */; };
7A02D0C023615CE500B49FAE /* IGListKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A02CED72361511000B49FAE /* IGListKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A92EA9B23A8A42000E5A13D /* IGListSwiftKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A92EA9923A8A42000E5A13D /* IGListSwiftKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A92EAA023A8A43D00E5A13D /* IGListCollectionContext+Refinements.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A92EA9F23A8A43D00E5A13D /* IGListCollectionContext+Refinements.swift */; };
7A92EAB023A8A50C00E5A13D /* IGListSwiftKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A92EA9923A8A42000E5A13D /* IGListSwiftKit.h */; settings = {ATTRIBUTES = (Public, ); }; };
7A92EAB123A8A50C00E5A13D /* IGListCollectionContext+Refinements.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A92EA9F23A8A43D00E5A13D /* IGListCollectionContext+Refinements.swift */; };
7A92EAB423A8A5FA00E5A13D /* IGListAdapterUpdaterHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AD6864A23A89E7F009000DE /* IGListAdapterUpdaterHelpers.h */; };
7A92EAB523A8A5FF00E5A13D /* IGListAdapterUpdaterHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AD6864923A89E7F009000DE /* IGListAdapterUpdaterHelpers.m */; };
7AD6864B23A89E7F009000DE /* IGListAdapterUpdaterHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AD6864923A89E7F009000DE /* IGListAdapterUpdaterHelpers.m */; };
7AD6864C23A89E7F009000DE /* IGListAdapterUpdaterHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = 7AD6864A23A89E7F009000DE /* IGListAdapterUpdaterHelpers.h */; };
7AEA8E5D25BF715C00971591 /* IGListSingleSectionController+Refinements.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AEA8E5C25BF715C00971591 /* IGListSingleSectionController+Refinements.swift */; };
7AEA8E5E25BF715C00971591 /* IGListSingleSectionController+Refinements.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7AEA8E5C25BF715C00971591 /* IGListSingleSectionController+Refinements.swift */; };
821BC4C01DB8C9D500172ED0 /* IGListSingleStoryboardItemControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 821BC4BE1DB8C95300172ED0 /* IGListSingleStoryboardItemControllerTests.m */; };
821BC4C41DB8CEF800172ED0 /* IGTestStoryboard.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 821BC4C21DB8CAE900172ED0 /* IGTestStoryboard.storyboard */; };
821BC4CB1DB8D60100172ED0 /* IGTestStoryboardViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 821BC4C81DB8D5B200172ED0 /* IGTestStoryboardViewController.m */; };
821BC4D01DB8D90900172ED0 /* IGTestStoryboardCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 821BC4CD1DB8D8C500172ED0 /* IGTestStoryboardCell.m */; };
821BC4D31DB981AB00172ED0 /* IGTestSingleStoryboardItemDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 821BC4D21DB981AB00172ED0 /* IGTestSingleStoryboardItemDataSource.m */; };
8240C7F01DC272CA00B3AAE7 /* IGTestStoryboardSupplementaryView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8240C7EF1DC272CA00B3AAE7 /* IGTestStoryboardSupplementaryView.m */; };
8240C7F21DC284C300B3AAE7 /* IGListAdapterStoryboardTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8240C7F11DC284C300B3AAE7 /* IGListAdapterStoryboardTests.m */; };
8240C7F51DC2D99300B3AAE7 /* IGTestStoryboardSupplementarySource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8240C7F41DC2D99300B3AAE7 /* IGTestStoryboardSupplementarySource.m */; };
8240C7F81DC2F3FB00B3AAE7 /* IGListTestStoryboardSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 8240C7F71DC2F3FB00B3AAE7 /* IGListTestStoryboardSection.m */; };
8240C7FB1DC2F6CF00B3AAE7 /* IGListTestAdapterStoryboardDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8240C7FA1DC2F6CF00B3AAE7 /* IGListTestAdapterStoryboardDataSource.m */; };
8285404C1DE40C6E00118B94 /* IGListTestHorizontalSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 8285404B1DE40C6E00118B94 /* IGListTestHorizontalSection.m */; };
8285404D1DE40C6E00118B94 /* IGListTestHorizontalSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 8285404B1DE40C6E00118B94 /* IGListTestHorizontalSection.m */; };
828540501DE40D2D00118B94 /* IGListTestAdapterHorizontalDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8285404F1DE40D2D00118B94 /* IGListTestAdapterHorizontalDataSource.m */; };
828540511DE40D2D00118B94 /* IGListTestAdapterHorizontalDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 8285404F1DE40D2D00118B94 /* IGListTestAdapterHorizontalDataSource.m */; };
82914C5B1E6E2DEC0066C2F8 /* IGListTestContainerSizeSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 82914C5A1E6E2DEC0066C2F8 /* IGListTestContainerSizeSection.m */; };
82914C5C1E6E2DEC0066C2F8 /* IGListTestContainerSizeSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 82914C5A1E6E2DEC0066C2F8 /* IGListTestContainerSizeSection.m */; };
829D7BAA1DD1819000549816 /* IGListSectionMapTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 829D7BA81DD1816400549816 /* IGListSectionMapTests.m */; };
88144F071D870EDC007C7F66 /* IGListAdapterE2ETests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EE21D870EDC007C7F66 /* IGListAdapterE2ETests.m */; };
88144F081D870EDC007C7F66 /* IGListAdapterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EE31D870EDC007C7F66 /* IGListAdapterTests.m */; };
88144F091D870EDC007C7F66 /* IGListAdapterUpdaterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EE41D870EDC007C7F66 /* IGListAdapterUpdaterTests.m */; };
88144F0A1D870EDC007C7F66 /* IGListBatchUpdateDataTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EE51D870EDC007C7F66 /* IGListBatchUpdateDataTests.m */; };
88144F0B1D870EDC007C7F66 /* IGListDiffSwiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88144EE61D870EDC007C7F66 /* IGListDiffSwiftTests.swift */; };
88144F0C1D870EDC007C7F66 /* IGListDiffTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EE81D870EDC007C7F66 /* IGListDiffTests.m */; };
88144F0D1D870EDC007C7F66 /* IGListDisplayHandlerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EE91D870EDC007C7F66 /* IGListDisplayHandlerTests.m */; };
88144F101D870EDC007C7F66 /* IGListSingleSectionControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EED1D870EDC007C7F66 /* IGListSingleSectionControllerTests.m */; };
88144F121D870EDC007C7F66 /* IGListWorkingRangeHandlerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EEF1D870EDC007C7F66 /* IGListWorkingRangeHandlerTests.m */; };
88144F131D870EDC007C7F66 /* IGListTestAdapterDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EF21D870EDC007C7F66 /* IGListTestAdapterDataSource.m */; };
88144F141D870EDC007C7F66 /* IGListTestOffsettingLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EF41D870EDC007C7F66 /* IGListTestOffsettingLayout.m */; };
88144F151D870EDC007C7F66 /* IGListTestSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EF61D870EDC007C7F66 /* IGListTestSection.m */; };
88144F161D870EDC007C7F66 /* IGListTestUICollectionViewDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EF81D870EDC007C7F66 /* IGListTestUICollectionViewDataSource.m */; };
88144F171D870EDC007C7F66 /* IGTestCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EFA1D870EDC007C7F66 /* IGTestCell.m */; };
88144F181D870EDC007C7F66 /* IGTestDelegateController.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EFC1D870EDC007C7F66 /* IGTestDelegateController.m */; };
88144F191D870EDC007C7F66 /* IGTestDelegateDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EFE1D870EDC007C7F66 /* IGTestDelegateDataSource.m */; };
88144F1A1D870EDC007C7F66 /* IGTestObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144F001D870EDC007C7F66 /* IGTestObject.m */; };
88144F1B1D870EDC007C7F66 /* IGTestSingleItemDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144F021D870EDC007C7F66 /* IGTestSingleItemDataSource.m */; };
88144F1D1D870EDC007C7F66 /* IGTestSupplementarySource.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144F061D870EDC007C7F66 /* IGTestSupplementarySource.m */; };
882BC1321E0118CB0083B311 /* IGTestObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144F001D870EDC007C7F66 /* IGTestObject.m */; };
883797082022304E00B94676 /* BuildFile in Headers */ = {isa = PBXBuildFile; };
88379728202236AB00B94676 /* IGListAdapterUpdateTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 294CDE621F995DD7002CF6E4 /* IGListAdapterUpdateTester.m */; };
88379729202236AC00B94676 /* IGListAdapterUpdateTester.m in Sources */ = {isa = PBXBuildFile; fileRef = 294CDE621F995DD7002CF6E4 /* IGListAdapterUpdateTester.m */; };
885FE1DD1DC51A0D009CE2B4 /* IGListKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 885FE1D41DC51A0D009CE2B4 /* IGListKit.framework */; };
885FE22B1DC51B76009CE2B4 /* IGListAdapterE2ETests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EE21D870EDC007C7F66 /* IGListAdapterE2ETests.m */; };
885FE22C1DC51B76009CE2B4 /* IGListAdapterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EE31D870EDC007C7F66 /* IGListAdapterTests.m */; };
885FE22D1DC51B76009CE2B4 /* IGListAdapterUpdaterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EE41D870EDC007C7F66 /* IGListAdapterUpdaterTests.m */; };
885FE22E1DC51B76009CE2B4 /* IGListBatchUpdateDataTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EE51D870EDC007C7F66 /* IGListBatchUpdateDataTests.m */; };
885FE22F1DC51B76009CE2B4 /* IGListDiffSwiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88144EE61D870EDC007C7F66 /* IGListDiffSwiftTests.swift */; };
885FE2301DC51B76009CE2B4 /* IGListDiffTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EE81D870EDC007C7F66 /* IGListDiffTests.m */; };
885FE2311DC51B76009CE2B4 /* IGListDisplayHandlerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EE91D870EDC007C7F66 /* IGListDisplayHandlerTests.m */; };
885FE2331DC51B76009CE2B4 /* IGListSingleSectionControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EED1D870EDC007C7F66 /* IGListSingleSectionControllerTests.m */; };
885FE2341DC51B76009CE2B4 /* IGListSingleNibItemControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 26271C8B1DAE96740073E116 /* IGListSingleNibItemControllerTests.m */; };
885FE2351DC51B76009CE2B4 /* IGListSingleStoryboardItemControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 821BC4BE1DB8C95300172ED0 /* IGListSingleStoryboardItemControllerTests.m */; };
885FE2371DC51B76009CE2B4 /* IGListWorkingRangeHandlerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EEF1D870EDC007C7F66 /* IGListWorkingRangeHandlerTests.m */; };
885FE2381DC51B86009CE2B4 /* IGListTestAdapterDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EF21D870EDC007C7F66 /* IGListTestAdapterDataSource.m */; };
885FE2391DC51B86009CE2B4 /* IGListTestOffsettingLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EF41D870EDC007C7F66 /* IGListTestOffsettingLayout.m */; };
885FE23A1DC51B86009CE2B4 /* IGListTestSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EF61D870EDC007C7F66 /* IGListTestSection.m */; };
885FE23B1DC51B86009CE2B4 /* IGListTestUICollectionViewDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EF81D870EDC007C7F66 /* IGListTestUICollectionViewDataSource.m */; };
885FE23C1DC51B86009CE2B4 /* IGTestCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EFA1D870EDC007C7F66 /* IGTestCell.m */; };
885FE23D1DC51B86009CE2B4 /* IGTestDelegateController.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EFC1D870EDC007C7F66 /* IGTestDelegateController.m */; };
885FE23E1DC51B86009CE2B4 /* IGTestDelegateDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EFE1D870EDC007C7F66 /* IGTestDelegateDataSource.m */; };
885FE23F1DC51B86009CE2B4 /* IGTestObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144F001D870EDC007C7F66 /* IGTestObject.m */; };
885FE2401DC51B86009CE2B4 /* IGTestSingleItemDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144F021D870EDC007C7F66 /* IGTestSingleItemDataSource.m */; };
885FE2411DC51B86009CE2B4 /* IGTestSingleNibItemDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 26271C891DAE94E40073E116 /* IGTestSingleNibItemDataSource.m */; };
885FE2421DC51B86009CE2B4 /* IGTestSingleStoryboardItemDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 821BC4D21DB981AB00172ED0 /* IGTestSingleStoryboardItemDataSource.m */; };
885FE2431DC51B86009CE2B4 /* IGTestStoryboardViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 821BC4C81DB8D5B200172ED0 /* IGTestStoryboardViewController.m */; };
885FE2451DC51B86009CE2B4 /* IGTestStoryboardCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 821BC4CD1DB8D8C500172ED0 /* IGTestStoryboardCell.m */; };
885FE2461DC51B86009CE2B4 /* IGTestSupplementarySource.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144F061D870EDC007C7F66 /* IGTestSupplementarySource.m */; };
887D0B401D870D7F009E01F7 /* IGListKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 887D0B361D870D7E009E01F7 /* IGListKit.framework */; };
88DF89811E010E6A00B1B9B4 /* IGListKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DD3152AC1DE227FA00AC9D2C /* IGListKit.framework */; };
88DF89881E010F5C00B1B9B4 /* IGListDiffResultTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 294AC6311DDE4C19002FCE5D /* IGListDiffResultTests.m */; };
88DF89891E010F6500B1B9B4 /* IGListDiffSwiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88144EE61D870EDC007C7F66 /* IGListDiffSwiftTests.swift */; };
88DF898A1E010F7000B1B9B4 /* IGListDiffTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EE81D870EDC007C7F66 /* IGListDiffTests.m */; };
Improve SwiftPM support (#1546) Summary: This diff imports and refines the PR made by cntrump on GitHub. The PR introduces the following: * Sample apps now use SPM instead of CocoaPods to import IGListKit. * Adds Mac Catalyst as an example target. * Adds C++ flags to the CocoaPods specs. * Fixes a script issue that was discovered when regenerating the symlinks. The PR originally aimed to remove the need for symlinked references to the IGListKit and IGListDiffKit source files, but in testing, I couldn't get it working. It's possible SPM being too strict [on where the headers can be placed to be discovered](https://forums.swift.org/t/how-do-i-specify-the-headers-directory-for-a-objc-target-in-swift-package-managers-package-swift/58531/3). Additionally, another issue was that the original PR changed all of the `#import` statements to the the modular `import` statements, which is fine for the sample apps, but ended up breaking compatibility for any apps that had modules disabled. ## Changes in this pull request Improve SwiftPM support: Build module `IGListDiffKit` and `IGListKit` as Objective-C++. module `IGListDiffKit`: - Source/IGListDiffKit - module defined in `Source/IGListDiffKit/modulemap/module.modulemap` - requires `-fmodules` and `-fcxx-modules` module `IGListKit`: - depend on `IGListDiffKit`, use `import IGListDiffKit;` - Source/IGListKit - module defined in `Source/IGListKit/modulemap/module.modulemap` - requires `-fmodules` and `-fcxx-modules` module `IGListSwiftKit`: - depend on `IGListKit`, use `import IGListKit` - Source/IGListSwiftKit Deleted `spm/` and `scripts/generate_spm_sources_layout.sh`, it is unnecessary. Updated `.podspec`, add `'OTHER_CFLAGS' => '-fmodules'` and `'OTHER_CPLUSPLUSFLAGS' => '-fcxx-modules'`. Add missing swift files for `IGListSwiftKit` in `IGListKit.xcodeproj` ### How to use Replace `#import <IGListDiffKit/IGListDiffKit.h>` with `import IGListDiffKit;`, because `IGListDiffKit.h` isn't exist in `modulemap/`, Or create a symbol link by `ln -sf ../IGListDiffKit.h` for support it ? ### Examples Use SwiftPM for building examples. ### Checklist - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [ ] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1546 Test Plan: Test PR showing running tests: https://github.com/TimOliver/IGListKit/actions/runs/4339956050/jobs/7578047058 Reviewed By: lorixx Differential Revision: D33592395 Pulled By: TimOliver fbshipit-source-id: 8f7b1873f2b1c6a80908bb55b123e31bea13bb0c
2023-03-07 07:29:41 +00:00
BA4A65242760278F00FA5750 /* ListValueSectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA4A65222760278F00FA5750 /* ListValueSectionController.swift */; };
BA4A65252760278F00FA5750 /* ListValueSectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA4A65222760278F00FA5750 /* ListValueSectionController.swift */; };
BA4A65262760278F00FA5750 /* ListIdentifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA4A65232760278F00FA5750 /* ListIdentifiable.swift */; };
BA4A65272760278F00FA5750 /* ListIdentifiable.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA4A65232760278F00FA5750 /* ListIdentifiable.swift */; };
E03DEA83255C9AAC00ACCAFC /* IGListTransitionData.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B22E692502AAB10055DC2F /* IGListTransitionData.h */; settings = {ATTRIBUTES = (Public, ); }; };
E03DEA8F255C9AB200ACCAFC /* IGListTransitionData.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B22E662502AAB10055DC2F /* IGListTransitionData.m */; };
E56B7B3420A9D7100071010C /* IGListCollectionScrollingTraitsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E56B7B3320A9D7100071010C /* IGListCollectionScrollingTraitsTests.m */; };
E56B7B3520A9D7100071010C /* IGListCollectionScrollingTraitsTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E56B7B3320A9D7100071010C /* IGListCollectionScrollingTraitsTests.m */; };
E8D312E01FC472A60009FA2F /* IGListContentInsetTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D312DF1FC472A60009FA2F /* IGListContentInsetTests.m */; };
F1855A4C29BC565600558D18 /* IGListDiffDescriptionStringTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F1855A4B29BC565600558D18 /* IGListDiffDescriptionStringTests.m */; };
F1855A4D29BC565600558D18 /* IGListDiffDescriptionStringTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F1855A4B29BC565600558D18 /* IGListDiffDescriptionStringTests.m */; };
F1855A4E29BC565600558D18 /* IGListDiffDescriptionStringTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F1855A4B29BC565600558D18 /* IGListDiffDescriptionStringTests.m */; };
F18CC75C29EFBB9400DC3B9A /* IGListCollectionViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F18CC75B29EFBB9400DC3B9A /* IGListCollectionViewTests.m */; };
F18CC75D29EFBB9400DC3B9A /* IGListCollectionViewTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F18CC75B29EFBB9400DC3B9A /* IGListCollectionViewTests.m */; };
F18CC75F29EFBBB300DC3B9A /* IGListBindingSingleSectionControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F18CC75E29EFBBB300DC3B9A /* IGListBindingSingleSectionControllerTests.m */; };
F18CC76029EFBBB300DC3B9A /* IGListBindingSingleSectionControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F18CC75E29EFBBB300DC3B9A /* IGListBindingSingleSectionControllerTests.m */; };
F18CC76329EFBBE200DC3B9A /* IGTestBindingSingleItemDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = F18CC76129EFBBE200DC3B9A /* IGTestBindingSingleItemDataSource.m */; };
F18CC76429EFBBE200DC3B9A /* IGTestBindingSingleItemDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = F18CC76129EFBBE200DC3B9A /* IGTestBindingSingleItemDataSource.m */; };
F18CC76629EFBC3800DC3B9A /* IGListReloadDataUpdaterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F18CC76529EFBC3800DC3B9A /* IGListReloadDataUpdaterTests.m */; };
F18CC76729EFBC3800DC3B9A /* IGListReloadDataUpdaterTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F18CC76529EFBC3800DC3B9A /* IGListReloadDataUpdaterTests.m */; };
F18CC76A29EFBD0300DC3B9A /* IGListBindingSingleSectionController.h in Headers */ = {isa = PBXBuildFile; fileRef = F18CC76829EFBD0300DC3B9A /* IGListBindingSingleSectionController.h */; settings = {ATTRIBUTES = (Public, ); }; };
F18CC76B29EFBD0300DC3B9A /* IGListBindingSingleSectionController.h in Headers */ = {isa = PBXBuildFile; fileRef = F18CC76829EFBD0300DC3B9A /* IGListBindingSingleSectionController.h */; settings = {ATTRIBUTES = (Public, ); }; };
F18CC76C29EFBD0300DC3B9A /* IGListBindingSingleSectionController.m in Sources */ = {isa = PBXBuildFile; fileRef = F18CC76929EFBD0300DC3B9A /* IGListBindingSingleSectionController.m */; };
F18CC76D29EFBD0300DC3B9A /* IGListBindingSingleSectionController.m in Sources */ = {isa = PBXBuildFile; fileRef = F18CC76929EFBD0300DC3B9A /* IGListBindingSingleSectionController.m */; };
F1E6302329EA43080060B4D6 /* IGListSectionControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F1E6302229EA43080060B4D6 /* IGListSectionControllerTests.m */; };
F1E6302429EA43080060B4D6 /* IGListSectionControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F1E6302229EA43080060B4D6 /* IGListSectionControllerTests.m */; };
F1ED68B329E9B3B9003744F8 /* IGListInteractiveMovingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F1ED68AE29E9B3B9003744F8 /* IGListInteractiveMovingTests.m */; };
F1ED68B529E9B3B9003744F8 /* IGListDebugDescriptionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F1ED68AF29E9B3B9003744F8 /* IGListDebugDescriptionTests.m */; };
F1ED68B729E9B3B9003744F8 /* IGListTransactionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F1ED68B029E9B3B9003744F8 /* IGListTransactionTests.m */; };
F1ED68B929E9B3B9003744F8 /* IGListSingleSectionControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F1ED68B129E9B3B9003744F8 /* IGListSingleSectionControllerTests.m */; };
F1ED68BA29E9B404003744F8 /* IGListInteractiveMovingTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F1ED68AE29E9B3B9003744F8 /* IGListInteractiveMovingTests.m */; };
F1ED68BB29E9B40A003744F8 /* IGListGenericSectionControllerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 29DA5CA21EA7C72400113926 /* IGListGenericSectionControllerTests.m */; };
F1ED68BC29E9B411003744F8 /* IGListDebuggerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 290DF3761E9323E6009FE456 /* IGListDebuggerTests.m */; };
F1ED68BD29E9B415003744F8 /* IGListDebugDescriptionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F1ED68AF29E9B3B9003744F8 /* IGListDebugDescriptionTests.m */; };
F1ED68BE29E9B41A003744F8 /* IGListContentInsetTests.m in Sources */ = {isa = PBXBuildFile; fileRef = E8D312DF1FC472A60009FA2F /* IGListContentInsetTests.m */; };
F1ED68BF29E9B443003744F8 /* IGListTransactionTests.m in Sources */ = {isa = PBXBuildFile; fileRef = F1ED68B029E9B3B9003744F8 /* IGListTransactionTests.m */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
7A02D0B22361546300B49FAE /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 887D0B2D1D870D7E009E01F7 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 7A02D01C2361520200B49FAE;
remoteInfo = IGListDiffKit;
};
7A02D0BC23615B8B00B49FAE /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 887D0B2D1D870D7E009E01F7 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 7A02D02A2361525800B49FAE;
remoteInfo = "IGListDiffKit-tvOS";
};
7A02D0BE23615B9000B49FAE /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 887D0B2D1D870D7E009E01F7 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 7A02D0372361526600B49FAE;
remoteInfo = "IGListDiffKit-macOS";
};
7A92EAA123A8A4E700E5A13D /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 887D0B2D1D870D7E009E01F7 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 887D0B351D870D7E009E01F7;
remoteInfo = IGListKit;
};
7A92EAB223A8A53F00E5A13D /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 887D0B2D1D870D7E009E01F7 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 885FE1D31DC51A0D009CE2B4;
remoteInfo = "IGListKit-tvOS";
};
885FE1DE1DC51A0D009CE2B4 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 887D0B2D1D870D7E009E01F7 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 885FE1D31DC51A0D009CE2B4;
remoteInfo = "IGListKit-tvOS";
};
887D0B411D870D7F009E01F7 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 887D0B2D1D870D7E009E01F7 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 887D0B351D870D7E009E01F7;
remoteInfo = IGListKit;
};
88DF89821E010E6A00B1B9B4 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 887D0B2D1D870D7E009E01F7 /* Project object */;
proxyType = 1;
remoteGlobalIDString = DD3152661DE227FA00AC9D2C;
remoteInfo = "IGListKit-macOS";
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
Interactive Reordering Summary: I had a desire for interactive reordering in a personal project, so here's a first attempt at adding support in IGListKit. I figured I might as well get a WIP PR up for comments before I continue further as there are a few aspects to interactive reordering that don't interplay perfectly with IGListKit. As discussed in #291, I went after two prime use cases: 1. Moving items amongst a section 2. Rearranging whole sections I also "disabled" moving items between sections by having those moves revert, to mimic interactive reordering cancellation as closely as possible. You can see both in the Mixed Data example. Grid items can be moved within a section, while users can be moved to reorder whole sections. But trying to move a grid item out of a grid or a user item into a grid will auto-revert. The revert animation isn't as tight as it should be. It may be more desirable to disable the animation - though you lose the visual cue. There is a also a new example, `ReorderableViewController`, that demonstrates 2 in its pure form (likely the most desired use case), where all sections are reorderable single rows. Happy to take feedback -- this is my first experience working on IGListKit, so I would expect there to be gaps. (Ex. I haven't used `IGListStackedSectionController`, and its tests failed as I hadn't implemented reordering delegates for it. Those are simply stubbed out for now.) Issue fixed: #291 - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [x] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) - [x] Proper support in `IGListStackedSectionController` Closes https://github.com/Instagram/IGListKit/pull/976 Differential Revision: D6674493 Pulled By: rnystrom fbshipit-source-id: cd53c5fdc6fb59636edc4747c4bbd0f81a4610e5
2018-02-12 17:09:26 +00:00
13DF01711FA0FD400092A320 /* IGListTestAdapterReorderingDataSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IGListTestAdapterReorderingDataSource.h; sourceTree = "<group>"; };
13DF01721FA0FD400092A320 /* IGListTestAdapterReorderingDataSource.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = IGListTestAdapterReorderingDataSource.m; sourceTree = "<group>"; };
13DF01751FA1000E0092A320 /* IGTestReorderableSection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IGTestReorderableSection.h; sourceTree = "<group>"; };
13DF01761FA1000E0092A320 /* IGTestReorderableSection.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = IGTestReorderableSection.m; sourceTree = "<group>"; };
Fix #1275 layouts inconsistency in `updateAnimated:completion` of IGListBindingSectionController (#1285) Summary: ## Changes in this pull request Issue fixed: https://github.com/Instagram/IGListKit/issues/1275 This PR is straintforward solution as mentioned in https://github.com/Instagram/IGListKit/issues/1275. When I finished it, I realized that it is not a problem in `IGListCollectionViewLayout Partial Optimization` and `IGListBindingSectionController` deserved it. Maybe `IGListCollectionViewLayout` is rarely used because of great builtin UICollectionViewFlowLayout or cells in section rarely need changing their sizes in practices. Despite it is not `IGListCollectionViewLayout`'s fault, I think it can be more optimized against `invalidateLayoutWithContext`. I would like to make an another PR to optimize it. Due to this PR just giving a proposed solution, it lacks of adding tests and changing log. When this solution is accepted, I would like to complete these todos. ### Checklist - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [x] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1285 Reviewed By: candance Differential Revision: D15592807 Pulled By: lorixx fbshipit-source-id: ae06abce896341509de4f3dfb73b3a7bc0a68c51
2019-06-12 05:25:14 +00:00
16B71CE522B0A08300FE96ED /* IGTestInvalidateLayoutDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestInvalidateLayoutDataSource.h; sourceTree = "<group>"; };
16B71CE622B0A08300FE96ED /* IGTestInvalidateLayoutSectionController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestInvalidateLayoutSectionController.h; sourceTree = "<group>"; };
16B71CE722B0A08300FE96ED /* IGTestInvalidateLayoutSectionController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestInvalidateLayoutSectionController.m; sourceTree = "<group>"; };
16B71CE822B0A08300FE96ED /* IGTestInvalidateLayoutDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestInvalidateLayoutDataSource.m; sourceTree = "<group>"; };
16B71CE922B0A08300FE96ED /* IGTestInvalidateLayoutObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestInvalidateLayoutObject.h; sourceTree = "<group>"; };
16B71CEA22B0A08300FE96ED /* IGTestInvalidateLayoutObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestInvalidateLayoutObject.m; sourceTree = "<group>"; };
26271C881DAE94E40073E116 /* IGTestSingleNibItemDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestSingleNibItemDataSource.h; sourceTree = "<group>"; };
26271C891DAE94E40073E116 /* IGTestSingleNibItemDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestSingleNibItemDataSource.m; sourceTree = "<group>"; };
26271C8B1DAE96740073E116 /* IGListSingleNibItemControllerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListSingleNibItemControllerTests.m; sourceTree = "<group>"; };
2904861C1DCD02140007F41D /* IGTestNibSupplementaryView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IGTestNibSupplementaryView.xib; sourceTree = "<group>"; };
2904861E1DCD02750007F41D /* IGTestNibSupplementaryView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestNibSupplementaryView.h; sourceTree = "<group>"; };
2904861F1DCD02750007F41D /* IGTestNibSupplementaryView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestNibSupplementaryView.m; sourceTree = "<group>"; };
290DF3761E9323E6009FE456 /* IGListDebuggerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListDebuggerTests.m; sourceTree = "<group>"; };
294369B01DB1B7AE0025F6E7 /* IGTestNibCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = IGTestNibCell.xib; sourceTree = "<group>"; };
294AC6311DDE4C19002FCE5D /* IGListDiffResultTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListDiffResultTests.m; sourceTree = "<group>"; };
294CDE611F995DD7002CF6E4 /* IGListAdapterUpdateTester.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IGListAdapterUpdateTester.h; sourceTree = "<group>"; };
294CDE621F995DD7002CF6E4 /* IGListAdapterUpdateTester.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = IGListAdapterUpdateTester.m; sourceTree = "<group>"; };
298DD9CD1E3ADD1400F76F50 /* IGListBindingSectionControllerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListBindingSectionControllerTests.m; sourceTree = "<group>"; };
298DD9D01E3ADDB400F76F50 /* IGTestDiffingSectionController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestDiffingSectionController.h; sourceTree = "<group>"; };
298DD9D11E3ADDB400F76F50 /* IGTestDiffingSectionController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestDiffingSectionController.m; sourceTree = "<group>"; };
298DD9D81E3ADE3300F76F50 /* IGTestStringBindableCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestStringBindableCell.h; sourceTree = "<group>"; };
298DD9D91E3ADE3300F76F50 /* IGTestStringBindableCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestStringBindableCell.m; sourceTree = "<group>"; };
298DD9E01E3ADE4300F76F50 /* IGTestNumberBindableCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestNumberBindableCell.h; sourceTree = "<group>"; };
298DD9E11E3ADE4300F76F50 /* IGTestNumberBindableCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestNumberBindableCell.m; sourceTree = "<group>"; };
298DD9F81E3AE1AA00F76F50 /* IGTestDiffingObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestDiffingObject.h; sourceTree = "<group>"; };
298DD9F91E3AE1AA00F76F50 /* IGTestDiffingObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestDiffingObject.m; sourceTree = "<group>"; };
298DDA0B1E3AE3ED00F76F50 /* IGTestDiffingDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestDiffingDataSource.h; sourceTree = "<group>"; };
298DDA0C1E3AE3ED00F76F50 /* IGTestDiffingDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestDiffingDataSource.m; sourceTree = "<group>"; };
298DDA231E3B15EE00F76F50 /* IGListCollectionViewLayoutTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListCollectionViewLayoutTests.m; sourceTree = "<group>"; };
298DDA261E3B166100F76F50 /* IGLayoutTestDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGLayoutTestDataSource.h; sourceTree = "<group>"; };
298DDA271E3B166100F76F50 /* IGLayoutTestDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGLayoutTestDataSource.m; sourceTree = "<group>"; };
298DDA281E3B166100F76F50 /* IGLayoutTestItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGLayoutTestItem.h; sourceTree = "<group>"; };
298DDA291E3B166100F76F50 /* IGLayoutTestItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGLayoutTestItem.m; sourceTree = "<group>"; };
298DDA2A1E3B166100F76F50 /* IGLayoutTestSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGLayoutTestSection.h; sourceTree = "<group>"; };
298DDA2B1E3B166100F76F50 /* IGLayoutTestSection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGLayoutTestSection.m; sourceTree = "<group>"; };
2995409A1F588C8D00F647CF /* IGTestBindingWithoutDeselectionDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestBindingWithoutDeselectionDelegate.h; sourceTree = "<group>"; };
2995409B1F588C8D00F647CF /* IGTestBindingWithoutDeselectionDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestBindingWithoutDeselectionDelegate.m; sourceTree = "<group>"; };
29C4748A1DDF45E700AE68CE /* IGListAdapterProxyTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListAdapterProxyTests.m; sourceTree = "<group>"; };
29DA5CA21EA7C72400113926 /* IGListGenericSectionControllerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListGenericSectionControllerTests.m; sourceTree = "<group>"; };
29DA5CA61EA7D37000113926 /* IGListTestCase.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListTestCase.m; sourceTree = "<group>"; };
29DA5CA91EA7D39B00113926 /* IGListTestCase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListTestCase.h; sourceTree = "<group>"; };
29DA5CAA1EA7D3FF00113926 /* IGListTestHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListTestHelpers.h; sourceTree = "<group>"; };
57B22E662502AAB10055DC2F /* IGListTransitionData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListTransitionData.m; sourceTree = "<group>"; };
57B22E692502AAB10055DC2F /* IGListTransitionData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListTransitionData.h; sourceTree = "<group>"; };
57B22E712502AAC20055DC2F /* IGListBatchUpdateTransaction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListBatchUpdateTransaction.m; sourceTree = "<group>"; };
57B22E722502AAC30055DC2F /* IGListUpdateTransactionBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListUpdateTransactionBuilder.m; sourceTree = "<group>"; };
57B22E732502AAC30055DC2F /* IGListUpdateTransactable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListUpdateTransactable.h; sourceTree = "<group>"; };
57B22E742502AAC30055DC2F /* IGListDataSourceChangeTransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListDataSourceChangeTransaction.h; sourceTree = "<group>"; };
57B22E752502AAC30055DC2F /* IGListItemUpdatesCollector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListItemUpdatesCollector.m; sourceTree = "<group>"; };
57B22E762502AAC30055DC2F /* IGListReloadTransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListReloadTransaction.h; sourceTree = "<group>"; };
57B22E792502AAC30055DC2F /* IGListDataSourceChangeTransaction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListDataSourceChangeTransaction.m; sourceTree = "<group>"; };
57B22E7B2502AAC40055DC2F /* IGListBatchUpdateTransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListBatchUpdateTransaction.h; sourceTree = "<group>"; };
57B22E7C2502AAC40055DC2F /* IGListItemUpdatesCollector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListItemUpdatesCollector.h; sourceTree = "<group>"; };
57B22E7D2502AAC40055DC2F /* IGListUpdateTransactionBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListUpdateTransactionBuilder.h; sourceTree = "<group>"; };
57B22E7E2502AAC40055DC2F /* IGListReloadTransaction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListReloadTransaction.m; sourceTree = "<group>"; };
6A9EB35F1F841E5D0070C572 /* IGTestSingleWithoutDeselectionDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IGTestSingleWithoutDeselectionDelegate.h; sourceTree = "<group>"; };
6A9EB3601F841E5D0070C572 /* IGTestSingleWithoutDeselectionDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = IGTestSingleWithoutDeselectionDelegate.m; sourceTree = "<group>"; };
7A02CEC72361510F00B49FAE /* IGListReloadDataUpdater.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListReloadDataUpdater.h; sourceTree = "<group>"; };
7A02CEC82361510F00B49FAE /* IGListScrollDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListScrollDelegate.h; sourceTree = "<group>"; };
7A02CEC92361510F00B49FAE /* IGListWorkingRangeDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListWorkingRangeDelegate.h; sourceTree = "<group>"; };
7A02CECA2361510F00B49FAE /* IGListAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListAdapter.h; sourceTree = "<group>"; };
7A02CECB2361510F00B49FAE /* IGListDisplayDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListDisplayDelegate.h; sourceTree = "<group>"; };
7A02CECC2361510F00B49FAE /* IGListCollectionViewDelegateLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListCollectionViewDelegateLayout.h; sourceTree = "<group>"; };
7A02CECD2361510F00B49FAE /* IGListCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListCollectionView.h; sourceTree = "<group>"; };
7A02CECE2361510F00B49FAE /* IGListGenericSectionController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListGenericSectionController.h; sourceTree = "<group>"; };
7A02CECF2361510F00B49FAE /* IGListBatchContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListBatchContext.h; sourceTree = "<group>"; };
7A02CED02361510F00B49FAE /* IGListBindingSectionControllerDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListBindingSectionControllerDataSource.h; sourceTree = "<group>"; };
7A02CED12361510F00B49FAE /* IGListCollectionContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListCollectionContext.h; sourceTree = "<group>"; };
7A02CED22361511000B49FAE /* IGListAdapterDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListAdapterDelegate.h; sourceTree = "<group>"; };
7A02CED32361511000B49FAE /* IGListGenericSectionController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListGenericSectionController.m; sourceTree = "<group>"; };
7A02CED42361511000B49FAE /* IGListCollectionViewLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListCollectionViewLayout.h; sourceTree = "<group>"; };
7A02CED52361511000B49FAE /* IGListAdapterMoveDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListAdapterMoveDelegate.h; sourceTree = "<group>"; };
7A02CED62361511000B49FAE /* IGListSectionController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListSectionController.h; sourceTree = "<group>"; };
7A02CED72361511000B49FAE /* IGListKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListKit.h; sourceTree = "<group>"; };
7A02CED82361511000B49FAE /* IGListTransitionDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListTransitionDelegate.h; sourceTree = "<group>"; };
7A02CED92361511000B49FAE /* IGListAdapterUpdateListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListAdapterUpdateListener.h; sourceTree = "<group>"; };
7A02CEDA2361511000B49FAE /* IGListBindable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListBindable.h; sourceTree = "<group>"; };
7A02CEDB2361511000B49FAE /* IGListReloadDataUpdater.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListReloadDataUpdater.m; sourceTree = "<group>"; };
7A02CEDC2361511000B49FAE /* IGListBindingSectionController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListBindingSectionController.h; sourceTree = "<group>"; };
7A02CEDD2361511000B49FAE /* IGListUpdatingDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListUpdatingDelegate.h; sourceTree = "<group>"; };
7A02CEDE2361511000B49FAE /* IGListAdapterUpdater.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListAdapterUpdater.m; sourceTree = "<group>"; };
7A02CEDF2361511000B49FAE /* IGListAdapterDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListAdapterDataSource.h; sourceTree = "<group>"; };
7A02CEE02361511000B49FAE /* IGListCollectionViewLayout.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = IGListCollectionViewLayout.mm; sourceTree = "<group>"; };
7A02CEE12361511000B49FAE /* IGListCollectionViewLayoutCompatible.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListCollectionViewLayoutCompatible.h; sourceTree = "<group>"; };
7A02CEE22361511000B49FAE /* IGListAdapterUpdaterDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListAdapterUpdaterDelegate.h; sourceTree = "<group>"; };
7A02CEE32361511000B49FAE /* IGListSingleSectionController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListSingleSectionController.h; sourceTree = "<group>"; };
7A02CEE42361511000B49FAE /* IGListAdapterPerformanceDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListAdapterPerformanceDelegate.h; sourceTree = "<group>"; };
7A02CEE52361511000B49FAE /* IGListSingleSectionController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListSingleSectionController.m; sourceTree = "<group>"; };
7A02CEE62361511000B49FAE /* IGListSupplementaryViewSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListSupplementaryViewSource.h; sourceTree = "<group>"; };
7A02CEE72361511000B49FAE /* IGListCollectionScrollingTraits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListCollectionScrollingTraits.h; sourceTree = "<group>"; };
7A02CEE82361511000B49FAE /* IGListAdapter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListAdapter.m; sourceTree = "<group>"; };
7A02CEE92361511000B49FAE /* IGListBindingSectionControllerSelectionDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListBindingSectionControllerSelectionDelegate.h; sourceTree = "<group>"; };
7A02CEEA2361511100B49FAE /* IGListBindingSectionController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListBindingSectionController.m; sourceTree = "<group>"; };
7A02CEEB2361511100B49FAE /* IGListAdapterUpdater.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListAdapterUpdater.h; sourceTree = "<group>"; };
7A02CEEC2361511100B49FAE /* IGListSectionController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListSectionController.m; sourceTree = "<group>"; };
7A02CEED2361511100B49FAE /* IGListCollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListCollectionView.m; sourceTree = "<group>"; };
7A02CF642361513300B49FAE /* IGListDisplayHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListDisplayHandler.h; sourceTree = "<group>"; };
7A02CF652361513300B49FAE /* IGListAdapter+DebugDescription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "IGListAdapter+DebugDescription.m"; sourceTree = "<group>"; };
7A02CF662361513400B49FAE /* IGListAdapterInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListAdapterInternal.h; sourceTree = "<group>"; };
7A02CF672361513400B49FAE /* IGListBindingSectionController+DebugDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IGListBindingSectionController+DebugDescription.h"; sourceTree = "<group>"; };
7A02CF682361513400B49FAE /* IGListCollectionViewLayoutInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListCollectionViewLayoutInternal.h; sourceTree = "<group>"; };
7A02CF6A2361513400B49FAE /* UIScrollView+IGListKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIScrollView+IGListKit.h"; sourceTree = "<group>"; };
7A02CF6B2361513400B49FAE /* UICollectionView+IGListBatchUpdateData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UICollectionView+IGListBatchUpdateData.m"; sourceTree = "<group>"; };
7A02CF6C2361513400B49FAE /* UICollectionViewLayout+InteractiveReordering.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UICollectionViewLayout+InteractiveReordering.h"; sourceTree = "<group>"; };
7A02CF6D2361513400B49FAE /* IGListReloadIndexPath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListReloadIndexPath.m; sourceTree = "<group>"; };
7A02CF6E2361513400B49FAE /* UICollectionViewLayout+InteractiveReordering.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UICollectionViewLayout+InteractiveReordering.m"; sourceTree = "<group>"; };
7A02CF6F2361513400B49FAE /* UIScrollView+IGListKit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+IGListKit.m"; sourceTree = "<group>"; };
7A02CF702361513400B49FAE /* IGListAdapterUpdaterInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListAdapterUpdaterInternal.h; sourceTree = "<group>"; };
7A02CF712361513400B49FAE /* IGListSectionMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListSectionMap.h; sourceTree = "<group>"; };
7A02CF722361513400B49FAE /* IGListAdapterProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListAdapterProxy.m; sourceTree = "<group>"; };
7A02CF732361513400B49FAE /* IGListAdapterUpdater+DebugDescription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "IGListAdapterUpdater+DebugDescription.m"; sourceTree = "<group>"; };
7A02CF742361513400B49FAE /* IGListAdapter+UICollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IGListAdapter+UICollectionView.h"; sourceTree = "<group>"; };
7A02CF752361513400B49FAE /* UICollectionView+DebugDescription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UICollectionView+DebugDescription.m"; sourceTree = "<group>"; };
7A02CF762361513400B49FAE /* IGListSectionMap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListSectionMap.m; sourceTree = "<group>"; };
7A02CF772361513400B49FAE /* UICollectionView+IGListBatchUpdateData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UICollectionView+IGListBatchUpdateData.h"; sourceTree = "<group>"; };
7A02CF782361513400B49FAE /* IGListBatchUpdateState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListBatchUpdateState.h; sourceTree = "<group>"; };
7A02CF792361513400B49FAE /* IGListDebugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListDebugger.h; sourceTree = "<group>"; };
7A02CF7C2361513400B49FAE /* IGListBatchUpdateData+DebugDescription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "IGListBatchUpdateData+DebugDescription.m"; sourceTree = "<group>"; };
7A02CF7D2361513400B49FAE /* IGListAdapterProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListAdapterProxy.h; sourceTree = "<group>"; };
7A02CF7E2361513500B49FAE /* IGListAdapterUpdater+DebugDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IGListAdapterUpdater+DebugDescription.h"; sourceTree = "<group>"; };
7A02CF7F2361513500B49FAE /* IGListAdapter+DebugDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IGListAdapter+DebugDescription.h"; sourceTree = "<group>"; };
7A02CF802361513500B49FAE /* IGListDisplayHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListDisplayHandler.m; sourceTree = "<group>"; };
7A02CF812361513500B49FAE /* IGListArrayUtilsInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListArrayUtilsInternal.h; sourceTree = "<group>"; };
7A02CF832361513500B49FAE /* IGListDebuggingUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListDebuggingUtilities.h; sourceTree = "<group>"; };
7A02CF842361513500B49FAE /* IGListBindingSectionController+DebugDescription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "IGListBindingSectionController+DebugDescription.m"; sourceTree = "<group>"; };
7A02CF852361513500B49FAE /* IGListAdapter+UICollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "IGListAdapter+UICollectionView.m"; sourceTree = "<group>"; };
7A02CF862361513500B49FAE /* IGListSectionMap+DebugDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IGListSectionMap+DebugDescription.h"; sourceTree = "<group>"; };
7A02CF872361513500B49FAE /* IGListWorkingRangeHandler.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = IGListWorkingRangeHandler.mm; sourceTree = "<group>"; };
7A02CF882361513500B49FAE /* IGListReloadIndexPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListReloadIndexPath.h; sourceTree = "<group>"; };
7A02CF892361513500B49FAE /* IGListDebugger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListDebugger.m; sourceTree = "<group>"; };
7A02CF8A2361513500B49FAE /* IGListSectionControllerInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListSectionControllerInternal.h; sourceTree = "<group>"; };
7A02CF8B2361513500B49FAE /* IGListDebuggingUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListDebuggingUtilities.m; sourceTree = "<group>"; };
7A02CF8C2361513500B49FAE /* IGListBatchUpdateData+DebugDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IGListBatchUpdateData+DebugDescription.h"; sourceTree = "<group>"; };
7A02CF8D2361513600B49FAE /* IGListSectionMap+DebugDescription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "IGListSectionMap+DebugDescription.m"; sourceTree = "<group>"; };
7A02CF8E2361513600B49FAE /* IGListWorkingRangeHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListWorkingRangeHandler.h; sourceTree = "<group>"; };
7A02CF8F2361513600B49FAE /* UICollectionView+DebugDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UICollectionView+DebugDescription.h"; sourceTree = "<group>"; };
7A02D01D2361520200B49FAE /* IGListDiffKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = IGListDiffKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
7A02D02B2361525800B49FAE /* IGListDiffKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = IGListDiffKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
7A02D0382361526600B49FAE /* IGListDiffKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = IGListDiffKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
7A02D0402361529E00B49FAE /* IGListDiff.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListDiff.h; sourceTree = "<group>"; };
7A02D0412361529E00B49FAE /* NSNumber+IGListDiffable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSNumber+IGListDiffable.m"; sourceTree = "<group>"; };
7A02D0422361529E00B49FAE /* NSString+IGListDiffable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+IGListDiffable.h"; sourceTree = "<group>"; };
7A02D0432361529E00B49FAE /* IGListIndexPathResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListIndexPathResult.h; sourceTree = "<group>"; };
7A02D0442361529E00B49FAE /* IGListDiffKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListDiffKit.h; sourceTree = "<group>"; };
7A02D0452361529E00B49FAE /* IGListExperiments.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListExperiments.h; sourceTree = "<group>"; };
7A02D0462361529E00B49FAE /* NSString+IGListDiffable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+IGListDiffable.m"; sourceTree = "<group>"; };
7A02D0472361529E00B49FAE /* IGListCompatibility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListCompatibility.h; sourceTree = "<group>"; };
7A02D0482361529E00B49FAE /* NSNumber+IGListDiffable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNumber+IGListDiffable.h"; sourceTree = "<group>"; };
7A02D04A2361529E00B49FAE /* IGListIndexSetResultInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListIndexSetResultInternal.h; sourceTree = "<group>"; };
7A02D04B2361529E00B49FAE /* IGListIndexPathResultInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListIndexPathResultInternal.h; sourceTree = "<group>"; };
7A02D04C2361529E00B49FAE /* IGListMoveIndexInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListMoveIndexInternal.h; sourceTree = "<group>"; };
7A02D04D2361529E00B49FAE /* IGListMoveIndexPathInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListMoveIndexPathInternal.h; sourceTree = "<group>"; };
7A02D04E2361529E00B49FAE /* IGListMoveIndexPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListMoveIndexPath.h; sourceTree = "<group>"; };
7A02D04F2361529E00B49FAE /* IGListDiff.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = IGListDiff.mm; sourceTree = "<group>"; };
7A02D0502361529E00B49FAE /* IGListAssert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListAssert.h; sourceTree = "<group>"; };
7A02D0512361529E00B49FAE /* IGListIndexPathResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListIndexPathResult.m; sourceTree = "<group>"; };
7A02D0522361529E00B49FAE /* IGListIndexSetResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListIndexSetResult.m; sourceTree = "<group>"; };
7A02D0532361529E00B49FAE /* IGListMoveIndex.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListMoveIndex.m; sourceTree = "<group>"; };
7A02D0542361529E00B49FAE /* IGListBatchUpdateData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListBatchUpdateData.h; sourceTree = "<group>"; };
7A02D0552361529E00B49FAE /* IGListMoveIndexPath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListMoveIndexPath.m; sourceTree = "<group>"; };
7A02D0562361529E00B49FAE /* IGListDiffable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListDiffable.h; sourceTree = "<group>"; };
7A02D0572361529E00B49FAE /* IGListBatchUpdateData.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = IGListBatchUpdateData.mm; sourceTree = "<group>"; };
7A02D0582361529E00B49FAE /* IGListMacros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListMacros.h; sourceTree = "<group>"; };
7A02D0592361529E00B49FAE /* IGListMoveIndex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListMoveIndex.h; sourceTree = "<group>"; };
7A02D05A2361529F00B49FAE /* IGListIndexSetResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListIndexSetResult.h; sourceTree = "<group>"; };
7A02D0AC236153CE00B49FAE /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
7A92EA9723A8A42000E5A13D /* IGListSwiftKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = IGListSwiftKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
7A92EA9923A8A42000E5A13D /* IGListSwiftKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IGListSwiftKit.h; sourceTree = "<group>"; };
7A92EA9F23A8A43D00E5A13D /* IGListCollectionContext+Refinements.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "IGListCollectionContext+Refinements.swift"; path = "Source/IGListSwiftKit/IGListCollectionContext+Refinements.swift"; sourceTree = SOURCE_ROOT; };
7A92EAA823A8A50100E5A13D /* IGListSwiftKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = IGListSwiftKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
7AD6864923A89E7F009000DE /* IGListAdapterUpdaterHelpers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListAdapterUpdaterHelpers.m; sourceTree = "<group>"; };
7AD6864A23A89E7F009000DE /* IGListAdapterUpdaterHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListAdapterUpdaterHelpers.h; sourceTree = "<group>"; };
7AEA8E5C25BF715C00971591 /* IGListSingleSectionController+Refinements.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "IGListSingleSectionController+Refinements.swift"; sourceTree = "<group>"; };
821BC4BE1DB8C95300172ED0 /* IGListSingleStoryboardItemControllerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListSingleStoryboardItemControllerTests.m; sourceTree = "<group>"; };
821BC4C21DB8CAE900172ED0 /* IGTestStoryboard.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = IGTestStoryboard.storyboard; sourceTree = "<group>"; };
821BC4C71DB8D5B200172ED0 /* IGTestStoryboardViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestStoryboardViewController.h; sourceTree = "<group>"; };
821BC4C81DB8D5B200172ED0 /* IGTestStoryboardViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestStoryboardViewController.m; sourceTree = "<group>"; };
821BC4CC1DB8D8C500172ED0 /* IGTestStoryboardCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestStoryboardCell.h; sourceTree = "<group>"; };
821BC4CD1DB8D8C500172ED0 /* IGTestStoryboardCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestStoryboardCell.m; sourceTree = "<group>"; };
821BC4D11DB9816E00172ED0 /* IGTestSingleStoryboardItemDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestSingleStoryboardItemDataSource.h; sourceTree = "<group>"; };
821BC4D21DB981AB00172ED0 /* IGTestSingleStoryboardItemDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestSingleStoryboardItemDataSource.m; sourceTree = "<group>"; };
8240C7EE1DC272CA00B3AAE7 /* IGTestStoryboardSupplementaryView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestStoryboardSupplementaryView.h; sourceTree = "<group>"; };
8240C7EF1DC272CA00B3AAE7 /* IGTestStoryboardSupplementaryView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestStoryboardSupplementaryView.m; sourceTree = "<group>"; };
8240C7F11DC284C300B3AAE7 /* IGListAdapterStoryboardTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListAdapterStoryboardTests.m; sourceTree = "<group>"; };
8240C7F31DC2D99300B3AAE7 /* IGTestStoryboardSupplementarySource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestStoryboardSupplementarySource.h; sourceTree = "<group>"; };
8240C7F41DC2D99300B3AAE7 /* IGTestStoryboardSupplementarySource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestStoryboardSupplementarySource.m; sourceTree = "<group>"; };
8240C7F61DC2F3FB00B3AAE7 /* IGListTestStoryboardSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListTestStoryboardSection.h; sourceTree = "<group>"; };
8240C7F71DC2F3FB00B3AAE7 /* IGListTestStoryboardSection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListTestStoryboardSection.m; sourceTree = "<group>"; };
8240C7F91DC2F6CF00B3AAE7 /* IGListTestAdapterStoryboardDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListTestAdapterStoryboardDataSource.h; sourceTree = "<group>"; };
8240C7FA1DC2F6CF00B3AAE7 /* IGListTestAdapterStoryboardDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListTestAdapterStoryboardDataSource.m; sourceTree = "<group>"; };
8285404A1DE40C6E00118B94 /* IGListTestHorizontalSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListTestHorizontalSection.h; sourceTree = "<group>"; };
8285404B1DE40C6E00118B94 /* IGListTestHorizontalSection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListTestHorizontalSection.m; sourceTree = "<group>"; };
8285404E1DE40D2D00118B94 /* IGListTestAdapterHorizontalDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListTestAdapterHorizontalDataSource.h; sourceTree = "<group>"; };
8285404F1DE40D2D00118B94 /* IGListTestAdapterHorizontalDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListTestAdapterHorizontalDataSource.m; sourceTree = "<group>"; };
82914C591E6E2DEC0066C2F8 /* IGListTestContainerSizeSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListTestContainerSizeSection.h; sourceTree = "<group>"; };
82914C5A1E6E2DEC0066C2F8 /* IGListTestContainerSizeSection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListTestContainerSizeSection.m; sourceTree = "<group>"; };
829D7BA81DD1816400549816 /* IGListSectionMapTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListSectionMapTests.m; sourceTree = "<group>"; };
88144EE21D870EDC007C7F66 /* IGListAdapterE2ETests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListAdapterE2ETests.m; sourceTree = "<group>"; };
88144EE31D870EDC007C7F66 /* IGListAdapterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListAdapterTests.m; sourceTree = "<group>"; };
88144EE41D870EDC007C7F66 /* IGListAdapterUpdaterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListAdapterUpdaterTests.m; sourceTree = "<group>"; };
88144EE51D870EDC007C7F66 /* IGListBatchUpdateDataTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListBatchUpdateDataTests.m; sourceTree = "<group>"; };
88144EE61D870EDC007C7F66 /* IGListDiffSwiftTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IGListDiffSwiftTests.swift; sourceTree = "<group>"; };
88144EE81D870EDC007C7F66 /* IGListDiffTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListDiffTests.m; sourceTree = "<group>"; };
88144EE91D870EDC007C7F66 /* IGListDisplayHandlerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListDisplayHandlerTests.m; sourceTree = "<group>"; };
88144EEB1D870EDC007C7F66 /* IGListKitTests-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IGListKitTests-Bridging-Header.h"; sourceTree = "<group>"; };
88144EED1D870EDC007C7F66 /* IGListSingleSectionControllerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListSingleSectionControllerTests.m; sourceTree = "<group>"; };
88144EEF1D870EDC007C7F66 /* IGListWorkingRangeHandlerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListWorkingRangeHandlerTests.m; sourceTree = "<group>"; };
88144EF11D870EDC007C7F66 /* IGListTestAdapterDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListTestAdapterDataSource.h; sourceTree = "<group>"; };
88144EF21D870EDC007C7F66 /* IGListTestAdapterDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListTestAdapterDataSource.m; sourceTree = "<group>"; };
88144EF31D870EDC007C7F66 /* IGListTestOffsettingLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListTestOffsettingLayout.h; sourceTree = "<group>"; };
88144EF41D870EDC007C7F66 /* IGListTestOffsettingLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListTestOffsettingLayout.m; sourceTree = "<group>"; };
88144EF51D870EDC007C7F66 /* IGListTestSection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListTestSection.h; sourceTree = "<group>"; };
88144EF61D870EDC007C7F66 /* IGListTestSection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListTestSection.m; sourceTree = "<group>"; };
88144EF71D870EDC007C7F66 /* IGListTestUICollectionViewDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListTestUICollectionViewDataSource.h; sourceTree = "<group>"; };
88144EF81D870EDC007C7F66 /* IGListTestUICollectionViewDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListTestUICollectionViewDataSource.m; sourceTree = "<group>"; };
88144EF91D870EDC007C7F66 /* IGTestCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestCell.h; sourceTree = "<group>"; };
88144EFA1D870EDC007C7F66 /* IGTestCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestCell.m; sourceTree = "<group>"; };
88144EFB1D870EDC007C7F66 /* IGTestDelegateController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestDelegateController.h; sourceTree = "<group>"; };
88144EFC1D870EDC007C7F66 /* IGTestDelegateController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestDelegateController.m; sourceTree = "<group>"; };
88144EFD1D870EDC007C7F66 /* IGTestDelegateDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestDelegateDataSource.h; sourceTree = "<group>"; };
88144EFE1D870EDC007C7F66 /* IGTestDelegateDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestDelegateDataSource.m; sourceTree = "<group>"; };
88144EFF1D870EDC007C7F66 /* IGTestObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestObject.h; sourceTree = "<group>"; };
88144F001D870EDC007C7F66 /* IGTestObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestObject.m; sourceTree = "<group>"; };
88144F011D870EDC007C7F66 /* IGTestSingleItemDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestSingleItemDataSource.h; sourceTree = "<group>"; };
88144F021D870EDC007C7F66 /* IGTestSingleItemDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestSingleItemDataSource.m; sourceTree = "<group>"; };
88144F051D870EDC007C7F66 /* IGTestSupplementarySource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestSupplementarySource.h; sourceTree = "<group>"; };
88144F061D870EDC007C7F66 /* IGTestSupplementarySource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestSupplementarySource.m; sourceTree = "<group>"; };
885FE1D41DC51A0D009CE2B4 /* IGListKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = IGListKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
885FE1DC1DC51A0D009CE2B4 /* IGListKit-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "IGListKit-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
887D0B361D870D7E009E01F7 /* IGListKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = IGListKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
887D0B3F1D870D7F009E01F7 /* IGListKitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = IGListKitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
887D0B571D870E1E009E01F7 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
88DF897C1E010E6A00B1B9B4 /* IGListKit-macOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "IGListKit-macOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
Improve SwiftPM support (#1546) Summary: This diff imports and refines the PR made by cntrump on GitHub. The PR introduces the following: * Sample apps now use SPM instead of CocoaPods to import IGListKit. * Adds Mac Catalyst as an example target. * Adds C++ flags to the CocoaPods specs. * Fixes a script issue that was discovered when regenerating the symlinks. The PR originally aimed to remove the need for symlinked references to the IGListKit and IGListDiffKit source files, but in testing, I couldn't get it working. It's possible SPM being too strict [on where the headers can be placed to be discovered](https://forums.swift.org/t/how-do-i-specify-the-headers-directory-for-a-objc-target-in-swift-package-managers-package-swift/58531/3). Additionally, another issue was that the original PR changed all of the `#import` statements to the the modular `import` statements, which is fine for the sample apps, but ended up breaking compatibility for any apps that had modules disabled. ## Changes in this pull request Improve SwiftPM support: Build module `IGListDiffKit` and `IGListKit` as Objective-C++. module `IGListDiffKit`: - Source/IGListDiffKit - module defined in `Source/IGListDiffKit/modulemap/module.modulemap` - requires `-fmodules` and `-fcxx-modules` module `IGListKit`: - depend on `IGListDiffKit`, use `import IGListDiffKit;` - Source/IGListKit - module defined in `Source/IGListKit/modulemap/module.modulemap` - requires `-fmodules` and `-fcxx-modules` module `IGListSwiftKit`: - depend on `IGListKit`, use `import IGListKit` - Source/IGListSwiftKit Deleted `spm/` and `scripts/generate_spm_sources_layout.sh`, it is unnecessary. Updated `.podspec`, add `'OTHER_CFLAGS' => '-fmodules'` and `'OTHER_CPLUSPLUSFLAGS' => '-fcxx-modules'`. Add missing swift files for `IGListSwiftKit` in `IGListKit.xcodeproj` ### How to use Replace `#import <IGListDiffKit/IGListDiffKit.h>` with `import IGListDiffKit;`, because `IGListDiffKit.h` isn't exist in `modulemap/`, Or create a symbol link by `ln -sf ../IGListDiffKit.h` for support it ? ### Examples Use SwiftPM for building examples. ### Checklist - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [ ] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1546 Test Plan: Test PR showing running tests: https://github.com/TimOliver/IGListKit/actions/runs/4339956050/jobs/7578047058 Reviewed By: lorixx Differential Revision: D33592395 Pulled By: TimOliver fbshipit-source-id: 8f7b1873f2b1c6a80908bb55b123e31bea13bb0c
2023-03-07 07:29:41 +00:00
BA4A65222760278F00FA5750 /* ListValueSectionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListValueSectionController.swift; sourceTree = "<group>"; };
BA4A65232760278F00FA5750 /* ListIdentifiable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ListIdentifiable.swift; sourceTree = "<group>"; };
DD3152AC1DE227FA00AC9D2C /* IGListKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = IGListKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
E56B7B3320A9D7100071010C /* IGListCollectionScrollingTraitsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListCollectionScrollingTraitsTests.m; sourceTree = "<group>"; };
E8D312DF1FC472A60009FA2F /* IGListContentInsetTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = IGListContentInsetTests.m; sourceTree = "<group>"; };
F1855A4B29BC565600558D18 /* IGListDiffDescriptionStringTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListDiffDescriptionStringTests.m; sourceTree = "<group>"; };
F18CC75B29EFBB9400DC3B9A /* IGListCollectionViewTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListCollectionViewTests.m; sourceTree = "<group>"; };
F18CC75E29EFBBB300DC3B9A /* IGListBindingSingleSectionControllerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListBindingSingleSectionControllerTests.m; sourceTree = "<group>"; };
F18CC76129EFBBE200DC3B9A /* IGTestBindingSingleItemDataSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGTestBindingSingleItemDataSource.m; sourceTree = "<group>"; };
F18CC76229EFBBE200DC3B9A /* IGTestBindingSingleItemDataSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestBindingSingleItemDataSource.h; sourceTree = "<group>"; };
F18CC76529EFBC3800DC3B9A /* IGListReloadDataUpdaterTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListReloadDataUpdaterTests.m; sourceTree = "<group>"; };
F18CC76829EFBD0300DC3B9A /* IGListBindingSingleSectionController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListBindingSingleSectionController.h; sourceTree = "<group>"; };
F18CC76929EFBD0300DC3B9A /* IGListBindingSingleSectionController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListBindingSingleSectionController.m; sourceTree = "<group>"; };
F1E6302229EA43080060B4D6 /* IGListSectionControllerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListSectionControllerTests.m; sourceTree = "<group>"; };
F1ED68AE29E9B3B9003744F8 /* IGListInteractiveMovingTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListInteractiveMovingTests.m; sourceTree = "<group>"; };
F1ED68AF29E9B3B9003744F8 /* IGListDebugDescriptionTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListDebugDescriptionTests.m; sourceTree = "<group>"; };
F1ED68B029E9B3B9003744F8 /* IGListTransactionTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListTransactionTests.m; sourceTree = "<group>"; };
F1ED68B129E9B3B9003744F8 /* IGListSingleSectionControllerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListSingleSectionControllerTests.m; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
7A02D01A2361520200B49FAE /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
7A02D0282361525800B49FAE /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
7A02D0352361526600B49FAE /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
7A92EA9423A8A42000E5A13D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
7A92EAA523A8A50100E5A13D /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
885FE1D01DC51A0D009CE2B4 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
7A02D0AA2361530800B49FAE /* IGListDiffKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
885FE1D91DC51A0D009CE2B4 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
885FE1DD1DC51A0D009CE2B4 /* IGListKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
887D0B321D870D7E009E01F7 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
7A02D0AB2361530E00B49FAE /* IGListDiffKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
887D0B3C1D870D7F009E01F7 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
887D0B401D870D7F009E01F7 /* IGListKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
88DF89791E010E6A00B1B9B4 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
88DF89811E010E6A00B1B9B4 /* IGListKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
DD31527B1DE227FA00AC9D2C /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
7A02D0A9236152F500B49FAE /* IGListDiffKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
0B3B927E1E08D7F5008390ED /* Source */ = {
isa = PBXGroup;
children = (
7A02D0252361522600B49FAE /* IGListDiffKit */,
7A02CEC6236150C400B49FAE /* IGListKit */,
7A92EA9823A8A42000E5A13D /* IGListSwiftKit */,
7A02D0AC236153CE00B49FAE /* Info.plist */,
);
path = Source;
sourceTree = "<group>";
};
294369AF1DB1B7AE0025F6E7 /* Assets */ = {
isa = PBXGroup;
children = (
294369B01DB1B7AE0025F6E7 /* IGTestNibCell.xib */,
2904861C1DCD02140007F41D /* IGTestNibSupplementaryView.xib */,
821BC4C21DB8CAE900172ED0 /* IGTestStoryboard.storyboard */,
);
path = Assets;
sourceTree = "<group>";
};
71895B31CD710912A4752CB2 /* Pods */ = {
isa = PBXGroup;
children = (
);
path = Pods;
sourceTree = "<group>";
};
7A02CEC6236150C400B49FAE /* IGListKit */ = {
isa = PBXGroup;
children = (
7A02CF632361511700B49FAE /* Internal */,
7A02CECA2361510F00B49FAE /* IGListAdapter.h */,
7A02CEE82361511000B49FAE /* IGListAdapter.m */,
7A02CEDF2361511000B49FAE /* IGListAdapterDataSource.h */,
7A02CED22361511000B49FAE /* IGListAdapterDelegate.h */,
7A02CED52361511000B49FAE /* IGListAdapterMoveDelegate.h */,
7A02CEE42361511000B49FAE /* IGListAdapterPerformanceDelegate.h */,
7A02CED92361511000B49FAE /* IGListAdapterUpdateListener.h */,
7A02CEEB2361511100B49FAE /* IGListAdapterUpdater.h */,
7A02CEDE2361511000B49FAE /* IGListAdapterUpdater.m */,
7A02CEE22361511000B49FAE /* IGListAdapterUpdaterDelegate.h */,
7A02CECF2361510F00B49FAE /* IGListBatchContext.h */,
7A02CEDA2361511000B49FAE /* IGListBindable.h */,
7A02CEDC2361511000B49FAE /* IGListBindingSectionController.h */,
7A02CEEA2361511100B49FAE /* IGListBindingSectionController.m */,
7A02CED02361510F00B49FAE /* IGListBindingSectionControllerDataSource.h */,
7A02CEE92361511000B49FAE /* IGListBindingSectionControllerSelectionDelegate.h */,
F18CC76829EFBD0300DC3B9A /* IGListBindingSingleSectionController.h */,
F18CC76929EFBD0300DC3B9A /* IGListBindingSingleSectionController.m */,
7A02CED12361510F00B49FAE /* IGListCollectionContext.h */,
7A02CEE72361511000B49FAE /* IGListCollectionScrollingTraits.h */,
7A02CECD2361510F00B49FAE /* IGListCollectionView.h */,
7A02CEED2361511100B49FAE /* IGListCollectionView.m */,
7A02CECC2361510F00B49FAE /* IGListCollectionViewDelegateLayout.h */,
7A02CED42361511000B49FAE /* IGListCollectionViewLayout.h */,
7A02CEE02361511000B49FAE /* IGListCollectionViewLayout.mm */,
7A02CEE12361511000B49FAE /* IGListCollectionViewLayoutCompatible.h */,
7A02CECB2361510F00B49FAE /* IGListDisplayDelegate.h */,
7A02CECE2361510F00B49FAE /* IGListGenericSectionController.h */,
7A02CED32361511000B49FAE /* IGListGenericSectionController.m */,
7A02CED72361511000B49FAE /* IGListKit.h */,
7A02CEC72361510F00B49FAE /* IGListReloadDataUpdater.h */,
7A02CEDB2361511000B49FAE /* IGListReloadDataUpdater.m */,
7A02CEC82361510F00B49FAE /* IGListScrollDelegate.h */,
7A02CED62361511000B49FAE /* IGListSectionController.h */,
7A02CEEC2361511100B49FAE /* IGListSectionController.m */,
7A02CEE32361511000B49FAE /* IGListSingleSectionController.h */,
7A02CEE52361511000B49FAE /* IGListSingleSectionController.m */,
7A02CEE62361511000B49FAE /* IGListSupplementaryViewSource.h */,
57B22E692502AAB10055DC2F /* IGListTransitionData.h */,
57B22E662502AAB10055DC2F /* IGListTransitionData.m */,
7A02CED82361511000B49FAE /* IGListTransitionDelegate.h */,
7A02CEDD2361511000B49FAE /* IGListUpdatingDelegate.h */,
7A02CEC92361510F00B49FAE /* IGListWorkingRangeDelegate.h */,
);
path = IGListKit;
sourceTree = "<group>";
};
7A02CF632361511700B49FAE /* Internal */ = {
isa = PBXGroup;
children = (
7A02CF7F2361513500B49FAE /* IGListAdapter+DebugDescription.h */,
7A02CF652361513300B49FAE /* IGListAdapter+DebugDescription.m */,
7A02CF742361513400B49FAE /* IGListAdapter+UICollectionView.h */,
7A02CF852361513500B49FAE /* IGListAdapter+UICollectionView.m */,
7A02CF662361513400B49FAE /* IGListAdapterInternal.h */,
7A02CF7D2361513400B49FAE /* IGListAdapterProxy.h */,
7A02CF722361513400B49FAE /* IGListAdapterProxy.m */,
7A02CF7E2361513500B49FAE /* IGListAdapterUpdater+DebugDescription.h */,
7A02CF732361513400B49FAE /* IGListAdapterUpdater+DebugDescription.m */,
7AD6864A23A89E7F009000DE /* IGListAdapterUpdaterHelpers.h */,
7AD6864923A89E7F009000DE /* IGListAdapterUpdaterHelpers.m */,
7A02CF702361513400B49FAE /* IGListAdapterUpdaterInternal.h */,
7A02CF812361513500B49FAE /* IGListArrayUtilsInternal.h */,
7A02CF8C2361513500B49FAE /* IGListBatchUpdateData+DebugDescription.h */,
7A02CF7C2361513400B49FAE /* IGListBatchUpdateData+DebugDescription.m */,
7A02CF782361513400B49FAE /* IGListBatchUpdateState.h */,
57B22E7B2502AAC40055DC2F /* IGListBatchUpdateTransaction.h */,
57B22E712502AAC20055DC2F /* IGListBatchUpdateTransaction.m */,
7A02CF672361513400B49FAE /* IGListBindingSectionController+DebugDescription.h */,
7A02CF842361513500B49FAE /* IGListBindingSectionController+DebugDescription.m */,
7A02CF682361513400B49FAE /* IGListCollectionViewLayoutInternal.h */,
57B22E742502AAC30055DC2F /* IGListDataSourceChangeTransaction.h */,
57B22E792502AAC30055DC2F /* IGListDataSourceChangeTransaction.m */,
7A02CF792361513400B49FAE /* IGListDebugger.h */,
7A02CF892361513500B49FAE /* IGListDebugger.m */,
7A02CF832361513500B49FAE /* IGListDebuggingUtilities.h */,
7A02CF8B2361513500B49FAE /* IGListDebuggingUtilities.m */,
7A02CF642361513300B49FAE /* IGListDisplayHandler.h */,
7A02CF802361513500B49FAE /* IGListDisplayHandler.m */,
57B22E7C2502AAC40055DC2F /* IGListItemUpdatesCollector.h */,
57B22E752502AAC30055DC2F /* IGListItemUpdatesCollector.m */,
7A02CF882361513500B49FAE /* IGListReloadIndexPath.h */,
7A02CF6D2361513400B49FAE /* IGListReloadIndexPath.m */,
57B22E762502AAC30055DC2F /* IGListReloadTransaction.h */,
57B22E7E2502AAC40055DC2F /* IGListReloadTransaction.m */,
7A02CF8A2361513500B49FAE /* IGListSectionControllerInternal.h */,
7A02CF712361513400B49FAE /* IGListSectionMap.h */,
7A02CF762361513400B49FAE /* IGListSectionMap.m */,
7A02CF862361513500B49FAE /* IGListSectionMap+DebugDescription.h */,
7A02CF8D2361513600B49FAE /* IGListSectionMap+DebugDescription.m */,
57B22E732502AAC30055DC2F /* IGListUpdateTransactable.h */,
57B22E7D2502AAC40055DC2F /* IGListUpdateTransactionBuilder.h */,
57B22E722502AAC30055DC2F /* IGListUpdateTransactionBuilder.m */,
7A02CF8E2361513600B49FAE /* IGListWorkingRangeHandler.h */,
7A02CF872361513500B49FAE /* IGListWorkingRangeHandler.mm */,
7A02CF8F2361513600B49FAE /* UICollectionView+DebugDescription.h */,
7A02CF752361513400B49FAE /* UICollectionView+DebugDescription.m */,
7A02CF772361513400B49FAE /* UICollectionView+IGListBatchUpdateData.h */,
7A02CF6B2361513400B49FAE /* UICollectionView+IGListBatchUpdateData.m */,
7A02CF6C2361513400B49FAE /* UICollectionViewLayout+InteractiveReordering.h */,
7A02CF6E2361513400B49FAE /* UICollectionViewLayout+InteractiveReordering.m */,
7A02CF6A2361513400B49FAE /* UIScrollView+IGListKit.h */,
7A02CF6F2361513400B49FAE /* UIScrollView+IGListKit.m */,
);
path = Internal;
sourceTree = "<group>";
};
7A02D0252361522600B49FAE /* IGListDiffKit */ = {
isa = PBXGroup;
children = (
7A02D0492361529E00B49FAE /* Internal */,
7A02D0502361529E00B49FAE /* IGListAssert.h */,
7A02D0542361529E00B49FAE /* IGListBatchUpdateData.h */,
7A02D0572361529E00B49FAE /* IGListBatchUpdateData.mm */,
7A02D0472361529E00B49FAE /* IGListCompatibility.h */,
7A02D0402361529E00B49FAE /* IGListDiff.h */,
7A02D04F2361529E00B49FAE /* IGListDiff.mm */,
7A02D0562361529E00B49FAE /* IGListDiffable.h */,
7A02D0442361529E00B49FAE /* IGListDiffKit.h */,
7A02D0452361529E00B49FAE /* IGListExperiments.h */,
7A02D0432361529E00B49FAE /* IGListIndexPathResult.h */,
7A02D0512361529E00B49FAE /* IGListIndexPathResult.m */,
7A02D05A2361529F00B49FAE /* IGListIndexSetResult.h */,
7A02D0522361529E00B49FAE /* IGListIndexSetResult.m */,
7A02D0582361529E00B49FAE /* IGListMacros.h */,
7A02D0592361529E00B49FAE /* IGListMoveIndex.h */,
7A02D0532361529E00B49FAE /* IGListMoveIndex.m */,
7A02D04E2361529E00B49FAE /* IGListMoveIndexPath.h */,
7A02D0552361529E00B49FAE /* IGListMoveIndexPath.m */,
7A02D0482361529E00B49FAE /* NSNumber+IGListDiffable.h */,
7A02D0412361529E00B49FAE /* NSNumber+IGListDiffable.m */,
7A02D0422361529E00B49FAE /* NSString+IGListDiffable.h */,
7A02D0462361529E00B49FAE /* NSString+IGListDiffable.m */,
);
path = IGListDiffKit;
sourceTree = "<group>";
};
7A02D0492361529E00B49FAE /* Internal */ = {
isa = PBXGroup;
children = (
7A02D04A2361529E00B49FAE /* IGListIndexSetResultInternal.h */,
7A02D04B2361529E00B49FAE /* IGListIndexPathResultInternal.h */,
7A02D04C2361529E00B49FAE /* IGListMoveIndexInternal.h */,
7A02D04D2361529E00B49FAE /* IGListMoveIndexPathInternal.h */,
);
path = Internal;
sourceTree = "<group>";
};
7A92EA9823A8A42000E5A13D /* IGListSwiftKit */ = {
isa = PBXGroup;
children = (
7A92EA9923A8A42000E5A13D /* IGListSwiftKit.h */,
Improve SwiftPM support (#1546) Summary: This diff imports and refines the PR made by cntrump on GitHub. The PR introduces the following: * Sample apps now use SPM instead of CocoaPods to import IGListKit. * Adds Mac Catalyst as an example target. * Adds C++ flags to the CocoaPods specs. * Fixes a script issue that was discovered when regenerating the symlinks. The PR originally aimed to remove the need for symlinked references to the IGListKit and IGListDiffKit source files, but in testing, I couldn't get it working. It's possible SPM being too strict [on where the headers can be placed to be discovered](https://forums.swift.org/t/how-do-i-specify-the-headers-directory-for-a-objc-target-in-swift-package-managers-package-swift/58531/3). Additionally, another issue was that the original PR changed all of the `#import` statements to the the modular `import` statements, which is fine for the sample apps, but ended up breaking compatibility for any apps that had modules disabled. ## Changes in this pull request Improve SwiftPM support: Build module `IGListDiffKit` and `IGListKit` as Objective-C++. module `IGListDiffKit`: - Source/IGListDiffKit - module defined in `Source/IGListDiffKit/modulemap/module.modulemap` - requires `-fmodules` and `-fcxx-modules` module `IGListKit`: - depend on `IGListDiffKit`, use `import IGListDiffKit;` - Source/IGListKit - module defined in `Source/IGListKit/modulemap/module.modulemap` - requires `-fmodules` and `-fcxx-modules` module `IGListSwiftKit`: - depend on `IGListKit`, use `import IGListKit` - Source/IGListSwiftKit Deleted `spm/` and `scripts/generate_spm_sources_layout.sh`, it is unnecessary. Updated `.podspec`, add `'OTHER_CFLAGS' => '-fmodules'` and `'OTHER_CPLUSPLUSFLAGS' => '-fcxx-modules'`. Add missing swift files for `IGListSwiftKit` in `IGListKit.xcodeproj` ### How to use Replace `#import <IGListDiffKit/IGListDiffKit.h>` with `import IGListDiffKit;`, because `IGListDiffKit.h` isn't exist in `modulemap/`, Or create a symbol link by `ln -sf ../IGListDiffKit.h` for support it ? ### Examples Use SwiftPM for building examples. ### Checklist - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [ ] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1546 Test Plan: Test PR showing running tests: https://github.com/TimOliver/IGListKit/actions/runs/4339956050/jobs/7578047058 Reviewed By: lorixx Differential Revision: D33592395 Pulled By: TimOliver fbshipit-source-id: 8f7b1873f2b1c6a80908bb55b123e31bea13bb0c
2023-03-07 07:29:41 +00:00
BA4A65232760278F00FA5750 /* ListIdentifiable.swift */,
BA4A65222760278F00FA5750 /* ListValueSectionController.swift */,
7A92EA9F23A8A43D00E5A13D /* IGListCollectionContext+Refinements.swift */,
7AEA8E5C25BF715C00971591 /* IGListSingleSectionController+Refinements.swift */,
);
path = IGListSwiftKit;
sourceTree = "<group>";
};
88144EF01D870EDC007C7F66 /* Objects */ = {
isa = PBXGroup;
children = (
298DDA261E3B166100F76F50 /* IGLayoutTestDataSource.h */,
298DDA271E3B166100F76F50 /* IGLayoutTestDataSource.m */,
298DDA281E3B166100F76F50 /* IGLayoutTestItem.h */,
298DDA291E3B166100F76F50 /* IGLayoutTestItem.m */,
298DDA2A1E3B166100F76F50 /* IGLayoutTestSection.h */,
298DDA2B1E3B166100F76F50 /* IGLayoutTestSection.m */,
294CDE611F995DD7002CF6E4 /* IGListAdapterUpdateTester.h */,
294CDE621F995DD7002CF6E4 /* IGListAdapterUpdateTester.m */,
88144EF11D870EDC007C7F66 /* IGListTestAdapterDataSource.h */,
88144EF21D870EDC007C7F66 /* IGListTestAdapterDataSource.m */,
8285404E1DE40D2D00118B94 /* IGListTestAdapterHorizontalDataSource.h */,
8285404F1DE40D2D00118B94 /* IGListTestAdapterHorizontalDataSource.m */,
Interactive Reordering Summary: I had a desire for interactive reordering in a personal project, so here's a first attempt at adding support in IGListKit. I figured I might as well get a WIP PR up for comments before I continue further as there are a few aspects to interactive reordering that don't interplay perfectly with IGListKit. As discussed in #291, I went after two prime use cases: 1. Moving items amongst a section 2. Rearranging whole sections I also "disabled" moving items between sections by having those moves revert, to mimic interactive reordering cancellation as closely as possible. You can see both in the Mixed Data example. Grid items can be moved within a section, while users can be moved to reorder whole sections. But trying to move a grid item out of a grid or a user item into a grid will auto-revert. The revert animation isn't as tight as it should be. It may be more desirable to disable the animation - though you lose the visual cue. There is a also a new example, `ReorderableViewController`, that demonstrates 2 in its pure form (likely the most desired use case), where all sections are reorderable single rows. Happy to take feedback -- this is my first experience working on IGListKit, so I would expect there to be gaps. (Ex. I haven't used `IGListStackedSectionController`, and its tests failed as I hadn't implemented reordering delegates for it. Those are simply stubbed out for now.) Issue fixed: #291 - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [x] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) - [x] Proper support in `IGListStackedSectionController` Closes https://github.com/Instagram/IGListKit/pull/976 Differential Revision: D6674493 Pulled By: rnystrom fbshipit-source-id: cd53c5fdc6fb59636edc4747c4bbd0f81a4610e5
2018-02-12 17:09:26 +00:00
13DF01711FA0FD400092A320 /* IGListTestAdapterReorderingDataSource.h */,
13DF01721FA0FD400092A320 /* IGListTestAdapterReorderingDataSource.m */,
8240C7F91DC2F6CF00B3AAE7 /* IGListTestAdapterStoryboardDataSource.h */,
8240C7FA1DC2F6CF00B3AAE7 /* IGListTestAdapterStoryboardDataSource.m */,
82914C591E6E2DEC0066C2F8 /* IGListTestContainerSizeSection.h */,
82914C5A1E6E2DEC0066C2F8 /* IGListTestContainerSizeSection.m */,
8285404A1DE40C6E00118B94 /* IGListTestHorizontalSection.h */,
8285404B1DE40C6E00118B94 /* IGListTestHorizontalSection.m */,
88144EF31D870EDC007C7F66 /* IGListTestOffsettingLayout.h */,
88144EF41D870EDC007C7F66 /* IGListTestOffsettingLayout.m */,
88144EF51D870EDC007C7F66 /* IGListTestSection.h */,
88144EF61D870EDC007C7F66 /* IGListTestSection.m */,
8240C7F61DC2F3FB00B3AAE7 /* IGListTestStoryboardSection.h */,
8240C7F71DC2F3FB00B3AAE7 /* IGListTestStoryboardSection.m */,
88144EF71D870EDC007C7F66 /* IGListTestUICollectionViewDataSource.h */,
88144EF81D870EDC007C7F66 /* IGListTestUICollectionViewDataSource.m */,
F18CC76229EFBBE200DC3B9A /* IGTestBindingSingleItemDataSource.h */,
F18CC76129EFBBE200DC3B9A /* IGTestBindingSingleItemDataSource.m */,
2995409A1F588C8D00F647CF /* IGTestBindingWithoutDeselectionDelegate.h */,
2995409B1F588C8D00F647CF /* IGTestBindingWithoutDeselectionDelegate.m */,
88144EF91D870EDC007C7F66 /* IGTestCell.h */,
88144EFA1D870EDC007C7F66 /* IGTestCell.m */,
88144EFB1D870EDC007C7F66 /* IGTestDelegateController.h */,
88144EFC1D870EDC007C7F66 /* IGTestDelegateController.m */,
88144EFD1D870EDC007C7F66 /* IGTestDelegateDataSource.h */,
88144EFE1D870EDC007C7F66 /* IGTestDelegateDataSource.m */,
298DDA0B1E3AE3ED00F76F50 /* IGTestDiffingDataSource.h */,
298DDA0C1E3AE3ED00F76F50 /* IGTestDiffingDataSource.m */,
298DD9F81E3AE1AA00F76F50 /* IGTestDiffingObject.h */,
298DD9F91E3AE1AA00F76F50 /* IGTestDiffingObject.m */,
298DD9D01E3ADDB400F76F50 /* IGTestDiffingSectionController.h */,
298DD9D11E3ADDB400F76F50 /* IGTestDiffingSectionController.m */,
Fix #1275 layouts inconsistency in `updateAnimated:completion` of IGListBindingSectionController (#1285) Summary: ## Changes in this pull request Issue fixed: https://github.com/Instagram/IGListKit/issues/1275 This PR is straintforward solution as mentioned in https://github.com/Instagram/IGListKit/issues/1275. When I finished it, I realized that it is not a problem in `IGListCollectionViewLayout Partial Optimization` and `IGListBindingSectionController` deserved it. Maybe `IGListCollectionViewLayout` is rarely used because of great builtin UICollectionViewFlowLayout or cells in section rarely need changing their sizes in practices. Despite it is not `IGListCollectionViewLayout`'s fault, I think it can be more optimized against `invalidateLayoutWithContext`. I would like to make an another PR to optimize it. Due to this PR just giving a proposed solution, it lacks of adding tests and changing log. When this solution is accepted, I would like to complete these todos. ### Checklist - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [x] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1285 Reviewed By: candance Differential Revision: D15592807 Pulled By: lorixx fbshipit-source-id: ae06abce896341509de4f3dfb73b3a7bc0a68c51
2019-06-12 05:25:14 +00:00
16B71CE522B0A08300FE96ED /* IGTestInvalidateLayoutDataSource.h */,
16B71CE822B0A08300FE96ED /* IGTestInvalidateLayoutDataSource.m */,
16B71CE922B0A08300FE96ED /* IGTestInvalidateLayoutObject.h */,
16B71CEA22B0A08300FE96ED /* IGTestInvalidateLayoutObject.m */,
16B71CE622B0A08300FE96ED /* IGTestInvalidateLayoutSectionController.h */,
16B71CE722B0A08300FE96ED /* IGTestInvalidateLayoutSectionController.m */,
2904861E1DCD02750007F41D /* IGTestNibSupplementaryView.h */,
2904861F1DCD02750007F41D /* IGTestNibSupplementaryView.m */,
298DD9E01E3ADE4300F76F50 /* IGTestNumberBindableCell.h */,
298DD9E11E3ADE4300F76F50 /* IGTestNumberBindableCell.m */,
88144EFF1D870EDC007C7F66 /* IGTestObject.h */,
88144F001D870EDC007C7F66 /* IGTestObject.m */,
Interactive Reordering Summary: I had a desire for interactive reordering in a personal project, so here's a first attempt at adding support in IGListKit. I figured I might as well get a WIP PR up for comments before I continue further as there are a few aspects to interactive reordering that don't interplay perfectly with IGListKit. As discussed in #291, I went after two prime use cases: 1. Moving items amongst a section 2. Rearranging whole sections I also "disabled" moving items between sections by having those moves revert, to mimic interactive reordering cancellation as closely as possible. You can see both in the Mixed Data example. Grid items can be moved within a section, while users can be moved to reorder whole sections. But trying to move a grid item out of a grid or a user item into a grid will auto-revert. The revert animation isn't as tight as it should be. It may be more desirable to disable the animation - though you lose the visual cue. There is a also a new example, `ReorderableViewController`, that demonstrates 2 in its pure form (likely the most desired use case), where all sections are reorderable single rows. Happy to take feedback -- this is my first experience working on IGListKit, so I would expect there to be gaps. (Ex. I haven't used `IGListStackedSectionController`, and its tests failed as I hadn't implemented reordering delegates for it. Those are simply stubbed out for now.) Issue fixed: #291 - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [x] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) - [x] Proper support in `IGListStackedSectionController` Closes https://github.com/Instagram/IGListKit/pull/976 Differential Revision: D6674493 Pulled By: rnystrom fbshipit-source-id: cd53c5fdc6fb59636edc4747c4bbd0f81a4610e5
2018-02-12 17:09:26 +00:00
13DF01751FA1000E0092A320 /* IGTestReorderableSection.h */,
13DF01761FA1000E0092A320 /* IGTestReorderableSection.m */,
88144F011D870EDC007C7F66 /* IGTestSingleItemDataSource.h */,
88144F021D870EDC007C7F66 /* IGTestSingleItemDataSource.m */,
26271C881DAE94E40073E116 /* IGTestSingleNibItemDataSource.h */,
26271C891DAE94E40073E116 /* IGTestSingleNibItemDataSource.m */,
821BC4D11DB9816E00172ED0 /* IGTestSingleStoryboardItemDataSource.h */,
821BC4D21DB981AB00172ED0 /* IGTestSingleStoryboardItemDataSource.m */,
6A9EB35F1F841E5D0070C572 /* IGTestSingleWithoutDeselectionDelegate.h */,
6A9EB3601F841E5D0070C572 /* IGTestSingleWithoutDeselectionDelegate.m */,
821BC4CC1DB8D8C500172ED0 /* IGTestStoryboardCell.h */,
821BC4CD1DB8D8C500172ED0 /* IGTestStoryboardCell.m */,
8240C7F31DC2D99300B3AAE7 /* IGTestStoryboardSupplementarySource.h */,
8240C7F41DC2D99300B3AAE7 /* IGTestStoryboardSupplementarySource.m */,
8240C7EE1DC272CA00B3AAE7 /* IGTestStoryboardSupplementaryView.h */,
8240C7EF1DC272CA00B3AAE7 /* IGTestStoryboardSupplementaryView.m */,
821BC4C71DB8D5B200172ED0 /* IGTestStoryboardViewController.h */,
821BC4C81DB8D5B200172ED0 /* IGTestStoryboardViewController.m */,
298DD9D81E3ADE3300F76F50 /* IGTestStringBindableCell.h */,
298DD9D91E3ADE3300F76F50 /* IGTestStringBindableCell.m */,
88144F051D870EDC007C7F66 /* IGTestSupplementarySource.h */,
88144F061D870EDC007C7F66 /* IGTestSupplementarySource.m */,
);
path = Objects;
sourceTree = "<group>";
};
887D0B2C1D870D7E009E01F7 = {
isa = PBXGroup;
children = (
887D0B371D870D7E009E01F7 /* Products */,
0B3B927E1E08D7F5008390ED /* Source */,
887D0B551D870E1E009E01F7 /* Tests */,
71895B31CD710912A4752CB2 /* Pods */,
);
sourceTree = "<group>";
usesTabs = 0;
};
887D0B371D870D7E009E01F7 /* Products */ = {
isa = PBXGroup;
children = (
887D0B361D870D7E009E01F7 /* IGListKit.framework */,
887D0B3F1D870D7F009E01F7 /* IGListKitTests.xctest */,
885FE1D41DC51A0D009CE2B4 /* IGListKit.framework */,
885FE1DC1DC51A0D009CE2B4 /* IGListKit-tvOSTests.xctest */,
DD3152AC1DE227FA00AC9D2C /* IGListKit.framework */,
88DF897C1E010E6A00B1B9B4 /* IGListKit-macOSTests.xctest */,
7A02D01D2361520200B49FAE /* IGListDiffKit.framework */,
7A02D02B2361525800B49FAE /* IGListDiffKit.framework */,
7A02D0382361526600B49FAE /* IGListDiffKit.framework */,
7A92EA9723A8A42000E5A13D /* IGListSwiftKit.framework */,
7A92EAA823A8A50100E5A13D /* IGListSwiftKit.framework */,
);
name = Products;
sourceTree = "<group>";
};
887D0B551D870E1E009E01F7 /* Tests */ = {
isa = PBXGroup;
children = (
294369AF1DB1B7AE0025F6E7 /* Assets */,
88144EE21D870EDC007C7F66 /* IGListAdapterE2ETests.m */,
29C4748A1DDF45E700AE68CE /* IGListAdapterProxyTests.m */,
8240C7F11DC284C300B3AAE7 /* IGListAdapterStoryboardTests.m */,
88144EE31D870EDC007C7F66 /* IGListAdapterTests.m */,
88144EE41D870EDC007C7F66 /* IGListAdapterUpdaterTests.m */,
88144EE51D870EDC007C7F66 /* IGListBatchUpdateDataTests.m */,
298DD9CD1E3ADD1400F76F50 /* IGListBindingSectionControllerTests.m */,
F18CC75E29EFBBB300DC3B9A /* IGListBindingSingleSectionControllerTests.m */,
E56B7B3320A9D7100071010C /* IGListCollectionScrollingTraitsTests.m */,
F1ED68B129E9B3B9003744F8 /* IGListSingleSectionControllerTests.m */,
298DDA231E3B15EE00F76F50 /* IGListCollectionViewLayoutTests.m */,
F18CC75B29EFBB9400DC3B9A /* IGListCollectionViewTests.m */,
E8D312DF1FC472A60009FA2F /* IGListContentInsetTests.m */,
F1ED68AF29E9B3B9003744F8 /* IGListDebugDescriptionTests.m */,
290DF3761E9323E6009FE456 /* IGListDebuggerTests.m */,
F1855A4B29BC565600558D18 /* IGListDiffDescriptionStringTests.m */,
294AC6311DDE4C19002FCE5D /* IGListDiffResultTests.m */,
88144EE61D870EDC007C7F66 /* IGListDiffSwiftTests.swift */,
88144EE81D870EDC007C7F66 /* IGListDiffTests.m */,
88144EE91D870EDC007C7F66 /* IGListDisplayHandlerTests.m */,
29DA5CA21EA7C72400113926 /* IGListGenericSectionControllerTests.m */,
F1ED68AE29E9B3B9003744F8 /* IGListInteractiveMovingTests.m */,
88144EEB1D870EDC007C7F66 /* IGListKitTests-Bridging-Header.h */,
F18CC76529EFBC3800DC3B9A /* IGListReloadDataUpdaterTests.m */,
F1E6302229EA43080060B4D6 /* IGListSectionControllerTests.m */,
829D7BA81DD1816400549816 /* IGListSectionMapTests.m */,
26271C8B1DAE96740073E116 /* IGListSingleNibItemControllerTests.m */,
88144EED1D870EDC007C7F66 /* IGListSingleSectionControllerTests.m */,
821BC4BE1DB8C95300172ED0 /* IGListSingleStoryboardItemControllerTests.m */,
29DA5CA91EA7D39B00113926 /* IGListTestCase.h */,
29DA5CA61EA7D37000113926 /* IGListTestCase.m */,
29DA5CAA1EA7D3FF00113926 /* IGListTestHelpers.h */,
F1ED68B029E9B3B9003744F8 /* IGListTransactionTests.m */,
88144EEF1D870EDC007C7F66 /* IGListWorkingRangeHandlerTests.m */,
887D0B571D870E1E009E01F7 /* Info.plist */,
88144EF01D870EDC007C7F66 /* Objects */,
);
path = Tests;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
7A02D0182361520200B49FAE /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
7A02D0A32361529F00B49FAE /* IGListMoveIndex.h in Headers */,
7A02D0762361529F00B49FAE /* IGListIndexSetResultInternal.h in Headers */,
7A02D07C2361529F00B49FAE /* IGListMoveIndexInternal.h in Headers */,
7A02D09A2361529F00B49FAE /* IGListDiffable.h in Headers */,
7A02D0732361529F00B49FAE /* NSNumber+IGListDiffable.h in Headers */,
7A02D05B2361529F00B49FAE /* IGListDiff.h in Headers */,
7A02D0A02361529F00B49FAE /* IGListMacros.h in Headers */,
7A02D0642361529F00B49FAE /* IGListIndexPathResult.h in Headers */,
7A02D0792361529F00B49FAE /* IGListIndexPathResultInternal.h in Headers */,
7A02D06A2361529F00B49FAE /* IGListExperiments.h in Headers */,
7A02D0822361529F00B49FAE /* IGListMoveIndexPath.h in Headers */,
7A02D0942361529F00B49FAE /* IGListBatchUpdateData.h in Headers */,
7A02D07F2361529F00B49FAE /* IGListMoveIndexPathInternal.h in Headers */,
7A02D0702361529F00B49FAE /* IGListCompatibility.h in Headers */,
7A02D0882361529F00B49FAE /* IGListAssert.h in Headers */,
7A02D0A62361529F00B49FAE /* IGListIndexSetResult.h in Headers */,
7A02D0672361529F00B49FAE /* IGListDiffKit.h in Headers */,
7A02D0612361529F00B49FAE /* NSString+IGListDiffable.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
7A02D0262361525800B49FAE /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
7A02D0682361529F00B49FAE /* IGListDiffKit.h in Headers */,
7A02D06B2361529F00B49FAE /* IGListExperiments.h in Headers */,
7A02D0622361529F00B49FAE /* NSString+IGListDiffable.h in Headers */,
7A02D0952361529F00B49FAE /* IGListBatchUpdateData.h in Headers */,
7A02D0A12361529F00B49FAE /* IGListMacros.h in Headers */,
7A02D0772361529F00B49FAE /* IGListIndexSetResultInternal.h in Headers */,
7A02D0802361529F00B49FAE /* IGListMoveIndexPathInternal.h in Headers */,
7A02D07A2361529F00B49FAE /* IGListIndexPathResultInternal.h in Headers */,
7A02D0652361529F00B49FAE /* IGListIndexPathResult.h in Headers */,
7A02D0712361529F00B49FAE /* IGListCompatibility.h in Headers */,
7A02D0A42361529F00B49FAE /* IGListMoveIndex.h in Headers */,
7A02D0742361529F00B49FAE /* NSNumber+IGListDiffable.h in Headers */,
7A02D0832361529F00B49FAE /* IGListMoveIndexPath.h in Headers */,
7A02D05C2361529F00B49FAE /* IGListDiff.h in Headers */,
7A02D0892361529F00B49FAE /* IGListAssert.h in Headers */,
7A02D07D2361529F00B49FAE /* IGListMoveIndexInternal.h in Headers */,
7A02D09B2361529F00B49FAE /* IGListDiffable.h in Headers */,
7A02D0A72361529F00B49FAE /* IGListIndexSetResult.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
7A02D0332361526600B49FAE /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
7A02D0692361529F00B49FAE /* IGListDiffKit.h in Headers */,
7A02D06C2361529F00B49FAE /* IGListExperiments.h in Headers */,
7A02D0632361529F00B49FAE /* NSString+IGListDiffable.h in Headers */,
7A02D0962361529F00B49FAE /* IGListBatchUpdateData.h in Headers */,
7A02D0A22361529F00B49FAE /* IGListMacros.h in Headers */,
7A02D0782361529F00B49FAE /* IGListIndexSetResultInternal.h in Headers */,
7A02D0812361529F00B49FAE /* IGListMoveIndexPathInternal.h in Headers */,
7A02D07B2361529F00B49FAE /* IGListIndexPathResultInternal.h in Headers */,
7A02D0662361529F00B49FAE /* IGListIndexPathResult.h in Headers */,
7A02D0722361529F00B49FAE /* IGListCompatibility.h in Headers */,
7A02D0A52361529F00B49FAE /* IGListMoveIndex.h in Headers */,
7A02D0752361529F00B49FAE /* NSNumber+IGListDiffable.h in Headers */,
7A02D0842361529F00B49FAE /* IGListMoveIndexPath.h in Headers */,
7A02D05D2361529F00B49FAE /* IGListDiff.h in Headers */,
7A02D08A2361529F00B49FAE /* IGListAssert.h in Headers */,
7A02D07E2361529F00B49FAE /* IGListMoveIndexInternal.h in Headers */,
7A02D09C2361529F00B49FAE /* IGListDiffable.h in Headers */,
7A02D0A82361529F00B49FAE /* IGListIndexSetResult.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
7A92EA9223A8A42000E5A13D /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
7A92EA9B23A8A42000E5A13D /* IGListSwiftKit.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
7A92EAA323A8A50100E5A13D /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
7A92EAB023A8A50C00E5A13D /* IGListSwiftKit.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
885FE1D11DC51A0D009CE2B4 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
7A02CF102361511100B49FAE /* IGListAdapterDelegate.h in Headers */,
7A02CFB52361513600B49FAE /* IGListAdapterUpdaterInternal.h in Headers */,
7A02CF222361511100B49FAE /* IGListTransitionDelegate.h in Headers */,
7A02CEEF2361511100B49FAE /* IGListReloadDataUpdater.h in Headers */,
7A02CFB82361513600B49FAE /* IGListSectionMap.h in Headers */,
F18CC76B29EFBD0300DC3B9A /* IGListBindingSingleSectionController.h in Headers */,
7A02CF432361511100B49FAE /* IGListSingleSectionController.h in Headers */,
7A02CF1F2361511100B49FAE /* IGListKit.h in Headers */,
7A02CFE22361513600B49FAE /* IGListAdapter+DebugDescription.h in Headers */,
7A02CF4F2361511100B49FAE /* IGListCollectionScrollingTraits.h in Headers */,
7A02CF192361511100B49FAE /* IGListAdapterMoveDelegate.h in Headers */,
7A02CF972361513600B49FAE /* IGListAdapterInternal.h in Headers */,
7A02CFD02361513600B49FAE /* IGListDebugger.h in Headers */,
7A02CF2E2361511100B49FAE /* IGListBindingSectionController.h in Headers */,
7A02CF3D2361511100B49FAE /* IGListCollectionViewLayoutCompatible.h in Headers */,
7A02CF402361511100B49FAE /* IGListAdapterUpdaterDelegate.h in Headers */,
7A02CEFE2361511100B49FAE /* IGListCollectionViewDelegateLayout.h in Headers */,
7A02CF5B2361511100B49FAE /* IGListAdapterUpdater.h in Headers */,
7A02CF252361511100B49FAE /* IGListAdapterUpdateListener.h in Headers */,
7A02D00F2361513600B49FAE /* IGListWorkingRangeHandler.h in Headers */,
7A02CFA32361513600B49FAE /* UIScrollView+IGListKit.h in Headers */,
7A02CEF52361511100B49FAE /* IGListWorkingRangeDelegate.h in Headers */,
7A02CEF82361511100B49FAE /* IGListAdapter.h in Headers */,
7A02CFDF2361513600B49FAE /* IGListAdapterUpdater+DebugDescription.h in Headers */,
7A02CF042361511100B49FAE /* IGListGenericSectionController.h in Headers */,
7A02CFFD2361513600B49FAE /* IGListReloadIndexPath.h in Headers */,
7A02CEFB2361511100B49FAE /* IGListDisplayDelegate.h in Headers */,
7A02CF4C2361511100B49FAE /* IGListSupplementaryViewSource.h in Headers */,
7A02CFA92361513600B49FAE /* UICollectionViewLayout+InteractiveReordering.h in Headers */,
Improve SwiftPM support (#1546) Summary: This diff imports and refines the PR made by cntrump on GitHub. The PR introduces the following: * Sample apps now use SPM instead of CocoaPods to import IGListKit. * Adds Mac Catalyst as an example target. * Adds C++ flags to the CocoaPods specs. * Fixes a script issue that was discovered when regenerating the symlinks. The PR originally aimed to remove the need for symlinked references to the IGListKit and IGListDiffKit source files, but in testing, I couldn't get it working. It's possible SPM being too strict [on where the headers can be placed to be discovered](https://forums.swift.org/t/how-do-i-specify-the-headers-directory-for-a-objc-target-in-swift-package-managers-package-swift/58531/3). Additionally, another issue was that the original PR changed all of the `#import` statements to the the modular `import` statements, which is fine for the sample apps, but ended up breaking compatibility for any apps that had modules disabled. ## Changes in this pull request Improve SwiftPM support: Build module `IGListDiffKit` and `IGListKit` as Objective-C++. module `IGListDiffKit`: - Source/IGListDiffKit - module defined in `Source/IGListDiffKit/modulemap/module.modulemap` - requires `-fmodules` and `-fcxx-modules` module `IGListKit`: - depend on `IGListDiffKit`, use `import IGListDiffKit;` - Source/IGListKit - module defined in `Source/IGListKit/modulemap/module.modulemap` - requires `-fmodules` and `-fcxx-modules` module `IGListSwiftKit`: - depend on `IGListKit`, use `import IGListKit` - Source/IGListSwiftKit Deleted `spm/` and `scripts/generate_spm_sources_layout.sh`, it is unnecessary. Updated `.podspec`, add `'OTHER_CFLAGS' => '-fmodules'` and `'OTHER_CPLUSPLUSFLAGS' => '-fcxx-modules'`. Add missing swift files for `IGListSwiftKit` in `IGListKit.xcodeproj` ### How to use Replace `#import <IGListDiffKit/IGListDiffKit.h>` with `import IGListDiffKit;`, because `IGListDiffKit.h` isn't exist in `modulemap/`, Or create a symbol link by `ln -sf ../IGListDiffKit.h` for support it ? ### Examples Use SwiftPM for building examples. ### Checklist - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [ ] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1546 Test Plan: Test PR showing running tests: https://github.com/TimOliver/IGListKit/actions/runs/4339956050/jobs/7578047058 Reviewed By: lorixx Differential Revision: D33592395 Pulled By: TimOliver fbshipit-source-id: 8f7b1873f2b1c6a80908bb55b123e31bea13bb0c
2023-03-07 07:29:41 +00:00
E03DEA83255C9AAC00ACCAFC /* IGListTransitionData.h in Headers */,
0A89290026CDA632003FABD8 /* IGListBatchUpdateTransaction.h in Headers */,
0A8928FB26CDA591003FABD8 /* IGListReloadTransaction.h in Headers */,
0A8928FA26CDA53B003FABD8 /* IGListUpdateTransactionBuilder.h in Headers */,
0A8928FE26CDA5EA003FABD8 /* IGListDataSourceChangeTransaction.h in Headers */,
7A02CF462361511100B49FAE /* IGListAdapterPerformanceDelegate.h in Headers */,
7A02CF0A2361511100B49FAE /* IGListBindingSectionControllerDataSource.h in Headers */,
7A02D0122361513600B49FAE /* UICollectionView+DebugDescription.h in Headers */,
0A89290126CDA666003FABD8 /* IGListItemUpdatesCollector.h in Headers */,
7A92EAB423A8A5FA00E5A13D /* IGListAdapterUpdaterHelpers.h in Headers */,
7A02CF0D2361511100B49FAE /* IGListCollectionContext.h in Headers */,
7A02CF372361511100B49FAE /* IGListAdapterDataSource.h in Headers */,
7A02CFC12361513600B49FAE /* IGListAdapter+UICollectionView.h in Headers */,
7A02CFDC2361513600B49FAE /* IGListAdapterProxy.h in Headers */,
7A02CFCD2361513600B49FAE /* IGListBatchUpdateState.h in Headers */,
7A02CEF22361511100B49FAE /* IGListScrollDelegate.h in Headers */,
7A02CF9A2361513600B49FAE /* IGListBindingSectionController+DebugDescription.h in Headers */,
7A02CF9D2361513600B49FAE /* IGListCollectionViewLayoutInternal.h in Headers */,
7A02CFCA2361513600B49FAE /* UICollectionView+IGListBatchUpdateData.h in Headers */,
7A02D0092361513600B49FAE /* IGListBatchUpdateData+DebugDescription.h in Headers */,
7A02CFEE2361513600B49FAE /* IGListDebuggingUtilities.h in Headers */,
7A02D0032361513600B49FAE /* IGListSectionControllerInternal.h in Headers */,
7A02CF162361511100B49FAE /* IGListCollectionViewLayout.h in Headers */,
7A02CF072361511100B49FAE /* IGListBatchContext.h in Headers */,
7A02CF312361511100B49FAE /* IGListUpdatingDelegate.h in Headers */,
7A02CFE82361513600B49FAE /* IGListArrayUtilsInternal.h in Headers */,
7A02CFF72361513600B49FAE /* IGListSectionMap+DebugDescription.h in Headers */,
7A02CF552361511100B49FAE /* IGListBindingSectionControllerSelectionDelegate.h in Headers */,
7A02CF282361511100B49FAE /* IGListBindable.h in Headers */,
7A02CF1C2361511100B49FAE /* IGListSectionController.h in Headers */,
7A02CF912361513600B49FAE /* IGListDisplayHandler.h in Headers */,
7A02CF012361511100B49FAE /* IGListCollectionView.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
887D0B331D870D7E009E01F7 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
7A02CEEE2361511100B49FAE /* IGListReloadDataUpdater.h in Headers */,
7A02CF212361511100B49FAE /* IGListTransitionDelegate.h in Headers */,
7A02CF362361511100B49FAE /* IGListAdapterDataSource.h in Headers */,
7A02CF962361513600B49FAE /* IGListAdapterInternal.h in Headers */,
7A02CF062361511100B49FAE /* IGListBatchContext.h in Headers */,
7A02D0112361513600B49FAE /* UICollectionView+DebugDescription.h in Headers */,
57B22E8A2502AAC40055DC2F /* IGListItemUpdatesCollector.h in Headers */,
7A02CFB72361513600B49FAE /* IGListSectionMap.h in Headers */,
7A02CF3C2361511100B49FAE /* IGListCollectionViewLayoutCompatible.h in Headers */,
7A02CFC02361513600B49FAE /* IGListAdapter+UICollectionView.h in Headers */,
7A02CF4B2361511100B49FAE /* IGListSupplementaryViewSource.h in Headers */,
7A02CEF72361511100B49FAE /* IGListAdapter.h in Headers */,
57B22E842502AAC40055DC2F /* IGListReloadTransaction.h in Headers */,
7A02CF182361511100B49FAE /* IGListAdapterMoveDelegate.h in Headers */,
7A02CF1E2361511100B49FAE /* IGListKit.h in Headers */,
57B22E8B2502AAC40055DC2F /* IGListUpdateTransactionBuilder.h in Headers */,
7A02CFDB2361513600B49FAE /* IGListAdapterProxy.h in Headers */,
7A02CF902361513600B49FAE /* IGListDisplayHandler.h in Headers */,
57B22E892502AAC40055DC2F /* IGListBatchUpdateTransaction.h in Headers */,
7A02CF0C2361511100B49FAE /* IGListCollectionContext.h in Headers */,
7A02CF0F2361511100B49FAE /* IGListAdapterDelegate.h in Headers */,
7A02CFB42361513600B49FAE /* IGListAdapterUpdaterInternal.h in Headers */,
7A02CFE72361513600B49FAE /* IGListArrayUtilsInternal.h in Headers */,
7A02CF2D2361511100B49FAE /* IGListBindingSectionController.h in Headers */,
7A02D00E2361513600B49FAE /* IGListWorkingRangeHandler.h in Headers */,
7A02CF992361513600B49FAE /* IGListBindingSectionController+DebugDescription.h in Headers */,
7A02CF4E2361511100B49FAE /* IGListCollectionScrollingTraits.h in Headers */,
7A02CFA22361513600B49FAE /* UIScrollView+IGListKit.h in Headers */,
Improve SwiftPM support (#1546) Summary: This diff imports and refines the PR made by cntrump on GitHub. The PR introduces the following: * Sample apps now use SPM instead of CocoaPods to import IGListKit. * Adds Mac Catalyst as an example target. * Adds C++ flags to the CocoaPods specs. * Fixes a script issue that was discovered when regenerating the symlinks. The PR originally aimed to remove the need for symlinked references to the IGListKit and IGListDiffKit source files, but in testing, I couldn't get it working. It's possible SPM being too strict [on where the headers can be placed to be discovered](https://forums.swift.org/t/how-do-i-specify-the-headers-directory-for-a-objc-target-in-swift-package-managers-package-swift/58531/3). Additionally, another issue was that the original PR changed all of the `#import` statements to the the modular `import` statements, which is fine for the sample apps, but ended up breaking compatibility for any apps that had modules disabled. ## Changes in this pull request Improve SwiftPM support: Build module `IGListDiffKit` and `IGListKit` as Objective-C++. module `IGListDiffKit`: - Source/IGListDiffKit - module defined in `Source/IGListDiffKit/modulemap/module.modulemap` - requires `-fmodules` and `-fcxx-modules` module `IGListKit`: - depend on `IGListDiffKit`, use `import IGListDiffKit;` - Source/IGListKit - module defined in `Source/IGListKit/modulemap/module.modulemap` - requires `-fmodules` and `-fcxx-modules` module `IGListSwiftKit`: - depend on `IGListKit`, use `import IGListKit` - Source/IGListSwiftKit Deleted `spm/` and `scripts/generate_spm_sources_layout.sh`, it is unnecessary. Updated `.podspec`, add `'OTHER_CFLAGS' => '-fmodules'` and `'OTHER_CPLUSPLUSFLAGS' => '-fcxx-modules'`. Add missing swift files for `IGListSwiftKit` in `IGListKit.xcodeproj` ### How to use Replace `#import <IGListDiffKit/IGListDiffKit.h>` with `import IGListDiffKit;`, because `IGListDiffKit.h` isn't exist in `modulemap/`, Or create a symbol link by `ln -sf ../IGListDiffKit.h` for support it ? ### Examples Use SwiftPM for building examples. ### Checklist - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [ ] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1546 Test Plan: Test PR showing running tests: https://github.com/TimOliver/IGListKit/actions/runs/4339956050/jobs/7578047058 Reviewed By: lorixx Differential Revision: D33592395 Pulled By: TimOliver fbshipit-source-id: 8f7b1873f2b1c6a80908bb55b123e31bea13bb0c
2023-03-07 07:29:41 +00:00
57B22E6F2502AAB20055DC2F /* IGListTransitionData.h in Headers */,
7A02CF5A2361511100B49FAE /* IGListAdapterUpdater.h in Headers */,
7A02CFA82361513600B49FAE /* UICollectionViewLayout+InteractiveReordering.h in Headers */,
7A02CF452361511100B49FAE /* IGListAdapterPerformanceDelegate.h in Headers */,
7A02D0022361513600B49FAE /* IGListSectionControllerInternal.h in Headers */,
7A02CFC92361513600B49FAE /* UICollectionView+IGListBatchUpdateData.h in Headers */,
7A02CEF12361511100B49FAE /* IGListScrollDelegate.h in Headers */,
7A02CFF62361513600B49FAE /* IGListSectionMap+DebugDescription.h in Headers */,
F18CC76A29EFBD0300DC3B9A /* IGListBindingSingleSectionController.h in Headers */,
7AD6864C23A89E7F009000DE /* IGListAdapterUpdaterHelpers.h in Headers */,
7A02CF002361511100B49FAE /* IGListCollectionView.h in Headers */,
7A02CF152361511100B49FAE /* IGListCollectionViewLayout.h in Headers */,
57B22E812502AAC40055DC2F /* IGListUpdateTransactable.h in Headers */,
7A02CF1B2361511100B49FAE /* IGListSectionController.h in Headers */,
7A02CFDE2361513600B49FAE /* IGListAdapterUpdater+DebugDescription.h in Headers */,
7A02CEFA2361511100B49FAE /* IGListDisplayDelegate.h in Headers */,
7A02CF242361511100B49FAE /* IGListAdapterUpdateListener.h in Headers */,
7A02CF9C2361513600B49FAE /* IGListCollectionViewLayoutInternal.h in Headers */,
7A02CFED2361513600B49FAE /* IGListDebuggingUtilities.h in Headers */,
7A02CEFD2361511100B49FAE /* IGListCollectionViewDelegateLayout.h in Headers */,
7A02CF272361511100B49FAE /* IGListBindable.h in Headers */,
7A02CFCF2361513600B49FAE /* IGListDebugger.h in Headers */,
7A02CF3F2361511100B49FAE /* IGListAdapterUpdaterDelegate.h in Headers */,
7A02D0082361513600B49FAE /* IGListBatchUpdateData+DebugDescription.h in Headers */,
7A02CF542361511100B49FAE /* IGListBindingSectionControllerSelectionDelegate.h in Headers */,
7A02CFCC2361513600B49FAE /* IGListBatchUpdateState.h in Headers */,
57B22E822502AAC40055DC2F /* IGListDataSourceChangeTransaction.h in Headers */,
7A02CF302361511100B49FAE /* IGListUpdatingDelegate.h in Headers */,
7A02CEF42361511100B49FAE /* IGListWorkingRangeDelegate.h in Headers */,
7A02CF092361511100B49FAE /* IGListBindingSectionControllerDataSource.h in Headers */,
7A02CF422361511100B49FAE /* IGListSingleSectionController.h in Headers */,
7A02CFE12361513600B49FAE /* IGListAdapter+DebugDescription.h in Headers */,
7A02CF032361511100B49FAE /* IGListGenericSectionController.h in Headers */,
7A02CFFC2361513600B49FAE /* IGListReloadIndexPath.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
DD31527C1DE227FA00AC9D2C /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
883797082022304E00B94676 /* BuildFile in Headers */,
7A02D0C023615CE500B49FAE /* IGListKit.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
7A02D01C2361520200B49FAE /* IGListDiffKit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 7A02D0222361520200B49FAE /* Build configuration list for PBXNativeTarget "IGListDiffKit" */;
buildPhases = (
7A02D0182361520200B49FAE /* Headers */,
7A02D0192361520200B49FAE /* Sources */,
7A02D01A2361520200B49FAE /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = IGListDiffKit;
productName = IGListDiffKit;
productReference = 7A02D01D2361520200B49FAE /* IGListDiffKit.framework */;
productType = "com.apple.product-type.framework";
};
7A02D02A2361525800B49FAE /* IGListDiffKit-tvOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 7A02D0302361525800B49FAE /* Build configuration list for PBXNativeTarget "IGListDiffKit-tvOS" */;
buildPhases = (
7A02D0262361525800B49FAE /* Headers */,
7A02D0272361525800B49FAE /* Sources */,
7A02D0282361525800B49FAE /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = "IGListDiffKit-tvOS";
productName = "IGListDiffKit-tvOS";
productReference = 7A02D02B2361525800B49FAE /* IGListDiffKit.framework */;
productType = "com.apple.product-type.framework";
};
7A02D0372361526600B49FAE /* IGListDiffKit-macOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 7A02D03D2361526600B49FAE /* Build configuration list for PBXNativeTarget "IGListDiffKit-macOS" */;
buildPhases = (
7A02D0332361526600B49FAE /* Headers */,
7A02D0342361526600B49FAE /* Sources */,
7A02D0352361526600B49FAE /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = "IGListDiffKit-macOS";
productName = "IGListDiffKit-macOS";
productReference = 7A02D0382361526600B49FAE /* IGListDiffKit.framework */;
productType = "com.apple.product-type.framework";
};
7A92EA9623A8A42000E5A13D /* IGListSwiftKit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 7A92EA9C23A8A42000E5A13D /* Build configuration list for PBXNativeTarget "IGListSwiftKit" */;
buildPhases = (
7A92EA9223A8A42000E5A13D /* Headers */,
7A92EA9323A8A42000E5A13D /* Sources */,
7A92EA9423A8A42000E5A13D /* Frameworks */,
7A92EA9523A8A42000E5A13D /* Resources */,
F105D9AE29B7193000B7F361 /* SwiftLint */,
);
buildRules = (
);
dependencies = (
7A92EAA223A8A4E700E5A13D /* PBXTargetDependency */,
);
name = IGListSwiftKit;
productName = IGListSwiftKit;
productReference = 7A92EA9723A8A42000E5A13D /* IGListSwiftKit.framework */;
productType = "com.apple.product-type.framework";
};
7A92EAA723A8A50100E5A13D /* IGListSwiftKit-tvOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 7A92EAAD23A8A50100E5A13D /* Build configuration list for PBXNativeTarget "IGListSwiftKit-tvOS" */;
buildPhases = (
7A92EAA323A8A50100E5A13D /* Headers */,
7A92EAA423A8A50100E5A13D /* Sources */,
7A92EAA523A8A50100E5A13D /* Frameworks */,
7A92EAA623A8A50100E5A13D /* Resources */,
F105D9AF29B7194300B7F361 /* SwiftLint */,
);
buildRules = (
);
dependencies = (
7A92EAB323A8A53F00E5A13D /* PBXTargetDependency */,
);
name = "IGListSwiftKit-tvOS";
productName = "IGListSwiftKit-tvOS";
productReference = 7A92EAA823A8A50100E5A13D /* IGListSwiftKit.framework */;
productType = "com.apple.product-type.framework";
};
885FE1D31DC51A0D009CE2B4 /* IGListKit-tvOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = 885FE1E91DC51A0D009CE2B4 /* Build configuration list for PBXNativeTarget "IGListKit-tvOS" */;
buildPhases = (
885FE1CF1DC51A0D009CE2B4 /* Sources */,
885FE1D01DC51A0D009CE2B4 /* Frameworks */,
885FE1D11DC51A0D009CE2B4 /* Headers */,
);
buildRules = (
);
dependencies = (
7A02D0BD23615B8B00B49FAE /* PBXTargetDependency */,
);
name = "IGListKit-tvOS";
productName = "IGListKit-tvOS";
productReference = 885FE1D41DC51A0D009CE2B4 /* IGListKit.framework */;
productType = "com.apple.product-type.framework";
};
885FE1DB1DC51A0D009CE2B4 /* IGListKit-tvOSTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 885FE1EA1DC51A0D009CE2B4 /* Build configuration list for PBXNativeTarget "IGListKit-tvOSTests" */;
buildPhases = (
885FE1D81DC51A0D009CE2B4 /* Sources */,
885FE1D91DC51A0D009CE2B4 /* Frameworks */,
885FE1DA1DC51A0D009CE2B4 /* Resources */,
);
buildRules = (
);
dependencies = (
885FE1DF1DC51A0D009CE2B4 /* PBXTargetDependency */,
);
name = "IGListKit-tvOSTests";
productName = "IGListKit-tvOSTests";
productReference = 885FE1DC1DC51A0D009CE2B4 /* IGListKit-tvOSTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
887D0B351D870D7E009E01F7 /* IGListKit */ = {
isa = PBXNativeTarget;
buildConfigurationList = 887D0B4A1D870D7F009E01F7 /* Build configuration list for PBXNativeTarget "IGListKit" */;
buildPhases = (
887D0B311D870D7E009E01F7 /* Sources */,
887D0B321D870D7E009E01F7 /* Frameworks */,
887D0B331D870D7E009E01F7 /* Headers */,
);
buildRules = (
);
dependencies = (
7A02D0B32361546300B49FAE /* PBXTargetDependency */,
);
name = IGListKit;
productName = IGListKit;
productReference = 887D0B361D870D7E009E01F7 /* IGListKit.framework */;
productType = "com.apple.product-type.framework";
};
887D0B3E1D870D7F009E01F7 /* IGListKitTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 887D0B4D1D870D7F009E01F7 /* Build configuration list for PBXNativeTarget "IGListKitTests" */;
buildPhases = (
887D0B3B1D870D7F009E01F7 /* Sources */,
887D0B3C1D870D7F009E01F7 /* Frameworks */,
887D0B3D1D870D7F009E01F7 /* Resources */,
);
buildRules = (
);
dependencies = (
887D0B421D870D7F009E01F7 /* PBXTargetDependency */,
);
name = IGListKitTests;
productName = IGListKitTests;
productReference = 887D0B3F1D870D7F009E01F7 /* IGListKitTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
88DF897B1E010E6A00B1B9B4 /* IGListKit-macOSTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 88DF89861E010E6A00B1B9B4 /* Build configuration list for PBXNativeTarget "IGListKit-macOSTests" */;
buildPhases = (
88DF89781E010E6A00B1B9B4 /* Sources */,
88DF89791E010E6A00B1B9B4 /* Frameworks */,
88DF897A1E010E6A00B1B9B4 /* Resources */,
);
buildRules = (
);
dependencies = (
88DF89831E010E6A00B1B9B4 /* PBXTargetDependency */,
);
name = "IGListKit-macOSTests";
productName = "IGListKitTests-macOS";
productReference = 88DF897C1E010E6A00B1B9B4 /* IGListKit-macOSTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
DD3152661DE227FA00AC9D2C /* IGListKit-macOS */ = {
isa = PBXNativeTarget;
buildConfigurationList = DD3152A91DE227FA00AC9D2C /* Build configuration list for PBXNativeTarget "IGListKit-macOS" */;
buildPhases = (
DD3152671DE227FA00AC9D2C /* Sources */,
DD31527B1DE227FA00AC9D2C /* Frameworks */,
DD31527C1DE227FA00AC9D2C /* Headers */,
);
buildRules = (
);
dependencies = (
7A02D0BF23615B9000B49FAE /* PBXTargetDependency */,
);
name = "IGListKit-macOS";
productName = IGListKit;
productReference = DD3152AC1DE227FA00AC9D2C /* IGListKit.framework */;
productType = "com.apple.product-type.framework";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
887D0B2D1D870D7E009E01F7 /* Project object */ = {
isa = PBXProject;
attributes = {
CLASSPREFIX = IG;
LastSwiftUpdateCheck = 1120;
LastUpgradeCheck = 0940;
ORGANIZATIONNAME = Instagram;
TargetAttributes = {
7A02D01C2361520200B49FAE = {
CreatedOnToolsVersion = 11.1;
ProvisioningStyle = Manual;
};
7A02D02A2361525800B49FAE = {
CreatedOnToolsVersion = 11.1;
ProvisioningStyle = Manual;
};
7A02D0372361526600B49FAE = {
CreatedOnToolsVersion = 11.1;
ProvisioningStyle = Manual;
};
7A92EA9623A8A42000E5A13D = {
CreatedOnToolsVersion = 11.2.1;
LastSwiftMigration = 1120;
ProvisioningStyle = Automatic;
};
7A92EAA723A8A50100E5A13D = {
CreatedOnToolsVersion = 11.2.1;
ProvisioningStyle = Automatic;
};
885FE1D31DC51A0D009CE2B4 = {
CreatedOnToolsVersion = 8.1;
ProvisioningStyle = Manual;
};
885FE1DB1DC51A0D009CE2B4 = {
CreatedOnToolsVersion = 8.1;
LastSwiftMigration = 0810;
ProvisioningStyle = Manual;
};
887D0B351D870D7E009E01F7 = {
CreatedOnToolsVersion = 8.0;
2016-10-11 19:24:47 +00:00
LastSwiftMigration = 0800;
ProvisioningStyle = Manual;
};
887D0B3E1D870D7F009E01F7 = {
CreatedOnToolsVersion = 8.0;
LastSwiftMigration = 1120;
ProvisioningStyle = Manual;
};
88DF897B1E010E6A00B1B9B4 = {
CreatedOnToolsVersion = 8.2;
LastSwiftMigration = 0820;
ProvisioningStyle = Manual;
};
DD3152661DE227FA00AC9D2C = {
ProvisioningStyle = Manual;
};
};
};
buildConfigurationList = 887D0B301D870D7E009E01F7 /* Build configuration list for PBXProject "IGListKit" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
Fix travis & upgrade cocoapods (#1317) Summary: This is a bigger PR than I'd like but there is a bunch of stuff in here that feels like we should land all at once to fix the Travis setup. Currently, there is a few things wrong. Briefly: 1. Travis is failing to even build the library (see: [build 2298](https://travis-ci.org/Instagram/IGListKit/jobs/506564900)) 2. There are legitimately failing tests 3. Travis seems to be flakey running UI tests This PR deals with the first two. The Xcode projects were not building because some recently added files weren't added to the xcodeproj (ie. 46a124ddfe9bd043f3121b69ab4afb35cb8b796c and 4662454c4aedbc5d3bed0cb386f2ef93de40ba51). Also added `Foundation.h` import for `bool` definition for `IGSystemVersion` (also a new file) The main `Podfile.lock` was already being generated via `1.5.3` (0c0b31ad7c40471c4115fb90a59c357a910a4a75) but the `Gemfile` had the wrong version and none of the example project `Podfile.lock`s were re-generated with it. Once I got the projects correctly building and tests running, I discovered there were a bunch of tests that were legitimately failing. It's unclear when these started failing and what caused it. I thought it made sense to disable these tests for now and then create Github issues to fix them as starter tasks instead of making this diff even larger.. I can create those if that sounds good. Somewhat related, it seems like the UI tests on Travis may be a bit flakey. They pass locally, but breaks on Travis [[example](https://travis-ci.com/bdotdub/IGListKit/jobs/195758250)] with error messages like `Failure requesting automation session for com.instagram.IGListKitExamples:85190` ---- - [X] All tests pass. Demo project builds and runs. - [X] I added tests, an experiment, or detailed why my change isn't tested. - [X] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [X] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1317 Reviewed By: rnystrom Differential Revision: D15157375 Pulled By: rnystrom fbshipit-source-id: b29131f59b74398b6d2b3a73453248cb3325a955
2019-05-01 22:10:31 +00:00
English,
en,
);
mainGroup = 887D0B2C1D870D7E009E01F7;
productRefGroup = 887D0B371D870D7E009E01F7 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
887D0B351D870D7E009E01F7 /* IGListKit */,
887D0B3E1D870D7F009E01F7 /* IGListKitTests */,
885FE1D31DC51A0D009CE2B4 /* IGListKit-tvOS */,
885FE1DB1DC51A0D009CE2B4 /* IGListKit-tvOSTests */,
DD3152661DE227FA00AC9D2C /* IGListKit-macOS */,
88DF897B1E010E6A00B1B9B4 /* IGListKit-macOSTests */,
7A02D01C2361520200B49FAE /* IGListDiffKit */,
7A02D02A2361525800B49FAE /* IGListDiffKit-tvOS */,
7A02D0372361526600B49FAE /* IGListDiffKit-macOS */,
7A92EA9623A8A42000E5A13D /* IGListSwiftKit */,
7A92EAA723A8A50100E5A13D /* IGListSwiftKit-tvOS */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
7A92EA9523A8A42000E5A13D /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
7A92EAA623A8A50100E5A13D /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
885FE1DA1DC51A0D009CE2B4 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
401B5E65230111F7004099D5 /* IGTestStoryboard.storyboard in Resources */,
401B5E64230111F3004099D5 /* IGTestNibSupplementaryView.xib in Resources */,
401B5E63230111EC004099D5 /* IGTestNibCell.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
887D0B3D1D870D7F009E01F7 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
2914BEE91DCD15F400C96401 /* IGTestNibSupplementaryView.xib in Resources */,
29EA6C491DB43A8000957A88 /* IGTestNibCell.xib in Resources */,
821BC4C41DB8CEF800172ED0 /* IGTestStoryboard.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
88DF897A1E010E6A00B1B9B4 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
F105D9AE29B7193000B7F361 /* SwiftLint */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
name = SwiftLint;
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "scripts/lint.sh\n";
};
F105D9AF29B7194300B7F361 /* SwiftLint */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
);
name = SwiftLint;
outputFileListPaths = (
);
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "scripts/lint.sh\n";
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
7A02D0192361520200B49FAE /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
7A02D06D2361529F00B49FAE /* NSString+IGListDiffable.m in Sources */,
7A02D0912361529F00B49FAE /* IGListMoveIndex.m in Sources */,
7A02D08E2361529F00B49FAE /* IGListIndexSetResult.m in Sources */,
7A02D09D2361529F00B49FAE /* IGListBatchUpdateData.mm in Sources */,
7A02D0852361529F00B49FAE /* IGListDiff.mm in Sources */,
7A02D0972361529F00B49FAE /* IGListMoveIndexPath.m in Sources */,
7A02D08B2361529F00B49FAE /* IGListIndexPathResult.m in Sources */,
7A02D05E2361529F00B49FAE /* NSNumber+IGListDiffable.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
7A02D0272361525800B49FAE /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
7A02D06E2361529F00B49FAE /* NSString+IGListDiffable.m in Sources */,
7A02D0922361529F00B49FAE /* IGListMoveIndex.m in Sources */,
7A02D08F2361529F00B49FAE /* IGListIndexSetResult.m in Sources */,
7A02D09E2361529F00B49FAE /* IGListBatchUpdateData.mm in Sources */,
7A02D0862361529F00B49FAE /* IGListDiff.mm in Sources */,
7A02D0982361529F00B49FAE /* IGListMoveIndexPath.m in Sources */,
7A02D08C2361529F00B49FAE /* IGListIndexPathResult.m in Sources */,
7A02D05F2361529F00B49FAE /* NSNumber+IGListDiffable.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
7A02D0342361526600B49FAE /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
7A02D06F2361529F00B49FAE /* NSString+IGListDiffable.m in Sources */,
7A02D0932361529F00B49FAE /* IGListMoveIndex.m in Sources */,
7A02D0902361529F00B49FAE /* IGListIndexSetResult.m in Sources */,
7A02D09F2361529F00B49FAE /* IGListBatchUpdateData.mm in Sources */,
7A02D0872361529F00B49FAE /* IGListDiff.mm in Sources */,
7A02D0992361529F00B49FAE /* IGListMoveIndexPath.m in Sources */,
7A02D08D2361529F00B49FAE /* IGListIndexPathResult.m in Sources */,
7A02D0602361529F00B49FAE /* NSNumber+IGListDiffable.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
7A92EA9323A8A42000E5A13D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
Improve SwiftPM support (#1546) Summary: This diff imports and refines the PR made by cntrump on GitHub. The PR introduces the following: * Sample apps now use SPM instead of CocoaPods to import IGListKit. * Adds Mac Catalyst as an example target. * Adds C++ flags to the CocoaPods specs. * Fixes a script issue that was discovered when regenerating the symlinks. The PR originally aimed to remove the need for symlinked references to the IGListKit and IGListDiffKit source files, but in testing, I couldn't get it working. It's possible SPM being too strict [on where the headers can be placed to be discovered](https://forums.swift.org/t/how-do-i-specify-the-headers-directory-for-a-objc-target-in-swift-package-managers-package-swift/58531/3). Additionally, another issue was that the original PR changed all of the `#import` statements to the the modular `import` statements, which is fine for the sample apps, but ended up breaking compatibility for any apps that had modules disabled. ## Changes in this pull request Improve SwiftPM support: Build module `IGListDiffKit` and `IGListKit` as Objective-C++. module `IGListDiffKit`: - Source/IGListDiffKit - module defined in `Source/IGListDiffKit/modulemap/module.modulemap` - requires `-fmodules` and `-fcxx-modules` module `IGListKit`: - depend on `IGListDiffKit`, use `import IGListDiffKit;` - Source/IGListKit - module defined in `Source/IGListKit/modulemap/module.modulemap` - requires `-fmodules` and `-fcxx-modules` module `IGListSwiftKit`: - depend on `IGListKit`, use `import IGListKit` - Source/IGListSwiftKit Deleted `spm/` and `scripts/generate_spm_sources_layout.sh`, it is unnecessary. Updated `.podspec`, add `'OTHER_CFLAGS' => '-fmodules'` and `'OTHER_CPLUSPLUSFLAGS' => '-fcxx-modules'`. Add missing swift files for `IGListSwiftKit` in `IGListKit.xcodeproj` ### How to use Replace `#import <IGListDiffKit/IGListDiffKit.h>` with `import IGListDiffKit;`, because `IGListDiffKit.h` isn't exist in `modulemap/`, Or create a symbol link by `ln -sf ../IGListDiffKit.h` for support it ? ### Examples Use SwiftPM for building examples. ### Checklist - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [ ] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1546 Test Plan: Test PR showing running tests: https://github.com/TimOliver/IGListKit/actions/runs/4339956050/jobs/7578047058 Reviewed By: lorixx Differential Revision: D33592395 Pulled By: TimOliver fbshipit-source-id: 8f7b1873f2b1c6a80908bb55b123e31bea13bb0c
2023-03-07 07:29:41 +00:00
BA4A65242760278F00FA5750 /* ListValueSectionController.swift in Sources */,
BA4A65262760278F00FA5750 /* ListIdentifiable.swift in Sources */,
7AEA8E5D25BF715C00971591 /* IGListSingleSectionController+Refinements.swift in Sources */,
7A92EAA023A8A43D00E5A13D /* IGListCollectionContext+Refinements.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
7A92EAA423A8A50100E5A13D /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
Improve SwiftPM support (#1546) Summary: This diff imports and refines the PR made by cntrump on GitHub. The PR introduces the following: * Sample apps now use SPM instead of CocoaPods to import IGListKit. * Adds Mac Catalyst as an example target. * Adds C++ flags to the CocoaPods specs. * Fixes a script issue that was discovered when regenerating the symlinks. The PR originally aimed to remove the need for symlinked references to the IGListKit and IGListDiffKit source files, but in testing, I couldn't get it working. It's possible SPM being too strict [on where the headers can be placed to be discovered](https://forums.swift.org/t/how-do-i-specify-the-headers-directory-for-a-objc-target-in-swift-package-managers-package-swift/58531/3). Additionally, another issue was that the original PR changed all of the `#import` statements to the the modular `import` statements, which is fine for the sample apps, but ended up breaking compatibility for any apps that had modules disabled. ## Changes in this pull request Improve SwiftPM support: Build module `IGListDiffKit` and `IGListKit` as Objective-C++. module `IGListDiffKit`: - Source/IGListDiffKit - module defined in `Source/IGListDiffKit/modulemap/module.modulemap` - requires `-fmodules` and `-fcxx-modules` module `IGListKit`: - depend on `IGListDiffKit`, use `import IGListDiffKit;` - Source/IGListKit - module defined in `Source/IGListKit/modulemap/module.modulemap` - requires `-fmodules` and `-fcxx-modules` module `IGListSwiftKit`: - depend on `IGListKit`, use `import IGListKit` - Source/IGListSwiftKit Deleted `spm/` and `scripts/generate_spm_sources_layout.sh`, it is unnecessary. Updated `.podspec`, add `'OTHER_CFLAGS' => '-fmodules'` and `'OTHER_CPLUSPLUSFLAGS' => '-fcxx-modules'`. Add missing swift files for `IGListSwiftKit` in `IGListKit.xcodeproj` ### How to use Replace `#import <IGListDiffKit/IGListDiffKit.h>` with `import IGListDiffKit;`, because `IGListDiffKit.h` isn't exist in `modulemap/`, Or create a symbol link by `ln -sf ../IGListDiffKit.h` for support it ? ### Examples Use SwiftPM for building examples. ### Checklist - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [ ] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1546 Test Plan: Test PR showing running tests: https://github.com/TimOliver/IGListKit/actions/runs/4339956050/jobs/7578047058 Reviewed By: lorixx Differential Revision: D33592395 Pulled By: TimOliver fbshipit-source-id: 8f7b1873f2b1c6a80908bb55b123e31bea13bb0c
2023-03-07 07:29:41 +00:00
BA4A65252760278F00FA5750 /* ListValueSectionController.swift in Sources */,
BA4A65272760278F00FA5750 /* ListIdentifiable.swift in Sources */,
7AEA8E5E25BF715C00971591 /* IGListSingleSectionController+Refinements.swift in Sources */,
7A92EAB123A8A50C00E5A13D /* IGListCollectionContext+Refinements.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
885FE1CF1DC51A0D009CE2B4 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
0A8928F926CDA521003FABD8 /* IGListUpdateTransactionBuilder.m in Sources */,
0A8928FF26CDA62C003FABD8 /* IGListBatchUpdateTransaction.m in Sources */,
0A89290226CDA672003FABD8 /* IGListItemUpdatesCollector.m in Sources */,
7A02CF492361511100B49FAE /* IGListSingleSectionController.m in Sources */,
0A8928FC26CDA5BD003FABD8 /* IGListReloadTransaction.m in Sources */,
7A02CF132361511100B49FAE /* IGListGenericSectionController.m in Sources */,
7A02CFA62361513600B49FAE /* UICollectionView+IGListBatchUpdateData.m in Sources */,
7A02CFC42361513600B49FAE /* UICollectionView+DebugDescription.m in Sources */,
0A8928FD26CDA5E1003FABD8 /* IGListDataSourceChangeTransaction.m in Sources */,
7A02CFBE2361513600B49FAE /* IGListAdapterUpdater+DebugDescription.m in Sources */,
7A02CFAC2361513600B49FAE /* IGListReloadIndexPath.m in Sources */,
7A02CF5E2361511100B49FAE /* IGListSectionController.m in Sources */,
7A02D00C2361513600B49FAE /* IGListSectionMap+DebugDescription.m in Sources */,
7A02CF612361511100B49FAE /* IGListCollectionView.m in Sources */,
7A02CFBB2361513600B49FAE /* IGListAdapterProxy.m in Sources */,
7A02CFF42361513600B49FAE /* IGListAdapter+UICollectionView.m in Sources */,
7A02CF3A2361511100B49FAE /* IGListCollectionViewLayout.mm in Sources */,
7A02CF2B2361511100B49FAE /* IGListReloadDataUpdater.m in Sources */,
7A02CFF12361513600B49FAE /* IGListBindingSectionController+DebugDescription.m in Sources */,
F18CC76D29EFBD0300DC3B9A /* IGListBindingSingleSectionController.m in Sources */,
7A02CFFA2361513600B49FAE /* IGListWorkingRangeHandler.mm in Sources */,
E03DEA8F255C9AB200ACCAFC /* IGListTransitionData.m in Sources */,
7A02CFB22361513600B49FAE /* UIScrollView+IGListKit.m in Sources */,
7A02CF582361511100B49FAE /* IGListBindingSectionController.m in Sources */,
7A02CFE52361513600B49FAE /* IGListDisplayHandler.m in Sources */,
7A02CFC72361513600B49FAE /* IGListSectionMap.m in Sources */,
7A02D0002361513600B49FAE /* IGListDebugger.m in Sources */,
7A02CF342361511100B49FAE /* IGListAdapterUpdater.m in Sources */,
7A02D0062361513600B49FAE /* IGListDebuggingUtilities.m in Sources */,
7A02CF522361511100B49FAE /* IGListAdapter.m in Sources */,
7A02CF942361513600B49FAE /* IGListAdapter+DebugDescription.m in Sources */,
7A92EAB523A8A5FF00E5A13D /* IGListAdapterUpdaterHelpers.m in Sources */,
7A02CFD92361513600B49FAE /* IGListBatchUpdateData+DebugDescription.m in Sources */,
7A02CFAF2361513600B49FAE /* UICollectionViewLayout+InteractiveReordering.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
885FE1D81DC51A0D009CE2B4 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
298DDA381E3B168E00F76F50 /* IGLayoutTestItem.m in Sources */,
885FE2311DC51B76009CE2B4 /* IGListDisplayHandlerTests.m in Sources */,
298DDA3B1E3B16F800F76F50 /* IGLayoutTestDataSource.m in Sources */,
29C474901DDF460500AE68CE /* IGListSectionMapTests.m in Sources */,
29C579321DE0DA8A003A149B /* IGTestStoryboardSupplementarySource.m in Sources */,
298DDA131E3AE3F100F76F50 /* IGTestDiffingDataSource.m in Sources */,
F1ED68B329E9B3B9003744F8 /* IGListInteractiveMovingTests.m in Sources */,
F18CC76029EFBBB300DC3B9A /* IGListBindingSingleSectionControllerTests.m in Sources */,
F18CC76729EFBC3800DC3B9A /* IGListReloadDataUpdaterTests.m in Sources */,
29C5792F1DE0DA8A003A149B /* IGListTestAdapterStoryboardDataSource.m in Sources */,
885FE23B1DC51B86009CE2B4 /* IGListTestUICollectionViewDataSource.m in Sources */,
885FE23D1DC51B86009CE2B4 /* IGTestDelegateController.m in Sources */,
298DDA251E3B15EE00F76F50 /* IGListCollectionViewLayoutTests.m in Sources */,
885FE22B1DC51B76009CE2B4 /* IGListAdapterE2ETests.m in Sources */,
885FE2331DC51B76009CE2B4 /* IGListSingleSectionControllerTests.m in Sources */,
Interactive Reordering Summary: I had a desire for interactive reordering in a personal project, so here's a first attempt at adding support in IGListKit. I figured I might as well get a WIP PR up for comments before I continue further as there are a few aspects to interactive reordering that don't interplay perfectly with IGListKit. As discussed in #291, I went after two prime use cases: 1. Moving items amongst a section 2. Rearranging whole sections I also "disabled" moving items between sections by having those moves revert, to mimic interactive reordering cancellation as closely as possible. You can see both in the Mixed Data example. Grid items can be moved within a section, while users can be moved to reorder whole sections. But trying to move a grid item out of a grid or a user item into a grid will auto-revert. The revert animation isn't as tight as it should be. It may be more desirable to disable the animation - though you lose the visual cue. There is a also a new example, `ReorderableViewController`, that demonstrates 2 in its pure form (likely the most desired use case), where all sections are reorderable single rows. Happy to take feedback -- this is my first experience working on IGListKit, so I would expect there to be gaps. (Ex. I haven't used `IGListStackedSectionController`, and its tests failed as I hadn't implemented reordering delegates for it. Those are simply stubbed out for now.) Issue fixed: #291 - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [x] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) - [x] Proper support in `IGListStackedSectionController` Closes https://github.com/Instagram/IGListKit/pull/976 Differential Revision: D6674493 Pulled By: rnystrom fbshipit-source-id: cd53c5fdc6fb59636edc4747c4bbd0f81a4610e5
2018-02-12 17:09:26 +00:00
13DF01741FA0FD400092A320 /* IGListTestAdapterReorderingDataSource.m in Sources */,
E56B7B3520A9D7100071010C /* IGListCollectionScrollingTraitsTests.m in Sources */,
29C579311DE0DA8A003A149B /* IGTestNibSupplementaryView.m in Sources */,
Interactive Reordering Summary: I had a desire for interactive reordering in a personal project, so here's a first attempt at adding support in IGListKit. I figured I might as well get a WIP PR up for comments before I continue further as there are a few aspects to interactive reordering that don't interplay perfectly with IGListKit. As discussed in #291, I went after two prime use cases: 1. Moving items amongst a section 2. Rearranging whole sections I also "disabled" moving items between sections by having those moves revert, to mimic interactive reordering cancellation as closely as possible. You can see both in the Mixed Data example. Grid items can be moved within a section, while users can be moved to reorder whole sections. But trying to move a grid item out of a grid or a user item into a grid will auto-revert. The revert animation isn't as tight as it should be. It may be more desirable to disable the animation - though you lose the visual cue. There is a also a new example, `ReorderableViewController`, that demonstrates 2 in its pure form (likely the most desired use case), where all sections are reorderable single rows. Happy to take feedback -- this is my first experience working on IGListKit, so I would expect there to be gaps. (Ex. I haven't used `IGListStackedSectionController`, and its tests failed as I hadn't implemented reordering delegates for it. Those are simply stubbed out for now.) Issue fixed: #291 - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [x] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) - [x] Proper support in `IGListStackedSectionController` Closes https://github.com/Instagram/IGListKit/pull/976 Differential Revision: D6674493 Pulled By: rnystrom fbshipit-source-id: cd53c5fdc6fb59636edc4747c4bbd0f81a4610e5
2018-02-12 17:09:26 +00:00
13DF01781FA1000E0092A320 /* IGTestReorderableSection.m in Sources */,
885FE23C1DC51B86009CE2B4 /* IGTestCell.m in Sources */,
298DDA001E3AE28000F76F50 /* IGTestDiffingObject.m in Sources */,
29C579331DE0DA8A003A149B /* IGTestStoryboardSupplementaryView.m in Sources */,
Fix #1275 layouts inconsistency in `updateAnimated:completion` of IGListBindingSectionController (#1285) Summary: ## Changes in this pull request Issue fixed: https://github.com/Instagram/IGListKit/issues/1275 This PR is straintforward solution as mentioned in https://github.com/Instagram/IGListKit/issues/1275. When I finished it, I realized that it is not a problem in `IGListCollectionViewLayout Partial Optimization` and `IGListBindingSectionController` deserved it. Maybe `IGListCollectionViewLayout` is rarely used because of great builtin UICollectionViewFlowLayout or cells in section rarely need changing their sizes in practices. Despite it is not `IGListCollectionViewLayout`'s fault, I think it can be more optimized against `invalidateLayoutWithContext`. I would like to make an another PR to optimize it. Due to this PR just giving a proposed solution, it lacks of adding tests and changing log. When this solution is accepted, I would like to complete these todos. ### Checklist - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [x] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1285 Reviewed By: candance Differential Revision: D15592807 Pulled By: lorixx fbshipit-source-id: ae06abce896341509de4f3dfb73b3a7bc0a68c51
2019-06-12 05:25:14 +00:00
16B71CF022B0A08400FE96ED /* IGTestInvalidateLayoutObject.m in Sources */,
F1ED68BB29E9B40A003744F8 /* IGListGenericSectionControllerTests.m in Sources */,
Fix #1275 layouts inconsistency in `updateAnimated:completion` of IGListBindingSectionController (#1285) Summary: ## Changes in this pull request Issue fixed: https://github.com/Instagram/IGListKit/issues/1275 This PR is straintforward solution as mentioned in https://github.com/Instagram/IGListKit/issues/1275. When I finished it, I realized that it is not a problem in `IGListCollectionViewLayout Partial Optimization` and `IGListBindingSectionController` deserved it. Maybe `IGListCollectionViewLayout` is rarely used because of great builtin UICollectionViewFlowLayout or cells in section rarely need changing their sizes in practices. Despite it is not `IGListCollectionViewLayout`'s fault, I think it can be more optimized against `invalidateLayoutWithContext`. I would like to make an another PR to optimize it. Due to this PR just giving a proposed solution, it lacks of adding tests and changing log. When this solution is accepted, I would like to complete these todos. ### Checklist - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [x] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1285 Reviewed By: candance Differential Revision: D15592807 Pulled By: lorixx fbshipit-source-id: ae06abce896341509de4f3dfb73b3a7bc0a68c51
2019-06-12 05:25:14 +00:00
16B71CEC22B0A08400FE96ED /* IGTestInvalidateLayoutSectionController.m in Sources */,
2995409F1F588C9500F647CF /* IGTestBindingWithoutDeselectionDelegate.m in Sources */,
885FE2401DC51B86009CE2B4 /* IGTestSingleItemDataSource.m in Sources */,
885FE2451DC51B86009CE2B4 /* IGTestStoryboardCell.m in Sources */,
F1E6302429EA43080060B4D6 /* IGListSectionControllerTests.m in Sources */,
Fix #1275 layouts inconsistency in `updateAnimated:completion` of IGListBindingSectionController (#1285) Summary: ## Changes in this pull request Issue fixed: https://github.com/Instagram/IGListKit/issues/1275 This PR is straintforward solution as mentioned in https://github.com/Instagram/IGListKit/issues/1275. When I finished it, I realized that it is not a problem in `IGListCollectionViewLayout Partial Optimization` and `IGListBindingSectionController` deserved it. Maybe `IGListCollectionViewLayout` is rarely used because of great builtin UICollectionViewFlowLayout or cells in section rarely need changing their sizes in practices. Despite it is not `IGListCollectionViewLayout`'s fault, I think it can be more optimized against `invalidateLayoutWithContext`. I would like to make an another PR to optimize it. Due to this PR just giving a proposed solution, it lacks of adding tests and changing log. When this solution is accepted, I would like to complete these todos. ### Checklist - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [x] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1285 Reviewed By: candance Differential Revision: D15592807 Pulled By: lorixx fbshipit-source-id: ae06abce896341509de4f3dfb73b3a7bc0a68c51
2019-06-12 05:25:14 +00:00
16B71CEE22B0A08400FE96ED /* IGTestInvalidateLayoutDataSource.m in Sources */,
298DD9CF1E3ADD1400F76F50 /* IGListBindingSectionControllerTests.m in Sources */,
885FE22F1DC51B76009CE2B4 /* IGListDiffSwiftTests.swift in Sources */,
885FE23F1DC51B86009CE2B4 /* IGTestObject.m in Sources */,
F1ED68B929E9B3B9003744F8 /* IGListSingleSectionControllerTests.m in Sources */,
F1855A4D29BC565600558D18 /* IGListDiffDescriptionStringTests.m in Sources */,
828540511DE40D2D00118B94 /* IGListTestAdapterHorizontalDataSource.m in Sources */,
885FE2371DC51B76009CE2B4 /* IGListWorkingRangeHandlerTests.m in Sources */,
8285404D1DE40C6E00118B94 /* IGListTestHorizontalSection.m in Sources */,
298DDA061E3AE2B000F76F50 /* IGTestNumberBindableCell.m in Sources */,
885FE2381DC51B86009CE2B4 /* IGListTestAdapterDataSource.m in Sources */,
F1ED68B529E9B3B9003744F8 /* IGListDebugDescriptionTests.m in Sources */,
885FE2341DC51B76009CE2B4 /* IGListSingleNibItemControllerTests.m in Sources */,
885FE2391DC51B86009CE2B4 /* IGListTestOffsettingLayout.m in Sources */,
29C4748F1DDF460500AE68CE /* IGListDiffResultTests.m in Sources */,
F1ED68B729E9B3B9003744F8 /* IGListTransactionTests.m in Sources */,
F1ED68BE29E9B41A003744F8 /* IGListContentInsetTests.m in Sources */,
885FE2421DC51B86009CE2B4 /* IGTestSingleStoryboardItemDataSource.m in Sources */,
885FE2301DC51B76009CE2B4 /* IGListDiffTests.m in Sources */,
885FE22E1DC51B76009CE2B4 /* IGListBatchUpdateDataTests.m in Sources */,
298DDA3C1E3B170300F76F50 /* IGLayoutTestSection.m in Sources */,
298DDA0A1E3AE31E00F76F50 /* IGTestDiffingSectionController.m in Sources */,
29C4748D1DDF45F900AE68CE /* IGListAdapterProxyTests.m in Sources */,
82914C5C1E6E2DEC0066C2F8 /* IGListTestContainerSizeSection.m in Sources */,
88379729202236AC00B94676 /* IGListAdapterUpdateTester.m in Sources */,
29DA5CA81EA7D37000113926 /* IGListTestCase.m in Sources */,
F18CC76429EFBBE200DC3B9A /* IGTestBindingSingleItemDataSource.m in Sources */,
F18CC75D29EFBB9400DC3B9A /* IGListCollectionViewTests.m in Sources */,
885FE22C1DC51B76009CE2B4 /* IGListAdapterTests.m in Sources */,
298DDA051E3AE2B000F76F50 /* IGTestStringBindableCell.m in Sources */,
885FE22D1DC51B76009CE2B4 /* IGListAdapterUpdaterTests.m in Sources */,
885FE2351DC51B76009CE2B4 /* IGListSingleStoryboardItemControllerTests.m in Sources */,
29C4748E1DDF460500AE68CE /* IGListAdapterStoryboardTests.m in Sources */,
885FE2411DC51B86009CE2B4 /* IGTestSingleNibItemDataSource.m in Sources */,
6A9EB3621F841E5D0070C572 /* IGTestSingleWithoutDeselectionDelegate.m in Sources */,
885FE2461DC51B86009CE2B4 /* IGTestSupplementarySource.m in Sources */,
885FE2431DC51B86009CE2B4 /* IGTestStoryboardViewController.m in Sources */,
F1ED68BC29E9B411003744F8 /* IGListDebuggerTests.m in Sources */,
885FE23A1DC51B86009CE2B4 /* IGListTestSection.m in Sources */,
29C579301DE0DA8A003A149B /* IGListTestStoryboardSection.m in Sources */,
885FE23E1DC51B86009CE2B4 /* IGTestDelegateDataSource.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
887D0B311D870D7E009E01F7 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
7A02CF482361511100B49FAE /* IGListSingleSectionController.m in Sources */,
57B22E872502AAC40055DC2F /* IGListDataSourceChangeTransaction.m in Sources */,
7A02CF122361511100B49FAE /* IGListGenericSectionController.m in Sources */,
7A02CFA52361513600B49FAE /* UICollectionView+IGListBatchUpdateData.m in Sources */,
57B22E832502AAC40055DC2F /* IGListItemUpdatesCollector.m in Sources */,
7A02CFC32361513600B49FAE /* UICollectionView+DebugDescription.m in Sources */,
7A02CFBD2361513600B49FAE /* IGListAdapterUpdater+DebugDescription.m in Sources */,
7A02CFAB2361513600B49FAE /* IGListReloadIndexPath.m in Sources */,
7A02CF5D2361511100B49FAE /* IGListSectionController.m in Sources */,
7A02D00B2361513600B49FAE /* IGListSectionMap+DebugDescription.m in Sources */,
7A02CF602361511100B49FAE /* IGListCollectionView.m in Sources */,
7A02CFBA2361513600B49FAE /* IGListAdapterProxy.m in Sources */,
57B22E8C2502AAC40055DC2F /* IGListReloadTransaction.m in Sources */,
7A02CFF32361513600B49FAE /* IGListAdapter+UICollectionView.m in Sources */,
7A02CF392361511100B49FAE /* IGListCollectionViewLayout.mm in Sources */,
57B22E7F2502AAC40055DC2F /* IGListBatchUpdateTransaction.m in Sources */,
57B22E802502AAC40055DC2F /* IGListUpdateTransactionBuilder.m in Sources */,
7A02CF2A2361511100B49FAE /* IGListReloadDataUpdater.m in Sources */,
7A02CFF02361513600B49FAE /* IGListBindingSectionController+DebugDescription.m in Sources */,
F18CC76C29EFBD0300DC3B9A /* IGListBindingSingleSectionController.m in Sources */,
7A02CFF92361513600B49FAE /* IGListWorkingRangeHandler.mm in Sources */,
57B22E6C2502AAB20055DC2F /* IGListTransitionData.m in Sources */,
7A02CFB12361513600B49FAE /* UIScrollView+IGListKit.m in Sources */,
7A02CF572361511100B49FAE /* IGListBindingSectionController.m in Sources */,
7A02CFE42361513600B49FAE /* IGListDisplayHandler.m in Sources */,
7A02CFC62361513600B49FAE /* IGListSectionMap.m in Sources */,
7A02CFFF2361513600B49FAE /* IGListDebugger.m in Sources */,
7A02CF332361511100B49FAE /* IGListAdapterUpdater.m in Sources */,
7A02D0052361513600B49FAE /* IGListDebuggingUtilities.m in Sources */,
7A02CF512361511100B49FAE /* IGListAdapter.m in Sources */,
7A02CF932361513600B49FAE /* IGListAdapter+DebugDescription.m in Sources */,
7AD6864B23A89E7F009000DE /* IGListAdapterUpdaterHelpers.m in Sources */,
7A02CFD82361513600B49FAE /* IGListBatchUpdateData+DebugDescription.m in Sources */,
7A02CFAE2361513600B49FAE /* UICollectionViewLayout+InteractiveReordering.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
887D0B3B1D870D7F009E01F7 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
298DDA391E3B168F00F76F50 /* IGLayoutTestItem.m in Sources */,
Interactive Reordering Summary: I had a desire for interactive reordering in a personal project, so here's a first attempt at adding support in IGListKit. I figured I might as well get a WIP PR up for comments before I continue further as there are a few aspects to interactive reordering that don't interplay perfectly with IGListKit. As discussed in #291, I went after two prime use cases: 1. Moving items amongst a section 2. Rearranging whole sections I also "disabled" moving items between sections by having those moves revert, to mimic interactive reordering cancellation as closely as possible. You can see both in the Mixed Data example. Grid items can be moved within a section, while users can be moved to reorder whole sections. But trying to move a grid item out of a grid or a user item into a grid will auto-revert. The revert animation isn't as tight as it should be. It may be more desirable to disable the animation - though you lose the visual cue. There is a also a new example, `ReorderableViewController`, that demonstrates 2 in its pure form (likely the most desired use case), where all sections are reorderable single rows. Happy to take feedback -- this is my first experience working on IGListKit, so I would expect there to be gaps. (Ex. I haven't used `IGListStackedSectionController`, and its tests failed as I hadn't implemented reordering delegates for it. Those are simply stubbed out for now.) Issue fixed: #291 - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [x] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) - [x] Proper support in `IGListStackedSectionController` Closes https://github.com/Instagram/IGListKit/pull/976 Differential Revision: D6674493 Pulled By: rnystrom fbshipit-source-id: cd53c5fdc6fb59636edc4747c4bbd0f81a4610e5
2018-02-12 17:09:26 +00:00
13DF01731FA0FD400092A320 /* IGListTestAdapterReorderingDataSource.m in Sources */,
88144F181D870EDC007C7F66 /* IGTestDelegateController.m in Sources */,
290DF3771E9323E6009FE456 /* IGListDebuggerTests.m in Sources */,
298DDA3A1E3B16F600F76F50 /* IGLayoutTestDataSource.m in Sources */,
88144F0D1D870EDC007C7F66 /* IGListDisplayHandlerTests.m in Sources */,
298DDA141E3AE3F300F76F50 /* IGTestDiffingDataSource.m in Sources */,
8240C7F51DC2D99300B3AAE7 /* IGTestStoryboardSupplementarySource.m in Sources */,
88144F1B1D870EDC007C7F66 /* IGTestSingleItemDataSource.m in Sources */,
F1E6302329EA43080060B4D6 /* IGListSectionControllerTests.m in Sources */,
88144F171D870EDC007C7F66 /* IGTestCell.m in Sources */,
298DDA241E3B15EE00F76F50 /* IGListCollectionViewLayoutTests.m in Sources */,
821BC4C01DB8C9D500172ED0 /* IGListSingleStoryboardItemControllerTests.m in Sources */,
294AC6321DDE4C19002FCE5D /* IGListDiffResultTests.m in Sources */,
88144F141D870EDC007C7F66 /* IGListTestOffsettingLayout.m in Sources */,
8240C7FB1DC2F6CF00B3AAE7 /* IGListTestAdapterStoryboardDataSource.m in Sources */,
298DDA011E3AE28000F76F50 /* IGTestDiffingObject.m in Sources */,
88144F131D870EDC007C7F66 /* IGListTestAdapterDataSource.m in Sources */,
88144F071D870EDC007C7F66 /* IGListAdapterE2ETests.m in Sources */,
F1ED68BA29E9B404003744F8 /* IGListInteractiveMovingTests.m in Sources */,
88144F1A1D870EDC007C7F66 /* IGTestObject.m in Sources */,
F1ED68BF29E9B443003744F8 /* IGListTransactionTests.m in Sources */,
298DD9CE1E3ADD1400F76F50 /* IGListBindingSectionControllerTests.m in Sources */,
88144F0B1D870EDC007C7F66 /* IGListDiffSwiftTests.swift in Sources */,
F18CC75F29EFBBB300DC3B9A /* IGListBindingSingleSectionControllerTests.m in Sources */,
88144F191D870EDC007C7F66 /* IGTestDelegateDataSource.m in Sources */,
828540501DE40D2D00118B94 /* IGListTestAdapterHorizontalDataSource.m in Sources */,
88144F0C1D870EDC007C7F66 /* IGListDiffTests.m in Sources */,
8285404C1DE40C6E00118B94 /* IGListTestHorizontalSection.m in Sources */,
298DDA081E3AE2B100F76F50 /* IGTestNumberBindableCell.m in Sources */,
2995409E1F588C9400F647CF /* IGTestBindingWithoutDeselectionDelegate.m in Sources */,
88144F0A1D870EDC007C7F66 /* IGListBatchUpdateDataTests.m in Sources */,
26271C8C1DAE96740073E116 /* IGListSingleNibItemControllerTests.m in Sources */,
29DA5CA31EA7C72400113926 /* IGListGenericSectionControllerTests.m in Sources */,
Interactive Reordering Summary: I had a desire for interactive reordering in a personal project, so here's a first attempt at adding support in IGListKit. I figured I might as well get a WIP PR up for comments before I continue further as there are a few aspects to interactive reordering that don't interplay perfectly with IGListKit. As discussed in #291, I went after two prime use cases: 1. Moving items amongst a section 2. Rearranging whole sections I also "disabled" moving items between sections by having those moves revert, to mimic interactive reordering cancellation as closely as possible. You can see both in the Mixed Data example. Grid items can be moved within a section, while users can be moved to reorder whole sections. But trying to move a grid item out of a grid or a user item into a grid will auto-revert. The revert animation isn't as tight as it should be. It may be more desirable to disable the animation - though you lose the visual cue. There is a also a new example, `ReorderableViewController`, that demonstrates 2 in its pure form (likely the most desired use case), where all sections are reorderable single rows. Happy to take feedback -- this is my first experience working on IGListKit, so I would expect there to be gaps. (Ex. I haven't used `IGListStackedSectionController`, and its tests failed as I hadn't implemented reordering delegates for it. Those are simply stubbed out for now.) Issue fixed: #291 - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [x] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) - [x] Proper support in `IGListStackedSectionController` Closes https://github.com/Instagram/IGListKit/pull/976 Differential Revision: D6674493 Pulled By: rnystrom fbshipit-source-id: cd53c5fdc6fb59636edc4747c4bbd0f81a4610e5
2018-02-12 17:09:26 +00:00
13DF01771FA1000E0092A320 /* IGTestReorderableSection.m in Sources */,
829D7BAA1DD1819000549816 /* IGListSectionMapTests.m in Sources */,
F1ED68BD29E9B415003744F8 /* IGListDebugDescriptionTests.m in Sources */,
E56B7B3420A9D7100071010C /* IGListCollectionScrollingTraitsTests.m in Sources */,
Fix #1275 layouts inconsistency in `updateAnimated:completion` of IGListBindingSectionController (#1285) Summary: ## Changes in this pull request Issue fixed: https://github.com/Instagram/IGListKit/issues/1275 This PR is straintforward solution as mentioned in https://github.com/Instagram/IGListKit/issues/1275. When I finished it, I realized that it is not a problem in `IGListCollectionViewLayout Partial Optimization` and `IGListBindingSectionController` deserved it. Maybe `IGListCollectionViewLayout` is rarely used because of great builtin UICollectionViewFlowLayout or cells in section rarely need changing their sizes in practices. Despite it is not `IGListCollectionViewLayout`'s fault, I think it can be more optimized against `invalidateLayoutWithContext`. I would like to make an another PR to optimize it. Due to this PR just giving a proposed solution, it lacks of adding tests and changing log. When this solution is accepted, I would like to complete these todos. ### Checklist - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [x] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1285 Reviewed By: candance Differential Revision: D15592807 Pulled By: lorixx fbshipit-source-id: ae06abce896341509de4f3dfb73b3a7bc0a68c51
2019-06-12 05:25:14 +00:00
16B71CEB22B0A08400FE96ED /* IGTestInvalidateLayoutSectionController.m in Sources */,
29C5792E1DE0DA89003A149B /* IGTestNibSupplementaryView.m in Sources */,
88144F101D870EDC007C7F66 /* IGListSingleSectionControllerTests.m in Sources */,
88144F121D870EDC007C7F66 /* IGListWorkingRangeHandlerTests.m in Sources */,
F1855A4C29BC565600558D18 /* IGListDiffDescriptionStringTests.m in Sources */,
821BC4D31DB981AB00172ED0 /* IGTestSingleStoryboardItemDataSource.m in Sources */,
298DDA3D1E3B170400F76F50 /* IGLayoutTestSection.m in Sources */,
298DDA091E3AE31D00F76F50 /* IGTestDiffingSectionController.m in Sources */,
88144F151D870EDC007C7F66 /* IGListTestSection.m in Sources */,
82914C5B1E6E2DEC0066C2F8 /* IGListTestContainerSizeSection.m in Sources */,
29DA5CA71EA7D37000113926 /* IGListTestCase.m in Sources */,
88144F1D1D870EDC007C7F66 /* IGTestSupplementarySource.m in Sources */,
F18CC76629EFBC3800DC3B9A /* IGListReloadDataUpdaterTests.m in Sources */,
E8D312E01FC472A60009FA2F /* IGListContentInsetTests.m in Sources */,
298DDA071E3AE2B100F76F50 /* IGTestStringBindableCell.m in Sources */,
Fix #1275 layouts inconsistency in `updateAnimated:completion` of IGListBindingSectionController (#1285) Summary: ## Changes in this pull request Issue fixed: https://github.com/Instagram/IGListKit/issues/1275 This PR is straintforward solution as mentioned in https://github.com/Instagram/IGListKit/issues/1275. When I finished it, I realized that it is not a problem in `IGListCollectionViewLayout Partial Optimization` and `IGListBindingSectionController` deserved it. Maybe `IGListCollectionViewLayout` is rarely used because of great builtin UICollectionViewFlowLayout or cells in section rarely need changing their sizes in practices. Despite it is not `IGListCollectionViewLayout`'s fault, I think it can be more optimized against `invalidateLayoutWithContext`. I would like to make an another PR to optimize it. Due to this PR just giving a proposed solution, it lacks of adding tests and changing log. When this solution is accepted, I would like to complete these todos. ### Checklist - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [x] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1285 Reviewed By: candance Differential Revision: D15592807 Pulled By: lorixx fbshipit-source-id: ae06abce896341509de4f3dfb73b3a7bc0a68c51
2019-06-12 05:25:14 +00:00
16B71CED22B0A08400FE96ED /* IGTestInvalidateLayoutDataSource.m in Sources */,
16B71CEF22B0A08400FE96ED /* IGTestInvalidateLayoutObject.m in Sources */,
88144F081D870EDC007C7F66 /* IGListAdapterTests.m in Sources */,
8240C7F21DC284C300B3AAE7 /* IGListAdapterStoryboardTests.m in Sources */,
8240C7F01DC272CA00B3AAE7 /* IGTestStoryboardSupplementaryView.m in Sources */,
88379728202236AB00B94676 /* IGListAdapterUpdateTester.m in Sources */,
821BC4CB1DB8D60100172ED0 /* IGTestStoryboardViewController.m in Sources */,
821BC4D01DB8D90900172ED0 /* IGTestStoryboardCell.m in Sources */,
88144F161D870EDC007C7F66 /* IGListTestUICollectionViewDataSource.m in Sources */,
88144F091D870EDC007C7F66 /* IGListAdapterUpdaterTests.m in Sources */,
29C4748C1DDF45F400AE68CE /* IGListAdapterProxyTests.m in Sources */,
F18CC75C29EFBB9400DC3B9A /* IGListCollectionViewTests.m in Sources */,
8240C7F81DC2F3FB00B3AAE7 /* IGListTestStoryboardSection.m in Sources */,
F18CC76329EFBBE200DC3B9A /* IGTestBindingSingleItemDataSource.m in Sources */,
26271C8A1DAE94E40073E116 /* IGTestSingleNibItemDataSource.m in Sources */,
6A9EB3611F841E5D0070C572 /* IGTestSingleWithoutDeselectionDelegate.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
88DF89781E010E6A00B1B9B4 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
88DF898A1E010F7000B1B9B4 /* IGListDiffTests.m in Sources */,
88DF89891E010F6500B1B9B4 /* IGListDiffSwiftTests.swift in Sources */,
882BC1321E0118CB0083B311 /* IGTestObject.m in Sources */,
0B3B93611E08E38C008390ED /* IGListBatchUpdateDataTests.m in Sources */,
F1855A4E29BC565600558D18 /* IGListDiffDescriptionStringTests.m in Sources */,
88DF89881E010F5C00B1B9B4 /* IGListDiffResultTests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
DD3152671DE227FA00AC9D2C /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
7A02D0B32361546300B49FAE /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 7A02D01C2361520200B49FAE /* IGListDiffKit */;
targetProxy = 7A02D0B22361546300B49FAE /* PBXContainerItemProxy */;
};
7A02D0BD23615B8B00B49FAE /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 7A02D02A2361525800B49FAE /* IGListDiffKit-tvOS */;
targetProxy = 7A02D0BC23615B8B00B49FAE /* PBXContainerItemProxy */;
};
7A02D0BF23615B9000B49FAE /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 7A02D0372361526600B49FAE /* IGListDiffKit-macOS */;
targetProxy = 7A02D0BE23615B9000B49FAE /* PBXContainerItemProxy */;
};
7A92EAA223A8A4E700E5A13D /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 887D0B351D870D7E009E01F7 /* IGListKit */;
targetProxy = 7A92EAA123A8A4E700E5A13D /* PBXContainerItemProxy */;
};
7A92EAB323A8A53F00E5A13D /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 885FE1D31DC51A0D009CE2B4 /* IGListKit-tvOS */;
targetProxy = 7A92EAB223A8A53F00E5A13D /* PBXContainerItemProxy */;
};
885FE1DF1DC51A0D009CE2B4 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 885FE1D31DC51A0D009CE2B4 /* IGListKit-tvOS */;
targetProxy = 885FE1DE1DC51A0D009CE2B4 /* PBXContainerItemProxy */;
};
887D0B421D870D7F009E01F7 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 887D0B351D870D7E009E01F7 /* IGListKit */;
targetProxy = 887D0B411D870D7F009E01F7 /* PBXContainerItemProxy */;
};
88DF89831E010E6A00B1B9B4 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = DD3152661DE227FA00AC9D2C /* IGListKit-macOS */;
targetProxy = 88DF89821E010E6A00B1B9B4 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
7A02D0232361520200B49FAE /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_IDENTITY = "";
CODE_SIGN_STYLE = Manual;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.instagram.IGListDiffKit;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
7A02D0242361520200B49FAE /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_IDENTITY = "";
CODE_SIGN_STYLE = Manual;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.instagram.IGListDiffKit;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
7A02D0312361525800B49FAE /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_IDENTITY = "";
CODE_SIGN_STYLE = Manual;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.instagram.IGListDiffKit;
PRODUCT_NAME = IGListDiffKit;
SDKROOT = appletvos;
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 9.0;
};
name = Debug;
};
7A02D0322361525800B49FAE /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_IDENTITY = "";
CODE_SIGN_STYLE = Manual;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.instagram.IGListDiffKit;
PRODUCT_NAME = IGListDiffKit;
SDKROOT = appletvos;
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 9.0;
};
name = Release;
};
7A02D03E2361526600B49FAE /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_IDENTITY = "";
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
"@loader_path/Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.instagram.IGListDiffKit;
PRODUCT_NAME = IGListDiffKit;
SDKROOT = macosx;
SKIP_INSTALL = YES;
};
name = Debug;
};
7A02D03F2361526600B49FAE /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_IDENTITY = "";
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
"@loader_path/Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.11;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.instagram.IGListDiffKit;
PRODUCT_NAME = IGListDiffKit;
SDKROOT = macosx;
SKIP_INSTALL = YES;
};
name = Release;
};
7A92EA9D23A8A42000E5A13D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = Source/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 13.2;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.instagram.IGListSwiftKit;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
7A92EA9E23A8A42000E5A13D /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = Source/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 13.2;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.instagram.IGListSwiftKit;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
7A92EAAE23A8A50100E5A13D /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = Source/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "com.instagram.IGListSwiftKit-tvOS";
PRODUCT_NAME = IGListSwiftKit;
SDKROOT = appletvos;
SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 13.2;
};
name = Debug;
};
7A92EAAF23A8A50100E5A13D /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_STYLE = Automatic;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = Source/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "com.instagram.IGListSwiftKit-tvOS";
PRODUCT_NAME = IGListSwiftKit;
SDKROOT = appletvos;
SKIP_INSTALL = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 13.2;
};
name = Release;
};
885FE1E51DC51A0D009CE2B4 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "";
CODE_SIGN_STYLE = Manual;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = "";
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_WARN_SHADOW = YES;
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.instagram.IGListKit;
PRODUCT_NAME = IGListKit;
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = appletvos;
SKIP_INSTALL = YES;
SWIFT_TREAT_WARNINGS_AS_ERRORS = YES;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 9.0;
};
name = Debug;
};
885FE1E61DC51A0D009CE2B4 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "";
CODE_SIGN_STYLE = Manual;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = "";
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_WARN_SHADOW = YES;
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.instagram.IGListKit;
PRODUCT_NAME = IGListKit;
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = appletvos;
SKIP_INSTALL = YES;
SWIFT_TREAT_WARNINGS_AS_ERRORS = YES;
TARGETED_DEVICE_FAMILY = 3;
TVOS_DEPLOYMENT_TARGET = 9.0;
};
name = Release;
};
885FE1E71DC51A0D009CE2B4 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = "";
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
"NS_BLOCK_ASSERTIONS=1",
);
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_WARN_SHADOW = YES;
INFOPLIST_FILE = Tests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.instagram.IGListKit;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = appletvos;
SWIFT_OBJC_BRIDGING_HEADER = "Tests/IGListKitTests-Bridging-Header.h";
SWIFT_TREAT_WARNINGS_AS_ERRORS = YES;
SWIFT_VERSION = 5.0;
TVOS_DEPLOYMENT_TARGET = 10.0;
};
name = Debug;
};
885FE1E81DC51A0D009CE2B4 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = "";
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_WARN_SHADOW = YES;
INFOPLIST_FILE = Tests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.instagram.IGListKit;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = appletvos;
SWIFT_OBJC_BRIDGING_HEADER = "Tests/IGListKitTests-Bridging-Header.h";
SWIFT_TREAT_WARNINGS_AS_ERRORS = YES;
SWIFT_VERSION = 5.0;
TVOS_DEPLOYMENT_TARGET = 10.0;
};
name = Release;
};
887D0B481D870D7F009E01F7 /* 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_CODE_COVERAGE = YES;
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
2016-10-11 19:24:47 +00:00
CLANG_WARN_SUSPICIOUS_MOVE = YES;
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;
CURRENT_PROJECT_VERSION = 1;
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_MISSING_NEWLINE = 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;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MACOSX_DEPLOYMENT_TARGET = 10.8;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
Improve SwiftPM support (#1546) Summary: This diff imports and refines the PR made by cntrump on GitHub. The PR introduces the following: * Sample apps now use SPM instead of CocoaPods to import IGListKit. * Adds Mac Catalyst as an example target. * Adds C++ flags to the CocoaPods specs. * Fixes a script issue that was discovered when regenerating the symlinks. The PR originally aimed to remove the need for symlinked references to the IGListKit and IGListDiffKit source files, but in testing, I couldn't get it working. It's possible SPM being too strict [on where the headers can be placed to be discovered](https://forums.swift.org/t/how-do-i-specify-the-headers-directory-for-a-objc-target-in-swift-package-managers-package-swift/58531/3). Additionally, another issue was that the original PR changed all of the `#import` statements to the the modular `import` statements, which is fine for the sample apps, but ended up breaking compatibility for any apps that had modules disabled. ## Changes in this pull request Improve SwiftPM support: Build module `IGListDiffKit` and `IGListKit` as Objective-C++. module `IGListDiffKit`: - Source/IGListDiffKit - module defined in `Source/IGListDiffKit/modulemap/module.modulemap` - requires `-fmodules` and `-fcxx-modules` module `IGListKit`: - depend on `IGListDiffKit`, use `import IGListDiffKit;` - Source/IGListKit - module defined in `Source/IGListKit/modulemap/module.modulemap` - requires `-fmodules` and `-fcxx-modules` module `IGListSwiftKit`: - depend on `IGListKit`, use `import IGListKit` - Source/IGListSwiftKit Deleted `spm/` and `scripts/generate_spm_sources_layout.sh`, it is unnecessary. Updated `.podspec`, add `'OTHER_CFLAGS' => '-fmodules'` and `'OTHER_CPLUSPLUSFLAGS' => '-fcxx-modules'`. Add missing swift files for `IGListSwiftKit` in `IGListKit.xcodeproj` ### How to use Replace `#import <IGListDiffKit/IGListDiffKit.h>` with `import IGListDiffKit;`, because `IGListDiffKit.h` isn't exist in `modulemap/`, Or create a symbol link by `ln -sf ../IGListDiffKit.h` for support it ? ### Examples Use SwiftPM for building examples. ### Checklist - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [ ] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1546 Test Plan: Test PR showing running tests: https://github.com/TimOliver/IGListKit/actions/runs/4339956050/jobs/7578047058 Reviewed By: lorixx Differential Revision: D33592395 Pulled By: TimOliver fbshipit-source-id: 8f7b1873f2b1c6a80908bb55b123e31bea13bb0c
2023-03-07 07:29:41 +00:00
OTHER_CFLAGS = "-fmodules";
OTHER_CPLUSPLUSFLAGS = (
"$(OTHER_CFLAGS)",
"-fcxx-modules",
);
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Debug;
};
887D0B491D870D7F009E01F7 /* 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_CODE_COVERAGE = YES;
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = 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_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
2016-10-11 19:24:47 +00:00
CLANG_WARN_SUSPICIOUS_MOVE = YES;
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;
CURRENT_PROJECT_VERSION = 1;
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_MISSING_NEWLINE = 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;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
MACOSX_DEPLOYMENT_TARGET = 10.8;
MTL_ENABLE_DEBUG_INFO = NO;
Improve SwiftPM support (#1546) Summary: This diff imports and refines the PR made by cntrump on GitHub. The PR introduces the following: * Sample apps now use SPM instead of CocoaPods to import IGListKit. * Adds Mac Catalyst as an example target. * Adds C++ flags to the CocoaPods specs. * Fixes a script issue that was discovered when regenerating the symlinks. The PR originally aimed to remove the need for symlinked references to the IGListKit and IGListDiffKit source files, but in testing, I couldn't get it working. It's possible SPM being too strict [on where the headers can be placed to be discovered](https://forums.swift.org/t/how-do-i-specify-the-headers-directory-for-a-objc-target-in-swift-package-managers-package-swift/58531/3). Additionally, another issue was that the original PR changed all of the `#import` statements to the the modular `import` statements, which is fine for the sample apps, but ended up breaking compatibility for any apps that had modules disabled. ## Changes in this pull request Improve SwiftPM support: Build module `IGListDiffKit` and `IGListKit` as Objective-C++. module `IGListDiffKit`: - Source/IGListDiffKit - module defined in `Source/IGListDiffKit/modulemap/module.modulemap` - requires `-fmodules` and `-fcxx-modules` module `IGListKit`: - depend on `IGListDiffKit`, use `import IGListDiffKit;` - Source/IGListKit - module defined in `Source/IGListKit/modulemap/module.modulemap` - requires `-fmodules` and `-fcxx-modules` module `IGListSwiftKit`: - depend on `IGListKit`, use `import IGListKit` - Source/IGListSwiftKit Deleted `spm/` and `scripts/generate_spm_sources_layout.sh`, it is unnecessary. Updated `.podspec`, add `'OTHER_CFLAGS' => '-fmodules'` and `'OTHER_CPLUSPLUSFLAGS' => '-fcxx-modules'`. Add missing swift files for `IGListSwiftKit` in `IGListKit.xcodeproj` ### How to use Replace `#import <IGListDiffKit/IGListDiffKit.h>` with `import IGListDiffKit;`, because `IGListDiffKit.h` isn't exist in `modulemap/`, Or create a symbol link by `ln -sf ../IGListDiffKit.h` for support it ? ### Examples Use SwiftPM for building examples. ### Checklist - [x] All tests pass. Demo project builds and runs. - [x] I added tests, an experiment, or detailed why my change isn't tested. - [ ] I added an entry to the `CHANGELOG.md` for any breaking changes, enhancements, or bug fixes. - [x] I have reviewed the [contributing guide](https://github.com/Instagram/IGListKit/blob/master/.github/CONTRIBUTING.md) Pull Request resolved: https://github.com/Instagram/IGListKit/pull/1546 Test Plan: Test PR showing running tests: https://github.com/TimOliver/IGListKit/actions/runs/4339956050/jobs/7578047058 Reviewed By: lorixx Differential Revision: D33592395 Pulled By: TimOliver fbshipit-source-id: 8f7b1873f2b1c6a80908bb55b123e31bea13bb0c
2023-03-07 07:29:41 +00:00
OTHER_CFLAGS = "-fmodules";
OTHER_CPLUSPLUSFLAGS = (
"$(OTHER_CFLAGS)",
"-fcxx-modules",
);
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Release;
};
887D0B4B1D870D7F009E01F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
2016-10-11 19:24:47 +00:00
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CODE_SIGN_IDENTITY = "";
CODE_SIGN_STYLE = Manual;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = "";
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
GCC_WARN_SHADOW = YES;
GCC_WARN_UNUSED_PARAMETER = NO;
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
OTHER_CFLAGS = (
"-Wambiguous-macro",
"-Wbool-conversion",
"-Wcomment",
"-Wconditional-uninitialized",
"-Wconstant-logical-operand",
"-Wcovered-switch-default",
"-Wdangling-else",
"-Wdeprecated-increment-bool",
"-Wdivision-by-zero",
"-Wduplicate-enum",
"-Wempty-body",
"-Wenum-compare",
"-Wenum-conversion",
"-Wformat",
"-Wformat-extra-args",
"-Wformat-security",
"-Wformat-zero-length",
"-Wignored-attributes",
"-Wignored-attributes",
"-Wimplicit-atomic-properties",
"-Wimplicit-fallthrough",
"-Wimplicit-retain-self",
"-Wincomplete-implementation",
"-Wloop-analysis",
"-Wmismatched-return-types",
"-Wnewline-eof",
"-Wnonnull",
"-Wnull-character",
"-Wobjc-method-access",
"-Wobjc-missing-super-calls",
"-Wreturn-type",
"-Wself-assign",
"-Wswitch",
"-Wswitch-bool",
"-Wswitch-enum",
"-Wunicode",
"-Wunknown-pragmas",
"-Wunused-const-variable",
"-Wunused-function",
"-Wunused-label",
"-Wunused-property-ivar",
"-Wunused-result",
"-Wunused-value",
"-Wnullable-to-nonnull-conversion",
);
PRODUCT_BUNDLE_IDENTIFIER = com.instagram.IGListKit;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
2016-10-11 19:24:47 +00:00
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_TREAT_WARNINGS_AS_ERRORS = YES;
SWIFT_VERSiON = 5.0;
};
name = Debug;
};
887D0B4C1D870D7F009E01F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
2016-10-11 19:24:47 +00:00
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CODE_SIGN_IDENTITY = "";
CODE_SIGN_STYLE = Manual;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = "";
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
GCC_WARN_SHADOW = YES;
GCC_WARN_UNUSED_PARAMETER = NO;
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
OTHER_CFLAGS = (
"-Wambiguous-macro",
"-Wbool-conversion",
"-Wcomment",
"-Wconditional-uninitialized",
"-Wconstant-logical-operand",
"-Wcovered-switch-default",
"-Wdangling-else",
"-Wdeprecated-increment-bool",
"-Wdivision-by-zero",
"-Wduplicate-enum",
"-Wempty-body",
"-Wenum-compare",
"-Wenum-conversion",
"-Wformat",
"-Wformat-extra-args",
"-Wformat-security",
"-Wformat-zero-length",
"-Wignored-attributes",
"-Wignored-attributes",
"-Wimplicit-atomic-properties",
"-Wimplicit-fallthrough",
"-Wimplicit-retain-self",
"-Wincomplete-implementation",
"-Wloop-analysis",
"-Wmismatched-return-types",
"-Wnewline-eof",
"-Wnonnull",
"-Wnull-character",
"-Wobjc-method-access",
"-Wobjc-missing-super-calls",
"-Wreturn-type",
"-Wself-assign",
"-Wswitch",
"-Wswitch-bool",
"-Wswitch-enum",
"-Wunicode",
"-Wunknown-pragmas",
"-Wunused-const-variable",
"-Wunused-function",
"-Wunused-label",
"-Wunused-property-ivar",
"-Wunused-result",
"-Wunused-value",
"-Wnullable-to-nonnull-conversion",
);
PRODUCT_BUNDLE_IDENTIFIER = com.instagram.IGListKit;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
SWIFT_TREAT_WARNINGS_AS_ERRORS = YES;
SWIFT_VERSiON = 5.0;
};
name = Release;
};
887D0B4E1D870D7F009E01F7 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = "";
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
"NS_BLOCK_ASSERTIONS=1",
);
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_WARN_SHADOW = YES;
INFOPLIST_FILE = Tests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.instagram.IGListKitTests;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Tests/IGListKitTests-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_TREAT_WARNINGS_AS_ERRORS = YES;
SWIFT_VERSION = 5.0;
};
name = Debug;
};
887D0B4F1D870D7F009E01F7 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Manual;
DEVELOPMENT_TEAM = "";
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_WARN_SHADOW = YES;
INFOPLIST_FILE = Tests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.instagram.IGListKitTests;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Tests/IGListKitTests-Bridging-Header.h";
SWIFT_TREAT_WARNINGS_AS_ERRORS = YES;
SWIFT_VERSION = 5.0;
};
name = Release;
};
88DF89841E010E6A00B1B9B4 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = "";
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
"NS_BLOCK_ASSERTIONS=1",
);
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_WARN_SHADOW = YES;
INFOPLIST_FILE = Tests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
"@loader_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.12;
PRODUCT_BUNDLE_IDENTIFIER = "com.instagram.IGListKitTests-macOS";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = macosx;
SWIFT_TREAT_WARNINGS_AS_ERRORS = YES;
SWIFT_VERSION = 5.0;
};
name = Debug;
};
88DF89851E010E6A00B1B9B4 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_IDENTITY = "-";
CODE_SIGN_STYLE = Manual;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = "";
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_WARN_SHADOW = YES;
INFOPLIST_FILE = Tests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
"@loader_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.12;
PRODUCT_BUNDLE_IDENTIFIER = "com.instagram.IGListKitTests-macOS";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = macosx;
SWIFT_TREAT_WARNINGS_AS_ERRORS = YES;
SWIFT_VERSION = 5.0;
};
name = Release;
};
DD3152AA1DE227FA00AC9D2C /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CODE_SIGN_IDENTITY = "";
CODE_SIGN_STYLE = Manual;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
GCC_WARN_SHADOW = YES;
GCC_WARN_UNUSED_PARAMETER = NO;
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.11;
OTHER_CFLAGS = (
"-Wambiguous-macro",
"-Wbool-conversion",
"-Wcomment",
"-Wconditional-uninitialized",
"-Wconstant-logical-operand",
"-Wcovered-switch-default",
"-Wdangling-else",
"-Wdeprecated-increment-bool",
"-Wdivision-by-zero",
"-Wduplicate-enum",
"-Wempty-body",
"-Wenum-compare",
"-Wenum-conversion",
"-Wformat",
"-Wformat-extra-args",
"-Wformat-security",
"-Wformat-zero-length",
"-Wignored-attributes",
"-Wignored-attributes",
"-Wimplicit-atomic-properties",
"-Wimplicit-fallthrough",
"-Wimplicit-retain-self",
"-Wincomplete-implementation",
"-Wloop-analysis",
"-Wmismatched-return-types",
"-Wnewline-eof",
"-Wnonnull",
"-Wnull-character",
"-Wobjc-method-access",
"-Wobjc-missing-super-calls",
"-Wreturn-type",
"-Wself-assign",
"-Wswitch",
"-Wswitch-bool",
"-Wswitch-enum",
"-Wunicode",
"-Wunknown-pragmas",
"-Wunused-const-variable",
"-Wunused-function",
"-Wunused-label",
"-Wunused-property-ivar",
"-Wunused-result",
"-Wunused-value",
"-Wnullable-to-nonnull-conversion",
);
PRODUCT_BUNDLE_IDENTIFIER = com.instagram.IGListKit;
PRODUCT_NAME = IGListKit;
SDKROOT = macosx;
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_TREAT_WARNINGS_AS_ERRORS = YES;
SWIFT_VERSiON = 5.0;
};
name = Debug;
};
DD3152AB1DE227FA00AC9D2C /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_ENABLE_MODULES = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CODE_SIGN_IDENTITY = "";
CODE_SIGN_STYLE = Manual;
DEFINES_MODULE = YES;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
GCC_WARN_SHADOW = YES;
GCC_WARN_UNUSED_PARAMETER = NO;
INFOPLIST_FILE = "$(SRCROOT)/Source/Info.plist";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 9.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 10.11;
OTHER_CFLAGS = (
"-Wambiguous-macro",
"-Wbool-conversion",
"-Wcomment",
"-Wconditional-uninitialized",
"-Wconstant-logical-operand",
"-Wcovered-switch-default",
"-Wdangling-else",
"-Wdeprecated-increment-bool",
"-Wdivision-by-zero",
"-Wduplicate-enum",
"-Wempty-body",
"-Wenum-compare",
"-Wenum-conversion",
"-Wformat",
"-Wformat-extra-args",
"-Wformat-security",
"-Wformat-zero-length",
"-Wignored-attributes",
"-Wignored-attributes",
"-Wimplicit-atomic-properties",
"-Wimplicit-fallthrough",
"-Wimplicit-retain-self",
"-Wincomplete-implementation",
"-Wloop-analysis",
"-Wmismatched-return-types",
"-Wnewline-eof",
"-Wnonnull",
"-Wnull-character",
"-Wobjc-method-access",
"-Wobjc-missing-super-calls",
"-Wreturn-type",
"-Wself-assign",
"-Wswitch",
"-Wswitch-bool",
"-Wswitch-enum",
"-Wunicode",
"-Wunknown-pragmas",
"-Wunused-const-variable",
"-Wunused-function",
"-Wunused-label",
"-Wunused-property-ivar",
"-Wunused-result",
"-Wunused-value",
"-Wnullable-to-nonnull-conversion",
);
PRODUCT_BUNDLE_IDENTIFIER = com.instagram.IGListKit;
PRODUCT_NAME = IGListKit;
SDKROOT = macosx;
SKIP_INSTALL = YES;
SWIFT_TREAT_WARNINGS_AS_ERRORS = YES;
SWIFT_VERSiON = 5.0;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
7A02D0222361520200B49FAE /* Build configuration list for PBXNativeTarget "IGListDiffKit" */ = {
isa = XCConfigurationList;
buildConfigurations = (
7A02D0232361520200B49FAE /* Debug */,
7A02D0242361520200B49FAE /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
7A02D0302361525800B49FAE /* Build configuration list for PBXNativeTarget "IGListDiffKit-tvOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
7A02D0312361525800B49FAE /* Debug */,
7A02D0322361525800B49FAE /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
7A02D03D2361526600B49FAE /* Build configuration list for PBXNativeTarget "IGListDiffKit-macOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
7A02D03E2361526600B49FAE /* Debug */,
7A02D03F2361526600B49FAE /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
7A92EA9C23A8A42000E5A13D /* Build configuration list for PBXNativeTarget "IGListSwiftKit" */ = {
isa = XCConfigurationList;
buildConfigurations = (
7A92EA9D23A8A42000E5A13D /* Debug */,
7A92EA9E23A8A42000E5A13D /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
7A92EAAD23A8A50100E5A13D /* Build configuration list for PBXNativeTarget "IGListSwiftKit-tvOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
7A92EAAE23A8A50100E5A13D /* Debug */,
7A92EAAF23A8A50100E5A13D /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
885FE1E91DC51A0D009CE2B4 /* Build configuration list for PBXNativeTarget "IGListKit-tvOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
885FE1E51DC51A0D009CE2B4 /* Debug */,
885FE1E61DC51A0D009CE2B4 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
885FE1EA1DC51A0D009CE2B4 /* Build configuration list for PBXNativeTarget "IGListKit-tvOSTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
885FE1E71DC51A0D009CE2B4 /* Debug */,
885FE1E81DC51A0D009CE2B4 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
887D0B301D870D7E009E01F7 /* Build configuration list for PBXProject "IGListKit" */ = {
isa = XCConfigurationList;
buildConfigurations = (
887D0B481D870D7F009E01F7 /* Debug */,
887D0B491D870D7F009E01F7 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
887D0B4A1D870D7F009E01F7 /* Build configuration list for PBXNativeTarget "IGListKit" */ = {
isa = XCConfigurationList;
buildConfigurations = (
887D0B4B1D870D7F009E01F7 /* Debug */,
887D0B4C1D870D7F009E01F7 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
887D0B4D1D870D7F009E01F7 /* Build configuration list for PBXNativeTarget "IGListKitTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
887D0B4E1D870D7F009E01F7 /* Debug */,
887D0B4F1D870D7F009E01F7 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
88DF89861E010E6A00B1B9B4 /* Build configuration list for PBXNativeTarget "IGListKit-macOSTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
88DF89841E010E6A00B1B9B4 /* Debug */,
88DF89851E010E6A00B1B9B4 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
DD3152A91DE227FA00AC9D2C /* Build configuration list for PBXNativeTarget "IGListKit-macOS" */ = {
isa = XCConfigurationList;
buildConfigurations = (
DD3152AA1DE227FA00AC9D2C /* Debug */,
DD3152AB1DE227FA00AC9D2C /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 887D0B2D1D870D7E009E01F7 /* Project object */;
}