{"version":3,"sources":["jsdelivr-header.js","/npm/slide-cast@0.3.0/components/SlideIt/SlideIt.html.js","/npm/slide-cast@0.3.0/components/SlideIt/SlideIt.css.js","/npm/slide-cast@0.3.0/common-css/styles.css.js","/npm/slide-cast@0.3.0/components/SlideIt/SlideIt.js","/npm/slide-cast@0.3.0/components/VideoSpot/VideoSpot.html.js","/npm/slide-cast@0.3.0/components/VideoSpot/VideoSpot.css.js","/npm/slide-cast@0.3.0/components/VideoSpot/VideoSpot.js","/npm/slide-cast@0.3.0/icons/collection.js","/npm/slide-cast@0.3.0/icons/i.js","/npm/slide-cast@0.3.0/icons/link.html.js","/npm/slide-cast@0.3.0/components/CommonToolbar/CommonToolbar.html.js","/npm/slide-cast@0.3.0/components/CommonToolbar/CommonToolbar.css.js","/npm/slide-cast@0.3.0/lib/Recorder.js","/npm/slide-cast@0.3.0/icons/icons.css.js","/npm/slide-cast@0.3.0/components/CommonToolbar/CommonToolbar.js","/npm/slide-cast@0.3.0/components/GroupFrom/GroupFrom.js","/npm/slide-cast@0.3.0/common-css/hl.css.js","/npm/slide-cast@0.3.0/index.js"],"names":[],"mappings":"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","file":"/npm/slide-cast@0.3.0/index.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v4.62.2 and esbuild v0.28.1.\n * Original file: /npm/slide-cast@0.3.0/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import { html } from '@symbiotejs/symbiote';\n\nexport default html`\n<canvas part=\"canvas\" ref=\"canvas\"></canvas>\n<h2 part=\"caption\">{{number}}{{caption}}</h2>\n<div part=\"content\"><slot></slot></div>\n`;","export default /*css*/ `\nslide-it {\n  display: block;\n  position: relative;\n  width: calc(100vw - var(--gap-max) * 2);\n  height: calc(100vh - var(--gap-max) * 2);\n  background-color: var(--clr-1, rgba(0, 0, 0, .92));\n  color: var(--clr-2, #fff);\n  margin: var(--gap-max);\n  border-radius: var(--gap-max);\n  overflow: auto;\n  cursor: url(./cursor.png), crosshair;\n  outline: none;\n\n  &::part(caption) {\n    margin: 0;\n    padding: 0;\n    padding: calc(var(--gap-max) * 2);\n    pointer-events: none;\n  }\n\n  &::part(content) {\n    padding: calc(var(--gap-max) * 2);\n    padding-top: 0;\n    pointer-events: none;\n  }\n\n  &::part(canvas) {\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    z-index: 10000;\n  }\n}\n`;","let h = Math.floor(Math.random() * 121);\n\n/**\n * @param {number} [opacity]\n * @returns {string}\n */\nexport function randClr(opacity = 1) {\n  return `hsla(${h += 51}deg, 50%, 40%, ${opacity})`;\n}\n\nexport default /*css*/ `\n::-webkit-scrollbar {\n  display: none;\n}\n\n@property --grad-clr-1 {\n  syntax: '<color>';\n  inherits: false;\n  initial-value: ${randClr()};\n}\n\n@property --grad-clr-2 {\n  syntax: '<color>';\n  inherits: false;\n  initial-value: ${randClr()};\n}\n\n:root {\n  --clr-1: rgba(0, 0, 0, .92);\n  --clr-2: #fff;\n\n  --gap-min: 2px;\n  --gap-mid: 10px;\n  --gap-max: 20px;\n\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n* {\n  margin: 0;\n  padding: 0;\n  box-sizing: border-box;\n}\n\nhtml, body {\n  margin: 0;\n  padding: 0;\n  box-sizing: border-box;\n}\n\nbody {\n  font-family: sans-serif;\n  font-size: 32px;\n  line-height: 1.5;\n  font-weight: 400;\n  text-rendering: optimizeLegibility;\n  color: var(--clr-2);\n  background-color: #3e3e3e;\n  background: linear-gradient(135deg, var(--grad-clr-1), var(--grad-clr-2));\n  transition: --grad-clr-1 .4s, --grad-clr-2 .4s;\n  background-size: 100% 100vh;\n  background-attachment: fixed;\n}\n\nh1 {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  height: calc(100% - 4em);\n}\n\nul {\n  list-style: none;\n  margin-left: 0;\n  margin-top: 1em;\n  margin-bottom: 1em;\n\n  li {\n    margin-top: 0.5em;\n    margin-bottom: 0.5em;\n\n    &::before {\n      content: '>';\n      margin-right: 0.5em;\n      color: var(--slide-accent-clr, currentColor);\n      transition: color 1s;\n    }\n  }\n}\n\nol {\n  list-style: none;\n  margin-left: 0;\n  margin-top: 1em;\n  margin-bottom: 1em;\n  counter-reset: list-item;\n\n  li {\n    margin-top: 0.5em;\n    margin-bottom: 0.5em;\n    counter-increment: list-item;\n\n    &::before {\n      content: counter(list-item);\n      margin-right: 0.5em;\n      color: var(--slide-accent-clr, currentColor);\n      transition: color 1s;\n    }\n  }\n}\n\nblockquote {\n  display: inline-block;\n  border-left: 6px solid var(--slide-accent-clr, rgba(255, 255, 255, 0.5));\n  padding: .7em;\n  margin-top: var(--gap-max);\n  margin-bottom: var(--gap-max);\n  background-color: rgba(255, 255, 255, 0.1);\n  border-top-right-radius: var(--gap-max);\n  border-bottom-right-radius: var(--gap-max);\n  min-width: 60%;\n\n  &:first-child {\n    margin-top: 0;\n  }\n\n  &:last-child {\n    margin-bottom: 0;\n  }\n}\n\ntable {\n  border-collapse: separate;\n  border-spacing: 4px;\n  width: 100%;\n  margin-bottom: var(--gap-max);\n  font-size: 32px;\n  table-layout: fixed;\n\n  th {\n    padding: 1em;\n    color: var(--clr-2);\n  }\n\n  td {\n    padding: 1em;\n    background-color: var(--slide-accent-clr, rgba(255, 255, 255, 0.1));\n    border-radius: var(--gap-max);\n    transition: background-color 1s;\n  }\n\n}\n\nimg[pre-drawing] {\n  width: 100%;\n  height: 100%;\n  object-fit: contain;\n  object-position: center;\n  position: absolute;\n  top: 0;\n  left: 0;\n  pointer-events: none;\n}\n\na {\n  color: currentColor;\n}\n`;\n","import Symbiote from '@symbiotejs/symbiote';\nimport template from './SlideIt.html.js';\nimport styles from './SlideIt.css.js';\nimport { md2html } from 'jsda-kit/iso/md2html.js';\nimport { randClr } from '../../common-css/styles.css.js';\nimport { PubSub } from '@symbiotejs/symbiote';\n\nconst intObserver = new IntersectionObserver((entries) => {\n  entries.forEach((entry) => {\n    if (entry.isIntersecting) {\n      let appData = PubSub.getCtx('APP');\n      if (appData.read('currentSlide') !== entry.target) {\n        /** @type {HTMLElement} */ (entry.target).focus();\n      }\n    }\n  });\n}, {\n  rootMargin: '0px',\n  threshold: 0.2,\n});\n\nwindow.addEventListener('scroll', (e) => {\n  let targets = document.querySelectorAll('slide-it');\n  intObserver.disconnect();\n  window.setTimeout(() => {\n    targets.forEach((target) => {\n      intObserver.observe(target);\n    });\n  }, 200);\n});\n\nclass SlideIt extends Symbiote {\n\n  renderShadow = true;\n\n  gradClr1 = randClr();\n  gradClr2 = randClr();\n\n  init$ = {\n    caption: '',\n    number: '',\n  }\n\n  nextSlide() {\n    let nextSlide = this.nextElementSibling;\n    if (nextSlide && nextSlide instanceof SlideIt) {\n      nextSlide.focus();\n    }\n  }\n\n  prevSlide() {\n    let prevSlide = this.previousElementSibling;\n    if (prevSlide && prevSlide instanceof SlideIt) {\n      prevSlide.focus();\n    }\n  }\n\n  focus() {\n    // super.focus();\n    this.$['APP/currentSlide'] = this;\n    this.scrollIntoView({ behavior: 'smooth', block: 'center' });\n    document.body.style.setProperty('--grad-clr-1', this.gradClr1);\n    document.body.style.setProperty('--grad-clr-2', this.gradClr2);\n    document.body.style.setProperty('--slide-accent-clr', this.gradClr1);\n    document.body.style.setProperty('--slide-sub-clr', this.gradClr2);\n    this.$['APP/hideVideoSpot'] = this.hasAttribute('hide-video-spot');\n  }\n\n  get canvasRect() {\n    return this.canvas.getBoundingClientRect();\n  }\n\n  get rect() {\n    return this.getBoundingClientRect();\n  }\n\n  #draw(e) {\n    if (e.touches) {\n      e = e.touches[0];\n    }\n    // draw line to the current mouse position\n    let x = e.clientX - this.canvasRect.left;\n    let y = e.clientY - this.canvasRect.y;\n    \n    this.ctx.beginPath();\n    this.ctx.moveTo(this.x || x, this.y || y);\n    this.ctx.lineTo(x, y);\n    this.ctx.strokeStyle = this.$['APP/drawColor'];\n    this.ctx.lineWidth = this.$['APP/eraseMode'] ? 10 : 5;\n    this.ctx.globalCompositeOperation = this.$['APP/eraseMode'] ? 'destination-out' : 'source-over';\n    this.ctx.stroke();\n    \n    this.x = x;\n    this.y = y;\n  }\n\n  #initDrawing() {\n    this.canvas = this.ref.canvas;\n    this.ctx = this.canvas.getContext('2d');\n    this.canvas.width = this.rect.width;\n    this.canvas.height = this.rect.height;\n    let draw = this.#draw.bind(this);\n    this.canvas.addEventListener('mousedown', (e) => {\n      this.canvas.addEventListener('mousemove', draw);\n    });\n    this.canvas.addEventListener('mouseup', () => {\n      this.canvas.removeEventListener('mousemove', draw);\n      this.x = null;\n      this.y = null;\n    });\n    this.canvas.addEventListener('touchstart', (e) => {\n      e.preventDefault();\n      this.canvas.addEventListener('touchmove', draw);\n    });\n    this.canvas.addEventListener('touchend', (e) => {\n      e.preventDefault();\n      this.canvas.removeEventListener('touchmove', draw);\n      this.x = null;\n      this.y = null;\n    });\n    this.canvas.addEventListener('touchcancel', (e) => {\n      e.preventDefault();\n      this.canvas.removeEventListener('touchmove', draw);\n      this.x = null;\n      this.y = null;\n    });\n    this.canvas.addEventListener('mouseleave', (e) => {\n      this.canvas.removeEventListener('mousemove', draw);\n      this.x = null;\n      this.y = null;\n    });\n    this.canvas.addEventListener('contextmenu', (e) => {\n      this.canvas.removeEventListener('mousemove', draw);\n      this.x = null;\n      this.y = null;\n    });\n  }\n\n  clearDrawing() {\n    this.ctx.clearRect(0, 0, this.rect.width, this.rect.height);\n  }\n\n  renderCallback() {\n    this.sub('importJSDWA', (val) => {\n      if (!val) {\n        return;\n      }\n      if (!val.includes('//')) {\n        if (val.startsWith('/')) {\n          val = window.location.origin + val;\n        } else {\n          val = window.location.origin + '/' + val;\n        }\n      }\n      try {\n        import(val).then((module) => {\n          this.innerHTML += module.default;\n        });\n      } catch (e) {\n        console.error('Failed to import slide', val, e);\n      }\n    });\n\n    this.sub('importMd', async (val) => {\n      if (!val) {\n        return;\n      }\n      try {\n        let md = await (await fetch(val)).text();\n        this.innerHTML += await md2html(md);\n      } catch (e) {\n        console.error('Failed to import slide', val, e);\n      }\n    });\n\n    window.addEventListener('keydown', (e) => {\n      if (this.$['APP/currentSlide'] !== this) return;\n\n      if (e.key === 'ArrowRight' || e.key === 'ArrowDown') {\n        e.preventDefault();\n        this.nextSlide(); \n      }\n      if (e.key === 'ArrowLeft' || e.key === 'ArrowUp') {\n        e.preventDefault();\n        this.prevSlide();\n      }\n    });\n\n    window.addEventListener('resize', (e) => {\n      this.canvas.width = this.rect.width;\n      this.canvas.height = this.rect.height;\n    });\n\n    this.addEventListener('click', (e) => {\n      this.focus();\n    });\n\n    window.requestAnimationFrame(() => {\n      this.#initDrawing();\n    });\n\n    if (!this.hasAttribute('slide-number') && this.$.caption) {\n      window.requestIdleCallback(() => {\n        let idx = [...document.querySelectorAll('slide-it:not([slide-number])')].indexOf(this);\n        this.$.number = (idx + 1) + '. ';\n      });\n    }\n\n    intObserver.observe(this);\n  }\n\n  disconnectedCallback() {\n    super.disconnectedCallback();\n    intObserver.unobserve(this);\n  }\n\n}\n\nSlideIt.bindAttributes({\n  caption: 'caption',\n  'slide-number': 'number',\n  'import-jsdwa': 'importJSDWA',\n  'import-md': 'importMd',\n});\n\nSlideIt.template = template;\nSlideIt.rootStyles = styles;\n\nSlideIt.reg('slide-it');","import { html } from '@symbiotejs/symbiote';\n\nexport default html`\n<video part=\"video\" ref=\"video\"></video>\n`;","export default /*css*/ `\nvideo-spot {\n  display: inline-flex;\n  position: fixed;\n  bottom: calc(var(--gap-max) * 2);\n  right: calc(var(--gap-max) * 2);\n  width: 300px;\n  height: 300px;\n  color: var(--clr-2);\n  border-radius: 100%;\n  overflow: hidden;\n  border: 6px solid var(--slide-sub-clr, var(--clr-2));\n  transition: border-color 1s, opacity 1s;\n  pointer-events: none;\n\n  &::part(video) {\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    border-radius: 100%;\n    overflow: hidden;\n    filter: grayscale(90%);\n  }\n}\n`;","import Symbiote from '@symbiotejs/symbiote';\nimport template from './VideoSpot.html.js';\nimport styles from './VideoSpot.css.js';\n\nclass VideoSpot extends Symbiote {\n\n  renderShadow = true;\n\n  init() {\n    // realtime video from webcam\n    navigator.mediaDevices.getUserMedia(\n      {\n        audio: false,\n        video: {\n          width: 1920,\n          height: 1080,\n        },\n      }).then((stream) => {\n        this.ref.video.srcObject = stream;\n        this.ref.video.play();\n      });\n  }\n\n  renderCallback() {\n    this.init();\n\n    window.requestIdleCallback(() => {\n      this.sub('APP/hideVideoSpot', (val) => {\n        val ? (this.style.opacity = '0') : (this.style.opacity = '1');\n      });\n    });\n\n  }\n\n}\n\nVideoSpot.template = template;\nVideoSpot.rootStyles = styles;\n\nVideoSpot.reg('video-spot');\n","/** @enum {String} */\nexport default {\n  screen_record: 'screen_record',\n  stop: 'stop',\n  draw: 'draw',\n  ink_eraser: 'ink_eraser',\n  delete: 'delete',\n  clear: 'clear',\n  arrow_upward: 'arrow_upward',\n  arrow_downward: 'arrow_downward',\n  fullscreen: 'fullscreen',\n};","import names from './collection.js';\n\n/**\n * \n * @param {keyof typeof names} name \n * @returns \n */\nexport function i(name) {\n  return /*html*/ `<span icon class=\"material-symbols-outlined\">${name}</span>`;\n};","import names from './collection.js';\n\n// IMPORTANT: Icon names should be sorted alphabetically\nlet namesList = Object.keys(names).sort().join(',');\n\nexport default /*html*/ `\n<link \n  href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&icon_names=${namesList}\" \n  rel=\"stylesheet\"/>\n`;","import { html } from '@symbiotejs/symbiote';\nimport { i } from '../../icons/i.js';\nimport link from '../../icons/link.html.js';\n\nexport default html`\n${link}\n<label part=\"color-picker\">\n  <input ${{onchange: 'onColorChange'}} type=\"color\" part=\"color-picker-input\" value=\"#ffffff\">\n  <div part=\"color-picker-preview\"></div>\n</label>\n<button ${{onclick: 'onErase', innerHTML: 'eraseIcon'}} part=\"btn-erase\"></button>\n<button ${{onclick: 'onClear'}} part=\"btn-clear\">${i('clear')}</button>\n<button ${{onclick: 'onPrev', ondblclick: 'onTop'}} part=\"btn-prev\">${i('arrow_upward')}</button>\n<button ${{onclick: 'onNext', ondblclick: 'onBottom'}} part=\"btn-next\">${i('arrow_downward')}</button>\n<button ${{onclick: 'onFs'}} part=\"btn-fs\">${i('fullscreen')}</button>\n<button ${{onclick: 'onToggleRecorder', innerHTML: 'recIcon'}} part=\"btn-recorder\"></button>\n`;","let btn = /*css*/ `\ndisplay: inline-flex;\nalign-items: center;\njustify-content: center;\nwidth: 40px;\nheight: 40px;\nborder-radius: 100%;\nborder: none;\nmargin: 0;\ncursor: pointer;\nbackground-color: rgba(255, 255, 255, 0.1);\ncolor: var(--clr-2);\nbackdrop-filter: blur(10px);\ncursor: pointer;\noutline: none;\n`;\n\nexport default /*css*/ `\ncommon-toolbar {\n  display: inline-flex;\n  gap: 10px;\n  position: fixed;\n  bottom: calc(var(--gap-max) * 2);\n  left: calc(var(--gap-max) * 2);\n  z-index: 100000;\n\n  &::part(color-picker) {\n    ${btn}\n  }\n\n  &::part(color-picker-input) {\n    width: 100%;\n    height: 100%;\n    border: none;\n    opacity: 0;\n  }\n\n  &::part(color-picker-preview) {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    position: absolute;\n    width: 14px;\n    height: 14px;\n    border-radius: 100%;\n    background-color: var(--clr-draw-current, #ffffff);\n    pointer-events: none;\n  }\n\n  &::part(btn-prev) {\n    ${btn}\n  }\n\n  &::part(btn-next) {\n    ${btn}\n  }\n\n  &::part(btn-clear) {\n    ${btn}\n  }\n\n  &::part(btn-erase) {\n    ${btn}\n  }\n\n  &::part(btn-fs) {\n    ${btn}\n  }\n\n  &::part(btn-recorder) {\n    ${btn}\n  }\n}\n`;\n","import { PubSub } from '@symbiotejs/symbiote';\n\nexport class Recorder {\n\n  static recordedChunks = [];\n  /** @type {MediaRecorder | null} */\n  static mediaRecorder = null;\n  /** @type {MediaStream | null} */\n  static stream = null;\n\n  static async start() {\n    const videoStream = await navigator.mediaDevices.getDisplayMedia({\n      audio: false,\n      video: {\n        width: 1920,\n        height: 1080,\n      },\n      // @ts-ignore - Chromium-specific extension\n      selfBrowserSurface: 'include',\n    });\n\n    const audioStream = await navigator.mediaDevices.getUserMedia({\n      audio: true,\n    });\n\n    this.stream = new MediaStream([...videoStream.getTracks(), ...audioStream.getTracks()]);\n    let mimeType = 'video/webm';\n    if (MediaRecorder.isTypeSupported('video/mp4; codecs=hev1')) {\n      mimeType = 'video/mp4; codecs=hev1';\n    } else if (MediaRecorder.isTypeSupported('video/mp4; codecs=avc1.4D401F')) {\n      mimeType = 'video/mp4; codecs=avc1.4D401F';\n    } else if (MediaRecorder.isTypeSupported('video/mp4; codecs=h264')) {\n      mimeType = 'video/mp4; codecs=h264';\n    } else if (MediaRecorder.isTypeSupported('video/mp4; codecs=avc1')) {\n      mimeType = 'video/mp4; codecs=avc1';\n    } else if (MediaRecorder.isTypeSupported('video/mp4')) {\n      mimeType = 'video/mp4';\n    }\n    console.log('Using mimeType for recording:', mimeType);\n    this.mediaRecorder = new MediaRecorder(this.stream, {\n      videoBitsPerSecond: 2500000,\n      mimeType,\n    });\n    this.recordedChunks = [];\n\n    this.mediaRecorder.ondataavailable = (event) => {\n      if (event.data.size > 0) {\n        this.recordedChunks.push(event.data);\n      }\n    };\n\n    let recMimeType = this.mediaRecorder.mimeType;\n\n    this.mediaRecorder.onstop = () => {\n      const blob = new Blob(this.recordedChunks, {\n        type: recMimeType,\n      });\n      const url = URL.createObjectURL(blob);\n      const a = document.createElement('a');\n      a.href = url;\n      a.download = `slide-cast_${new Date().toISOString()}.` + (recMimeType.includes('mp4') ? 'mp4' : 'webm');\n      document.body.appendChild(a);\n      a.click();\n      document.body.removeChild(a);\n      URL.revokeObjectURL(url);\n      this.recordedChunks.length = 0;\n      this.mediaRecorder = null;\n      this.stream = null;\n      console.log('Recorder stopped');\n      PubSub.getCtx('APP').pub('recordMode', false);\n    };\n\n    this.mediaRecorder.start();\n    PubSub.getCtx('APP').pub('recordMode', true);\n  }\n\n  static stop() {\n    this.mediaRecorder?.stop();\n  }\n\n  static get active() {\n    return this.mediaRecorder && this.mediaRecorder.state === 'recording';\n  }\n\n}","export default /*css*/ `\n.material-symbols-outlined {\n  font-variation-settings:\n    'FILL' 0,\n    'wght' 400,\n    'GRAD' 0,\n    'opsz' 24;\n}\n\nspan[icon] {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  font-size: 1.5em;\n  width: 1.5em;\n  height: 1.5em;\n  line-height: 1.5em;\n  user-select: none;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n`;","import Symbiote from '@symbiotejs/symbiote';\nimport template from './CommonToolbar.html.js';\nimport styles from './CommonToolbar.css.js';\nimport { Recorder } from '../../lib/Recorder.js';\nimport { i } from '../../icons/i.js';\nimport iconsCss from '../../icons/icons.css.js';\n\nexport class CommonToolbar extends Symbiote {\n\n  init$ = {\n    recIcon: '',\n    eraseIcon: '',\n    onColorChange: (/** @type {Event & {target: HTMLInputElement}} */ e) => {\n      this.$['APP/drawColor'] = e.target.value;\n      this.style.setProperty('--clr-draw-current', e.target.value);\n    },\n    onPrev: () => {\n      this.$['APP/currentSlide']?.prevSlide();\n    },\n    onTop: () => {\n      let firstSlide = /** @type {HTMLElement} */ (document.querySelector('slide-it'));\n      firstSlide?.focus();\n    },\n    onNext: () => {\n      this.$['APP/currentSlide']?.nextSlide();\n    },\n    onBottom: () => {\n      let lastSlide = /** @type {HTMLElement} */ (document.querySelector('slide-it:last-of-type'));\n      lastSlide?.focus();\n    },\n    onErase: () => {\n      this.$['APP/eraseMode'] = !this.$['APP/eraseMode'];\n    },\n    onClear: () => {\n      this.$['APP/currentSlide']?.clearDrawing();\n    },\n    onFs: () => {\n      if (!document.fullscreenElement) {\n        document.documentElement.requestFullscreen();\n      } else {\n        if (document.exitFullscreen) {\n          document.exitFullscreen();\n        }\n      }\n    },\n    onToggleRecorder: () => {\n      if (Recorder.active) {\n        Recorder.stop();\n      } else {\n        Recorder.start();\n      }\n    }\n  }\n\n  renderCallback() {\n    this.sub('APP/eraseMode', (val) => {\n      this.$.eraseIcon = val ? i('ink_eraser') : i('draw');\n    });\n    this.sub('APP/recordMode', (val) => {\n      this.$.recIcon = val ? i('stop') : i('screen_record');\n    });\n  }\n\n}\n\nCommonToolbar.template = template;\nCommonToolbar.rootStyles = styles;\nCommonToolbar.shadowStyles = iconsCss;\n\nCommonToolbar.reg('common-toolbar');","import Symbiote from '@symbiotejs/symbiote';\nimport { md2html } from 'jsda-kit/iso/md2html.js';\n\nexport class GroupFrom extends Symbiote {\n  init$ = {\n    source: '',\n  }\n\n  renderCallback() {\n    this.sub('source', async (srcPath) => {\n      if (!srcPath) {\n        return;\n      }\n      let fragment = document.createDocumentFragment();\n\n      let sourceMd = await (await window.fetch(srcPath)).text();\n      let slides = sourceMd.split('---\\n').map((slideTxt) => {\n        return slideTxt.trim();\n      });\n      for (let slideContent of slides) {\n        let slide = document.createElement('slide-it');\n        if (slideContent.startsWith('## ')) {\n          let caption = slideContent.split('\\n')[0].replace('## ', '').trim();\n          slideContent = slideContent.replace('## ', '').replace(caption, '').trim();\n          slide.setAttribute('caption', caption);\n        }\n        slide.innerHTML = await md2html(slideContent);\n        fragment.appendChild(slide);\n      }\n      this.replaceWith(fragment);\n    });\n  }\n}\n\nGroupFrom.bindAttributes({\n  source: 'source',\n});\n\nGroupFrom.reg('group-from');\n\nexport default GroupFrom;","let hlSelectorsList = [\n  '.hljs-string',\n  '.hljs-comment',\n  '.hljs-attr',\n  '.hljs-attribute',\n  '.hljs-function',\n  '.hljs-variable',\n  '.hljs-title',\n  '.hljs-property',\n  '.hljs-selector-class',\n  '.hljs-keyword',\n  '.hljs-tag',\n  '.hljs-name',\n  '.hljs-number',\n  '.hljs-params',\n  '.hljs-literal',\n];\n\nlet hlStyles = '';\nlet step = 0;\nlet hsl = () => {\n  return `hsl(${step++ * 150}deg 85% 74%)`;\n};\n\nhlSelectorsList.forEach((selector) => {\n  hlStyles += /*css*/ `\n    code ${selector} {\n      color: ${hsl()};\n    }\n  `;\n});\n\nexport default /*css*/ `\n\ncode:not([class]) {\n  display: inline-block;\n  padding: .05em;\n  padding-left: .5em;\n  padding-right: .5em;\n  margin-left: .2em;\n}\n\ncode[class] {\n  display: block;\n  padding: var(--gap-max, 20px);\n  margin-top: 1em;\n  margin-bottom: 1em;\n  color: #fff;\n  overflow: auto;\n  border-left: 4px solid rgba(255, 255, 255, 1);\n  padding-left: 1em;\n}\ncode .hljs-comment {\n  opacity: .5;\n  font-style: italic;\n}\ncode .function_ {\n  font-style: italic;\n}\n${hlStyles}\n`;\n","import './components/SlideIt/SlideIt.js';\nimport './components/VideoSpot/VideoSpot.js';\nimport './components/CommonToolbar/CommonToolbar.js';\nimport './components/GroupFrom/GroupFrom.js';\nimport styles from './common-css/styles.css.js';\nimport hlCss from './common-css/hl.css.js';\nimport { PubSub } from '@symbiotejs/symbiote';\nimport iconsLink from './icons/link.html.js';\n\nlet styleSheet = new CSSStyleSheet();\nstyleSheet.replaceSync(styles + hlCss);\ndocument.adoptedStyleSheets = [...document.adoptedStyleSheets, styleSheet];\n\ndocument.head.insertAdjacentHTML('beforeend', iconsLink);\n\nPubSub.registerCtx({\n  hideVideoSpot: false,\n  currentSlide: null,\n  drawColor: '#fff',\n  eraseMode: false,\n  recordMode: false,\n}, 'APP');\n\nwindow.onload = async () => {\n  let customStyles = document.querySelector('style');\n  if (customStyles) {\n    let css = customStyles.textContent;\n    if (css) {\n      let customStyleSheet = new CSSStyleSheet();\n      customStyleSheet.replaceSync(css);\n      document.adoptedStyleSheets = [...document.adoptedStyleSheets, customStyleSheet];\n    }\n  }\n  window.requestIdleCallback(() => {\n    let slideIt = /** @type {HTMLElement} */ (document.querySelector('slide-it'));\n    if (slideIt) {\n      slideIt.focus();\n    }\n  });\n}\n"]}