学城 PPT

2020/11/17 上午2:14:37

当前为 2020-11-16 提交的版本,查看 最新版本

// ==UserScript==
// @name        学城 PPT
// @namespace   Violentmonkey Scripts
// @match       https://km.sankuai.com/page/*
// @grant       none
// @version     1.0
// @author      -
// @description 2020/11/17 上午2:14:37
// ==/UserScript==


(async () => {
  
  console.log(window)
// window.addEventListener('load', async () => {
  const loadScript = (src) => {
    const s = document.createElement('script')
    s.src = src
    s.async = 'async'
    s.defer = 'defer'
    
    document.head.appendChild(s)
    
    return new Promise(resolve => {
      s.onload = resolve
    })
  }
  
  const htmlEscape = string => string
        .replace(/&/g, '&')
        .replace(/"/g, '"')
        .replace(/'/g, ''')
        .replace(/</g, '&lt;')
        .replace(/>/g, '&gt;');
  
  await loadScript('https://unpkg.sankuai.com/package/slider-doc/dist/slider-doc.min.js')
  
  console.log(window.SliderDoc)
  
  const ops = document.querySelector('.doc-ops')
//   ops.prepend(
    
//   )
  
  if (typeof window.SliderDoc === 'function') {
    window.SliderDoc(
      {
        title: {
          selector: '.ct-editor-wrapper .ct-title-wrapper .ct-title-p',
          global: true,
          type: 'css'
        },
        createUser: {
          selector: '.ct-editor-wrapper .ct-doc-info .ct-user-name',
          global: true,
          type: 'css'
        },
        lvl0: '.ct-editor-wrapper .pm-body-wrapper h1',
        lvl1: '.ct-editor-wrapper .pm-body-wrapper h2',
        lvl2: '.ct-editor-wrapper .pm-body-wrapper h3',
        lvl3: '.ct-editor-wrapper .pm-body-wrapper h4',
        lvl4: '.ct-editor-wrapper .pm-body-wrapper h5',
        text:
          '.ct-editor-wrapper .pm-body-wrapper p, .ct-editor-wrapper .pm-body-wrapper .ct-code .CodeMirror-code, .ct-editor-wrapper .pm-body-wrapper ul, .ct-editor-wrapper .pm-body-wrapper ol, .ct-editor-wrapper .pm-body-wrapper li'
      },
      {
        renderers: [
          (vNode, ctx, render) => {
            const domNode = vNode.domNode
            if (domNode && domNode.querySelectorAll) {
              domNode.querySelectorAll('.ct-code').forEach((node) => {
                const codeBase = node.querySelector('.CodeMirror-code')
                //
                const container = document.createElement('section')
                container.innerHTML = `<pre><code data-trim data-noescape>${htmlEscape(codeBase.textContent)}</code></pre>`
                node.replaceWith(container)
              })
            }

            return render()
          },
          (vNode, ctx, render) => {
            const domNode = vNode.domNode
            if (domNode.classList.contains('CodeMirror-code')) {
              return `<pre><code data-trim data-noescape>${htmlEscape(vNode.value)}</code></pre>`
            }

            return render()
          }
        ]
        // renderSectionAttrs: (node, ctx) => {
        //   return ''
        // }
      }
    );
  }
  
})()