- const { effect,source,sub,typed_option } = theme.subtitle
- let subContent = sub || new Array()

script.
  window.typedJSFn = {
    init: (str) => {
      window.typed = new Typed('#subtitle', Object.assign({
        strings: str,
        startDelay: 300,
        typeSpeed: 150,
        loop: true,
        backSpeed: 50,
      }, !{JSON.stringify(typed_option)}))
    },
    run: (subtitleType) => {
      if (!{effect}) {
        if (typeof Typed === 'function') {
          subtitleType()
        } else {
          getScript('!{url_for(theme.asset.typed)}').then(subtitleType)
        }
      } else {
        subtitleType()
      }
    }
  }

case source
  when 1
    script.
      function subtitleType () {
        fetch('https://v1.hitokoto.cn')
          .then(response => response.json())
          .then(data => {
            if (!{effect}) {
              const from = '出自 ' + data.from
              const sub = !{JSON.stringify(subContent)}
              sub.unshift(data.hitokoto, from)
              typedJSFn.init(sub)
            } else {
              document.getElementById('subtitle').textContent = data.hitokoto
            }
          })
      }
      typedJSFn.run(subtitleType)

  when 2
    script.
      function subtitleType () {
        getScript('https://yijuzhan.com/api/word.php?m=js').then(() => {
          const con = str[0]
          if (!{effect}) {
            const from = '出自 ' + str[1]
            const sub = !{JSON.stringify(subContent)}
            sub.unshift(con, from)
            typedJSFn.init(sub)
          } else {
            document.getElementById('subtitle').textContent = con
          }
        })
      }
      typedJSFn.run(subtitleType)

  when 3
    script.
      function subtitleType () {
        getScript('https://sdk.jinrishici.com/v2/browser/jinrishici.js').then(() => {
          jinrishici.load(result =>{
            if (!{effect}) {
              const sub = !{JSON.stringify(subContent)}
              const content = result.data.content
              sub.unshift(content)
              typedJSFn.init(sub)
            } else {
              document.getElementById('subtitle').textContent = result.data.content
            }
          })
        })
      }
      typedJSFn.run(subtitleType)

  default
    - subContent = subContent.length ? subContent : new Array(config.subtitle)
    script.
      function subtitleType () {
        if (!{effect}) {
          typedJSFn.init(!{JSON.stringify(subContent)})
        } else {
          document.getElementById("subtitle").textContent = !{JSON.stringify(subContent[0])}
        }
      }
      typedJSFn.run(subtitleType)