From d26467d0dec7c2c20491df7cdd983f8a985313f8 Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Fri, 18 Feb 2022 21:58:15 +0100 Subject: [PATCH] build --- docs/_snowpack/pkg/react.js | 3 +- docs/dist/App.js | 142 +- docs/dist/useCycle.js | 5 +- docs/dist/usePostMessage.js | 9 + docs/dist/useRepl.js | 105 + docs/global.css | 378 + docs/tutorial/favicon.e3ab9dd9.ico | Bin 0 -> 15406 bytes docs/tutorial/index.1e09ac22.css | 1312 + docs/tutorial/index.1e09ac22.css.map | 1 + docs/tutorial/index.ea127b5f.js | 108741 ++++++++++++++++++++++++ docs/tutorial/index.ea127b5f.js.map | 1 + docs/tutorial/index.html | 16 + 12 files changed, 110588 insertions(+), 125 deletions(-) create mode 100644 docs/dist/usePostMessage.js create mode 100644 docs/dist/useRepl.js create mode 100644 docs/tutorial/favicon.e3ab9dd9.ico create mode 100644 docs/tutorial/index.1e09ac22.css create mode 100644 docs/tutorial/index.1e09ac22.css.map create mode 100644 docs/tutorial/index.ea127b5f.js create mode 100644 docs/tutorial/index.ea127b5f.js.map create mode 100644 docs/tutorial/index.html diff --git a/docs/_snowpack/pkg/react.js b/docs/_snowpack/pkg/react.js index 564097ea..017ce3a6 100644 --- a/docs/_snowpack/pkg/react.js +++ b/docs/_snowpack/pkg/react.js @@ -8,6 +8,7 @@ import './common/index-d01087d6.js'; var useCallback = react.useCallback; var useEffect = react.useEffect; var useLayoutEffect = react.useLayoutEffect; +var useMemo = react.useMemo; var useRef = react.useRef; var useState = react.useState; -export { useCallback, useEffect, useLayoutEffect, useRef, useState }; +export { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState }; diff --git a/docs/dist/App.js b/docs/dist/App.js index d47de94f..49899b55 100644 --- a/docs/dist/App.js +++ b/docs/dist/App.js @@ -1,14 +1,12 @@ -import React, {useCallback, useEffect, useLayoutEffect, useRef, useState} from "../_snowpack/pkg/react.js"; -import logo from "./logo.svg.proxy.js"; -import cx from "./cx.js"; +import React, {useCallback, useLayoutEffect, useRef} from "../_snowpack/pkg/react.js"; import * as Tone from "../_snowpack/pkg/tone.js"; -import useCycle from "./useCycle.js"; -import * as tunes from "./tunes.js"; -import {evaluate} from "./evaluate.js"; import CodeMirror from "./CodeMirror.js"; -import hot from "../hot.js"; -import {isNote} from "../_snowpack/pkg/tone.js"; +import cx from "./cx.js"; +import {evaluate} from "./evaluate.js"; +import logo from "./logo.svg.proxy.js"; import {useWebMidi} from "./midi.js"; +import * as tunes from "./tunes.js"; +import useRepl from "./useRepl.js"; const [_, codeParam] = window.location.href.split("#"); let decoded; try { @@ -16,11 +14,6 @@ try { } catch (err) { console.warn("failed to decode", err); } -const getHotCode = async () => { - return fetch("/hot.js").then((res) => res.text()).then((src) => { - return src.split("export default").slice(-1)[0].trim(); - }); -}; const defaultSynth = new Tone.PolySynth().chain(new Tone.Gain(0.5), Tone.Destination); defaultSynth.set({ oscillator: {type: "triangle"}, @@ -35,76 +28,14 @@ function getRandomTune() { } const randomTune = getRandomTune(); function App() { - const [code, setCode] = useState(decoded || randomTune); - const [activeCode, setActiveCode] = useState(); - const [log, setLog] = useState(""); - const logBox = useRef(); - const [error, setError] = useState(); - const [pattern, setPattern] = useState(); - const [activePattern, setActivePattern] = useState(); - const dirty = code !== activeCode; - const activateCode = (_code = code) => { - !cycle.started && cycle.start(); - if (activeCode && !dirty) { - setError(void 0); - return; - } - try { - const parsed = evaluate(_code); - setPattern(() => parsed.pattern); - activatePattern(parsed.pattern); - setError(void 0); - setActiveCode(_code); - } catch (err) { - setError(err); - } - }; - const activatePattern = (_pattern) => { - try { - setActivePattern(() => _pattern); - window.location.hash = "#" + encodeURIComponent(btoa(code)); - } catch (err) { - setError(err); - } - }; - const [isHot, setIsHot] = useState(false); - const pushLog = (message) => setLog((log2) => log2 + `${log2 ? "\n\n" : ""}${message}`); - const logCycle = (_events, cycle2) => { - if (_events.length) { - pushLog(`# cycle ${cycle2} -` + _events.map((e) => e.show()).join("\n")); - } - }; - const cycle = useCycle({ - onEvent: useCallback((time, event) => { - try { - if (!event.value?.onTrigger) { - const note = event.value?.value || event.value; - if (!isNote(note)) { - throw new Error("not a note: " + note); - } - defaultSynth.triggerAttackRelease(note, event.duration, time); - } else { - const {onTrigger} = event.value; - onTrigger(time, event); - } - } catch (err) { - console.warn(err); - err.message = "unplayable event: " + err?.message; - pushLog(err.message); - } - }, []), - onQuery: useCallback((span) => { - try { - return activePattern?.query(span) || []; - } catch (err) { - setError(err); - return []; - } - }, [activePattern]), - onSchedule: useCallback((_events, cycle2) => logCycle(_events, cycle2), [activePattern]), - ready: !!activePattern + const {setCode, setPattern, error, code, cycle, dirty, log, togglePlay, activateCode, pattern, pushLog} = useRepl({ + tune: decoded || randomTune, + defaultSynth }); + const logBox = useRef(); + useLayoutEffect(() => { + logBox.current.scrollTop = logBox.current?.scrollHeight; + }, [log]); useLayoutEffect(() => { const handleKeyPress = (e) => { if (e.ctrlKey || e.altKey) { @@ -121,22 +52,6 @@ function App() { document.addEventListener("keypress", handleKeyPress); return () => document.removeEventListener("keypress", handleKeyPress); }, [pattern, code]); - useEffect(() => { - if (isHot) { - if (typeof hot !== "string") { - getHotCode().then((_code) => { - }); - activatePattern(hot); - return; - } else { - setCode(hot); - activateCode(hot); - } - } - }, [code, isHot]); - useLayoutEffect(() => { - logBox.current.scrollTop = logBox.current?.scrollHeight; - }, [log]); useWebMidi({ ready: useCallback(({outputs}) => { pushLog(`WebMidi ready! Just add .midi(${outputs.map((o) => `"${o.name}"`).join(" | ")}) to the pattern. `); @@ -168,15 +83,11 @@ function App() { console.log("tune", _code); setCode(_code); const parsed = evaluate(_code); - setActivePattern(parsed.pattern); + setPattern(parsed.pattern); } - }, "🎲 random tune"), window.location.href.includes("http://localhost:8080") && /* @__PURE__ */ React.createElement("button", { - onClick: () => { - if (isHot || confirm("Really switch? You might loose your current pattern..")) { - setIsHot((h) => !h); - } - } - }, "🔥 toggle hot mode"))), /* @__PURE__ */ React.createElement("section", { + }, "🎲 random tune"), /* @__PURE__ */ React.createElement("button", null, /* @__PURE__ */ React.createElement("a", { + href: "./tutorial" + }, "📚 tutorial")))), /* @__PURE__ */ React.createElement("section", { className: "grow flex flex-col text-gray-100" }, /* @__PURE__ */ React.createElement("div", { className: "grow relative" @@ -184,32 +95,21 @@ function App() { className: cx("h-full bg-[#2A3236]", error ? "focus:ring-red-500" : "focus:ring-slate-800") }, /* @__PURE__ */ React.createElement(CodeMirror, { value: code, - readOnly: isHot, options: { mode: "javascript", theme: "material", lineNumbers: true }, - onChange: (_2, __, value) => { - if (!isHot) { - setCode(value); - } - } + onChange: (_2, __, value) => setCode(value) }), /* @__PURE__ */ React.createElement("span", { className: "p-4 absolute top-0 right-0 text-xs whitespace-pre text-right" }, !cycle.started ? `press ctrl+enter to play -` : !isHot && code !== activeCode ? `ctrl+enter to update -` : "no changes\n", isHot && "🔥 hot mode: go to hot.js to edit pattern, then save")), error && /* @__PURE__ */ React.createElement("div", { +` : dirty ? `ctrl+enter to update +` : "no changes\n")), error && /* @__PURE__ */ React.createElement("div", { className: cx("absolute right-2 bottom-2", "text-red-500") }, error?.message || "unknown error")), /* @__PURE__ */ React.createElement("button", { className: "flex-none w-full border border-gray-700 p-2 bg-slate-700 hover:bg-slate-500", - onClick: () => { - if (!cycle.started) { - activateCode(); - } else { - cycle.stop(); - } - } + onClick: () => togglePlay() }, cycle.started ? "pause" : "play"), /* @__PURE__ */ React.createElement("textarea", { className: "grow bg-[#283237] border-0 text-xs min-h-[200px]", value: log, diff --git a/docs/dist/useCycle.js b/docs/dist/useCycle.js index f7d4d71a..c45631f9 100644 --- a/docs/dist/useCycle.js +++ b/docs/dist/useCycle.js @@ -34,9 +34,8 @@ function useCycle(props) { }; useEffect(() => { ready && query(); - }, [onEvent, onSchedule, onQuery]); + }, [onEvent, onSchedule, onQuery, ready]); const start = async () => { - console.log("start"); setStarted(true); await Tone.start(); Tone.Transport.start("+0.1"); @@ -47,6 +46,6 @@ function useCycle(props) { Tone.Transport.pause(); }; const toggle = () => started ? stop() : start(); - return {start, stop, onEvent, started, toggle, query, activeCycle}; + return {start, stop, setStarted, onEvent, started, toggle, query, activeCycle}; } export default useCycle; diff --git a/docs/dist/usePostMessage.js b/docs/dist/usePostMessage.js new file mode 100644 index 00000000..05bc17ab --- /dev/null +++ b/docs/dist/usePostMessage.js @@ -0,0 +1,9 @@ +import {useEffect} from "../_snowpack/pkg/react.js"; +function usePostMessage(listener) { + useEffect(() => { + window.addEventListener("message", listener); + return () => window.removeEventListener("message", listener); + }, [listener]); + return (data) => window.postMessage(data, "*"); +} +export default usePostMessage; diff --git a/docs/dist/useRepl.js b/docs/dist/useRepl.js new file mode 100644 index 00000000..2838cc5e --- /dev/null +++ b/docs/dist/useRepl.js @@ -0,0 +1,105 @@ +import {useCallback, useState, useMemo} from "../_snowpack/pkg/react.js"; +import {isNote} from "../_snowpack/pkg/tone.js"; +import {evaluate} from "./evaluate.js"; +import useCycle from "./useCycle.js"; +import usePostMessage from "./usePostMessage.js"; +let s4 = () => { + return Math.floor((1 + Math.random()) * 65536).toString(16).substring(1); +}; +function useRepl({tune, defaultSynth, autolink = true}) { + const id = useMemo(() => s4(), []); + const [code, setCode] = useState(tune); + const [activeCode, setActiveCode] = useState(); + const [log, setLog] = useState(""); + const [error, setError] = useState(); + const [pattern, setPattern] = useState(); + const dirty = code !== activeCode; + const activateCode = (_code = code) => { + !cycle.started && cycle.start(); + broadcast({type: "start", from: id}); + if (activeCode && !dirty) { + setError(void 0); + return; + } + try { + const parsed = evaluate(_code); + setPattern(() => parsed.pattern); + if (autolink) { + window.location.hash = "#" + encodeURIComponent(btoa(code)); + } + setError(void 0); + setActiveCode(_code); + } catch (err) { + setError(err); + } + }; + const pushLog = (message) => setLog((log2) => log2 + `${log2 ? "\n\n" : ""}${message}`); + const logCycle = (_events, cycle2) => { + if (_events.length) { + pushLog(`# cycle ${cycle2} +` + _events.map((e) => e.show()).join("\n")); + } + }; + const cycle = useCycle({ + onEvent: useCallback((time, event) => { + try { + if (!event.value?.onTrigger) { + const note = event.value?.value || event.value; + if (!isNote(note)) { + throw new Error("not a note: " + note); + } + if (defaultSynth) { + defaultSynth.triggerAttackRelease(note, event.duration, time); + } else { + throw new Error("no defaultSynth passed to useRepl."); + } + } else { + const {onTrigger} = event.value; + onTrigger(time, event); + } + } catch (err) { + console.warn(err); + err.message = "unplayable event: " + err?.message; + pushLog(err.message); + } + }, []), + onQuery: useCallback((span) => { + try { + return pattern?.query(span) || []; + } catch (err) { + setError(err); + return []; + } + }, [pattern]), + onSchedule: useCallback((_events, cycle2) => logCycle(_events, cycle2), [pattern]), + ready: !!pattern + }); + const broadcast = usePostMessage(({data: {from, type}}) => { + if (type === "start" && from !== id) { + cycle.setStarted(false); + setActiveCode(void 0); + } + }); + const togglePlay = () => { + if (!cycle.started) { + activateCode(); + } else { + cycle.stop(); + } + }; + return { + code, + setCode, + pattern, + error, + cycle, + setPattern, + dirty, + log, + togglePlay, + activateCode, + activeCode, + pushLog + }; +} +export default useRepl; diff --git a/docs/global.css b/docs/global.css index fc6a8cb5..1c756783 100644 --- a/docs/global.css +++ b/docs/global.css @@ -590,6 +590,343 @@ select { --tw-backdrop-saturate: ; --tw-backdrop-sepia: ; } +.prose { + color: var(--tw-prose-body); + max-width: 65ch; +} +.prose :where([class~="lead"]):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-lead); + font-size: 1.25em; + line-height: 1.6; + margin-top: 1.2em; + margin-bottom: 1.2em; +} +.prose :where(a):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-links); + text-decoration: underline; + font-weight: 500; +} +.prose :where(strong):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-bold); + font-weight: 600; +} +.prose :where(ol):not(:where([class~="not-prose"] *)) { + list-style-type: decimal; + padding-left: 1.625em; +} +.prose :where(ol[type="A"]):not(:where([class~="not-prose"] *)) { + list-style-type: upper-alpha; +} +.prose :where(ol[type="a"]):not(:where([class~="not-prose"] *)) { + list-style-type: lower-alpha; +} +.prose :where(ol[type="A" s]):not(:where([class~="not-prose"] *)) { + list-style-type: upper-alpha; +} +.prose :where(ol[type="a" s]):not(:where([class~="not-prose"] *)) { + list-style-type: lower-alpha; +} +.prose :where(ol[type="I"]):not(:where([class~="not-prose"] *)) { + list-style-type: upper-roman; +} +.prose :where(ol[type="i"]):not(:where([class~="not-prose"] *)) { + list-style-type: lower-roman; +} +.prose :where(ol[type="I" s]):not(:where([class~="not-prose"] *)) { + list-style-type: upper-roman; +} +.prose :where(ol[type="i" s]):not(:where([class~="not-prose"] *)) { + list-style-type: lower-roman; +} +.prose :where(ol[type="1"]):not(:where([class~="not-prose"] *)) { + list-style-type: decimal; +} +.prose :where(ul):not(:where([class~="not-prose"] *)) { + list-style-type: disc; + padding-left: 1.625em; +} +.prose :where(ol > li):not(:where([class~="not-prose"] *))::marker { + font-weight: 400; + color: var(--tw-prose-counters); +} +.prose :where(ul > li):not(:where([class~="not-prose"] *))::marker { + color: var(--tw-prose-bullets); +} +.prose :where(hr):not(:where([class~="not-prose"] *)) { + border-color: var(--tw-prose-hr); + border-top-width: 1px; + margin-top: 3em; + margin-bottom: 3em; +} +.prose :where(blockquote):not(:where([class~="not-prose"] *)) { + font-weight: 500; + font-style: italic; + color: var(--tw-prose-quotes); + border-left-width: 0.25rem; + border-left-color: var(--tw-prose-quote-borders); + quotes: "\201C""\201D""\2018""\2019"; + margin-top: 1.6em; + margin-bottom: 1.6em; + padding-left: 1em; +} +.prose :where(blockquote p:first-of-type):not(:where([class~="not-prose"] *))::before { + content: open-quote; +} +.prose :where(blockquote p:last-of-type):not(:where([class~="not-prose"] *))::after { + content: close-quote; +} +.prose :where(h1):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 800; + font-size: 2.25em; + margin-top: 0; + margin-bottom: 0.8888889em; + line-height: 1.1111111; +} +.prose :where(h1 strong):not(:where([class~="not-prose"] *)) { + font-weight: 900; +} +.prose :where(h2):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 700; + font-size: 1.5em; + margin-top: 2em; + margin-bottom: 1em; + line-height: 1.3333333; +} +.prose :where(h2 strong):not(:where([class~="not-prose"] *)) { + font-weight: 800; +} +.prose :where(h3):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + font-size: 1.25em; + margin-top: 1.6em; + margin-bottom: 0.6em; + line-height: 1.6; +} +.prose :where(h3 strong):not(:where([class~="not-prose"] *)) { + font-weight: 700; +} +.prose :where(h4):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + margin-top: 1.5em; + margin-bottom: 0.5em; + line-height: 1.5; +} +.prose :where(h4 strong):not(:where([class~="not-prose"] *)) { + font-weight: 700; +} +.prose :where(figure > *):not(:where([class~="not-prose"] *)) { + margin-top: 0; + margin-bottom: 0; +} +.prose :where(figcaption):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-captions); + font-size: 0.875em; + line-height: 1.4285714; + margin-top: 0.8571429em; +} +.prose :where(code):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-code); + font-weight: 600; + font-size: 0.875em; +} +.prose :where(code):not(:where([class~="not-prose"] *))::before { + content: "`"; +} +.prose :where(code):not(:where([class~="not-prose"] *))::after { + content: "`"; +} +.prose :where(a code):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-links); +} +.prose :where(pre):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-pre-code); + background-color: var(--tw-prose-pre-bg); + overflow-x: auto; + font-weight: 400; + font-size: 0.875em; + line-height: 1.7142857; + margin-top: 1.7142857em; + margin-bottom: 1.7142857em; + border-radius: 0.375rem; + padding-top: 0.8571429em; + padding-right: 1.1428571em; + padding-bottom: 0.8571429em; + padding-left: 1.1428571em; +} +.prose :where(pre code):not(:where([class~="not-prose"] *)) { + background-color: transparent; + border-width: 0; + border-radius: 0; + padding: 0; + font-weight: inherit; + color: inherit; + font-size: inherit; + font-family: inherit; + line-height: inherit; +} +.prose :where(pre code):not(:where([class~="not-prose"] *))::before { + content: none; +} +.prose :where(pre code):not(:where([class~="not-prose"] *))::after { + content: none; +} +.prose :where(table):not(:where([class~="not-prose"] *)) { + width: 100%; + table-layout: auto; + text-align: left; + margin-top: 2em; + margin-bottom: 2em; + font-size: 0.875em; + line-height: 1.7142857; +} +.prose :where(thead):not(:where([class~="not-prose"] *)) { + border-bottom-width: 1px; + border-bottom-color: var(--tw-prose-th-borders); +} +.prose :where(thead th):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + vertical-align: bottom; + padding-right: 0.5714286em; + padding-bottom: 0.5714286em; + padding-left: 0.5714286em; +} +.prose :where(tbody tr):not(:where([class~="not-prose"] *)) { + border-bottom-width: 1px; + border-bottom-color: var(--tw-prose-td-borders); +} +.prose :where(tbody tr:last-child):not(:where([class~="not-prose"] *)) { + border-bottom-width: 0; +} +.prose :where(tbody td):not(:where([class~="not-prose"] *)) { + vertical-align: baseline; + padding-top: 0.5714286em; + padding-right: 0.5714286em; + padding-bottom: 0.5714286em; + padding-left: 0.5714286em; +} +.prose { + --tw-prose-body: #374151; + --tw-prose-headings: #111827; + --tw-prose-lead: #4b5563; + --tw-prose-links: #111827; + --tw-prose-bold: #111827; + --tw-prose-counters: #6b7280; + --tw-prose-bullets: #d1d5db; + --tw-prose-hr: #e5e7eb; + --tw-prose-quotes: #111827; + --tw-prose-quote-borders: #e5e7eb; + --tw-prose-captions: #6b7280; + --tw-prose-code: #111827; + --tw-prose-pre-code: #e5e7eb; + --tw-prose-pre-bg: #1f2937; + --tw-prose-th-borders: #d1d5db; + --tw-prose-td-borders: #e5e7eb; + --tw-prose-invert-body: #d1d5db; + --tw-prose-invert-headings: #fff; + --tw-prose-invert-lead: #9ca3af; + --tw-prose-invert-links: #fff; + --tw-prose-invert-bold: #fff; + --tw-prose-invert-counters: #9ca3af; + --tw-prose-invert-bullets: #4b5563; + --tw-prose-invert-hr: #374151; + --tw-prose-invert-quotes: #f3f4f6; + --tw-prose-invert-quote-borders: #374151; + --tw-prose-invert-captions: #9ca3af; + --tw-prose-invert-code: #fff; + --tw-prose-invert-pre-code: #d1d5db; + --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%); + --tw-prose-invert-th-borders: #4b5563; + --tw-prose-invert-td-borders: #374151; + font-size: 1rem; + line-height: 1.75; +} +.prose :where(p):not(:where([class~="not-prose"] *)) { + margin-top: 1.25em; + margin-bottom: 1.25em; +} +.prose :where(img):not(:where([class~="not-prose"] *)) { + margin-top: 2em; + margin-bottom: 2em; +} +.prose :where(video):not(:where([class~="not-prose"] *)) { + margin-top: 2em; + margin-bottom: 2em; +} +.prose :where(figure):not(:where([class~="not-prose"] *)) { + margin-top: 2em; + margin-bottom: 2em; +} +.prose :where(h2 code):not(:where([class~="not-prose"] *)) { + font-size: 0.875em; +} +.prose :where(h3 code):not(:where([class~="not-prose"] *)) { + font-size: 0.9em; +} +.prose :where(li):not(:where([class~="not-prose"] *)) { + margin-top: 0.5em; + margin-bottom: 0.5em; +} +.prose :where(ol > li):not(:where([class~="not-prose"] *)) { + padding-left: 0.375em; +} +.prose :where(ul > li):not(:where([class~="not-prose"] *)) { + padding-left: 0.375em; +} +.prose > :where(ul > li p):not(:where([class~="not-prose"] *)) { + margin-top: 0.75em; + margin-bottom: 0.75em; +} +.prose > :where(ul > li > *:first-child):not(:where([class~="not-prose"] *)) { + margin-top: 1.25em; +} +.prose > :where(ul > li > *:last-child):not(:where([class~="not-prose"] *)) { + margin-bottom: 1.25em; +} +.prose > :where(ol > li > *:first-child):not(:where([class~="not-prose"] *)) { + margin-top: 1.25em; +} +.prose > :where(ol > li > *:last-child):not(:where([class~="not-prose"] *)) { + margin-bottom: 1.25em; +} +.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"] *)) { + margin-top: 0.75em; + margin-bottom: 0.75em; +} +.prose :where(hr + *):not(:where([class~="not-prose"] *)) { + margin-top: 0; +} +.prose :where(h2 + *):not(:where([class~="not-prose"] *)) { + margin-top: 0; +} +.prose :where(h3 + *):not(:where([class~="not-prose"] *)) { + margin-top: 0; +} +.prose :where(h4 + *):not(:where([class~="not-prose"] *)) { + margin-top: 0; +} +.prose :where(thead th:first-child):not(:where([class~="not-prose"] *)) { + padding-left: 0; +} +.prose :where(thead th:last-child):not(:where([class~="not-prose"] *)) { + padding-right: 0; +} +.prose :where(tbody td:first-child):not(:where([class~="not-prose"] *)) { + padding-left: 0; +} +.prose :where(tbody td:last-child):not(:where([class~="not-prose"] *)) { + padding-right: 0; +} +.prose > :where(:first-child):not(:where([class~="not-prose"] *)) { + margin-top: 0; +} +.prose > :where(:last-child):not(:where([class~="not-prose"] *)) { + margin-bottom: 0; +} .static { position: static; } @@ -621,6 +958,9 @@ select { .flex { display: flex; } +.contents { + display: contents; +} .h-16 { height: 4rem; } @@ -639,6 +979,9 @@ select { .w-16 { width: 4rem; } +.max-w-3xl { + max-width: 48rem; +} .flex-none { flex: none; } @@ -648,12 +991,18 @@ select { .transform { transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); } +.cursor-not-allowed { + cursor: not-allowed; +} .flex-col { flex-direction: column; } .items-center { align-items: center; } +.justify-center { + justify-content: center; +} .justify-between { justify-content: space-between; } @@ -667,6 +1016,14 @@ select { margin-right: calc(1rem * var(--tw-space-x-reverse)); margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); } +.space-y-0 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0px * var(--tw-space-y-reverse)); +} +.overflow-auto { + overflow: auto; +} .whitespace-pre { white-space: pre; } @@ -687,6 +1044,10 @@ select { --tw-border-opacity: 1; border-color: rgb(55 65 81 / var(--tw-border-opacity)); } +.border-slate-500 { + --tw-border-opacity: 1; + border-color: rgb(100 116 139 / var(--tw-border-opacity)); +} .bg-\[\#2A3236\] { --tw-bg-opacity: 1; background-color: rgb(42 50 54 / var(--tw-bg-opacity)); @@ -703,6 +1064,10 @@ select { --tw-bg-opacity: 1; background-color: rgb(40 50 55 / var(--tw-bg-opacity)); } +.bg-slate-600 { + --tw-bg-opacity: 1; + background-color: rgb(71 85 105 / var(--tw-bg-opacity)); +} .p-4 { padding: 1rem; } @@ -732,6 +1097,14 @@ select { --tw-text-opacity: 1; color: rgb(239 68 68 / var(--tw-text-opacity)); } +.text-white { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} +.text-slate-400 { + --tw-text-opacity: 1; + color: rgb(148 163 184 / var(--tw-text-opacity)); +} .filter { filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); } @@ -746,6 +1119,11 @@ select { background-color: rgb(100 116 139 / var(--tw-bg-opacity)); } +.hover\:bg-slate-600:hover { + --tw-bg-opacity: 1; + background-color: rgb(71 85 105 / var(--tw-bg-opacity)); +} + .focus\:ring-red-500:focus { --tw-ring-opacity: 1; --tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity)); diff --git a/docs/tutorial/favicon.e3ab9dd9.ico b/docs/tutorial/favicon.e3ab9dd9.ico new file mode 100644 index 0000000000000000000000000000000000000000..7a9d261f0a7eba14b24c160e49181dfd1229e129 GIT binary patch literal 15406 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 CYwX_u literal 0 HcmV?d00001 diff --git a/docs/tutorial/index.1e09ac22.css b/docs/tutorial/index.1e09ac22.css new file mode 100644 index 00000000..f13c9b00 --- /dev/null +++ b/docs/tutorial/index.1e09ac22.css @@ -0,0 +1,1312 @@ +/* +! tailwindcss v3.0.18 | MIT License | https://tailwindcss.com +*//* +1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) +2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) +*/*, +::before, +::after { + box-sizing: border-box; /* 1 */ + border-width: 0; /* 2 */ + border-style: solid; /* 2 */ + border-color: #e5e7eb; /* 2 */ +}::before, +::after { + --tw-content: ''; +}/* +1. Use a consistent sensible line-height in all browsers. +2. Prevent adjustments of font size after orientation changes in iOS. +3. Use a more readable tab size. +4. Use the user's configured `sans` font-family by default. +*/html { + line-height: 1.5; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + -moz-tab-size: 4; /* 3 */ + -o-tab-size: 4; + tab-size: 4; /* 3 */ + font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; /* 4 */ +}/* +1. Remove the margin in all browsers. +2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. +*/body { + margin: 0; /* 1 */ + line-height: inherit; /* 2 */ +}/* +1. Add the correct height in Firefox. +2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) +3. Ensure horizontal rules are visible by default. +*/hr { + height: 0; /* 1 */ + color: inherit; /* 2 */ + border-top-width: 1px; /* 3 */ +}/* +Add the correct text decoration in Chrome, Edge, and Safari. +*/abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +}/* +Remove the default font size and weight for headings. +*/h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +}/* +Reset links to optimize for opt-in styling instead of opt-out. +*/a { + color: inherit; + text-decoration: inherit; +}/* +Add the correct font weight in Edge and Safari. +*/b, +strong { + font-weight: bolder; +}/* +1. Use the user's configured `mono` font family by default. +2. Correct the odd `em` font sizing in all browsers. +*/code, +kbd, +samp, +pre { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; /* 1 */ + font-size: 1em; /* 2 */ +}/* +Add the correct font size in all browsers. +*/small { + font-size: 80%; +}/* +Prevent `sub` and `sup` elements from affecting the line height in all browsers. +*/sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +}sub { + bottom: -0.25em; +}sup { + top: -0.5em; +}/* +1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) +2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) +3. Remove gaps between table borders by default. +*/table { + text-indent: 0; /* 1 */ + border-color: inherit; /* 2 */ + border-collapse: collapse; /* 3 */ +}/* +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +3. Remove default padding in all browsers. +*/button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: inherit; /* 1 */ + color: inherit; /* 1 */ + margin: 0; /* 2 */ + padding: 0; /* 3 */ +}/* +Remove the inheritance of text transform in Edge and Firefox. +*/button, +select { + text-transform: none; +}/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Remove default button styles. +*/button, +[type='button'], +[type='reset'], +[type='submit'] { + -webkit-appearance: button; /* 1 */ + background-color: transparent; /* 2 */ + background-image: none; /* 2 */ +}/* +Use the modern Firefox focus style for all focusable elements. +*/:-moz-focusring { + outline: auto; +}/* +Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/:-moz-ui-invalid { + box-shadow: none; +}/* +Add the correct vertical alignment in Chrome and Firefox. +*/progress { + vertical-align: baseline; +}/* +Correct the cursor style of increment and decrement buttons in Safari. +*/::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +}/* +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/[type='search'] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +}/* +Remove the inner padding in Chrome and Safari on macOS. +*/::-webkit-search-decoration { + -webkit-appearance: none; +}/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to `inherit` in Safari. +*/::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +}/* +Add the correct display in Chrome and Safari. +*/summary { + display: list-item; +}/* +Removes the default spacing and border for appropriate elements. +*/blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +figure, +p, +pre { + margin: 0; +}fieldset { + margin: 0; + padding: 0; +}legend { + padding: 0; +}ol, +ul, +menu { + list-style: none; + margin: 0; + padding: 0; +}/* +Prevent resizing textareas horizontally by default. +*/textarea { + resize: vertical; +}/* +1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) +2. Set the default placeholder color to the user's configured gray 400 color. +*/input::-moz-placeholder, textarea::-moz-placeholder { + opacity: 1; /* 1 */ + color: #9ca3af; /* 2 */ +}input:-ms-input-placeholder, textarea:-ms-input-placeholder { + opacity: 1; /* 1 */ + color: #9ca3af; /* 2 */ +}input::placeholder, +textarea::placeholder { + opacity: 1; /* 1 */ + color: #9ca3af; /* 2 */ +}/* +Set the default cursor for buttons. +*/button, +[role="button"] { + cursor: pointer; +}/* +Make sure disabled buttons don't get the pointer cursor. +*/:disabled { + cursor: default; +}/* +1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) +2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; /* 1 */ + vertical-align: middle; /* 2 */ +}/* +Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/img, +video { + max-width: 100%; + height: auto; +}/* +Ensure the default browser behavior of the `hidden` attribute. +*/[hidden] { + display: none; +}[type='text'],[type='email'],[type='url'],[type='password'],[type='number'],[type='date'],[type='datetime-local'],[type='month'],[type='search'],[type='tel'],[type='time'],[type='week'],[multiple],textarea,select { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + background-color: #fff; + border-color: #6b7280; + border-width: 1px; + border-radius: 0px; + padding-top: 0.5rem; + padding-right: 0.75rem; + padding-bottom: 0.5rem; + padding-left: 0.75rem; + font-size: 1rem; + line-height: 1.5rem; + --tw-shadow: 0 0 #0000; +}[type='text']:focus, [type='email']:focus, [type='url']:focus, [type='password']:focus, [type='number']:focus, [type='date']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='week']:focus, [multiple]:focus, textarea:focus, select:focus { + outline: 2px solid transparent; + outline-offset: 2px; + --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: #2563eb; + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + border-color: #2563eb; +}input::-moz-placeholder, textarea::-moz-placeholder { + color: #6b7280; + opacity: 1; +}input:-ms-input-placeholder, textarea:-ms-input-placeholder { + color: #6b7280; + opacity: 1; +}input::placeholder,textarea::placeholder { + color: #6b7280; + opacity: 1; +}::-webkit-datetime-edit-fields-wrapper { + padding: 0; +}::-webkit-date-and-time-value { + min-height: 1.5em; +}select { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e"); + background-position: right 0.5rem center; + background-repeat: no-repeat; + background-size: 1.5em 1.5em; + padding-right: 2.5rem; + -webkit-print-color-adjust: exact; + color-adjust: exact; +}[multiple] { + background-image: initial; + background-position: initial; + background-repeat: unset; + background-size: initial; + padding-right: 0.75rem; + -webkit-print-color-adjust: unset; + color-adjust: unset; +}[type='checkbox'],[type='radio'] { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + padding: 0; + -webkit-print-color-adjust: exact; + color-adjust: exact; + display: inline-block; + vertical-align: middle; + background-origin: border-box; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + flex-shrink: 0; + height: 1rem; + width: 1rem; + color: #2563eb; + background-color: #fff; + border-color: #6b7280; + border-width: 1px; + --tw-shadow: 0 0 #0000; +}[type='checkbox'] { + border-radius: 0px; +}[type='radio'] { + border-radius: 100%; +}[type='checkbox']:focus,[type='radio']:focus { + outline: 2px solid transparent; + outline-offset: 2px; + --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); + --tw-ring-offset-width: 2px; + --tw-ring-offset-color: #fff; + --tw-ring-color: #2563eb; + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); +}[type='checkbox']:checked,[type='radio']:checked { + border-color: transparent; + background-color: currentColor; + background-size: 100% 100%; + background-position: center; + background-repeat: no-repeat; +}[type='checkbox']:checked { + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e"); +}[type='radio']:checked { + background-image: url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e"); +}[type='checkbox']:checked:hover,[type='checkbox']:checked:focus,[type='radio']:checked:hover,[type='radio']:checked:focus { + border-color: transparent; + background-color: currentColor; +}[type='checkbox']:indeterminate { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e"); + border-color: transparent; + background-color: currentColor; + background-size: 100% 100%; + background-position: center; + background-repeat: no-repeat; +}[type='checkbox']:indeterminate:hover,[type='checkbox']:indeterminate:focus { + border-color: transparent; + background-color: currentColor; +}[type='file'] { + background: unset; + border-color: inherit; + border-width: 0; + border-radius: 0; + padding: 0; + font-size: unset; + line-height: inherit; +}[type='file']:focus { + outline: 1px auto -webkit-focus-ring-color; +}*, ::before, ::after { + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; +}.prose { + color: var(--tw-prose-body); + max-width: 65ch; +}.prose :where([class~="lead"]):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-lead); + font-size: 1.25em; + line-height: 1.6; + margin-top: 1.2em; + margin-bottom: 1.2em; +}.prose :where(a):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-links); + text-decoration: underline; + font-weight: 500; +}.prose :where(strong):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-bold); + font-weight: 600; +}.prose :where(ol):not(:where([class~="not-prose"] *)) { + list-style-type: decimal; + padding-left: 1.625em; +}.prose :where(ol[type="A"]):not(:where([class~="not-prose"] *)) { + list-style-type: upper-alpha; +}.prose :where(ol[type="a"]):not(:where([class~="not-prose"] *)) { + list-style-type: lower-alpha; +}.prose :where(ol[type="A" s]):not(:where([class~="not-prose"] *)) { + list-style-type: upper-alpha; +}.prose :where(ol[type="a" s]):not(:where([class~="not-prose"] *)) { + list-style-type: lower-alpha; +}.prose :where(ol[type="I"]):not(:where([class~="not-prose"] *)) { + list-style-type: upper-roman; +}.prose :where(ol[type="i"]):not(:where([class~="not-prose"] *)) { + list-style-type: lower-roman; +}.prose :where(ol[type="I" s]):not(:where([class~="not-prose"] *)) { + list-style-type: upper-roman; +}.prose :where(ol[type="i" s]):not(:where([class~="not-prose"] *)) { + list-style-type: lower-roman; +}.prose :where(ol[type="1"]):not(:where([class~="not-prose"] *)) { + list-style-type: decimal; +}.prose :where(ul):not(:where([class~="not-prose"] *)) { + list-style-type: disc; + padding-left: 1.625em; +}.prose :where(ol > li):not(:where([class~="not-prose"] *))::marker { + font-weight: 400; + color: var(--tw-prose-counters); +}.prose :where(ul > li):not(:where([class~="not-prose"] *))::marker { + color: var(--tw-prose-bullets); +}.prose :where(hr):not(:where([class~="not-prose"] *)) { + border-color: var(--tw-prose-hr); + border-top-width: 1px; + margin-top: 3em; + margin-bottom: 3em; +}.prose :where(blockquote):not(:where([class~="not-prose"] *)) { + font-weight: 500; + font-style: italic; + color: var(--tw-prose-quotes); + border-left-width: 0.25rem; + border-left-color: var(--tw-prose-quote-borders); + quotes: "\201C""\201D""\2018""\2019"; + margin-top: 1.6em; + margin-bottom: 1.6em; + padding-left: 1em; +}.prose :where(blockquote p:first-of-type):not(:where([class~="not-prose"] *))::before { + content: open-quote; +}.prose :where(blockquote p:last-of-type):not(:where([class~="not-prose"] *))::after { + content: close-quote; +}.prose :where(h1):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 800; + font-size: 2.25em; + margin-top: 0; + margin-bottom: 0.8888889em; + line-height: 1.1111111; +}.prose :where(h1 strong):not(:where([class~="not-prose"] *)) { + font-weight: 900; +}.prose :where(h2):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 700; + font-size: 1.5em; + margin-top: 2em; + margin-bottom: 1em; + line-height: 1.3333333; +}.prose :where(h2 strong):not(:where([class~="not-prose"] *)) { + font-weight: 800; +}.prose :where(h3):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + font-size: 1.25em; + margin-top: 1.6em; + margin-bottom: 0.6em; + line-height: 1.6; +}.prose :where(h3 strong):not(:where([class~="not-prose"] *)) { + font-weight: 700; +}.prose :where(h4):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + margin-top: 1.5em; + margin-bottom: 0.5em; + line-height: 1.5; +}.prose :where(h4 strong):not(:where([class~="not-prose"] *)) { + font-weight: 700; +}.prose :where(figure > *):not(:where([class~="not-prose"] *)) { + margin-top: 0; + margin-bottom: 0; +}.prose :where(figcaption):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-captions); + font-size: 0.875em; + line-height: 1.4285714; + margin-top: 0.8571429em; +}.prose :where(code):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-code); + font-weight: 600; + font-size: 0.875em; +}.prose :where(code):not(:where([class~="not-prose"] *))::before { + content: "`"; +}.prose :where(code):not(:where([class~="not-prose"] *))::after { + content: "`"; +}.prose :where(a code):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-links); +}.prose :where(pre):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-pre-code); + background-color: var(--tw-prose-pre-bg); + overflow-x: auto; + font-weight: 400; + font-size: 0.875em; + line-height: 1.7142857; + margin-top: 1.7142857em; + margin-bottom: 1.7142857em; + border-radius: 0.375rem; + padding-top: 0.8571429em; + padding-right: 1.1428571em; + padding-bottom: 0.8571429em; + padding-left: 1.1428571em; +}.prose :where(pre code):not(:where([class~="not-prose"] *)) { + background-color: transparent; + border-width: 0; + border-radius: 0; + padding: 0; + font-weight: inherit; + color: inherit; + font-size: inherit; + font-family: inherit; + line-height: inherit; +}.prose :where(pre code):not(:where([class~="not-prose"] *))::before { + content: none; +}.prose :where(pre code):not(:where([class~="not-prose"] *))::after { + content: none; +}.prose :where(table):not(:where([class~="not-prose"] *)) { + width: 100%; + table-layout: auto; + text-align: left; + margin-top: 2em; + margin-bottom: 2em; + font-size: 0.875em; + line-height: 1.7142857; +}.prose :where(thead):not(:where([class~="not-prose"] *)) { + border-bottom-width: 1px; + border-bottom-color: var(--tw-prose-th-borders); +}.prose :where(thead th):not(:where([class~="not-prose"] *)) { + color: var(--tw-prose-headings); + font-weight: 600; + vertical-align: bottom; + padding-right: 0.5714286em; + padding-bottom: 0.5714286em; + padding-left: 0.5714286em; +}.prose :where(tbody tr):not(:where([class~="not-prose"] *)) { + border-bottom-width: 1px; + border-bottom-color: var(--tw-prose-td-borders); +}.prose :where(tbody tr:last-child):not(:where([class~="not-prose"] *)) { + border-bottom-width: 0; +}.prose :where(tbody td):not(:where([class~="not-prose"] *)) { + vertical-align: baseline; + padding-top: 0.5714286em; + padding-right: 0.5714286em; + padding-bottom: 0.5714286em; + padding-left: 0.5714286em; +}.prose { + --tw-prose-body: #374151; + --tw-prose-headings: #111827; + --tw-prose-lead: #4b5563; + --tw-prose-links: #111827; + --tw-prose-bold: #111827; + --tw-prose-counters: #6b7280; + --tw-prose-bullets: #d1d5db; + --tw-prose-hr: #e5e7eb; + --tw-prose-quotes: #111827; + --tw-prose-quote-borders: #e5e7eb; + --tw-prose-captions: #6b7280; + --tw-prose-code: #111827; + --tw-prose-pre-code: #e5e7eb; + --tw-prose-pre-bg: #1f2937; + --tw-prose-th-borders: #d1d5db; + --tw-prose-td-borders: #e5e7eb; + --tw-prose-invert-body: #d1d5db; + --tw-prose-invert-headings: #fff; + --tw-prose-invert-lead: #9ca3af; + --tw-prose-invert-links: #fff; + --tw-prose-invert-bold: #fff; + --tw-prose-invert-counters: #9ca3af; + --tw-prose-invert-bullets: #4b5563; + --tw-prose-invert-hr: #374151; + --tw-prose-invert-quotes: #f3f4f6; + --tw-prose-invert-quote-borders: #374151; + --tw-prose-invert-captions: #9ca3af; + --tw-prose-invert-code: #fff; + --tw-prose-invert-pre-code: #d1d5db; + --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%); + --tw-prose-invert-th-borders: #4b5563; + --tw-prose-invert-td-borders: #374151; + font-size: 1rem; + line-height: 1.75; +}.prose :where(p):not(:where([class~="not-prose"] *)) { + margin-top: 1.25em; + margin-bottom: 1.25em; +}.prose :where(img):not(:where([class~="not-prose"] *)) { + margin-top: 2em; + margin-bottom: 2em; +}.prose :where(video):not(:where([class~="not-prose"] *)) { + margin-top: 2em; + margin-bottom: 2em; +}.prose :where(figure):not(:where([class~="not-prose"] *)) { + margin-top: 2em; + margin-bottom: 2em; +}.prose :where(h2 code):not(:where([class~="not-prose"] *)) { + font-size: 0.875em; +}.prose :where(h3 code):not(:where([class~="not-prose"] *)) { + font-size: 0.9em; +}.prose :where(li):not(:where([class~="not-prose"] *)) { + margin-top: 0.5em; + margin-bottom: 0.5em; +}.prose :where(ol > li):not(:where([class~="not-prose"] *)) { + padding-left: 0.375em; +}.prose :where(ul > li):not(:where([class~="not-prose"] *)) { + padding-left: 0.375em; +}.prose > :where(ul > li p):not(:where([class~="not-prose"] *)) { + margin-top: 0.75em; + margin-bottom: 0.75em; +}.prose > :where(ul > li > *:first-child):not(:where([class~="not-prose"] *)) { + margin-top: 1.25em; +}.prose > :where(ul > li > *:last-child):not(:where([class~="not-prose"] *)) { + margin-bottom: 1.25em; +}.prose > :where(ol > li > *:first-child):not(:where([class~="not-prose"] *)) { + margin-top: 1.25em; +}.prose > :where(ol > li > *:last-child):not(:where([class~="not-prose"] *)) { + margin-bottom: 1.25em; +}.prose :where(ul ul, ul ol, ol ul, ol ol):not(:where([class~="not-prose"] *)) { + margin-top: 0.75em; + margin-bottom: 0.75em; +}.prose :where(hr + *):not(:where([class~="not-prose"] *)) { + margin-top: 0; +}.prose :where(h2 + *):not(:where([class~="not-prose"] *)) { + margin-top: 0; +}.prose :where(h3 + *):not(:where([class~="not-prose"] *)) { + margin-top: 0; +}.prose :where(h4 + *):not(:where([class~="not-prose"] *)) { + margin-top: 0; +}.prose :where(thead th:first-child):not(:where([class~="not-prose"] *)) { + padding-left: 0; +}.prose :where(thead th:last-child):not(:where([class~="not-prose"] *)) { + padding-right: 0; +}.prose :where(tbody td:first-child):not(:where([class~="not-prose"] *)) { + padding-left: 0; +}.prose :where(tbody td:last-child):not(:where([class~="not-prose"] *)) { + padding-right: 0; +}.prose > :where(:first-child):not(:where([class~="not-prose"] *)) { + margin-top: 0; +}.prose > :where(:last-child):not(:where([class~="not-prose"] *)) { + margin-bottom: 0; +}.static { + position: static; +}.absolute { + position: absolute; +}.relative { + position: relative; +}.sticky { + position: -webkit-sticky; + position: sticky; +}.top-0 { + top: 0px; +}.right-0 { + right: 0px; +}.right-2 { + right: 0.5rem; +}.bottom-2 { + bottom: 0.5rem; +}.block { + display: block; +}.flex { + display: flex; +}.contents { + display: contents; +}.h-16 { + height: 4rem; +}.h-full { + height: 100%; +}.min-h-screen { + min-height: 100vh; +}.min-h-\[200px\] { + min-height: 200px; +}.w-full { + width: 100%; +}.w-16 { + width: 4rem; +}.max-w-3xl { + max-width: 48rem; +}.flex-none { + flex: none; +}.grow { + flex-grow: 1; +}.transform { + transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); +}.cursor-not-allowed { + cursor: not-allowed; +}.flex-col { + flex-direction: column; +}.items-center { + align-items: center; +}.justify-center { + justify-content: center; +}.justify-between { + justify-content: space-between; +}.space-x-2 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(0.5rem * var(--tw-space-x-reverse)); + margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse))); +}.space-x-4 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(1rem * var(--tw-space-x-reverse)); + margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); +}.space-y-0 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0px * var(--tw-space-y-reverse)); +}.overflow-auto { + overflow: auto; +}.whitespace-pre { + white-space: pre; +}.border { + border-width: 1px; +}.border-0 { + border-width: 0px; +}.border-b { + border-bottom-width: 1px; +}.border-gray-200 { + --tw-border-opacity: 1; + border-color: rgb(229 231 235 / var(--tw-border-opacity)); +}.border-gray-700 { + --tw-border-opacity: 1; + border-color: rgb(55 65 81 / var(--tw-border-opacity)); +}.border-slate-500 { + --tw-border-opacity: 1; + border-color: rgb(100 116 139 / var(--tw-border-opacity)); +}.bg-\[\#2A3236\] { + --tw-bg-opacity: 1; + background-color: rgb(42 50 54 / var(--tw-bg-opacity)); +}.bg-white { + --tw-bg-opacity: 1; + background-color: rgb(255 255 255 / var(--tw-bg-opacity)); +}.bg-slate-700 { + --tw-bg-opacity: 1; + background-color: rgb(51 65 85 / var(--tw-bg-opacity)); +}.bg-\[\#283237\] { + --tw-bg-opacity: 1; + background-color: rgb(40 50 55 / var(--tw-bg-opacity)); +}.bg-slate-600 { + --tw-bg-opacity: 1; + background-color: rgb(71 85 105 / var(--tw-bg-opacity)); +}.p-4 { + padding: 1rem; +}.p-2 { + padding: 0.5rem; +}.px-2 { + padding-left: 0.5rem; + padding-right: 0.5rem; +}.text-right { + text-align: right; +}.text-2xl { + font-size: 1.5rem; + line-height: 2rem; +}.text-xs { + font-size: 0.75rem; + line-height: 1rem; +}.text-gray-100 { + --tw-text-opacity: 1; + color: rgb(243 244 246 / var(--tw-text-opacity)); +}.text-red-500 { + --tw-text-opacity: 1; + color: rgb(239 68 68 / var(--tw-text-opacity)); +}.text-white { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +}.text-slate-400 { + --tw-text-opacity: 1; + color: rgb(148 163 184 / var(--tw-text-opacity)); +}.filter { + filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow); +}.react-codemirror2, +.CodeMirror { + width: 100% !important; + height: inherit !important; +}.justify-center { + justify-content: center; +}.hover\:bg-slate-500:hover { + --tw-bg-opacity: 1; + background-color: rgb(100 116 139 / var(--tw-bg-opacity)); +}.hover\:bg-slate-600:hover { + --tw-bg-opacity: 1; + background-color: rgb(71 85 105 / var(--tw-bg-opacity)); +}.focus\:ring-red-500:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity)); +}.focus\:ring-slate-800:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(30 41 59 / var(--tw-ring-opacity)); +} + +/* + Name: material + Author: Mattia Astorino (http://github.com/equinusocio) + Website: https://material-theme.site/ +*/ + +.cm-s-material.CodeMirror { + background-color: #263238; + color: #EEFFFF; +} + +.cm-s-material .CodeMirror-gutters { + background: #263238; + color: #546E7A; + border: none; +} + +.cm-s-material .CodeMirror-guttermarker, +.cm-s-material .CodeMirror-guttermarker-subtle, +.cm-s-material .CodeMirror-linenumber { + color: #546E7A; +} + +.cm-s-material .CodeMirror-cursor { + border-left: 1px solid #FFCC00; +} +.cm-s-material.cm-fat-cursor .CodeMirror-cursor { + background-color: #5d6d5c80 !important; +} +.cm-s-material .cm-animate-fat-cursor { + background-color: #5d6d5c80 !important; +} + +.cm-s-material div.CodeMirror-selected { + background: rgba(128, 203, 196, 0.2); +} + +.cm-s-material.CodeMirror-focused div.CodeMirror-selected { + background: rgba(128, 203, 196, 0.2); +} + +.cm-s-material .CodeMirror-line::selection, +.cm-s-material .CodeMirror-line>span::selection, +.cm-s-material .CodeMirror-line>span>span::selection { + background: rgba(128, 203, 196, 0.2); +} + +.cm-s-material .CodeMirror-line::-moz-selection, +.cm-s-material .CodeMirror-line>span::-moz-selection, +.cm-s-material .CodeMirror-line>span>span::-moz-selection { + background: rgba(128, 203, 196, 0.2); +} + +.cm-s-material .CodeMirror-activeline-background { + background: rgba(0, 0, 0, 0.5); +} + +.cm-s-material .cm-keyword { + color: #C792EA; +} + +.cm-s-material .cm-operator { + color: #89DDFF; +} + +.cm-s-material .cm-variable-2 { + color: #EEFFFF; +} + +.cm-s-material .cm-variable-3, +.cm-s-material .cm-type { + color: #f07178; +} + +.cm-s-material .cm-builtin { + color: #FFCB6B; +} + +.cm-s-material .cm-atom { + color: #F78C6C; +} + +.cm-s-material .cm-number { + color: #FF5370; +} + +.cm-s-material .cm-def { + color: #82AAFF; +} + +.cm-s-material .cm-string { + color: #C3E88D; +} + +.cm-s-material .cm-string-2 { + color: #f07178; +} + +.cm-s-material .cm-comment { + color: #546E7A; +} + +.cm-s-material .cm-variable { + color: #f07178; +} + +.cm-s-material .cm-tag { + color: #FF5370; +} + +.cm-s-material .cm-meta { + color: #FFCB6B; +} + +.cm-s-material .cm-attribute { + color: #C792EA; +} + +.cm-s-material .cm-property { + color: #C792EA; +} + +.cm-s-material .cm-qualifier { + color: #DECB6B; +} + +.cm-s-material .cm-variable-3, +.cm-s-material .cm-type { + color: #DECB6B; +} + + +.cm-s-material .cm-error { + color: rgba(255, 255, 255, 1.0); + background-color: #FF5370; +} + +.cm-s-material .CodeMirror-matchingbracket { + text-decoration: underline; + color: white !important; +} + +/* BASICS */ + +.CodeMirror { + /* Set height, width, borders, and global font properties here */ + font-family: monospace; + height: 300px; + color: black; + direction: ltr; +} + +/* PADDING */ + +.CodeMirror-lines { + padding: 4px 0; /* Vertical padding around content */ +} +.CodeMirror pre.CodeMirror-line, +.CodeMirror pre.CodeMirror-line-like { + padding: 0 4px; /* Horizontal padding of content */ +} + +.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + background-color: white; /* The little square between H and V scrollbars */ +} + +/* GUTTER */ + +.CodeMirror-gutters { + border-right: 1px solid #ddd; + background-color: #f7f7f7; + white-space: nowrap; +} +.CodeMirror-linenumbers {} +.CodeMirror-linenumber { + padding: 0 3px 0 5px; + min-width: 20px; + text-align: right; + color: #999; + white-space: nowrap; +} + +.CodeMirror-guttermarker { color: black; } +.CodeMirror-guttermarker-subtle { color: #999; } + +/* CURSOR */ + +.CodeMirror-cursor { + border-left: 1px solid black; + border-right: none; + width: 0; +} +/* Shown when moving in bi-directional text */ +.CodeMirror div.CodeMirror-secondarycursor { + border-left: 1px solid silver; +} +.cm-fat-cursor .CodeMirror-cursor { + width: auto; + border: 0 !important; + background: #7e7; +} +.cm-fat-cursor div.CodeMirror-cursors { + z-index: 1; +} +.cm-fat-cursor .CodeMirror-line::selection, +.cm-fat-cursor .CodeMirror-line > span::selection, +.cm-fat-cursor .CodeMirror-line > span > span::selection { background: transparent; } +.cm-fat-cursor .CodeMirror-line::-moz-selection, +.cm-fat-cursor .CodeMirror-line > span::-moz-selection, +.cm-fat-cursor .CodeMirror-line > span > span::-moz-selection { background: transparent; } +.cm-fat-cursor { caret-color: transparent; } +@-moz-keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} +@-webkit-keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} +@keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} + +/* Can style cursor different in overwrite (non-insert) mode */ +.CodeMirror-overwrite .CodeMirror-cursor {} + +.cm-tab { display: inline-block; text-decoration: inherit; } + +.CodeMirror-rulers { + position: absolute; + left: 0; right: 0; top: -50px; bottom: 0; + overflow: hidden; +} +.CodeMirror-ruler { + border-left: 1px solid #ccc; + top: 0; bottom: 0; + position: absolute; +} + +/* DEFAULT THEME */ + +.cm-s-default .cm-header {color: blue;} +.cm-s-default .cm-quote {color: #090;} +.cm-negative {color: #d44;} +.cm-positive {color: #292;} +.cm-header, .cm-strong {font-weight: bold;} +.cm-em {font-style: italic;} +.cm-link {text-decoration: underline;} +.cm-strikethrough {text-decoration: line-through;} + +.cm-s-default .cm-keyword {color: #708;} +.cm-s-default .cm-atom {color: #219;} +.cm-s-default .cm-number {color: #164;} +.cm-s-default .cm-def {color: #00f;} +.cm-s-default .cm-variable, +.cm-s-default .cm-punctuation, +.cm-s-default .cm-property, +.cm-s-default .cm-operator {} +.cm-s-default .cm-variable-2 {color: #05a;} +.cm-s-default .cm-variable-3, .cm-s-default .cm-type {color: #085;} +.cm-s-default .cm-comment {color: #a50;} +.cm-s-default .cm-string {color: #a11;} +.cm-s-default .cm-string-2 {color: #f50;} +.cm-s-default .cm-meta {color: #555;} +.cm-s-default .cm-qualifier {color: #555;} +.cm-s-default .cm-builtin {color: #30a;} +.cm-s-default .cm-bracket {color: #997;} +.cm-s-default .cm-tag {color: #170;} +.cm-s-default .cm-attribute {color: #00c;} +.cm-s-default .cm-hr {color: #999;} +.cm-s-default .cm-link {color: #00c;} + +.cm-s-default .cm-error {color: #f00;} +.cm-invalidchar {color: #f00;} + +.CodeMirror-composing { border-bottom: 2px solid; } + +/* Default styles for common addons */ + +div.CodeMirror span.CodeMirror-matchingbracket {color: #0b0;} +div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #a22;} +.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } +.CodeMirror-activeline-background {background: #e8f2ff;} + +/* STOP */ + +/* The rest of this file contains styles related to the mechanics of + the editor. You probably shouldn't touch them. */ + +.CodeMirror { + position: relative; + overflow: hidden; + background: white; +} + +.CodeMirror-scroll { + overflow: scroll !important; /* Things will break if this is overridden */ + /* 50px is the magic margin used to hide the element's real scrollbars */ + /* See overflow: hidden in .CodeMirror */ + margin-bottom: -50px; margin-right: -50px; + padding-bottom: 50px; + height: 100%; + outline: none; /* Prevent dragging from highlighting the element */ + position: relative; + z-index: 0; +} +.CodeMirror-sizer { + position: relative; + border-right: 50px solid transparent; +} + +/* The fake, visible scrollbars. Used to force redraw during scrolling + before actual scrolling happens, thus preventing shaking and + flickering artifacts. */ +.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + position: absolute; + z-index: 6; + display: none; + outline: none; +} +.CodeMirror-vscrollbar { + right: 0; top: 0; + overflow-x: hidden; + overflow-y: scroll; +} +.CodeMirror-hscrollbar { + bottom: 0; left: 0; + overflow-y: hidden; + overflow-x: scroll; +} +.CodeMirror-scrollbar-filler { + right: 0; bottom: 0; +} +.CodeMirror-gutter-filler { + left: 0; bottom: 0; +} + +.CodeMirror-gutters { + position: absolute; left: 0; top: 0; + min-height: 100%; + z-index: 3; +} +.CodeMirror-gutter { + white-space: normal; + height: 100%; + display: inline-block; + vertical-align: top; + margin-bottom: -50px; +} +.CodeMirror-gutter-wrapper { + position: absolute; + z-index: 4; + background: none !important; + border: none !important; +} +.CodeMirror-gutter-background { + position: absolute; + top: 0; bottom: 0; + z-index: 4; +} +.CodeMirror-gutter-elt { + position: absolute; + cursor: default; + z-index: 4; +} +.CodeMirror-gutter-wrapper ::selection { background-color: transparent } +.CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent } + +.CodeMirror-lines { + cursor: text; + min-height: 1px; /* prevents collapsing before first draw */ +} +.CodeMirror pre.CodeMirror-line, +.CodeMirror pre.CodeMirror-line-like { + /* Reset some styles that the rest of the page might have set */ + -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; + border-width: 0; + background: transparent; + font-family: inherit; + font-size: inherit; + margin: 0; + white-space: pre; + word-wrap: normal; + line-height: inherit; + color: inherit; + z-index: 2; + position: relative; + overflow: visible; + -webkit-tap-highlight-color: transparent; + -webkit-font-variant-ligatures: contextual; + font-variant-ligatures: contextual; +} +.CodeMirror-wrap pre.CodeMirror-line, +.CodeMirror-wrap pre.CodeMirror-line-like { + word-wrap: break-word; + white-space: pre-wrap; + word-break: normal; +} + +.CodeMirror-linebackground { + position: absolute; + left: 0; right: 0; top: 0; bottom: 0; + z-index: 0; +} + +.CodeMirror-linewidget { + position: relative; + z-index: 2; + padding: 0.1px; /* Force widget margins to stay inside of the container */ +} + +.CodeMirror-widget {} + +.CodeMirror-rtl pre { direction: rtl; } + +.CodeMirror-code { + outline: none; +} + +/* Force content-box sizing for the elements where we expect it */ +.CodeMirror-scroll, +.CodeMirror-sizer, +.CodeMirror-gutter, +.CodeMirror-gutters, +.CodeMirror-linenumber { + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +.CodeMirror-measure { + position: absolute; + width: 100%; + height: 0; + overflow: hidden; + visibility: hidden; +} + +.CodeMirror-cursor { + position: absolute; + pointer-events: none; +} +.CodeMirror-measure pre { position: static; } + +div.CodeMirror-cursors { + visibility: hidden; + position: relative; + z-index: 3; +} +div.CodeMirror-dragcursors { + visibility: visible; +} + +.CodeMirror-focused div.CodeMirror-cursors { + visibility: visible; +} + +.CodeMirror-selected { background: #d9d9d9; } +.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } +.CodeMirror-crosshair { cursor: crosshair; } +.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; } +.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; } + +.cm-searching { + background-color: #ffa; + background-color: rgba(255, 255, 0, .4); +} + +/* Used to force a border model for a node */ +.cm-force-border { padding-right: .1px; } + +@media print { + /* Hide the cursor when printing */ + .CodeMirror div.CodeMirror-cursors { + visibility: hidden; + } +} + +/* See issue #2901 */ +.cm-tab-wrap-hack:after { content: ''; } + +/* Help users use markselection to safely style text background */ +span.CodeMirror-selectedtext { background: none; } + +/*# sourceMappingURL=index.1e09ac22.css.map */ diff --git a/docs/tutorial/index.1e09ac22.css.map b/docs/tutorial/index.1e09ac22.css.map new file mode 100644 index 00000000..65fcb98b --- /dev/null +++ b/docs/tutorial/index.1e09ac22.css.map @@ -0,0 +1 @@ +{"mappings":"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AA;EAAA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA,kBAAA;EAAA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA,mBAAA;EAAA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA,mBAAA;EAAA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CAApB;ECDA;ADCoB,CACpB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA,yBAAA;EAAA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA,wBAAA;EAAA,uDAAA;EAAA;ADEmB,CAAnB;ECFA,wBAAA;EAAA,qDAAA;EAAA;ADEmB,CAAnB;ECFA,wBAAA;EAAA,4DAAA;EAAA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA,uBAAA;EAAA;ADEmB,CAAnB;ECFA,uBAAA;EAAA;ADEmB,CAAnB;ECFA,uBAAA;EAAA;ADEmB,CAAnB;ECFA,mBAAA;EAAA;ADEmB,CAAnB;ECFA,mBAAA;EAAA;ADEmB,CAAnB;ECFA,mBAAA;EAAA;ADEmB,CAAnB;ECFA,mBAAA;EAAA;ADEmB,CAAnB;ECFA,mBAAA;EAAA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA,qBAAA;EAAA;ADEmB,CAAnB;ECFA;ADEmB,CAAnB;ECFA,kBAAA;EAAA;ADEmB,CAAnB;ECFA,mBAAA;EAAA;ADEmB,CAAnB;ECFA,qBAAA;EAAA;ADEmB,CAAnB;ECFA,qBAAA;EAAA;ADEmB,CAAnB;ECFA,qBAAA;EAAA;ADEmB,CAAnB;ECFA,qBAAA;EAAA;ADEmB,CAAnB;ECFA;ADEmB,CAEnB;;EAEE,sBAAsB;EACtB,0BAA0B;AAC5B,CAEA;EACE,uBAAuB;AACzB,CAZA;ECAA,mBAAA;EAAA;CAAA,ADAA;ECAA,mBAAA;EAAA;CAAA,ADAA;ECAA,qBAAA;EAAA;CAAA,ADAA;ECAA,qBAAA;EAAA;CAAA;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AC5IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["src/tutorial/style.css","","node_modules/codemirror/theme/material.css","node_modules/codemirror/lib/codemirror.css"],"sourcesContent":["@tailwind base;\n@tailwind components;\n@tailwind utilities;\n\n.react-codemirror2,\n.CodeMirror {\n width: 100% !important;\n height: inherit !important;\n}\n\n.justify-center {\n justify-content: center;\n}\n",null,"/*\n Name: material\n Author: Mattia Astorino (http://github.com/equinusocio)\n Website: https://material-theme.site/\n*/\n\n.cm-s-material.CodeMirror {\n background-color: #263238;\n color: #EEFFFF;\n}\n\n.cm-s-material .CodeMirror-gutters {\n background: #263238;\n color: #546E7A;\n border: none;\n}\n\n.cm-s-material .CodeMirror-guttermarker,\n.cm-s-material .CodeMirror-guttermarker-subtle,\n.cm-s-material .CodeMirror-linenumber {\n color: #546E7A;\n}\n\n.cm-s-material .CodeMirror-cursor {\n border-left: 1px solid #FFCC00;\n}\n.cm-s-material.cm-fat-cursor .CodeMirror-cursor {\n background-color: #5d6d5c80 !important;\n}\n.cm-s-material .cm-animate-fat-cursor {\n background-color: #5d6d5c80 !important;\n}\n\n.cm-s-material div.CodeMirror-selected {\n background: rgba(128, 203, 196, 0.2);\n}\n\n.cm-s-material.CodeMirror-focused div.CodeMirror-selected {\n background: rgba(128, 203, 196, 0.2);\n}\n\n.cm-s-material .CodeMirror-line::selection,\n.cm-s-material .CodeMirror-line>span::selection,\n.cm-s-material .CodeMirror-line>span>span::selection {\n background: rgba(128, 203, 196, 0.2);\n}\n\n.cm-s-material .CodeMirror-line::-moz-selection,\n.cm-s-material .CodeMirror-line>span::-moz-selection,\n.cm-s-material .CodeMirror-line>span>span::-moz-selection {\n background: rgba(128, 203, 196, 0.2);\n}\n\n.cm-s-material .CodeMirror-activeline-background {\n background: rgba(0, 0, 0, 0.5);\n}\n\n.cm-s-material .cm-keyword {\n color: #C792EA;\n}\n\n.cm-s-material .cm-operator {\n color: #89DDFF;\n}\n\n.cm-s-material .cm-variable-2 {\n color: #EEFFFF;\n}\n\n.cm-s-material .cm-variable-3,\n.cm-s-material .cm-type {\n color: #f07178;\n}\n\n.cm-s-material .cm-builtin {\n color: #FFCB6B;\n}\n\n.cm-s-material .cm-atom {\n color: #F78C6C;\n}\n\n.cm-s-material .cm-number {\n color: #FF5370;\n}\n\n.cm-s-material .cm-def {\n color: #82AAFF;\n}\n\n.cm-s-material .cm-string {\n color: #C3E88D;\n}\n\n.cm-s-material .cm-string-2 {\n color: #f07178;\n}\n\n.cm-s-material .cm-comment {\n color: #546E7A;\n}\n\n.cm-s-material .cm-variable {\n color: #f07178;\n}\n\n.cm-s-material .cm-tag {\n color: #FF5370;\n}\n\n.cm-s-material .cm-meta {\n color: #FFCB6B;\n}\n\n.cm-s-material .cm-attribute {\n color: #C792EA;\n}\n\n.cm-s-material .cm-property {\n color: #C792EA;\n}\n\n.cm-s-material .cm-qualifier {\n color: #DECB6B;\n}\n\n.cm-s-material .cm-variable-3,\n.cm-s-material .cm-type {\n color: #DECB6B;\n}\n\n\n.cm-s-material .cm-error {\n color: rgba(255, 255, 255, 1.0);\n background-color: #FF5370;\n}\n\n.cm-s-material .CodeMirror-matchingbracket {\n text-decoration: underline;\n color: white !important;\n}\n","/* BASICS */\n\n.CodeMirror {\n /* Set height, width, borders, and global font properties here */\n font-family: monospace;\n height: 300px;\n color: black;\n direction: ltr;\n}\n\n/* PADDING */\n\n.CodeMirror-lines {\n padding: 4px 0; /* Vertical padding around content */\n}\n.CodeMirror pre.CodeMirror-line,\n.CodeMirror pre.CodeMirror-line-like {\n padding: 0 4px; /* Horizontal padding of content */\n}\n\n.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {\n background-color: white; /* The little square between H and V scrollbars */\n}\n\n/* GUTTER */\n\n.CodeMirror-gutters {\n border-right: 1px solid #ddd;\n background-color: #f7f7f7;\n white-space: nowrap;\n}\n.CodeMirror-linenumbers {}\n.CodeMirror-linenumber {\n padding: 0 3px 0 5px;\n min-width: 20px;\n text-align: right;\n color: #999;\n white-space: nowrap;\n}\n\n.CodeMirror-guttermarker { color: black; }\n.CodeMirror-guttermarker-subtle { color: #999; }\n\n/* CURSOR */\n\n.CodeMirror-cursor {\n border-left: 1px solid black;\n border-right: none;\n width: 0;\n}\n/* Shown when moving in bi-directional text */\n.CodeMirror div.CodeMirror-secondarycursor {\n border-left: 1px solid silver;\n}\n.cm-fat-cursor .CodeMirror-cursor {\n width: auto;\n border: 0 !important;\n background: #7e7;\n}\n.cm-fat-cursor div.CodeMirror-cursors {\n z-index: 1;\n}\n.cm-fat-cursor .CodeMirror-line::selection,\n.cm-fat-cursor .CodeMirror-line > span::selection, \n.cm-fat-cursor .CodeMirror-line > span > span::selection { background: transparent; }\n.cm-fat-cursor .CodeMirror-line::-moz-selection,\n.cm-fat-cursor .CodeMirror-line > span::-moz-selection,\n.cm-fat-cursor .CodeMirror-line > span > span::-moz-selection { background: transparent; }\n.cm-fat-cursor { caret-color: transparent; }\n@-moz-keyframes blink {\n 0% {}\n 50% { background-color: transparent; }\n 100% {}\n}\n@-webkit-keyframes blink {\n 0% {}\n 50% { background-color: transparent; }\n 100% {}\n}\n@keyframes blink {\n 0% {}\n 50% { background-color: transparent; }\n 100% {}\n}\n\n/* Can style cursor different in overwrite (non-insert) mode */\n.CodeMirror-overwrite .CodeMirror-cursor {}\n\n.cm-tab { display: inline-block; text-decoration: inherit; }\n\n.CodeMirror-rulers {\n position: absolute;\n left: 0; right: 0; top: -50px; bottom: 0;\n overflow: hidden;\n}\n.CodeMirror-ruler {\n border-left: 1px solid #ccc;\n top: 0; bottom: 0;\n position: absolute;\n}\n\n/* DEFAULT THEME */\n\n.cm-s-default .cm-header {color: blue;}\n.cm-s-default .cm-quote {color: #090;}\n.cm-negative {color: #d44;}\n.cm-positive {color: #292;}\n.cm-header, .cm-strong {font-weight: bold;}\n.cm-em {font-style: italic;}\n.cm-link {text-decoration: underline;}\n.cm-strikethrough {text-decoration: line-through;}\n\n.cm-s-default .cm-keyword {color: #708;}\n.cm-s-default .cm-atom {color: #219;}\n.cm-s-default .cm-number {color: #164;}\n.cm-s-default .cm-def {color: #00f;}\n.cm-s-default .cm-variable,\n.cm-s-default .cm-punctuation,\n.cm-s-default .cm-property,\n.cm-s-default .cm-operator {}\n.cm-s-default .cm-variable-2 {color: #05a;}\n.cm-s-default .cm-variable-3, .cm-s-default .cm-type {color: #085;}\n.cm-s-default .cm-comment {color: #a50;}\n.cm-s-default .cm-string {color: #a11;}\n.cm-s-default .cm-string-2 {color: #f50;}\n.cm-s-default .cm-meta {color: #555;}\n.cm-s-default .cm-qualifier {color: #555;}\n.cm-s-default .cm-builtin {color: #30a;}\n.cm-s-default .cm-bracket {color: #997;}\n.cm-s-default .cm-tag {color: #170;}\n.cm-s-default .cm-attribute {color: #00c;}\n.cm-s-default .cm-hr {color: #999;}\n.cm-s-default .cm-link {color: #00c;}\n\n.cm-s-default .cm-error {color: #f00;}\n.cm-invalidchar {color: #f00;}\n\n.CodeMirror-composing { border-bottom: 2px solid; }\n\n/* Default styles for common addons */\n\ndiv.CodeMirror span.CodeMirror-matchingbracket {color: #0b0;}\ndiv.CodeMirror span.CodeMirror-nonmatchingbracket {color: #a22;}\n.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); }\n.CodeMirror-activeline-background {background: #e8f2ff;}\n\n/* STOP */\n\n/* The rest of this file contains styles related to the mechanics of\n the editor. You probably shouldn't touch them. */\n\n.CodeMirror {\n position: relative;\n overflow: hidden;\n background: white;\n}\n\n.CodeMirror-scroll {\n overflow: scroll !important; /* Things will break if this is overridden */\n /* 50px is the magic margin used to hide the element's real scrollbars */\n /* See overflow: hidden in .CodeMirror */\n margin-bottom: -50px; margin-right: -50px;\n padding-bottom: 50px;\n height: 100%;\n outline: none; /* Prevent dragging from highlighting the element */\n position: relative;\n z-index: 0;\n}\n.CodeMirror-sizer {\n position: relative;\n border-right: 50px solid transparent;\n}\n\n/* The fake, visible scrollbars. Used to force redraw during scrolling\n before actual scrolling happens, thus preventing shaking and\n flickering artifacts. */\n.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler {\n position: absolute;\n z-index: 6;\n display: none;\n outline: none;\n}\n.CodeMirror-vscrollbar {\n right: 0; top: 0;\n overflow-x: hidden;\n overflow-y: scroll;\n}\n.CodeMirror-hscrollbar {\n bottom: 0; left: 0;\n overflow-y: hidden;\n overflow-x: scroll;\n}\n.CodeMirror-scrollbar-filler {\n right: 0; bottom: 0;\n}\n.CodeMirror-gutter-filler {\n left: 0; bottom: 0;\n}\n\n.CodeMirror-gutters {\n position: absolute; left: 0; top: 0;\n min-height: 100%;\n z-index: 3;\n}\n.CodeMirror-gutter {\n white-space: normal;\n height: 100%;\n display: inline-block;\n vertical-align: top;\n margin-bottom: -50px;\n}\n.CodeMirror-gutter-wrapper {\n position: absolute;\n z-index: 4;\n background: none !important;\n border: none !important;\n}\n.CodeMirror-gutter-background {\n position: absolute;\n top: 0; bottom: 0;\n z-index: 4;\n}\n.CodeMirror-gutter-elt {\n position: absolute;\n cursor: default;\n z-index: 4;\n}\n.CodeMirror-gutter-wrapper ::selection { background-color: transparent }\n.CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent }\n\n.CodeMirror-lines {\n cursor: text;\n min-height: 1px; /* prevents collapsing before first draw */\n}\n.CodeMirror pre.CodeMirror-line,\n.CodeMirror pre.CodeMirror-line-like {\n /* Reset some styles that the rest of the page might have set */\n -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;\n border-width: 0;\n background: transparent;\n font-family: inherit;\n font-size: inherit;\n margin: 0;\n white-space: pre;\n word-wrap: normal;\n line-height: inherit;\n color: inherit;\n z-index: 2;\n position: relative;\n overflow: visible;\n -webkit-tap-highlight-color: transparent;\n -webkit-font-variant-ligatures: contextual;\n font-variant-ligatures: contextual;\n}\n.CodeMirror-wrap pre.CodeMirror-line,\n.CodeMirror-wrap pre.CodeMirror-line-like {\n word-wrap: break-word;\n white-space: pre-wrap;\n word-break: normal;\n}\n\n.CodeMirror-linebackground {\n position: absolute;\n left: 0; right: 0; top: 0; bottom: 0;\n z-index: 0;\n}\n\n.CodeMirror-linewidget {\n position: relative;\n z-index: 2;\n padding: 0.1px; /* Force widget margins to stay inside of the container */\n}\n\n.CodeMirror-widget {}\n\n.CodeMirror-rtl pre { direction: rtl; }\n\n.CodeMirror-code {\n outline: none;\n}\n\n/* Force content-box sizing for the elements where we expect it */\n.CodeMirror-scroll,\n.CodeMirror-sizer,\n.CodeMirror-gutter,\n.CodeMirror-gutters,\n.CodeMirror-linenumber {\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n}\n\n.CodeMirror-measure {\n position: absolute;\n width: 100%;\n height: 0;\n overflow: hidden;\n visibility: hidden;\n}\n\n.CodeMirror-cursor {\n position: absolute;\n pointer-events: none;\n}\n.CodeMirror-measure pre { position: static; }\n\ndiv.CodeMirror-cursors {\n visibility: hidden;\n position: relative;\n z-index: 3;\n}\ndiv.CodeMirror-dragcursors {\n visibility: visible;\n}\n\n.CodeMirror-focused div.CodeMirror-cursors {\n visibility: visible;\n}\n\n.CodeMirror-selected { background: #d9d9d9; }\n.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; }\n.CodeMirror-crosshair { cursor: crosshair; }\n.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }\n.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; }\n\n.cm-searching {\n background-color: #ffa;\n background-color: rgba(255, 255, 0, .4);\n}\n\n/* Used to force a border model for a node */\n.cm-force-border { padding-right: .1px; }\n\n@media print {\n /* Hide the cursor when printing */\n .CodeMirror div.CodeMirror-cursors {\n visibility: hidden;\n }\n}\n\n/* See issue #2901 */\n.cm-tab-wrap-hack:after { content: ''; }\n\n/* Help users use markselection to safely style text background */\nspan.CodeMirror-selectedtext { background: none; }\n"],"names":[],"version":3,"file":"index.1e09ac22.css.map"} \ No newline at end of file diff --git a/docs/tutorial/index.ea127b5f.js b/docs/tutorial/index.ea127b5f.js new file mode 100644 index 00000000..aaa2f36e --- /dev/null +++ b/docs/tutorial/index.ea127b5f.js @@ -0,0 +1,108741 @@ +// modules are defined as an array +// [ module function, map of requires ] +// +// map of requires is short require name -> numeric require +// +// anything defined in a previous bundle is accessed via the +// orig method which is the require for previous bundles + +(function (modules, entry, mainEntry, parcelRequireName, globalName) { + /* eslint-disable no-undef */ + var globalObject = + typeof globalThis !== 'undefined' + ? globalThis + : typeof self !== 'undefined' + ? self + : typeof window !== 'undefined' + ? window + : typeof global !== 'undefined' + ? global + : {}; + /* eslint-enable no-undef */ + + // Save the require from previous bundle to this closure if any + var previousRequire = + typeof globalObject[parcelRequireName] === 'function' && + globalObject[parcelRequireName]; + + var cache = previousRequire.cache || {}; + // Do not use `require` to prevent Webpack from trying to bundle this call + var nodeRequire = + typeof module !== 'undefined' && + typeof module.require === 'function' && + module.require.bind(module); + + function newRequire(name, jumped) { + if (!cache[name]) { + if (!modules[name]) { + // if we cannot find the module within our internal map or + // cache jump to the current global require ie. the last bundle + // that was added to the page. + var currentRequire = + typeof globalObject[parcelRequireName] === 'function' && + globalObject[parcelRequireName]; + if (!jumped && currentRequire) { + return currentRequire(name, true); + } + + // If there are other bundles on this page the require from the + // previous one is saved to 'previousRequire'. Repeat this as + // many times as there are bundles until the module is found or + // we exhaust the require chain. + if (previousRequire) { + return previousRequire(name, true); + } + + // Try the node require function if it exists. + if (nodeRequire && typeof name === 'string') { + return nodeRequire(name); + } + + var err = new Error("Cannot find module '" + name + "'"); + err.code = 'MODULE_NOT_FOUND'; + throw err; + } + + localRequire.resolve = resolve; + localRequire.cache = {}; + + var module = (cache[name] = new newRequire.Module(name)); + + modules[name][0].call( + module.exports, + localRequire, + module, + module.exports, + this + ); + } + + return cache[name].exports; + + function localRequire(x) { + var res = localRequire.resolve(x); + return res === false ? {} : newRequire(res); + } + + function resolve(x) { + var id = modules[name][1][x]; + return id != null ? id : x; + } + } + + function Module(moduleName) { + this.id = moduleName; + this.bundle = newRequire; + this.exports = {}; + } + + newRequire.isParcelRequire = true; + newRequire.Module = Module; + newRequire.modules = modules; + newRequire.cache = cache; + newRequire.parent = previousRequire; + newRequire.register = function (id, exports) { + modules[id] = [ + function (require, module) { + module.exports = exports; + }, + {}, + ]; + }; + + Object.defineProperty(newRequire, 'root', { + get: function () { + return globalObject[parcelRequireName]; + }, + }); + + globalObject[parcelRequireName] = newRequire; + + for (var i = 0; i < entry.length; i++) { + newRequire(entry[i]); + } + + if (mainEntry) { + // Expose entry point to Node, AMD or browser globals + // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js + var mainExports = newRequire(mainEntry); + + // CommonJS + if (typeof exports === 'object' && typeof module !== 'undefined') { + module.exports = mainExports; + + // RequireJS + } else if (typeof define === 'function' && define.amd) { + define(function () { + return mainExports; + }); + + // + +