import { Panel, Group, vlayout, image, layoutConfig, ScaleType, refreshable, Color, pullable, stack, Image, Refreshable, TranslationAnimation, loge, log, list, listItem, text } from "doric";
import { title, icon_refresh, colors } from "./utils";

@Entry
class MyDemo extends Panel {
    build(root: Group) {
        let refreshed: Refreshable
        let headerImage: Image
        stack(
            [
                refreshed = refreshable({
                    onRefresh: () => {
                        refreshed.setRefreshing(context, false)
                    },
                    header: pullable(
                        stack([]).apply({
                            backgroundColor: Color.RED,
                            layoutConfig: layoutConfig().just(),
                            width: 100,
                            height: 30,
                        }),
                        {
                            startAnimation: () => {
                            },
                            stopAnimation: () => {
                            },
                            setPullingDistance: (distance: number) => {
                                headerImage.scaleX = headerImage.scaleY = (headerImage.height + distance * 2) / headerImage.height
                            },
                        }),
                    content: list({
                        itemCount: 20,
                        renderItem: (idx) => {
                            return listItem(text({
                                text: `Item :${idx}`,
                                layoutConfig: layoutConfig().just(),
                                width: root.width,
                                height: 50,
                                textColor: Color.WHITE,
                                backgroundColor: colors[idx % colors.length],
                            }))
                        },
                        layoutConfig: layoutConfig().most(),
                    }),
                    layoutConfig: layoutConfig().most(),
                }).also(v => {
                    v.top = 200
                }),

                headerImage = image({
                    imageUrl: "https://img.zcool.cn/community/01e75b5da933daa801209e1ffa4649.jpg@1280w_1l_2o_100sh.jpg",
                    layoutConfig: layoutConfig().just(),
                    width: root.width,
                    height: 200,
                    scaleType: ScaleType.ScaleAspectFill,
                }),
            ],
            {
                layoutConfig: layoutConfig().most()
            }
        ).in(root)
    }
}