UNPKG

@kandy-io/uc-sdk-3.x

Version:
217 lines (197 loc) 7.5 kB
<!DOCTYPE > <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" /> <title>Kandy Tutorials</title> <link rel="stylesheet" href="https://unpkg.com/docute@4/dist/docute.css" /> </head> <body> <div id="docute"></div> <script src="https://unpkg.com/docute@4/dist/docute.js"></script> <script src="//cdn.jsdelivr.net/remarkable/1.7.1/remarkable.min.js"></script> <script type="module"> import { configs } from './config.js' const sidebar = [{ title: "Tutorials", links: [ { title: 'Getting Started', link: 'Getting Started' }, { title: 'Configurations', link: 'Configurations' }, { title: 'Logging', link: 'Logging' }, { title: 'User Connect', link: 'User Connect' }, { title: 'Messaging', link: 'Messaging' }, { title: 'Voice and Video Calls', link: 'Voice and Video Calls' }, { title: 'Call Statistics', link: 'Call Statistics' }, { title: 'Rich Messaging', link: 'Rich Messaging' }, { title: 'SMS Messaging', link: 'SMS Messaging' }, { title: 'Anonymous Calls', link: 'Anonymous Calls' }, ] }] // Get all query params (i.e. params that are provided as part of the URL address of a given Tutorial) // These params come after '/?' in that URL. const queryParams = new URLSearchParams(window.location.search); const configName = queryParams.get('config') let configIdx // Try to determine the index for the configuration we need to use // for replacing all the templated variables in any of the Tutorial pages. if (!configName) { // If there was no 'config' query parameter, then by default we'll access // the first configuration element in our 'configs' array. configIdx = 0 } else { let element = configs.find(x => x.name === configName) if (!element) { configIdx = 0 } else { configIdx = configs.indexOf(element); } } let useDefault = !configs || !configs[configIdx] || !configs[configIdx].data new Docute({ target: '#docute', sidebar, plugins: [ { name: 'Hide Front Matter', extend(api) { api.processMarkdown(md => md.replace(/---([^]*?)---/m, '')) } }, { name: 'Convert KANDYFQDN', extend(api) { const kandyFQDN = useDefault ? '$KANDYFQDN$' : configs[configIdx].data.KANDYFQDN api.processMarkdown(md => md.replace(/\$KANDYFQDN\$/gm, kandyFQDN)) } }, { name: 'Convert KANDYTURN1', extend(api) { const kandyTURN1 = useDefault ? '$KANDYTURN1$' : configs[configIdx].data.KANDYTURN1 api.processMarkdown(md => md.replace(/\$KANDYTURN1\$/gm, kandyTURN1)) } }, { name: 'Convert KANDYTURN2', extend(api) { const kandyTURN2 = useDefault ? '$KANDYTURN2$' : configs[configIdx].data.KANDYTURN2 api.processMarkdown(md => md.replace(/\$KANDYTURN2\$/gm, kandyTURN2)) } }, { name: 'Convert KANDYSTUN1', extend(api) { const kandySTUN1 = useDefault ? '$KANDYSTUN1$' : configs[configIdx].data.KANDYSTUN1 api.processMarkdown(md => md.replace(/\$KANDYSTUN1\$/gm, kandySTUN1)) } }, { name: 'Convert KANDYSTUN2', extend(api) { const kandySTUN2 = useDefault ? '$KANDYSTUN2$' : configs[configIdx].data.KANDYSTUN2 api.processMarkdown(md => md.replace(/\$KANDYSTUN2\$/gm, kandySTUN2)) } }, { name: 'Convert KANDY', extend(api) { const kandy = useDefault ? '$KANDY$' : configs[configIdx].data.KANDY api.processMarkdown(md => md.replace(/\$KANDY\$/gm, kandy)) } }, { name: 'Convert DEFAULTCONFIGNAME', extend(api) { const defaultConfigName = useDefault ? '$DEFAULTCONFIGNAME$' : configs[configIdx].data.DEFAULTCONFIGNAME api.processMarkdown(md => md.replace(/\$DEFAULTCONFIGNAME\$/gm, defaultConfigName)) } }, { name: 'Convert DEFAULTCONFIGURL', extend(api) { const defaultConfigURL = useDefault ? '$DEFAULTCONFIGURL$' : configs[configIdx].data.DEFAULTCONFIGURL api.processMarkdown(md => md.replace(/\$DEFAULTCONFIGURL\$/gm, defaultConfigURL)) } }, { name: 'Convert DEFAULTCONFIGACCESS', extend(api) { const defaultConfigAccess = useDefault ? '$DEFAULTCONFIGACCESS$' : configs[configIdx].data.DEFAULTCONFIGACCESS api.processMarkdown(md => md.replace(/\$DEFAULTCONFIGACCESS\$/gm, defaultConfigAccess)) } }, { name: 'Convert SUBSCRIPTIONFQDN', extend(api) { const subscriptionFQDN = useDefault ? '$SUBSCRIPTIONFQDN$' : configs[configIdx].data.SUBSCRIPTIONFQDN api.processMarkdown(md => md.replace(/\$SUBSCRIPTIONFQDN\$/gm, subscriptionFQDN)) } }, { name: 'Convert WEBSOCKETFQDN', extend(api) { const webSocketFQDN = useDefault ? '$WEBSOCKETFQDN$' : configs[configIdx].data.WEBSOCKETFQDN api.processMarkdown(md => md.replace(/\$WEBSOCKETFQDN\$/gm, webSocketFQDN)) } }, { // This is required so that docute/vue don't mangle // the codepen form. name: 'Unescape HTML', extend(api) { // This hook will wrap the html generated by the markdown // in a div that uses vue's "v-html" directive so that the // html is not escaped by Vue. api.extendMarkdownComponent(component =>{ const rawHtml = String(component.template) // Loop through every line of the markdown to find the codepen form // and replace it with a div with the v-html directive and set the form // as data for the view so that it gets rendered without being escaped. const modifiedHtml = rawHtml.split('\n') .map(line => { if (line.startsWith('<form action="https://codepen.io/pen/define"')) { component.data = () => ({codepenForm: line}) return '<div v-html="codepenForm"></div>' } return line }) .join('\n') component.template = modifiedHtml }) } } ] }) </script> </body> </html>