diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml new file mode 100644 index 000000000..ac652cd62 --- /dev/null +++ b/.github/workflows/CI.yml @@ -0,0 +1,224 @@ +name: "IGListKit CI" + +on: + push: + branches: + - master + pull_request: + branches: + - '*' + +jobs: + macOS: + name: Unit Test macOS + runs-on: macOS-latest + env: + DEVELOPER_DIR: /Applications/Xcode_12.1.1.app/Contents/Developer + WORKSPACE_NAME: IGListKit.xcworkspace + SCHEME_NAME: IGListKit-macOS + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Cache RubyGems + uses: actions/cache@v2 + with: + path: vendor/bundle + key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} + restore-keys: | + ${{ runner.os }}-gems- + + - name: Install ruby gems. + run: bundle install + + - name: Run unit tests for macOS + #DEBUG locally + # xcodebuild build build-for-testing -workspace "IGListKit.xcworkspace" -scheme "IGListKit-macOS" -destination "platform=macOS" -configuration Debug ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES ONLY_ACTIVE_ARCH=YES | bundle exec xcpretty -c + # xcodebuild analyze test-without-building -workspace "IGListKit.xcworkspace" -scheme "IGListKit-macOS" -destination "platform=macOS" -configuration Debug ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES ONLY_ACTIVE_ARCH=YES | bundle exec xcpretty -c + run: | + set -o pipefail + xcodebuild build build-for-testing -workspace "${{ env.WORKSPACE_NAME }}" -scheme "${{ env.SCHEME_NAME }}" -destination "platform=macOS" -configuration Debug ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES ONLY_ACTIVE_ARCH=YES | bundle exec xcpretty -c + xcodebuild analyze test-without-building -workspace "${{ env.WORKSPACE_NAME }}" -scheme "${{ env.SCHEME_NAME }}" -destination "platform=macOS" -configuration Debug ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES ONLY_ACTIVE_ARCH=YES | bundle exec xcpretty -c + + iOS: + name: Unit Test iOS + runs-on: macOS-latest + env: + DEVELOPER_DIR: /Applications/Xcode_12.1.1.app/Contents/Developer + WORKSPACE_NAME: IGListKit.xcworkspace + SCHEME_NAME: IGListKit + strategy: + matrix: + destination: ["name=iPhone 12 Pro"] + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Cache RubyGems + uses: actions/cache@v2 + with: + path: vendor/bundle + key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} + restore-keys: | + ${{ runner.os }}-gems- + + - name: Install ruby gems. + run: bundle install + + - name: iOS - ${{ matrix.destination }} + #DEBUG locally + # xcodebuild build build-for-testing -workspace "IGListKit.xcworkspace" -scheme "IGListKit" -destination "OS=14.1,name=iPhone 12 Pro" -configuration Debug ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES ONLY_ACTIVE_ARCH=YES | bundle exec xcpretty -c + # xcodebuild analyze test-without-building -workspace "IGListKit.xcworkspace" -scheme "IGListKit" -destination "OS=14.1,name=iPhone 12 Pro" -configuration Debug ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES ONLY_ACTIVE_ARCH=YES | bundle exec xcpretty -c + run: | + set -o pipefail + xcodebuild build build-for-testing -workspace "${{ env.WORKSPACE_NAME }}" -scheme "${{ env.SCHEME_NAME }}" -destination "${{ matrix.destination }}" -configuration Debug ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES ONLY_ACTIVE_ARCH=YES | bundle exec xcpretty -c + xcodebuild analyze test-without-building -workspace "${{ env.WORKSPACE_NAME }}" -scheme "${{ env.SCHEME_NAME }}" -destination "${{ matrix.destination }}" -configuration Debug ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES ONLY_ACTIVE_ARCH=YES | bundle exec xcpretty -c + + Cocoapods: + name: Cocoapods Lint + runs-on: macOS-latest + env: + DEVELOPER_DIR: /Applications/Xcode_12.1.1.app/Contents/Developer + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Cache RubyGems + uses: actions/cache@v2 + with: + path: vendor/bundle + key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} + restore-keys: | + ${{ runner.os }}-gems- + + - name: Install ruby gems. + run: bundle install + + - name: Run IGListDiffKit podspec lint + run: bundle exec pod lib lint IGListDiffKit.podspec --allow-warnings + + - name: Run IGListKit podspec lint + run: bundle exec pod lib lint IGListKit.podspec --allow-warnings "--include-podspecs=IGListDiffKit.podspec" + + - name: Run IGListSwiftKit podspec lint + run: bundle exec pod lib lint IGListSwiftKit.podspec --allow-warnings "--include-podspecs=*.podspec" + + Carthage: + name: Verify Carthage build + runs-on: macOS-latest + env: + DEVELOPER_DIR: /Applications/Xcode_11.7.app/Contents/Developer + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Remove Examples folder + run: rm -rf Examples/ + + - name: Carthage build framework + run: carthage build --no-skip-current + + Build-Examples: + name: Build Examples and UI tests. + runs-on: macOS-latest + env: + DEVELOPER_DIR: /Applications/Xcode_12.1.1.app/Contents/Developer + IOS_EXAMPLE_WORKSPACE: Examples/Examples-iOS/IGListKitExamples.xcworkspace + TVOS_EXAMPLE_WORKSPACE: Examples/Examples-tvOS/IGListKitExamples.xcworkspace + MACOS_EXAMPLE_WORKSPACE: Examples/Examples-macOS/IGListKitExamples.xcworkspace + EXAMPLE_SCHEME: IGListKitExamples + strategy: + matrix: + iosDestination: ["name=iPhone 12 Pro"] + tvOSDestination: ["name=Apple TV 4K"] + macOSDestination: ["platform=macOS"] + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Cache RubyGems + uses: actions/cache@v2 + with: + path: vendor/bundle + key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} + restore-keys: | + ${{ runner.os }}-gems- + + - name: Install ruby gems. + run: bundle install + + - name: Prepare local pods + run: bash scripts/setup.sh + + - name: Build iOS Example - ${{ matrix.iosDestination }} + run: | + set -o pipefail + xcodebuild build -workspace "${{ env.IOS_EXAMPLE_WORKSPACE }}" -scheme "${{ env.EXAMPLE_SCHEME }}" -destination "${{ matrix.iosDestination }}" ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO | bundle exec xcpretty -c + + - name: Run iOS Example's UI Tests - ${{ matrix.iosDestination }} + run: | + set -o pipefail + xcodebuild build test -workspace "${{ env.IOS_EXAMPLE_WORKSPACE }}" -scheme "${{ env.EXAMPLE_SCHEME }}" -destination "${{ matrix.iosDestination }}" -configuration Debug ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO | bundle exec xcpretty -c + + - name: Build tvOS Example - ${{ matrix.tvOSDestination }} + run: | + set -o pipefail + xcodebuild build -workspace "${{ env.TVOS_EXAMPLE_WORKSPACE }}" -scheme "${{ env.EXAMPLE_SCHEME }}" -destination "${{ matrix.tvOSDestination }}" ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO | bundle exec xcpretty -c + + - name: Build macOS Example - ${{ matrix.macOSDestination }} + run: | + set -o pipefail + xcodebuild build -workspace "${{ env.MACOS_EXAMPLE_WORKSPACE }}" -scheme "${{ env.EXAMPLE_SCHEME }}" -destination "${{ matrix.macOSDestination }}" ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO | bundle exec xcpretty -c + + SPM: + name: Build from SPM manifest + runs-on: macOS-latest + env: + DEVELOPER_DIR: /Applications/Xcode_12.1.1.app/Contents/Developer + strategy: + matrix: + destination: ["platform=iOS Simulator,name=iPhone 12 Pro", "platform=macOS,variant=Mac Catalyst", "platform=tvOS Simulator,name=Apple TV 4k"] + scheme: ["IGListKit"] + steps: + - name: Checkout + uses: actions/checkout@v2 + + # Starting from Xcode 11 `xcodebuild` supports SwiftPM packages out of the box + # to test that we have valid swift package we need to remove existing *.xcodeproj/xcworkspace + # `xcodebuild` will invoke Package.swift. + - name: spm's xcodebuild - ${{ matrix.destination }} + run: | + set -o pipefail + rm -rf IGListKit.xcodeproj/ + rm -rf IGListKit.xcworkspace/ + xcodebuild clean build -scheme "${{ matrix.scheme }}" -destination "${{ matrix.destination }}" + + Build-iOS-SPM-Xcode-Example: + name: Build iOS Example integrated via Xcode's SPM. + runs-on: macOS-latest + env: + DEVELOPER_DIR: /Applications/Xcode_12.1.1.app/Contents/Developer + IOS_EXAMPLE_PROJECT: Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode.xcodeproj + EXAMPLE_SCHEME: Examples-iOS-SPM-Xcode + strategy: + matrix: + iosDestination: ["name=iPhone 12 Pro"] + steps: + - name: Checkout + uses: actions/checkout@v2 + + - name: Cache RubyGems + uses: actions/cache@v2 + with: + path: vendor/bundle + key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} + restore-keys: | + ${{ runner.os }}-gems- + + - name: Install ruby gems. + run: bundle install + + - name: Build iOS Example - ${{ matrix.iosDestination }} + run: | + set -o pipefail + xcodebuild clean build -project "${{ env.IOS_EXAMPLE_PROJECT }}" -scheme "${{ env.EXAMPLE_SCHEME }}" -destination "${{ matrix.iosDestination }}" -configuration Release ONLY_ACTIVE_ARCH=NO CODE_SIGNING_REQUIRED=NO | bundle exec xcpretty -c diff --git a/.gitignore b/.gitignore index 6a1f6db9b..64def6faa 100644 --- a/.gitignore +++ b/.gitignore @@ -41,6 +41,7 @@ playground.xcworkspace # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. # Packages/ .build/ +.swiftpm/ # Carthage # diff --git a/CHANGELOG.md b/CHANGELOG.md index a23b27f35..671eb42a7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ The changelog for `IGListKit`. Also see the [releases](https://github.com/instag ### Enhancements +- Added [Mac Catalyst](https://developer.apple.com/mac-catalyst/) support. [Petro Rovenskyy](https://github.com/3a4oT/) + - Introduce `IGListSwiftKit`, with Swift refinements for `dequeueReusableCellOfClass` methods. [Koen Punt](https://github.com/koenpunt) [(#1388)](https://github.com/Instagram/IGListKit/pull/1388). - Added `APPLICATION_EXTENSION_API_ONLY` support for `IGListDiffKit` [Peter Meyers](https://github.com/pm-dev) [(#1422)](https://github.com/Instagram/IGListKit/pull/1422) @@ -26,6 +28,8 @@ The changelog for `IGListKit`. Also see the [releases](https://github.com/instag ### Fixes +- Repaired Swift Package Manager support. [Petro Rovenskyy](https://github.com/3a4oT/) + - `IGListCollectionViewLayout` should get the section/index counts via `UICollectionView` to stay in sync, instead of the `dataSource` [Maxime Ollivier](https://github.com/maxolls) (tbd) - Remove `[collectionView layoutIfNeeded]` before scrolling in `[IGListAdapter scrollToObject...]` to avoid creating off-screen cells. [Maxime Ollivier](https://github.com/maxolls) (tbd) diff --git a/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode.xcodeproj/project.pbxproj b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode.xcodeproj/project.pbxproj new file mode 100644 index 000000000..cf2c2cd85 --- /dev/null +++ b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode.xcodeproj/project.pbxproj @@ -0,0 +1,402 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 52; + objects = { + +/* Begin PBXBuildFile section */ + FB71FBF02565C36800F7F8BF /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB71FBEF2565C36800F7F8BF /* AppDelegate.swift */; }; + FB71FBF22565C36800F7F8BF /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB71FBF12565C36800F7F8BF /* SceneDelegate.swift */; }; + FB71FBF42565C36800F7F8BF /* MainViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB71FBF32565C36800F7F8BF /* MainViewController.swift */; }; + FB71FBF72565C36800F7F8BF /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FB71FBF52565C36800F7F8BF /* Main.storyboard */; }; + FB71FBF92565C36A00F7F8BF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FB71FBF82565C36A00F7F8BF /* Assets.xcassets */; }; + FB71FBFC2565C36A00F7F8BF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FB71FBFA2565C36A00F7F8BF /* LaunchScreen.storyboard */; }; + FB71FC082565C3CD00F7F8BF /* IGListKit in Frameworks */ = {isa = PBXBuildFile; productRef = FB71FC072565C3CD00F7F8BF /* IGListKit */; }; + FB71FC0E2565C42900F7F8BF /* ItemSectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB71FC0D2565C42900F7F8BF /* ItemSectionController.swift */; }; + FB71FC112565C44100F7F8BF /* Item.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB71FC102565C44100F7F8BF /* Item.swift */; }; + FB71FC142565C45400F7F8BF /* LabelCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB71FC132565C45400F7F8BF /* LabelCell.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + FB71FBEC2565C36800F7F8BF /* Examples-iOS-SPM-Xcode.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Examples-iOS-SPM-Xcode.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + FB71FBEF2565C36800F7F8BF /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + FB71FBF12565C36800F7F8BF /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; + FB71FBF32565C36800F7F8BF /* MainViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainViewController.swift; sourceTree = ""; }; + FB71FBF62565C36800F7F8BF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + FB71FBF82565C36A00F7F8BF /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + FB71FBFB2565C36A00F7F8BF /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + FB71FBFD2565C36A00F7F8BF /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + FB71FC042565C3C300F7F8BF /* IGListKit */ = {isa = PBXFileReference; lastKnownFileType = folder; name = IGListKit; path = ../../..; sourceTree = ""; }; + FB71FC0D2565C42900F7F8BF /* ItemSectionController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemSectionController.swift; sourceTree = ""; }; + FB71FC102565C44100F7F8BF /* Item.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Item.swift; sourceTree = ""; }; + FB71FC132565C45400F7F8BF /* LabelCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelCell.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + FB71FBE92565C36800F7F8BF /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + FB71FC082565C3CD00F7F8BF /* IGListKit in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + FB71FBE32565C36800F7F8BF = { + isa = PBXGroup; + children = ( + FB71FBEE2565C36800F7F8BF /* Examples-iOS-SPM-Xcode */, + FB71FBED2565C36800F7F8BF /* Products */, + FB71FC062565C3CD00F7F8BF /* Frameworks */, + ); + sourceTree = ""; + }; + FB71FBED2565C36800F7F8BF /* Products */ = { + isa = PBXGroup; + children = ( + FB71FBEC2565C36800F7F8BF /* Examples-iOS-SPM-Xcode.app */, + ); + name = Products; + sourceTree = ""; + }; + FB71FBEE2565C36800F7F8BF /* Examples-iOS-SPM-Xcode */ = { + isa = PBXGroup; + children = ( + FB71FC042565C3C300F7F8BF /* IGListKit */, + FB71FC0C2565C40800F7F8BF /* Models */, + FB71FC0B2565C3FF00F7F8BF /* Views */, + FB71FC0A2565C3EF00F7F8BF /* SectionControllers */, + FB71FBEF2565C36800F7F8BF /* AppDelegate.swift */, + FB71FBF12565C36800F7F8BF /* SceneDelegate.swift */, + FB71FBF32565C36800F7F8BF /* MainViewController.swift */, + FB71FBF52565C36800F7F8BF /* Main.storyboard */, + FB71FBF82565C36A00F7F8BF /* Assets.xcassets */, + FB71FBFA2565C36A00F7F8BF /* LaunchScreen.storyboard */, + FB71FBFD2565C36A00F7F8BF /* Info.plist */, + ); + path = "Examples-iOS-SPM-Xcode"; + sourceTree = ""; + }; + FB71FC062565C3CD00F7F8BF /* Frameworks */ = { + isa = PBXGroup; + children = ( + ); + name = Frameworks; + sourceTree = ""; + }; + FB71FC0A2565C3EF00F7F8BF /* SectionControllers */ = { + isa = PBXGroup; + children = ( + FB71FC0D2565C42900F7F8BF /* ItemSectionController.swift */, + ); + path = SectionControllers; + sourceTree = ""; + }; + FB71FC0B2565C3FF00F7F8BF /* Views */ = { + isa = PBXGroup; + children = ( + FB71FC132565C45400F7F8BF /* LabelCell.swift */, + ); + path = Views; + sourceTree = ""; + }; + FB71FC0C2565C40800F7F8BF /* Models */ = { + isa = PBXGroup; + children = ( + FB71FC102565C44100F7F8BF /* Item.swift */, + ); + path = Models; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + FB71FBEB2565C36800F7F8BF /* Examples-iOS-SPM-Xcode */ = { + isa = PBXNativeTarget; + buildConfigurationList = FB71FC002565C36A00F7F8BF /* Build configuration list for PBXNativeTarget "Examples-iOS-SPM-Xcode" */; + buildPhases = ( + FB71FBE82565C36800F7F8BF /* Sources */, + FB71FBE92565C36800F7F8BF /* Frameworks */, + FB71FBEA2565C36800F7F8BF /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Examples-iOS-SPM-Xcode"; + packageProductDependencies = ( + FB71FC072565C3CD00F7F8BF /* IGListKit */, + ); + productName = "Examples-iOS-SPM-Xcode"; + productReference = FB71FBEC2565C36800F7F8BF /* Examples-iOS-SPM-Xcode.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + FB71FBE42565C36800F7F8BF /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 1210; + LastUpgradeCheck = 1210; + TargetAttributes = { + FB71FBEB2565C36800F7F8BF = { + CreatedOnToolsVersion = 12.1; + }; + }; + }; + buildConfigurationList = FB71FBE72565C36800F7F8BF /* Build configuration list for PBXProject "Examples-iOS-SPM-Xcode" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = FB71FBE32565C36800F7F8BF; + productRefGroup = FB71FBED2565C36800F7F8BF /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + FB71FBEB2565C36800F7F8BF /* Examples-iOS-SPM-Xcode */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + FB71FBEA2565C36800F7F8BF /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + FB71FBFC2565C36A00F7F8BF /* LaunchScreen.storyboard in Resources */, + FB71FBF92565C36A00F7F8BF /* Assets.xcassets in Resources */, + FB71FBF72565C36800F7F8BF /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + FB71FBE82565C36800F7F8BF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + FB71FC112565C44100F7F8BF /* Item.swift in Sources */, + FB71FBF42565C36800F7F8BF /* MainViewController.swift in Sources */, + FB71FBF02565C36800F7F8BF /* AppDelegate.swift in Sources */, + FB71FC0E2565C42900F7F8BF /* ItemSectionController.swift in Sources */, + FB71FC142565C45400F7F8BF /* LabelCell.swift in Sources */, + FB71FBF22565C36800F7F8BF /* SceneDelegate.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + FB71FBF52565C36800F7F8BF /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + FB71FBF62565C36800F7F8BF /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + FB71FBFA2565C36A00F7F8BF /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + FB71FBFB2565C36A00F7F8BF /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + FB71FBFE2565C36A00F7F8BF /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.1; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + FB71FBFF2565C36A00F7F8BF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = 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_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.1; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + FB71FC012565C36A00F7F8BF /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = "Examples-iOS-SPM-Xcode/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "instagram.Examples-iOS-SPM-Xcode"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + FB71FC022565C36A00F7F8BF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_STYLE = Automatic; + INFOPLIST_FILE = "Examples-iOS-SPM-Xcode/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = "instagram.Examples-iOS-SPM-Xcode"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + FB71FBE72565C36800F7F8BF /* Build configuration list for PBXProject "Examples-iOS-SPM-Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FB71FBFE2565C36A00F7F8BF /* Debug */, + FB71FBFF2565C36A00F7F8BF /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + FB71FC002565C36A00F7F8BF /* Build configuration list for PBXNativeTarget "Examples-iOS-SPM-Xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FB71FC012565C36A00F7F8BF /* Debug */, + FB71FC022565C36A00F7F8BF /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCSwiftPackageProductDependency section */ + FB71FC072565C3CD00F7F8BF /* IGListKit */ = { + isa = XCSwiftPackageProductDependency; + productName = IGListKit; + }; +/* End XCSwiftPackageProductDependency section */ + }; + rootObject = FB71FBE42565C36800F7F8BF /* Project object */; +} diff --git a/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..919434a62 --- /dev/null +++ b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000..18d981003 --- /dev/null +++ b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/AppDelegate.swift b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/AppDelegate.swift new file mode 100644 index 000000000..d94d25c06 --- /dev/null +++ b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/AppDelegate.swift @@ -0,0 +1,36 @@ +// +// AppDelegate.swift +// Examples-iOS-SPM-Xcode +// +// Created by Petro Rovenskyy on 18.11.2020. +// + +import UIKit + +@main +class AppDelegate: UIResponder, UIApplicationDelegate { + + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { + // Override point for customization after application launch. + UICollectionView.appearance().backgroundColor = .systemBackground + + return true + } + + // MARK: UISceneSession Lifecycle + + func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { + // Called when a new scene session is being created. + // Use this method to select a configuration to create the new scene with. + return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) + } + + func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { + // Called when the user discards a scene session. + // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. + // Use this method to release any resources that were specific to the discarded scenes, as they will not return. + } + + +} + diff --git a/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Assets.xcassets/AccentColor.colorset/Contents.json b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Assets.xcassets/AccentColor.colorset/Contents.json new file mode 100644 index 000000000..eb8789700 --- /dev/null +++ b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Assets.xcassets/AccentColor.colorset/Contents.json @@ -0,0 +1,11 @@ +{ + "colors" : [ + { + "idiom" : "universal" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Assets.xcassets/AppIcon.appiconset/Contents.json b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000..9221b9bb1 --- /dev/null +++ b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,98 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "20x20" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "29x29" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "40x40" + }, + { + "idiom" : "iphone", + "scale" : "2x", + "size" : "60x60" + }, + { + "idiom" : "iphone", + "scale" : "3x", + "size" : "60x60" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "20x20" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "29x29" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "40x40" + }, + { + "idiom" : "ipad", + "scale" : "1x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "76x76" + }, + { + "idiom" : "ipad", + "scale" : "2x", + "size" : "83.5x83.5" + }, + { + "idiom" : "ios-marketing", + "scale" : "1x", + "size" : "1024x1024" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Assets.xcassets/Contents.json b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Assets.xcassets/Contents.json new file mode 100644 index 000000000..73c00596a --- /dev/null +++ b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Base.lproj/LaunchScreen.storyboard b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 000000000..865e9329f --- /dev/null +++ b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Base.lproj/Main.storyboard b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Base.lproj/Main.storyboard new file mode 100644 index 000000000..9d4b3b9fa --- /dev/null +++ b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Base.lproj/Main.storyboard @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Info.plist b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Info.plist new file mode 100644 index 000000000..5b531f7b2 --- /dev/null +++ b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Info.plist @@ -0,0 +1,66 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + $(PRODUCT_BUNDLE_PACKAGE_TYPE) + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UIApplicationSceneManifest + + UIApplicationSupportsMultipleScenes + + UISceneConfigurations + + UIWindowSceneSessionRoleApplication + + + UISceneConfigurationName + Default Configuration + UISceneDelegateClassName + $(PRODUCT_MODULE_NAME).SceneDelegate + UISceneStoryboardFile + Main + + + + + UIApplicationSupportsIndirectInputEvents + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/MainViewController.swift b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/MainViewController.swift new file mode 100644 index 000000000..bebdfa8ae --- /dev/null +++ b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/MainViewController.swift @@ -0,0 +1,46 @@ +// +// MainViewController.swift +// Examples-iOS-SPM-Xcode +// +// Created by Petro Rovenskyy on 18.11.2020. +// + +import IGListKit +import UIKit + +class MainViewController: UIViewController, ListAdapterDataSource { + + lazy var adapter: ListAdapter = { + return ListAdapter(updater: ListAdapterUpdater(), viewController: self) + }() + let collectionView = UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout()) + + override func viewDidLoad() { + super.viewDidLoad() + self.title = "IGListKit via Xcode's SPM" + self.view.addSubview(collectionView) + self.adapter.collectionView = collectionView + self.adapter.dataSource = self + } + + override func viewDidLayoutSubviews() { + super.viewDidLayoutSubviews() + collectionView.frame = view.bounds + } + + // MARK: ListAdapterDataSource + + func objects(for listAdapter: ListAdapter) -> [ListDiffable] { + return [Item(name: "I'm list diffable item :)")] + } + + func listAdapter(_ listAdapter: ListAdapter, sectionControllerFor object: Any) -> ListSectionController { + return ItemSectionController() + } + + func emptyView(for listAdapter: ListAdapter) -> UIView? { + return nil + } + +} + diff --git a/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Models/Item.swift b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Models/Item.swift new file mode 100644 index 000000000..b23095dad --- /dev/null +++ b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Models/Item.swift @@ -0,0 +1,34 @@ +// +// Item.swift +// Examples-iOS-SPM-Xcode +// +// Created by Petro Rovenskyy on 18.11.2020. +// + +import Foundation +import IGListDiffKit + +final class Item: NSObject { + + let name: String + + init(name: String) { + self.name = name + super.init() + } + +} + +extension Item: ListDiffable { + + func diffIdentifier() -> NSObjectProtocol { + return self.name as NSObjectProtocol + } + + func isEqual(toDiffableObject object: ListDiffable?) -> Bool { + if self === object { return true } + guard let object = object as? Item else { return false } + return self.name == object.name + } + +} diff --git a/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/SceneDelegate.swift b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/SceneDelegate.swift new file mode 100644 index 000000000..3f347f8fa --- /dev/null +++ b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/SceneDelegate.swift @@ -0,0 +1,52 @@ +// +// SceneDelegate.swift +// Examples-iOS-SPM-Xcode +// +// Created by Petro Rovenskyy on 18.11.2020. +// + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate { + + var window: UIWindow? + + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. + // If using a storyboard, the `window` property will automatically be initialized and attached to the scene. + // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). + guard let _ = (scene as? UIWindowScene) else { return } + } + + func sceneDidDisconnect(_ scene: UIScene) { + // Called as the scene is being released by the system. + // This occurs shortly after the scene enters the background, or when its session is discarded. + // Release any resources associated with this scene that can be re-created the next time the scene connects. + // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead). + } + + func sceneDidBecomeActive(_ scene: UIScene) { + // Called when the scene has moved from an inactive state to an active state. + // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive. + } + + func sceneWillResignActive(_ scene: UIScene) { + // Called when the scene will move from an active state to an inactive state. + // This may occur due to temporary interruptions (ex. an incoming phone call). + } + + func sceneWillEnterForeground(_ scene: UIScene) { + // Called as the scene transitions from the background to the foreground. + // Use this method to undo the changes made on entering the background. + } + + func sceneDidEnterBackground(_ scene: UIScene) { + // Called as the scene transitions from the foreground to the background. + // Use this method to save data, release shared resources, and store enough scene-specific state information + // to restore the scene back to its current state. + } + + +} + diff --git a/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/SectionControllers/ItemSectionController.swift b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/SectionControllers/ItemSectionController.swift new file mode 100644 index 000000000..925a77bdc --- /dev/null +++ b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/SectionControllers/ItemSectionController.swift @@ -0,0 +1,32 @@ +// +// ItemSectionController.swift +// Examples-iOS-SPM-Xcode +// +// Created by Petro Rovenskyy on 18.11.2020. +// + +import IGListKit +import UIKit + +final class ItemSectionController: ListSectionController { + + private var object: Item? + + override func sizeForItem(at index: Int) -> CGSize { + return CGSize(width: collectionContext!.containerSize.width, height: 55) + } + + override func cellForItem(at index: Int) -> UICollectionViewCell { + guard let cell: LabelCell = collectionContext?.dequeueReusableCell(of: LabelCell.self, + withReuseIdentifier: "labelCellId", + for: self, at: index) as? LabelCell else { + fatalError() + } + cell.text = object?.name + return cell + } + + override func didUpdate(to object: Any) { + self.object = object as? Item + } +} diff --git a/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Views/LabelCell.swift b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Views/LabelCell.swift new file mode 100644 index 000000000..80d513f29 --- /dev/null +++ b/Examples/Examples-iOS-SPM-Xcode/Examples-iOS-SPM-Xcode/Views/LabelCell.swift @@ -0,0 +1,47 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +import UIKit + +final class LabelCell: UICollectionViewCell { + + private static let insets = UIEdgeInsets(top: 8, left: 15, bottom: 8, right: 15) + private static let font = UIFont.systemFont(ofSize: 15) + + private let label: UILabel = { + let label = UILabel() + label.backgroundColor = .clear + label.numberOfLines = 0 + label.font = LabelCell.font + return label + }() + + var text: String? { + get { + return label.text + } + set { + label.text = newValue + } + } + + override init(frame: CGRect) { + super.init(frame: frame) + contentView.backgroundColor = .systemBackground + contentView.addSubview(label) + } + + required init?(coder aDecoder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func layoutSubviews() { + super.layoutSubviews() + let bounds = contentView.bounds + label.frame = bounds.inset(by: LabelCell.insets) + } +} diff --git a/IGListDiffKit.podspec b/IGListDiffKit.podspec index 951c97f4d..bb35a93a1 100644 --- a/IGListDiffKit.podspec +++ b/IGListDiffKit.podspec @@ -21,7 +21,8 @@ Pod::Spec.new do |s| } s.source_files = 'Source/IGListDiffKit/**/*.{h,m,mm}' - s.private_header_files = 'Source/IGListDiffKit/Internal/*.h' + s.private_header_files = 'Source/IGListDiffKit/*.h' + s.public_header_files = 'Source/IGListDiffKit/include/*.h' s.requires_arc = true diff --git a/IGListKit.podspec b/IGListKit.podspec index 996adac96..fda9e3fda 100644 --- a/IGListKit.podspec +++ b/IGListKit.podspec @@ -23,17 +23,12 @@ Pod::Spec.new do |s| s.dependency 'IGListDiffKit', "= #{s.version}" [s.ios, s.tvos].each do |os| - os.source_files = [ - 'Source/IGListDiffKit/Internal/*.h', - 'Source/IGListKit/**/*.{h,m,mm}', - ] - os.private_header_files = [ - 'Source/IGListDiffKit/Internal/*.h', - 'Source/IGListKit/Internal/*.h', - ] + os.source_files = 'Source/IGListKit/**/*.{h,m,mm}' + os.public_header_files = 'Source/IGListKit/include/*.h' + os.private_header_files = 'Source/IGListKit/*.h' end - s.osx.source_files = 'Source/IGListKit/IGListKit.h' + s.osx.source_files = 'Source/IGListKit/include/IGListKit.h' s.requires_arc = true diff --git a/IGListKit.xcodeproj/project.pbxproj b/IGListKit.xcodeproj/project.pbxproj index 082ce41ca..1bbfff80d 100644 --- a/IGListKit.xcodeproj/project.pbxproj +++ b/IGListKit.xcodeproj/project.pbxproj @@ -69,7 +69,7 @@ 57B22E6B2502AAB20055DC2F /* IGListExperimentalAdapterUpdater.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B22E652502AAB10055DC2F /* IGListExperimentalAdapterUpdater.m */; }; 57B22E6C2502AAB20055DC2F /* IGListTransitionData.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B22E662502AAB10055DC2F /* IGListTransitionData.m */; }; 57B22E6D2502AAB20055DC2F /* IGListUpdatingDelegateExperimental.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B22E672502AAB10055DC2F /* IGListUpdatingDelegateExperimental.h */; }; - 57B22E6E2502AAB20055DC2F /* IGListAdapterUpdaterCompatible.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B22E682502AAB10055DC2F /* IGListAdapterUpdaterCompatible.h */; }; + 57B22E6E2502AAB20055DC2F /* IGListAdapterUpdaterCompatible.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B22E682502AAB10055DC2F /* IGListAdapterUpdaterCompatible.h */; settings = {ATTRIBUTES = (Public, ); }; }; 57B22E6F2502AAB20055DC2F /* IGListTransitionData.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B22E692502AAB10055DC2F /* IGListTransitionData.h */; }; 57B22E702502AAB20055DC2F /* IGListExperimentalAdapterUpdater.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B22E6A2502AAB10055DC2F /* IGListExperimentalAdapterUpdater.h */; }; 57B22E7F2502AAC40055DC2F /* IGListBatchUpdateTransaction.m in Sources */ = {isa = PBXBuildFile; fileRef = 57B22E712502AAC20055DC2F /* IGListBatchUpdateTransaction.m */; }; @@ -277,18 +277,6 @@ 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, ); }; }; @@ -331,7 +319,6 @@ 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, ); }; }; @@ -412,9 +399,24 @@ 88DF89891E010F6500B1B9B4 /* IGListDiffSwiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88144EE61D870EDC007C7F66 /* IGListDiffSwiftTests.swift */; }; 88DF898A1E010F7000B1B9B4 /* IGListDiffTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 88144EE81D870EDC007C7F66 /* IGListDiffTests.m */; }; DD468D380BBF350ACE7EA28B /* Pods_IGListKitTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1AB7195278D0BBB5DA88D36F /* Pods_IGListKitTests.framework */; }; + E03DEA51255C99C300ACCAFC /* IGListAdapterUpdaterCompatible.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B22E682502AAB10055DC2F /* IGListAdapterUpdaterCompatible.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E03DEA83255C9AAC00ACCAFC /* IGListTransitionData.h in Headers */ = {isa = PBXBuildFile; fileRef = 57B22E692502AAB10055DC2F /* IGListTransitionData.h */; }; + 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 */; }; + FBB7468D255D4FB300732DFE /* IGListIndexPathResultInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = FBB74689255D4FB300732DFE /* IGListIndexPathResultInternal.h */; }; + FBB7468E255D4FB300732DFE /* IGListIndexPathResultInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = FBB74689255D4FB300732DFE /* IGListIndexPathResultInternal.h */; }; + FBB7468F255D4FB300732DFE /* IGListIndexPathResultInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = FBB74689255D4FB300732DFE /* IGListIndexPathResultInternal.h */; }; + FBB74690255D4FB300732DFE /* IGListIndexSetResultInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = FBB7468A255D4FB300732DFE /* IGListIndexSetResultInternal.h */; }; + FBB74691255D4FB300732DFE /* IGListIndexSetResultInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = FBB7468A255D4FB300732DFE /* IGListIndexSetResultInternal.h */; }; + FBB74692255D4FB300732DFE /* IGListIndexSetResultInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = FBB7468A255D4FB300732DFE /* IGListIndexSetResultInternal.h */; }; + FBB74693255D4FB300732DFE /* IGListMoveIndexInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = FBB7468B255D4FB300732DFE /* IGListMoveIndexInternal.h */; }; + FBB74694255D4FB300732DFE /* IGListMoveIndexInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = FBB7468B255D4FB300732DFE /* IGListMoveIndexInternal.h */; }; + FBB74695255D4FB300732DFE /* IGListMoveIndexInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = FBB7468B255D4FB300732DFE /* IGListMoveIndexInternal.h */; }; + FBB74696255D4FB300732DFE /* IGListMoveIndexPathInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = FBB7468C255D4FB300732DFE /* IGListMoveIndexPathInternal.h */; }; + FBB74697255D4FB300732DFE /* IGListMoveIndexPathInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = FBB7468C255D4FB300732DFE /* IGListMoveIndexPathInternal.h */; }; + FBB74698255D4FB300732DFE /* IGListMoveIndexPathInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = FBB7468C255D4FB300732DFE /* IGListMoveIndexPathInternal.h */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -533,20 +535,20 @@ 57B22E682502AAB10055DC2F /* IGListAdapterUpdaterCompatible.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListAdapterUpdaterCompatible.h; sourceTree = ""; }; 57B22E692502AAB10055DC2F /* IGListTransitionData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListTransitionData.h; sourceTree = ""; }; 57B22E6A2502AAB10055DC2F /* IGListExperimentalAdapterUpdater.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListExperimentalAdapterUpdater.h; sourceTree = ""; }; - 57B22E712502AAC20055DC2F /* IGListBatchUpdateTransaction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListBatchUpdateTransaction.m; sourceTree = ""; }; - 57B22E722502AAC30055DC2F /* IGListUpdateTransactionBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListUpdateTransactionBuilder.m; sourceTree = ""; }; - 57B22E732502AAC30055DC2F /* IGListUpdateTransactable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListUpdateTransactable.h; sourceTree = ""; }; - 57B22E742502AAC30055DC2F /* IGListDataSourceChangeTransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListDataSourceChangeTransaction.h; sourceTree = ""; }; - 57B22E752502AAC30055DC2F /* IGListItemUpdatesCollector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListItemUpdatesCollector.m; sourceTree = ""; }; - 57B22E762502AAC30055DC2F /* IGListReloadTransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListReloadTransaction.h; sourceTree = ""; }; - 57B22E772502AAC30055DC2F /* IGListExperimentalAdapterUpdaterInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListExperimentalAdapterUpdaterInternal.h; sourceTree = ""; }; - 57B22E782502AAC30055DC2F /* IGListUpdatedObjectContainer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListUpdatedObjectContainer.m; sourceTree = ""; }; - 57B22E792502AAC30055DC2F /* IGListDataSourceChangeTransaction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListDataSourceChangeTransaction.m; sourceTree = ""; }; - 57B22E7A2502AAC40055DC2F /* IGListUpdatedObjectContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListUpdatedObjectContainer.h; sourceTree = ""; }; - 57B22E7B2502AAC40055DC2F /* IGListBatchUpdateTransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListBatchUpdateTransaction.h; sourceTree = ""; }; - 57B22E7C2502AAC40055DC2F /* IGListItemUpdatesCollector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListItemUpdatesCollector.h; sourceTree = ""; }; - 57B22E7D2502AAC40055DC2F /* IGListUpdateTransactionBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListUpdateTransactionBuilder.h; sourceTree = ""; }; - 57B22E7E2502AAC40055DC2F /* IGListReloadTransaction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListReloadTransaction.m; sourceTree = ""; }; + 57B22E712502AAC20055DC2F /* IGListBatchUpdateTransaction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = IGListBatchUpdateTransaction.m; path = IGListBatchUpdateTransaction.m; sourceTree = ""; }; + 57B22E722502AAC30055DC2F /* IGListUpdateTransactionBuilder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = IGListUpdateTransactionBuilder.m; path = IGListUpdateTransactionBuilder.m; sourceTree = ""; }; + 57B22E732502AAC30055DC2F /* IGListUpdateTransactable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListUpdateTransactable.h; path = IGListUpdateTransactable.h; sourceTree = ""; }; + 57B22E742502AAC30055DC2F /* IGListDataSourceChangeTransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListDataSourceChangeTransaction.h; path = IGListDataSourceChangeTransaction.h; sourceTree = ""; }; + 57B22E752502AAC30055DC2F /* IGListItemUpdatesCollector.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = IGListItemUpdatesCollector.m; path = IGListItemUpdatesCollector.m; sourceTree = ""; }; + 57B22E762502AAC30055DC2F /* IGListReloadTransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListReloadTransaction.h; path = IGListReloadTransaction.h; sourceTree = ""; }; + 57B22E772502AAC30055DC2F /* IGListExperimentalAdapterUpdaterInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListExperimentalAdapterUpdaterInternal.h; path = IGListExperimentalAdapterUpdaterInternal.h; sourceTree = ""; }; + 57B22E782502AAC30055DC2F /* IGListUpdatedObjectContainer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = IGListUpdatedObjectContainer.m; path = IGListUpdatedObjectContainer.m; sourceTree = ""; }; + 57B22E792502AAC30055DC2F /* IGListDataSourceChangeTransaction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = IGListDataSourceChangeTransaction.m; path = IGListDataSourceChangeTransaction.m; sourceTree = ""; }; + 57B22E7A2502AAC40055DC2F /* IGListUpdatedObjectContainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListUpdatedObjectContainer.h; path = IGListUpdatedObjectContainer.h; sourceTree = ""; }; + 57B22E7B2502AAC40055DC2F /* IGListBatchUpdateTransaction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListBatchUpdateTransaction.h; path = IGListBatchUpdateTransaction.h; sourceTree = ""; }; + 57B22E7C2502AAC40055DC2F /* IGListItemUpdatesCollector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListItemUpdatesCollector.h; path = IGListItemUpdatesCollector.h; sourceTree = ""; }; + 57B22E7D2502AAC40055DC2F /* IGListUpdateTransactionBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListUpdateTransactionBuilder.h; path = IGListUpdateTransactionBuilder.h; sourceTree = ""; }; + 57B22E7E2502AAC40055DC2F /* IGListReloadTransaction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = IGListReloadTransaction.m; path = IGListReloadTransaction.m; sourceTree = ""; }; 6A9EB35F1F841E5D0070C572 /* IGTestSingleWithoutDeselectionDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IGTestSingleWithoutDeselectionDelegate.h; sourceTree = ""; }; 6A9EB3601F841E5D0070C572 /* IGTestSingleWithoutDeselectionDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = IGTestSingleWithoutDeselectionDelegate.m; sourceTree = ""; }; 7A02CEC72361510F00B49FAE /* IGListReloadDataUpdater.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListReloadDataUpdater.h; sourceTree = ""; }; @@ -588,48 +590,48 @@ 7A02CEEB2361511100B49FAE /* IGListAdapterUpdater.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListAdapterUpdater.h; sourceTree = ""; }; 7A02CEEC2361511100B49FAE /* IGListSectionController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListSectionController.m; sourceTree = ""; }; 7A02CEED2361511100B49FAE /* IGListCollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListCollectionView.m; sourceTree = ""; }; - 7A02CF642361513300B49FAE /* IGListDisplayHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListDisplayHandler.h; sourceTree = ""; }; + 7A02CF642361513300B49FAE /* IGListDisplayHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListDisplayHandler.h; path = IGListDisplayHandler.h; sourceTree = ""; }; 7A02CF652361513300B49FAE /* IGListAdapter+DebugDescription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "IGListAdapter+DebugDescription.m"; sourceTree = ""; }; - 7A02CF662361513400B49FAE /* IGListAdapterInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListAdapterInternal.h; sourceTree = ""; }; - 7A02CF672361513400B49FAE /* IGListBindingSectionController+DebugDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IGListBindingSectionController+DebugDescription.h"; sourceTree = ""; }; - 7A02CF682361513400B49FAE /* IGListCollectionViewLayoutInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListCollectionViewLayoutInternal.h; sourceTree = ""; }; - 7A02CF6A2361513400B49FAE /* UIScrollView+IGListKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIScrollView+IGListKit.h"; sourceTree = ""; }; - 7A02CF6B2361513400B49FAE /* UICollectionView+IGListBatchUpdateData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UICollectionView+IGListBatchUpdateData.m"; sourceTree = ""; }; - 7A02CF6C2361513400B49FAE /* UICollectionViewLayout+InteractiveReordering.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UICollectionViewLayout+InteractiveReordering.h"; sourceTree = ""; }; - 7A02CF6D2361513400B49FAE /* IGListReloadIndexPath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListReloadIndexPath.m; sourceTree = ""; }; - 7A02CF6E2361513400B49FAE /* UICollectionViewLayout+InteractiveReordering.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UICollectionViewLayout+InteractiveReordering.m"; sourceTree = ""; }; - 7A02CF6F2361513400B49FAE /* UIScrollView+IGListKit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+IGListKit.m"; sourceTree = ""; }; - 7A02CF702361513400B49FAE /* IGListAdapterUpdaterInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListAdapterUpdaterInternal.h; sourceTree = ""; }; - 7A02CF712361513400B49FAE /* IGListSectionMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListSectionMap.h; sourceTree = ""; }; - 7A02CF722361513400B49FAE /* IGListAdapterProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListAdapterProxy.m; sourceTree = ""; }; - 7A02CF732361513400B49FAE /* IGListAdapterUpdater+DebugDescription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "IGListAdapterUpdater+DebugDescription.m"; sourceTree = ""; }; - 7A02CF742361513400B49FAE /* IGListAdapter+UICollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IGListAdapter+UICollectionView.h"; sourceTree = ""; }; - 7A02CF752361513400B49FAE /* UICollectionView+DebugDescription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UICollectionView+DebugDescription.m"; sourceTree = ""; }; - 7A02CF762361513400B49FAE /* IGListSectionMap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListSectionMap.m; sourceTree = ""; }; - 7A02CF772361513400B49FAE /* UICollectionView+IGListBatchUpdateData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UICollectionView+IGListBatchUpdateData.h"; sourceTree = ""; }; - 7A02CF782361513400B49FAE /* IGListBatchUpdateState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListBatchUpdateState.h; sourceTree = ""; }; - 7A02CF792361513400B49FAE /* IGListDebugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListDebugger.h; sourceTree = ""; }; - 7A02CF7A2361513400B49FAE /* IGListBatchUpdates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListBatchUpdates.h; sourceTree = ""; }; - 7A02CF7C2361513400B49FAE /* IGListBatchUpdateData+DebugDescription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "IGListBatchUpdateData+DebugDescription.m"; sourceTree = ""; }; - 7A02CF7D2361513400B49FAE /* IGListAdapterProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListAdapterProxy.h; sourceTree = ""; }; - 7A02CF7E2361513500B49FAE /* IGListAdapterUpdater+DebugDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IGListAdapterUpdater+DebugDescription.h"; sourceTree = ""; }; + 7A02CF662361513400B49FAE /* IGListAdapterInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListAdapterInternal.h; path = IGListAdapterInternal.h; sourceTree = ""; }; + 7A02CF672361513400B49FAE /* IGListBindingSectionController+DebugDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "IGListBindingSectionController+DebugDescription.h"; path = "IGListBindingSectionController+DebugDescription.h"; sourceTree = ""; }; + 7A02CF682361513400B49FAE /* IGListCollectionViewLayoutInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListCollectionViewLayoutInternal.h; path = IGListCollectionViewLayoutInternal.h; sourceTree = ""; }; + 7A02CF6A2361513400B49FAE /* UIScrollView+IGListKit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+IGListKit.h"; path = "UIScrollView+IGListKit.h"; sourceTree = ""; }; + 7A02CF6B2361513400B49FAE /* UICollectionView+IGListBatchUpdateData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UICollectionView+IGListBatchUpdateData.m"; path = "UICollectionView+IGListBatchUpdateData.m"; sourceTree = ""; }; + 7A02CF6C2361513400B49FAE /* UICollectionViewLayout+InteractiveReordering.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UICollectionViewLayout+InteractiveReordering.h"; path = "UICollectionViewLayout+InteractiveReordering.h"; sourceTree = ""; }; + 7A02CF6D2361513400B49FAE /* IGListReloadIndexPath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = IGListReloadIndexPath.m; path = IGListReloadIndexPath.m; sourceTree = ""; }; + 7A02CF6E2361513400B49FAE /* UICollectionViewLayout+InteractiveReordering.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UICollectionViewLayout+InteractiveReordering.m"; path = "UICollectionViewLayout+InteractiveReordering.m"; sourceTree = ""; }; + 7A02CF6F2361513400B49FAE /* UIScrollView+IGListKit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+IGListKit.m"; path = "UIScrollView+IGListKit.m"; sourceTree = ""; }; + 7A02CF702361513400B49FAE /* IGListAdapterUpdaterInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListAdapterUpdaterInternal.h; path = IGListAdapterUpdaterInternal.h; sourceTree = ""; }; + 7A02CF712361513400B49FAE /* IGListSectionMap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListSectionMap.h; path = IGListSectionMap.h; sourceTree = ""; }; + 7A02CF722361513400B49FAE /* IGListAdapterProxy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = IGListAdapterProxy.m; path = IGListAdapterProxy.m; sourceTree = ""; }; + 7A02CF732361513400B49FAE /* IGListAdapterUpdater+DebugDescription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "IGListAdapterUpdater+DebugDescription.m"; path = "IGListAdapterUpdater+DebugDescription.m"; sourceTree = ""; }; + 7A02CF742361513400B49FAE /* IGListAdapter+UICollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "IGListAdapter+UICollectionView.h"; path = "IGListAdapter+UICollectionView.h"; sourceTree = ""; }; + 7A02CF752361513400B49FAE /* UICollectionView+DebugDescription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UICollectionView+DebugDescription.m"; path = "UICollectionView+DebugDescription.m"; sourceTree = ""; }; + 7A02CF762361513400B49FAE /* IGListSectionMap.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = IGListSectionMap.m; path = IGListSectionMap.m; sourceTree = ""; }; + 7A02CF772361513400B49FAE /* UICollectionView+IGListBatchUpdateData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UICollectionView+IGListBatchUpdateData.h"; path = "UICollectionView+IGListBatchUpdateData.h"; sourceTree = ""; }; + 7A02CF782361513400B49FAE /* IGListBatchUpdateState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListBatchUpdateState.h; path = IGListBatchUpdateState.h; sourceTree = ""; }; + 7A02CF792361513400B49FAE /* IGListDebugger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListDebugger.h; path = IGListDebugger.h; sourceTree = ""; }; + 7A02CF7A2361513400B49FAE /* IGListBatchUpdates.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListBatchUpdates.h; path = IGListBatchUpdates.h; sourceTree = ""; }; + 7A02CF7C2361513400B49FAE /* IGListBatchUpdateData+DebugDescription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "IGListBatchUpdateData+DebugDescription.m"; path = "IGListBatchUpdateData+DebugDescription.m"; sourceTree = ""; }; + 7A02CF7D2361513400B49FAE /* IGListAdapterProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListAdapterProxy.h; path = IGListAdapterProxy.h; sourceTree = ""; }; + 7A02CF7E2361513500B49FAE /* IGListAdapterUpdater+DebugDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "IGListAdapterUpdater+DebugDescription.h"; path = "IGListAdapterUpdater+DebugDescription.h"; sourceTree = ""; }; 7A02CF7F2361513500B49FAE /* IGListAdapter+DebugDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IGListAdapter+DebugDescription.h"; sourceTree = ""; }; - 7A02CF802361513500B49FAE /* IGListDisplayHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListDisplayHandler.m; sourceTree = ""; }; - 7A02CF812361513500B49FAE /* IGListArrayUtilsInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListArrayUtilsInternal.h; sourceTree = ""; }; - 7A02CF822361513500B49FAE /* IGListBatchUpdates.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListBatchUpdates.m; sourceTree = ""; }; - 7A02CF832361513500B49FAE /* IGListDebuggingUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListDebuggingUtilities.h; sourceTree = ""; }; - 7A02CF842361513500B49FAE /* IGListBindingSectionController+DebugDescription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "IGListBindingSectionController+DebugDescription.m"; sourceTree = ""; }; - 7A02CF852361513500B49FAE /* IGListAdapter+UICollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "IGListAdapter+UICollectionView.m"; sourceTree = ""; }; - 7A02CF862361513500B49FAE /* IGListSectionMap+DebugDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IGListSectionMap+DebugDescription.h"; sourceTree = ""; }; - 7A02CF872361513500B49FAE /* IGListWorkingRangeHandler.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = IGListWorkingRangeHandler.mm; sourceTree = ""; }; - 7A02CF882361513500B49FAE /* IGListReloadIndexPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListReloadIndexPath.h; sourceTree = ""; }; - 7A02CF892361513500B49FAE /* IGListDebugger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListDebugger.m; sourceTree = ""; }; - 7A02CF8A2361513500B49FAE /* IGListSectionControllerInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListSectionControllerInternal.h; sourceTree = ""; }; - 7A02CF8B2361513500B49FAE /* IGListDebuggingUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListDebuggingUtilities.m; sourceTree = ""; }; - 7A02CF8C2361513500B49FAE /* IGListBatchUpdateData+DebugDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "IGListBatchUpdateData+DebugDescription.h"; sourceTree = ""; }; - 7A02CF8D2361513600B49FAE /* IGListSectionMap+DebugDescription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "IGListSectionMap+DebugDescription.m"; sourceTree = ""; }; - 7A02CF8E2361513600B49FAE /* IGListWorkingRangeHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListWorkingRangeHandler.h; sourceTree = ""; }; - 7A02CF8F2361513600B49FAE /* UICollectionView+DebugDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UICollectionView+DebugDescription.h"; sourceTree = ""; }; + 7A02CF802361513500B49FAE /* IGListDisplayHandler.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = IGListDisplayHandler.m; path = IGListDisplayHandler.m; sourceTree = ""; }; + 7A02CF812361513500B49FAE /* IGListArrayUtilsInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListArrayUtilsInternal.h; path = IGListArrayUtilsInternal.h; sourceTree = ""; }; + 7A02CF822361513500B49FAE /* IGListBatchUpdates.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = IGListBatchUpdates.m; path = IGListBatchUpdates.m; sourceTree = ""; }; + 7A02CF832361513500B49FAE /* IGListDebuggingUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListDebuggingUtilities.h; path = IGListDebuggingUtilities.h; sourceTree = ""; }; + 7A02CF842361513500B49FAE /* IGListBindingSectionController+DebugDescription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "IGListBindingSectionController+DebugDescription.m"; path = "IGListBindingSectionController+DebugDescription.m"; sourceTree = ""; }; + 7A02CF852361513500B49FAE /* IGListAdapter+UICollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "IGListAdapter+UICollectionView.m"; path = "IGListAdapter+UICollectionView.m"; sourceTree = ""; }; + 7A02CF862361513500B49FAE /* IGListSectionMap+DebugDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "IGListSectionMap+DebugDescription.h"; path = "IGListSectionMap+DebugDescription.h"; sourceTree = ""; }; + 7A02CF872361513500B49FAE /* IGListWorkingRangeHandler.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = IGListWorkingRangeHandler.mm; path = IGListWorkingRangeHandler.mm; sourceTree = ""; }; + 7A02CF882361513500B49FAE /* IGListReloadIndexPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListReloadIndexPath.h; path = IGListReloadIndexPath.h; sourceTree = ""; }; + 7A02CF892361513500B49FAE /* IGListDebugger.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = IGListDebugger.m; path = IGListDebugger.m; sourceTree = ""; }; + 7A02CF8A2361513500B49FAE /* IGListSectionControllerInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListSectionControllerInternal.h; path = IGListSectionControllerInternal.h; sourceTree = ""; }; + 7A02CF8B2361513500B49FAE /* IGListDebuggingUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = IGListDebuggingUtilities.m; path = IGListDebuggingUtilities.m; sourceTree = ""; }; + 7A02CF8C2361513500B49FAE /* IGListBatchUpdateData+DebugDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "IGListBatchUpdateData+DebugDescription.h"; path = "IGListBatchUpdateData+DebugDescription.h"; sourceTree = ""; }; + 7A02CF8D2361513600B49FAE /* IGListSectionMap+DebugDescription.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "IGListSectionMap+DebugDescription.m"; path = "IGListSectionMap+DebugDescription.m"; sourceTree = ""; }; + 7A02CF8E2361513600B49FAE /* IGListWorkingRangeHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListWorkingRangeHandler.h; path = IGListWorkingRangeHandler.h; sourceTree = ""; }; + 7A02CF8F2361513600B49FAE /* UICollectionView+DebugDescription.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UICollectionView+DebugDescription.h"; path = "UICollectionView+DebugDescription.h"; sourceTree = ""; }; 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; }; @@ -642,10 +644,6 @@ 7A02D0462361529E00B49FAE /* NSString+IGListDiffable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+IGListDiffable.m"; sourceTree = ""; }; 7A02D0472361529E00B49FAE /* IGListCompatibility.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListCompatibility.h; sourceTree = ""; }; 7A02D0482361529E00B49FAE /* NSNumber+IGListDiffable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSNumber+IGListDiffable.h"; sourceTree = ""; }; - 7A02D04A2361529E00B49FAE /* IGListIndexSetResultInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListIndexSetResultInternal.h; sourceTree = ""; }; - 7A02D04B2361529E00B49FAE /* IGListIndexPathResultInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListIndexPathResultInternal.h; sourceTree = ""; }; - 7A02D04C2361529E00B49FAE /* IGListMoveIndexInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListMoveIndexInternal.h; sourceTree = ""; }; - 7A02D04D2361529E00B49FAE /* IGListMoveIndexPathInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListMoveIndexPathInternal.h; sourceTree = ""; }; 7A02D04E2361529E00B49FAE /* IGListMoveIndexPath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListMoveIndexPath.h; sourceTree = ""; }; 7A02D04F2361529E00B49FAE /* IGListDiff.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = IGListDiff.mm; sourceTree = ""; }; 7A02D0502361529E00B49FAE /* IGListAssert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListAssert.h; sourceTree = ""; }; @@ -664,8 +662,8 @@ 7A92EA9923A8A42000E5A13D /* IGListSwiftKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IGListSwiftKit.h; sourceTree = ""; }; 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 = ""; }; - 7AD6864A23A89E7F009000DE /* IGListAdapterUpdaterHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListAdapterUpdaterHelpers.h; sourceTree = ""; }; + 7AD6864923A89E7F009000DE /* IGListAdapterUpdaterHelpers.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = IGListAdapterUpdaterHelpers.m; path = IGListAdapterUpdaterHelpers.m; sourceTree = ""; }; + 7AD6864A23A89E7F009000DE /* IGListAdapterUpdaterHelpers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = IGListAdapterUpdaterHelpers.h; path = IGListAdapterUpdaterHelpers.h; sourceTree = ""; }; 821BC4BE1DB8C95300172ED0 /* IGListSingleStoryboardItemControllerTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListSingleStoryboardItemControllerTests.m; sourceTree = ""; }; 821BC4C21DB8CAE900172ED0 /* IGTestStoryboard.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = IGTestStoryboard.storyboard; sourceTree = ""; }; 821BC4C71DB8D5B200172ED0 /* IGTestStoryboardViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGTestStoryboardViewController.h; sourceTree = ""; }; @@ -732,6 +730,10 @@ E56B7B3320A9D7100071010C /* IGListCollectionScrollingTraitsTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IGListCollectionScrollingTraitsTests.m; sourceTree = ""; }; E8D312DF1FC472A60009FA2F /* IGListContentInsetTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = IGListContentInsetTests.m; sourceTree = ""; }; E980179F5E885E417EB20D55 /* Pods_IGListKit_tvOSTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_IGListKit_tvOSTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FBB74689255D4FB300732DFE /* IGListIndexPathResultInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListIndexPathResultInternal.h; sourceTree = ""; }; + FBB7468A255D4FB300732DFE /* IGListIndexSetResultInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListIndexSetResultInternal.h; sourceTree = ""; }; + FBB7468B255D4FB300732DFE /* IGListMoveIndexInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListMoveIndexInternal.h; sourceTree = ""; }; + FBB7468C255D4FB300732DFE /* IGListMoveIndexPathInternal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IGListMoveIndexPathInternal.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -865,59 +867,6 @@ sourceTree = ""; }; 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 */, - 57B22E682502AAB10055DC2F /* IGListAdapterUpdaterCompatible.h */, - 7A02CEE22361511000B49FAE /* IGListAdapterUpdaterDelegate.h */, - 7A02CECF2361510F00B49FAE /* IGListBatchContext.h */, - 7A02CEDA2361511000B49FAE /* IGListBindable.h */, - 7A02CEDC2361511000B49FAE /* IGListBindingSectionController.h */, - 7A02CEEA2361511100B49FAE /* IGListBindingSectionController.m */, - 7A02CED02361510F00B49FAE /* IGListBindingSectionControllerDataSource.h */, - 7A02CEE92361511000B49FAE /* IGListBindingSectionControllerSelectionDelegate.h */, - 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 */, - 57B22E6A2502AAB10055DC2F /* IGListExperimentalAdapterUpdater.h */, - 57B22E652502AAB10055DC2F /* IGListExperimentalAdapterUpdater.m */, - 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 */, - 57B22E672502AAB10055DC2F /* IGListUpdatingDelegateExperimental.h */, - 7A02CEC92361510F00B49FAE /* IGListWorkingRangeDelegate.h */, - ); - path = IGListKit; - sourceTree = ""; - }; - 7A02CF632361511700B49FAE /* Internal */ = { isa = PBXGroup; children = ( 7A02CF7F2361513500B49FAE /* IGListAdapter+DebugDescription.h */, @@ -978,51 +927,42 @@ 7A02CF6E2361513400B49FAE /* UICollectionViewLayout+InteractiveReordering.m */, 7A02CF6A2361513400B49FAE /* UIScrollView+IGListKit.h */, 7A02CF6F2361513400B49FAE /* UIScrollView+IGListKit.m */, + E01BA60F252E6B73003F7E63 /* include */, + 7A02CEE82361511000B49FAE /* IGListAdapter.m */, + 7A02CEDE2361511000B49FAE /* IGListAdapterUpdater.m */, + 7A02CEEA2361511100B49FAE /* IGListBindingSectionController.m */, + 7A02CEED2361511100B49FAE /* IGListCollectionView.m */, + 7A02CEE02361511000B49FAE /* IGListCollectionViewLayout.mm */, + 57B22E652502AAB10055DC2F /* IGListExperimentalAdapterUpdater.m */, + 7A02CED32361511000B49FAE /* IGListGenericSectionController.m */, + 7A02CEDB2361511000B49FAE /* IGListReloadDataUpdater.m */, + 7A02CEEC2361511100B49FAE /* IGListSectionController.m */, + 7A02CEE52361511000B49FAE /* IGListSingleSectionController.m */, + 57B22E662502AAB10055DC2F /* IGListTransitionData.m */, ); - path = Internal; + path = IGListKit; sourceTree = ""; }; 7A02D0252361522600B49FAE /* IGListDiffKit */ = { isa = PBXGroup; children = ( - 7A02D0492361529E00B49FAE /* Internal */, - 7A02D0502361529E00B49FAE /* IGListAssert.h */, - 7A02D0542361529E00B49FAE /* IGListBatchUpdateData.h */, - 7A02D0572361529E00B49FAE /* IGListBatchUpdateData.mm */, - 7A02D0472361529E00B49FAE /* IGListCompatibility.h */, - 7A02D0402361529E00B49FAE /* IGListDiff.h */, + E01BA603252E62C4003F7E63 /* include */, + FBB74689255D4FB300732DFE /* IGListIndexPathResultInternal.h */, + FBB7468A255D4FB300732DFE /* IGListIndexSetResultInternal.h */, + FBB7468B255D4FB300732DFE /* IGListMoveIndexInternal.h */, + FBB7468C255D4FB300732DFE /* IGListMoveIndexPathInternal.h */, 7A02D04F2361529E00B49FAE /* IGListDiff.mm */, - 7A02D0562361529E00B49FAE /* IGListDiffable.h */, - 7A02D0442361529E00B49FAE /* IGListDiffKit.h */, - 7A02D0452361529E00B49FAE /* IGListExperiments.h */, - 7A02D0432361529E00B49FAE /* IGListIndexPathResult.h */, 7A02D0512361529E00B49FAE /* IGListIndexPathResult.m */, - 7A02D05A2361529F00B49FAE /* IGListIndexSetResult.h */, + 7A02D0552361529E00B49FAE /* IGListMoveIndexPath.m */, 7A02D0522361529E00B49FAE /* IGListIndexSetResult.m */, - 7A02D0582361529E00B49FAE /* IGListMacros.h */, - 7A02D0592361529E00B49FAE /* IGListMoveIndex.h */, 7A02D0532361529E00B49FAE /* IGListMoveIndex.m */, - 7A02D04E2361529E00B49FAE /* IGListMoveIndexPath.h */, - 7A02D0552361529E00B49FAE /* IGListMoveIndexPath.m */, - 7A02D0482361529E00B49FAE /* NSNumber+IGListDiffable.h */, + 7A02D0572361529E00B49FAE /* IGListBatchUpdateData.mm */, 7A02D0412361529E00B49FAE /* NSNumber+IGListDiffable.m */, - 7A02D0422361529E00B49FAE /* NSString+IGListDiffable.h */, 7A02D0462361529E00B49FAE /* NSString+IGListDiffable.m */, ); path = IGListDiffKit; sourceTree = ""; }; - 7A02D0492361529E00B49FAE /* Internal */ = { - isa = PBXGroup; - children = ( - 7A02D04A2361529E00B49FAE /* IGListIndexSetResultInternal.h */, - 7A02D04B2361529E00B49FAE /* IGListIndexPathResultInternal.h */, - 7A02D04C2361529E00B49FAE /* IGListMoveIndexInternal.h */, - 7A02D04D2361529E00B49FAE /* IGListMoveIndexPathInternal.h */, - ); - path = Internal; - sourceTree = ""; - }; 7A92EA9823A8A42000E5A13D /* IGListSwiftKit */ = { isa = PBXGroup; children = ( @@ -1181,6 +1121,68 @@ path = Tests; sourceTree = ""; }; + E01BA603252E62C4003F7E63 /* include */ = { + isa = PBXGroup; + children = ( + 7A02D0502361529E00B49FAE /* IGListAssert.h */, + 7A02D0542361529E00B49FAE /* IGListBatchUpdateData.h */, + 7A02D0472361529E00B49FAE /* IGListCompatibility.h */, + 7A02D0402361529E00B49FAE /* IGListDiff.h */, + 7A02D0562361529E00B49FAE /* IGListDiffable.h */, + 7A02D0442361529E00B49FAE /* IGListDiffKit.h */, + 7A02D0452361529E00B49FAE /* IGListExperiments.h */, + 7A02D05A2361529F00B49FAE /* IGListIndexSetResult.h */, + 7A02D0582361529E00B49FAE /* IGListMacros.h */, + 7A02D0592361529E00B49FAE /* IGListMoveIndex.h */, + 7A02D0482361529E00B49FAE /* NSNumber+IGListDiffable.h */, + 7A02D0422361529E00B49FAE /* NSString+IGListDiffable.h */, + 7A02D04E2361529E00B49FAE /* IGListMoveIndexPath.h */, + 7A02D0432361529E00B49FAE /* IGListIndexPathResult.h */, + ); + path = include; + sourceTree = ""; + }; + E01BA60F252E6B73003F7E63 /* include */ = { + isa = PBXGroup; + children = ( + 7A02CEDF2361511000B49FAE /* IGListAdapterDataSource.h */, + 7A02CED22361511000B49FAE /* IGListAdapterDelegate.h */, + 7A02CED52361511000B49FAE /* IGListAdapterMoveDelegate.h */, + 7A02CEE42361511000B49FAE /* IGListAdapterPerformanceDelegate.h */, + 7A02CED92361511000B49FAE /* IGListAdapterUpdateListener.h */, + 7A02CEEB2361511100B49FAE /* IGListAdapterUpdater.h */, + 57B22E682502AAB10055DC2F /* IGListAdapterUpdaterCompatible.h */, + 7A02CEE22361511000B49FAE /* IGListAdapterUpdaterDelegate.h */, + 7A02CECF2361510F00B49FAE /* IGListBatchContext.h */, + 7A02CEDA2361511000B49FAE /* IGListBindable.h */, + 7A02CEDC2361511000B49FAE /* IGListBindingSectionController.h */, + 7A02CED02361510F00B49FAE /* IGListBindingSectionControllerDataSource.h */, + 7A02CEE92361511000B49FAE /* IGListBindingSectionControllerSelectionDelegate.h */, + 7A02CED12361510F00B49FAE /* IGListCollectionContext.h */, + 7A02CEE72361511000B49FAE /* IGListCollectionScrollingTraits.h */, + 7A02CECD2361510F00B49FAE /* IGListCollectionView.h */, + 7A02CECC2361510F00B49FAE /* IGListCollectionViewDelegateLayout.h */, + 7A02CED42361511000B49FAE /* IGListCollectionViewLayout.h */, + 7A02CEE12361511000B49FAE /* IGListCollectionViewLayoutCompatible.h */, + 7A02CECB2361510F00B49FAE /* IGListDisplayDelegate.h */, + 57B22E6A2502AAB10055DC2F /* IGListExperimentalAdapterUpdater.h */, + 7A02CECE2361510F00B49FAE /* IGListGenericSectionController.h */, + 7A02CED72361511000B49FAE /* IGListKit.h */, + 7A02CEC72361510F00B49FAE /* IGListReloadDataUpdater.h */, + 7A02CEC82361510F00B49FAE /* IGListScrollDelegate.h */, + 7A02CED62361511000B49FAE /* IGListSectionController.h */, + 7A02CEE32361511000B49FAE /* IGListSingleSectionController.h */, + 7A02CEE62361511000B49FAE /* IGListSupplementaryViewSource.h */, + 57B22E692502AAB10055DC2F /* IGListTransitionData.h */, + 7A02CED82361511000B49FAE /* IGListTransitionDelegate.h */, + 7A02CEDD2361511000B49FAE /* IGListUpdatingDelegate.h */, + 57B22E672502AAB10055DC2F /* IGListUpdatingDelegateExperimental.h */, + 7A02CEC92361510F00B49FAE /* IGListWorkingRangeDelegate.h */, + 7A02CECA2361510F00B49FAE /* IGListAdapter.h */, + ); + path = include; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ @@ -1188,22 +1190,22 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + FBB7468D255D4FB300732DFE /* IGListIndexPathResultInternal.h in Headers */, 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 */, + FBB74690255D4FB300732DFE /* IGListIndexSetResultInternal.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 */, + FBB74696255D4FB300732DFE /* IGListMoveIndexPathInternal.h in Headers */, + FBB74693255D4FB300732DFE /* IGListMoveIndexInternal.h in Headers */, 7A02D0672361529F00B49FAE /* IGListDiffKit.h in Headers */, 7A02D0612361529F00B49FAE /* NSString+IGListDiffable.h in Headers */, ); @@ -1213,14 +1215,13 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + FBB7468E255D4FB300732DFE /* IGListIndexPathResultInternal.h in Headers */, 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 */, + FBB74691255D4FB300732DFE /* IGListIndexSetResultInternal.h in Headers */, 7A02D0652361529F00B49FAE /* IGListIndexPathResult.h in Headers */, 7A02D0712361529F00B49FAE /* IGListCompatibility.h in Headers */, 7A02D0A42361529F00B49FAE /* IGListMoveIndex.h in Headers */, @@ -1228,7 +1229,8 @@ 7A02D0832361529F00B49FAE /* IGListMoveIndexPath.h in Headers */, 7A02D05C2361529F00B49FAE /* IGListDiff.h in Headers */, 7A02D0892361529F00B49FAE /* IGListAssert.h in Headers */, - 7A02D07D2361529F00B49FAE /* IGListMoveIndexInternal.h in Headers */, + FBB74697255D4FB300732DFE /* IGListMoveIndexPathInternal.h in Headers */, + FBB74694255D4FB300732DFE /* IGListMoveIndexInternal.h in Headers */, 7A02D09B2361529F00B49FAE /* IGListDiffable.h in Headers */, 7A02D0A72361529F00B49FAE /* IGListIndexSetResult.h in Headers */, ); @@ -1238,14 +1240,13 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + FBB7468F255D4FB300732DFE /* IGListIndexPathResultInternal.h in Headers */, 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 */, + FBB74692255D4FB300732DFE /* IGListIndexSetResultInternal.h in Headers */, 7A02D0662361529F00B49FAE /* IGListIndexPathResult.h in Headers */, 7A02D0722361529F00B49FAE /* IGListCompatibility.h in Headers */, 7A02D0A52361529F00B49FAE /* IGListMoveIndex.h in Headers */, @@ -1253,7 +1254,8 @@ 7A02D0842361529F00B49FAE /* IGListMoveIndexPath.h in Headers */, 7A02D05D2361529F00B49FAE /* IGListDiff.h in Headers */, 7A02D08A2361529F00B49FAE /* IGListAssert.h in Headers */, - 7A02D07E2361529F00B49FAE /* IGListMoveIndexInternal.h in Headers */, + FBB74698255D4FB300732DFE /* IGListMoveIndexPathInternal.h in Headers */, + FBB74695255D4FB300732DFE /* IGListMoveIndexInternal.h in Headers */, 7A02D09C2361529F00B49FAE /* IGListDiffable.h in Headers */, 7A02D0A82361529F00B49FAE /* IGListIndexSetResult.h in Headers */, ); @@ -1279,6 +1281,7 @@ isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( + E03DEA83255C9AAC00ACCAFC /* IGListTransitionData.h in Headers */, 7A02CF102361511100B49FAE /* IGListAdapterDelegate.h in Headers */, 7A02CFB52361513600B49FAE /* IGListAdapterUpdaterInternal.h in Headers */, 7A02CF222361511100B49FAE /* IGListTransitionDelegate.h in Headers */, @@ -1319,6 +1322,7 @@ 7A02CFCD2361513600B49FAE /* IGListBatchUpdateState.h in Headers */, 7A02CEF22361511100B49FAE /* IGListScrollDelegate.h in Headers */, 7A02CF9A2361513600B49FAE /* IGListBindingSectionController+DebugDescription.h in Headers */, + E03DEA51255C99C300ACCAFC /* IGListAdapterUpdaterCompatible.h in Headers */, 7A02CF9D2361513600B49FAE /* IGListCollectionViewLayoutInternal.h in Headers */, 7A02CFCA2361513600B49FAE /* UICollectionView+IGListBatchUpdateData.h in Headers */, 7A02D0092361513600B49FAE /* IGListBatchUpdateData+DebugDescription.h in Headers */, @@ -1416,7 +1420,6 @@ buildActionMask = 2147483647; files = ( 883797082022304E00B94676 /* (null) in Headers */, - 7A02D0C023615CE500B49FAE /* IGListKit.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1914,6 +1917,7 @@ 7A02CF2B2361511100B49FAE /* IGListReloadDataUpdater.m in Sources */, 7A02CFF12361513600B49FAE /* IGListBindingSectionController+DebugDescription.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 */, diff --git a/Package.swift b/Package.swift index 5ed46a2f9..b2e47b156 100644 --- a/Package.swift +++ b/Package.swift @@ -1,15 +1,39 @@ -// swift-tools-version:4.2 +// swift-tools-version:5.3 import PackageDescription let package = Package( name: "IGListKit", + platforms: [ .iOS(.v9), + .tvOS(.v9), + .macOS(.v10_15) + ], products: [ - .library(name: "IGListKit", targets: ["IGListKit"]) + .library(name: "IGListDiffKit", + type: .static , + targets: ["IGListDiffKit"]), + .library(name: "IGListKit", + type: .static, + targets: ["IGListKit"]), + .library(name: "IGListSwiftKit", + type: .static, + targets: ["IGListSwiftKit"]), ], targets: [ + .target( + name: "IGListDiffKit", + path: "Source/IGListDiffKit" + ), .target( name: "IGListKit", - path: "Source" - ) - ] + dependencies: ["IGListDiffKit"], + path: "Source/IGListKit" + ), + .target( + name: "IGListSwiftKit", + dependencies: ["IGListKit"], + path: "Source/IGListSwiftKit" + ), + ], + cLanguageStandard: .c11, + cxxLanguageStandard: .cxx11 ) diff --git a/Source/IGListDiffKit/IGListBatchUpdateData.mm b/Source/IGListDiffKit/IGListBatchUpdateData.mm index eae36699c..bff934571 100644 --- a/Source/IGListDiffKit/IGListBatchUpdateData.mm +++ b/Source/IGListDiffKit/IGListBatchUpdateData.mm @@ -9,8 +9,8 @@ #import -#import -#import +#import "IGListAssert.h" +#import "IGListCompatibility.h" // Plucks the given move from available moves and turns it into a delete + insert static void convertMoveToDeleteAndInsert(NSMutableSet *moves, diff --git a/Source/IGListDiffKit/IGListDiff.mm b/Source/IGListDiffKit/IGListDiff.mm index f9c21fde6..09ff37186 100644 --- a/Source/IGListDiffKit/IGListDiff.mm +++ b/Source/IGListDiffKit/IGListDiff.mm @@ -11,7 +11,7 @@ #import #import -#import +#import "IGListCompatibility.h" #import "IGListIndexPathResultInternal.h" #import "IGListIndexSetResultInternal.h" diff --git a/Source/IGListDiffKit/IGListDiffKit.h b/Source/IGListDiffKit/IGListDiffKit.h deleted file mode 100644 index 1527253db..000000000 --- a/Source/IGListDiffKit/IGListDiffKit.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) Facebook, Inc. and its affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -#import - -/** - * Project version number for IGListKit. - */ -FOUNDATION_EXPORT double IGListKitVersionNumber; - -/** - * Project version string for IGListKit. - */ -FOUNDATION_EXPORT const unsigned char IGListKitVersionString[]; - -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import diff --git a/Source/IGListDiffKit/Internal/IGListIndexPathResultInternal.h b/Source/IGListDiffKit/IGListIndexPathResultInternal.h similarity index 94% rename from Source/IGListDiffKit/Internal/IGListIndexPathResultInternal.h rename to Source/IGListDiffKit/IGListIndexPathResultInternal.h index 27be1842a..a6db5e756 100644 --- a/Source/IGListDiffKit/Internal/IGListIndexPathResultInternal.h +++ b/Source/IGListDiffKit/IGListIndexPathResultInternal.h @@ -7,7 +7,7 @@ #import -#import +#import "IGListIndexPathResult.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Source/IGListDiffKit/Internal/IGListIndexSetResultInternal.h b/Source/IGListDiffKit/IGListIndexSetResultInternal.h similarity index 94% rename from Source/IGListDiffKit/Internal/IGListIndexSetResultInternal.h rename to Source/IGListDiffKit/IGListIndexSetResultInternal.h index cc431eded..326adf014 100644 --- a/Source/IGListDiffKit/Internal/IGListIndexSetResultInternal.h +++ b/Source/IGListDiffKit/IGListIndexSetResultInternal.h @@ -7,7 +7,7 @@ #import -#import +#import "IGListIndexSetResult.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Source/IGListDiffKit/Internal/IGListMoveIndexInternal.h b/Source/IGListDiffKit/IGListMoveIndexInternal.h similarity index 90% rename from Source/IGListDiffKit/Internal/IGListMoveIndexInternal.h rename to Source/IGListDiffKit/IGListMoveIndexInternal.h index b0710345e..267c079bf 100644 --- a/Source/IGListDiffKit/Internal/IGListMoveIndexInternal.h +++ b/Source/IGListDiffKit/IGListMoveIndexInternal.h @@ -7,7 +7,7 @@ #import -#import +#import "IGListMoveIndex.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Source/IGListDiffKit/Internal/IGListMoveIndexPathInternal.h b/Source/IGListDiffKit/IGListMoveIndexPathInternal.h similarity index 100% rename from Source/IGListDiffKit/Internal/IGListMoveIndexPathInternal.h rename to Source/IGListDiffKit/IGListMoveIndexPathInternal.h diff --git a/Source/IGListDiffKit/IGListAssert.h b/Source/IGListDiffKit/include/IGListAssert.h similarity index 100% rename from Source/IGListDiffKit/IGListAssert.h rename to Source/IGListDiffKit/include/IGListAssert.h diff --git a/Source/IGListDiffKit/IGListBatchUpdateData.h b/Source/IGListDiffKit/include/IGListBatchUpdateData.h similarity index 95% rename from Source/IGListDiffKit/IGListBatchUpdateData.h rename to Source/IGListDiffKit/include/IGListBatchUpdateData.h index 04f825783..7350ac917 100644 --- a/Source/IGListDiffKit/IGListBatchUpdateData.h +++ b/Source/IGListDiffKit/include/IGListBatchUpdateData.h @@ -7,9 +7,9 @@ #import -#import -#import -#import +#import "IGListMacros.h" +#import "IGListMoveIndex.h" +#import "IGListMoveIndexPath.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Source/IGListDiffKit/IGListCompatibility.h b/Source/IGListDiffKit/include/IGListCompatibility.h similarity index 79% rename from Source/IGListDiffKit/IGListCompatibility.h rename to Source/IGListDiffKit/include/IGListCompatibility.h index 20f03bfa6..4a6572067 100644 --- a/Source/IGListDiffKit/IGListCompatibility.h +++ b/Source/IGListDiffKit/include/IGListCompatibility.h @@ -7,7 +7,7 @@ #import -#if TARGET_OS_EMBEDDED || TARGET_OS_SIMULATOR +#if TARGET_OS_EMBEDDED || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST #import #else #import diff --git a/Source/IGListDiffKit/IGListDiff.h b/Source/IGListDiffKit/include/IGListDiff.h similarity index 93% rename from Source/IGListDiffKit/IGListDiff.h rename to Source/IGListDiffKit/include/IGListDiff.h index 7c4b619cd..08b82be6a 100644 --- a/Source/IGListDiffKit/IGListDiff.h +++ b/Source/IGListDiffKit/include/IGListDiff.h @@ -7,9 +7,9 @@ #import -#import -#import -#import +#import "IGListDiffable.h" +#import "IGListIndexPathResult.h" +#import "IGListIndexSetResult.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Source/IGListDiffKit/include/IGListDiffKit.h b/Source/IGListDiffKit/include/IGListDiffKit.h new file mode 100644 index 000000000..6a1379b33 --- /dev/null +++ b/Source/IGListDiffKit/include/IGListDiffKit.h @@ -0,0 +1,30 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "IGListCompatibility.h" + +/** + * Project version number for IGListKit. + */ +FOUNDATION_EXPORT double IGListKitVersionNumber; + +/** + * Project version string for IGListKit. + */ +FOUNDATION_EXPORT const unsigned char IGListKitVersionString[]; + +#import "IGListAssert.h" +#import "IGListBatchUpdateData.h" +#import "IGListDiff.h" +#import "IGListDiffable.h" +#import "IGListExperiments.h" +#import "IGListIndexPathResult.h" +#import "IGListIndexSetResult.h" +#import "IGListMoveIndex.h" +#import "IGListMoveIndexPath.h" +#import "NSNumber+IGListDiffable.h" +#import "NSString+IGListDiffable.h" diff --git a/Source/IGListDiffKit/IGListDiffable.h b/Source/IGListDiffKit/include/IGListDiffable.h similarity index 100% rename from Source/IGListDiffKit/IGListDiffable.h rename to Source/IGListDiffKit/include/IGListDiffable.h diff --git a/Source/IGListDiffKit/IGListExperiments.h b/Source/IGListDiffKit/include/IGListExperiments.h similarity index 97% rename from Source/IGListDiffKit/IGListExperiments.h rename to Source/IGListDiffKit/include/IGListExperiments.h index d87c8f646..ece8e0570 100644 --- a/Source/IGListDiffKit/IGListExperiments.h +++ b/Source/IGListDiffKit/include/IGListExperiments.h @@ -7,7 +7,7 @@ #import -#import +#import "IGListDiff.h" /** Bitmask-able options used for pre-release feature testing. diff --git a/Source/IGListDiffKit/IGListIndexPathResult.h b/Source/IGListDiffKit/include/IGListIndexPathResult.h similarity index 97% rename from Source/IGListDiffKit/IGListIndexPathResult.h rename to Source/IGListDiffKit/include/IGListIndexPathResult.h index 956235dd4..831081c23 100644 --- a/Source/IGListDiffKit/IGListIndexPathResult.h +++ b/Source/IGListDiffKit/include/IGListIndexPathResult.h @@ -7,7 +7,7 @@ #import -#import +#import "IGListMoveIndexPath.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Source/IGListDiffKit/IGListIndexSetResult.h b/Source/IGListDiffKit/include/IGListIndexSetResult.h similarity index 97% rename from Source/IGListDiffKit/IGListIndexSetResult.h rename to Source/IGListDiffKit/include/IGListIndexSetResult.h index 8dcde858c..26c3dd8aa 100644 --- a/Source/IGListDiffKit/IGListIndexSetResult.h +++ b/Source/IGListDiffKit/include/IGListIndexSetResult.h @@ -7,7 +7,7 @@ #import -#import +#import "IGListMoveIndex.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Source/IGListDiffKit/IGListMacros.h b/Source/IGListDiffKit/include/IGListMacros.h similarity index 100% rename from Source/IGListDiffKit/IGListMacros.h rename to Source/IGListDiffKit/include/IGListMacros.h diff --git a/Source/IGListDiffKit/IGListMoveIndex.h b/Source/IGListDiffKit/include/IGListMoveIndex.h similarity index 100% rename from Source/IGListDiffKit/IGListMoveIndex.h rename to Source/IGListDiffKit/include/IGListMoveIndex.h diff --git a/Source/IGListDiffKit/IGListMoveIndexPath.h b/Source/IGListDiffKit/include/IGListMoveIndexPath.h similarity index 100% rename from Source/IGListDiffKit/IGListMoveIndexPath.h rename to Source/IGListDiffKit/include/IGListMoveIndexPath.h diff --git a/Source/IGListDiffKit/NSNumber+IGListDiffable.h b/Source/IGListDiffKit/include/NSNumber+IGListDiffable.h similarity index 90% rename from Source/IGListDiffKit/NSNumber+IGListDiffable.h rename to Source/IGListDiffKit/include/NSNumber+IGListDiffable.h index b3869e95d..6a988ce6c 100644 --- a/Source/IGListDiffKit/NSNumber+IGListDiffable.h +++ b/Source/IGListDiffKit/include/NSNumber+IGListDiffable.h @@ -7,7 +7,7 @@ #import -#import +#import "IGListDiffable.h" /** This category provides default `IGListDiffable` conformance for `NSNumber`. diff --git a/Source/IGListDiffKit/NSString+IGListDiffable.h b/Source/IGListDiffKit/include/NSString+IGListDiffable.h similarity index 90% rename from Source/IGListDiffKit/NSString+IGListDiffable.h rename to Source/IGListDiffKit/include/NSString+IGListDiffable.h index c0df83505..5a98ab159 100644 --- a/Source/IGListDiffKit/NSString+IGListDiffable.h +++ b/Source/IGListDiffKit/include/NSString+IGListDiffable.h @@ -7,7 +7,7 @@ #import -#import +#import "IGListDiffable.h" /** This category provides default `IGListDiffable` conformance for `NSString`. diff --git a/Source/IGListKit/Internal/IGListAdapter+DebugDescription.h b/Source/IGListKit/IGListAdapter+DebugDescription.h similarity index 88% rename from Source/IGListKit/Internal/IGListAdapter+DebugDescription.h rename to Source/IGListKit/IGListAdapter+DebugDescription.h index ede52ae69..58c470caf 100644 --- a/Source/IGListKit/Internal/IGListAdapter+DebugDescription.h +++ b/Source/IGListKit/IGListAdapter+DebugDescription.h @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -#import +#import "IGListAdapter.h" @interface IGListAdapter (DebugDescription) diff --git a/Source/IGListKit/Internal/IGListAdapter+DebugDescription.m b/Source/IGListKit/IGListAdapter+DebugDescription.m similarity index 100% rename from Source/IGListKit/Internal/IGListAdapter+DebugDescription.m rename to Source/IGListKit/IGListAdapter+DebugDescription.m diff --git a/Source/IGListKit/Internal/IGListAdapter+UICollectionView.h b/Source/IGListKit/IGListAdapter+UICollectionView.h similarity index 78% rename from Source/IGListKit/Internal/IGListAdapter+UICollectionView.h rename to Source/IGListKit/IGListAdapter+UICollectionView.h index f1faee85f..aa2fc77ff 100644 --- a/Source/IGListKit/Internal/IGListAdapter+UICollectionView.h +++ b/Source/IGListKit/IGListAdapter+UICollectionView.h @@ -7,8 +7,8 @@ #import -#import -#import +#import "IGListAdapter.h" +#import "IGListCollectionViewDelegateLayout.h" @interface IGListAdapter (UICollectionView) < diff --git a/Source/IGListKit/Internal/IGListAdapter+UICollectionView.m b/Source/IGListKit/IGListAdapter+UICollectionView.m similarity index 99% rename from Source/IGListKit/Internal/IGListAdapter+UICollectionView.m rename to Source/IGListKit/IGListAdapter+UICollectionView.m index d44ce64c9..92d8de2a9 100644 --- a/Source/IGListKit/Internal/IGListAdapter+UICollectionView.m +++ b/Source/IGListKit/IGListAdapter+UICollectionView.m @@ -7,10 +7,10 @@ #import "IGListAdapter+UICollectionView.h" -#import -#import -#import -#import +#import "IGListAssert.h" +#import "IGListAdapterInternal.h" +#import "IGListSectionController.h" +#import "IGListSectionControllerInternal.h" #import "IGListAdapterInternal.h" diff --git a/Source/IGListKit/IGListAdapter.m b/Source/IGListKit/IGListAdapter.m index f3ba9b8c1..85c5ff4c8 100644 --- a/Source/IGListKit/IGListAdapter.m +++ b/Source/IGListKit/IGListAdapter.m @@ -7,9 +7,9 @@ #import "IGListAdapterInternal.h" -#import -#import -#import +#import "IGListAssert.h" +#import "IGListAdapterUpdater.h" +#import "IGListSupplementaryViewSource.h" #import "IGListArrayUtilsInternal.h" #import "IGListDebugger.h" diff --git a/Source/IGListKit/Internal/IGListAdapterInternal.h b/Source/IGListKit/IGListAdapterInternal.h similarity index 96% rename from Source/IGListKit/Internal/IGListAdapterInternal.h rename to Source/IGListKit/IGListAdapterInternal.h index b8d71ba36..4e4082703 100644 --- a/Source/IGListKit/Internal/IGListAdapterInternal.h +++ b/Source/IGListKit/IGListAdapterInternal.h @@ -5,9 +5,9 @@ * LICENSE file in the root directory of this source tree. */ -#import -#import -#import +#import "IGListAdapter.h" +#import "IGListBatchContext.h" +#import "IGListCollectionContext.h" #import "IGListAdapter+UICollectionView.h" #import "IGListAdapterProxy.h" diff --git a/Source/IGListKit/Internal/IGListAdapterProxy.h b/Source/IGListKit/IGListAdapterProxy.h similarity index 93% rename from Source/IGListKit/Internal/IGListAdapterProxy.h rename to Source/IGListKit/IGListAdapterProxy.h index ec30ad0e2..91cbf30da 100644 --- a/Source/IGListKit/Internal/IGListAdapterProxy.h +++ b/Source/IGListKit/IGListAdapterProxy.h @@ -7,7 +7,11 @@ #import +#if !__has_include() +#import "IGListMacros.h" +#else #import +#endif @class IGListAdapter; diff --git a/Source/IGListKit/Internal/IGListAdapterProxy.m b/Source/IGListKit/IGListAdapterProxy.m similarity index 99% rename from Source/IGListKit/Internal/IGListAdapterProxy.m rename to Source/IGListKit/IGListAdapterProxy.m index 65e38f92a..6a858df77 100644 --- a/Source/IGListKit/Internal/IGListAdapterProxy.m +++ b/Source/IGListKit/IGListAdapterProxy.m @@ -7,7 +7,7 @@ #import "IGListAdapterProxy.h" -#import +#import "IGListAssert.h" #import "IGListCollectionViewDelegateLayout.h" diff --git a/Source/IGListKit/Internal/IGListAdapterUpdater+DebugDescription.h b/Source/IGListKit/IGListAdapterUpdater+DebugDescription.h similarity index 87% rename from Source/IGListKit/Internal/IGListAdapterUpdater+DebugDescription.h rename to Source/IGListKit/IGListAdapterUpdater+DebugDescription.h index 2f0a1ec59..04b1b14a9 100644 --- a/Source/IGListKit/Internal/IGListAdapterUpdater+DebugDescription.h +++ b/Source/IGListKit/IGListAdapterUpdater+DebugDescription.h @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -#import +#import "IGListAdapterUpdater.h" @interface IGListAdapterUpdater (DebugDescription) diff --git a/Source/IGListKit/Internal/IGListAdapterUpdater+DebugDescription.m b/Source/IGListKit/IGListAdapterUpdater+DebugDescription.m similarity index 100% rename from Source/IGListKit/Internal/IGListAdapterUpdater+DebugDescription.m rename to Source/IGListKit/IGListAdapterUpdater+DebugDescription.m diff --git a/Source/IGListKit/IGListAdapterUpdater.m b/Source/IGListKit/IGListAdapterUpdater.m index 301f784fb..9b3782bcf 100644 --- a/Source/IGListKit/IGListAdapterUpdater.m +++ b/Source/IGListKit/IGListAdapterUpdater.m @@ -8,7 +8,11 @@ #import "IGListAdapterUpdater.h" #import "IGListAdapterUpdaterInternal.h" +#if !__has_include() +#import "IGListAssert.h" +#else #import +#endif #import "IGListAdapterUpdaterHelpers.h" #import "IGListArrayUtilsInternal.h" diff --git a/Source/IGListKit/Internal/IGListAdapterUpdaterHelpers.h b/Source/IGListKit/IGListAdapterUpdaterHelpers.h similarity index 100% rename from Source/IGListKit/Internal/IGListAdapterUpdaterHelpers.h rename to Source/IGListKit/IGListAdapterUpdaterHelpers.h diff --git a/Source/IGListKit/Internal/IGListAdapterUpdaterHelpers.m b/Source/IGListKit/IGListAdapterUpdaterHelpers.m similarity index 97% rename from Source/IGListKit/Internal/IGListAdapterUpdaterHelpers.m rename to Source/IGListKit/IGListAdapterUpdaterHelpers.m index 1c51b38bb..3d2dd6ed9 100644 --- a/Source/IGListKit/Internal/IGListAdapterUpdaterHelpers.m +++ b/Source/IGListKit/IGListAdapterUpdaterHelpers.m @@ -7,10 +7,18 @@ #import "IGListAdapterUpdaterHelpers.h" +#if !__has_include() +#import "IGListAssert.h" +#import "IGListBatchUpdateData.h" +#import "IGListDiffable.h" +#import "IGListIndexSetResult.h" +#else #import #import #import #import +#endif + #import "IGListReloadIndexPath.h" #import "UICollectionView+IGListBatchUpdateData.h" diff --git a/Source/IGListKit/Internal/IGListAdapterUpdaterInternal.h b/Source/IGListKit/IGListAdapterUpdaterInternal.h similarity index 97% rename from Source/IGListKit/Internal/IGListAdapterUpdaterInternal.h rename to Source/IGListKit/IGListAdapterUpdaterInternal.h index 721e333c8..0b40cb834 100644 --- a/Source/IGListKit/Internal/IGListAdapterUpdaterInternal.h +++ b/Source/IGListKit/IGListAdapterUpdaterInternal.h @@ -8,7 +8,7 @@ #import #import -#import +#import "IGListMoveIndexPath.h" #import "IGListAdapterUpdater.h" #import "IGListBatchUpdateState.h" diff --git a/Source/IGListKit/Internal/IGListArrayUtilsInternal.h b/Source/IGListKit/IGListArrayUtilsInternal.h similarity index 96% rename from Source/IGListKit/Internal/IGListArrayUtilsInternal.h rename to Source/IGListKit/IGListArrayUtilsInternal.h index 9b0e405eb..ccef5f2ad 100644 --- a/Source/IGListKit/Internal/IGListArrayUtilsInternal.h +++ b/Source/IGListKit/IGListArrayUtilsInternal.h @@ -8,7 +8,7 @@ #ifndef IGListArrayUtilsInternal_h #define IGListArrayUtilsInternal_h -#import +#import "IGListAssert.h" static NSArray *objectsWithDuplicateIdentifiersRemoved(NSArray> *objects) { if (objects == nil) { diff --git a/Source/IGListKit/Internal/IGListBatchUpdateData+DebugDescription.h b/Source/IGListKit/IGListBatchUpdateData+DebugDescription.h similarity index 78% rename from Source/IGListKit/Internal/IGListBatchUpdateData+DebugDescription.h rename to Source/IGListKit/IGListBatchUpdateData+DebugDescription.h index f8cfb506d..be838bac0 100644 --- a/Source/IGListKit/Internal/IGListBatchUpdateData+DebugDescription.h +++ b/Source/IGListKit/IGListBatchUpdateData+DebugDescription.h @@ -7,7 +7,11 @@ #import +#if !__has_include() +#import "IGListBatchUpdateData.h" +#else #import +#endif @interface IGListBatchUpdateData (DebugDescription) diff --git a/Source/IGListKit/Internal/IGListBatchUpdateData+DebugDescription.m b/Source/IGListKit/IGListBatchUpdateData+DebugDescription.m similarity index 100% rename from Source/IGListKit/Internal/IGListBatchUpdateData+DebugDescription.m rename to Source/IGListKit/IGListBatchUpdateData+DebugDescription.m diff --git a/Source/IGListKit/Internal/IGListBatchUpdateState.h b/Source/IGListKit/IGListBatchUpdateState.h similarity index 100% rename from Source/IGListKit/Internal/IGListBatchUpdateState.h rename to Source/IGListKit/IGListBatchUpdateState.h diff --git a/Source/IGListKit/Internal/IGListBatchUpdateTransaction.h b/Source/IGListKit/IGListBatchUpdateTransaction.h similarity index 89% rename from Source/IGListKit/Internal/IGListBatchUpdateTransaction.h rename to Source/IGListKit/IGListBatchUpdateTransaction.h index 72449e674..b540640d4 100644 --- a/Source/IGListKit/Internal/IGListBatchUpdateTransaction.h +++ b/Source/IGListKit/IGListBatchUpdateTransaction.h @@ -7,9 +7,14 @@ #import +#if !__has_include() +#import "IGListMacros.h" +#else #import -#import -#import +#endif + +#import "IGListUpdatingDelegate.h" +#import "IGListUpdatingDelegateExperimental.h" #import "IGListUpdateTransactable.h" diff --git a/Source/IGListKit/Internal/IGListBatchUpdateTransaction.m b/Source/IGListKit/IGListBatchUpdateTransaction.m similarity index 98% rename from Source/IGListKit/Internal/IGListBatchUpdateTransaction.m rename to Source/IGListKit/IGListBatchUpdateTransaction.m index 07f52eb49..090f3c02a 100644 --- a/Source/IGListKit/Internal/IGListBatchUpdateTransaction.m +++ b/Source/IGListKit/IGListBatchUpdateTransaction.m @@ -7,10 +7,17 @@ #import "IGListBatchUpdateTransaction.h" +#if !__has_include() +#import "IGListAssert.h" +#import "IGListDiffable.h" +#import "IGListDiff.h" +#else #import #import #import -#import +#endif + +#import "IGListAdapterUpdaterDelegate.h" #import "IGListAdapterUpdaterHelpers.h" #import "IGListIndexSetResultInternal.h" diff --git a/Source/IGListKit/Internal/IGListBatchUpdates.h b/Source/IGListKit/IGListBatchUpdates.h similarity index 91% rename from Source/IGListKit/Internal/IGListBatchUpdates.h rename to Source/IGListKit/IGListBatchUpdates.h index cc0253608..65cf37e99 100644 --- a/Source/IGListKit/Internal/IGListBatchUpdates.h +++ b/Source/IGListKit/IGListBatchUpdates.h @@ -7,7 +7,11 @@ #import +#if !__has_include() +#import "IGListMacros.h" +#else #import +#endif @class IGListMoveIndexPath; @class IGListReloadIndexPath; diff --git a/Source/IGListKit/Internal/IGListBatchUpdates.m b/Source/IGListKit/IGListBatchUpdates.m similarity index 100% rename from Source/IGListKit/Internal/IGListBatchUpdates.m rename to Source/IGListKit/IGListBatchUpdates.m diff --git a/Source/IGListKit/Internal/IGListBindingSectionController+DebugDescription.h b/Source/IGListKit/IGListBindingSectionController+DebugDescription.h similarity index 85% rename from Source/IGListKit/Internal/IGListBindingSectionController+DebugDescription.h rename to Source/IGListKit/IGListBindingSectionController+DebugDescription.h index e275468a4..253ab1628 100644 --- a/Source/IGListKit/Internal/IGListBindingSectionController+DebugDescription.h +++ b/Source/IGListKit/IGListBindingSectionController+DebugDescription.h @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -#import +#import "IGListBindingSectionController.h" @interface IGListBindingSectionController (DebugDescription) diff --git a/Source/IGListKit/Internal/IGListBindingSectionController+DebugDescription.m b/Source/IGListKit/IGListBindingSectionController+DebugDescription.m similarity index 100% rename from Source/IGListKit/Internal/IGListBindingSectionController+DebugDescription.m rename to Source/IGListKit/IGListBindingSectionController+DebugDescription.m diff --git a/Source/IGListKit/IGListBindingSectionController.m b/Source/IGListKit/IGListBindingSectionController.m index c78cf13b2..6498e81cd 100644 --- a/Source/IGListKit/IGListBindingSectionController.m +++ b/Source/IGListKit/IGListBindingSectionController.m @@ -7,8 +7,8 @@ #import "IGListBindingSectionController.h" -#import -#import +#import "IGListAssert.h" +#import "IGListBindable.h" #import "IGListArrayUtilsInternal.h" diff --git a/Source/IGListKit/IGListBindingSingleSectionController.m b/Source/IGListKit/IGListBindingSingleSectionController.m index 3e1e8feda..d76f3acd1 100644 --- a/Source/IGListKit/IGListBindingSingleSectionController.m +++ b/Source/IGListKit/IGListBindingSingleSectionController.m @@ -7,7 +7,7 @@ #import "IGListBindingSingleSectionController.h" -#import +#import "IGListAssert.h" #import "IGListSectionControllerInternal.h" @interface IGListBindingSingleSectionController () diff --git a/Source/IGListKit/IGListCollectionViewLayout.mm b/Source/IGListKit/IGListCollectionViewLayout.mm index 0b2cef869..b265d9661 100644 --- a/Source/IGListKit/IGListCollectionViewLayout.mm +++ b/Source/IGListKit/IGListCollectionViewLayout.mm @@ -10,8 +10,8 @@ #import -#import -#import +#import "IGListAssert.h" +#import "IGListCollectionViewDelegateLayout.h" #import "UIScrollView+IGListKit.h" diff --git a/Source/IGListKit/Internal/IGListCollectionViewLayoutInternal.h b/Source/IGListKit/IGListCollectionViewLayoutInternal.h similarity index 100% rename from Source/IGListKit/Internal/IGListCollectionViewLayoutInternal.h rename to Source/IGListKit/IGListCollectionViewLayoutInternal.h diff --git a/Source/IGListKit/Internal/IGListDataSourceChangeTransaction.h b/Source/IGListKit/IGListDataSourceChangeTransaction.h similarity index 87% rename from Source/IGListKit/Internal/IGListDataSourceChangeTransaction.h rename to Source/IGListKit/IGListDataSourceChangeTransaction.h index 20f786404..07c7c30cd 100644 --- a/Source/IGListKit/Internal/IGListDataSourceChangeTransaction.h +++ b/Source/IGListKit/IGListDataSourceChangeTransaction.h @@ -7,8 +7,13 @@ #import +#if !__has_include() +#import "IGListMacros.h" +#else #import -#import +#endif + +#import "IGListUpdatingDelegate.h" #import "IGListUpdateTransactable.h" diff --git a/Source/IGListKit/Internal/IGListDataSourceChangeTransaction.m b/Source/IGListKit/IGListDataSourceChangeTransaction.m similarity index 100% rename from Source/IGListKit/Internal/IGListDataSourceChangeTransaction.m rename to Source/IGListKit/IGListDataSourceChangeTransaction.m diff --git a/Source/IGListKit/Internal/IGListDebugger.h b/Source/IGListKit/IGListDebugger.h similarity index 86% rename from Source/IGListKit/Internal/IGListDebugger.h rename to Source/IGListKit/IGListDebugger.h index d2b20ba94..649edfee0 100644 --- a/Source/IGListKit/Internal/IGListDebugger.h +++ b/Source/IGListKit/IGListDebugger.h @@ -7,7 +7,11 @@ #import +#if !__has_include() +#import "IGListMacros.h" +#else #import +#endif @class IGListAdapter; diff --git a/Source/IGListKit/Internal/IGListDebugger.m b/Source/IGListKit/IGListDebugger.m similarity index 100% rename from Source/IGListKit/Internal/IGListDebugger.m rename to Source/IGListKit/IGListDebugger.m diff --git a/Source/IGListKit/Internal/IGListDebuggingUtilities.h b/Source/IGListKit/IGListDebuggingUtilities.h similarity index 100% rename from Source/IGListKit/Internal/IGListDebuggingUtilities.h rename to Source/IGListKit/IGListDebuggingUtilities.h diff --git a/Source/IGListKit/Internal/IGListDebuggingUtilities.m b/Source/IGListKit/IGListDebuggingUtilities.m similarity index 100% rename from Source/IGListKit/Internal/IGListDebuggingUtilities.m rename to Source/IGListKit/IGListDebuggingUtilities.m diff --git a/Source/IGListKit/Internal/IGListDisplayHandler.h b/Source/IGListKit/IGListDisplayHandler.h similarity index 97% rename from Source/IGListKit/Internal/IGListDisplayHandler.h rename to Source/IGListKit/IGListDisplayHandler.h index 767173779..2aa40960d 100644 --- a/Source/IGListKit/Internal/IGListDisplayHandler.h +++ b/Source/IGListKit/IGListDisplayHandler.h @@ -7,7 +7,11 @@ #import +#if !__has_include() +#import "IGListMacros.h" +#else #import +#endif @class IGListAdapter; @class IGListSectionController; diff --git a/Source/IGListKit/Internal/IGListDisplayHandler.m b/Source/IGListKit/IGListDisplayHandler.m similarity index 95% rename from Source/IGListKit/Internal/IGListDisplayHandler.m rename to Source/IGListKit/IGListDisplayHandler.m index cb1efd6f2..7ab627bb2 100644 --- a/Source/IGListKit/Internal/IGListDisplayHandler.m +++ b/Source/IGListKit/IGListDisplayHandler.m @@ -7,11 +7,11 @@ #import "IGListDisplayHandler.h" -#import -#import -#import -#import -#import +#import "IGListAssert.h" +#import "IGListAdapter.h" +#import "IGListDisplayDelegate.h" +#import "IGListSectionController.h" +#import "IGListSectionControllerInternal.h" @interface IGListDisplayHandler () diff --git a/Source/IGListKit/IGListExperimentalAdapterUpdater.m b/Source/IGListKit/IGListExperimentalAdapterUpdater.m index 4f377b9ed..e10611a6d 100644 --- a/Source/IGListKit/IGListExperimentalAdapterUpdater.m +++ b/Source/IGListKit/IGListExperimentalAdapterUpdater.m @@ -7,7 +7,11 @@ #import "IGListExperimentalAdapterUpdater.h" +#if !__has_include() +#import "IGListAssert.h" +#else #import +#endif #import "IGListAdapterUpdaterHelpers.h" #import "IGListIndexSetResultInternal.h" diff --git a/Source/IGListKit/Internal/IGListExperimentalAdapterUpdaterInternal.h b/Source/IGListKit/IGListExperimentalAdapterUpdaterInternal.h similarity index 100% rename from Source/IGListKit/Internal/IGListExperimentalAdapterUpdaterInternal.h rename to Source/IGListKit/IGListExperimentalAdapterUpdaterInternal.h diff --git a/Source/IGListKit/IGListIndexPathResultInternal.h b/Source/IGListKit/IGListIndexPathResultInternal.h new file mode 120000 index 000000000..2b8ecd062 --- /dev/null +++ b/Source/IGListKit/IGListIndexPathResultInternal.h @@ -0,0 +1 @@ +../IGListDiffKit/IGListIndexPathResultInternal.h \ No newline at end of file diff --git a/Source/IGListKit/IGListIndexSetResultInternal.h b/Source/IGListKit/IGListIndexSetResultInternal.h new file mode 120000 index 000000000..9bc070624 --- /dev/null +++ b/Source/IGListKit/IGListIndexSetResultInternal.h @@ -0,0 +1 @@ +../IGListDiffKit/IGListIndexSetResultInternal.h \ No newline at end of file diff --git a/Source/IGListKit/Internal/IGListItemUpdatesCollector.h b/Source/IGListKit/IGListItemUpdatesCollector.h similarity index 91% rename from Source/IGListKit/Internal/IGListItemUpdatesCollector.h rename to Source/IGListKit/IGListItemUpdatesCollector.h index d2910ee67..a2b69f6f3 100644 --- a/Source/IGListKit/Internal/IGListItemUpdatesCollector.h +++ b/Source/IGListKit/IGListItemUpdatesCollector.h @@ -7,7 +7,11 @@ #import +#if !__has_include() +#import "IGListMacros.h" +#else #import +#endif @class IGListMoveIndexPath; @class IGListReloadIndexPath; diff --git a/Source/IGListKit/Internal/IGListItemUpdatesCollector.m b/Source/IGListKit/IGListItemUpdatesCollector.m similarity index 100% rename from Source/IGListKit/Internal/IGListItemUpdatesCollector.m rename to Source/IGListKit/IGListItemUpdatesCollector.m diff --git a/Source/IGListKit/IGListKit.h b/Source/IGListKit/IGListKit.h index 69351e969..97618755f 100644 --- a/Source/IGListKit/IGListKit.h +++ b/Source/IGListKit/IGListKit.h @@ -17,7 +17,7 @@ FOUNDATION_EXPORT double IGListKitVersionNumber; */ FOUNDATION_EXPORT const unsigned char IGListKitVersionString[]; -#if TARGET_OS_EMBEDDED || TARGET_OS_SIMULATOR +#if TARGET_OS_EMBEDDED || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST // iOS and tvOS only: diff --git a/Source/IGListKit/IGListMoveIndexInternal.h b/Source/IGListKit/IGListMoveIndexInternal.h new file mode 120000 index 000000000..bbb646d06 --- /dev/null +++ b/Source/IGListKit/IGListMoveIndexInternal.h @@ -0,0 +1 @@ +../IGListDiffKit/IGListMoveIndexInternal.h \ No newline at end of file diff --git a/Source/IGListKit/IGListMoveIndexPathInternal.h b/Source/IGListKit/IGListMoveIndexPathInternal.h new file mode 120000 index 000000000..1dbc1143e --- /dev/null +++ b/Source/IGListKit/IGListMoveIndexPathInternal.h @@ -0,0 +1 @@ +../IGListDiffKit/IGListMoveIndexPathInternal.h \ No newline at end of file diff --git a/Source/IGListKit/IGListReloadDataUpdater.m b/Source/IGListKit/IGListReloadDataUpdater.m index 851d95d97..46fc8d780 100644 --- a/Source/IGListKit/IGListReloadDataUpdater.m +++ b/Source/IGListKit/IGListReloadDataUpdater.m @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -#import +#import "IGListReloadDataUpdater.h" @implementation IGListReloadDataUpdater diff --git a/Source/IGListKit/Internal/IGListReloadIndexPath.h b/Source/IGListKit/IGListReloadIndexPath.h similarity index 93% rename from Source/IGListKit/Internal/IGListReloadIndexPath.h rename to Source/IGListKit/IGListReloadIndexPath.h index efb1ab822..7f02158cc 100644 --- a/Source/IGListKit/Internal/IGListReloadIndexPath.h +++ b/Source/IGListKit/IGListReloadIndexPath.h @@ -7,7 +7,11 @@ #import +#if !__has_include() +#import "IGListMacros.h" +#else #import +#endif NS_ASSUME_NONNULL_BEGIN diff --git a/Source/IGListKit/Internal/IGListReloadIndexPath.m b/Source/IGListKit/IGListReloadIndexPath.m similarity index 100% rename from Source/IGListKit/Internal/IGListReloadIndexPath.m rename to Source/IGListKit/IGListReloadIndexPath.m diff --git a/Source/IGListKit/Internal/IGListReloadTransaction.h b/Source/IGListKit/IGListReloadTransaction.h similarity index 90% rename from Source/IGListKit/Internal/IGListReloadTransaction.h rename to Source/IGListKit/IGListReloadTransaction.h index 182e3ab5a..5f57fcb52 100644 --- a/Source/IGListKit/Internal/IGListReloadTransaction.h +++ b/Source/IGListKit/IGListReloadTransaction.h @@ -7,8 +7,13 @@ #import +#if !__has_include() +#import "IGListMacros.h" +#else #import -#import +#endif + +#import "IGListUpdatingDelegate.h" #import "IGListUpdateTransactable.h" diff --git a/Source/IGListKit/Internal/IGListReloadTransaction.m b/Source/IGListKit/IGListReloadTransaction.m similarity index 98% rename from Source/IGListKit/Internal/IGListReloadTransaction.m rename to Source/IGListKit/IGListReloadTransaction.m index 94ce5fff4..39201ec08 100644 --- a/Source/IGListKit/Internal/IGListReloadTransaction.m +++ b/Source/IGListKit/IGListReloadTransaction.m @@ -7,7 +7,7 @@ #import "IGListReloadTransaction.h" -#import +#import "IGListAdapterUpdaterDelegate.h" @interface IGListReloadTransaction () // Given diff --git a/Source/IGListKit/IGListSectionController.m b/Source/IGListKit/IGListSectionController.m index 24e698e7f..84ccecc42 100644 --- a/Source/IGListKit/IGListSectionController.m +++ b/Source/IGListKit/IGListSectionController.m @@ -7,8 +7,13 @@ #import "IGListSectionControllerInternal.h" +#if !__has_include() +#import "IGListAssert.h" +#import "IGListMacros.h" +#else #import #import +#endif static NSString * const kIGListSectionControllerThreadKey = @"kIGListSectionControllerThreadKey"; diff --git a/Source/IGListKit/Internal/IGListSectionControllerInternal.h b/Source/IGListKit/IGListSectionControllerInternal.h similarity index 100% rename from Source/IGListKit/Internal/IGListSectionControllerInternal.h rename to Source/IGListKit/IGListSectionControllerInternal.h diff --git a/Source/IGListKit/Internal/IGListSectionMap+DebugDescription.h b/Source/IGListKit/IGListSectionMap+DebugDescription.h similarity index 100% rename from Source/IGListKit/Internal/IGListSectionMap+DebugDescription.h rename to Source/IGListKit/IGListSectionMap+DebugDescription.h diff --git a/Source/IGListKit/Internal/IGListSectionMap+DebugDescription.m b/Source/IGListKit/IGListSectionMap+DebugDescription.m similarity index 100% rename from Source/IGListKit/Internal/IGListSectionMap+DebugDescription.m rename to Source/IGListKit/IGListSectionMap+DebugDescription.m diff --git a/Source/IGListKit/Internal/IGListSectionMap.h b/Source/IGListKit/IGListSectionMap.h similarity index 96% rename from Source/IGListKit/Internal/IGListSectionMap.h rename to Source/IGListKit/IGListSectionMap.h index 52b08031c..f7eb25fd9 100644 --- a/Source/IGListKit/Internal/IGListSectionMap.h +++ b/Source/IGListKit/IGListSectionMap.h @@ -7,7 +7,11 @@ #import +#if !__has_include() +#import "IGListMacros.h" +#else #import +#endif @class IGListSectionController; diff --git a/Source/IGListKit/Internal/IGListSectionMap.m b/Source/IGListKit/IGListSectionMap.m similarity index 99% rename from Source/IGListKit/Internal/IGListSectionMap.m rename to Source/IGListKit/IGListSectionMap.m index ad94dace7..78f012484 100644 --- a/Source/IGListKit/Internal/IGListSectionMap.m +++ b/Source/IGListKit/IGListSectionMap.m @@ -7,7 +7,7 @@ #import "IGListSectionMap.h" -#import +#import "IGListAssert.h" #import "IGListSectionControllerInternal.h" diff --git a/Source/IGListKit/IGListSingleSectionController.m b/Source/IGListKit/IGListSingleSectionController.m index 233223edf..a74419c47 100644 --- a/Source/IGListKit/IGListSingleSectionController.m +++ b/Source/IGListKit/IGListSingleSectionController.m @@ -7,7 +7,7 @@ #import "IGListSingleSectionController.h" -#import +#import "IGListAssert.h" @interface IGListSingleSectionController () diff --git a/Source/IGListKit/Internal/IGListUpdateTransactable.h b/Source/IGListKit/IGListUpdateTransactable.h similarity index 94% rename from Source/IGListKit/Internal/IGListUpdateTransactable.h rename to Source/IGListKit/IGListUpdateTransactable.h index bdfd898b9..4cc79ae42 100644 --- a/Source/IGListKit/Internal/IGListUpdateTransactable.h +++ b/Source/IGListKit/IGListUpdateTransactable.h @@ -7,7 +7,11 @@ #import +#if !__has_include() +#import "IGListExperiments.h" +#else #import +#endif #import "IGListBatchUpdateState.h" #import "IGListUpdatingDelegate.h" diff --git a/Source/IGListKit/Internal/IGListUpdateTransactionBuilder.h b/Source/IGListKit/IGListUpdateTransactionBuilder.h similarity index 95% rename from Source/IGListKit/Internal/IGListUpdateTransactionBuilder.h rename to Source/IGListKit/IGListUpdateTransactionBuilder.h index 595a031b1..2b4bfc8e2 100644 --- a/Source/IGListKit/Internal/IGListUpdateTransactionBuilder.h +++ b/Source/IGListKit/IGListUpdateTransactionBuilder.h @@ -7,9 +7,14 @@ #import +#if !__has_include() +#import "IGListMacros.h" +#else #import -#import -#import +#endif + +#import "IGListUpdatingDelegate.h" +#import "IGListUpdatingDelegateExperimental.h" #import "IGListUpdateTransactable.h" diff --git a/Source/IGListKit/Internal/IGListUpdateTransactionBuilder.m b/Source/IGListKit/IGListUpdateTransactionBuilder.m similarity index 100% rename from Source/IGListKit/Internal/IGListUpdateTransactionBuilder.m rename to Source/IGListKit/IGListUpdateTransactionBuilder.m diff --git a/Source/IGListKit/Internal/IGListUpdatedObjectContainer.h b/Source/IGListKit/IGListUpdatedObjectContainer.h similarity index 100% rename from Source/IGListKit/Internal/IGListUpdatedObjectContainer.h rename to Source/IGListKit/IGListUpdatedObjectContainer.h diff --git a/Source/IGListKit/Internal/IGListUpdatedObjectContainer.m b/Source/IGListKit/IGListUpdatedObjectContainer.m similarity index 100% rename from Source/IGListKit/Internal/IGListUpdatedObjectContainer.m rename to Source/IGListKit/IGListUpdatedObjectContainer.m diff --git a/Source/IGListKit/Internal/IGListWorkingRangeHandler.h b/Source/IGListKit/IGListWorkingRangeHandler.h similarity index 100% rename from Source/IGListKit/Internal/IGListWorkingRangeHandler.h rename to Source/IGListKit/IGListWorkingRangeHandler.h diff --git a/Source/IGListKit/Internal/IGListWorkingRangeHandler.mm b/Source/IGListKit/IGListWorkingRangeHandler.mm similarity index 97% rename from Source/IGListKit/Internal/IGListWorkingRangeHandler.mm rename to Source/IGListKit/IGListWorkingRangeHandler.mm index b6091c79d..a096fd470 100644 --- a/Source/IGListKit/Internal/IGListWorkingRangeHandler.mm +++ b/Source/IGListKit/IGListWorkingRangeHandler.mm @@ -10,9 +10,9 @@ #import #import -#import -#import -#import +#import "IGListAssert.h" +#import "IGListAdapter.h" +#import "IGListSectionController.h" struct _IGListWorkingRangeHandlerIndexPath { NSInteger section; diff --git a/Source/IGListKit/Internal/UICollectionView+DebugDescription.h b/Source/IGListKit/UICollectionView+DebugDescription.h similarity index 100% rename from Source/IGListKit/Internal/UICollectionView+DebugDescription.h rename to Source/IGListKit/UICollectionView+DebugDescription.h diff --git a/Source/IGListKit/Internal/UICollectionView+DebugDescription.m b/Source/IGListKit/UICollectionView+DebugDescription.m similarity index 95% rename from Source/IGListKit/Internal/UICollectionView+DebugDescription.m rename to Source/IGListKit/UICollectionView+DebugDescription.m index 7778a74ac..8e55b092e 100644 --- a/Source/IGListKit/Internal/UICollectionView+DebugDescription.m +++ b/Source/IGListKit/UICollectionView+DebugDescription.m @@ -7,7 +7,11 @@ #import "UICollectionView+DebugDescription.h" +#if !__has_include() +#import "IGListMacros.h" +#else #import +#endif @implementation UICollectionView (DebugDescription) diff --git a/Source/IGListKit/Internal/UICollectionView+IGListBatchUpdateData.h b/Source/IGListKit/UICollectionView+IGListBatchUpdateData.h similarity index 100% rename from Source/IGListKit/Internal/UICollectionView+IGListBatchUpdateData.h rename to Source/IGListKit/UICollectionView+IGListBatchUpdateData.h diff --git a/Source/IGListKit/Internal/UICollectionView+IGListBatchUpdateData.m b/Source/IGListKit/UICollectionView+IGListBatchUpdateData.m similarity index 90% rename from Source/IGListKit/Internal/UICollectionView+IGListBatchUpdateData.m rename to Source/IGListKit/UICollectionView+IGListBatchUpdateData.m index e88e3d6c4..f39adc3e9 100644 --- a/Source/IGListKit/Internal/UICollectionView+IGListBatchUpdateData.m +++ b/Source/IGListKit/UICollectionView+IGListBatchUpdateData.m @@ -7,7 +7,11 @@ #import "UICollectionView+IGListBatchUpdateData.h" +#if !__has_include() +#import "IGListBatchUpdateData.h" +#else #import +#endif @implementation UICollectionView (IGListBatchUpdateData) diff --git a/Source/IGListKit/Internal/UICollectionViewLayout+InteractiveReordering.h b/Source/IGListKit/UICollectionViewLayout+InteractiveReordering.h similarity index 95% rename from Source/IGListKit/Internal/UICollectionViewLayout+InteractiveReordering.h rename to Source/IGListKit/UICollectionViewLayout+InteractiveReordering.h index 956729532..b5c96b8fc 100644 --- a/Source/IGListKit/Internal/UICollectionViewLayout+InteractiveReordering.h +++ b/Source/IGListKit/UICollectionViewLayout+InteractiveReordering.h @@ -7,7 +7,7 @@ #import -#import +#import "IGListAdapter.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Source/IGListKit/Internal/UICollectionViewLayout+InteractiveReordering.m b/Source/IGListKit/UICollectionViewLayout+InteractiveReordering.m similarity index 99% rename from Source/IGListKit/Internal/UICollectionViewLayout+InteractiveReordering.m rename to Source/IGListKit/UICollectionViewLayout+InteractiveReordering.m index 5a4f3e94e..383bb7bec 100644 --- a/Source/IGListKit/Internal/UICollectionViewLayout+InteractiveReordering.m +++ b/Source/IGListKit/UICollectionViewLayout+InteractiveReordering.m @@ -9,8 +9,8 @@ #import -#import -#import +#import "IGListAdapterInternal.h" +#import "IGListSectionController.h" @implementation UICollectionViewLayout (InteractiveReordering) diff --git a/Source/IGListKit/Internal/UIScrollView+IGListKit.h b/Source/IGListKit/UIScrollView+IGListKit.h similarity index 100% rename from Source/IGListKit/Internal/UIScrollView+IGListKit.h rename to Source/IGListKit/UIScrollView+IGListKit.h diff --git a/Source/IGListKit/Internal/UIScrollView+IGListKit.m b/Source/IGListKit/UIScrollView+IGListKit.m similarity index 100% rename from Source/IGListKit/Internal/UIScrollView+IGListKit.m rename to Source/IGListKit/UIScrollView+IGListKit.m diff --git a/Source/IGListKit/IGListAdapter.h b/Source/IGListKit/include/IGListAdapter.h similarity index 96% rename from Source/IGListKit/IGListAdapter.h rename to Source/IGListKit/include/IGListAdapter.h index fa6192d6e..a19885d25 100644 --- a/Source/IGListKit/IGListAdapter.h +++ b/Source/IGListKit/include/IGListAdapter.h @@ -7,14 +7,20 @@ #import +#if !__has_include() +#import "IGListExperiments.h" +#import "IGListMacros.h" +#else #import #import -#import -#import -#import -#import -#import -#import +#endif + +#import "IGListAdapterDataSource.h" +#import "IGListAdapterDelegate.h" +#import "IGListAdapterMoveDelegate.h" +#import "IGListAdapterPerformanceDelegate.h" +#import "IGListAdapterUpdateListener.h" +#import "IGListCollectionContext.h" @protocol IGListUpdatingDelegate; diff --git a/Source/IGListKit/IGListAdapterDataSource.h b/Source/IGListKit/include/IGListAdapterDataSource.h similarity index 98% rename from Source/IGListKit/IGListAdapterDataSource.h rename to Source/IGListKit/include/IGListAdapterDataSource.h index fea7ac0c5..ec7e27a66 100644 --- a/Source/IGListKit/IGListAdapterDataSource.h +++ b/Source/IGListKit/include/IGListAdapterDataSource.h @@ -7,7 +7,7 @@ #import -#import +#import "IGListDiffable.h" @class IGListAdapter; @class IGListSectionController; diff --git a/Source/IGListKit/IGListAdapterDelegate.h b/Source/IGListKit/include/IGListAdapterDelegate.h similarity index 100% rename from Source/IGListKit/IGListAdapterDelegate.h rename to Source/IGListKit/include/IGListAdapterDelegate.h diff --git a/Source/IGListKit/IGListAdapterMoveDelegate.h b/Source/IGListKit/include/IGListAdapterMoveDelegate.h similarity index 100% rename from Source/IGListKit/IGListAdapterMoveDelegate.h rename to Source/IGListKit/include/IGListAdapterMoveDelegate.h diff --git a/Source/IGListKit/IGListAdapterPerformanceDelegate.h b/Source/IGListKit/include/IGListAdapterPerformanceDelegate.h similarity index 100% rename from Source/IGListKit/IGListAdapterPerformanceDelegate.h rename to Source/IGListKit/include/IGListAdapterPerformanceDelegate.h diff --git a/Source/IGListKit/IGListAdapterUpdateListener.h b/Source/IGListKit/include/IGListAdapterUpdateListener.h similarity index 100% rename from Source/IGListKit/IGListAdapterUpdateListener.h rename to Source/IGListKit/include/IGListAdapterUpdateListener.h diff --git a/Source/IGListKit/IGListAdapterUpdater.h b/Source/IGListKit/include/IGListAdapterUpdater.h similarity index 86% rename from Source/IGListKit/IGListAdapterUpdater.h rename to Source/IGListKit/include/IGListAdapterUpdater.h index e330abf4e..4ff2d0c21 100644 --- a/Source/IGListKit/IGListAdapterUpdater.h +++ b/Source/IGListKit/include/IGListAdapterUpdater.h @@ -7,8 +7,13 @@ #import +#if !__has_include() +#import "IGListMacros.h" +#else #import -#import +#endif + +#import "IGListAdapterUpdaterCompatible.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Source/IGListKit/IGListAdapterUpdaterCompatible.h b/Source/IGListKit/include/IGListAdapterUpdaterCompatible.h similarity index 94% rename from Source/IGListKit/IGListAdapterUpdaterCompatible.h rename to Source/IGListKit/include/IGListAdapterUpdaterCompatible.h index dc4013d6f..1a7e28148 100644 --- a/Source/IGListKit/IGListAdapterUpdaterCompatible.h +++ b/Source/IGListKit/include/IGListAdapterUpdaterCompatible.h @@ -7,9 +7,13 @@ #import -#import +#import "IGListUpdatingDelegate.h" +#if !__has_include() +#import "IGListExperiments.h" +#else #import -#import +#endif +#import "IGListAdapterUpdaterDelegate.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Source/IGListKit/IGListAdapterUpdaterDelegate.h b/Source/IGListKit/include/IGListAdapterUpdaterDelegate.h similarity index 98% rename from Source/IGListKit/IGListAdapterUpdaterDelegate.h rename to Source/IGListKit/include/IGListAdapterUpdaterDelegate.h index c077f1705..b3c1af814 100644 --- a/Source/IGListKit/IGListAdapterUpdaterDelegate.h +++ b/Source/IGListKit/include/IGListAdapterUpdaterDelegate.h @@ -7,7 +7,11 @@ #import +#if !__has_include() +#import "IGListBatchUpdateData.h" +#else #import +#endif @class IGListIndexSetResult; @protocol IGListDiffable; diff --git a/Source/IGListKit/IGListBatchContext.h b/Source/IGListKit/include/IGListBatchContext.h similarity index 100% rename from Source/IGListKit/IGListBatchContext.h rename to Source/IGListKit/include/IGListBatchContext.h diff --git a/Source/IGListKit/IGListBindable.h b/Source/IGListKit/include/IGListBindable.h similarity index 100% rename from Source/IGListKit/IGListBindable.h rename to Source/IGListKit/include/IGListBindable.h diff --git a/Source/IGListKit/IGListBindingSectionController.h b/Source/IGListKit/include/IGListBindingSectionController.h similarity index 93% rename from Source/IGListKit/IGListBindingSectionController.h rename to Source/IGListKit/include/IGListBindingSectionController.h index 4ae36d4f1..d8de2e2b4 100644 --- a/Source/IGListKit/IGListBindingSectionController.h +++ b/Source/IGListKit/include/IGListBindingSectionController.h @@ -7,10 +7,10 @@ #import -#import -#import -#import -#import +#import "IGListMacros.h" +#import "IGListBindingSectionControllerDataSource.h" +#import "IGListBindingSectionControllerSelectionDelegate.h" +#import "IGListSectionController.h" @protocol IGListDiffable; diff --git a/Source/IGListKit/IGListBindingSectionControllerDataSource.h b/Source/IGListKit/include/IGListBindingSectionControllerDataSource.h similarity index 100% rename from Source/IGListKit/IGListBindingSectionControllerDataSource.h rename to Source/IGListKit/include/IGListBindingSectionControllerDataSource.h diff --git a/Source/IGListKit/IGListBindingSectionControllerSelectionDelegate.h b/Source/IGListKit/include/IGListBindingSectionControllerSelectionDelegate.h similarity index 100% rename from Source/IGListKit/IGListBindingSectionControllerSelectionDelegate.h rename to Source/IGListKit/include/IGListBindingSectionControllerSelectionDelegate.h diff --git a/Source/IGListKit/IGListBindingSingleSectionController.h b/Source/IGListKit/include/IGListBindingSingleSectionController.h similarity index 92% rename from Source/IGListKit/IGListBindingSingleSectionController.h rename to Source/IGListKit/include/IGListBindingSingleSectionController.h index 3594070fa..7b5439cb1 100644 --- a/Source/IGListKit/IGListBindingSingleSectionController.h +++ b/Source/IGListKit/include/IGListBindingSingleSectionController.h @@ -7,8 +7,13 @@ #import +#if !__has_include() +#import "IGListMacros.h" +#else #import -#import +#endif + +#import "IGListSectionController.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Source/IGListKit/IGListCollectionContext.h b/Source/IGListKit/include/IGListCollectionContext.h similarity index 98% rename from Source/IGListKit/IGListCollectionContext.h rename to Source/IGListKit/include/IGListCollectionContext.h index be16b3eaf..ef2244a40 100644 --- a/Source/IGListKit/IGListCollectionContext.h +++ b/Source/IGListKit/include/IGListCollectionContext.h @@ -7,9 +7,13 @@ #import +#if !__has_include() +#import "IGListExperiments.h" +#else #import -#import -#import +#endif +#import "IGListBatchContext.h" +#import "IGListCollectionScrollingTraits.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Source/IGListKit/IGListCollectionScrollingTraits.h b/Source/IGListKit/include/IGListCollectionScrollingTraits.h similarity index 100% rename from Source/IGListKit/IGListCollectionScrollingTraits.h rename to Source/IGListKit/include/IGListCollectionScrollingTraits.h diff --git a/Source/IGListKit/IGListCollectionView.h b/Source/IGListKit/include/IGListCollectionView.h similarity index 100% rename from Source/IGListKit/IGListCollectionView.h rename to Source/IGListKit/include/IGListCollectionView.h diff --git a/Source/IGListKit/IGListCollectionViewDelegateLayout.h b/Source/IGListKit/include/IGListCollectionViewDelegateLayout.h similarity index 100% rename from Source/IGListKit/IGListCollectionViewDelegateLayout.h rename to Source/IGListKit/include/IGListCollectionViewDelegateLayout.h diff --git a/Source/IGListKit/IGListCollectionViewLayout.h b/Source/IGListKit/include/IGListCollectionViewLayout.h similarity index 98% rename from Source/IGListKit/IGListCollectionViewLayout.h rename to Source/IGListKit/include/IGListCollectionViewLayout.h index f59bec1c7..51055428c 100644 --- a/Source/IGListKit/IGListCollectionViewLayout.h +++ b/Source/IGListKit/include/IGListCollectionViewLayout.h @@ -7,7 +7,11 @@ #import +#if !__has_include() +#import "IGListMacros.h" +#else #import +#endif #import "IGListCollectionViewLayoutCompatible.h" diff --git a/Source/IGListKit/IGListCollectionViewLayoutCompatible.h b/Source/IGListKit/include/IGListCollectionViewLayoutCompatible.h similarity index 100% rename from Source/IGListKit/IGListCollectionViewLayoutCompatible.h rename to Source/IGListKit/include/IGListCollectionViewLayoutCompatible.h diff --git a/Source/IGListKit/IGListDisplayDelegate.h b/Source/IGListKit/include/IGListDisplayDelegate.h similarity index 100% rename from Source/IGListKit/IGListDisplayDelegate.h rename to Source/IGListKit/include/IGListDisplayDelegate.h diff --git a/Source/IGListKit/IGListExperimentalAdapterUpdater.h b/Source/IGListKit/include/IGListExperimentalAdapterUpdater.h similarity index 84% rename from Source/IGListKit/IGListExperimentalAdapterUpdater.h rename to Source/IGListKit/include/IGListExperimentalAdapterUpdater.h index 1d6a1a372..901fa7ba1 100644 --- a/Source/IGListKit/IGListExperimentalAdapterUpdater.h +++ b/Source/IGListKit/include/IGListExperimentalAdapterUpdater.h @@ -7,9 +7,14 @@ #import +#if !__has_include() +#import "IGListMacros.h" +#else #import -#import -#import +#endif + +#import "IGListAdapterUpdaterCompatible.h" +#import "IGListUpdatingDelegateExperimental.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Source/IGListKit/IGListGenericSectionController.h b/Source/IGListKit/include/IGListGenericSectionController.h similarity index 96% rename from Source/IGListKit/IGListGenericSectionController.h rename to Source/IGListKit/include/IGListGenericSectionController.h index 25f84e3b7..cd2c6ad75 100644 --- a/Source/IGListKit/IGListGenericSectionController.h +++ b/Source/IGListKit/include/IGListGenericSectionController.h @@ -5,7 +5,7 @@ * LICENSE file in the root directory of this source tree. */ -#import +#import "IGListSectionController.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Source/IGListKit/include/IGListKit.h b/Source/IGListKit/include/IGListKit.h new file mode 100644 index 000000000..7a225c5ad --- /dev/null +++ b/Source/IGListKit/include/IGListKit.h @@ -0,0 +1,65 @@ +/* + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +#import "IGListCompatibility.h" + +/** + * Project version number for IGListKit. + */ +FOUNDATION_EXPORT double IGListKitVersionNumber; + +/** + * Project version string for IGListKit. + */ +FOUNDATION_EXPORT const unsigned char IGListKitVersionString[]; + +#if TARGET_OS_EMBEDDED || TARGET_OS_SIMULATOR || TARGET_OS_MACCATALYST + +// iOS and tvOS only: + +#import "IGListAdapter.h" +#import "IGListAdapterDataSource.h" +#import "IGListAdapterDelegate.h" +#import "IGListAdapterUpdateListener.h" +#import "IGListAdapterUpdater.h" +#import "IGListAdapterUpdaterDelegate.h" +#import "IGListBatchContext.h" +#import "IGListBindable.h" +#import "IGListBindingSectionController.h" +#import "IGListBindingSectionControllerDataSource.h" +#import "IGListBindingSectionControllerSelectionDelegate.h" +#import "IGListCollectionContext.h" +#import "IGListCollectionView.h" +#import "IGListCollectionViewLayout.h" +#import "IGListDisplayDelegate.h" +#import "IGListGenericSectionController.h" +#import "IGListCollectionViewDelegateLayout.h" +#import "IGListReloadDataUpdater.h" +#import "IGListScrollDelegate.h" +#import "IGListSectionController.h" +#import "IGListSingleSectionController.h" +#import "IGListSupplementaryViewSource.h" +#import "IGListTransitionDelegate.h" +#import "IGListUpdatingDelegate.h" +#import "IGListWorkingRangeDelegate.h" +#import "IGListCollectionViewDelegateLayout.h" + +#endif + +// Shared (iOS, tvOS, macOS compatible): + +#import "IGListAssert.h" +#import "IGListBatchUpdateData.h" +#import "IGListDiff.h" +#import "IGListDiffable.h" +#import "IGListExperiments.h" +#import "IGListIndexPathResult.h" +#import "IGListIndexSetResult.h" +#import "IGListMoveIndex.h" +#import "IGListMoveIndexPath.h" +#import "NSNumber+IGListDiffable.h" +#import "NSString+IGListDiffable.h" diff --git a/Source/IGListKit/IGListReloadDataUpdater.h b/Source/IGListKit/include/IGListReloadDataUpdater.h similarity index 84% rename from Source/IGListKit/IGListReloadDataUpdater.h rename to Source/IGListKit/include/IGListReloadDataUpdater.h index 5d0626385..1660e2479 100644 --- a/Source/IGListKit/IGListReloadDataUpdater.h +++ b/Source/IGListKit/include/IGListReloadDataUpdater.h @@ -7,8 +7,13 @@ #import +#if !__has_include() +#import "IGListMacros.h" +#else #import -#import +#endif + +#import "IGListUpdatingDelegate.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Source/IGListKit/IGListScrollDelegate.h b/Source/IGListKit/include/IGListScrollDelegate.h similarity index 100% rename from Source/IGListKit/IGListScrollDelegate.h rename to Source/IGListKit/include/IGListScrollDelegate.h diff --git a/Source/IGListKit/IGListSectionController.h b/Source/IGListKit/include/IGListSectionController.h similarity index 96% rename from Source/IGListKit/IGListSectionController.h rename to Source/IGListKit/include/IGListSectionController.h index 446346ad4..de32862e8 100644 --- a/Source/IGListKit/IGListSectionController.h +++ b/Source/IGListKit/include/IGListSectionController.h @@ -7,12 +7,12 @@ #import -#import -#import -#import -#import -#import -#import +#import "IGListCollectionContext.h" +#import "IGListDisplayDelegate.h" +#import "IGListScrollDelegate.h" +#import "IGListSupplementaryViewSource.h" +#import "IGListTransitionDelegate.h" +#import "IGListWorkingRangeDelegate.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Source/IGListKit/IGListSingleSectionController.h b/Source/IGListKit/include/IGListSingleSectionController.h similarity index 97% rename from Source/IGListKit/IGListSingleSectionController.h rename to Source/IGListKit/include/IGListSingleSectionController.h index 68e30874b..582d03e9f 100644 --- a/Source/IGListKit/IGListSingleSectionController.h +++ b/Source/IGListKit/include/IGListSingleSectionController.h @@ -7,8 +7,13 @@ #import +#if !__has_include() +#import "IGListMacros.h" +#else #import -#import +#endif + +#import "IGListSectionController.h" NS_ASSUME_NONNULL_BEGIN diff --git a/Source/IGListKit/IGListSupplementaryViewSource.h b/Source/IGListKit/include/IGListSupplementaryViewSource.h similarity index 100% rename from Source/IGListKit/IGListSupplementaryViewSource.h rename to Source/IGListKit/include/IGListSupplementaryViewSource.h diff --git a/Source/IGListKit/IGListTransitionData.h b/Source/IGListKit/include/IGListTransitionData.h similarity index 93% rename from Source/IGListKit/IGListTransitionData.h rename to Source/IGListKit/include/IGListTransitionData.h index 0236660ad..854ee3bef 100644 --- a/Source/IGListKit/IGListTransitionData.h +++ b/Source/IGListKit/include/IGListTransitionData.h @@ -7,7 +7,11 @@ #import +#if !__has_include() +#import "IGListMacros.h" +#else #import +#endif NS_ASSUME_NONNULL_BEGIN diff --git a/Source/IGListKit/IGListTransitionDelegate.h b/Source/IGListKit/include/IGListTransitionDelegate.h similarity index 100% rename from Source/IGListKit/IGListTransitionDelegate.h rename to Source/IGListKit/include/IGListTransitionDelegate.h diff --git a/Source/IGListKit/IGListUpdatingDelegate.h b/Source/IGListKit/include/IGListUpdatingDelegate.h similarity index 100% rename from Source/IGListKit/IGListUpdatingDelegate.h rename to Source/IGListKit/include/IGListUpdatingDelegate.h diff --git a/Source/IGListKit/IGListUpdatingDelegateExperimental.h b/Source/IGListKit/include/IGListUpdatingDelegateExperimental.h similarity index 100% rename from Source/IGListKit/IGListUpdatingDelegateExperimental.h rename to Source/IGListKit/include/IGListUpdatingDelegateExperimental.h diff --git a/Source/IGListKit/IGListWorkingRangeDelegate.h b/Source/IGListKit/include/IGListWorkingRangeDelegate.h similarity index 100% rename from Source/IGListKit/IGListWorkingRangeDelegate.h rename to Source/IGListKit/include/IGListWorkingRangeDelegate.h diff --git a/Source/IGListSwiftKit/ListIdentifiable.swift b/Source/IGListSwiftKit/ListIdentifiable.swift index 8ec4f3d83..f46f395cf 100644 --- a/Source/IGListSwiftKit/ListIdentifiable.swift +++ b/Source/IGListSwiftKit/ListIdentifiable.swift @@ -5,7 +5,12 @@ * LICENSE file in the root directory of this source tree. */ +#if SWIFT_PACKAGE || USE_SWIFT_PACKAGE_FROM_XCODE +import IGListKit +#else import IGListDiffKit +#endif + /// The `ListIdentifiable` protocol is a subset of `ListDiffable`'s functionality, /// for use with Swift value types and `ListValueSectionController`. diff --git a/Tests/IGListDiffSwiftTests.swift b/Tests/IGListDiffSwiftTests.swift index 8873a677d..6e45e5997 100644 --- a/Tests/IGListDiffSwiftTests.swift +++ b/Tests/IGListDiffSwiftTests.swift @@ -6,7 +6,7 @@ */ import XCTest -import IGListKit +import IGListDiffKit class SwiftClass: ListDiffable { diff --git a/scripts/build_docs.sh b/scripts/build_docs.sh index 6e85ef18c..e66207cdb 100755 --- a/scripts/build_docs.sh +++ b/scripts/build_docs.sh @@ -25,7 +25,7 @@ jazzy \ --sdk iphonesimulator \ --module 'IGListKit' \ --framework-root $SOURCEDIR/ \ - --umbrella-header $SOURCEDIR/$SOURCE_TMP/IGListKit.h \ + --umbrella-header $SOURCEDIR/$SOURCE_TMP/include/IGListKit.h \ --readme README.md \ --documentation "Guides/*.md" \ --output docs/