import React, { useRef, useEffect, useCallback, useState, useMemo } from 'react';
import { storiesOf } from '@storybook/react';
import { addDays, addWeeks, addMonths, startOfMonth, endOfMonth } from 'date-fns';
import classNames from 'classnames';
import * as dateFns from 'date-fns';
import DatePicker, { DatePickerProps } from '../index';
import { DayStatusType } from '../index';
import { Button, Form, withField } from '../../index';
import {IconClose, IconChevronDown} from '@douyinfe/semi-icons';
const presets = [
    {
      text: 'Today',
      start: new Date(),
      end: new Date(),
    },
    {
      text: 'Tomorrow',
      start: addDays(new Date(), 1),
      end: addDays(new Date(), 1),
    },
    {
      text: 'Next Week',
      start: addWeeks(new Date(), 1),
      end: addWeeks(new Date(), 2),
    },
    {
      text: 'Next Month',
      start: startOfMonth(addMonths(new Date(), 1)),
      end: endOfMonth(addMonths(new Date(), 1)),
    },
    {
      text: 'Today',
      start: new Date(),
      end: new Date(),
    },
    {
      text: 'Tomorrow',
      start: addDays(new Date(), 1),
      end: addDays(new Date(), 1),
    },
    {
      text: 'Next Week',
      start: addWeeks(new Date(), 1),
      end: addWeeks(new Date(), 2),
    },
    {
      text: 'Next Month',
      start: startOfMonth(addMonths(new Date(), 1)),
      end: endOfMonth(addMonths(new Date(), 1)),
    },
  ];
const stories = storiesOf('DatePicker', module);
stories.add('default', () => {
    const Demo = () => {
        const ref = useRef(null);
        useEffect(() => {
            console.log(ref.current);
            if (ref.current) {
                console.log('triggerElRef: ', ref.current.triggerElRef);
            }
        }, [ref.current]);
        return (
            <>
                
                 ({
                        text: preset.text,
                        start: preset.start,
                    }))}
                    onPresetClick={(item, e) => {
                        const { start } = item;
                        console.log('preset click', item, e, start);
                    }}
                />
                 ({
                        start: new Date(),
                    })]}
                    onPresetClick={(item, e) => {
                        const { start } = item;
                        console.log('preset click', item, e, start);
                    }}
                />
            >
        );
    };
    return ;
});
stories.add('useFullRender', () => {
  function Demo() {
    const renderFullDate = (dayNumber: number, fullDate: string, dayStatus: DayStatusType) => {
        const { isInRange, isHover, isSelected, isSelectedStart, isSelectedEnd } = dayStatus;
        const prefix = 'components-datepicker-demo';
        const dateCls = classNames({
            [`${prefix}-day-inrange`]: isInRange,
            [`${prefix}-day-hover`]: isHover,
            [`${prefix}-day-selected`]: isSelected,
            [`${prefix}-day-selected-start`]: isSelectedStart,
            [`${prefix}-day-selected-end`]: isSelectedEnd,
        });
        const dayStyle = {
            display: 'flex',
            alignItems: 'center',
            justifyContent: 'center',
            width: '80%',
            height: '80%',
            borderRadius: '50%',
        };
        return (
            
                {dayNumber}
            
        );
    };
    return ;
  }
  return ;
});
stories.add('triggerRender', () => {
  function Demo() {
    const ref = useRef();
    const [date, setDate] = useState(new Date());
    const formatToken = 'yyyy-MM-dd';
    const onChange = useCallback(date => {
        setDate(date);
    }, []);
    const onClear = useCallback(e => {
        e && e.stopPropagation();
        setDate(null);
    }, []);
    const closeIcon = useMemo(() => {
        return date ?  : ;
    }, [date]);
    return (
         (
                
            )}
        />
    );
}
  return ;
});
stories.add('Form.DatePicker', () => {
  function Demo() {
    const ref = useRef();
    const ref2 = useRef();
    const [open3, setOpen3] = useState(false);
    const presets = [
        {
            text: 'Today',
            start: new Date(),
            end: new Date(),
        },
        {
            text: 'Tomorrow',
            start: new Date(new Date().valueOf() + 1000 * 3600 * 24),
            end: new Date(new Date().valueOf() + 1000 * 3600 * 24),
        },
    ];
    // const CustomDatePicker = (props: DatePickerProps & { fieldRef: React.Ref