Skip to content

Commit

Permalink
Release 30.11.0
Browse files Browse the repository at this point in the history
5a05a0991ef508e3862412b5934491f31c713797
  • Loading branch information
robot-divkit committed Jul 29, 2024
1 parent 4047ed4 commit 8b41f2d
Show file tree
Hide file tree
Showing 70 changed files with 982 additions and 306 deletions.
9 changes: 7 additions & 2 deletions .mapping.json
Original file line number Diff line number Diff line change
Expand Up @@ -508,7 +508,6 @@
"LayoutKit/LayoutKit/Blocks/Block+Animation.swift":"divkit/public-ios/LayoutKit/LayoutKit/Blocks/Block+Animation.swift",
"LayoutKit/LayoutKit/Blocks/Block+CAAnimationRendering.swift":"divkit/public-ios/LayoutKit/LayoutKit/Blocks/Block+CAAnimationRendering.swift",
"LayoutKit/LayoutKit/Blocks/Block+Debugging.swift":"divkit/public-ios/LayoutKit/LayoutKit/Blocks/Block+Debugging.swift",
"LayoutKit/LayoutKit/Blocks/Block+Reusable.swift":"divkit/public-ios/LayoutKit/LayoutKit/Blocks/Block+Reusable.swift",
"LayoutKit/LayoutKit/Blocks/Block.swift":"divkit/public-ios/LayoutKit/LayoutKit/Blocks/Block.swift",
"LayoutKit/LayoutKit/Blocks/BlockAlignment2D.swift":"divkit/public-ios/LayoutKit/LayoutKit/Blocks/BlockAlignment2D.swift",
"LayoutKit/LayoutKit/Blocks/BlockBorder.swift":"divkit/public-ios/LayoutKit/LayoutKit/Blocks/BlockBorder.swift",
Expand Down Expand Up @@ -565,6 +564,7 @@
"LayoutKit/LayoutKit/Blocks/MaskedBlock.swift":"divkit/public-ios/LayoutKit/LayoutKit/Blocks/MaskedBlock.swift",
"LayoutKit/LayoutKit/Blocks/PageControlBlock.swift":"divkit/public-ios/LayoutKit/LayoutKit/Blocks/PageControlBlock.swift",
"LayoutKit/LayoutKit/Blocks/PagerBlock.swift":"divkit/public-ios/LayoutKit/LayoutKit/Blocks/PagerBlock.swift",
"LayoutKit/LayoutKit/Blocks/PathHolder.swift":"divkit/public-ios/LayoutKit/LayoutKit/Blocks/PathHolder.swift",
"LayoutKit/LayoutKit/Blocks/PinchToZoomBlock.swift":"divkit/public-ios/LayoutKit/LayoutKit/Blocks/PinchToZoomBlock.swift",
"LayoutKit/LayoutKit/Blocks/ResizableBlockMeasure.swift":"divkit/public-ios/LayoutKit/LayoutKit/Blocks/ResizableBlockMeasure.swift",
"LayoutKit/LayoutKit/Blocks/RoundedRect.swift":"divkit/public-ios/LayoutKit/LayoutKit/Blocks/RoundedRect.swift",
Expand Down Expand Up @@ -704,13 +704,13 @@
"LayoutKit/LayoutKit/UI/Views/BlockHostingView.swift":"divkit/public-ios/LayoutKit/LayoutKit/UI/Views/BlockHostingView.swift",
"LayoutKit/LayoutKit/UI/Views/BoxShadowView.swift":"divkit/public-ios/LayoutKit/LayoutKit/UI/Views/BoxShadowView.swift",
"LayoutKit/LayoutKit/UI/Views/ClickableView.swift":"divkit/public-ios/LayoutKit/LayoutKit/UI/Views/ClickableView.swift",
"LayoutKit/LayoutKit/UI/Views/CollectionCellRegistrator.swift":"divkit/public-ios/LayoutKit/LayoutKit/UI/Views/CollectionCellRegistrator.swift",
"LayoutKit/LayoutKit/UI/Views/CompositeView.swift":"divkit/public-ios/LayoutKit/LayoutKit/UI/Views/CompositeView.swift",
"LayoutKit/LayoutKit/UI/Views/ContextMenuDelegate.swift":"divkit/public-ios/LayoutKit/LayoutKit/UI/Views/ContextMenuDelegate.swift",
"LayoutKit/LayoutKit/UI/Views/GalleryView.swift":"divkit/public-ios/LayoutKit/LayoutKit/UI/Views/GalleryView.swift",
"LayoutKit/LayoutKit/UI/Views/NinePatchImageView.swift":"divkit/public-ios/LayoutKit/LayoutKit/UI/Views/NinePatchImageView.swift",
"LayoutKit/LayoutKit/UI/Views/NoContentTouchDelaysCollectionView.swift":"divkit/public-ios/LayoutKit/LayoutKit/UI/Views/NoContentTouchDelaysCollectionView.swift",
"LayoutKit/LayoutKit/UI/Views/SegmentedProgressView.swift":"divkit/public-ios/LayoutKit/LayoutKit/UI/Views/SegmentedProgressView.swift",
"LayoutKit/LayoutKit/UI/Views/TabbedPages/Block+CollectionCellModelExtensions.swift":"divkit/public-ios/LayoutKit/LayoutKit/UI/Views/TabbedPages/Block+CollectionCellModelExtensions.swift",
"LayoutKit/LayoutKit/UI/Views/TabbedPages/TabContentsView.swift":"divkit/public-ios/LayoutKit/LayoutKit/UI/Views/TabbedPages/TabContentsView.swift",
"LayoutKit/LayoutKit/UI/Views/TabbedPages/TabContentsViewDelegate.swift":"divkit/public-ios/LayoutKit/LayoutKit/UI/Views/TabbedPages/TabContentsViewDelegate.swift",
"LayoutKit/LayoutKit/UI/Views/TabbedPages/TabListSelectionDataSource.swift":"divkit/public-ios/LayoutKit/LayoutKit/UI/Views/TabbedPages/TabListSelectionDataSource.swift",
Expand Down Expand Up @@ -892,6 +892,7 @@
"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.11.0/DivKit.podspec":"divkit/public-ios/Specs/DivKit/30.11.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 @@ -954,6 +955,7 @@
"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.11.0/DivKitExtensions.podspec":"divkit/public-ios/Specs/DivKitExtensions/30.11.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 @@ -998,6 +1000,7 @@
"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.11.0/DivKit_LayoutKit.podspec":"divkit/public-ios/Specs/DivKit_LayoutKit/30.11.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 @@ -1042,6 +1045,7 @@
"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.11.0/DivKit_LayoutKitInterface.podspec":"divkit/public-ios/Specs/DivKit_LayoutKitInterface/30.11.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 @@ -1086,6 +1090,7 @@
"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.11.0/DivKit_Serialization.podspec":"divkit/public-ios/Specs/DivKit_Serialization/30.11.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
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.10.0"
public static let version = "30.11.0"
}
33 changes: 25 additions & 8 deletions DivKit/Expressions/CalcExpression/CalcExpression.swift
Original file line number Diff line number Diff line change
Expand Up @@ -354,11 +354,31 @@ extension UnicodeScalarView {
}

private mutating func parseOperator() -> Subexpression? {
if let op = scanCharacters({ "+-*/%=<>!&|?:".unicodeScalars.contains($0) })
?? scanCharacter({ "(.".unicodeScalars.contains($0) }) {
return .symbol(.infix(op), [])
guard let op1 = scanCharacter({ "+-*/%=<>!&|?:(.".unicodeScalars.contains($0) }) else {
return nil
}
return nil

let op2: String?
switch op1 {
case "=", "<", ">":
op2 = scanCharacter { "=" == $0 }
case "|":
op2 = scanCharacter { "|" == $0 }
case "&":
op2 = scanCharacter { "&" == $0 }
case "!":
op2 = scanCharacter { "=:".unicodeScalars.contains($0) }
case "+", "-":
op2 = scanCharacter { "+-".unicodeScalars.contains($0) }
default:
op2 = nil
}

if let op2 {
return .symbol(.infix(op1 + op2), [])
}

return .symbol(.infix(op1), [])
}

private mutating func parseIdentifier() throws -> Subexpression? {
Expand Down Expand Up @@ -475,12 +495,9 @@ extension UnicodeScalarView {
} else if case let .symbol(symbol2, _) = rhs {
if case .prefix = symbol2 {
try collapseStack(from: i + 2)
} else if ["+", "-", "/", "*"].contains(symbol.name) { // Assume infix
} else {
stack[i + 2] = .symbol(.prefix(symbol2.name), [])
try collapseStack(from: i + 2)
} else { // Assume postfix
stack[i + 1] = .symbol(.postfix(symbol.name), [])
try collapseStack(from: i)
}
}
}
Expand Down
6 changes: 6 additions & 0 deletions DivKit/Extensions/DivBase/DivBaseExtensions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,12 @@ extension DivBase {
block = layoutProvider.apply(block: block, context: context)
}

if let reuseId = resolveReuseId(expressionResolver) {
block = block.addingDecorations(
reuseId: reuseId
)
}

return applyExtensionHandlersAfterBaseProperties(
to: block,
extensionHandlers: extensionHandlers,
Expand Down
14 changes: 10 additions & 4 deletions DivKit/Extensions/DivData/DivDataPatchExtensions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,8 @@ extension DivContainer {
longtapActions: longtapActions,
margins: margins,
orientation: orientation,
paddings: paddings,
paddings: paddings,
reuseId: reuseId,
rowSpan: rowSpan,
selectedActions: selectedActions,
separator: separator,
Expand Down Expand Up @@ -157,7 +158,8 @@ extension DivGallery {
margins: margins,
orientation: orientation,
paddings: paddings,
restrictParentScroll: restrictParentScroll,
restrictParentScroll: restrictParentScroll,
reuseId: reuseId,
rowSpan: rowSpan,
scrollMode: scrollMode,
scrollbar: scrollbar,
Expand Down Expand Up @@ -204,7 +206,8 @@ extension DivGrid {
layoutProvider: layoutProvider,
longtapActions: longtapActions,
margins: margins,
paddings: paddings,
paddings: paddings,
reuseId: reuseId,
rowSpan: rowSpan,
selectedActions: selectedActions,
tooltips: tooltips,
Expand Down Expand Up @@ -249,7 +252,8 @@ extension DivPager {
orientation: orientation,
paddings: paddings,
pageTransformation: pageTransformation,
restrictParentScroll: restrictParentScroll,
restrictParentScroll: restrictParentScroll,
reuseId: reuseId,
rowSpan: rowSpan,
selectedActions: selectedActions,
tooltips: tooltips,
Expand Down Expand Up @@ -296,6 +300,7 @@ extension DivState {
layoutProvider: layoutProvider,
margins: margins,
paddings: paddings,
reuseId: reuseId,
rowSpan: rowSpan,
selectedActions: selectedActions,
stateIdVariable: stateIdVariable,
Expand Down Expand Up @@ -345,6 +350,7 @@ extension DivTabs {
margins: margins,
paddings: paddings,
restrictParentScroll: restrictParentScroll,
reuseId: reuseId,
rowSpan: rowSpan,
selectedActions: selectedActions,
selectedTab: selectedTab,
Expand Down
2 changes: 1 addition & 1 deletion DivKit/Extensions/DivDrawable/DivShapeExtensions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ extension DivShapeDrawable {
let expressionResolver = context.expressionResolver
let stroke = stroke?.resolveWidth(expressionResolver) ?? 0
return CGFloat(
(rectangle.itemHeight.resolveValue(expressionResolver) ?? 0) + stroke
Double(rectangle.itemHeight.resolveValue(expressionResolver) ?? 0) + stroke
)
case .divCircleShape:
context.addError(message: "Unsupported shape type: circle")
Expand Down
12 changes: 7 additions & 5 deletions DivKit/Extensions/DivPagerExtensions.swift
Original file line number Diff line number Diff line change
Expand Up @@ -113,14 +113,16 @@ extension DivPageTransformation {
previousElementAlpha: transformation.resolvePreviousPageAlpha(resolver),
nextElementScale: transformation.resolveNextPageScale(resolver),
previousElementScale: transformation.resolvePreviousPageScale(resolver),
style: .slide,
scrollDirection: scrollDirection
)
case .divPageTransformationOverlap:
case let .divPageTransformationOverlap(transformation):
return .init(
nextElementAlpha: 1,
previousElementAlpha: 1,
nextElementScale: 1,
previousElementScale: 1,
nextElementAlpha: transformation.resolveNextPageAlpha(resolver),
previousElementAlpha: transformation.resolvePreviousPageAlpha(resolver),
nextElementScale: transformation.resolveNextPageScale(resolver),
previousElementScale: transformation.resolvePreviousPageScale(resolver),
style: .overlap,
scrollDirection: scrollDirection
)
}
Expand Down
2 changes: 2 additions & 0 deletions DivKit/generated_sources/DivBase.swift
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ public protocol DivBase: DivBlockModeling {
var layoutProvider: DivLayoutProvider? { get }
var margins: DivEdgeInsets? { get }
var paddings: DivEdgeInsets? { get }
var reuseId: Expression<String>? { get }
var rowSpan: Expression<Int>? { get } // constraint: number >= 0
var selectedActions: [DivAction]? { get }
var tooltips: [DivTooltip]? { get }
Expand All @@ -37,6 +38,7 @@ public protocol DivBase: DivBlockModeling {
func resolveAlignmentVertical(_ resolver: ExpressionResolver) -> DivAlignmentVertical?
func resolveAlpha(_ resolver: ExpressionResolver) -> Double
func resolveColumnSpan(_ resolver: ExpressionResolver) -> Int?
func resolveReuseId(_ resolver: ExpressionResolver) -> String?
func resolveRowSpan(_ resolver: ExpressionResolver) -> Int?
func resolveVisibility(_ resolver: ExpressionResolver) -> DivVisibility
}
27 changes: 18 additions & 9 deletions DivKit/generated_sources/DivContainer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ public final class DivContainer: DivBase {
public let margins: DivEdgeInsets?
public let orientation: Expression<Orientation> // default value: vertical
public let paddings: DivEdgeInsets?
public let reuseId: Expression<String>?
public let rowSpan: Expression<Int>? // constraint: number >= 0
public let selectedActions: [DivAction]?
public let separator: Separator?
Expand Down Expand Up @@ -133,6 +134,10 @@ public final class DivContainer: DivBase {
resolver.resolveEnum(orientation) ?? Orientation.vertical
}

public func resolveReuseId(_ resolver: ExpressionResolver) -> String? {
resolver.resolveString(reuseId)
}

public func resolveRowSpan(_ resolver: ExpressionResolver) -> Int? {
resolver.resolveNumeric(rowSpan)
}
Expand Down Expand Up @@ -183,6 +188,7 @@ public final class DivContainer: DivBase {
margins: DivEdgeInsets?,
orientation: Expression<Orientation>?,
paddings: DivEdgeInsets?,
reuseId: Expression<String>?,
rowSpan: Expression<Int>?,
selectedActions: [DivAction]?,
separator: Separator?,
Expand Down Expand Up @@ -227,6 +233,7 @@ public final class DivContainer: DivBase {
self.margins = margins
self.orientation = orientation ?? .value(.vertical)
self.paddings = paddings
self.reuseId = reuseId
self.rowSpan = rowSpan
self.selectedActions = selectedActions
self.separator = separator
Expand Down Expand Up @@ -313,39 +320,40 @@ extension DivContainer: Equatable {
guard
lhs.orientation == rhs.orientation,
lhs.paddings == rhs.paddings,
lhs.rowSpan == rhs.rowSpan
lhs.reuseId == rhs.reuseId
else {
return false
}
guard
lhs.rowSpan == rhs.rowSpan,
lhs.selectedActions == rhs.selectedActions,
lhs.separator == rhs.separator,
lhs.tooltips == rhs.tooltips
lhs.separator == rhs.separator
else {
return false
}
guard
lhs.tooltips == rhs.tooltips,
lhs.transform == rhs.transform,
lhs.transitionChange == rhs.transitionChange,
lhs.transitionIn == rhs.transitionIn
lhs.transitionChange == rhs.transitionChange
else {
return false
}
guard
lhs.transitionIn == rhs.transitionIn,
lhs.transitionOut == rhs.transitionOut,
lhs.transitionTriggers == rhs.transitionTriggers,
lhs.variables == rhs.variables
lhs.transitionTriggers == rhs.transitionTriggers
else {
return false
}
guard
lhs.variables == rhs.variables,
lhs.visibility == rhs.visibility,
lhs.visibilityAction == rhs.visibilityAction,
lhs.visibilityActions == rhs.visibilityActions
lhs.visibilityAction == rhs.visibilityAction
else {
return false
}
guard
lhs.visibilityActions == rhs.visibilityActions,
lhs.width == rhs.width
else {
return false
Expand Down Expand Up @@ -388,6 +396,7 @@ extension DivContainer: Serializable {
result["margins"] = margins?.toDictionary()
result["orientation"] = orientation.toValidSerializationValue()
result["paddings"] = paddings?.toDictionary()
result["reuse_id"] = reuseId?.toValidSerializationValue()
result["row_span"] = rowSpan?.toValidSerializationValue()
result["selected_actions"] = selectedActions?.map { $0.toDictionary() }
result["separator"] = separator?.toDictionary()
Expand Down
Loading

0 comments on commit 8b41f2d

Please sign in to comment.