Skip to content

Commit

Permalink
Release 30.10.0
Browse files Browse the repository at this point in the history
9f014a51813a63653e299d0269a6fa401f455f5e
  • Loading branch information
robot-divkit committed Jul 22, 2024
1 parent aba0942 commit 9ab2507
Show file tree
Hide file tree
Showing 65 changed files with 328 additions and 110 deletions.
7 changes: 7 additions & 0 deletions .mapping.json
Original file line number Diff line number Diff line change
Expand Up @@ -637,6 +637,7 @@
"LayoutKit/LayoutKit/UI/Actions/UIActionEventPerforming.swift":"divkit/public-ios/LayoutKit/LayoutKit/UI/Actions/UIActionEventPerforming.swift",
"LayoutKit/LayoutKit/UI/Actions/UIActionEventPerformingAdapter.swift":"divkit/public-ios/LayoutKit/LayoutKit/UI/Actions/UIActionEventPerformingAdapter.swift",
"LayoutKit/LayoutKit/UI/Actions/UIActionExtensions.swift":"divkit/public-ios/LayoutKit/LayoutKit/UI/Actions/UIActionExtensions.swift",
"LayoutKit/LayoutKit/UI/Base/ElementsTransformation.swift":"divkit/public-ios/LayoutKit/LayoutKit/UI/Base/ElementsTransformation.swift",
"LayoutKit/LayoutKit/UI/Base/GalleryVisibilityDelegate.swift":"divkit/public-ios/LayoutKit/LayoutKit/UI/Base/GalleryVisibilityDelegate.swift",
"LayoutKit/LayoutKit/UI/Base/GalleryVisibilityState.swift":"divkit/public-ios/LayoutKit/LayoutKit/UI/Base/GalleryVisibilityState.swift",
"LayoutKit/LayoutKit/UI/Base/GenericCollectionLayout.swift":"divkit/public-ios/LayoutKit/LayoutKit/UI/Base/GenericCollectionLayout.swift",
Expand Down Expand Up @@ -737,6 +738,7 @@
"LayoutKit/LayoutKit/ViewModels/NinePatchImage.swift":"divkit/public-ios/LayoutKit/LayoutKit/ViewModels/NinePatchImage.swift",
"LayoutKit/LayoutKit/ViewModels/PagerViewLayout.swift":"divkit/public-ios/LayoutKit/LayoutKit/ViewModels/PagerViewLayout.swift",
"LayoutKit/LayoutKit/ViewModels/PagerViewState.swift":"divkit/public-ios/LayoutKit/LayoutKit/ViewModels/PagerViewState.swift",
"LayoutKit/LayoutKit/ViewModels/ScrollDirection.swift":"divkit/public-ios/LayoutKit/LayoutKit/ViewModels/ScrollDirection.swift",
"LayoutKit/LayoutKit/ViewModels/TabbedPages/TabContentsViewLayout.swift":"divkit/public-ios/LayoutKit/LayoutKit/ViewModels/TabbedPages/TabContentsViewLayout.swift",
"LayoutKit/LayoutKit/ViewModels/TabbedPages/TabContentsViewModel.swift":"divkit/public-ios/LayoutKit/LayoutKit/ViewModels/TabbedPages/TabContentsViewModel.swift",
"LayoutKit/LayoutKit/ViewModels/TabbedPages/TabInterimItemExtensions.swift":"divkit/public-ios/LayoutKit/LayoutKit/ViewModels/TabbedPages/TabInterimItemExtensions.swift",
Expand Down Expand Up @@ -889,6 +891,7 @@
"Specs/DivKit/29.9.0/DivKit.podspec":"divkit/public-ios/Specs/DivKit/29.9.0/DivKit.podspec",
"Specs/DivKit/30.0.0/DivKit.podspec":"divkit/public-ios/Specs/DivKit/30.0.0/DivKit.podspec",
"Specs/DivKit/30.1.0/DivKit.podspec":"divkit/public-ios/Specs/DivKit/30.1.0/DivKit.podspec",
"Specs/DivKit/30.10.0/DivKit.podspec":"divkit/public-ios/Specs/DivKit/30.10.0/DivKit.podspec",
"Specs/DivKit/30.2.0/DivKit.podspec":"divkit/public-ios/Specs/DivKit/30.2.0/DivKit.podspec",
"Specs/DivKit/30.3.0/DivKit.podspec":"divkit/public-ios/Specs/DivKit/30.3.0/DivKit.podspec",
"Specs/DivKit/30.4.0/DivKit.podspec":"divkit/public-ios/Specs/DivKit/30.4.0/DivKit.podspec",
Expand Down Expand Up @@ -950,6 +953,7 @@
"Specs/DivKitExtensions/29.9.0/DivKitExtensions.podspec":"divkit/public-ios/Specs/DivKitExtensions/29.9.0/DivKitExtensions.podspec",
"Specs/DivKitExtensions/30.0.0/DivKitExtensions.podspec":"divkit/public-ios/Specs/DivKitExtensions/30.0.0/DivKitExtensions.podspec",
"Specs/DivKitExtensions/30.1.0/DivKitExtensions.podspec":"divkit/public-ios/Specs/DivKitExtensions/30.1.0/DivKitExtensions.podspec",
"Specs/DivKitExtensions/30.10.0/DivKitExtensions.podspec":"divkit/public-ios/Specs/DivKitExtensions/30.10.0/DivKitExtensions.podspec",
"Specs/DivKitExtensions/30.2.0/DivKitExtensions.podspec":"divkit/public-ios/Specs/DivKitExtensions/30.2.0/DivKitExtensions.podspec",
"Specs/DivKitExtensions/30.3.0/DivKitExtensions.podspec":"divkit/public-ios/Specs/DivKitExtensions/30.3.0/DivKitExtensions.podspec",
"Specs/DivKitExtensions/30.4.0/DivKitExtensions.podspec":"divkit/public-ios/Specs/DivKitExtensions/30.4.0/DivKitExtensions.podspec",
Expand Down Expand Up @@ -993,6 +997,7 @@
"Specs/DivKit_LayoutKit/29.9.0/DivKit_LayoutKit.podspec":"divkit/public-ios/Specs/DivKit_LayoutKit/29.9.0/DivKit_LayoutKit.podspec",
"Specs/DivKit_LayoutKit/30.0.0/DivKit_LayoutKit.podspec":"divkit/public-ios/Specs/DivKit_LayoutKit/30.0.0/DivKit_LayoutKit.podspec",
"Specs/DivKit_LayoutKit/30.1.0/DivKit_LayoutKit.podspec":"divkit/public-ios/Specs/DivKit_LayoutKit/30.1.0/DivKit_LayoutKit.podspec",
"Specs/DivKit_LayoutKit/30.10.0/DivKit_LayoutKit.podspec":"divkit/public-ios/Specs/DivKit_LayoutKit/30.10.0/DivKit_LayoutKit.podspec",
"Specs/DivKit_LayoutKit/30.2.0/DivKit_LayoutKit.podspec":"divkit/public-ios/Specs/DivKit_LayoutKit/30.2.0/DivKit_LayoutKit.podspec",
"Specs/DivKit_LayoutKit/30.3.0/DivKit_LayoutKit.podspec":"divkit/public-ios/Specs/DivKit_LayoutKit/30.3.0/DivKit_LayoutKit.podspec",
"Specs/DivKit_LayoutKit/30.4.0/DivKit_LayoutKit.podspec":"divkit/public-ios/Specs/DivKit_LayoutKit/30.4.0/DivKit_LayoutKit.podspec",
Expand Down Expand Up @@ -1036,6 +1041,7 @@
"Specs/DivKit_LayoutKitInterface/29.9.0/DivKit_LayoutKitInterface.podspec":"divkit/public-ios/Specs/DivKit_LayoutKitInterface/29.9.0/DivKit_LayoutKitInterface.podspec",
"Specs/DivKit_LayoutKitInterface/30.0.0/DivKit_LayoutKitInterface.podspec":"divkit/public-ios/Specs/DivKit_LayoutKitInterface/30.0.0/DivKit_LayoutKitInterface.podspec",
"Specs/DivKit_LayoutKitInterface/30.1.0/DivKit_LayoutKitInterface.podspec":"divkit/public-ios/Specs/DivKit_LayoutKitInterface/30.1.0/DivKit_LayoutKitInterface.podspec",
"Specs/DivKit_LayoutKitInterface/30.10.0/DivKit_LayoutKitInterface.podspec":"divkit/public-ios/Specs/DivKit_LayoutKitInterface/30.10.0/DivKit_LayoutKitInterface.podspec",
"Specs/DivKit_LayoutKitInterface/30.2.0/DivKit_LayoutKitInterface.podspec":"divkit/public-ios/Specs/DivKit_LayoutKitInterface/30.2.0/DivKit_LayoutKitInterface.podspec",
"Specs/DivKit_LayoutKitInterface/30.3.0/DivKit_LayoutKitInterface.podspec":"divkit/public-ios/Specs/DivKit_LayoutKitInterface/30.3.0/DivKit_LayoutKitInterface.podspec",
"Specs/DivKit_LayoutKitInterface/30.4.0/DivKit_LayoutKitInterface.podspec":"divkit/public-ios/Specs/DivKit_LayoutKitInterface/30.4.0/DivKit_LayoutKitInterface.podspec",
Expand Down Expand Up @@ -1079,6 +1085,7 @@
"Specs/DivKit_Serialization/29.9.0/DivKit_Serialization.podspec":"divkit/public-ios/Specs/DivKit_Serialization/29.9.0/DivKit_Serialization.podspec",
"Specs/DivKit_Serialization/30.0.0/DivKit_Serialization.podspec":"divkit/public-ios/Specs/DivKit_Serialization/30.0.0/DivKit_Serialization.podspec",
"Specs/DivKit_Serialization/30.1.0/DivKit_Serialization.podspec":"divkit/public-ios/Specs/DivKit_Serialization/30.1.0/DivKit_Serialization.podspec",
"Specs/DivKit_Serialization/30.10.0/DivKit_Serialization.podspec":"divkit/public-ios/Specs/DivKit_Serialization/30.10.0/DivKit_Serialization.podspec",
"Specs/DivKit_Serialization/30.2.0/DivKit_Serialization.podspec":"divkit/public-ios/Specs/DivKit_Serialization/30.2.0/DivKit_Serialization.podspec",
"Specs/DivKit_Serialization/30.3.0/DivKit_Serialization.podspec":"divkit/public-ios/Specs/DivKit_Serialization/30.3.0/DivKit_Serialization.podspec",
"Specs/DivKit_Serialization/30.4.0/DivKit_Serialization.podspec":"divkit/public-ios/Specs/DivKit_Serialization/30.4.0/DivKit_Serialization.podspec",
Expand Down
1 change: 0 additions & 1 deletion DivKit/Actions/DivActionIntent.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import Foundation

import LayoutKitInterface
import VGSL

enum DivActionIntent {
Expand Down
1 change: 0 additions & 1 deletion DivKit/DivExtensionHandler.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import Foundation

import LayoutKit
import VGSL

/// The `DivExtensionHandler` protocol enables you to extend the functionality of an existing block
/// in `DivKit`.
Expand Down
2 changes: 1 addition & 1 deletion DivKit/DivKitInfo.swift
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
public enum DivKitInfo {
public static let version = "30.9.0"
public static let version = "30.10.0"
}
2 changes: 1 addition & 1 deletion DivKit/Extensions/DivGallery/DivGalleryExtensions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ extension DivGallery: DivBlockModeling, DivGalleryProtocol {
}

extension DivGallery.Orientation {
fileprivate var direction: GalleryViewModel.Direction {
fileprivate var direction: ScrollDirection {
switch self {
case .horizontal:
.horizontal
Expand Down
10 changes: 6 additions & 4 deletions DivKit/Extensions/DivGallery/DivGalleryProtocol.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,15 @@ extension DivGalleryProtocol {

func makeGalleryModel(
context: DivBlockModelingContext,
direction: GalleryViewModel.Direction,
direction: ScrollDirection,
spacing: CGFloat,
crossSpacing: CGFloat,
defaultAlignment: Alignment,
scrollMode: GalleryViewModel.ScrollMode,
columnCount: Int? = nil,
infiniteScroll: Bool = false,
scrollbar: GalleryViewModel.Scrollbar = .none
scrollbar: GalleryViewModel.Scrollbar = .none,
transformation: ElementsTransformation? = nil
) throws -> GalleryViewModel {
let expressionResolver = context.expressionResolver
var children: [GalleryViewModel.Item] = nonNilItems.makeBlocks(
Expand Down Expand Up @@ -66,15 +67,16 @@ extension DivGalleryProtocol {
direction: direction,
columnCount: columnCount ?? 1,
infiniteScroll: infiniteScroll,
scrollbar: scrollbar
scrollbar: scrollbar,
transformation: transformation
)
}

private func makeMetrics(
spacing: CGFloat,
crossSpacing: CGFloat,
childrenCount: Int,
direction: GalleryViewModel.Direction,
direction: ScrollDirection,
with expressionResolver: ExpressionResolver
) throws -> GalleryViewMetrics {
let spacings = [CGFloat](
Expand Down
2 changes: 1 addition & 1 deletion DivKit/Extensions/DivGallery/DivGallerySizeModifier.swift
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ struct DivGallerySizeModifier: DivSizeModifier {
init(
context: DivBlockModelingContext,
gallery: DivGalleryProtocol,
direction: GalleryViewModel.Direction
direction: ScrollDirection
) {
let items = gallery.nonNilItems

Expand Down
35 changes: 33 additions & 2 deletions DivKit/Extensions/DivPagerExtensions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,19 @@ extension DivPager: DivBlockModeling, DivGalleryProtocol {
)
}
let items = nonNilItems
let scrollDirection = resolveOrientation(expressionResolver).direction
let gallery = try makeGalleryModel(
context: context,
direction: resolveOrientation(expressionResolver).direction,
spacing: CGFloat(itemSpacing.resolveValue(expressionResolver) ?? 0),
crossSpacing: 0,
defaultAlignment: .center,
scrollMode: .autoPaging(inertionEnabled: false),
infiniteScroll: resolveInfiniteScroll(expressionResolver)
infiniteScroll: resolveInfiniteScroll(expressionResolver),
transformation: pageTransformation?.resolve(
expressionResolver,
scrollDirection: scrollDirection
)
)
return try PagerBlock(
pagerPath: pagerPath,
Expand Down Expand Up @@ -64,7 +69,7 @@ extension DivPager: DivBlockModeling, DivGalleryProtocol {
}

extension DivPager.Orientation {
var direction: GalleryViewModel.Direction {
var direction: ScrollDirection {
switch self {
case .horizontal: .horizontal
case .vertical: .vertical
Expand Down Expand Up @@ -95,3 +100,29 @@ extension DivBase {
selectedActions?.uiActions(context: context) ?? []
}
}

extension DivPageTransformation {
fileprivate func resolve(
_ resolver: ExpressionResolver,
scrollDirection: ScrollDirection
) -> ElementsTransformation {
switch self {
case let .divPageTransformationSlide(transformation):
return .init(
nextElementAlpha: transformation.resolveNextPageAlpha(resolver),
previousElementAlpha: transformation.resolvePreviousPageAlpha(resolver),
nextElementScale: transformation.resolveNextPageScale(resolver),
previousElementScale: transformation.resolvePreviousPageScale(resolver),
scrollDirection: scrollDirection
)
case .divPageTransformationOverlap:
return .init(
nextElementAlpha: 1,
previousElementAlpha: 1,
nextElementScale: 1,
previousElementScale: 1,
scrollDirection: scrollDirection
)
}
}
}
1 change: 1 addition & 0 deletions DivKit/Views/DivView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ public final class DivView: VisibleBoundsTrackingView {
blockSubscription = blockProvider?.$block.currentAndNewValues.addObserver { [weak self] in
self?.update(block: $0)
}
preloader.setSourceTask?.cancel()
await preloader.setSource(source, debugParams: debugParams)
}

Expand Down
32 changes: 21 additions & 11 deletions DivKit/Views/DivViewPreloader.swift
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public final class DivViewPreloader {
private var blockProviders = [DivCardID: DivBlockProvider]()
private let divKitComponents: DivKitComponents
private let changeEventsPipe = SignalPipe<DivViewSizeChange>()
private(set) var setSourceTask: Task<Void, Error>?
var changeEvents: Signal<DivViewSizeChange> {
changeEventsPipe.signal
}
Expand Down Expand Up @@ -48,14 +49,19 @@ public final class DivViewPreloader {
_ source: DivViewSource,
debugParams: DebugParams = DebugParams()
) async {
let blockProvider: DivBlockProvider = blockProvider(for: source.id.cardId)
setSourceTask = Task { [oldTask = setSourceTask] in
try? await oldTask?.value
try Task.checkCancellation()
let blockProvider: DivBlockProvider = blockProvider(for: source.id.cardId)

await blockProvider.setSource(
source,
debugParams: debugParams
)
await blockProvider.setSource(
source,
debugParams: debugParams
)

blockProviders[source.id.cardId] = blockProvider
blockProviders[source.id.cardId] = blockProvider
}
try? await setSourceTask?.value
}

/// Sets the source for ``DivViewPreloader`` and updates the layout.
Expand Down Expand Up @@ -85,14 +91,18 @@ public final class DivViewPreloader {
_ sources: [DivViewSource],
debugParams: DebugParams = DebugParams()
) async {
let blockProviders = sources.map { blockProvider(for: $0.id.cardId) }
await withTaskGroup(of: Void.self) { group in
zip(blockProviders, sources).forEach { blockProvider, source in
group.addTask {
await blockProvider.setSource(source, debugParams: debugParams)
setSourceTask = Task { [oldTask = setSourceTask] in
try? await oldTask?.value
let blockProviders = sources.map { blockProvider(for: $0.id.cardId) }
await withTaskGroup(of: Void.self) { group in
zip(blockProviders, sources).forEach { blockProvider, source in
group.addTask {
await blockProvider.setSource(source, debugParams: debugParams)
}
}
}
}
try? await setSourceTask?.value
}

/// Fetches the expected size for a ``DivView`` with a specific identifier.
Expand Down
1 change: 0 additions & 1 deletion LayoutKit/LayoutKit/Base/UILink.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import Foundation

import LayoutKitInterface
import VGSL

public struct UILink: Equatable {
Expand Down
1 change: 0 additions & 1 deletion LayoutKit/LayoutKit/Blocks/BlocksStateExtensions.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import Foundation

import LayoutKitInterface
import VGSL

public struct PagerPath: Equatable {
Expand Down
1 change: 0 additions & 1 deletion LayoutKit/LayoutKit/Blocks/Decorations/ContextMenu.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import Foundation

import LayoutKitInterface
import VGSL

public struct ContextMenu: Equatable {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import CoreGraphics
import Foundation

import LayoutKitInterface
import VGSL

final class DecoratingBlock: WrapperBlock {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import Foundation

import LayoutKitInterface
import VGSL

public enum LongTapActions: Equatable {
Expand Down
5 changes: 2 additions & 3 deletions LayoutKit/LayoutKit/Blocks/GalleryBlock.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import CoreGraphics
import Foundation

import LayoutKitInterface
import VGSL

public final class GalleryBlock: BlockWithTraits {
Expand Down Expand Up @@ -67,7 +66,7 @@ extension GalleryBlock {
gaps: [CGFloat],
children: [Block],
path: UIElementPath,
direction: GalleryViewModel.Direction,
direction: ScrollDirection,
crossAlignment: Alignment,
scrollMode: GalleryViewModel.ScrollMode = .default,
state: GalleryViewState? = nil,
Expand Down Expand Up @@ -101,7 +100,7 @@ extension GalleryBlock {
gaps: [CGFloat],
children: [Block],
path: UIElementPath,
direction: GalleryViewModel.Direction,
direction: ScrollDirection,
crossAlignment: Alignment,
scrollMode: GalleryViewModel.ScrollMode = .default,
contentPosition: GalleryViewState.Position,
Expand Down
1 change: 0 additions & 1 deletion LayoutKit/LayoutKit/Blocks/Grid/GridBlock.swift
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import CoreGraphics

import LayoutKitInterface
import VGSL

public final class GridBlock: BlockWithTraits, BlockWithLayout {
Expand Down
1 change: 0 additions & 1 deletion LayoutKit/LayoutKit/Blocks/PagerBlock.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import CoreGraphics
import Foundation

import LayoutKitInterface
import VGSL

public final class PagerBlock: BlockWithTraits {
Expand Down
2 changes: 0 additions & 2 deletions LayoutKit/LayoutKit/Blocks/SwipeContainerBlock.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import CoreGraphics

import LayoutKitInterface

public final class SwipeContainerBlock: WrapperBlock {
public enum State: ElementState {
case normal
Expand Down
1 change: 0 additions & 1 deletion LayoutKit/LayoutKit/Blocks/SwitchBlock.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import CoreGraphics
import Foundation

import LayoutKitInterface
import VGSL

public final class SwitchBlock: Block {
Expand Down
1 change: 0 additions & 1 deletion LayoutKit/LayoutKit/Blocks/SwitchableContainerBlock.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import CoreGraphics
import Foundation

import LayoutKitInterface
import VGSL

public final class SwitchableContainerBlock: Block {
Expand Down
1 change: 0 additions & 1 deletion LayoutKit/LayoutKit/Blocks/TextFieldBlock.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import CoreGraphics
import Foundation

import LayoutKitInterface
import VGSL

public final class TextFieldBlock: Block {
Expand Down
1 change: 0 additions & 1 deletion LayoutKit/LayoutKit/Blocks/TextInputBlock.swift
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import CoreGraphics
import Foundation

import LayoutKitInterface
import VGSL

public final class TextInputBlock: BlockWithTraits {
Expand Down
2 changes: 0 additions & 2 deletions LayoutKit/LayoutKit/Blocks/VisibilityAction.swift
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
import CoreGraphics
import Foundation

import LayoutKitInterface

public struct VisibilityAction {
let uiAction: UserInterfaceAction
let requiredDuration: TimeInterval
Expand Down
2 changes: 0 additions & 2 deletions LayoutKit/LayoutKit/Types.swift
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import Foundation

import VGSL

public typealias EdgeInsets = VGSLUI.EdgeInsets
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import UIKit

import LayoutKitInterface
import VGSL

public protocol AnalyticsTouchEventHandling {
Expand Down
Loading

0 comments on commit 9ab2507

Please sign in to comment.