diff --git a/.mapping.json b/.mapping.json index dae2139df..e64858c38 100644 --- a/.mapping.json +++ b/.mapping.json @@ -1032,6 +1032,7 @@ "client/android/div/src/main/java/com/yandex/div/core/actions/DivActionTypedHandlerCombiner.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/core/actions/DivActionTypedHandlerCombiner.kt", "client/android/div/src/main/java/com/yandex/div/core/actions/DivActionTypedHandlerProxy.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/core/actions/DivActionTypedHandlerProxy.kt", "client/android/div/src/main/java/com/yandex/div/core/actions/DivActionTypedHideTooltipHandler.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/core/actions/DivActionTypedHideTooltipHandler.kt", + "client/android/div/src/main/java/com/yandex/div/core/actions/DivActionTypedScrollHandler.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/core/actions/DivActionTypedScrollHandler.kt", "client/android/div/src/main/java/com/yandex/div/core/actions/DivActionTypedSetStateHandler.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/core/actions/DivActionTypedSetStateHandler.kt", "client/android/div/src/main/java/com/yandex/div/core/actions/DivActionTypedSetStoredValueHandler.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/core/actions/DivActionTypedSetStoredValueHandler.kt", "client/android/div/src/main/java/com/yandex/div/core/actions/DivActionTypedSetVariableHandler.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/core/actions/DivActionTypedSetVariableHandler.kt", @@ -1297,6 +1298,7 @@ "client/android/div/src/main/java/com/yandex/div/core/view2/errors/ErrorVisualMonitor.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/core/view2/errors/ErrorVisualMonitor.kt", "client/android/div/src/main/java/com/yandex/div/core/view2/items/DivItemChangeActionHandler.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/core/view2/items/DivItemChangeActionHandler.kt", "client/android/div/src/main/java/com/yandex/div/core/view2/items/DivViewWithItems.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/core/view2/items/DivViewWithItems.kt", + "client/android/div/src/main/java/com/yandex/div/core/view2/items/DivViewWithItemsController.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/core/view2/items/DivViewWithItemsController.kt", "client/android/div/src/main/java/com/yandex/div/core/view2/items/OverflowItemStrategy.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/core/view2/items/OverflowItemStrategy.kt", "client/android/div/src/main/java/com/yandex/div/core/view2/logging/EventMessageBuilder.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/core/view2/logging/EventMessageBuilder.kt", "client/android/div/src/main/java/com/yandex/div/core/view2/logging/bind/BindingEventReporter.kt":"divkit/public/client/android/div/src/main/java/com/yandex/div/core/view2/logging/bind/BindingEventReporter.kt", @@ -1958,6 +1960,12 @@ "client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step1.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step2.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step3.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step3.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step0.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step0.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step1.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step2.png", @@ -2862,6 +2870,12 @@ "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step1.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step2.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step3.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step3.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step0.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step0.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step1.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step2.png", @@ -3766,6 +3780,12 @@ "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step1.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step2.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step3.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step3.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step0.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step0.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step1.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step2.png", @@ -4670,6 +4690,12 @@ "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step1.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step2.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step3.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step3.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step0.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step0.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step1.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step2.png", @@ -5574,6 +5600,12 @@ "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step1.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step2.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step3.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step3.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step0.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step0.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step1.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step2.png", @@ -6478,6 +6510,12 @@ "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step1.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step2.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step3.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step3.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step0.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step0.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step1.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step2.png", @@ -7382,6 +7420,12 @@ "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step1.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step2.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step3.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step3.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step0.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step0.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step1.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step2.png", @@ -8286,6 +8330,12 @@ "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step1.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step2.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step3.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step3.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step0.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step0.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step1.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step2.png", @@ -9190,6 +9240,12 @@ "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step1.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step2.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step3.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/specific-properties/step3.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png", + "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step0.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step0.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step1.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step1.png", "client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step2.png":"divkit/public/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/visibility/step2.png", @@ -16825,6 +16881,10 @@ "schema/div-action-download.json":"divkit/public/schema/div-action-download.json", "schema/div-action-focus-element.json":"divkit/public/schema/div-action-focus-element.json", "schema/div-action-hide-tooltip.json":"divkit/public/schema/div-action-hide-tooltip.json", + "schema/div-action-scroll-base.json":"divkit/public/schema/div-action-scroll-base.json", + "schema/div-action-scroll-by.json":"divkit/public/schema/div-action-scroll-by.json", + "schema/div-action-scroll-destination.json":"divkit/public/schema/div-action-scroll-destination.json", + "schema/div-action-scroll-to.json":"divkit/public/schema/div-action-scroll-to.json", "schema/div-action-set-state.json":"divkit/public/schema/div-action-set-state.json", "schema/div-action-set-stored-value.json":"divkit/public/schema/div-action-set-stored-value.json", "schema/div-action-set-variable.json":"divkit/public/schema/div-action-set-variable.json", @@ -17164,6 +17224,7 @@ "test_data/interactive_snapshot_test_data/div-gallery/scroll-actions.json":"divkit/public/test_data/interactive_snapshot_test_data/div-gallery/scroll-actions.json", "test_data/interactive_snapshot_test_data/div-gallery/select-elements.json":"divkit/public/test_data/interactive_snapshot_test_data/div-gallery/select-elements.json", "test_data/interactive_snapshot_test_data/div-gallery/specific-properties.json":"divkit/public/test_data/interactive_snapshot_test_data/div-gallery/specific-properties.json", + "test_data/interactive_snapshot_test_data/div-gallery/typed-actions.json":"divkit/public/test_data/interactive_snapshot_test_data/div-gallery/typed-actions.json", "test_data/interactive_snapshot_test_data/div-gallery/visibility.json":"divkit/public/test_data/interactive_snapshot_test_data/div-gallery/visibility.json", "test_data/interactive_snapshot_test_data/div-image/blur.json":"divkit/public/test_data/interactive_snapshot_test_data/div-image/blur.json", "test_data/interactive_snapshot_test_data/div-indicator/shapes.json":"divkit/public/test_data/interactive_snapshot_test_data/div-indicator/shapes.json", @@ -17324,6 +17385,7 @@ "test_data/regression_test_data/gallery/gallery-bottom-multiline.json":"divkit/public/test_data/regression_test_data/gallery/gallery-bottom-multiline.json", "test_data/regression_test_data/gallery/gallery-bottom-singleline.json":"divkit/public/test_data/regression_test_data/gallery/gallery-bottom-singleline.json", "test_data/regression_test_data/gallery/gallery-columns.json":"divkit/public/test_data/regression_test_data/gallery/gallery-columns.json", + "test_data/regression_test_data/gallery/gallery-item-actions-typed.json":"divkit/public/test_data/regression_test_data/gallery/gallery-item-actions-typed.json", "test_data/regression_test_data/gallery/gallery-item-actions.json":"divkit/public/test_data/regression_test_data/gallery/gallery-item-actions.json", "test_data/regression_test_data/gallery/gallery-items-posing.json":"divkit/public/test_data/regression_test_data/gallery/gallery-items-posing.json", "test_data/regression_test_data/gallery/gallery-top-multiline.json":"divkit/public/test_data/regression_test_data/gallery/gallery-top-multiline.json", diff --git a/client/android/div/src/main/java/com/yandex/div/core/actions/DivActionTypedScrollHandler.kt b/client/android/div/src/main/java/com/yandex/div/core/actions/DivActionTypedScrollHandler.kt new file mode 100644 index 000000000..42cf9022f --- /dev/null +++ b/client/android/div/src/main/java/com/yandex/div/core/actions/DivActionTypedScrollHandler.kt @@ -0,0 +1,75 @@ +package com.yandex.div.core.actions + +import com.yandex.div.core.view2.Div2View +import com.yandex.div.core.view2.items.DivViewWithItemsController +import com.yandex.div.json.expressions.ExpressionResolver +import com.yandex.div2.DivActionScrollBy +import com.yandex.div2.DivActionScrollDestination +import com.yandex.div2.DivActionScrollTo +import com.yandex.div2.DivActionTyped +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +internal class DivActionTypedScrollHandler @Inject constructor() : DivActionTypedHandler { + + override fun handleAction( + scopeId: String?, + action: DivActionTyped, + view: Div2View, + resolver: ExpressionResolver + ): Boolean = when(action) { + is DivActionTyped.ScrollBy -> { + handleAction(action.value, view, resolver) + true + } + is DivActionTyped.ScrollTo -> { + handleAction(action.value, view, resolver) + true + } + else -> false + } + + private fun handleAction( + action: DivActionScrollBy, + view: Div2View, + resolver: ExpressionResolver + ) { + val id = action.id.evaluate(resolver) + val offset = action.offset.evaluate(resolver).toInt() + val step = action.itemCount.evaluate(resolver).toInt() + val overflow = DivActionScrollBy.Overflow.toString(action.overflow.evaluate(resolver)) + val animated = action.animated.evaluate(resolver) + + val viewController = DivViewWithItemsController.create(id, view, resolver) ?: return + viewController.changeCurrentItemByStep(overflow, step, animated) + viewController.scrollByOffset(overflow, offset, animated) + } + + private fun handleAction( + action: DivActionScrollTo, + view: Div2View, + resolver: ExpressionResolver + ) { + val id = action.id.evaluate(resolver) + val animated = action.animated.evaluate(resolver) + val viewController = DivViewWithItemsController.create(id, view, resolver) ?: return + + when(val destination = action.destination) { + is DivActionScrollDestination.Offset -> { + val offset = destination.value.value.evaluate(resolver).toInt() + viewController.scrollTo(offset, animated) + } + is DivActionScrollDestination.Index -> { + val index = destination.value.value.evaluate(resolver).toInt() + viewController.setCurrentItem(index, animated) + } + is DivActionScrollDestination.End -> { + viewController.scrollToEnd(animated) + } + is DivActionScrollDestination.Start -> { + viewController.scrollToStart(animated) + } + } + } +} diff --git a/client/android/div/src/main/java/com/yandex/div/core/dagger/DivActionTypedModule.kt b/client/android/div/src/main/java/com/yandex/div/core/dagger/DivActionTypedModule.kt index e732ea797..5b8371f6d 100644 --- a/client/android/div/src/main/java/com/yandex/div/core/dagger/DivActionTypedModule.kt +++ b/client/android/div/src/main/java/com/yandex/div/core/dagger/DivActionTypedModule.kt @@ -7,6 +7,7 @@ import com.yandex.div.core.actions.DivActionTypedDictSetValueHandler import com.yandex.div.core.actions.DivActionTypedFocusElementHandler import com.yandex.div.core.actions.DivActionTypedHandler import com.yandex.div.core.actions.DivActionTypedHideTooltipHandler +import com.yandex.div.core.actions.DivActionTypedScrollHandler import com.yandex.div.core.actions.DivActionTypedSetStateHandler import com.yandex.div.core.actions.DivActionTypedSetStoredValueHandler import com.yandex.div.core.actions.DivActionTypedSetVariableHandler @@ -39,6 +40,7 @@ internal interface DivActionTypedModule { impl: DivActionTypedClearFocusHandler ): DivActionTypedHandler + @Binds @IntoSet fun provideCopyToClipboardActionHandler( @@ -63,6 +65,12 @@ internal interface DivActionTypedModule { impl: DivActionTypedHideTooltipHandler ): DivActionTypedHandler + @Binds + @IntoSet + fun provideScrollActionHandler( + impl: DivActionTypedScrollHandler + ): DivActionTypedHandler + @Binds @IntoSet fun provideSetStateActionHandler( diff --git a/client/android/div/src/main/java/com/yandex/div/core/view2/items/DivItemChangeActionHandler.kt b/client/android/div/src/main/java/com/yandex/div/core/view2/items/DivItemChangeActionHandler.kt index ce5e5554e..d9238426d 100644 --- a/client/android/div/src/main/java/com/yandex/div/core/view2/items/DivItemChangeActionHandler.kt +++ b/client/android/div/src/main/java/com/yandex/div/core/view2/items/DivItemChangeActionHandler.kt @@ -1,12 +1,9 @@ package com.yandex.div.core.view2.items import android.net.Uri -import android.util.DisplayMetrics -import android.view.View import com.yandex.div.core.DivViewFacade import com.yandex.div.internal.KAssert import com.yandex.div.json.expressions.ExpressionResolver -import com.yandex.div2.DivSizeUnit private const val AUTHORITY_SET_CURRENT_ITEM = "set_current_item" private const val AUTHORITY_NEXT_ITEM = "set_next_item" @@ -49,103 +46,86 @@ internal object DivItemChangeActionHandler { KAssert.fail { "$PARAM_ID param is required to set item" } return false } - val targetView = view.view.findViewWithTag(id) ?: return false val authority = uri.authority - val viewWithItems = DivViewWithItems.create(targetView, resolver) { direction(authority) } ?: return false + val viewController = DivViewWithItemsController.create(id, view, resolver, direction(authority)) ?: return false return when (authority) { AUTHORITY_SET_CURRENT_ITEM -> - handleSetCurrentItem(uri, viewWithItems) + handleSetCurrentItem(uri, viewController) AUTHORITY_NEXT_ITEM -> - handleNextItem(uri, viewWithItems) + handleNextItem(uri, viewController) AUTHORITY_PREVIOUS_ITEM -> - handlePreviousItem(uri, viewWithItems) + handlePreviousItem(uri, viewController) AUTHORITY_SCROLL_BACKWARD -> - handleScrollBackward(uri, viewWithItems) + handleScrollBackward(uri, viewController) AUTHORITY_SCROLL_FORWARD -> - handleScrollForward(uri, viewWithItems) + handleScrollForward(uri, viewController) AUTHORITY_SCROLL_TO_POSITION -> - handleScrollTo(uri, viewWithItems) + handleScrollTo(uri, viewController) AUTHORITY_SCROLL_TO_END -> - handleScrollToTheEnd(viewWithItems) + handleScrollToTheEnd(viewController) AUTHORITY_SCROLL_TO_START -> - handleScrollToTheStart(viewWithItems) + handleScrollToTheStart(viewController) else -> false } } - private fun handleSetCurrentItem(uri: Uri, view: DivViewWithItems): Boolean { - val item = uri.getQueryParameter(PARAM_ITEM) - if (item == null) { + private fun handleSetCurrentItem(uri: Uri, viewController: DivViewWithItemsController): Boolean { + val rawItem = uri.getQueryParameter(PARAM_ITEM) + if (rawItem == null) { KAssert.fail { "$PARAM_ITEM is required to set current item" } return false } - return try { - view.currentItem = item.toInt() - true + val item = try { + rawItem.toInt() } catch (e: NumberFormatException) { - KAssert.fail { "$item is not a number" } - false + KAssert.fail { "$rawItem is not a number" } + return false } - } - - private fun handleNextItem(uri: Uri, view: DivViewWithItems): Boolean { - return handleItemNavigation(uri, view) { strategy, step -> - view.currentItem = strategy.nextItem(step) - } - } - - private fun handlePreviousItem(uri: Uri, view: DivViewWithItems): Boolean { - return handleItemNavigation(uri, view) { strategy, step -> - view.currentItem = strategy.previousItem(step) - } - } - - - private fun handleScrollForward(uri: Uri, view: DivViewWithItems): Boolean { - return handleItemNavigation(uri, view) { strategy, step -> - view.scrollTo(strategy.positionAfterScrollBy(step)) - } - } - - private fun handleScrollBackward(uri: Uri, view: DivViewWithItems): Boolean { - return handleItemNavigation(uri, view) { strategy, step -> - view.scrollTo(strategy.positionAfterScrollBy(-step)) - } - } - - private fun handleScrollTo(uri: Uri, view: DivViewWithItems): Boolean { - return handleItemNavigation(uri, view) { _, step -> - view.scrollTo(step, DivSizeUnit.DP) - } - } - - private fun handleScrollToTheEnd(view: DivViewWithItems): Boolean { - view.scrollToTheEnd() + viewController.setCurrentItem(item) return true } - private fun handleScrollToTheStart(view: DivViewWithItems): Boolean { - view.currentItem = 0 - return true + private fun handleNextItem(uri: Uri, viewController: DivViewWithItemsController): Boolean { + return withOverflowAndStep(uri, viewController::changeCurrentItemByStep) } - private inline fun handleItemNavigation( - uri: Uri, - view: DivViewWithItems, - navigate: (strategy: OverflowItemStrategy, step: Int) -> Unit - ): Boolean { - val strategy = overflowStrategy(uri, view.currentItem, view.itemCount, view.scrollRange, - view.scrollOffset, view.metrics) + private fun handlePreviousItem(uri: Uri, viewController: DivViewWithItemsController): Boolean { + return withOverflowAndStep(uri) { overflow, step -> + viewController.changeCurrentItemByStep(overflow, -step) + } + } + + private fun handleScrollForward(uri: Uri, viewController: DivViewWithItemsController): Boolean { + return withOverflowAndStep(uri, viewController::scrollByOffset) + } + + private fun handleScrollBackward(uri: Uri, viewController: DivViewWithItemsController): Boolean { + return withOverflowAndStep(uri) { overflow, step -> + viewController.scrollByOffset(overflow, -step) + } + } + + private fun handleScrollTo(uri: Uri, viewController: DivViewWithItemsController): Boolean { val step = uri.getStepParam() - navigate(strategy, step) + viewController.scrollTo(step) + return true + } + + private fun handleScrollToTheEnd(viewController: DivViewWithItemsController): Boolean { + viewController.scrollToEnd() + return true + } + + private fun handleScrollToTheStart(viewController: DivViewWithItemsController): Boolean { + viewController.scrollToStart() return true } @@ -158,18 +138,22 @@ internal object DivItemChangeActionHandler { default } } -} -private fun overflowStrategy(uri: Uri, currentItem: Int, itemCount: Int, scrollRange: Int, - scrollOffset: Int, metrics: DisplayMetrics): OverflowItemStrategy { - val overflow = uri.getQueryParameter(PARAM_OVERFLOW) - return OverflowItemStrategy.create(overflow, currentItem, itemCount, scrollRange, scrollOffset, metrics) -} + private inline fun withOverflowAndStep( + uri: Uri, + actionOnViewController: (String?, Int) -> Unit + ): Boolean { + val step = uri.getStepParam() + val overflow = uri.getQueryParameter(PARAM_OVERFLOW) + actionOnViewController(overflow, step) + return true + } -private fun direction(authority: String?): Direction { - return when (authority) { - AUTHORITY_PREVIOUS_ITEM -> Direction.PREVIOUS - AUTHORITY_NEXT_ITEM -> Direction.NEXT - else -> Direction.NEXT + private fun direction(authority: String?): Direction { + return when (authority) { + AUTHORITY_PREVIOUS_ITEM -> Direction.PREVIOUS + AUTHORITY_NEXT_ITEM -> Direction.NEXT + else -> Direction.NEXT + } } } diff --git a/client/android/div/src/main/java/com/yandex/div/core/view2/items/DivViewWithItems.kt b/client/android/div/src/main/java/com/yandex/div/core/view2/items/DivViewWithItems.kt index e71650db2..86c373489 100644 --- a/client/android/div/src/main/java/com/yandex/div/core/view2/items/DivViewWithItems.kt +++ b/client/android/div/src/main/java/com/yandex/div/core/view2/items/DivViewWithItems.kt @@ -49,12 +49,17 @@ internal sealed class DivViewWithItems { /** * Scroll to @param dp value. */ - open fun scrollTo(value: Int, sizeUnit: DivSizeUnit = DivSizeUnit.PX) = Unit + open fun scrollTo(value: Int, sizeUnit: DivSizeUnit = DivSizeUnit.PX, animated: Boolean = true) = Unit /** * Scroll to the end of recycler view. */ - open fun scrollToTheEnd() = Unit + open fun scrollToTheEnd(animated: Boolean = true) = Unit + + /** + * sets Current item without scroll animation + */ + open fun setCurrentItemNoAnimation(index: Int) = Unit /** * Implementation of [DivViewWithItems] specific for div gallery with `scroll_mode` "paging" @@ -75,9 +80,17 @@ internal sealed class DivViewWithItems { override val scrollRange get() = view.scrollRange() override val scrollOffset get() = view.scrollOffset() - override fun scrollTo(value: Int, sizeUnit: DivSizeUnit) = - view.scrollTo(value, sizeUnit, metrics) - override fun scrollToTheEnd() = view.scrollToTheEnd(metrics) + override fun scrollTo(value: Int, sizeUnit: DivSizeUnit, animated: Boolean) = + view.scrollTo(value, sizeUnit, metrics, animated) + override fun scrollToTheEnd(animated: Boolean) { + view.scrollToTheEnd(metrics, animated) + } + + override fun setCurrentItemNoAnimation(index: Int) { + checkItem(index, itemCount) { + view.scrollToPosition(index) + } + } } /** @@ -109,9 +122,15 @@ internal sealed class DivViewWithItems { override val scrollRange get() = view.scrollRange() override val scrollOffset get() = view.scrollOffset() - override fun scrollTo(value: Int, sizeUnit: DivSizeUnit) = - view.scrollTo(value, sizeUnit, metrics) - override fun scrollToTheEnd() = view.scrollToTheEnd(metrics) + override fun scrollTo(value: Int, sizeUnit: DivSizeUnit, animated: Boolean) = + view.scrollTo(value, sizeUnit, metrics, animated) + override fun scrollToTheEnd(animated: Boolean) = view.scrollToTheEnd(metrics, animated) + + override fun setCurrentItemNoAnimation(index: Int) { + checkItem(index, itemCount) { + view.scrollToPosition(index) + } + } } /** @@ -127,8 +146,14 @@ internal sealed class DivViewWithItems { override val itemCount: Int get() = view.viewPager.adapter?.itemCount ?: 0 - override fun scrollToTheEnd() { - view.viewPager.setCurrentItem(itemCount - 1, true) + override fun scrollToTheEnd(animated: Boolean) { + view.viewPager.setCurrentItem(itemCount - 1, animated) + } + + override fun setCurrentItemNoAnimation(index: Int) { + checkItem(index, itemCount) { + view.viewPager.setCurrentItem(index, false) + } } } @@ -145,8 +170,14 @@ internal sealed class DivViewWithItems { override val itemCount: Int get() = view.viewPager.adapter?.count ?: 0 - override fun scrollToTheEnd() { - view.viewPager.setCurrentItem(itemCount - 1, true) + override fun scrollToTheEnd(animated: Boolean) { + view.viewPager.setCurrentItem(itemCount - 1, animated) + } + + override fun setCurrentItemNoAnimation(index: Int) { + checkItem(index, itemCount) { + view.viewPager.setCurrentItem(index, false) + } } } @@ -206,16 +237,17 @@ private fun T.canScroll(): Boolean { } } -private fun T.scrollTo(value: Int, sizeUnit: DivSizeUnit, metrics: DisplayMetrics) { +private fun T.scrollTo(value: Int, sizeUnit: DivSizeUnit, metrics: DisplayMetrics, animated: Boolean = true) { val valuePx = when (sizeUnit) { DivSizeUnit.PX -> value DivSizeUnit.SP -> value.spToPx(metrics) DivSizeUnit.DP -> value.dpToPx(metrics) } val lm = linearLayoutManager ?: return + val scroll: (dx: Int, dy: Int) -> Unit = if (animated) this::smoothScrollBy else this::scrollBy when (lm.orientation) { - RecyclerView.HORIZONTAL -> smoothScrollBy(valuePx - computeHorizontalScrollOffset(), 0) - RecyclerView.VERTICAL -> smoothScrollBy(0, valuePx - computeVerticalScrollOffset()) + RecyclerView.HORIZONTAL -> scroll(valuePx - computeHorizontalScrollOffset(), 0) + RecyclerView.VERTICAL -> scroll(0, valuePx - computeVerticalScrollOffset()) } } @@ -229,8 +261,8 @@ private fun T.scrollOffset() = when (linearLayoutManager?.ori else -> computeVerticalScrollOffset() } -private fun T.scrollToTheEnd(metrics: DisplayMetrics) = - scrollTo(scrollRange(), DivSizeUnit.PX, metrics) +private fun T.scrollToTheEnd(metrics: DisplayMetrics, animated: Boolean = true) = + scrollTo(scrollRange(), DivSizeUnit.PX, metrics, animated) private fun LinearLayoutManager.visibleItemPosition(direction: Direction): Int { return when (direction) { diff --git a/client/android/div/src/main/java/com/yandex/div/core/view2/items/DivViewWithItemsController.kt b/client/android/div/src/main/java/com/yandex/div/core/view2/items/DivViewWithItemsController.kt new file mode 100644 index 000000000..ee1b6b6b1 --- /dev/null +++ b/client/android/div/src/main/java/com/yandex/div/core/view2/items/DivViewWithItemsController.kt @@ -0,0 +1,71 @@ +package com.yandex.div.core.view2.items + +import android.view.View +import com.yandex.div.core.DivViewFacade +import com.yandex.div.json.expressions.ExpressionResolver +import com.yandex.div2.DivSizeUnit + +internal class DivViewWithItemsController private constructor(private val view: DivViewWithItems) { + fun setCurrentItem(index: Int, animated: Boolean = true) { + if (animated) { + view.currentItem = index + } else { + view.setCurrentItemNoAnimation(index) + } + } + + fun changeCurrentItemByStep(overflow: String?, step: Int = 1, animated: Boolean = true) { + val strategy = createStrategy(overflow) + val index = when { + step > 0 -> strategy.nextItem(step) + step < 0 -> strategy.previousItem(-step) + else -> return + } + setCurrentItem(index, animated) + } + + fun scrollByOffset(overflow: String? = null, offset: Int, animated: Boolean = true) { + if (offset == 0) return + val strategy = createStrategy(overflow) + view.scrollTo(strategy.positionAfterScrollBy(offset), animated = animated) + } + + fun scrollTo(offset: Int, animated: Boolean = true) { + view.scrollTo(offset, DivSizeUnit.DP, animated) + } + + fun scrollToEnd(animated: Boolean = false) { + view.scrollToTheEnd(animated) + } + + fun scrollToStart(animated: Boolean = false) { + setCurrentItem(0, animated) + } + + private fun createStrategy(overflow: String? = null): OverflowItemStrategy { + return OverflowItemStrategy.create( + overflow, + view.currentItem, + view.itemCount, + view.scrollRange, + view.scrollOffset, + view.metrics + ) + } + + companion object { + + fun create( + id: String, + view: DivViewFacade, + resolver: ExpressionResolver, + direction: Direction = Direction.NEXT + ): DivViewWithItemsController? { + val targetView = view.view.findViewWithTag(id) ?: return null + val viewWithItems = DivViewWithItems.create(targetView, resolver) { direction } ?: return null + return DivViewWithItemsController(viewWithItems) + } + + const val TAG = "DivViewWithItems" + } +} diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png new file mode 100644 index 000000000..323b9d375 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png new file mode 100644 index 000000000..17eaf9b34 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png new file mode 100644 index 000000000..060fec1c4 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png new file mode 100644 index 000000000..6f550c94a Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png new file mode 100644 index 000000000..43307d917 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png new file mode 100644 index 000000000..62c0c3f45 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API24_HDPI_540x1200/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png new file mode 100644 index 000000000..161ff3a06 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png new file mode 100644 index 000000000..12e40ede0 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png new file mode 100644 index 000000000..58f96d908 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png new file mode 100644 index 000000000..d5bd63bd6 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png new file mode 100644 index 000000000..59525b942 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png new file mode 100644 index 000000000..0310cfeae Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png new file mode 100644 index 000000000..2a376ddd1 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png new file mode 100644 index 000000000..61ec0b5f6 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png new file mode 100644 index 000000000..809bbfac4 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png new file mode 100644 index 000000000..6160eec3f Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png new file mode 100644 index 000000000..834074693 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png new file mode 100644 index 000000000..6dd3c4867 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API26_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png new file mode 100644 index 000000000..88fe5eb23 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png new file mode 100644 index 000000000..940cfea9d Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png new file mode 100644 index 000000000..15baa58ad Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png new file mode 100644 index 000000000..bc4a3f4b2 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png new file mode 100644 index 000000000..edc8a53a6 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png new file mode 100644 index 000000000..0cd51efb4 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png new file mode 100644 index 000000000..2a376ddd1 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png new file mode 100644 index 000000000..61ec0b5f6 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png new file mode 100644 index 000000000..809bbfac4 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png new file mode 100644 index 000000000..6160eec3f Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png new file mode 100644 index 000000000..834074693 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png new file mode 100644 index 000000000..6dd3c4867 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API28_XHDPI_720x1600/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png new file mode 100644 index 000000000..ccedf593b Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png new file mode 100644 index 000000000..66d26a131 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png new file mode 100644 index 000000000..62be25845 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png new file mode 100644 index 000000000..0b01e71df Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png new file mode 100644 index 000000000..beb8e5521 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png new file mode 100644 index 000000000..476e86ffd Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png new file mode 100644 index 000000000..14af5e141 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png new file mode 100644 index 000000000..b97aaa7e1 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png new file mode 100644 index 000000000..d9bcfdeaa Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png new file mode 100644 index 000000000..843930cb9 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png new file mode 100644 index 000000000..f0798b64d Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png new file mode 100644 index 000000000..4d496d921 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API30_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png new file mode 100644 index 000000000..ccedf593b Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png new file mode 100644 index 000000000..66d26a131 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png new file mode 100644 index 000000000..62be25845 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png new file mode 100644 index 000000000..0b01e71df Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png new file mode 100644 index 000000000..beb8e5521 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png new file mode 100644 index 000000000..476e86ffd Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewPixelCopy/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png new file mode 100644 index 000000000..14af5e141 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step0.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png new file mode 100644 index 000000000..b97aaa7e1 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step1.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png new file mode 100644 index 000000000..d9bcfdeaa Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step2.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png new file mode 100644 index 000000000..843930cb9 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step4.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png new file mode 100644 index 000000000..f0798b64d Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step7.png differ diff --git a/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png new file mode 100644 index 000000000..4d496d921 Binary files /dev/null and b/client/android/divkit-demo-app/src/screenshotTest/screenshots/API32_XXHDPI_1080x2400/viewRender/com.yandex.div.Div2InteractiveScreenshotTest/div-gallery/typed-actions/step9.png differ diff --git a/schema/div-action-scroll-base.json b/schema/div-action-scroll-base.json new file mode 100644 index 000000000..2c8957721 --- /dev/null +++ b/schema/div-action-scroll-base.json @@ -0,0 +1,13 @@ +{ + "properties": { + "id": { + "$description": "translations.json#/div_action_scroll_id", + "type": "string" + }, + "animated": { + "$description": "translations.json#/div_action_scroll_animated", + "type": "boolean", + "default_value": "true" + } + } +} diff --git a/schema/div-action-scroll-by.json b/schema/div-action-scroll-by.json new file mode 100644 index 000000000..3a2cbe97b --- /dev/null +++ b/schema/div-action-scroll-by.json @@ -0,0 +1,45 @@ +{ + "allOf": [ + { + "$ref": "div-action-scroll-base.json" + }, + { + "type": "object", + "$description": "translations.json#/div_action_scroll_by", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll_by" + ] + }, + "overflow": { + "$description": "translations.json#/div_action_scroll_overflow", + "type": "string", + "enum": [ + "clamp", + "ring" + ], + "default_value": "clamp" + }, + "offset": { + "$description": "translations.json#/div_action_scroll_by_offset", + "type": "integer", + "default_value": "0" + }, + "item_count": { + "$description": "translations.json#/div_action_scroll_by_item_count", + "type": "integer", + "default_value": "0" + } + }, + "platforms": [ + "android" + ], + "required": [ + "type", + "id" + ] + } + ] +} diff --git a/schema/div-action-scroll-destination.json b/schema/div-action-scroll-destination.json new file mode 100644 index 000000000..af13c645d --- /dev/null +++ b/schema/div-action-scroll-destination.json @@ -0,0 +1,89 @@ +{ + "$description": "translations.json#/div_action_scroll_destination", + "definitions": { + "offset_destination": { + "$description": "translations.json#/div_action_scroll_destination_offset", + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "offset" + ] + }, + "value": { + "$description": "translations.json#/div_action_scroll_destination_offset_value", + "$ref": "common.json#/non_negative_integer" + } + }, + "required": [ + "type", + "value" + ] + }, + "index_destination": { + "$description": "translations.json#/div_action_scroll_destination_index", + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "index" + ] + }, + "value": { + "$description": "translations.json#/div_action_scroll_destination_index_value", + "$ref": "common.json#/non_negative_integer" + } + }, + "required": [ + "type", + "value" + ] + }, + "start_destination": { + "$description": "translations.json#/div_action_scroll_destination_start", + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "start" + ] + } + }, + "required": [ + "type" + ] + }, + "end_destination": { + "$description": "translations.json#/div_action_scroll_destination_end", + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "end" + ] + } + }, + "required": [ + "type" + ] + } + }, + "anyOf": [ + { + "$ref": "#/definitions/offset_destination" + }, + { + "$ref": "#/definitions/index_destination" + }, + { + "$ref": "#/definitions/start_destination" + }, + { + "$ref": "#/definitions/end_destination" + } + ] +} \ No newline at end of file diff --git a/schema/div-action-scroll-to.json b/schema/div-action-scroll-to.json new file mode 100644 index 000000000..f26c15644 --- /dev/null +++ b/schema/div-action-scroll-to.json @@ -0,0 +1,31 @@ +{ + "allOf": [ + { + "$ref": "div-action-scroll-base.json" + }, + { + "type": "object", + "$description": "translations.json#/div_action_scroll_to", + "properties": { + "type": { + "type": "string", + "enum": [ + "scroll_to" + ] + }, + "destination": { + "$description": "translations.json#/div_action_scroll_to_destination", + "$ref": "div-action-scroll-destination.json" + } + }, + "platforms": [ + "android" + ], + "required": [ + "type", + "id", + "destination" + ] + } + ] +} diff --git a/schema/div-action-typed.json b/schema/div-action-typed.json index 905a77912..0603f3c0b 100644 --- a/schema/div-action-typed.json +++ b/schema/div-action-typed.json @@ -33,6 +33,12 @@ { "$ref": "div-action-hide-tooltip.json" }, + { + "$ref": "div-action-scroll-by.json" + }, + { + "$ref": "div-action-scroll-to.json" + }, { "$ref": "div-action-set-state.json" }, diff --git a/schema/translations.json b/schema/translations.json index 55cb63033..e92aafa39 100644 --- a/schema/translations.json +++ b/schema/translations.json @@ -147,6 +147,66 @@ "en": "Context menu.", "ru": "Контекстное меню." }, + "div_action_scroll_animated": { + "en": "If `true` (default value) scroll will be animated, else not.", + "ru": "Если `true` (значение по умолчанию) то пролистывание будет анимировано, иначе без анимации." + }, + "div_action_scroll_by": { + "en": "Scrolls scrollable container from current position by `item_count` or by `offset`, if both provided scroll action will be combined, negative numbers associated with backward scroll.", + "ru": "Пролистывает контейнер со скроллом от текущей позиции на `item_count` или `offset`, если оба значения указаны, действие будет скомбинированным, отрицательные значения пролистывают назад." + }, + "div_action_scroll_by_offset": { + "en": "Distance to scroll measured in `dp` from current position, negative value is associated with backward scroll. Applicable only in `gallery`.", + "ru": "Расстояние для скроллинга измеряемое в `dp` от текущей позиции, отрицательные значения пролистывают назад. Применим только в `gallery`" + }, + "div_action_scroll_by_item_count": { + "en": "Count of container items to scroll, negative value is associated with backward scroll.", + "ru": "Количество элементов контейнера, которые надо пролистать, отрицательные значения пролистывают назад." + }, + "div_action_scroll_destination": { + "en": "Specifies the destination of scroll in a container.", + "ru": "Указывает кончную точку пролистывания в контейнере." + }, + "div_action_scroll_destination_end": { + "en": "Specifies container's end as scroll destination.", + "ru": "Указывает конец контейнера как кончную точку пролистывания." + }, + "div_action_scroll_destination_index": { + "en": "Specifies element with provided index as scroll destination.", + "ru": "Указывает элемент с заданным индексом как кончную точку пролистывания." + }, + "div_action_scroll_destination_index_value": { + "en": "Index of contaner's item.", + "ru": "Индекс элемента контейнера." + }, + "div_action_scroll_destination_offset": { + "en": "Specifies position measured in `dp` from container's start as scroll destination. Applicable only in `gallery`.", + "ru": "Указывает позицию измеренную в `dp` от начала контейнера как кончную точку пролистывания. Применм только в `gallery`" + }, + "div_action_scroll_destination_offset_value": { + "en": "Position in `dp`.", + "ru": "Позиция в `dp`." + }, + "div_action_scroll_destination_start": { + "en": "Specifies container's start as scroll destination.", + "ru": "Указывает начало контейнера как кончную точку пролистывания." + }, + "div_action_scroll_id": { + "en": "Identifier of the view that is going to be manipulated.", + "ru": "Идентификатор вью в котором нужно выполнить операцию." + }, + "div_action_scroll_overflow": { + "en": "Specifies how navigation will occur when the boundary elements are reached:
  • `clamp` — Transition will stop at the boundary element (default value);
  • `ring` — Transition will be to the beginning or the end depending on the current element.
  • ", + "ru": "Указывает, как будет происходить навигация при достижении граничных элементов:
  • `clamp` — переход остановится на граничном элементе (значение по умолчанию);
  • `ring` — произойдет переход в начало или конец в зависимости от текущего элемента.
  • " + }, + "div_action_scroll_to": { + "en": "Scrolls or switches container to given destination provided by `destination`.", + "ru": "Выполняет скролл к позиции или переключает элемент в контейнере на указанный папаметром`destiantion`." + }, + "div_action_scroll_to_destination": { + "en": "Specifies destination of scroll:
  • `index` - scroll or switch to item with index provided by `value`;
  • `offset` - scroll to position measured in `dp` from container's start and provided by `value`. Applicable only in `gallery`;
  • `start` - scrolls to start of container;
  • `end` - scrolls to end of container.
  • .", + "ru": "Указывает конечную точку пролистывания:
  • `index` - пролистывание до элемента с индексом, указанным в `value`;
  • `offset` - пролистывание до позиции измеренной в `dp` от начала контейнера, указанной в `value`. Применим только в `gallery`;
  • `start` - пролистывание в начало контейнера;
  • `end` - пролистывание в конец контейнера.
  • ." + }, "div_action_set_state": { "en": "Switches the appearance of content in `div-state`.", "ru": "Устанавливает новый внешний вид контента в `div-state`." diff --git a/test_data/interactive_snapshot_test_data/div-gallery/typed-actions.json b/test_data/interactive_snapshot_test_data/div-gallery/typed-actions.json new file mode 100644 index 000000000..39f027649 --- /dev/null +++ b/test_data/interactive_snapshot_test_data/div-gallery/typed-actions.json @@ -0,0 +1,217 @@ +{ + "description": "Use typed actions for scroll and navigation in gallery", + "platforms": [ + "android" + ], + "div_data": { + "templates": { + "text_block": { + "type": "text", + "width": { + "type": "match_parent" + }, + "height": { + "type": "fixed", + "value": 80 + }, + "background": [ + { + "type": "solid", + "color": "#eeeeee" + } + ], + "font_size": 20, + "text_alignment_vertical": "center", + "text_alignment_horizontal": "center", + "text_color": "#000000", + "margins": { + "left": 10, + "right": 10 + } + } + }, + "card": { + "log_id": "card", + "states": [ + { + "state_id": 0, + "div": { + "type": "container", + "orientation": "vertical", + "items": [ + { + "type": "gallery", + "id": "gallery1", + "scroll_mode": "default", + "items": [ + { + "text": "Item 0", + "type": "text_block" + }, + { + "text": "Item 1", + "type": "text_block" + }, + { + "text": "Item 2", + "type": "text_block" + }, + { + "text": "Item 3", + "type": "text_block" + }, + { + "text": "Item 4", + "type": "text_block" + }, + { + "text": "Item 5", + "type": "text_block" + } + ] + } + ] + } + } + ] + } + }, + "steps": [ + { + "expected_screenshot": "step0.png" + }, + { + "div_actions": [ + { + "log_id": "gallery1/current", + "typed": { + "type": "scroll_to", + "id": "gallery1", + "destination": { + "type": "index", + "value": 1 + } + } + } + ], + "expected_screenshot": "step1.png" + }, + { + "div_actions": [ + { + "log_id": "gallery1/next", + "typed": { + "type": "scroll_by", + "id": "gallery1", + "item_count": 1 + } + } + ], + "expected_screenshot": "step2.png" + }, + { + "div_actions": [ + { + "log_id": "gallery1/prev", + "typed": { + "type": "scroll_by", + "id": "gallery1", + "item_count": -1 + } + } + ], + "expected_screenshot": "step1.png" + }, + { + "div_actions": [ + { + "log_id": "gallery1/end", + "typed": { + "type": "scroll_to", + "destination": { + "type": "end" + }, + "id": "gallery1" + } + } + ], + "delay": 500, + "expected_screenshot": "step4.png" + }, + { + "div_actions": [ + { + "log_id": "gallery1/start", + "typed": { + "type": "scroll_to", + "destination": { + "type": "start" + }, + "id": "gallery1" + } + } + ], + "delay": 500, + "expected_screenshot": "step0.png" + }, + { + "div_actions": [ + { + "log_id": "gallery1/current 2", + "typed": { + "type": "scroll_to", + "id": "gallery1", + "destination": { + "type": "index", + "value": 1 + } + } + } + ], + "expected_screenshot": "step1.png" + }, + { + "div_actions": [ + { + "log_id": "gallery1/forward", + "typed": { + "type": "scroll_by", + "id": "gallery1", + "offset": 50 + } + } + ], + "expected_screenshot": "step7.png" + }, + { + "div_actions": [ + { + "log_id": "gallery1/backward", + "typed": { + "type": "scroll_by", + "id": "gallery1", + "offset": -50 + } + } + ], + "expected_screenshot": "step1.png" + }, + { + "div_actions": [ + { + "log_id": "gallery1/to_position", + "typed": { + "type": "scroll_to", + "id": "gallery1", + "destination": { + "type": "offset", + "value": 200 + } + } + } + ], + "expected_screenshot": "step9.png" + } + ] +} + diff --git a/test_data/regression_test_data/gallery/gallery-item-actions-typed.json b/test_data/regression_test_data/gallery/gallery-item-actions-typed.json new file mode 100644 index 000000000..92a2b11e0 --- /dev/null +++ b/test_data/regression_test_data/gallery/gallery-item-actions-typed.json @@ -0,0 +1,718 @@ +{ + "templates": { + "header": { + "type": "text", + "font_size": 18, + "paddings": { + "left": 10, + "right": 10, + "top": 10, + "bottom": 5 + } + }, + "button": { + "type": "text", + "height": { + "type": "fixed", + "value": 30 + }, + "width": { + "type": "fixed", + "value": 60 + }, + "text_alignment_horizontal": "center", + "text_alignment_vertical": "center", + "font_size": 18, + "font_weight": "bold", + "text_color": "#ffffff", + "background": [ + { + "color": "#D098D3", + "type": "solid" + } + ], + "margins": { + "left": 5, + "right": 5 + }, + "border": { + "corner_radius": 6 + } + }, + "text_block": { + "type": "text", + "$text": "header", + "width": { + "type": "match_parent" + }, + "height": { + "type": "fixed", + "value": 80 + }, + "border": { + "corner_radius": 6 + }, + "background": [ + { + "color": "#0e000000", + "type": "solid" + } + ], + "font_size": 20, + "text_alignment_vertical": "center", + "text_alignment_horizontal": "center", + "text_color": "#000000", + "margins": { + "left": 10, + "right": 10 + } + } + }, + "card": { + "log_id": "card", + "states": [ + { + "state_id": 0, + "div": { + "type": "container", + "orientation": "vertical", + "items": [ + { + "type": "header", + "text": "scroll_mode = default" + }, + { + "type": "gallery", + "id": "gallery1", + "scroll_mode": "default", + "default_item": 1, + "items": [ + { + "text": "Item 0", + "type": "text_block" + }, + { + "text": "Item 1", + "type": "text_block" + }, + { + "text": "Item 2", + "type": "text_block" + }, + { + "text": "Item 3", + "type": "text_block" + }, + { + "text": "Item 4", + "type": "text_block" + }, + { + "text": "Item 5", + "type": "text_block" + } + ] + }, + { + "type": "header", + "text": "scroll_mode = default. overflow=ring" + }, + { + "type": "gallery", + "id": "gallery4", + "scroll_mode": "default", + "default_item": 1, + "items": [ + { + "text": "Item 0", + "type": "text_block", + "width": { + "type": "fixed", + "value": 600 + } + }, + { + "text": "Item 1", + "type": "text_block", + "width": { + "type": "fixed", + "value": 600 + } + }, + { + "text": "Item 2", + "type": "text_block", + "width": { + "type": "fixed", + "value": 600 + } + }, + { + "text": "Item 3", + "type": "text_block", + "width": { + "type": "fixed", + "value": 600 + } + }, + { + "text": "Item 4", + "type": "text_block", + "width": { + "type": "fixed", + "value": 600 + } + }, + { + "text": "Item 5", + "type": "text_block", + "width": { + "type": "fixed", + "value": 600 + } + } + ] + }, + { + "type": "header", + "text": "scroll_mode = paging" + }, + { + "type": "gallery", + "id": "gallery2", + "scroll_mode": "paging", + "default_item": 1, + "items": [ + { + "text": "Item 0", + "type": "text_block" + }, + { + "text": "Item 1", + "type": "text_block" + }, + { + "text": "Item 2", + "type": "text_block" + }, + { + "text": "Item 3", + "type": "text_block" + }, + { + "text": "Item 4", + "type": "text_block" + }, + { + "text": "Item 5", + "type": "text_block" + } + ] + }, + { + "type": "header", + "text": "scroll_mode = paging. overflow=ring" + }, + { + "type": "gallery", + "id": "gallery3", + "scroll_mode": "paging", + "default_item": 1, + "items": [ + { + "text": "Item 0", + "type": "text_block", + "width": { + "type": "fixed", + "value": 600 + } + }, + { + "text": "Item 1", + "type": "text_block", + "width": { + "type": "fixed", + "value": 600 + } + }, + { + "text": "Item 2", + "type": "text_block", + "width": { + "type": "fixed", + "value": 600 + } + }, + { + "text": "Item 3", + "type": "text_block", + "width": { + "type": "fixed", + "value": 600 + } + }, + { + "text": "Item 4", + "type": "text_block", + "width": { + "type": "fixed", + "value": 600 + } + }, + { + "text": "Item 5", + "type": "text_block", + "width": { + "type": "fixed", + "value": 600 + } + } + ] + }, + { + "type": "container", + "orientation": "horizontal", + "content_alignment_horizontal": "center", + "items": [ + { + "type": "button", + "text": "<<", + "actions": [ + { + "log_id": "gallery1/first", + "typed": { + "type": "scroll_to", + "id": "gallery1", + "animated": false, + "destination": { + "type": "index", + "value": 0 + } + } + }, + { + "log_id": "gallery2/first", + "typed": { + "type": "scroll_to", + "id": "gallery2", + "destination": { + "type": "index", + "value": 0 + } + } + }, + { + "log_id": "gallery3/first", + "typed": { + "type": "scroll_to", + "id": "gallery3", + "animated": false, + "destination": { + "type": "index", + "value": 0 + } + } + }, + { + "log_id": "gallery4/first", + "typed": { + "type": "scroll_to", + "id": "gallery4", + "destination": { + "type": "index", + "value": 0 + } + } + } + ] + }, + { + "type": "button", + "text": "<", + "actions": [ + { + "log_id": "gallery1/prev", + "typed": { + "type": "scroll_by", + "id": "gallery1", + "item_count": -1, + "animated": false + } + }, + { + "log_id": "gallery2/prev", + "typed": { + "type": "scroll_by", + "id": "gallery2", + "item_count": -1 + } + }, + { + "log_id": "gallery3/prev", + "typed": { + "type": "scroll_by", + "id": "gallery3", + "overflow": "ring", + "item_count": -1, + "animated": false + } + }, + { + "log_id": "gallery4/prev", + "typed": { + "type": "scroll_by", + "id": "gallery4", + "overflow": "ring", + "item_count": -1 + } + } + ] + }, + { + "type": "button", + "text": ">", + "actions": [ + { + "log_id": "gallery1/next", + "typed": { + "type": "scroll_by", + "id": "gallery1", + "item_count": 1, + "animated": false + } + }, + { + "log_id": "gallery2/next", + "typed": { + "type": "scroll_by", + "id": "gallery2", + "item_count": 1 + } + }, + { + "log_id": "gallery3/next", + "typed": { + "type": "scroll_by", + "id": "gallery3", + "overflow": "ring", + "item_count": 1, + "animated": false + } + }, + { + "log_id": "gallery4/next", + "typed": { + "type": "scroll_by", + "id": "gallery4", + "overflow": "ring", + "item_count": 1 + } + } + ] + }, + { + "type": "button", + "text": ">>", + "actions": [ + { + "log_id": "gallery1/last", + "typed": { + "type": "scroll_to", + "id": "gallery1", + "animated": false, + "destination": { + "type": "index", + "value": 5 + } + } + }, + { + "log_id": "gallery2/last", + "typed": { + "type": "scroll_to", + "id": "gallery2", + "destination": { + "type": "index", + "value": 5 + } + } + }, + { + "log_id": "gallery3/last", + "typed": { + "type": "scroll_to", + "id": "gallery3", + "animated": false, + "destination": { + "type": "index", + "value": 5 + } + } + }, + { + "log_id": "gallery4/last", + "typed": { + "type": "scroll_to", + "id": "gallery4", + "destination": { + "type": "index", + "value": 5 + } + } + } + ] + } + ], + "paddings": { + "top": 10 + } + }, + { + "type": "container", + "orientation": "horizontal", + "content_alignment_horizontal": "center", + "items": [ + { + "type": "button", + "text": "<<", + "actions": [ + { + "log_id": "gallery1/scroll_to_start", + "typed": { + "type": "scroll_to", + "destination": { + "type": "start" + }, + "id": "gallery1", + "animated": false + } + }, + { + "log_id": "gallery2/scroll_to_start", + "typed": { + "type": "scroll_to", + "destination": { + "type": "start" + }, + "id": "gallery2" + } + }, + { + "log_id": "gallery3/scroll_to_start", + "typed": { + "type": "scroll_to", + "destination": { + "type": "start" + }, + "id": "gallery3", + "animated": false + } + }, + { + "log_id": "gallery4/scroll_to_start", + "typed": { + "type": "scroll_to", + "destination": { + "type": "start" + }, + "id": "gallery4" + } + } + ] + }, + { + "type": "button", + "text": "<", + "actions": [ + { + "log_id": "gallery1/scroll_backward by 50dp", + "typed": { + "type": "scroll_by", + "id": "gallery1", + "offset": -50, + "animated": false + } + }, + { + "log_id": "gallery2/scroll_backward by 50dp", + "typed": { + "type": "scroll_by", + "id": "gallery2", + "offset": -50 + } + }, + { + "log_id": "gallery3/scroll_backward by 50dp", + "typed": { + "type": "scroll_by", + "id": "gallery3", + "offset": -50, + "overflow": "ring", + "animated": false + } + }, + { + "log_id": "gallery4/scroll_backward by 50dp", + "typed": { + "type": "scroll_by", + "id": "gallery4", + "offset": -50, + "overflow": "ring" + } + } + ] + }, + { + "type": "button", + "text": "*", + "actions": [ + { + "log_id": "gallery1/scroll to position 300dp", + "typed": { + "type": "scroll_to", + "id": "gallery1", + "animated": false, + "destination": { + "type": "offset", + "value": 300 + } + } + }, + { + "log_id": "gallery2/scroll to position 300dp", + "typed": { + "type": "scroll_to", + "id": "gallery2", + "destination": { + "type": "offset", + "value": 300 + } + } + }, + { + "log_id": "gallery3/scroll to position 300dp", + "typed": { + "type": "scroll_to", + "id": "gallery3", + "animated": false, + "destination": { + "type": "offset", + "value": 300 + } + } + }, + { + "log_id": "gallery4/scroll to position 300dp", + "typed": { + "type": "scroll_to", + "id": "gallery4", + "destination": { + "type": "offset", + "value": 300 + } + } + } + ] + }, + { + "type": "button", + "text": ">", + "actions": [ + { + "log_id": "gallery1/scroll_forward by 50dp", + "typed": { + "type": "scroll_by", + "id": "gallery1", + "offset": 50, + "animated": false + } + }, + { + "log_id": "gallery2/scroll_forward by 50dp", + "typed": { + "type": "scroll_by", + "id": "gallery2", + "offset": 50 + } + }, + { + "log_id": "gallery3/scroll_forward by 50dp", + "typed": { + "type": "scroll_by", + "id": "gallery3", + "offset": 50, + "overflow": "ring", + "animated": false + } + }, + { + "log_id": "gallery4/scroll_forward by 50dp", + "typed": { + "type": "scroll_by", + "id": "gallery4", + "offset": 50, + "overflow": "ring" + } + } + ] + }, + { + "type": "button", + "text": ">>", + "actions": [ + { + "log_id": "gallery1/scroll_to_end", + "typed": { + "type": "scroll_to", + "destination": { + "type": "end" + }, + "id": "gallery1", + "animated": false + } + }, + { + "log_id": "gallery2/scroll_to_end", + "typed": { + "type": "scroll_to", + "destination": { + "type": "end" + }, + "id": "gallery2" + } + }, + { + "log_id": "gallery3/scroll_to_end", + "typed": { + "type": "scroll_to", + "destination": { + "type": "end" + }, + "id": "gallery3", + "animated": false + } + }, + { + "log_id": "gallery4/scroll_to_end", + "typed": { + "type": "scroll_to", + "destination": { + "type": "end" + }, + "id": "gallery4" + } + } + ] + } + ], + "paddings": { + "top": 10 + } + } + ] + } + } + ] + } +} + diff --git a/test_data/regression_test_data/index.json b/test_data/regression_test_data/index.json index 67678eafa..7e62ecab2 100644 --- a/test_data/regression_test_data/index.json +++ b/test_data/regression_test_data/index.json @@ -224,6 +224,24 @@ ], "file": "gallery/gallery-item-actions.json" }, + { + "title": "Gallery item actions typed", + "tags": [ + "DivGallery", + "TypedActions" + ], + "steps": [ + "Horizontal swipe to left", + "Horizontal swipe to right", + "Click on buttons" + ], + "expected_results": [ + "Content is changes depending on scroll direction or clicked buttons", + "Gallery scroll is logged", + "first and last galleries are scrolled without animation" + ], + "file": "gallery/gallery-item-actions-typed.json" + }, { "title": "Gallery default item states", "automated": [