text: import { r as registerInstance, h, H as Host, c as getElement } from './core-3c51ccf2.js';
  
  const calendar = {
      lunarInfo: [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2,
          0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977,
          0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970,
          0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950,
          0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557,
          0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0,
          0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0,
          0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6,
          0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570,
          0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0,
          0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5,
          0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930,
          0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530,
          0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45,
          0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0,
          /**Add By JJonline@JJonline.Cn**/
          0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0,
          0x0a2e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4,
          0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0,
          0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160,
          0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a2d0, 0x0d150, 0x0f252,
          0x0d520],
      /**
        * 公历每个月份的天数普通表
        * @Array Of Property
        * @return Number
        */
      solarMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
      /**
        * 天干地支之天干速查表
        * @Array Of Property trans["甲","乙","丙","丁","戊","己","庚","辛","壬","癸"]
        * @return Cn string
        */
      Gan: ["\u7532", "\u4e59", "\u4e19", "\u4e01", "\u620a", "\u5df1", "\u5e9a", "\u8f9b", "\u58ec", "\u7678"],
      /**
        * 天干地支之地支速查表
        * @Array Of Property
        * @trans["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"]
        * @return Cn string
        */
      Zhi: ["\u5b50", "\u4e11", "\u5bc5", "\u536f", "\u8fb0", "\u5df3", "\u5348", "\u672a", "\u7533", "\u9149", "\u620c", "\u4ea5"],
      /**
        * 天干地支之地支速查表<=>生肖
        * @Array Of Property
        * @trans["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]
        * @return Cn string
        */
      Animals: ["\u9f20", "\u725b", "\u864e", "\u5154", "\u9f99", "\u86c7", "\u9a6c", "\u7f8a", "\u7334", "\u9e21", "\u72d7", "\u732a"],
      /**
       * 阳历节日
       */
      festival: {
          '1-1': { title: '元旦节' },
          '2-14': { title: '情人节' },
          '5-1': { title: '劳动节' },
          '5-4': { title: '青年节' },
          '6-1': { title: '儿童节' },
          '9-10': { title: '教师节' },
          '10-1': { title: '国庆节' },
          '12-25': { title: '圣诞节' },
          '3-8': { title: '妇女节' },
          '3-12': { title: '植树节' },
          '4-1': { title: '愚人节' },
          '5-12': { title: '护士节' },
          '7-1': { title: '建党节' },
          '8-1': { title: '建军节' },
          '12-24': { title: '平安夜' },
      },
      /**
       * 农历节日
       */
      lfestival: {
          '12-30': { title: '除夕' },
          '1-1': { title: '春节' },
          '1-15': { title: '元宵节' },
          '5-5': { title: '端午节' },
          '8-15': { title: '中秋节' },
          '9-9': { title: '重阳节' },
      },
      /**
       * 返回默认定义的阳历节日
       */
      getFestival() {
          return this.festival;
      },
      /**
       * 返回默认定义的内容里节日
       */
      getLunarFestival() {
          return this.lfestival;
      },
      /**
       *
       * @param {Object} 按照festival的格式输入数据，设置阳历节日
       */
      setFestival(param = {}) {
          this.festival = param;
      },
      /**
       *
       * @param {Object} 按照lfestival的格式输入数据，设置农历节日
       */
      setLunarFestival(param = {}) {
          this.lfestival = param;
      },
      /**
        * 24节气速查表
        * @Array Of Property
        * @trans["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"]
        * @return Cn string
        */
      solarTerm: ["\u5c0f\u5bd2", "\u5927\u5bd2", "\u7acb\u6625", "\u96e8\u6c34", "\u60ca\u86f0", "\u6625\u5206", "\u6e05\u660e", "\u8c37\u96e8", "\u7acb\u590f", "\u5c0f\u6ee1", "\u8292\u79cd", "\u590f\u81f3", "\u5c0f\u6691", "\u5927\u6691", "\u7acb\u79cb", "\u5904\u6691", "\u767d\u9732", "\u79cb\u5206", "\u5bd2\u9732", "\u971c\u964d", "\u7acb\u51ac", "\u5c0f\u96ea", "\u5927\u96ea", "\u51ac\u81f3"],
      /**
        * 1900-2100各年的24节气日期速查表
        * @Array Of Property
        * @return 0x string For splice
        */
      sTermInfo: ['9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f',
          '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
          '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa',
          '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f',
          'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f',
          '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa',
          '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2',
          '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f',
          '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e',
          '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
          '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722',
          '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f',
          '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
          '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
          '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722',
          '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f',
          '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
          '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
          '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722',
          '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
          '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
          '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
          '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722',
          '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',
          '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
          '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
          '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722',
          '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',
          '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',
          '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
          '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
          '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
          '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
          '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
          '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',
          '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa',
          '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
          '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
          '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721',
          '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2',
          '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',
          '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
          '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd',
          '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',
          '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
          '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
          '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd',
          '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',
          '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
          '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721',
          '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5',
          '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722',
          '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
          '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
          '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35',
          '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',
          '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721',
          '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd',
          '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35',
          '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',
          '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721',
          '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5',
          '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35',
          '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',
          '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',
          '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35',
          '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'],
      /**
        * 数字转中文速查表
        * @Array Of Property
        * @trans ['日','一','二','三','四','五','六','七','八','九','十']
        * @return Cn string
        */
      nStr1: ["\u65e5", "\u4e00", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d", "\u4e03", "\u516b", "\u4e5d", "\u5341"],
      /**
        * 日期转农历称呼速查表
        * @Array Of Property
        * @trans ['初','十','廿','卅']
        * @return Cn string
        */
      nStr2: ["\u521d", "\u5341", "\u5eff", "\u5345"],
      /**
        * 月份转农历称呼速查表
        * @Array Of Property
        * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊']
        * @return Cn string
        */
      nStr3: ["\u6b63", "\u4e8c", "\u4e09", "\u56db", "\u4e94", "\u516d", "\u4e03", "\u516b", "\u4e5d", "\u5341", "\u51ac", "\u814a"],
      /**
        * 返回农历y年一整年的总天数
        * @param lunar Year
        * @return Number
        * @eg:var count = calendar.lYearDays(1987) ;//count=387
        */
      lYearDays: function (y) {
          var i, sum = 348;
          for (i = 0x8000; i > 0x8; i >>= 1) {
              sum += (this.lunarInfo[y - 1900] & i) ? 1 : 0;
          }
          return (sum + this.leapDays(y));
      },
      /**
        * 返回农历y年闰月是哪个月；若y年没有闰月 则返回0
        * @param lunar Year
        * @return Number (0-12)
        * @eg:var leapMonth = calendar.leapMonth(1987) ;//leapMonth=6
        */
      leapMonth: function (y) {
          return (this.lunarInfo[y - 1900] & 0xf);
      },
      /**
        * 返回农历y年闰月的天数 若该年没有闰月则返回0
        * @param lunar Year
        * @return Number (0、29、30)
        * @eg:var leapMonthDay = calendar.leapDays(1987) ;//leapMonthDay=29
        */
      leapDays: function (y) {
          if (this.leapMonth(y)) {
              return ((this.lunarInfo[y - 1900] & 0x10000) ? 30 : 29);
          }
          return (0);
      },
      /**
        * 返回农历y年m月（非闰月）的总天数，计算m为闰月时的天数请使用leapDays方法
        * @param lunar Year
        * @return Number (-1、29、30)
        * @eg:var MonthDay = calendar.monthDays(1987,9) ;//MonthDay=29
        */
      monthDays: function (y, m) {
          if (m > 12 || m < 1) {
              return -1;
          } //月份参数从1至12，参数错误返回-1
          return ((this.lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29);
      },
      /**
        * 返回公历(!)y年m月的天数
        * @param solar Year
        * @return Number (-1、28、29、30、31)
        * @eg:var solarMonthDay = calendar.leapDays(1987) ;//solarMonthDay=30
        */
      solarDays: function (y, m) {
          if (m > 12 || m < 1) {
              return -1;
          } //若参数错误 返回-1
          var ms = m - 1;
          if (ms == 1) { //2月份的闰平规律测算后确认返回28或29
              return (((y % 4 == 0) && (y % 100 != 0) || (y % 400 == 0)) ? 29 : 28);
          }
          else {
              return (this.solarMonth[ms]);
          }
      },
      /**
       * 农历年份转换为干支纪年
       * @param  lYear 农历年的年份数
       * @return Cn string
       */
      toGanZhiYear: function (lYear) {
          var ganKey = (lYear - 3) % 10;
          var zhiKey = (lYear - 3) % 12;
          if (ganKey == 0)
              ganKey = 10; //如果余数为0则为最后一个天干
          if (zhiKey == 0)
              zhiKey = 12; //如果余数为0则为最后一个地支
          return this.Gan[ganKey - 1] + this.Zhi[zhiKey - 1];
      },
      /**
       * 公历月、日判断所属星座
       * @param  cMonth [description]
       * @param  cDay [description]
       * @return Cn string
       */
      toAstro: function (cMonth, cDay) {
          var s = "\u9b54\u7faf\u6c34\u74f6\u53cc\u9c7c\u767d\u7f8a\u91d1\u725b\u53cc\u5b50\u5de8\u87f9\u72ee\u5b50\u5904\u5973\u5929\u79e4\u5929\u874e\u5c04\u624b\u9b54\u7faf";
          var arr = [20, 19, 21, 21, 21, 22, 23, 23, 23, 23, 22, 22];
          return s.substr(cMonth * 2 - (cDay < arr[cMonth - 1] ? 2 : 0), 2) + "\u5ea7"; //座
      },
      /**
        * 传入offset偏移量返回干支
        * @param offset 相对甲子的偏移量
        * @return Cn string
        */
      toGanZhi: function (offset) {
          return this.Gan[offset % 10] + this.Zhi[offset % 12];
      },
      /**
        * 传入公历(!)y年获得该年第n个节气的公历日期
        * @param y公历年(1900-2100)；n二十四节气中的第几个节气(1~24)；从n=1(小寒)算起
        * @return day Number
        * @eg:var _24 = calendar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春
        */
      getTerm: function (y, n) {
          if (y < 1900 || y > 2100) {
              return -1;
          }
          if (n < 1 || n > 24) {
              return -1;
          }
          var _table = this.sTermInfo[y - 1900];
          var _info = [
              parseInt('0x' + _table.substr(0, 5)).toString(),
              parseInt('0x' + _table.substr(5, 5)).toString(),
              parseInt('0x' + _table.substr(10, 5)).toString(),
              parseInt('0x' + _table.substr(15, 5)).toString(),
              parseInt('0x' + _table.substr(20, 5)).toString(),
              parseInt('0x' + _table.substr(25, 5)).toString()
          ];
          var _calday = [
              _info[0].substr(0, 1),
              _info[0].substr(1, 2),
              _info[0].substr(3, 1),
              _info[0].substr(4, 2),
              _info[1].substr(0, 1),
              _info[1].substr(1, 2),
              _info[1].substr(3, 1),
              _info[1].substr(4, 2),
              _info[2].substr(0, 1),
              _info[2].substr(1, 2),
              _info[2].substr(3, 1),
              _info[2].substr(4, 2),
              _info[3].substr(0, 1),
              _info[3].substr(1, 2),
              _info[3].substr(3, 1),
              _info[3].substr(4, 2),
              _info[4].substr(0, 1),
              _info[4].substr(1, 2),
              _info[4].substr(3, 1),
              _info[4].substr(4, 2),
              _info[5].substr(0, 1),
              _info[5].substr(1, 2),
              _info[5].substr(3, 1),
              _info[5].substr(4, 2),
          ];
          return parseInt(_calday[n - 1]);
      },
      /**
        * 传入农历数字月份返回汉语通俗表示法
        * @param lunar month
        * @return Cn string
        * @eg:var cnMonth = calendar.toChinaMonth(12) ;//cnMonth='腊月'
        */
      toChinaMonth: function (m) {
          if (m > 12 || m < 1) {
              return -1;
          } //若参数错误 返回-1
          var s = this.nStr3[m - 1];
          s += "\u6708"; //加上月字
          return s;
      },
      /**
        * 传入农历日期数字返回汉字表示法
        * @param lunar day
        * @return Cn string
        * @eg:var cnDay = calendar.toChinaDay(21) ;//cnMonth='廿一'
        */
      toChinaDay: function (d) {
          var s;
          switch (d) {
              case 10:
                  s = '\u521d\u5341';
                  break;
              case 20:
                  s = '\u4e8c\u5341';
                  break;
              case 30:
                  s = '\u4e09\u5341';
                  break;
              default:
                  s = this.nStr2[Math.floor(d / 10)];
                  s += this.nStr1[d % 10];
          }
          return (s);
      },
      /**
        * 年份转生肖[!仅能大致转换] => 精确划分生肖分界线是“立春”
        * @param y year
        * @return Cn string
        * @eg:var animal = calendar.getAnimal(1987) ;//animal='兔'
        */
      getAnimal: function (y) {
          return this.Animals[(y - 4) % 12];
      },
      /**
        * 传入阳历年月日获得详细的公历、农历object信息 <=>JSON
        * @param y  solar year
        * @param m  solar month
        * @param d  solar day
        * @return JSON object
        * @eg:console.log(calendar.solar2lunar(1987,11,01));
        */
      solar2lunar: function (y, m, d) {
          y = parseInt(y);
          m = parseInt(m);
          d = parseInt(d);
          //年份限定、上限
          if (y < 1900 || y > 2100) {
              return -1; // undefined转换为数字变为NaN
          }
          //公历传参最下限
          if (y == 1900 && m == 1 && d < 31) {
              return -1;
          }
          //未传参  获得当天
          if (!y) {
              var objDate = new Date();
          }
          else {
              var objDate = new Date(y, parseInt(m) - 1, d);
          }
          var i, temp = 0, leap;
          //修正ymd参数
          y = objDate.getFullYear(),
              m = objDate.getMonth() + 1,
              d = objDate.getDate();
          var offset = (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) - Date.UTC(1900, 0, 31)) / 86400000;
          for (i = 1900; i < 2101 && offset > 0; i++) {
              temp = this.lYearDays(i);
              offset -= temp;
          }
          if (offset < 0) {
              offset += temp;
              i--;
          }
          //是否今天
          var isTodayObj = new Date(), isToday = false;
          if (isTodayObj.getFullYear() == y && isTodayObj.getMonth() + 1 == m && isTodayObj.getDate() == d) {
              isToday = true;
          }
          //星期几
          var nWeek = objDate.getDay(), cWeek = this.nStr1[nWeek];
          //数字表示周几顺应天朝周一开始的惯例
          if (nWeek == 0) {
              nWeek = 7;
          }
          //农历年
          var year = i;
          var leap = this.leapMonth(i); //闰哪个月
          var isLeap = false;
          //效验闰月
          for (i = 1; i < 13 && offset > 0; i++) {
              //闰月
              if (leap > 0 && i == (leap + 1) && isLeap == false) {
                  --i;
                  isLeap = true;
                  temp = this.leapDays(year); //计算农历闰月天数
              }
              else {
                  temp = this.monthDays(year, i); //计算农历普通月天数
              }
              //解除闰月
              if (isLeap == true && i == (leap + 1)) {
                  isLeap = false;
              }
              offset -= temp;
          }
          // 闰月导致数组下标重叠取反
          if (offset == 0 && leap > 0 && i == leap + 1) {
              if (isLeap) {
                  isLeap = false;
              }
              else {
                  isLeap = true;
                  --i;
              }
          }
          if (offset < 0) {
              offset += temp;
              --i;
          }
          //农历月
          var month = i;
          //农历日
          var day = offset + 1;
          //天干地支处理
          var sm = m - 1;
          var gzY = this.toGanZhiYear(year);
          // 当月的两个节气
          // bugfix-2017-7-24 11:03:38 use lunar Year Param `y` Not `year`
          var firstNode = this.getTerm(y, (m * 2 - 1)); //返回当月「节」为几日开始
          var secondNode = this.getTerm(y, (m * 2)); //返回当月「节」为几日开始
          // 依据12节气修正干支月
          var gzM = this.toGanZhi((y - 1900) * 12 + m + 11);
          if (d >= firstNode) {
              gzM = this.toGanZhi((y - 1900) * 12 + m + 12);
          }
          //传入的日期的节气与否
          var isTerm = false;
          var Term = null;
          if (firstNode == d) {
              isTerm = true;
              Term = this.solarTerm[m * 2 - 2];
          }
          if (secondNode == d) {
              isTerm = true;
              Term = this.solarTerm[m * 2 - 1];
          }
          //日柱 当月一日与 1900/1/1 相差天数
          var dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10;
          var gzD = this.toGanZhi(dayCyclical + d - 1);
          //该日期所属的星座
          var astro = this.toAstro(m, d);
          var solarDate = y + '-' + m + '-' + d;
          var lunarDate = year + '-' + month + '-' + day;
          var festival = this.festival;
          var lfestival = this.lfestival;
          var festivalDate = m + '-' + d;
          var lunarFestivalDate = month + '-' + day;
          return {
              date: solarDate,
              lunarDate: lunarDate,
              festival: festival[festivalDate] ? festival[festivalDate].title : null,
              lunarFestival: lfestival[lunarFestivalDate] ? lfestival[lunarFestivalDate].title : null,
              'lYear': year,
              'lMonth': month,
              'lDay': day,
              'Animal': this.getAnimal(year),
              'IMonthCn': (isLeap ? "\u95f0" : '') + this.toChinaMonth(month),
              'IDayCn': this.toChinaDay(day),
              'cYear': y,
              'cMonth': m,
              'cDay': d,
              'gzYear': gzY,
              'gzMonth': gzM,
              'gzDay': gzD,
              'isToday': isToday,
              'isLeap': isLeap,
              'nWeek': nWeek,
              'ncWeek': "\u661f\u671f" + cWeek,
              'isTerm': isTerm,
              'Term': Term,
              'astro': astro
          };
      },
      /**
        * 传入农历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON
        * @param y  lunar year
        * @param m  lunar month
        * @param d  lunar day
        * @param isLeapMonth  lunar month is leap or not.[如果是农历闰月第四个参数赋值true即可]
        * @return JSON object
        * @eg:console.log(calendar.lunar2solar(1987,9,10));
        */
      // lunar2solar: function (y, m, d, isLeapMonth) {   //参数区间1900.1.31~2100.12.1
      //   y = parseInt(y)
      //   m = parseInt(m)
      //   d = parseInt(d)
      //   var isLeapMonth = !!isLeapMonth;
      //   var leapOffset = 0;
      //   var leapMonth = this.leapMonth(y);
      //   var leapDay = this.leapDays(y);
      //   if (isLeapMonth && (leapMonth != m)) { return -1; }//传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同
      //   if (y == 2100 && m == 12 && d > 1 || y == 1900 && m == 1 && d < 31) { return -1; }//超出了最大极限值
      //   var day = this.monthDays(y, m);
      //   var _day = day;
      //   //bugFix 2016-9-25
      //   //if month is leap, _day use leapDays method
      //   if (isLeapMonth) {
      //     _day = this.leapDays(y, m);
      //   }
      //   if (y < 1900 || y > 2100 || d > _day) { return -1; }//参数合法性效验
      //   //计算农历的时间差
      //   var offset = 0;
      //   for (var i = 1900; i < y; i++) {
      //     offset += this.lYearDays(i);
      //   }
      //   var leap = 0, isAdd = false;
      //   for (var i = 1; i < m; i++) {
      //     leap = this.leapMonth(y);
      //     if (!isAdd) {//处理闰月
      //       if (leap <= i && leap > 0) {
      //         offset += this.leapDays(y); isAdd = true;
      //       }
      //     }
      //     offset += this.monthDays(y, i);
      //   }
      //   //转换闰月农历 需补充该年闰月的前一个月的时差
      //   if (isLeapMonth) { offset += day; }
      //   //1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点)
      //   var stmap = Date.UTC(1900, 1, 30, 0, 0, 0);
      //   var calObj = new Date((offset + d - 31) * 86400000 + stmap);
      //   var cY = calObj.getUTCFullYear();
      //   var cM = calObj.getUTCMonth() + 1;
      //   var cD = calObj.getUTCDate();
      //   return this.solar2lunar(cY, cM, cD);
      // },
      // 获取某个月第一天是几号
      getFirstDay(year, month) {
          return new Date(year, month - 1, 0).getDay();
      },
      // 获取某个月多少天
      getMonthLength(year, month) {
          return new Date(year, month, 0).getDate();
      },
      // 获取一个月的数据
      getMonthDaysArray(year, month) {
          // 获取上月，本月，下月三个月的数据
          const firstDay = this.getFirstDay(year, month);
          const curMonthDay = this.getMonthLength(year, month);
          const preMonthDay = this.getMonthLength(year, month - 1);
          // const nextMonthDay = this.getMonthLength(year, month + 1)
          let dayArr = [];
          var row = Math.ceil((firstDay + curMonthDay) / 7);
          for (var i = 0; i < row; i++) {
              let arr = [];
              for (var j = 0; j < 7; j++) {
                  let m;
                  let y;
                  let day = i * 7 + j - firstDay + 1;
                  if (day <= 0) {
                      m = month - 1;
                      y = m == 0 ? year - 1 : year;
                      day = day + preMonthDay;
                  }
                  else if (day > curMonthDay) {
                      y = y == 12 ? year + 1 : year;
                      day = day - curMonthDay;
                      m = month + 1;
                  }
                  else {
                      m = month;
                      y = year;
                  }
                  arr.push(Object.assign({ year: y, month: m, day: day, date: `${y}/${m}/${day}` }, this.solar2lunar(y, m, day)));
              }
              dayArr.push(arr);
          }
          return dayArr;
      },
      // 获取一个星期的数据
      getWeekDaysArray(year, week) {
          var d = new Date(year, 0, 1 + (week - 1) * 7);
          var new_Date = new Date(d);
          var timesStamp = new_Date.getTime();
          var currenDay = new_Date.getDay();
          var dates = [];
          for (var i = 0; i < 7; i++) {
              var dateString = new Date(timesStamp + 24 * 60 * 60 * 1000 * (i - (currenDay + 6) % 7)).toLocaleDateString().replace(/\//g, '-');
              var dateArr = dateString.split('-');
              dates.push(this.solar2lunar(dateArr[0], dateArr[1], dateArr[2]));
          }
          return dates;
      },
      // 获取今天是第几周
      getWeekOfYear(y, m, d) {
          var today = new Date(`${y}/${m}/${d}`);
          var firstDay = new Date(today.getFullYear(), 0, 1);
          var dayOfWeek = firstDay.getDay();
          var spendDay = 1;
          if (dayOfWeek != 0) {
              spendDay = 7 - dayOfWeek + 1;
          }
          firstDay = new Date(today.getFullYear(), 0, 1 + spendDay);
          var day = Math.ceil((today.valueOf() - firstDay.valueOf()) / 86400000);
          var result = Math.ceil(day / 7);
          return result + 1;
      },
      // 获取某个月有多少天
      getMonthDaysCount(year, month) {
          return [null, 31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month] || (this.isLeapYear(year) ? 29 : 28);
      },
      // 是否是闰年
      isLeapYear(year) {
          return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
      },
      getDates(year, week) {
          var d = new Date(year, 0, 1 + (week - 1) * 7);
          var new_Date = new Date(d);
          var timesStamp = new_Date.getTime();
          var currenDay = new_Date.getDay();
          var dates = [];
          for (var i = 0; i < 7; i++) {
              var dateString = new Date(timesStamp + 24 * 60 * 60 * 1000 * (i - (currenDay + 6) % 7)).toLocaleDateString().replace(/\//g, '-');
              var dateArr = dateString.split('-');
              dates.push(this.solar2lunar(dateArr[0], dateArr[1], dateArr[2]));
          }
          return dates;
      },
      getDateOfWeek(year, weekNumber) {
          return new Date(year, 0, 1 + ((weekNumber - 1) * 7));
      },
      generateWeek(year, week) {
          return this.getDates(this.getDateOfWeek(year, week));
      },
      getDiffDate(targetDate) {
          let date1 = new Date(targetDate);
          let date2 = new Date();
          date1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());
          date2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());
          const diff = date2.getTime() - date1.getTime();
          const diffDate = diff / (24 * 60 * 60 * 1000);
          return diffDate;
      },
      transformWeekToString(week) {
          return ['', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日'][week];
      }
  };
  
  const Calendar = class {
      constructor(hostRef) {
          registerInstance(this, hostRef);
          this.year = (new Date()).getFullYear();
          this.month = (new Date()).getMonth() + 1;
          this.day = (new Date()).getDate();
          this.type = 'month';
          this.vshape = false;
          this.lunar = false;
          this.watermark = true;
          this.gesture = false;
          this.choice = 0;
      }
      componentWillLoad() {
          this.data = this.generateThreeGroupData();
      }
      rangeHandle(value) {
          this.el.setAttribute('type', value);
      }
      watermarkHandle(value) {
          this.el.setAttribute('watermark', value);
      }
      startHandle(value) {
          var days = this.el.shadowRoot.querySelectorAll('.day');
          days.forEach(day => {
              day.classList.remove('selected');
          });
          if (value) {
              this.el.shadowRoot.querySelector(`#day${value.split('-').join('')}`).classList.add('selected');
              console.log(this.el.shadowRoot.querySelector(`#day${value.split('-').join('')}`));
          }
      }
      endHandle(value) {
          if (value) {
              this.el.shadowRoot.querySelector(`#day${value.split('-').join('')}`).classList.add('selected');
              this.render();
          }
      }
      componentDidLoad() {
          this.bindObverse();
          this.renderDiff();
      }
      componentDidUpdate() {
          this.renderDiff();
      }
      bindObverse() {
          if (this.type == 'week') {
              this.addObverse(this.el.shadowRoot.querySelectorAll('.week'), (entry) => {
                  if (parseInt(entry.target.getAttribute('week')) == this.week) {
                      var range = [];
                      // 将当前周的年月日信息同步到props
                      var days = entry.target.childNodes;
                      days.forEach(dom => {
                          var year = dom.getAttribute('year');
                          var month = dom.getAttribute('month');
                          var day = dom.getAttribute('day');
                          range.push(`${year}/${month}/${day}`);
                          if (dom.classList.value.indexOf('active') > -1) {
                              this.day = dom.getAttribute('day');
                          }
                      });
                      this.range = range;
                  }
              });
          }
      }
      // 如果是星期视图，添加周的显示监听
      addObverse($doms, callback) {
          $doms.forEach((days) => {
              var io = new IntersectionObserver(entries => {
                  entries.forEach(entry => {
                      if (entry && entry.isIntersecting) {
                          callback(entry);
                      }
                  });
              });
              io.observe(days);
          });
      }
      // 获取三组数据并且返回
      generateThreeGroupData() {
          // 月视图
          var data = [];
          if (this.type == 'month') {
              this.week = calendar.getWeekOfYear(this.year, this.month, this.day);
              var weekday = (new Date(`${this.year}/${this.month}/${this.day}`)).getDay();
              this.weekday = weekday == 0 ? 7 : weekday;
              // 上个月月份
              var lstm = this.month > 1 ? this.month - 1 : 12;
              // 上个月年份
              var lsty = this.month > 1 ? this.year : this.year - 1;
              // 下个月月份
              var nxtm = this.month < 12 ? this.month + 1 : 1;
              // 下个月年份
              var nxty = this.month < 12 ? this.year : this.year + 1;
              var arr = [[lsty, lstm], [this.year, this.month], [nxty, nxtm]];
              arr.map(item => {
                  data.push({
                      year: item[0],
                      month: item[1],
                      data: calendar.getMonthDaysArray(item[0], item[1])
                  });
              });
          }
          // 星期视图
          if (this.type == 'week') {
              var weekday = (new Date()).getDay();
              this.weekday = weekday == 0 ? 7 : weekday;
              // 当前是第几周
              var week = calendar.getWeekOfYear(this.year, this.month, this.day);
              // 今年一共有多少周
              var cweek = calendar.getWeekOfYear(this.year, 12, 31);
              // 去年一共有多少周
              var lstweek = calendar.getWeekOfYear(this.year - 1, 12, 31);
              // 今年最后一天是周几
              var lstdw = (new Date(`${this.year}/12/31`)).getDay();
              // 今年第一天是周几
              var fstdw = (new Date(`${this.year}/1/1`)).getDay();
              // 如果有自定义week就不获取当前日期的星期数
              if (this.week == null)
                  this.week = week;
              // 上一周的年份，如果当前周数是1，年份减1，否则年份不变
              var lsty = this.week > 1 ? this.year : this.year - 1;
              // 下一周的年份，如果当前周数小于今年的总周数，年份不变，否则年份加1
              var nxty = this.week < cweek ? this.year : this.year + 1;
              // 上一周的周数，如果周数大于1，当前周数减1，如果第一天是周一，上一周就是去年总周数，否则就是去年总周数减1
              var lstw = this.week > 1 ? this.week - 1 : fstdw == 1 ? lstweek : lstweek - 1;
              // 下一周的周数，如果小于今年的总周数，周数加1，如果今年最后一天是周末，下一周则是下一年的第1周，否则便是第2周
              var nxtw = this.week < cweek ? this.week + 1 : lstdw == 0 ? 1 : 2;
              var arr = [[lsty, lstw], [this.year, this.week], [nxty, nxtw]];
              arr.map(item => {
                  data.push({
                      year: item[0],
                      // 根据年份和周数获取本周的日期分布
                      week: item[1],
                      data: calendar.getWeekDaysArray(item[0], item[1])
                  });
              });
          }
          this.current = arr;
          return data;
      }
      // 当周数改变的时候，将当前周的日期赋值给range
      onDateChange(type) {
          var index = type == 'plus' ? 2 : 0;
          this.year = this.current[index][0];
          this[this.type] = this.current[index][1];
          if (this.type == 'week') {
              setTimeout(() => {
                  this.month = type == 'plus' ?
                      this.range[6].split('/')[1] :
                      this.range[0].split('/')[1];
                  this.year = type == 'plus' ?
                      this.range[6].split('/')[0] :
                      this.range[0].split('/')[0];
              }, 30);
          }
          this.data = this.generateThreeGroupData();
          this.render();
          this.bindObverse();
      }
      getCssClassMap(day, month) {
          var start, end, current;
          if (this.end) {
              start = (new Date(this.start.split('-').join('/'))).getTime();
              end = (new Date(this.end.split('-').join('/'))).getTime();
              current = (new Date(day.date.split('-').join('/'))).getTime();
          }
          return {
              'day': true,
              'current': day.month == (new Date()).getMonth() + 1 && day.day == (new Date()).getDate(),
              'prev': day.month < month.month,
              'next': day.month > month.month,
              'active': day.day == this.day,
              'selected': current >= start && current <= end || current >= end && current <= start
          };
      }
      getCssClassMap1(day) {
          return {
              'day': true,
              'active': day.nWeek == this.weekday,
              'current': day.cDay == (new Date()).getDate() && day.cMonth == (new Date()).getMonth() + 1 && day.cYear == (new Date()).getFullYear()
          };
      }
      getCssClassMap2() {
          return {
              'content': true,
              'water': this.watermark,
              'gesture': this.gesture
          };
      }
      toggleView() {
          this.type = this.type == 'month' ? 'week' : 'month';
          this.data = this.generateThreeGroupData();
          this.render();
      }
      renderDiff() {
          var month, current;
          if (this.type == 'week') {
              current = this.el.shadowRoot.querySelectorAll('.week')[1].querySelector('.active');
              month = parseInt(current.getAttribute('month'));
          }
          else {
              month = this.month;
          }
          var diff = calendar.getDiffDate(`${this.year}/${month}/${this.day}`);
          var value;
          if (diff < 0) {
              value = `${-diff}天后`;
          }
          else if (diff > 0) {
              value = `${diff}天前`;
          }
          else {
              value = `${calendar.transformWeekToString(this.weekday)}`;
          }
          this.el.shadowRoot.querySelector('.diff').innerHTML = value;
      }
      itemClick(day) {
          if (this.choice == 0) {
              this.day = day.cDay;
              this.weekday = day.nWeek;
              this.month = day.cMonth;
              this.render();
          }
          if (this.choice == 1) {
              if (!this.start) {
                  this.start = day.date;
              }
              else if (this.start && !this.end) {
                  this.end = day.date;
              }
              else {
                  this.start = this.end = undefined;
                  this.start = day.date;
              }
          }
      }
      render() {
          let { data, type, el } = this;
          return (h(Host, null, h("div", { class: "head" }, h("div", { class: "left" }, h("span", { class: "year" }, this.year, "\u5E74"), h("span", { class: "month" }, this.month, "\u6708"), h("span", { class: "diff" })), (() => {
              if (this.vshape) {
                  return (h("button", { class: "circle", onClick: this.toggleView.bind(this) }, this.type == 'month' ? '周' : '月'));
              }
          })(), h("hc-icon", { name: "arrow-lift", onClick: this.onDateChange.bind(this, 'minus') }), h("hc-icon", { name: "arrow-right", onClick: this.onDateChange.bind(this, 'plus') })), h("ul", { class: "weeks" }, h("li", null, "\u4E00"), h("li", null, "\u4E8C"), h("li", null, "\u4E09"), h("li", null, "\u56DB"), h("li", null, "\u4E94"), h("li", null, "\u516D"), h("li", null, "\u65E5")), h("div", { class: this.getCssClassMap2(), style: { transform: `translateX(${-el.offsetWidth}px)` } }, data.map((month) => {
              if (type == 'month') {
                  return (h("div", Object.assign({ class: "month" }, { month: month.month }), month.data.map((week) => {
                      return (h("ul", { class: "week", style: { width: `${el.offsetWidth}px` } }, week.map((day) => {
                          return (h("li", Object.assign({ id: month.month == day.month ? `day${day.date.split('-').join('')}` : '', onClick: this.itemClick.bind(this, day), class: this.getCssClassMap(day, month) }, { year: day.cYear, month: day.cMonth, day: day.cDay, weekday: day.nWeek, week: calendar.getWeekOfYear(day.cYear, day.cMonth, day.cDay) }), h("p", null, day.day), h("h2", null, this.lunar ? day.isTerm ? day.Term : day.IDayCn : '')));
                      })));
                  })));
              }
              else {
                  return (h("ul", Object.assign({ class: "week" }, { year: month.year, week: month.week }, { style: { width: `${el.offsetWidth}px` } }), month.data.map((day) => {
                      return (h("li", Object.assign({ onClick: this.itemClick.bind(this, day), class: this.getCssClassMap1(day) }, { year: day.cYear, month: day.cMonth, day: day.cDay, weekday: day.nWeek, week: calendar.getWeekOfYear(day.cYear, day.cMonth, day.cDay) }), h("p", null, day.cDay), h("h2", null, this.lunar ? day.isTerm ? day.Term : day.IDayCn : '')));
                  })));
              }
          }))));
      }
      async init(option) {
          const calendar = document.createElement('hc-calendar');
          const drawer = document.createElement('hc-drawer');
          drawer.setAttribute('direction', 'btt');
          drawer.setAttribute('round', 'true');
          drawer.setAttribute('padding', '20');
          Object.keys(option).forEach(key => {
              calendar.setAttribute(key, option[key]);
          });
          calendar.setAttribute('service', 'true');
          drawer.setAttribute('role', 'calendar');
          drawer.appendChild(calendar);
          document.body.appendChild(drawer);
          calendar.addEventListener('vclick', () => {
              drawer.destory();
          });
          calendar.addEventListener('vchange', () => {
              if (eval(`(${option.buttons})`).length < 2) {
                  drawer.destory();
              }
          });
          setTimeout(() => {
              drawer.init();
          }, 30);
          return calendar;
      }
      get el() { return getElement(this); }
      static get watchers() { return {
          "type": ["rangeHandle"],
          "watermark": ["watermarkHandle"],
          "start": ["startHandle"],
          "end": ["endHandle"]
      }; }
      static get style() { return ":host {\n  display: block;\n  overflow: hidden;\n}\n:host .head {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: row;\n  flex-direction: row;\n  -ms-flex-align: center;\n  align-items: center;\n  margin-bottom: 0.5rem;\n}\n:host .head .left {\n  -ms-flex: 1;\n  flex: 1;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: row;\n  flex-direction: row;\n  -ms-flex-align: center;\n  align-items: center;\n}\n:host .head .year,\n:host .head .month {\n  font-size: 1rem;\n}\n:host .head .diff {\n  font-size: 0.6rem;\n  background: #eee;\n  color: #262626;\n  padding: 0.2rem 0.4rem;\n  margin: 0 0.5rem 0 0.2rem;\n  display: inline-block;\n  border-radius: 1rem;\n  width: 4em;\n  text-align: center;\n}\n:host .head .circle {\n  display: inline-block;\n  width: 1.2rem;\n  height: 1.2rem;\n  border: 1px solid #2170D9;\n  color: #2170D9;\n  border-radius: 50%;\n  padding: 0;\n  margin: 0;\n  outline: none;\n  background: none;\n}\n:host .weeks {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: row;\n  flex-direction: row;\n  -ms-flex-align: center;\n  align-items: center;\n  list-style: none;\n  margin: 0;\n  padding: 0;\n  font-size: 0.7rem;\n  color: #999;\n  position: relative;\n}\n:host .weeks:after {\n  content: \"\";\n  display: inline-block;\n  width: 100%;\n  position: absolute;\n  left: 0;\n  bottom: 0;\n  height: 1px;\n  background: #e6e6e6;\n  -webkit-transform: scaleY(0.5);\n  transform: scaleY(0.5);\n}\n:host .weeks li {\n  -ms-flex: 1;\n  flex: 1;\n  padding: 0.5rem 0;\n  text-align: center;\n}\n:host .content {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: row;\n  flex-direction: row;\n  -ms-flex-wrap: nowrap;\n  flex-wrap: nowrap;\n  padding: 0.5rem 0;\n}\n:host .content .month {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  -ms-flex-line-pack: justify;\n  align-content: space-between;\n  height: 14rem;\n  position: relative;\n}\n:host .content .month:after {\n  content: attr(month);\n  position: absolute;\n  left: 50%;\n  top: 50%;\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n  font-size: 4rem;\n  color: #eee;\n}\n:host .content .month .week {\n  -ms-flex: 1;\n  flex: 1;\n  position: relative;\n  z-index: 9;\n}\n:host .content .week {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: row;\n  flex-direction: row;\n  list-style: none;\n  padding: 0;\n  margin: 0;\n  -ms-flex-negative: 0;\n  flex-shrink: 0;\n}\n:host .content .week .day {\n  -ms-flex: 1;\n  flex: 1;\n  text-align: center;\n  -webkit-tap-highlight-color: transparent;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  -ms-flex-pack: center;\n  justify-content: center;\n  -ms-flex-align: center;\n  align-items: center;\n  padding: 0.5rem 0;\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n  position: relative;\n}\n:host .content .week .day.selected {\n  background: #eee;\n}\n:host .content .week .day.selected:before {\n  display: none !important;\n}\n:host .content .week .day.active.next:before {\n  display: none;\n}\n:host .content .week .day.active.prev:before {\n  display: none;\n}\n:host .content .week .day.active h2, :host .content .week .day.active p {\n  color: #2170D9;\n}\n:host .content .week .day.active:before {\n  content: \"\";\n  display: inline-block;\n  width: 2rem;\n  height: 2rem;\n  border-radius: 50%;\n  border: 1px solid #2170D9;\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n}\n:host .content .week .day.active.current h2, :host .content .week .day.active.current p {\n  color: #fff;\n}\n:host .content .week .day.active.current:before {\n  background-color: #2170D9;\n}\n:host .content .week .day.active.current.selected h2, :host .content .week .day.active.current.selected p {\n  color: #262626;\n}\n:host .content .week .day p {\n  margin: 0;\n  font-size: 0.8rem;\n  position: relative;\n  z-index: 10;\n  color: #262626;\n  line-height: 1;\n}\n:host .content .week .day h2 {\n  font-size: 0.5rem;\n  font-weight: normal;\n  color: #8c8c8c;\n  position: relative;\n  z-index: 10;\n  margin: 0;\n}\n:host .content .week .day.prev p, :host .content .week .day.next p {\n  color: #e6e6e6;\n}\n:host .content .week .day.prev h2, :host .content .week .day.next h2 {\n  color: #e6e6e6;\n}\n\n:host([type=week]) .content .month {\n  height: auto;\n}"; }
  };
  
  export { Calendar as hc_calendar };
  