@doccov/ui 0.2.2 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/badge/index.d.ts +14 -0
- package/dist/badge/index.js +86 -0
- package/dist/breadcrumb/index.d.ts +24 -0
- package/dist/breadcrumb/index.js +77 -0
- package/dist/button/index.d.ts +18 -0
- package/dist/button/index.js +109 -0
- package/dist/coverage-trends/index.d.ts +46 -0
- package/dist/coverage-trends/index.js +182 -0
- package/dist/file-change-row/index.d.ts +34 -0
- package/dist/file-change-row/index.js +4415 -0
- package/dist/file-chip/index.d.ts +7 -0
- package/dist/file-chip/index.js +30 -0
- package/dist/input/index.d.ts +23 -0
- package/dist/input/index.js +242 -0
- package/dist/tabs/index.d.ts +56 -0
- package/dist/tabs/index.js +224 -0
- package/package.json +33 -1
|
@@ -0,0 +1,4415 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __toESM = (mod, isNodeMode, target) => {
|
|
8
|
+
target = mod != null ? __create(__getProtoOf(mod)) : {};
|
|
9
|
+
const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
|
|
10
|
+
for (let key of __getOwnPropNames(mod))
|
|
11
|
+
if (!__hasOwnProp.call(to, key))
|
|
12
|
+
__defProp(to, key, {
|
|
13
|
+
get: () => mod[key],
|
|
14
|
+
enumerable: true
|
|
15
|
+
});
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
19
|
+
|
|
20
|
+
// ../../node_modules/seti-icons/lib/definitions.json
|
|
21
|
+
var require_definitions = __commonJS((exports, module) => {
|
|
22
|
+
module.exports = { files: { "karma.conf.js": ["karma", "green"], "karma.conf.coffee": ["karma", "green"], "README.md": ["info", "blue"], "CHANGELOG.md": ["clock", "blue"], CHANGELOG: ["clock", "blue"], "CHANGES.md": ["clock", "blue"], "VERSION.md": ["clock", "blue"], VERSION: ["clock", "blue"], mvnw: ["maven", "red"], "tsconfig.json": ["tsconfig", "blue"], "swagger.json": ["json", "green"], "swagger.yml": ["json", "green"], "swagger.yaml": ["json", "green"], "mime.types": ["config", "grey-light"], Jenkinsfile: ["jenkins", "red"], "babel.config.js": ["babel", "yellow"], "babel.config.json": ["babel", "yellow"], "babel.config.cjs": ["babel", "yellow"], "bower.json": ["bower", "orange"], "Bower.json": ["bower", "orange"], "firebase.json": ["firebase", "orange"], geckodriver: ["firefox", "orange"], "Gruntfile.js": ["grunt", "orange"], "gruntfile.babel.js": ["grunt", "orange"], "Gruntfile.babel.js": ["grunt", "orange"], "gruntfile.js": ["grunt", "orange"], "Gruntfile.coffee": ["grunt", "orange"], "gruntfile.coffee": ["grunt", "orange"], "ionic.config.json": ["ionic", "blue"], "Ionic.config.json": ["ionic", "blue"], "ionic.project": ["ionic", "blue"], "Ionic.project": ["ionic", "blue"], "platformio.ini": ["platformio", "orange"], "rollup.config.js": ["rollup", "red"], "sass-lint.yml": ["sass", "pink"], "stylelint.config.js": ["stylelint", "white"], "yarn.clean": ["yarn", "blue"], "yarn.lock": ["yarn", "blue"], "webpack.config.js": ["webpack", "blue"], "webpack.config.build.js": ["webpack", "blue"], "webpack.common.js": ["webpack", "blue"], "webpack.dev.js": ["webpack", "blue"], "webpack.prod.js": ["webpack", "blue"], "npm-debug.log": ["npm_ignored", "ignore"] }, extensions: { ".bsl": ["bsl", "red"], ".mdo": ["mdo", "red"], ".asm": ["asm", "red"], ".s": ["asm", "red"], ".c": ["c", "blue"], ".h": ["c", "purple"], ".m": ["c", "yellow"], ".cs": ["c-sharp", "blue"], ".cshtml": ["html", "blue"], ".aspx": ["html", "blue"], ".ascx": ["html", "green"], ".asax": ["html", "yellow"], ".master": ["html", "yellow"], ".cc": ["cpp", "blue"], ".cpp": ["cpp", "blue"], ".cxx": ["cpp", "blue"], ".c++": ["cpp", "blue"], ".hh": ["cpp", "purple"], ".hpp": ["cpp", "purple"], ".hxx": ["cpp", "purple"], ".h++": ["cpp", "purple"], ".mm": ["cpp", "yellow"], ".clj": ["clojure", "green"], ".cljs": ["clojure", "green"], ".cljc": ["clojure", "green"], ".edn": ["clojure", "blue"], ".cfc": ["coldfusion", "blue"], ".cfm": ["coldfusion", "blue"], ".coffee": ["coffee", "yellow"], ".litcoffee": ["coffee", "yellow"], ".config": ["config", "grey-light"], ".cfg": ["config", "grey-light"], ".conf": ["config", "grey-light"], ".cr": ["crystal", "white"], ".ecr": ["crystal_embedded", "white"], ".slang": ["crystal_embedded", "white"], ".cson": ["json", "yellow"], ".css": ["css", "blue"], ".css.map": ["css", "blue"], ".sss": ["css", "blue"], ".csv": ["csv", "green"], ".xls": ["xls", "green"], ".xlsx": ["xls", "green"], ".cake": ["cake", "red"], ".ctp": ["cake_php", "red"], ".d": ["d", "red"], ".doc": ["word", "blue"], ".docx": ["word", "blue"], ".ejs": ["ejs", "yellow"], ".ex": ["elixir", "purple"], ".exs": ["elixir_script", "purple"], ".elm": ["elm", "blue"], ".ico": ["favicon", "yellow"], ".fs": ["f-sharp", "blue"], ".fsx": ["f-sharp", "blue"], ".gitignore": ["git", "ignore"], ".gitconfig": ["git", "ignore"], ".gitkeep": ["git", "ignore"], ".gitattributes": ["git", "ignore"], ".gitmodules": ["git", "ignore"], ".go": ["go2", "blue"], ".slide": ["go", "blue"], ".article": ["go", "blue"], ".gradle": ["gradle", "green"], ".groovy": ["grails", "green"], ".gsp": ["grails", "green"], ".gql": ["graphql", "pink"], ".graphql": ["graphql", "pink"], ".haml": ["haml", "red"], ".handlebars": ["mustache", "orange"], ".hbs": ["mustache", "orange"], ".hjs": ["mustache", "orange"], ".hs": ["haskell", "purple"], ".lhs": ["haskell", "purple"], ".hx": ["haxe", "orange"], ".hxs": ["haxe", "yellow"], ".hxp": ["haxe", "blue"], ".hxml": ["haxe", "purple"], ".html": ["html", "orange"], ".jade": ["jade", "red"], ".java": ["java", "red"], ".class": ["java", "red"], ".classpath": ["java", "red"], ".properties": ["java", "red"], ".js": ["javascript", "yellow"], ".js.map": ["javascript", "yellow"], ".spec.js": ["javascript", "orange"], ".test.js": ["javascript", "orange"], ".es": ["javascript", "yellow"], ".es5": ["javascript", "yellow"], ".es6": ["javascript", "yellow"], ".es7": ["javascript", "yellow"], ".jinja": ["jinja", "red"], ".jinja2": ["jinja", "red"], ".json": ["json", "yellow"], ".jl": ["julia", "purple"], ".kt": ["kotlin", "orange"], ".kts": ["kotlin", "orange"], ".dart": ["dart", "blue"], ".less": ["less", "blue"], ".liquid": ["liquid", "green"], ".ls": ["livescript", "blue"], ".lua": ["lua", "blue"], ".markdown": ["markdown", "blue"], ".md": ["markdown", "blue"], ".argdown": ["argdown", "blue"], ".ad": ["argdown", "blue"], ".mustache": ["mustache", "orange"], ".stache": ["mustache", "orange"], ".njk": ["nunjucks", "green"], ".nunjucks": ["nunjucks", "green"], ".nunjs": ["nunjucks", "green"], ".nunj": ["nunjucks", "green"], ".njs": ["nunjucks", "green"], ".nj": ["nunjucks", "green"], ".npm-debug.log": ["npm", "ignore"], ".npmignore": ["npm", "red"], ".npmrc": ["npm", "red"], ".ml": ["ocaml", "orange"], ".mli": ["ocaml", "orange"], ".cmx": ["ocaml", "orange"], ".cmxa": ["ocaml", "orange"], ".odata": ["odata", "orange"], ".pl": ["perl", "blue"], ".php": ["php", "purple"], ".php.inc": ["php", "purple"], ".pddl": ["pddl", "purple"], ".plan": ["plan", "green"], ".happenings": ["happenings", "blue"], ".ps1": ["powershell", "blue"], ".psd1": ["powershell", "blue"], ".psm1": ["powershell", "blue"], ".pug": ["pug", "red"], ".pp": ["puppet", "yellow"], ".epp": ["puppet", "yellow"], ".py": ["python", "blue"], ".jsx": ["react", "blue"], ".spec.jsx": ["react", "orange"], ".test.jsx": ["react", "orange"], ".cjsx": ["react", "blue"], ".tsx": ["react", "blue"], ".spec.tsx": ["react", "yellow"], ".test.tsx": ["react", "yellow"], ".re": ["reasonml", "red"], ".R": ["R", "blue"], ".rmd": ["rmd", "blue"], ".rb": ["ruby", "red"], ".erb": ["html_erb", "red"], ".erb.html": ["html_erb", "red"], ".html.erb": ["html_erb", "red"], ".rs": ["rust", "grey-light"], ".sass": ["sass", "pink"], ".scss": ["sass", "pink"], ".springBeans": ["spring", "green"], ".slim": ["slim", "orange"], ".smarty.tpl": ["smarty", "yellow"], ".sbt": ["sbt", "blue"], ".scala": ["scala", "red"], ".sol": ["ethereum", "blue"], ".styl": ["stylus", "green"], ".swift": ["swift", "orange"], ".sql": ["db", "pink"], ".tf": ["terraform", "purple"], ".tf.json": ["terraform", "purple"], ".tfvars": ["terraform", "purple"], ".tex": ["tex", "blue"], ".sty": ["tex", "yellow"], ".dtx": ["tex", "orange"], ".ins": ["tex", "white"], ".txt": ["default", "white"], ".toml": ["config", "grey-light"], ".twig": ["twig", "green"], ".ts": ["typescript", "blue"], ".spec.ts": ["typescript", "yellow"], ".test.ts": ["typescript", "yellow"], ".vala": ["vala", "grey-light"], ".vapi": ["vala", "grey-light"], ".vue": ["vue", "green"], ".wasm": ["wasm", "purple"], ".wat": ["wat", "purple"], ".xml": ["xml", "orange"], ".yml": ["yml", "purple"], ".yaml": ["yml", "purple"], ".pro": ["prolog", "orange"], ".jar": ["zip", "red"], ".zip": ["zip", "grey-light"], ".wgt": ["wgt", "blue"], ".ai": ["illustrator", "yellow"], ".psd": ["photoshop", "blue"], ".pdf": ["pdf", "red"], ".eot": ["font", "red"], ".ttf": ["font", "red"], ".woff": ["font", "red"], ".woff2": ["font", "red"], ".gif": ["image", "purple"], ".jpg": ["image", "purple"], ".jpeg": ["image", "purple"], ".png": ["image", "purple"], ".pxm": ["image", "purple"], ".svg": ["svg", "purple"], ".svgx": ["image", "purple"], ".sublime-project": ["sublime", "orange"], ".sublime-workspace": ["sublime", "orange"], ".code-search": ["code-search", "purple"], ".component": ["salesforce", "blue"], ".cls": ["salesforce", "blue"], ".sh": ["shell", "grey"], ".zsh": ["shell", "grey"], ".fish": ["shell", "grey"], ".zshrc": ["shell", "grey"], ".bashrc": ["shell", "grey"], ".mov": ["video", "pink"], ".ogv": ["video", "pink"], ".webm": ["video", "pink"], ".avi": ["video", "pink"], ".mpg": ["video", "pink"], ".mp4": ["video", "pink"], ".mp3": ["audio", "purple"], ".ogg": ["audio", "purple"], ".wav": ["audio", "purple"], ".flac": ["audio", "purple"], ".3ds": ["svg", "blue"], ".3dm": ["svg", "blue"], ".stl": ["svg", "blue"], ".obj": ["svg", "blue"], ".dae": ["svg", "blue"], ".bat": ["windows", "blue"], ".cmd": ["windows", "blue"], ".babelrc": ["babel", "yellow"], ".babelrc.js": ["babel", "yellow"], ".babelrc.cjs": ["babel", "yellow"], ".bowerrc": ["bower", "orange"], ".codeclimate.yml": ["code-climate", "green"], ".eslintrc": ["eslint", "purple"], ".eslintrc.js": ["eslint", "purple"], ".eslintrc.yaml": ["eslint", "purple"], ".eslintrc.yml": ["eslint", "purple"], ".eslintrc.json": ["eslint", "purple"], ".eslintignore": ["eslint", "grey"], ".firebaserc": ["firebase", "orange"], ".jshintrc": ["javascript", "blue"], ".jscsrc": ["javascript", "blue"], ".stylelintrc": ["stylelint", "white"], ".stylelintrc.json": ["stylelint", "white"], ".stylelintrc.yaml": ["stylelint", "white"], ".stylelintrc.yml": ["stylelint", "white"], ".stylelintrc.js": ["stylelint", "white"], ".stylelintignore": ["stylelint", "grey"], ".direnv": ["config", "grey-light"], ".env": ["config", "grey-light"], ".static": ["config", "grey-light"], ".editorconfig": ["config", "grey-light"], ".slugignore": ["config", "grey-light"], ".tmp": ["clock", "grey-light"], ".htaccess": ["config", "grey-light"], ".key": ["lock", "green"], ".cert": ["lock", "green"], ".DS_Store": ["ignored", "ignore"] }, partials: [["TODO", ["todo", "blue"]], ["Procfile", ["heroku", "purple"]], ["cmakelists.txt", ["makefile", "blue"]], ["CMakeLists.txt", ["makefile", "blue"]], ["CMAKELISTS.txt", ["makefile", "blue"]], ["CMAKELISTS.TXT", ["makefile", "blue"]], ["omakefile", ["makefile", "grey-light"]], ["OMakefile", ["makefile", "grey-light"]], ["OMAKEFILE", ["makefile", "grey-light"]], ["qmakefile", ["makefile", "purple"]], ["QMakefile", ["makefile", "purple"]], ["QMAKEFILE", ["makefile", "purple"]], ["makefile", ["makefile", "orange"]], ["Makefile", ["makefile", "orange"]], ["MAKEFILE", ["makefile", "orange"]], ["CONTRIBUTING", ["license", "red"]], ["COMPILING", ["license", "orange"]], ["COPYING", ["license", "yellow"]], ["LICENCE", ["license", "yellow"]], ["LICENSE", ["license", "yellow"]], ["gulpfile.js", ["gulp", "red"]], ["gulpfile", ["gulp", "red"]], ["Gulpfile", ["gulp", "red"]], ["GULPFILE", ["gulp", "red"]], ["docker-compose.override.yaml", ["docker", "pink"]], ["docker-compose.override.yml", ["docker", "pink"]], ["docker-compose.yaml", ["docker", "pink"]], ["docker-compose.yml", ["docker", "pink"]], ["docker-healthcheck", ["docker", "green"]], [".dockerignore", ["docker", "grey"]], ["DOCKERFILE", ["docker", "blue"]], ["Dockerfile", ["docker", "blue"]], ["dockerfile", ["docker", "blue"]], ["mix", ["hex", "red"]]], default: ["default", "white"] };
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
// ../../node_modules/seti-icons/lib/icons.json
|
|
26
|
+
var require_icons = __commonJS((exports, module) => {
|
|
27
|
+
module.exports = { bsl: '<svg viewBox="0 0 32 32"><path d="M16.8 19v3H27v-3H16.8zM7 10h3v12H7V10zm-2 1h2v3H5v-3z"/><path d="M14 16c0-1.7 1.3-3 3-3 1.3 0 2.4.8 2.8 2h3.1c-.5-2.8-2.9-5-5.9-5-3.3 0-6 2.7-6 6s2.7 6 6 6c2.2 0 4.2-1.2 5.2-3H17c-1.7 0-3-1.3-3-3z"/></svg>', mdo: '<svg viewBox="0 0 32 32"><path d="M18 17.7c-1 0-1.8-.8-1.8-1.8s.8-1.8 1.8-1.8c.7 0 1.4.4 1.7 1.1h1.5c-.4-1.5-1.7-2.5-3.2-2.5-1.8 0-3.3 1.5-3.3 3.3s1.5 3.3 3.3 3.3h4.7v-1.5H18zm-5.5-5H14v6.5h-1.5v-6.5zm-1.4 1.1h1.5v1.5h-1.5v-1.5z"/><path d="M22.9 9.1H9.4L6 16s3.4 6.8 3.4 6.9h13.5c1.7 0 3.1-1.4 3.1-3.1v-7.7c0-1.6-1.3-3-3.1-3zm1.6 10.8c0 .9-.7 1.5-1.5 1.5H10.6s-3.1-4.9-3.1-5.2l3.1-5.5H23c.9 0 1.5.7 1.5 1.5v7.7z"/></svg>', asm: '<svg viewBox="0 0 32 32"><path d="M5.998 19.625l2.623-7.28h1.37l2.623 7.28h-1.43l-.716-1.95H7.727l-.715 1.95H5.998zm2.027-2.86h2.086L9.098 13.84l-1.073 2.925zm4.947 2.795v-1.235c.953.325 1.728.52 2.384.52.536 0 .894-.13 1.132-.26.298-.195.417-.39.417-.715 0-.26-.06-.455-.238-.585-.179-.195-.477-.39-.954-.585l-.596-.26c-.775-.39-1.311-.78-1.669-1.105-.298-.325-.476-.715-.476-1.17 0-.585.238-1.105.774-1.43.537-.39 1.252-.585 2.146-.585.715 0 1.49.065 2.324.26v1.17c-.894-.26-1.609-.39-2.145-.39-.417 0-.715.065-.954.195-.238.195-.357.39-.357.585 0 .195.06.39.238.52.179.13.477.325.954.585l.596.26c.834.39 1.43.78 1.728 1.105.298.325.477.715.477 1.235 0 .65-.298 1.235-.894 1.56-.537.39-1.371.585-2.444.585-.655 0-1.49-.065-2.443-.26zm6.318.065V12.41h1.847l1.609 5.135 1.669-5.135h1.609v7.215h-1.311V14.1l-1.61 5.005h-1.132l-1.609-5.07v5.59h-1.073z"/></svg>', c: '<svg viewBox="0 0 32 32"><path d="M22.3 22.9q-1.07.572-2.22.863-1.14.292-2.39.292-3.73 0-5.91-2.16-2.18-2.17-2.18-5.89 0-3.72 2.18-5.89 2.18-2.18 5.91-2.18 1.24 0 2.39.292 1.16.291 2.22.863v3.22q-1.08-.76-2.12-1.11-1.03-.353-2.18-.353-2.07 0-3.24 1.37-1.18 1.37-1.18 3.79 0 2.4 1.18 3.78 1.18 1.37 3.24 1.37 1.14 0 2.18-.354 1.04-.354 2.12-1.11z" font-size="22" font-stretch="semi-condensed" font-weight="700" letter-spacing="0" word-spacing="0"/></svg>', "c-sharp": '<svg viewBox="0 0 32 32"><g><path d="M7.1 15.9c0-1.3.2-2.4.6-3.4.4-1 .9-1.8 1.6-2.5.7-.7 1.5-1.2 2.4-1.6s1.9-.5 2.9-.5 1.9.2 2.7.6c.8.4 1.5.9 2 1.4l-2.2 2.5c-.4-.3-.7-.6-1.1-.7-.4-.1-.8-.3-1.4-.3-.5 0-.9.1-1.3.3-.4.2-.8.5-1.1.9s-.5.8-.7 1.4c-.2.6-.3 1.2-.3 1.9 0 1.5.3 2.6 1 3.3.7.8 1.5 1.2 2.6 1.2.5 0 1-.1 1.4-.3.4-.2.8-.5 1.1-.9l2.2 2.5c-.7.8-1.4 1.3-2.2 1.7-.8.4-1.7.6-2.7.6s-2-.2-2.9-.5-1.7-.8-2.4-1.5-1.1-1.7-1.5-2.7c-.5-.9-.7-2.1-.7-3.4z"/><path d="M21.8 17.1h-1l-.4 2.4h-1.2l.4-2.4h-1.2V16h1.5l.2-1.6h-1.3v-1.1h1.5l.4-2.4h1.2l-.4 2.4h1l.4-2.4h1.2l-.4 2.4H25v1.1h-1.6l-.2 1.6h1.3v1.1h-1.6l-.4 2.4h-1.2c0 .1.5-2.4.5-2.4zm-.8-1h1l.2-1.6h-1l-.2 1.6z"/></g></svg>', html: '<svg viewBox="0 0 32 32"><path d="M8 15l6-5.6V12l-4.5 4 4.5 4v2.6L8 17v-2zm16 2.1l-6 5.6V20l4.6-4-4.6-4V9.3l6 5.6v2.2z"/></svg>', cpp: '<svg viewBox="0 0 32 32"><path d="M8.3 15.5c0-1.3.2-2.4.6-3.4.4-1 .9-1.8 1.6-2.5.7-.7 1.5-1.2 2.4-1.6s1.9-.5 2.9-.5 1.9.2 2.7.6c.8.4 1.5.9 2 1.4L18.3 12c-.4-.3-.7-.6-1.1-.7s-.8-.3-1.4-.3c-.5 0-.9.1-1.3.3-.4.2-.8.5-1.1.9s-.5.8-.7 1.4c-.2.6-.3 1.2-.3 1.9 0 1.5.3 2.6 1 3.3.7.8 1.5 1.2 2.6 1.2.5 0 1-.1 1.4-.3.4-.2.8-.5 1.1-.9l2.2 2.5c-.7.8-1.4 1.3-2.2 1.7-.8.4-1.7.6-2.7.6s-2-.2-2.9-.5-1.7-.8-2.4-1.5-1.1-1.7-1.5-2.7c-.5-1-.7-2.1-.7-3.4z"/><path d="M18.2 12.9h-1.4v1.7h-1.6V16h1.6v1.8h1.4V16h1.6v-1.4h-1.6v-1.7zm6 1.6v-2h-1.7v2h-1.9v1.7h1.9v2.1h1.7v-2.1h1.9v-1.7h-1.9z"/></svg>', clojure: '<svg id="svg2" viewBox="0 0 32 32"><style>.st0{fill:#231f20}</style><path id="path10" d="M15.7 16.4l-.3.6c-.4.8-.8 1.8-.9 2.5-.1.2-.1.5-.1.8v.4c.5.2 1.1.3 1.6.3s1-.1 1.5-.2l-.3-.3c-.5-.9-.9-2.1-1.5-4.1" class="st0"/><path id="path12" d="M13.4 12.3c-1.2.9-2 2.3-2 3.9s.8 3 2 3.9c.3-1.2 1-2.3 2.1-4.6-.1-.2-.1-.4-.2-.6-.3-.8-.7-1.6-1.1-2.1-.3-.1-.6-.3-.8-.5" class="st0"/><path id="path14" d="M20.3 21.7c-.6-.1-1.2-.2-1.6-.3-.8.4-1.6.6-2.5.6-3.2 0-5.7-2.6-5.7-5.7 0-1.7.8-3.2 1.9-4.3-.3-.1-.7-.1-1-.1-1.7 0-3.4.9-4.2 3.5-.1.4-.1.6-.1 1 0 5 4 9 9 9 3 0 5.7-1.5 7.4-3.8-.9.2-1.7.3-2.5.3-.3-.2-.5-.2-.7-.2" class="st0"/><path id="path18" d="M16.1 7.2c-3 0-5.7 1.5-7.3 3.8.8-.5 1.7-.7 2.5-.7 1 0 1.9.3 2.3.5.1.1.2.1.3.2.7-.3 1.5-.5 2.3-.5 3.2 0 5.7 2.6 5.7 5.7 0 1.6-.7 3-1.7 4.1h.8c1 0 2.1-.2 2.9-.9.5-.4 1-1.1 1.2-2.1 0-.4.1-.8.1-1.1-.1-5-4.1-9-9.1-9" class="st0"/></svg>', coldfusion: '<svg viewBox="0 0 32 32"><path d="M10.8 14.5c-.4 0-.9-.1-1.3 0-1.6.2-3.2.3-4.2 1.7C3.9 18 3.6 20 4.6 22s2.7 2.9 4.9 3h4c2.5-.1 4.5-1.2 6-3.2.8-1 1.4-2.1 1.8-3.3.3-.8.7-1.1 1.5-1.1.8.1 1.5 0 2.3 0 .3 0 .7 0 .7-.4.1-.8.3-1.6-.1-2.3-.3-.6-1-.2-1.5-.3h-.5c-.5 0-.7-.1-.5-.7.6-1.4 1.6-2.5 3.1-3 .5-.2 1.3 0 1.5-.6.3-.4.2-1.1.2-1.7v-.9c0-.3-.2-.5-.6-.5-1.9.2-3.7.7-4.9 2.2-1.3 1.7-2.2 3.6-3 5.6-.7 1.9-1.3 3.8-2.6 5.3-.6.7-1.4 1.2-2.3 1.4-1.9.3-3.8.2-5.7-.2-1-.2-1.5-.9-1.5-1.8 0-1 .6-1.7 1.7-2 1-.2 2-.1 3-.2.6 0 .8-.2.8-.8 0-2.5.2-2.1-2-2.1.1.1 0 .1-.1.1z"/></svg>', coffee: '<svg viewBox="0 0 32 32"><path d="M16.8 9.1c-.5.1-.8.3-2.3 1-.8.4-1.9.5-2.2.2-.3-.4.1-.6 1-.6.8 0 1-.1.7-.3-.6-.4-2-.1-2.3.4-.1.3-.1.4.1.7.5.5.9.7 2 .6.8 0 1.2-.1 2-.6 1.2-.6 2.5-.9 3.3-.8.8.1 1 .4.5.7-.4.3-1.4.4-1.8 0-.4-.2-.9-.2-.9.2 0 .5 1.5.9 2.8.6 1.5-.3 1.5-1.6 0-2.1-.6-.1-2.1-.2-2.9 0zm-8.5 1.3c-.3.2-.5.5-.5.6-.1.4.7 1 1.9 1.4 1.1.3 1.5.4 3.2.6 1.1.1 6.1.1 7.1 0 .4-.1 1-.1 1.2-.2.7-.1 2.6-.6 3-.9.6-.3.9-.8.7-1.1-.3-.6-1-1-.8-.4.2.8-2.1 1.6-5.1 1.8-1.1.1-4.4.1-5 0-.2 0-.9-.1-1.4-.1-1.7-.1-3.6-.8-3.7-1.3 0-.1 0-.4.1-.5.1-.3-.1-.3-.7.1zM8 13.1c0 .4.2 1 .3 1.5l.3.8-.4.3c-.2.2-.6.6-.8.9-.3.6-.4.8-.4 1.7 0 1.2.2 1.7 1.2 2.4.5.4.7.4 1.5.4 1.2 0 1.6-.3.7-.4-.7-.1-1.7-1-2-1.8-.3-.7-.2-1.8.1-2.3.1-.2.3-.4.3-.4l.4.6c.2.3.8 1.2 1.3 2 .6.8 1.1 1.7 1.2 2.1.6 1.6 1.7 2.1 4.7 2.1s4.2-.6 4.8-2.2c.1-.4.7-1.3 1.2-2s1.2-1.7 1.4-2.3c.5-1.1 1.2-3.3 1.2-3.8 0-.3 0-.3-.3 0-.5.5-2.2 1-4.4 1.2-1.8.2-7.5.1-8.9-.2-.2 0-.5-.1-.8-.1-.7-.1-2.2-.8-2.5-1-.1-.1-.2-.1-.1.5z"/></svg>', config: '<svg viewBox="0 0 32 32"><path d="M24.5 17.3c-.4-.1-.8-.3-1.1-.4 0-.7-.1-1.3-.1-2 0-.1.1-.1.1-.2.4-.2.7-.3 1.1-.5.4-.2.5-.6.4-1-.3-.7-.6-1.3-.9-2-.2-.4-.6-.6-1-.4-.4.2-.7.3-1.1.5-.1 0-.2 0-.2-.1-.2-.3-.5-.5-.7-.7-.2-.2-.5-.4-.7-.6.2-.4.3-.8.5-1.2.2-.5 0-.9-.5-1.1-.6-.1-1.3-.4-1.9-.6-.5-.2-.9 0-1.1.5-.1.4-.3.8-.4 1.1-.7 0-1.3.1-2 .1-.1 0-.1-.1-.2-.1-.2-.4-.3-.7-.5-1.1-.2-.4-.6-.5-1-.4-.7.3-1.3.6-2 .9-.4.2-.6.6-.4 1 .2.4.3.7.5 1.1 0 .1 0 .2-.1.2-.2.2-.4.3-.5.5-.3.3-.5.6-.8.9-.4-.1-.8-.3-1.1-.4-.5-.2-.9 0-1.1.5-.2.5-.5 1.2-.7 1.8-.2.6-.1.9.5 1.1.4.1.8.3 1.1.4 0 .7.1 1.3.1 2 0 .1-.1.1-.1.2-.4.2-.7.3-1.1.5-.4.2-.5.6-.4 1 .3.7.6 1.3.9 2 .2.4.6.6 1 .4.4-.2.7-.3 1.1-.5.1 0 .2 0 .2.1.2.3.5.5.7.7.2.2.5.4.7.6-.2.4-.3.8-.5 1.2-.2.5 0 .9.5 1.1.6.2 1.2.5 1.9.7.6.2.9.1 1.1-.5.1-.4.3-.8.4-1.1.7 0 1.3-.1 2-.1.1 0 .1.1.2.1.2.4.3.7.5 1.1.2.4.6.5 1 .4.7-.3 1.3-.6 2-.9.4-.2.6-.6.4-1-.2-.4-.3-.7-.5-1.1 0-.1 0-.2.1-.2.3-.2.5-.5.7-.7.2-.2.4-.5.6-.7.4.1.8.3 1.1.4.5.2.9 0 1.1-.5.2-.6.5-1.2.7-1.9.2-.5.1-.9-.5-1.1zm-7 2.1c-1.9.8-4 0-4.9-1.9-.8-1.9 0-4 1.9-4.9 1.9-.8 4 0 4.9 1.9.8 1.9 0 4-1.9 4.9z"/></svg>', crystal: '<svg viewBox="0 0 32 32"><path d="M16 3.851l-5.26 3.037-5.261 3.038v12.148l5.26 3.037L16 28.15l5.26-3.038 5.261-3.037V9.926l-5.26-3.038z"/><path d="M13.244 20.697l-2.748-4.76-2.749-4.76h10.994l-2.749 4.76z"/></svg>', crystal_embedded: '<svg viewBox="0 0 32 32"><path d="M16 3.851l-5.26 3.037-5.261 3.038v12.148l5.26 3.037L16 28.15l5.26-3.038 5.261-3.037V9.926l-5.26-3.038z"/><path d="M14.077 21.025l-5.646-4.758 5.646-4.75 1.307 1.324-4.155 3.41 4.155 3.45zm3.846-9.508l5.646 4.75-5.646 4.757-1.298-1.323 4.146-3.418-4.146-3.443z"/></svg>', json: '<svg viewBox="0 0 32 32"><path d="M7.5 15.1c1.5 0 1.7-.8 1.7-1.5 0-.6-.1-1.1-.1-1.7S9 10.7 9 10.2c0-2.1 1.3-3 3.4-3h.8v1.9h-.4c-1 0-1.3.6-1.3 1.6 0 .4.1.8.1 1.3 0 .4.1.9.1 1.5 0 1.7-.7 2.3-1.9 2.6 1.2.3 1.9.9 1.9 2.6 0 .6-.1 1.1-.1 1.5 0 .4-.1.9-.1 1.2 0 1 .3 1.6 1.3 1.6h.4v1.9h-.8c-2 0-3.3-.8-3.3-3 0-.6 0-1.1.1-1.7.1-.6.1-1.2.1-1.7 0-.6-.2-1.5-1.7-1.5l-.1-1.9zm17 1.7c-1.5 0-1.7.9-1.7 1.5s.1 1.1.1 1.7c.1.6.1 1.2.1 1.7 0 2.2-1.4 3-3.4 3h-.8V23h.4c1 0 1.3-.6 1.3-1.6 0-.4 0-.8-.1-1.2 0-.5-.1-1-.1-1.5 0-1.7.7-2.3 1.9-2.6-1.2-.3-1.9-.9-1.9-2.6 0-.6.1-1.1.1-1.5.1-.5.1-.9.1-1.3 0-1-.4-1.5-1.3-1.6h-.4V7.2h.8c2.1 0 3.4.9 3.4 3 0 .6-.1 1.1-.1 1.7-.1.6-.1 1.2-.1 1.7 0 .7.2 1.5 1.7 1.5v1.7z"/></svg>', css: '<svg viewBox="0 0 32 32"><path d="M10.3 23.3l.8-4H8.6v-2.1h3l.5-2.5H9.5v-2.1h3.1l.8-3.9h2.8l-.8 3.9h2.8l.8-3.9h2.8l-.8 3.9h2.5v2.1h-2.9l-.6 2.5h2.6v2.1h-3l-.8 4H16l.8-4H14l-.8 4h-2.9zm6.9-6.1l.5-2.5h-2.8l-.5 2.5h2.8z"/></svg>', csv: '<svg viewBox="0 0 32 32"><path d="M7 7.1v17.8h18V7.1H7zm2.9 3.7H15v1.3H9.9v-1.3zm7 0H22v1.3h-5.1v-1.3zm-7 3H15v1.3H9.9v-1.3zm7 0H22v1.3h-5.1v-1.3zm-7 3H15v1.3H9.9v-1.3zm7 0H22v1.3h-5.1v-1.3zm-7 3H15v1.3H9.9v-1.3zm7 0H22v1.3h-5.1v-1.3z"/></svg>', xls: '<svg viewBox="0 0 32 32"><path d="M26 9.3v13.6c0 .1-.1.2-.1.3-.2.3-.5.5-.8.5h-7.7v2c-.3-.1-.7-.1-1-.2-.7-.1-1.5-.3-2.2-.4-.8-.1-1.6-.3-2.4-.4-.8-.1-1.6-.3-2.4-.4-.7-.1-1.5-.3-2.2-.4-.4-.1-.7-.1-1.1-.2V9c.1 0 .3-.1.4-.1.7-.5 1.5-.7 2.3-.8.7-.1 1.4-.3 2-.4.6-.1 1.3-.2 1.9-.4.7-.1 1.5-.3 2.2-.4.8-.1 1.5-.3 2.3-.4h.1v1.9h7.8c.4 0 .8.3.9.7v.2zm-.8-.1h-7.9v1.2H20v1.7h-2.7v.6H20v1.7h-2.7v.6H20v1.7h-2.7v.7h2.8v1.7h-2.8v.6H20v1.7h-2.7v1.2h7.9V9.2zM14.7 20.7s0-.1-.1-.1c-.7-1.4-1.5-2.8-2.2-4.2v-.2c.7-1.4 1.4-2.7 2.2-4.1V12h-.1c-.2 0-.5 0-.7.1-.3 0-.6 0-1 .1-.1 0-.1 0-.1.1-.3.6-.5 1.1-.8 1.7-.2.5-.4.9-.6 1.4-.1-.2-.1-.5-.2-.7-.3-.7-.6-1.5-.9-2.2-.1-.2-.1-.2-.3-.2-.4 0-.8.1-1.2.1h-.4v.1c.1.2.2.5.3.7l1.5 3v.1c-.6 1.2-1.3 2.4-1.9 3.6 0 .1-.1.1-.1.2h.6c.4 0 .7.1 1.1.1.1 0 .1 0 .1-.1.3-.6.6-1.2.9-1.9.1-.3.3-.6.4-.9 0-.1 0-.2.1-.3v.1c.1.2.1.4.2.5.4.8.7 1.6 1.1 2.5.1.1.1.2.3.2.5 0 1 .1 1.5.1.1.3.2.3.3.3z"/><path d="M23.9 10.4v1.7h-3.1v-1.7h3.1zm-3.1 11.2v-1.7h3.1v1.7h-3.1zm0-4.7v-1.7h3.1v1.7h-3.1zm3.1-4.1v1.7h-3.1v-1.7h3.1zm0 4.8v1.7h-3.1v-1.7h3.1z"/></svg>', cake: '<svg id="Layer_1" viewBox="0 0 32 32"><style></style><path d="M21.1 17c.5 1.7 1.7 6.3 1.7 6.3l4.1-.5v-6.5l-5.8.7zm-7 .7l-7.4.8v6.8l8.7-1.1zm6.2-6.6c-.2.4-.4.8-.7 1.1.2.7.4 1.3.6 2l6.6-.8s-1.6-2.7-3.8-4.1c-.8-.5-1.7-.9-2.4-1.1.2.7.2 1.7-.3 2.9zm-7.2 3.2c-1.2-.1-2.1-.6-2.8-1.4l-3.6 2.8 6.6-.8c-.1-.2-.1-.4-.2-.6zm4.7-2c-.1-.3-.1-.5.1-.7.2-.3.4-.6.6-1 .4-.9.5-1.9-.1-2.8-.6-1-1.5-1.3-2.6-1.1-.3 0-.4.3-.2.6l.9 1.8c0 .1.1.2-.1.2-.6.4-1.2.8-1.7 1.1-.1.1-.2.1-.3 0-.4-.4-.7-.8-1-1.2-.2-.2-.5-.4-.5-.4s-.3-.1-.4.1c-.5.8-.8 2.2-.2 3.1.5.8 1.2 1.2 2.1 1.2.2 0 .4 0 .5.3.2.9 2.3 9.6 2.5 10.9.1.6.5 1.1 1 1 .7-.1 1.5-.1 2.1-.7.4-.4.5-.8.4-1.3-.3-.6-2.7-9.7-3.1-11.1z"/></svg>', cake_php: '<svg viewBox="0 0 32 32"><path d="M16 14.5v3.1h-1.2c-1.7-.1-3.3-.2-4.9-.7-.8-.2-1.5-.5-2.2-.8-.4-.1-.7-.3-1-.5-.5-.4-.7-.8-.7-1.4v-2.6c0-.4.2-.8.5-1.1.5-.5 1.2-.8 1.9-1 1.4-.5 2.9-.8 4.3-.9 1.4-.1 2.7-.2 4.1-.2 2.3 0 4.5.3 6.7 1 .6.2 1.2.6 1.8.9.5.3.8.8.8 1.5v2.5c0 .6-.2 1.1-.7 1.4-.4.3-.9.5-1.3.7-.1.1-.3 0-.4 0-2.4-.6-4.8-1.2-7.3-1.8-.2-.1-.3-.1-.4-.1zm0 9.2h-2c-1.7-.1-3.4-.3-5-.8-.7-.2-1.4-.6-2.1-.9-.6-.4-.9-1-.9-1.7V18c.9 1.2 2.2 1.6 3.5 2 2 .5 4 .7 6.1.7.3 0 .4.1.4.4v2.6zm10-5.8v2.8c0 .4-.2.7-.6 1-.5.3-1 .6-1.5.8-.1.1-.3 0-.5 0l-6-1.5-1.2-.3c-.1 0-.2-.2-.2-.2v-2.8c.7.2 1.3.3 2 .5 1.9.5 3.7.9 5.6 1.4h.4c.8-.5 1.5-.8 2-1.7z"/></svg>', d: '<svg viewBox="0 0 32 32"><path d="M23.5 15.8c0 2.6-.8 4.7-2.5 6.1-1.7 1.4-4.1 2.1-7.4 2.1H8.5V8h5.7c3 0 5.3.7 6.9 2.1 1.6 1.3 2.4 3.3 2.4 5.7zm-4 .1c0-3.4-1.7-5.2-5.2-5.2h-2v10.5H14c3.7 0 5.5-1.7 5.5-5.3z"/></svg>', word: '<svg viewBox="0 0 32 32"><path d="M26 11.4V8.8c0-.4-.3-.8-.8-.8h-7.3V6.2h-1.4c-.2 0-.3.1-.5.1-.7.1-1.4.3-2.1.4-.7.1-1.4.2-2 .4-.7.1-1.4.2-2.2.4-.8.1-1.5.2-2.2.3-.5.1-1 .2-1.4.2H6v15.9c.8.1 1.6.3 2.4.4.8.1 1.7.3 2.5.4.8.1 1.6.3 2.4.4.8.1 1.7.3 2.5.5.3.1.7.1 1 .1h.9V24c0-.1 0-.1.1-.1h7.3c.1 0 .3 0 .4-.1.2 0 .3-.1.3-.3 0-.2.1-.3.1-.5V11.4c.1.1.1.1.1 0zm-11 1.5l-.9 3.9c-.2.7-.3 1.4-.5 2.2 0 .1-.1.1-.1.1-.2.1-.4 0-.6 0h-.6c-.1 0-.1 0-.1-.1-.1-.6-.3-1.3-.4-1.9-.2-.8-.3-1.6-.5-2.4 0 .2-.1.4-.1.6l-.6 3c0 .2-.1.5-.1.7 0 .1 0 .1-.1.1-.4 0-.8-.1-1.2-.1-.1 0-.1 0-.1-.1-.3-1.6-.6-3.2-1-4.9-.1-.3-.1-.7-.2-1v-.1h1.2c.2 1.4.5 2.8.7 4.3 0-.2.1-.4.1-.6.3-1.2.5-2.5.8-3.7 0-.1 0-.1.1-.1h1c.2 0 .2 0 .3.2.3 1.4.6 2.8.9 4.3v.1c.1-.8.3-1.6.4-2.4.1-.7.3-1.5.4-2.2 0 0 0-.1.1-.1.4 0 .8 0 1.3-.1h.1c-.2 0-.3.2-.3.3zm10.3-4.1s0 .1 0 0v14.5h-7.5v-1.8h5.9v-.9H18c-.1 0-.1 0-.1-.1v-.9c0-.1 0-.1.1-.1h5.8v-.9h-5.9v-1.1h5.8c.1 0 .1 0 .1-.1v-.7c0-.1 0-.1-.1-.1H18c-.1 0-.1 0-.1-.1v-1h5.9v-.9h-5.7c-.1 0-.1 0-.1-.1v-.9c0-.1 0-.1.1-.1h5.7v-.9h-5.9v-1.2h5.8c.1 0 .1 0 .1-.1v-.7c0-.1 0-.1-.1-.1h-5.9V9c0-.1 0-.1.1-.1h7.3c.1-.2.1-.2.1-.1z"/></svg>', ejs: '<svg viewBox="0 0 32 32"><path d="M7.5 14.9L13.9 9v2.8L9.1 16l4.8 4.2V23l-6.4-5.9v-2.2zm17 2.3l-6.4 5.9v-2.8l4.9-4.2V16l-4.9-4.2V8.9l6.4 5.9v2.4z"/></svg>', elixir: '<svg viewBox="0 0 32 32"><path d="M17.314 10.006c1.644 3.531 5.925 5.006 5.538 9.601-.456 5.412-4.305 6.772-6.433 6.868-2.128.097-6.191-.653-7.304-5.755-1.249-5.731 4.208-14.534 7.352-15.792-.121 1.427.184 3.656.847 5.078zm-2.799 14.61c1.439.299 2.542.507 2.673-.072.197-.873-3.159-1.365-5.402-1.608.673.71 2.032 1.535 2.729 1.68z"/></svg>', elixir_script: '<svg viewBox="0 0 32 32"><path d="M19.182 12.632c1.828 1.993 3.947 3.683 3.67 6.975-.456 5.412-4.305 6.772-6.433 6.868-2.128.097-6.191-.653-7.304-5.755-1.249-5.731 4.208-14.534 7.352-15.792-.116 1.373.162 3.491.774 4.916a7.65 7.65 0 00-.663-.028c-1.339 0-2.428.364-3.27 1.094-.841.729-1.261 1.666-1.261 2.812 0 .656.161 1.18.484 1.57.323.391.984.795 1.984 1.211l.93.391c.359.151.63.345.813.582.182.237.273.517.273.84 0 .521-.198.934-.594 1.238-.396.305-.94.457-1.633.457-.557 0-1.112-.11-1.664-.332a5.906 5.906 0 01-1.586-.965l-.46 2.383a10.82 10.82 0 001.863.617 7.869 7.869 0 001.754.203c1.427 0 2.56-.356 3.398-1.07.839-.713 1.258-1.669 1.258-2.867 0-.693-.176-1.277-.527-1.754-.352-.476-.908-.884-1.668-1.223l-.907-.398-.054-.023c-.959-.433-1.438-.868-1.438-1.305 0-.458.193-.835.578-1.129.386-.294.886-.441 1.5-.441.578 0 1.105.082 1.578.246.474.164.888.407 1.243.73l.01-.051zm-4.667 11.984c1.439.299 2.542.507 2.673-.072.197-.873-3.159-1.365-5.402-1.608.673.71 2.032 1.535 2.729 1.68z"/></svg>', hex: '<svg viewBox="0 0 32 32"><path d="M20.994 24.65h-9.988L6.012 16l4.994-8.65h9.988L25.988 16l-4.994 8.65zm-2.467-4.272L21.055 16l-2.528-4.378h-5.054L10.945 16l2.528 4.378h5.054z"/></svg>', elm: '<svg preserveAspectRatio="xMidYMid" viewBox="0 0 32 32"><rect width="100%" height="100%"/><g class="currentLayer"><path d="M16 16.533l-9.181 9.181H25.18z"/><path d="M21.641 21.108l4.073 4.073v-8.146z"/><path d="M15.467 16L6.286 6.819V25.18z"/><path d="M25.714 14.923V6.286h-8.637z"/><path d="M21.13 11.403l4.575 4.576-4.597 4.596L16.533 16zM6.819 6.286l4.229 4.229h9.193l-4.23-4.23z"/><path d="M16 15.467l4.199-4.198H11.8z"/></g></svg>', favicon: '<svg viewBox="0 0 32 32"><path d="M16 5.5l3.1 6.3 6.9 1-5 4.8 1.2 6.9-6.2-3.2-6.2 3.2 1.2-6.9-5-4.8 6.9-1z"/></svg>', "f-sharp": '<svg id="Layer_1" viewBox="0 0 32 32"><style>.st0{fill:#231f20}</style><path d="M7 15l8.5-8.5v4.3L11.3 15l4.3 4.3v4.3L7 15z" class="st0"/><path d="M12.5 15l3.1-3.1V18l-3.1-3zM25 15l-8.8-8.5v4.3l4.3 4.3-4.3 4.3v4.3L25 15z" class="st0"/></svg>', git: '<svg viewBox="0 0 32 32"><path d="M7 16.2v-.3c.1-.5.4-.7.7-1.1l4.8-4.8.2-.2s.1 0 .1.1l1.8 1.8c.1.1.1.2 0 .3-.1.6.1 1.2.6 1.5.2.1.2.2.2.4v4.4c0 .2-.1.3-.2.4-.5.3-.8.9-.6 1.5.2.6.7 1 1.3 1 .6 0 1.1-.4 1.3-.9.2-.6 0-1.2-.5-1.6-.2-.1-.2-.2-.2-.4v-4.5h.1l1.6 1.6c.1.1.1.2.1.2v.6c.1.8.8 1.3 1.6 1.2.8-.1 1.4-.9 1.2-1.7-.1-.7-.9-1.2-1.6-1.1-.1 0-.2 0-.4-.1l-1.7-1.7c-.1-.1-.1-.2-.1-.3.2-.9-.7-1.8-1.6-1.6-.1 0-.3 0-.3-.1-.6-.6-1.2-1.2-1.8-1.7-.1-.1-.1-.2 0-.3.5-.4.9-.9 1.3-1.3.6-.6 1.2-.6 1.8 0l7.6 7.6c.6.6.6 1.2 0 1.8L17 24.2c-.3.3-.6.7-1.1.8h-.2c-.2-.1-.5-.2-.7-.4-.6-.6-1.3-1.2-1.9-1.9l-5.5-5.5c-.1-.3-.5-.6-.6-1z"/></svg>', go2: '<svg viewBox="0 0 32 32"><path d="M11.3 25c.5-.1.8.4 1.3.4-.2.5-1.3.7-1.6.3-.2-.3.1-.5.3-.7zm8.1.5c.4-.2.8-.6 1.3-.6.2.2.5.4.4.7-.1.3-.4.3-.7.3-.4 0-.8 0-1-.4zM9.3 17.9c.6.3.5.8.5 1.3 0 .3-.3.4-.6.4-.6-.6-.5-1.1.1-1.7zm13.5 1.7c-.3 0-.6-.1-.6-.4 0-.5-.1-1 .5-1.3.6.6.7 1.1.1 1.7z"/><path d="M23.6 8.5c-.3-.4-.7-.5-1.2-.3-.5.1-.8 0-1.2-.3-2.8-2.4-7.3-2.5-10.2-.2-.5.4-1 .6-1.7.5-.7-.2-1.3.5-1.1 1.1.1.4.5.6.8.8.2.1.4.3.4.6-.1 2.5.3 5-.1 7.5.2.5.4 1-.1 1.5 0 .5.1 1.1.1 1.6.2 1.3.6 2.4 1.6 3.3.2.1.4.3.4.5.4.1.8.6 1.3.4 2.2.5 4.5.6 6.7 0 .5 0 .9-.3 1.3-.6 1.6-1.4 2-3.3 2.1-5.3-.5-.5-.3-1-.1-1.5 0-1.2-.2-2.3-.2-3.5.1-1.1.3-2.2.1-3.4-.1-.6.1-1 .6-1.4.8-.3.9-.8.5-1.3zM12.9 14c-1 .1-2-1-2-2.1 0-1.4 1-2.5 2.3-2.5 1.3 0 2 .8 2 2.1.1 1.6-1.1 2.4-2.3 2.5zm6.2 0c-1.1-.1-2.4-.8-2.3-2.5 0-1.3.8-2.1 2-2.1s2.3 1.1 2.3 2.5c0 1-1 2.1-2 2.1z"/><g><path d="M16.8 14.1c.1 0 .2.1.3.1.2.2.6.4.5.8-.1.4-.5.5-.9.6-.5.1-1 0-1.4 0-.4-.1-.8-.2-.8-.8 0-.4.3-.6.8-.7.3.7 1.1.6 1.5 0z"/><path d="M16.8 14.1c.1.6-.3.7-.7.7-.5 0-1 0-.9-.7.5-.5 1.1-.5 1.6 0z"/></g></svg>', go: '<svg viewBox="0 0 32 32"><path d="M18.3 10c-1.1 0-1.9-.6-2.1-1.6-.1-.6.1-1.1.5-1.5.6-.7 1.6-.9 2.5-.6.8.3 1.3 1 1.2 1.9 0 .8-.5 1.4-1.4 1.7-.3.1-.5.1-.7.1zm-1.7-1.8c0 .4.3.7.6.7s.6-.3.6-.7c0-.4-.3-.7-.6-.7-.3.1-.6.4-.6.7zm-3.5-1.8C15 6.4 15.5 8 15 9.1c-.3.7-.9 1-1.7 1.1-1 .2-1.9-.4-2.2-1.3-.4-1.1.3-2.2 1.5-2.5h.5zm-.4 2c0-.4-.3-.7-.6-.7s-.6.3-.6.7c0 .4.3.7.6.7s.6-.3.6-.7zm3.2 1c.2 0 .4 0 .6.1.3.1.4.4.3.6 0 .1 0 .1.1.2.2.1.3.2.5.4s.2.4.1.6c-.1.2-.4.3-.6.2-.1 0-.3-.1-.4-.2-.3-.1-.6-.1-.9 0-.2.1-.4.2-.6.2-.4 0-.6-.2-.5-.6 0-.3.2-.5.4-.6 0 0 .1 0 .1-.1-.1-.4.2-.5.4-.7.1-.1.3-.1.5-.1zm-.1 1.1c.3 0 .6-.1.8-.2.3-.2.3-.4.1-.6-.1-.1-.3-.2-.4-.2-.3-.1-.7 0-.9.2-.3.3-.2.6.2.7-.1.1 0 .1.2.1z"/><path d="M16.7 12.1v.2c0 .2-.1.4-.3.4-.2 0-.4-.2-.4-.3-.1-.3 0-.6 0-1 0-.1 0-.1.1-.1.2 0 .4.1.5.2.1 0 .1.1.1.1v.5zm-.9-.2v.3c0 .2-.1.3-.2.4-.2.2-.4.1-.5-.1-.1-.2-.1-.5-.1-.8 0-.1 0-.1.1-.1.2-.1.4-.1.6-.2.1 0 .1 0 .1.1v.4z"/><g><path d="M10.5 27h-.2c-.1-.1-.3-.2-.4-.4-.2-.2-.2-.5.1-.8.2-.3.6-.5.9-.7-.8-.7-1.2-1.5-1.4-2.5-.2-.7-.2-1.5-.2-2.3 0-1.2.2-2.3.2-3.5-.3.2-.6.4-1 .5h-.2c-.2-.2-.3-.4-.3-.6 0-.2.2-.4.3-.5.3-.2.6-.3 1-.3.2 0 .2-.1.2-.2-.1-1-.2-2-.2-3-.1-1-.1-2.1.1-3.1.1-.5.1-.5-.3-.6-.5-.3-.8-.9-.7-1.4.2-1.1 1.4-1.6 2.4-1.1.1.1.2.1.3 0 .5-.4 1-.7 1.6-.9 1.7-.6 3.5-.7 5.2-.4.9.1 1.8.4 2.5 1 .2.2.4.2.6.1.8-.4 1.7-.1 2.1.7.4.8.1 1.5-.8 1.9-.1.1-.1.1-.1.2.3 1 .4 2 .4 3.1 0 1.2 0 2.3.1 3.5 0 .2 0 .2.2.3.4 0 .7.2 1 .5.2.2.2.3 0 .6v.1c0 .2-.2.3-.4.3s-.4-.1-.5-.2c-.1 0-.2-.1-.3-.1v.1c0 .6.1 1.2.1 1.9 0 1.1 0 2.1-.2 3.2-.2 1-.6 2-1.3 2.8-.1.1-.1.2 0 .3.3.2.6.5.8.9.1.3 0 .5-.3.7-.2.2-.4.1-.6 0l-.4-.4c-.2-.2-.3-.4-.5-.5-.1-.1-.2-.1-.3 0-1.1.6-2.3.8-3.5.8-1.4.1-2.9-.1-4.2-.7h-.1c-.2.2-.6.3-.8.5-.3-.2-.6 0-.9.2zm7.8-17c.2 0 .5 0 .7-.1.8-.3 1.3-.9 1.4-1.7 0-.9-.5-1.6-1.2-1.9-.8-.3-1.9 0-2.5.6-.4.4-.6.9-.5 1.5.2 1 1 1.6 2.1 1.6zm-5.2-3.6h-.5c-1.2.2-1.9 1.3-1.5 2.5.3.9 1.2 1.4 2.2 1.3.7-.1 1.3-.4 1.7-1.1.5-1.1 0-2.7-1.9-2.7zm2.8 3c-.2 0-.4 0-.6.1-.3.2-.5.3-.4.7 0 .1-.1.1-.1.1-.2.1-.4.3-.4.6-.1.4.2.6.5.6.2 0 .4-.1.6-.2.3-.1.6-.1.9 0 .1.1.3.1.4.2.3.1.5 0 .6-.2.1-.2.1-.4-.1-.6-.1-.2-.3-.3-.5-.4-.1 0-.1-.1-.1-.2.1-.3 0-.5-.3-.6-.1-.1-.3-.1-.5-.1zm.8 2.7v-.5c0-.1 0-.1-.1-.1-.2-.1-.4-.1-.5-.2-.1 0-.1 0-.1.1 0 .3-.1.6 0 1 0 .2.2.4.4.3.2 0 .3-.2.3-.4v-.2zm-.9-.2v-.4c0-.1 0-.1-.1-.1-.2.1-.4.1-.6.2-.1 0-.1.1-.1.1 0 .3 0 .5.1.8.1.2.3.3.5.1.1-.1.2-.2.2-.4-.1-.1 0-.2 0-.3z"/><path d="M16.6 8.2c0-.4.3-.7.6-.7s.6.3.6.7c0 .4-.3.7-.6.7s-.6-.3-.6-.7zm1.1.2c0-.1 0-.2-.1-.2s-.1.1-.1.2 0 .2.1.2c0 0 0-.1.1-.2zm-5 0c0 .4-.3.7-.6.7s-.6-.3-.6-.7c0-.4.3-.7.6-.7s.6.3.6.7zm-.3.3c.1 0 .1-.1.1-.1 0-.1 0-.2-.1-.2s-.1.1-.1.1c-.1.1 0 .2.1.2zm3.4 1.8c-.1 0-.3 0-.4-.1-.4-.1-.4-.4-.2-.7.3-.2.6-.3.9-.2.2 0 .3.1.4.2.2.2.2.5-.1.6-.1.1-.3.2-.6.2z"/></g><path d="M17.7 8.4c0 .1 0 .2-.1.2s-.1-.1-.1-.2 0-.2.1-.2c0 0 0 .1.1.2zm-5.3.3c-.1 0-.1-.1-.1-.2s0-.2.1-.1c.1 0 .1.1.1.2s0 .1-.1.1z"/></svg>', gradle: '<svg viewBox="0 0 32 32"><path d="M14.2 9.5h5.7l2.9 4.9H26c-.7-4.8-4.9-8.5-9.9-8.5-1.3 0-2.5.2-3.6.7l1.7 2.9"/><path d="M22.9 17.4l-3 5.2h-7.6L8.5 16l3-5.2-1.6-2.7C7.5 9.9 6 12.8 6 16c0 5.6 4.5 10.1 10.1 10.1 5.1 0 9.3-3.7 9.9-8.6l-3.1-.1"/><path d="M19.6 16c0 2-1.6 3.6-3.6 3.6S12.4 18 12.4 16s1.6-3.6 3.6-3.6 3.6 1.6 3.6 3.6"/></svg>', grails: '<svg viewBox="0 0 32 32"><path d="M15.5 22.8h-.3c-.1-.1-.3-.1-.4-.1-.3-.1-.7-.2-1-.3-.3-.2-.4-.4-.2-.7.2-.3.3-.6.4-.9.5-1.1.9-2.2.7-3.5-.1-1-.6-1.8-1.6-2.2-.8-.3-1.6-.7-2.2-1.3-1.4-1.3-2.4-2.7-2.3-4.7h14.8c0 1-.2 1.9-.7 2.7-.9 1.6-2.2 2.6-3.8 3.3-1 .5-1.6 1.3-1.7 2.4-.1 1.4.5 2.7 1.1 3.9.3.6.2.7-.4 1-.2.1-.3.1-.5.2-.3.1-.7.1-1 .2H16c-.1-.1-.3-.1-.5 0zM28 13.9c-.2.2-.2.5-.3.7-.5 1.1-1.3 1.9-2.4 2.2-.8.2-1 .8-1 1.5-.1.8.2 1.5.5 2.2.3.6.2.8-.5.9-.7.1-1.3.1-2-.1-.3-.1-.4-.3-.2-.6.4-.7.7-1.4.6-2.3-.1-1-.3-1.3-1-1.4-.2 0-.4-.1-.5-.3.1 0 .1-.1.2-.1 1.6-.6 2.7-1.7 3.5-3.1.1-.2.3-.2.5-.2H28v.6zm-24-.7h2.5c.2 0 .3 0 .4.2.9 1.5 2.2 2.5 3.8 3.2-.1.1-.2.1-.3.2-.8.3-1.1.8-1.1 1.7 0 .6.2 1.2.5 1.8.1.2.2.4.3.5.1.2.1.4-.1.4-.9.4-1.8.4-2.7 0-.3 0-.3-.2-.2-.5.4-.8.8-1.6.7-2.5-.1-.8-.3-1-1-1.2-1.3-.4-2.1-1.4-2.6-2.6-.1-.1 0-.3-.2-.3v-.9z"/></svg>', graphql: '<svg viewBox="0 0 32 32"><path d="M24.8 18.8c-.2-.1-.3-.2-.5-.2v-5.2c.2 0 .4-.1.5-.2.9-.5 1.3-1.7.7-2.7-.5-.9-1.7-1.3-2.7-.7-.2.1-.3.2-.4.4l-4.5-2.6c0-.3.1-.4.1-.6 0-1.1-.9-2-2-2s-2 .9-2 2c0 .2 0 .4.1.6l-4.5 2.6c-.1-.2-.3-.3-.4-.4-1-.6-2.2-.2-2.7.7-.5.9-.2 2.1.7 2.7.2.1.3.2.5.2v5.2c-.2 0-.4.1-.5.2-.9.5-1.3 1.7-.7 2.7.5.9 1.7 1.3 2.7.7.2-.1.3-.2.4-.4l4.5 2.6c0 .3-.1.4-.1.6 0 1.1.9 2 2 2s2-.9 2-2c0-.2 0-.4-.1-.6l4.5-2.6c.1.2.3.3.5.4.9.5 2.1.2 2.7-.7.5-.9.1-2.1-.8-2.7zm-14.7 1.3c0-.2-.1-.4-.2-.5-.1-.2-.2-.3-.3-.4l5.9-10.3c.2 0 .4.1.5.1.2 0 .4 0 .5-.1l5.9 10.3c-.1.1-.3.3-.3.4-.1.2-.2.3-.2.5H10.1zm11.8-9.2c-.1.5-.1 1 .2 1.5.3.5.7.8 1.2.9v5.2h-.1L17.4 8.4l.1-.1 4.4 2.6zm-7.3-2.6s0 .1 0 0L8.7 18.6h-.1v-5.2c.5-.1.9-.4 1.2-.9.3-.5.3-1 .2-1.5l4.6-2.7zm2.8 15.4c-.4-.4-.9-.6-1.4-.6-.6 0-1.1.2-1.4.6l-4.5-2.6V21h11.8v.1l-4.5 2.6z"/></svg>', haml: '<svg viewBox="0 0 32 32"><path d="M20 15c-1-.4-.3-2-.3-2l1.1-1s.3.1.6-.1c.4-.2.3-.7.3-.7l.8-.9s.3-.1-.9-1-1.6-.4-1.6-.4l-.9.7s-.3 0-.5.1 0 .5 0 .5l-4.1 3.4-2.1-4.8s.2-.2.1-.5c0-.3-.3-.3-.3-.3-.5-.9-.7-.9-.7-.9-1.7-.4-2.4.7-2.4.7-.1.1.1.7.1.7s-.2.1-.1.6c.2.7.6.4.6.4l2.7 6c0 .5-2.1 8.4-2.1 8.4 1.6 1.7 4 .9 4 .9 0-1 1.2-6.8 1.2-6.8 1.3 1.2 2.7 1.4 3.2 1.4 0 .4.1.7.1.7s1.9.7 2.9-.8c.1-.1.1-.2.1-.3 0 0 1.1-.4 1.1-1.4 0-1.4-1.9-2.2-2.9-2.6zm2 3.6c.2-.7-.2-1.1-.2-1.1s-.1.6-1.2.9c-1.1.3-1.4-.2-1.4-.2s-.2.3-.4.7c-2.3-.4-3-1.6-3.2-1.9-.1-.3.1-1 .1-1l3-2.2c-.2 1.4 1.4 1.9 1.4 1.9s2.3.8 2.3 2c.1.5-.2.8-.4.9z"/></svg>', mustache: '<svg viewBox="0 0 32 32"><path d="M7.4 15.7c0-.2 0-.4-.1-.5-.2-.2-.6-.2-.7.1-.3.5 0 1 .6 1.2.4.1.7.1 1-.2.5-.4 1-.8 1.5-1.3.7-.6 1.3-1.2 2.2-1.5 1.2-.4 2.4-.4 3.4.5l.6.6.2.2c.1-.2.2-.3.3-.4.6-.7 1.4-1.1 2.4-1.1 1.1 0 2.1.4 2.9 1.1.6.5 1.1 1 1.7 1.5.3.3.6.5 1 .6.5.1 1-.2 1.2-.6.1-.3 0-.5-.2-.7-.2-.2-.4-.2-.6-.1-.2.1-.3.3-.2.5v.1c-.3-.2-.4-.5-.4-.8 0-.4.3-.6.6-.7.9-.3 1.8.2 2 1.2.1.6.1 1.3-.2 1.9-.3.7-.9 1-1.6 1.2-1.4.4-2.7.1-4-.4l-2.7-1.2c-1.1-.5-2.3-.7-3.5-.4-.7.2-1.5.5-2.2.8-.9.4-1.7.8-2.6 1.1-1.1.4-2.2.5-3.3.1-1.1-.4-1.9-1.2-1.8-2.7.1-.7.3-1.3 1-1.5.4-.2.9-.2 1.3 0 .7.3.7 1 .2 1.4z"/></svg>', haskell: '<svg viewBox="0 0 32 32"><path d="M14.2 8.9c1.2 1.7 2.3 3.5 3.5 5.2 2 3 4 5.9 5.9 8.9h-3.5l-.1-.1c-.9-1.4-1.9-2.8-2.8-4.2-.1-.1 0-.1-.1 0-.9 1.4-1.9 2.8-2.8 4.2l-.1.1h-3.5v-.1c1.5-2.3 3.1-4.6 4.6-6.9v-.1c-1.5-2.3-3.1-4.6-4.6-6.9v-.1h3.5z"/><path d="M9.5 23.1H6V23c.4-.6.8-1.3 1.3-1.9 1.1-1.7 2.2-3.3 3.3-5V16c-1.5-2.4-3-4.7-4.6-7h3.5l.1.1c.8 1.1 1.5 2.3 2.3 3.4.8 1.2 1.6 2.3 2.3 3.5v.1c-1.5 2.3-3.1 4.6-4.7 7 .1-.1.1-.1 0 0zM26 15.4h-6.3c-.5-.8-1-1.5-1.5-2.3V13H26v2.4zm0 3.6s0-.1 0 0h-4c-.5-.8-1-1.5-1.5-2.3v-.1H26V19z"/></svg>', haxe: '<svg viewBox="0 0 32 32"><path d="M24.9 20l-2-4 2-4 .1-.1V7h-4.9l-.1.1-4 2-4-2-.1-.1H7v4.9l.1.1 2 4-2 4-.1.1V25h4.9l.1-.1 4-2 4 2 .1.1H25v-4.9l-.1-.1zM22 15.6L16.4 10l7.5-1.9-1.9 7.5zm-12 0L8.1 8.1l7.5 1.9-5.6 5.6zm0 .8l5.6 5.6-7.5 1.9 1.9-7.5zm12 0l1.9 7.5-7.5-1.9 5.6-5.6z"/></svg>', jade: '<svg viewBox="0 0 32 32"><path d="M26 19.9c-.2-1.1-.2-2.3-.1-3.4.1-.6.2-1.2 0-1.9-.2-.6-.3-1.2-.4-1.8-.2-1.3-.4-2.7-.9-4-.2-.4-.4-.7-.9-.7-.4 0-.6.2-.6.6.1.9.3 1.9.4 2.8.1.7.3 1.3.4 2v.4c-.1 0-.3 0-.4-.1-.4-.3-.8-.5-1.1-.9-.5-.7-.9-1.4-1.2-2.1-.6-1.4-1.1-2.8-1.8-4-.6-1-1.4-1.2-2.4-1.2-.3 0-.4.2-.4.4.1.3.1.6.3.9.9 1.6 1.7 3.3 2.6 4.9.3.5.7 1 1 1.4.4.6.3.8-.3 1.1-.1 0-.1 0-.2.1-.8.2-1.4-.1-1.9-.6-.5-.4-1.1-.7-1.8-.8-.3 0-.7-.1-1-.1-1.4-.1-2.7-.1-4.1.4-2 .7-3.1 2.3-3.8 4.2-.2.6-.4 1.3-.6 2-.1-.2-.1-.2-.2-.3-.1-.1-.2-.2-.2-.4-.1.1-.3.2-.4.4v.5c0 .3.1.6.2.8.7 1.7 1.4 3.5 2 5.2.2.4.5.6.9.6 1 .1 2 .1 2.9-.1l1.8-.3c-.2-.2-.4-.4-.6-.5 0-.1.1-.1.1-.2.5.1.9.2 1.4.3 1.6.6 3.2.9 4.9.8.3 0 .6-.1.7-.4l.3-.6c.2-.8.6-1.5 1-2.1.7-1 .6-.9 1.7-.6 1.2.4 2.3-.2 2.6-1.4.1-.4.1-.9.1-1.3zm-1.1-1.2c-.1.1-.3.3-.4.3-.9.1-1.8.1-2.6-.3-.3-.1-.5-.4-.8-.7.3-.1.6-.2.8-.3.9-.1 1.7.1 2.5.5.1 0 .2.1.2.1.1.1.3.3.3.4z"/></svg>', java: '<svg viewBox="-4 -4 20 20"><path d="M6 0a6 6 0 106 6 6 6 0 00-6-6zm2.14 6.8a2.16 2.16 0 01-2.29 2.41 2.5 2.5 0 01-2-.87l.73-.92a1.52 1.52 0 001.23.59c.66 0 1.06-.42 1.06-1.32V2.8h1.26z" class="cls-1"/></svg>', javascript: '<svg viewBox="0 0 32 32"><path d="M11.4 10h2.7v7.6c0 3.4-1.6 4.6-4.3 4.6-.6 0-1.5-.1-2-.3l.3-2.2c.4.2.9.3 1.4.3 1.1 0 1.9-.5 1.9-2.4V10zm5.1 9.2c.7.4 1.9.8 3 .8 1.3 0 1.9-.5 1.9-1.3s-.6-1.2-2-1.7c-2-.7-3.3-1.8-3.3-3.6 0-2.1 1.7-3.6 4.6-3.6 1.4 0 2.4.3 3.1.6l-.6 2.2c-.5-.2-1.3-.6-2.5-.6s-1.8.5-1.8 1.2c0 .8.7 1.1 2.2 1.7 2.1.8 3.1 1.9 3.1 3.6 0 2-1.6 3.7-4.9 3.7-1.4 0-2.7-.4-3.4-.7l.6-2.3z"/></svg>', jinja: '<svg viewBox="0 0 1200 1000"><path d="M843.3 275.4c0-1.8-3.4-3.6-5.2-5.4h-2.7c-14.2 6.5-28.3 13.3-42.6 19.4-62 26.5-127.2 38.7-194.2 43-27.9 1.8-55.7 3.9-83.6 5.5-48.6 2.8-97.3 6.7-145-16.2 8.6 18.7 3.1 30.5-13.6 37.6v2.7c5.2 2.6 10.2 6 15.8 7.7 8.4 2.6 15.9 4 24.1 10 9.4 6.8 14.8 12.9 18.1 23 .6 1.8 5.2 3.1 8.1 3.3 11.7.9 23.5 2.3 35.1 1.5 11.2-.8 22.8 3.1 21.4 12.5-1.1 7.3-13.8 15.4-22.9 18.3-9.3 3-20.5.2-30.8-.4-8.6-.5-13.1 1.1-9.6 11.3 2.2 6.2 2.3 13.1 3.4 19.9h58.4c-1.5 27.2-3 53.9-4.6 81.6-15.8-.9-30-1.7-45.3-2.5-.5-4.7-1-9-1.4-12.6 8.3-6.1 15.9-11.7 23.6-17.3-16.4-12.6-44.2-13.6-73.8-1.3 5.6 4.6 10 8.7 14.9 12 12.4 8.7 12 14.2-3.6 21.9 13.6 25 13.5 52.5 12 79.9-.2 4.5-5.6 8.5-6.7 13.2-1.7 7.3-5.4 18.3-2 21.7 9 9.2 5 19.1 5.8 28.7.3 4 .2 8.2-.3 12.2-1.2 8.9 2.6 12.3 11.4 11.7 7.5-.5 15.1-.1 23.3-.1-1.9-15.5-3.6-29.7-5.5-45.8h40.2c-1.9 13-3.9 26.5-5.9 40.7h50.6v-44.8c9.7-.9 17.6-1.6 26.7-2.4v44.5h30.4c0-3.9-.2-8.2 0-12.4.9-12.9 2.7-25.7 2.7-38.6 0-8.8-3.1-17.5-3.8-26.4-1.5-19.6-7.6-39.2 2.3-58.9 2.6-5.2 5.8-15.1-3.8-21.4-2.1-1.4-1-11.1 1.7-15 4-5.8 10.6-9.9 16.9-15.4-22.6-9.3-44.1-9.3-66.2 0 7.2 8.8 14.2 17.3 21.1 25.7-1 1.2-2.1 2.3-3.1 3.5h-28.6v-84.4c52.7-2.9 103.7-5.8 157.9-8.8-1.7 29.8-3.3 58.1-5 87.3h-26.6V528c8.3-6.2 16-12 25-18.8-26.8-12.4-51.8-12.2-78.6-1.6 5.1 5.6 10.1 10.9 14.9 16.5 2.9 3.4 7.5 7.3 7.4 10.9-.1 3.8-4.9 7.5-9 13.1 5.4 6.3-3.8 20 8.9 27.7 1.5.9.8 6 .8 9.1-.1 16.2.3 32.5-.8 48.7-.4 6.3-4.2 12.5-8.3 18.3 3.2 21.3 9.9 42.8 4.7 65.7-.8 3.6 2.9 8.2 4.4 12.4h37.9c-1.6-17.3-3.3-34.6-5-53h26.6v45.5h54.5c-2-17.2-3.7-32.3-5.6-48.6h24.2v42.7c2.3.9 3.8 1.9 5.5 2.1 29.1 3.1 28.8 2.7 27.3-25.6-.7-12.9 2.2-26.1 3.5-39.1.3-2.6 1.7-5.9.7-7.8-13.1-23.9-8-48.2-3.4-72.9 1.5-7.8-2-16.5-3.1-24.8-.6-4.4-.9-8.9-1.2-12.2 8-7 15.2-13.3 23.1-20.2-24.9-9.1-48.7-9.8-73.1.2 5.2 12.6 27.8 12 22.9 32.8-8.8 0-18.1.3-27.4-.2-2.4-.1-6.3-2.8-6.6-4.8-4.2-28.3-7.9-56.7-11.9-86.4 29.1-2.5 54.5-4.6 79.6-6.7 1.7-10.3 4-19.8 4.4-29.3.1-2.3-6-7.2-9.1-7-12.5.8-25.4 1.6-37.4 5.2-15.2 4.6-24-4.4-34.3-11.2 2-4.6 3.2-8.8 5.6-12.1 2.2-3 5.4-6.7 8.7-7.2 18.6-3.3 37.4-5.6 56-8.7 3.7-.6 9.7-2.4 10.3-4.7 7-27.2 31.4-28.3 51.8-35.3 5.5-1.9 10.9-3.7 16.4-5.5v-5.4c.4-18.3.6-36.4.2-54.4zM468.4 640.2c-13.8.9-26.6 1.7-41.4 2.6v-66.5c14.2.8 28.2 1.6 41.4 2.4v61.5zm68.7-61.5c0 18.5.5 36.4-.2 54.3-.4 11.1-9.9 6.6-15.7 7.1-6.2.6-14.6 2.9-14.7-8-.2-17.4-.1-34.9-.1-53.4h30.7zm-16.5-146.5c-16.7-4-11.6-15.9-4.6-27.5 10.5-.9 22-1.8 36.4-3 1.6 10.6 3.1 20.5 4.6 30.5-12.2.1-25 2.7-36.4 0zm138.9 214.1h-24.7v-70.4h24.7v70.4zm77.9-70.1v67c-8.2.6-16.1 1.2-25.4 1.8-1.4-23.4-2.6-44.7-3.9-67.5 9.8-.4 19-.8 29.3-1.3zM611.7 427.4c-1.7-29 .5-30.8 42.4-33.9 3.6 4.5 7.1 8.9 11.3 14.2-13.2 20.1-32.8 21.9-53.7 19.7z"/></svg>', julia: '<svg viewBox="0 0 32 32"><g><circle cx="11.3" cy="20.3" r="3.9"/><circle cx="20.7" cy="20.3" r="3.9"/><circle cx="16" cy="11.7" r="3.9"/></g></svg>', karma: '<svg viewBox="0 0 32 32"><path d="M9 7.4v4.8l3.3 12.5h1.5v-5h.8l3.4 5h5l-5.9-8.9v-.5l5.5-8h-5.3l-2.7 4.4h-.8V7.4z"/></svg>', kotlin: '<svg viewBox="-25 -25 110 110"><linearGradient id="a" x1="15.959" x2="44.307" y1="-13.014" y2="15.333" gradientTransform="matrix(1 0 0 -1 0 61)" gradientUnits="userSpaceOnUse"><stop offset=".097" stop-color="#0095d5"/><stop offset=".301" stop-color="#238ad9"/><stop offset=".621" stop-color="#557bde"/><stop offset=".864" stop-color="#7472e2"/><stop offset="1" stop-color="#806ee3"/></linearGradient><path d="M0 60l30.1-30.1L60 60z"/><linearGradient id="b" x1="4.209" x2="20.673" y1="48.941" y2="65.405" gradientTransform="matrix(1 0 0 -1 0 61)" gradientUnits="userSpaceOnUse"><stop offset=".118" stop-color="#0095d5"/><stop offset=".418" stop-color="#3c83dc"/><stop offset=".696" stop-color="#6d74e1"/><stop offset=".833" stop-color="#806ee3"/></linearGradient><path d="M0 0h30.1L0 32.5z"/><linearGradient id="c" x1="-10.102" x2="45.731" y1="5.836" y2="61.669" gradientTransform="matrix(1 0 0 -1 0 61)" gradientUnits="userSpaceOnUse"><stop offset=".107" stop-color="#c757bc"/><stop offset=".214" stop-color="#d0609a"/><stop offset=".425" stop-color="#e1725c"/><stop offset=".605" stop-color="#ee7e2f"/><stop offset=".743" stop-color="#f58613"/><stop offset=".823" stop-color="#f88909"/></linearGradient><path d="M30.1 0L0 31.7V60l30.1-30.1L60 0z"/></svg>', dart: '<svg data-name="Layer 1" viewBox="-60 -60 320 320"><path d="M194.42 83.82L154.8 44.2l-.08-.09-31.63-31.62c-3.25-3.25-9.56-6.71-14.87-6.71-4.75 0-9.13 1-11.91 2.66L40.77 36.22l-3.68 2-1.65 3.41-27.86 58c-.27.57-2.64 5.7-2.64 9.41a23.64 23.64 0 006.7 16.09l31.71 31.71 38.4 38.41h79.75v-32.91h32.92zM98.29 12.06c2.26-1.35 6-2.15 9.93-2.15s9.32 2.85 12 5.49l22.44 22.44h-.76a48.2 48.2 0 00-5.59-.31H47.43zm59.08 179.08H83.46l-37.2-37.2c-4.52-4.53-5.49-6.38-5.49-15.61v-93.8l116.6 116.6z"/></svg>', less: '<svg viewBox="0 0 32 32"><path d="M7.5 15.1c1.5 0 1.7-.8 1.7-1.5 0-.6-.1-1.1-.1-1.7S9 10.7 9 10.2c0-2.1 1.3-3 3.4-3h.8v1.9h-.4c-1 0-1.3.6-1.3 1.6 0 .4.1.8.1 1.3 0 .4.1.9.1 1.5 0 1.7-.7 2.3-1.9 2.6 1.2.3 1.9.9 1.9 2.6 0 .6-.1 1.1-.1 1.5 0 .4-.1.9-.1 1.2 0 1 .3 1.6 1.3 1.6h.4v1.9h-.8c-2 0-3.3-.8-3.3-3 0-.6 0-1.1.1-1.7.1-.6.1-1.2.1-1.7 0-.6-.2-1.5-1.7-1.5l-.1-1.9zm17 1.7c-1.5 0-1.7.9-1.7 1.5s.1 1.1.1 1.7c.1.6.1 1.2.1 1.7 0 2.2-1.4 3-3.4 3h-.8V23h.4c1 0 1.3-.6 1.3-1.6 0-.4 0-.8-.1-1.2 0-.5-.1-1-.1-1.5 0-1.7.7-2.3 1.9-2.6-1.2-.3-1.9-.9-1.9-2.6 0-.6.1-1.1.1-1.5.1-.5.1-.9.1-1.3 0-1-.4-1.5-1.3-1.6h-.4V7.2h.8c2.1 0 3.4.9 3.4 3 0 .6-.1 1.1-.1 1.7-.1.6-.1 1.2-.1 1.7 0 .7.2 1.5 1.7 1.5v1.7z"/></svg>', liquid: '<svg viewBox="0 0 32 32"><path d="M18.1 18.8c0 .5-.1 1.1-.1 1.6-.1 1.6-.2 3.2-.2 4.8v.7c0 .1 0 .1-.1.1l-3-.6c-.5-.1-.9-.1-1.4-.2-.5-.1-.9-.2-1.3-.2-1.3-.2-2.6-.5-3.9-.7-.5-.2-1.1-.3-1.6-.4-.1 0-.1-.1-.1-.2.2-1.1.3-2.3.4-3.4 0-.2.1-.5.1-.7.1-.1 0-.2.1-.4.1-.5.1-1 .2-1.6.1-.5.2-1 .2-1.6.2-1.3.4-2.7.5-4 0-.3.2-.5.4-.6l1.8-.6c.1 0 .2-.1.2-.3.2-1.1.7-2.1 1.3-3 .4-.6.9-1.1 1.5-1.4.4 0 .7-.1 1.1-.1.5 0 .9.1 1.2.5.1.1.1.1.2.1.5 0 1 .2 1.3.6.3.4.5.8.7 1.2 0 .1.1.1.2.1.2-.1.3-.1.5-.2.2 0 .2 0 .2.2 0 .9-.1 1.7-.1 2.6-.1 1.1-.1 2.3-.2 3.4-.1 1.4-.1 2.7-.2 4.1.1.1.1.1.1.2zm-7.4-.5c.2.2.4.4.7.6.3.2.6.5.7.9.1.5-.1.9-.6 1H11c-.6-.1-1.1-.4-1.5-.7-.1-.1-.1-.1-.2.1-.1.4-.2.8-.4 1.2-.1.3 0 .5.2.6.9.7 1.9 1 2.9.9 1.1-.1 1.9-.7 2.3-1.7.2-.5.3-1 .3-1.5s-.2-1-.5-1.4c0-.1-.1-.1-.1-.2-.3-.5-.8-.8-1.3-1.1-.2-.1-.4-.3-.6-.5-.3-.5-.1-1.3.6-1.5.7-.1 1.3 0 1.9.2.1.1.2 0 .2-.1l.6-1.8c.1-.3.1-.3-.2-.4-.7-.2-1.4-.2-2.1-.1-1.6.3-3 1.4-3.1 3.2-.2.9.1 1.7.7 2.3zm4-11.5c-.1-.1-.1-.1-.2-.1-.2-.1-.4 0-.7 0-.6.2-1 .5-1.4 1-.7.8-1.1 1.8-1.4 2.8 0 .1 0 .1.1.1.5-.1.9-.3 1.4-.4.1 0 .1-.1.1-.1 0-.2.1-.4.1-.6.4-1.1.9-2.1 2-2.7zm.7 2.1c0-.4-.1-.9-.2-1.3-.1-.2-.1-.2-.2-.1-.2.1-.5.3-.6.5-.4.5-.7 1.1-.9 1.7v.1h.1c.5-.1 1-.3 1.4-.4.4-.1.4-.1.4-.5zm.8.2c.2-.1.5-.2.8-.3v-.1c-.1-.4-.3-.8-.6-1.1-.1-.1-.2-.2-.4-.3h-.1v.1c0 .1.1.3.1.4.1.3.1.7.1 1.1 0 .1 0 .2.1.2zm9.2 13.3l.3 2.1c0 .1 0 .1-.1.2-1.2.2-2.3.5-3.5.7-.8.2-1.7.4-2.5.5-.1 0-.2.1-.1-.1 0-.3 0-.7.1-1 .1-1.4.1-2.7.2-4.1v-1c0-.3 0-.7.1-1V18c.1-1.8.2-3.5.3-5.3v-1c.1-.8.1-1.5.1-2.3v-1c.1 0 .1 0 .1.1l.4.4c.2.2.4.3.5.5.1.2.3.2.5.2.4 0 .9.1 1.3.1.1 0 .2.1.2.2.1.4.1.8.2 1.2.1.7.2 1.3.3 2 .2 1 .3 2.1.5 3.1.3 1.7.5 3.4.8 5.1.1.4.2.7.3 1.1z"/></svg>', livescript: '<svg viewBox="0 0 32 32"><path d="M16 7.5V15c.1 0 .1 0 .1-.1 0 0 .1 0 .1-.1 0 0 .1 0 .1-.1.1 0 .1 0 .1-.1.1 0 .1 0 .1-.1.1 0 .1-.1.1-.2V8.2c0-.2.1-.3.3-.3h.6c.3 0 .3 0 .3.3v5h.1c.1 0 .1 0 .1-.1V13l.2-.2c.1-.1 0-.2 0-.2V8.8h1.1v2.8c.1 0 .1-.1.2-.1l1.1-1.1c.1 0 .1-.1.1-.2V8.7c.2-.1.4 0 .6 0 .2 0 .5-.1.6 0 .1.1 0 .4 0 .6v.5c0 .1 0 .1.1.2 0 0-.1 0 0 0h.9c.1 0 .2 0 .2.2v1h-.3c.1-.1.2 0 .3-.1h-1.4c-.1 0-.1 0-.1.1-.4.4-.9.8-1.3 1.3 0 .1.1.1.2.1h2.4c.2 0 .2 0 .2.2v.7c0 .2 0 .3-.3.3h-3.6c-.1 0-.2-.1-.2.1l-1.2 1.2h5.3v.9c0 .2-.1.2-.3.2h-6.3c-.1 0-.1 0-.1.1-.1 0-.1 0-.1.1-.1 0-.1 0-.1.1-.1 0-.1 0-.1.1-.1 0-.1 0-.1.1-.1 0-.1 0-.1.1-.1 0-.1 0-.1.1.1.1.2 0 .2 0h7.5c.1 0 .1 0 .1.1v.7c0 .3 0 .3-.3.3h-8.9l-.1.1c-.1.2-.3.3-.4.5.1.1.2 0 .3 0h9.9c.1 0 .2 0 .2.2v1H12.9c-.1 0-.2 0-.3.1L11.5 21c0 .1.2.1.2.1h13.6c.2 0 .2 0 .2.2v1.9c0 .3 0 .3-.3.3H10.5c-.1.1 0 .2 0 .2V26H8.2c-.2 0-.2-.1-.2-.2v-2.3c-.1-.1-.1 0-.2 0h-2c-.2 0-.2 0-.2-.2v-2c0-.2.1-.2.2-.2H8 5.6c.1-.1.1 0 .2 0h2.3c.1-.1 0-.2 0-.2V6.4c0-.2 0-.2.2-.2h1.9c.3 0 .3 0 .3.3v13.8c.2-.1.3-.3.4-.4.3-.3.5-.6.8-.8.1 0 .1-.1.1-.2V7.5c.2-.1.5 0 .7 0 .2 0 .4-.1.5 0 .1.1 0 .3 0 .5v9.7c.4-.4.8-.8 1.3-1.2.1-.1.1-.2.1-.2V7.5h1.1c.1 0 .1 0 .1.1.3-.2.3-.1.4-.1-.1 2.5-.1 4.9-.1 7.3v.2c.1-.1 0-.2 0-.3v-7c.1 0 0-.1.1-.2z"/><path d="M11 23.5c.1-.1.2 0 .3 0h14.4c.3 0 .3 0 .3-.3v-1.9c0-.2 0-.2-.2-.2H12.2c-.1 0-.2.1-.2-.1h13.9c.1 0 .1 0 .1.2v2.1c0 .2 0 .2-.2.2H11zm0-3.4c-.1-.1 0-.2 0-.3V6.3c0-.3 0-.3-.3-.3H8.8c-.2 0-.2 0-.2.2v-.1c-.1-.1-.1-.1.1-.1h2.1c.1 0 .2 0 .2.2v13.9zm7.5-7.6c-.1-.1 0-.2 0-.2V7.5c0-.3 0-.3-.3-.3h-.6c-.2 0-.3.1-.3.3v6.1c0 .1 0 .2-.1.2.1-.1.1-.2.1-.3V7.3c0-.2 0-.2.2-.2h.9c.1 0 .2 0 .2.2v4.8c-.1.2-.1.3-.1.4zm-2.9 4.7c.1-.1.2 0 .3 0h8.6c.3 0 .3 0 .3-.3v-.7c0-.1 0-.2-.1-.1H17h7.7c.2 0 .2 0 .2.2v.8c0 .1 0 .2-.2.2h-8.8c-.2-.1-.2-.1-.3-.1zm-3.3-9.9c.1.1 0 .1 0 .2v11.2c0 .1 0 .2-.1.2V7.5c.1-.1.1-.2.1-.2zm12.4 12.4v-1c0-.1 0-.2-.2-.2H14.3h10c.3 0 .3 0 .3.3v.8c.1 0 .2.1.1.1zM14.8 7.3v8.8c0 .1 0 .2-.1.2V7.4c.1 0 0-.1.1-.1zm5.8 5c0-.1.1-.1.2-.1h3.6c.2 0 .3-.1.3-.3v-.7c0-.2 0-.2-.2-.2h-2.4c-.1 0-.2 0-.2-.1h2.9c.1 0 .1.1.1.1v1.2h-3.8c-.3 0-.4 0-.5.1 0-.1 0-.1 0 0zM16 7.5c-.1.1 0 .2 0 .2v7.1c-.1-2.4-.1-4.8 0-7.3-.1 0-.1-.1 0-.2v.2zm2.1 7.2c.1-.1.2 0 .2 0h6.1c.2 0 .3 0 .3-.2v-.9c.1 0 .1.1.1.2v.9c0 .1 0 .2-.2.2-2.2-.2-4.3-.2-6.5-.2zM6 21h2.4-2.2c-.2 0-.2 0-.2.2v2c0 .2 0 .2.2.2h2.2-2.3c-.1 0-.1 0-.1-.1V21zM19.8 7.3v.1c0-.1-.1-.2 0-.1zm.9 4.9h4-4zM21 10c-.1 0 0-.1 0-.2V7.2c.1 0 0 .1 0 .1V10zm2.1-.3c0-.1.1-.1.1-.1h1.4c-.1.1-.2 0-.3.1h-1.2zm1.6 1.3h-2.8 2.8zM10.9 26v-2.5 2.3c.1.1.1.1 0 .2zM24.7 9.7v-1c0-.1 0-.2-.2-.2h-.9c-.1 0 0 0 0 0h1.1c.1.4 0 .8 0 1.2zm-2.4-2.4c.1 0 0 .1 0 .2v1.3c0 .1 0 .1-.1.2 0-.7.1-1.2.1-1.7zm-4.5 7.8c0-.1 0-.1.1-.1 0 0-.1 0-.1.1zm-.7.6c0-.1 0-.1.1-.1 0 0 0 .1-.1.1zm.6-.5c0-.1 0-.1 0 0 0-.1 0 0 0 0zm-1.6-.2c0 .1 0 .1 0 0-.1.1 0 0 0 0zm1.8-.1c0-.1.1-.1 0 0 .1-.1.1 0 0 0zm-.5.5c0-.1.1-.1 0 0 .1-.1.1 0 0 0zm-.7-1c0 .1-.1.1 0 0-.1.1-.1.1 0 0zm.2-.2c0 .1-.1.1 0 0-.1.1-.1.1 0 0zm.1 1.6zm-.1.2c0-.1 0-.1 0 0 0-.1 0-.1 0 0zm2.1-3.9c0 .1-.1.1 0 0-.1.1-.1.1 0 0zm-2.8 2.8zm.1-.1s0 .1 0 0c-.1 0 0 0 0 0zm-1.5-7.3c-.1 0-.1 0 0 0zm9.9 1zM14.8 18zm2.8-2.8zm0 .1s0-.1 0 0c0-.1 0 0 0 0zM14.9 18zm2.6-2.7s.1 0 0 0c.1 0 0 0 0 0zm-2.6 2.6zm2.5-2.5zm0 .1s0-.1 0 0c0-.1 0 0 0 0zm-.1 0s.1 0 0 0c.1 0 0 0 0 0zm-2.4 2.4c.1 0 .1 0 0 0 .1 0 .1 0 0 0zm2.4-2.3c0-.1 0-.1 0 0 0-.1 0-.1 0 0zm-.1 0c.1 0 .1 0 0 0 .1 0 .1 0 0 0zM15 17.9c0-.1 0-.1 0 0 0-.1 0-.1 0 0zm0-.1s.1 0 0 0c.1 0 0 0 0 0zm2.1-2c0-.1 0-.1 0 0 0-.1 0-.1 0 0zm-2 1.9c.1 0 .1 0 0 0 .1 0 .1 0 0 0zm4.6-6.4c0 .1 0 .1 0 0 0 .1 0 .1 0 0zm-4.1 6zm-.1 0zm0 .1s0-.1 0 0c0-.1 0 0 0 0zm-.1 0zm-.1.1c.1 0 .1 0 0 0 .1 0 .1 0 0 0zm0 0zm0 .1s0-.1 0 0c0-.1 0 0 0 0zm-.1 0s.1 0 0 0c.1 0 0 0 0 0zm3.4-5.1zm.1-.1s-.1.1 0 0c-.1.1 0 0 0 0zm.1-.1c-.1.1-.1.1 0 0-.1.1-.1.1 0 0zm0 0zm0 0zm.7-.7zm-.6.6zm.1-.1zm0-.1c0 .1 0 .1 0 0 0 .1 0 .1 0 0zm.1 0zm.1-.1s-.1.1 0 0c-.1.1 0 0 0 0zm0 0zm.1-.1c-.1.1-.1.1 0 0-.1.1-.1.1 0 0zm0 0zm.1-.1s-.1.1 0 0c-.1.1 0 0 0 0zm0 0zm.1-.1c-.1.1-.1.1 0 0-.1.1-.1.1 0 0zm-1.8 3.5s.1 0 0 0c.1 0 0 0 0 0zm-1.5-.2s-.1.1 0 0c-.1.1 0 0 0 0zm1.7 0zm.1-.1zm-1.6-.1s-.1.1 0 0c-.1.1 0 0 0 0zm0 0zm.1-.1zm.1-.1s0 .1 0 0c0 .1 0 0 0 0zm.1-.1zm0 0zm.2-.2zm.1-.1c-.1.1-.1.1 0 0-.1.1-.1.1 0 0zm0 0zm.1-.1s-.1.1 0 0c-.1.1 0 0 0 0zm0 0zm.1-.1zm2.5-2.5z"/></svg>', lua: '<svg viewBox="0 0 32 32"><path d="M14.7 26C9.9 26 6 22.1 6 17.3c0-4.8 3.9-8.8 8.9-8.7 4.7.1 8.5 3.9 8.5 8.7 0 4.8-3.9 8.7-8.7 8.7zm3.6-14.9c-1.4 0-2.6 1.2-2.6 2.6 0 1.4 1.1 2.6 2.6 2.6 1.4 0 2.6-1.1 2.6-2.6 0-1.4-1.1-2.6-2.6-2.6zm5.1 0c-1.4 0-2.6-1.1-2.5-2.6C20.9 7.1 22 6 23.5 6 24.9 6 26 7.2 26 8.6c0 1.4-1.2 2.5-2.6 2.5z"/></svg>', markdown: '<svg viewBox="0 0 32 32"><path d="M20.7 6.7v9.9h3.8c-2.9 3-5.8 5.9-8.7 8.8-2.7-2.8-5.6-5.8-8.4-8.7h3.5V6.6c1.3.9 4.4 3.1 5 3.1.6 0 3.6-2.2 4.8-3z"/></svg>', argdown: '<svg fill-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414" clip-rule="evenodd" viewBox="0 0 32 32"><path d="M20.451 16.65h3.55l-8 8.975-8-8.975h3.56V6.375l3 1.875v11.765l1.44 1.615 1.45-1.628V8.25l3-1.875V16.65z"/></svg>', info: '<svg viewBox="0 0 32 32"><path d="M26 15.1c-.1-1.7-.7-3.2-1.6-4.6C23 8.4 21 7 18.6 6.4c-.7-.2-1.4-.3-2-.3H15c-2 .2-3.7.9-5.3 2.1-1.8 1.5-3 3.3-3.5 5.6-.1.5-.2 1.1-.2 1.6V17c.2 1.7.7 3.3 1.7 4.7 1.1 1.6 2.6 2.9 4.4 3.6 1.1.4 2.2.7 3.3.8H17c2.4-.2 4.5-1.2 6.2-3 1.4-1.4 2.3-3.1 2.7-5 .1-.5.1-.9.2-1.4v-1.1c-.1-.2-.1-.3-.1-.5zm-10 9.4c-4.7 0-8.4-3.8-8.4-8.5s3.8-8.5 8.6-8.5c4.6.1 8.4 3.8 8.4 8.5-.1 4.7-3.9 8.5-8.6 8.5z"/><path d="M18.4 21.4c-.2 0-.3 0-.5-.1-.2 0-.2-.2-.3-.3v-6.5c-1.6.1-3.1.1-4.7.2v.8h1c.4 0 .6.3.6.7v4.6c0 .4-.2.6-.6.6H13v.8h6v-.8h-.6zm-2.6-8.1c1 0 1.7-.8 1.7-1.7 0-.9-.8-1.7-1.7-1.7-1 0-1.7.8-1.7 1.7 0 .9.8 1.7 1.7 1.7z"/></svg>', clock: '<svg viewBox="0 0 32 32"><path d="M15.5 7h1.2c.5.1.9.1 1.4.2 1.2.3 2.3.8 3.3 1.5.8.6 1.4 1.2 1.9 2 .9 1.2 1.4 2.5 1.6 4 0 .2.1.4.1.7v1.3c-.1.4-.1.8-.2 1.1-.3 1.2-.8 2.4-1.5 3.4s-1.6 1.8-2.7 2.5c-1.1.6-2.2 1.1-3.5 1.2-.2 0-.4.1-.6.1h-1.3c-.4-.1-.8-.1-1.1-.2-1.2-.3-2.4-.8-3.4-1.5s-1.8-1.6-2.5-2.7c-.6-1.1-1.1-2.2-1.2-3.5.1-.1 0-.3 0-.6v-1.2c.1-.5.1-.9.2-1.4.3-1.2.8-2.3 1.5-3.3s1.7-1.8 2.7-2.4c1-.6 2.1-1 3.3-1.1.3 0 .5-.1.8-.1zm-7 9.2c.1 4.1 3.5 7.4 7.6 7.4 4.2 0 7.6-3.5 7.5-7.8-.1-4-3.5-7.4-7.8-7.3-4 .1-7.4 3.4-7.3 7.7z"/><path d="M16.4 16c.2-.2.5-.3.7-.5.9-.6 1.8-1.2 2.6-1.8.1-.1.2-.1.2-.2.2-.2.5-.1.7.1.2.2.1.5-.1.7-.3.2-.7.5-1 .7-.7.5-1.5 1-2.2 1.6-.4.3-.7.5-1.1.8-.3.2-.7 0-.7-.3v-6.5c0-.3.1-.5.4-.5.2-.1.5.1.5.4V16c0-.1 0 0 0 0z"/></svg>', maven: '<svg viewBox="0 0 32 32"><path d="M16.2 5.6c-2 1.6-2.7 2-3.7 3.4s-1 5.4 1 6.9c-.5 0-2.5-1.2-2.5-1.2s2.7 3.8 3.8 4.9c1.6 2.3 2.6 4.8 3 7.4.3-2.2-.1-4.3-1.2-6.3v-.1c-.1-.5 0-.9.5-1.3.5-.3 2.6-2.3 2.6-2.3s-2.2 1.3-2.8 1.4c.9-.9 1.5-1.7 2.4-2.3 1.5-1.2 1.8-2.7 1.6-4.2 0-.4-.1-.7-.2-1.1-.5-2.2-1.7-4.1-3.6-5.9-.3.4-.6.5-.9.7z"/></svg>', nunjucks: '<svg viewBox="0 0 32 32"><path d="M20.7 12.6l-1.2.4c-.3-1-1.4-4.1-3.4-4.1s-3.2 3.2-3.5 4.1l-1.4-.4L8.3 22l3.6 1.1 2.9-9.4-1.3-.4c.3-1.1 1.4-3.4 2.5-3.4s2.1 2.3 2.4 3.4l-1.5.5 2.9 9.4 3.6-1.1-2.7-9.5z"/></svg>', npm: '<svg viewBox="0 0 32 32"><path d="M4 11.3v8h6.8v1.4h5.3v-1.3H28v-8.1H4zm6.6 6.7H9.3v-3.9H8V18H5.3v-5.3h5.3V18zm6.6 0h-2.7v1.4h-2.7v-6.6h5.3c.1 1.6.1 3.4.1 5.2zm9.4 0h-1.3v-3.9H24V18h-1.4v-3.9h-1.3V18h-2.7v-5.3h8V18zm-10.7-3.9h-1.3v2.6h1.3v-2.6z"/></svg>', ocaml: '<svg viewBox="0 0 32 32"><path d="M26 23.9V10.4c0-.4 0-.8-.1-1.2-.1-.6-.5-1.1-1-1.5-.3-.2-.6-.4-1-.4-.1 0-.1 0-.1-.1H8.1c0 .2-.3.2-.4.2-.8.3-1.3.9-1.6 1.7-.1.2-.1.4-.1.6v4.6c0 .3 0 .3.3.2.2-.1.3-.1.5-.2.4-.1.5-.5.7-.7.2-.3.3-.5.6-.7.2-.2.4-.2.7 0 .2.1.4.3.7.4.3.1.7.2 1 .1.3 0 .4-.3.5-.5.1-.2.2-.4.3-.5.2-.1.3-.1.6-.1.6.1 1 .6 1.4 1.1.1.2.2.3.4.4.2.1.4.3.6.5.5.6 1.2 1 1.7 1.5.3.3.7.6 1.2.8.6.2 1.1.3 1.6-.4.4-.5.7-1.1.8-1.7.1-.3.3-.5.5-.8h.1c.5-.1 1 0 1.4.1.2 0 .3 0 .5.1.4.1.8.1 1.2.3.4.2.5.6.4 1-.1.4-.2.2-.4.2H23c-.4.1-.8.3-1.2.5-.2.1-.4.3-.4.5-.1.4-.3.7-.6.9-.1.1-.2.1-.2.3-.2.1-.2.3-.4.4-.7.7-1.6 1-2.6 1.1H16c-.2 0-.2.1-.2.2.1.4 0 .8.1 1.2.1.2.1.4.1.6 0 .4.2.8.5 1.1.1.1.1.2.1.3 0 .3 0 .7.1 1 .1.4.2.9.4 1.3.1.1.2.2.3.1.2-.1.4-.1.6-.2.5-.2 1.1-.2 1.7-.2 1.2 0 2.3-.2 3.5.1.4.1.7.1 1.1.2.6.2 1.1.2 1.7.2.2 0 .4-.1.4-.4-.5-.4-.4-.5-.4-.7z"/><path d="M10.7 21.1l.1-.1c.1-.5.3-1 .7-1.4h-.1c-.7 0-1.3-.1-2-.3-.5-.1-1.1-.3-1.5-.7-.3-.3-.7-.2-.9.2 0 .1-.1.3-.1.4-.2.4-.4.7-.7 1-.1.2-.2.4-.2.7v1.9c0 .2.1.3.3.3.5.1.9.3 1.3.4.6.2 1.2.5 1.8.5.4 0 .4 0 .5-.4 0-.1.1-.1.1-.2h-.1.1v-.2.1c0-.1.1-.1.1-.2V23c.1-.2.1-.4.1-.5 0-.2 0-.4.1-.5v-.1c.2-.1.3-.4.4-.6v-.2zm5 1.9c-.2-.2-.3-.4-.4-.7 0-.1 0-.3-.1-.3 0-.3-.1-.5-.2-.8-.2-.7-.6-1.3-1.2-1.8-.5-.3-.7-.3-1.1.1-.1.1-.1.2-.2.3-.3.5-.6 1-.9 1.6-.1.2-.2.3-.2.6-.1.1-.1.3-.2.5-.3.3-.5.8-.7 1.2 0 .1-.1.1 0 .2h.2c.4-.1.8-.2 1.2-.4.6-.3 1.3-.3 1.9-.1.6.2 1 .5 1.5.9.3.2.6.3.9.4h.2v-.1c-.3-.6-.4-1.1-.7-1.6z"/></svg>', odata: '<svg viewBox="0 0 32 32"><path d="M22.5 7.1h-13C8.1 7.1 7 8.2 7 9.6v12.8c0 1.4 1.1 2.5 2.5 2.5h12.9c1.4 0 2.5-1.1 2.5-2.5V9.6c.1-1.4-1-2.5-2.4-2.5zM11.9 22.9c-1.4 0-2.6-1.2-2.6-2.6s1.2-2.6 2.6-2.6 2.6 1.2 2.6 2.6-1.1 2.6-2.6 2.6zm3.9-6.5H9.4v-1.7h6.3v1.7zm0-2.5H9.4v-1.7h6.3v1.7zm0-2.5H9.4V9.8h6.3v1.6zm6.8 7.3h-6.3V17h6.3v1.7zm0-2.4h-6.3v-1.7h6.3v1.7zm0-2.5h-6.3v-1.7h6.3v1.7zm0-2.4h-6.3V9.7h6.3v1.7z"/></svg>', perl: '<svg viewBox="0 0 32 32"><path d="M13.4 26h-1.5c.1-.3.1-.7.2-.8 1-.4.7-1.2.7-2V17c-1-.2-2-.1-2.7-.5-2.2-1.4-2.8-3.7-1.8-6.1.3-.7.2-1.2-.7-1.3-.2 0-.5-.1-.8-.2v-.2c.6-.3 1.1-.7 1.7-1 .2-.1.6 0 .8-.2 1.6-.8 1.9-.7 2.8.9.5 1 .4 1.9-.1 2.9-.3.5-.7 1.2.1 1.5 2-2.8 3.7-5.7 7.2-6.8h.7c.5.7 1.2 1.2 1.6 2 1.1 1.8 1.9 3.7 3 5.4.8 1.2.7 3.6-.3 4.4v-3.5h-.4c-.9 1.3-.4 2.8-.4 4.3 0 2.5-.1 5-.1 7.4h-.7c0-.3-.1-.5 0-.8.4-3.1 0-6.2-1.1-9.2-.9.8-1.3 1.8-1.4 3-.1.9-.4 1.8-.7 2.7-.3.8-1.1 1.5-.1 2.3.1.1-.1.6-.1 1.1-.4-.5-.6-.8-.8-1v.3c-.7.2-1.5.3-2.2.5 0-.1-.1-.3-.1-.4.2-.1.4-.2.6-.4 1-.6 1.1-1.2.3-1.9-1.3-1-1.7-2.2-1.1-3.7.2-.4.1-.9.2-1.7-.7.4-1.3.6-1.4.9-.4 1.5-.6 3.1-.8 4.6-.3 1.4-.4 2.5-.6 3.7zm4.6-3.8c1.4-1.8 1.6-3.8.6-5.2-.6 1.2-1.2 2.4-1.8 3.7l1.2 1.5z"/></svg>', php: '<svg viewBox="0 0 32 32"><path d="M12.7 19.7c-.1-.6-.4-1.1-1-1.3-.2-.1-.5-.3-.7-.4-.3-.1-.6-.2-.8-.3-.2-.1-.4 0-.6.2-.1.2 0 .4.1.5.1.2.2.3.4.5.2.3.4.5.7.8.2.3.4.5.3.9-.1.7-.4 1.4-.9 1.9-.1.1-.2.1-.2.1-.3 0-.7-.2-.9-.4-.3-.3-.2-.6.1-.8.1 0 .2-.1.2-.2.2-.2.3-.4.2-.7-.1-.1-.1-.2-.2-.3-.4-.4-.9-.8-1.4-1.2-1.3-1-1.9-2.2-2-3.6-.1-1.6.3-3.1 1.1-4.5.3-.5.7-1 1.3-1.3.4-.2.8-.3 1.2-.4 1.1-.3 2.3-.5 3.5-.3 1 .2 1.8.7 2.1 1.7.2.7.3 1.3.2 2-.1 1.4-1.2 2.6-2.5 3-.6.2-.9.1-1.2-.4-.2-.3-.5-.7-.7-1.1V14c0-.1-.1-.1-.1-.2.1.6.2 1.2.5 1.7.2.3.4.5.8.5 1.3.1 2.3-.3 3.1-1.3.8-1.1 1-2.4.8-3.8 0-.3-.1-.5-.2-.8 0-.2 0-.3.2-.4.1 0 .2 0 .2-.1 1-.2 2.1-.3 3.1-.2 1.2.1 2.3.4 3.3 1.1 1.6 1 2.6 2.5 3.1 4.3.1.3.1.5.1.8 0 .2-.1.2-.3.1-.2-.1-.3-.3-.4-.4-.1-.1-.2-.3-.3-.4-.1-.1-.2-.1-.2 0s-.1.2-.1.3c-.3 1-.7 1.9-1.4 2.6-.1.1-.2.3-.2.4 0 .4-.1.8 0 1.2.1.8.2 1.7.3 2.5.1.5-.1.7-.5.9-.3.1-.6.2-1 .2h-1.6c0-.6 0-1.2-.5-1.5.1-.4.2-.8.3-1.3.1-.4 0-.7-.2-1-.2-.3-.5-.3-.8-.2-.8.5-1.6.5-2.5.2-.4-.1-.7-.1-.9.3-.2.4-.3.8-.3 1.2 0 .5.1 1.1.2 1.6 0 .3 0 .4-.3.5-.7.2-1.4.2-2 .1h-.1c0-.6 0-1.2-.7-1.5.4-.4.4-1.1.3-1.7zm-4.1-2.3c.1-.1.2-.2.2-.4.1-.3-.2-.8-.5-.9-.2-.1-.3 0-.4.1-.3.3-.5.6-.8.9 0 .1-.1.1-.1.2-.1.2 0 .4.2.4.1 0 .3 0 .4.1.4 0 .7-.1 1-.4zm0-3.3c0-.2-.2-.4-.4-.4s-.5.2-.4.5c0 .2.2.4.5.4.1-.1.3-.3.3-.5z"/></svg>', pddl: '<svg viewBox="0 0 32 32"><g><path d="M7.39 27.464H4.968q-.56-1.15-1.016-2.368-.455-1.218-.785-2.618-.31-1.309-.488-2.902-.172-1.593-.172-3.312 0-1.878.178-3.403.185-1.525.475-2.789.317-1.377.772-2.595.462-1.23 1.036-2.413H7.39v.33q-.535.831-1.023 1.89-.482 1.047-.897 2.458-.396 1.355-.647 3.005-.244 1.65-.244 3.517 0 1.946.237 3.528.244 1.582.654 2.994.395 1.343.89 2.435.502 1.104 1.03 1.913zm21.78-11.2q0 1.719-.179 3.312-.171 1.582-.482 2.902-.33 1.4-.785 2.618t-1.016 2.368h-2.421v-.33q.528-.809 1.03-1.901.5-1.093.89-2.447.409-1.412.646-2.994.245-1.582.245-3.528 0-1.867-.251-3.517-.244-1.65-.64-3.005-.416-1.411-.904-2.458-.482-1.059-1.016-1.89v-.33h2.421q.574 1.184 1.03 2.413.461 1.218.778 2.595.29 1.264.469 2.789.184 1.525.184 3.403z"/><path d="M9.29 14.05q-.894 0-1.49-.622-.595-.636-.595-1.562 0-.953.607-1.561.618-.61 1.534-.61.928 0 1.512.623.596.609.596 1.548 0 .966-.607 1.575-.596.609-1.558.609zm0 9.686q-.894 0-1.49-.635-.595-.635-.595-1.561 0-.953.607-1.562.618-.609 1.534-.609.928 0 1.512.622.596.609.596 1.549 0 .966-.607 1.588-.596.608-1.558.608zm14.51-.331h-3.424V21.46h-.046q-1.18 2.276-3.493 2.276-1.707 0-2.692-1.111-.973-1.125-.973-2.991 0-3.943 4.043-4.552l3.184-.49q0-2.223-2.085-2.223-2.096 0-3.985 1.442v-3.15q.756-.449 2.061-.793 1.317-.344 2.394-.344 5.017 0 5.017 5.783zM20.4 17.9v-.913l-2.13.318q-1.764.265-1.764 1.84 0 .714.424 1.177.435.45 1.168.45 1.02 0 1.66-.807.642-.82.642-2.065z"/></g></svg>', plan: '<svg viewBox="0 0 32 32"><path d="M4.178 4.956h17.37v6.45H4.178zm7.145 8.538h17.37v6.45h-17.37zm10.334 8.539h7.036v6.45h-7.036z"/></svg>', happenings: '<svg viewBox="0 0 32 32"><g><g transform="translate(.147 -44.7)"><path d="M11.213 48.85h17.37v6.45h-17.37z"/><ellipse cx="5.717" cy="52.075" rx="2.638" ry="2.785"/></g><g transform="translate(.22 -35.905)"><path d="M11.213 48.85h17.37v6.45h-17.37z"/><ellipse cx="5.717" cy="52.075" rx="2.638" ry="2.785"/></g><g transform="translate(.22 -27.11)"><path d="M11.213 48.85h17.37v6.45h-17.37z"/><ellipse cx="5.717" cy="52.075" rx="2.638" ry="2.785"/></g></g></svg>', powershell: '<svg viewBox="0 0 32 32"><path d="M7.205 19.83l7.286-3.933-7.27-4.419.008-4.668 12.29 7.931-.005 2.685-12.317 7.041.008-4.636zm18.594 5.205H15.137v-2.662h10.662v2.662z"/></svg>', pug: '<svg viewBox="0 0 1200 1000"><path d="M715.8 310.8h-.1c0 .1-.1.1-.1.2h.2v-.2zm-75 196.8c-5.8-2.7-10.9-5.6-14.9-11.6-5.3-8-18.2-11.9-30.5-11.1-12.3-.7-25.2 3.2-30.5 11.1-4 6-9.1 8.9-14.9 11.6-41.5 19.2-67.1 61.6-65.3 107.4-.7.6 6.3 61.6 17.2 69.9 4.3 2.2 55.2 14.9 93.5 14.9s91.6-12.8 95.9-14.9c10.9-8.3 15.6-69.4 14.9-69.9 1.7-45.8-23.8-88.2-65.4-107.4zm257-122.2c-18.7-17.9-36-37.8-57.6-51.8-26.7-17.3-58.2-20.5-89.4-22.4-3.3 5.2.7 8.4 3.5 11.6 4.7 5.4 10 10.2 14.9 15.4 27.9 28.6 48.4 61.3 55.4 101.3.8 4.5 12 91.8 14.7 94.1 5 15 9.1 15.9 19.9 4.6 2.9-3 19.2-45 31.1-60.2 11.9-15.2 45.2-37 47.1-42.1 1.6-5-25.6-37.1-39.6-50.5zm-472-62.6c2.8-3.2 6.8-6.4 3.5-11.6-31.2 2-62.7 5.1-89.4 22.4-21.7 14-38.9 33.9-57.6 51.8-14 13.4-41.3 45.4-39.4 50.5 1.9 5.1 35.2 26.9 47.1 42.1 11.9 15.2 28.2 57.2 31.1 60.2 10.7 11.3 14.9 10.3 19.9-4.6 2.7-2.3 13.9-89.6 14.7-94.1 7-40 27.5-72.7 55.4-101.3 4.7-5.2 10-10 14.7-15.4zm378.4 211.1v-.3c0 .1-.1.1-.1.2s.1.1.1.1z"/><path d="M734.1 338.3c-4.9-5.2-10.2-10.3-14.9-15.7-2.8-3.2-6.7-6.2-3.6-11.6-27.7-2.8-55.2-7.7-83.2-9.6-51.3-3.5-101.9-.2-152.2 9.7-5 1-9.7 2.7-14.6.2 0 .7-.1 1.3-.2 1.9 1.2 4-2.1 6.7-4.5 9.5-4.7 5.4-10 10.2-14.9 15.4-27.9 28.6-48.4 61.3-55.4 101.3-.3 1.6-2 14.6-4.2 30.4 0 1.5-.1 3-.2 4.3l-.3-.6c-2.5 18.3-5 52.1-3.7 60.3 1.8 11.6 3.1 23.4 10.9 33.1 6.9 13.4 20.4 23 23.2 38.8 5.3 30.6 23.8 48.1 50.2 57.7-10.3-18.8-14.8-69-14-69.5-2.3-49.5 30.2-95.3 83.1-116 7.4-2.9 13.9-6.1 19-12.6 6.8-8.6 23.1-12.8 38.8-12 15.7-.8 32 3.4 38.8 12 5.1 6.5 11.6 9.7 19 12.6 52.9 20.7 85.4 66.5 83.1 116 .7.5-3.5 48.4-13.3 68.1 23.2-9.9 39.9-26 44.9-51.8 1.9-9.8 5.5-18.5 11.7-26.3 3.4-4.3 7.7-8.2 8-14.2 4.9-2.5 6.5-7.3 8.2-11.9 3.1-8.2 4.5-17.3 10.4-24.2-2.8-4.7-13.8-89.7-14.6-94.1-7.1-39.8-27.6-72.6-55.5-101.2zm-297.7 46.1c-.5-.5-1-1-1.5-1.3 1.1.1 1.5.6 1.5 1.3zm27.9 105c-24.1 0-43.6-19.5-43.6-43.6s19.5-43.6 43.6-43.6 43.6 19.5 43.6 43.6-19.5 43.6-43.6 43.6zm223.2-17.2s.1 0 .2-.1c0 .1 0 .1.1.2-.1 0-.2-.1-.3-.1zm38.3 17.2c-24.1 0-43.6-19.5-43.6-43.6s19.5-43.6 43.6-43.6 43.6 19.5 43.6 43.6-19.5 43.6-43.6 43.6zm46.3-26.6c0-.6-.1-1-.2-1.4.1-1 .1-1.9.2-2.9.2 1.5.4 2.9 0 4.3zm.3-10.2c-.2.4-.3.7-.4 1.1v-.9c.3-.3.5-.4.4-.2z"/></svg>', puppet: '<svg viewBox="0 0 32 32"><path d="M7.239 2.865h7.972c.004 2.03-.007 4.06.005 6.09 1.088 1.071 2.16 2.16 3.244 3.235l.034.015c2.02.006 4.04 0 6.06.003l-.001 7.971h-6.014c-.103-.008-.154.103-.224.16-1.034 1.03-2.06 2.068-3.099 3.094-.012 2.029-.001 4.06-.005 6.089H7.239V21.55c2.033-.002 4.066.003 6.099-.002 1.083-1.09 2.172-2.174 3.258-3.26v-4.186c-1.086-1.09-2.176-2.176-3.262-3.265H7.239V2.866z"/><path d="M9.91 5.536h2.643v2.642H9.91V5.536zm0 18.686h2.643v2.642H9.91v-2.642z"/></svg>', python: '<svg viewBox="0 0 32 32"><path d="M15.6 15.5h-2c-1.4 0-2.3.9-2.3 2.3v1.8c0 .2-.1.3-.3.3h-.9c-.9 0-1.6-.4-2-1.2-.3-.6-.5-1.2-.5-1.8-.1-1.1-.1-2.2.3-3.3.3-.9.9-1.6 1.9-1.8h5.8c.1 0 .3 0 .3-.1v-.5s-.2-.1-.3-.1h-3.4c-.3 0-.4-.1-.4-.4V9.4c0-.7.3-1.2.9-1.4.5-.2 1-.4 1.5-.5 1.2-.2 2.4-.2 3.6.1.5.1 1 .3 1.4.6.4.4.7.8.6 1.4v3.6c0 1.4-.8 2.2-2.2 2.2-.7.1-1.4.1-2 .1zm-2.8-6c0 .4.3.8.8.8.4 0 .8-.4.8-.8s-.4-.7-.8-.8c-.5 0-.8.4-.8.8zm3.6 7h2c1.4 0 2.3-.9 2.3-2.3v-1.8c0-.2.1-.3.3-.3h.9c.9 0 1.6.4 2 1.2.3.6.5 1.2.5 1.8.1 1.1.1 2.2-.3 3.3-.3.9-.9 1.6-1.9 1.8h-5.8c-.1 0-.3 0-.3.1v.5s.2.1.3.1h3.4c.3 0 .4.1.4.4v1.3c0 .7-.3 1.2-.9 1.4-.5.2-1 .4-1.5.5-1.2.2-2.4.2-3.6-.1-.5-.1-1-.3-1.4-.6-.4-.4-.7-.8-.6-1.4v-3.6c0-1.4.8-2.2 2.2-2.2.7-.1 1.4-.1 2-.1zm2.8 6c0-.4-.3-.8-.8-.8-.4 0-.8.4-.8.8s.4.7.8.8c.5 0 .8-.4.8-.8z"/></svg>', react: '<svg viewBox="0 0 32 32"><path d="M22 19.4c.1 1.1.2 2.1.2 3.2 0 1.3-.7 2.2-1.7 2.3-.5.1-1.1 0-1.6-.2-1-.5-1.9-1.2-2.9-1.8-.5.4-1 .8-1.6 1.2-.3.2-.7.4-1 .5-1.8.8-3.3-.1-3.4-2.1 0-1 .1-2.1.2-3.2-.6-.2-1.2-.4-1.8-.8-.6-.3-1.1-.7-1.6-1.2-.9-.9-.8-2 .1-2.9.8-.9 1.9-1.3 3-1.7.1 0 .3-.1.4-.1-.1-.7-.2-1.5-.3-2.2 0-.6.1-1.3.2-1.9.3-1.1 1.3-1.6 2.5-1.3 1.2.3 2.1 1 2.9 1.7.2.1.3.3.4.4.8-.6 1.6-1.2 2.5-1.7.6-.4 1.3-.6 2-.4 1 .2 1.6 1.1 1.7 2.4v1.6c0 .5-.2 1-.3 1.6.6.2 1.1.4 1.7.7.8.4 1.6.8 2.1 1.6.5.7.5 1.5 0 2.2-.5.8-1.3 1.2-2.1 1.6-.6.1-1.1.3-1.6.5zm-5.8-.1c.3 0 .8-.1 1.2-.1.3 0 .5-.1.7-.4.5-.8 1-1.6 1.4-2.5.1-.2.1-.5 0-.6-.5-.9-1-1.7-1.5-2.5-.1-.2-.3-.3-.5-.3-.9 0-1.7 0-2.6-.1-.5 0-.9.2-1.2.7-.2.3-.4.6-.6 1-1.1 2-1.1 1.2 0 3.2 1.2 1.9.6 1.5 3.1 1.6zm-5.8-.8c.3-.8.6-1.6.9-2.3v-.4c-.3-.8-.6-1.5-.9-2.3-1 .3-2 .7-2.8 1.3-.9.7-.9 1.6 0 2.3.8.8 1.8 1.1 2.8 1.4zm11.3-5.1c-.4.9-.7 1.7-1 2.5 0 .1-.1.2 0 .2.3.8.6 1.6 1 2.6.9-.5 1.9-.9 2.7-1.4 1.1-.7 1.1-1.7 0-2.4-.8-.7-1.8-1-2.7-1.5zm-10.7-1c.9-.1 1.7-.2 2.5-.4.1 0 .2-.1.2-.1.5-.7 1-1.3 1.6-2-.8-.7-1.6-1.4-2.6-1.8-1.1-.4-1.8 0-2 1.2-.1 1 .1 2 .3 3.1zm10 0c0-.1.1-.3.1-.4.2-1 .4-2.1 0-3.1-.2-.7-.7-1-1.3-.9-1.3.2-2.2 1.1-3.1 1.9.5.7 1 1.3 1.5 1.9l.3.3c.8.1 1.6.2 2.5.3zm-10 7.2c-.2 1.1-.5 2.1-.2 3.2.2 1 .9 1.4 1.9 1.1 1.1-.3 1.9-1.1 2.7-1.8-.5-.7-1-1.3-1.6-2-.1-.1-.2-.2-.3-.2-.8 0-1.6-.1-2.5-.3zm5.6 2.5c.6.8 1.8 1.6 2.6 1.9 1 .3 1.7 0 1.9-1.1.2-1.1 0-2.1-.2-3.2-.9.1-1.8.1-2.6.4-.6.3-.9 1-1.3 1.5-.1.2-.2.3-.4.5zm.6-10.2c-.4-.5-.8-.9-1.2-1.4-.4.5-.7.9-1.2 1.4h2.4zm0 8.2h-2.3c.4.5.8.9 1.2 1.4.3-.5.7-.9 1.1-1.4zm-4.1-1c-.4-.7-.8-1.3-1.2-2.1-.2.6-.4 1.1-.6 1.7.5.2 1.1.3 1.8.4zm7-2.1l-1.2 2.1c.7-.1 1.2-.2 1.8-.3-.1-.6-.3-1.1-.6-1.8zm-8.2-2l1.2-2.1c-.7.1-1.2.2-1.8.3.2.7.3 1.2.6 1.8zm7-2.1c.2.4.4.7.6 1 .2.3.4.6.6 1 .2-.6.4-1.2.6-1.7-.6 0-1.1-.1-1.8-.3z"/></svg>', reasonml: '<svg viewBox="0 0 32 32"><path fill-rule="evenodd" d="M6 6h20v20H6zm7.002 12.177v2.349h1.453c.808 0 1.278-.415 1.278-1.191 0-.754-.47-1.158-1.278-1.158zm5.911-1.595h6.042v1.595h-4.043v1.431h3.649v1.584l-3.649.011v1.443h4.152v1.595h-6.151zm-1.049 7.659h-2.262l-1.114-2.12h-1.486v2.12h-2v-7.659h3.442c2.032 0 3.19.983 3.19 2.687 0 1.159-.48 2.011-1.365 2.47z"/></svg>', R: '<svg preserveAspectRatio="xMidYMid" viewBox="0 0 32 32"><defs><linearGradient id="a" x1="7.1" x2="25" y1="10.197" y2="22.185" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#CBCED0"/><stop offset="1" stop-color="#84838B"/></linearGradient><linearGradient id="b" x1="14.475" x2="24.355" y1="13.919" y2="24" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#276DC3"/><stop offset="1" stop-color="#165CAA"/></linearGradient></defs><g fill-rule="evenodd"><path d="M16.05 22.185c-4.943 0-8.95-2.684-8.95-5.994s4.007-5.994 8.95-5.994S25 12.88 25 16.19s-4.007 5.994-8.95 5.994zm1.37-9.645c-3.757 0-6.803 1.835-6.803 4.098s3.046 4.098 6.803 4.098 6.53-1.254 6.53-4.098-2.773-4.098-6.53-4.098z" transform="translate(-.05 -1.098)"/><path d="M20.73 19.48s.542.163.856.323c.109.055.298.166.434.3s.199.285.199.285l2.135 3.599-3.45.002-1.614-3.03s-.33-.568-.534-.732c-.17-.137-.242-.186-.4-.186h-.82v3.957l-3.053.001v-10.08h6.13s2.793.05 2.793 2.707-2.67 2.855-2.67 2.855zm-1.328-3.375l-1.848-.001-.001 1.714 1.849-.001s.856-.003.856-.872c0-.887-.856-.84-.856-.84z" transform="translate(-.05 -1.098)"/></g></svg>', ruby: '<svg viewBox="0 0 32 32"><path d="M17.8 7.5h4.1c.1 0 .2.1.3.1 1.2.3 2 1 2.2 2.2 0 .2.1.4.1.6v.8c0 .2-.1.4-.1.6-.1 1.4-.2 2.9-.3 4.3-.2 2.4-.4 4.7-.5 7.1 0 .4-.1.5-.5.5-1.1.1-2.1.1-3.2.2-2.2.1-4.4.3-6.6.4-.6 0-1.2.1-1.8.2h-1c-.1 0-.2-.1-.3-.1-1.2-.2-2.1-.9-2.4-2.1-.1-.3-.1-.6-.2-.9v-.5c0-.1.1-.2.1-.4 0-.8.1-1.7.1-2.5 0-.5 0-.9.1-1.3.7-1.8 1.5-3.5 2.9-4.9 1.7-1.8 3.6-3.2 6-3.8.3-.2.6-.3 1-.5z"/></svg>', html_erb: '<svg viewBox="0 0 32 32"><path d="M7.5 14.9L13.9 9v2.8L9.1 16l4.8 4.2V23l-6.4-5.9v-2.2zm17 2.3l-6.4 5.9v-2.8l4.9-4.2V16l-4.9-4.2V8.9l6.4 5.9v2.4z"/></svg>', rust: '<svg viewBox="0 0 32 32"><path d="M21.7 8.4V9l.1.1h.1c.3-.1.6-.1.9-.2.2-.1.4.1.3.3-.1.3-.1.6-.2.9v.1l.1.1c0 .1.1.1.2.1h.9c.2 0 .3.1.3.3v.2c-.1.3-.3.6-.4.8v.1s.1.1.1.2h.1c.3.1.6.1.9.2.2 0 .3.3.2.5-.2.3-.4.5-.5.7v.2c0 .1.1.1.2.2.3.1.5.2.8.3.2.1.3.3.1.5-.2.2-.4.4-.7.6v.3s.1.1.2.1c.2.1.4.3.7.4.2.1.2.4 0 .5-.3.2-.5.3-.8.5v.1c0 .2 0 .2.1.3.2.2.4.4.6.5.2.2.1.4-.1.5-.3.1-.6.2-.8.3 0 0-.1 0-.1.1-.1.1 0 .2 0 .3.2.2.3.4.5.7.1.1.1.3-.1.4-.1 0-.1 0-.2.1-.3 0-.5.1-.8.1h-.1c0 .1-.1.1-.1.2s0 .1.1.2c.1.2.2.5.3.7.1.1 0 .3-.1.4h-1.2c-.1.1-.1.2-.1.3.1.3.1.5.2.8.1.2-.1.4-.4.4-.3-.1-.6-.1-.9-.2H22l-.1.1s-.1.1 0 .1v.9c0 .2-.1.3-.3.3h-.2c-.3-.1-.5-.2-.8-.4h-.1c-.1 0-.2.1-.2.2 0 .3-.1.5-.1.8 0 .2-.3.3-.5.2-.2-.2-.5-.4-.7-.5h-.1c-.1 0-.2.1-.2.2-.1.3-.2.5-.3.8-.1.2-.2.2-.3.2-.1 0-.1-.1-.1-.1-.2-.2-.4-.4-.6-.7h-.2c-.1 0-.2.1-.2.2-.1.2-.3.5-.4.7-.1.2-.4.2-.5 0-.2-.3-.3-.5-.5-.8h-.2c-.1 0-.1 0-.2.1l-.6.6c-.1.1-.2.1-.4.1-.1 0-.1-.1-.1-.2l-.3-.9s0-.1-.1-.1h-.3c-.2.2-.4.3-.7.5-.4-.2-.7-.3-.7-.5-.1-.3-.1-.6-.1-.9 0 0 0-.1-.1-.1s-.1-.1-.2-.1-.1 0-.2.1c-.2.1-.5.2-.7.3-.2.1-.4 0-.4-.2V23l-.1-.1h-.1c-.3.1-.6.1-.9.2-.2.1-.4-.1-.3-.3.1-.3.1-.6.2-.9v-.1l-.1-.1H8c-.2 0-.3-.1-.3-.3v-.2c.1-.3.3-.6.4-.8v-.1s0-.1-.1-.1c0-.1-.1-.1-.1-.1-.3 0-.6-.1-.9-.1-.2 0-.3-.3-.2-.5.2-.2.4-.5.5-.7v-.1c0-.1 0-.1-.1-.2 0 0-.1-.1-.2-.1-.2-.1-.5-.2-.7-.3-.2-.1-.3-.3-.1-.5.3-.1.5-.4.8-.6v-.2c0-.1 0-.2-.1-.2-.2-.1-.5-.3-.7-.4-.2-.1-.2-.4 0-.5.3-.2.5-.3.8-.5V15l-.1-.1-.6-.6c-.1-.1-.1-.3 0-.4 0 0 .1 0 .1-.1l.9-.3v-.1c.1-.1 0-.2 0-.3-.2-.2-.3-.4-.5-.6-.1-.2 0-.5.2-.5.3-.1.6-.1.9-.2H8c0-.1.1-.1.1-.2s0-.1-.1-.2c-.1-.2-.2-.5-.3-.7-.1-.2 0-.4.2-.4H9s0-.1.1-.1v-.1c-.1-.3-.2-.6-.2-.9-.1-.2.1-.4.3-.3.3 0 .6.1.9.2h.1l.1-.1s.1-.1 0-.1V8c0-.2.1-.3.3-.3h.2c.3.1.6.3.8.4h.1s.1 0 .1-.1c.1 0 .1-.1.1-.1 0-.3.1-.6.1-.9 0-.2.3-.3.5-.2.2.2.5.4.7.5h.1c.1 0 .1 0 .2-.1 0 0 0-.1.1-.2.1-.2.2-.5.3-.7.1-.2.2-.2.4-.2l.1.1c.1.3.4.5.6.8h.1c.1 0 .2-.1.2-.1.1-.2.3-.5.4-.7.2-.2.4-.2.5-.1l.1.1c.2.3.3.5.5.8h.3c.1 0 .1-.1.1-.1.2-.2.4-.4.5-.6.1-.1.3-.1.4 0v.1c.1.3.2.6.3.8l.1.1h.2c.3-.1.6-.3.8-.5.2-.1.5 0 .5.2 0 .3.1.6.1.9 0 0 0 .1.1.1h.1c.1.1.2.1.2 0 .2-.1.5-.2.8-.3.2-.1.4 0 .4.3v.4zm-11.1 2.7h7.6c.3 0 .6 0 .9.1.6.2 1.1.5 1.4.9.3.3.5.7.5 1.2 0 .4-.1.8-.3 1.2-.2.3-.5.6-.8.8-.1.1-.2.2-.3.2.1.1.2.1.3.2.2.2.5.4.6.7.2.3.3.7.3 1 0 .1.1.2.2.3.2.2.5.2.8.2.2 0 .4-.1.5-.2.2-.2.2-.4.3-.6v-.5c0-.1 0-.1.1-.1h.7v-1.3c-.3-.1-.6-.3-.9-.4-.1-.1-.3-.1-.4-.2-.3-.1-.4-.4-.3-.8.2-.5.4-1 .7-1.5v-.1c-.4-.6-.8-1.2-1.4-1.7-1-.9-2.2-1.5-3.6-1.8h-.1c-.3.3-.6.6-1 .9-.2.2-.6.2-.8 0l-.9-.9h-.1c-.4.1-.7.2-1 .3-1.1.4-2 1-2.8 1.8-.1.1-.2.2-.2.3zm11.3 9.2h-3c-.2 0-.3 0-.4-.1-.4-.2-.6-.6-.7-1-.1-.4-.2-.7-.2-1.1 0-.2-.1-.4-.2-.6-.2-.5-.6-.8-1.1-.8h-1.8V18h1.8c.1 0 .1 0 .1.1v2c0 .1 0 .1-.1.1h-6c.2.3.4.5.6.7h.1c.4-.1.8-.2 1.2-.2.3-.1.6.1.7.4.1.4.2.9.3 1.3v.1c.8.3 1.6.6 2.4.6.7.1 1.4 0 2.1-.1.5-.1 1-.3 1.5-.5v-.1c.1-.4.2-.9.3-1.3.1-.3.3-.5.7-.4l1.2.3h.1c0-.2.2-.5.4-.7zm-11.9-7l.3.6c0 .1.1.2 0 .3 0 .2-.2.3-.3.4-.4.2-.8.4-1.2.5 0 0-.1 0-.1.1v.5c0 .7.1 1.4.3 2.2 0 0 0 .1.1.1h2.1v-4.7H10zm4.3 1.4c.1 0 .1 0 0 0h2.3c.2 0 .4 0 .6-.1.1-.1.2-.1.3-.3.1-.2.1-.5-.1-.7-.2-.2-.5-.3-.7-.3h-2.5c.1.5.1.9.1 1.4zm-6-1c0 .3.3.6.6.6s.6-.3.6-.6-.3-.6-.6-.6-.6.3-.6.6zM21 22.1c0-.3-.3-.6-.6-.6s-.6.3-.6.6.3.6.6.6.6-.2.6-.6zm-9.4-.6c-.3 0-.6.3-.6.6s.3.6.6.6.6-.3.6-.6-.3-.6-.6-.6zm5-13.1c0-.3-.2-.6-.6-.6-.3 0-.6.2-.6.6 0 .3.2.6.6.6.3 0 .5-.3.6-.6zm6.5 6c.3 0 .6-.3.6-.6s-.3-.6-.6-.6-.6.3-.6.6.2.6.6.6z"/></svg>', sass: '<svg viewBox="0 0 32 32"><path d="M18 17.3c-1.1.7-2.4 1.5-3.5 2.2.4.9.4 1.8.1 2.7-.5 1.6-1.7 2.5-3.2 2.7-.4.1-.8 0-1.1-.1-.4-.1-.6-.4-.7-.7-.4-.9-.3-1.7.3-2.4.4-.4.8-.9 1.3-1.2.5-.4 1.2-.7 1.8-1.1.1-.1.2-.1.4-.2-.3-.2-.4-.4-.6-.4-.8-.5-1.6-1.1-2.3-1.8-.4-.4-.8-.8-1.1-1.3-.9-.7-1-1.7-.5-2.6.4-1 1.1-1.8 1.8-2.5 1.6-1.4 3.4-2.4 5.4-3.1 1.4-.5 2.8-.7 4.2-.5.4.2 1 .3 1.4.5 1.5.6 2.1 1.8 1.6 3.4-.4 1.3-1.2 2.4-2.4 3.1-1.6 1-3.2 1.4-5.1 1.1-.6-.1-1.1-.4-1.6-.9-.1-.2-.2-.4-.3-.5 0 0 0-.1.1-.2 0 0 .1 0 .2.1.8.8 1.7.9 2.6.7 1.7-.3 3.2-.9 4.3-2.2.4-.5.8-1.1 1-1.8.2-.8-.2-1.4-.9-1.8-.8-.4-1.6-.4-2.4-.3-2 .3-3.8 1.1-5.4 2.1-.9.5-1.7 1.1-2.3 1.9-.3.4-.5.8-.7 1.2-.3.8-.2 1.6.4 2.2.4.4.8.8 1.2 1.1.6.5 1.3 1.1 1.9 1.6.1 0 .2.1.3 0 .3-.2.5-.3.8-.4.9-.5 1.8-.9 2.8-1.1 0 .4.1.4.2.5 0-.1 0-.1 0 0zm-4.3 2.5c-.9.5-1.6 1-2.3 1.7-.4.4-.6.8-.7 1.3-.1.6.3.9.9.8.8-.2 1.4-.7 1.8-1.3.5-.8.5-1.5.3-2.5z"/></svg>', spring: '<svg viewBox="0 0 32 32"><path d="M23.4 8.1c1.1 3 1.9 5.9 1.5 9.1-.3 2.3-1.3 4.2-3.1 5.8-1.8 1.4-3.9 2.2-6.1 2.1C13.2 25 11 24 9.3 22c-1.7-2-2.4-4.2-2.2-6.7.1-1.9.8-3.6 2.1-5C10.6 8.4 12.7 7.4 15 7c2.4-.3 4.6.4 6.5 1.8 1.1.9 1.1.9 1.7-.4.1 0 .1-.1.2-.3zm-.8 5.8c-.5 2.2-1.9 4-3.7 5.5-1.3 1.1-2.9 1.6-4.5 2.2-.4.1-.8.3-1.2.4 0 .1 0 .2.1.3 2.2-.1 4.5 0 6.7-.4 2.7-.4 4-1.9 4.5-4.6.3-1.8.1-3.5-.4-5.3-.3-.9-.5-1.8-.8-2.8-.2.3-.3.4-.4.4-.9 1.4-2.2 2.3-3.7 3-1.3.6-2.9.6-4.3.7-1.3.1-2.5.4-3.5 1.2-1.6 1.2-2.2 3.7-1.3 5.3.5 1 1.1 1.2 2.1 1 .5-.1 1-.3 1.5-.4 3.9-1 7-2.8 8.9-6.5zm-12.1 7.3c-.4 0-.7.4-.7.8s.4.7.8.7.7-.4.7-.8c0-.5-.2-.7-.8-.7z"/></svg>', slim: '<svg viewBox="0 0 32 32"><path d="M7 22.4V9.6c0-.1.1-.1.1-.2.2-.7.6-1.4 1.3-1.8L9.6 7h12.8c.1 0 .1.1.2.1.9.3 1.6.9 2.1 1.7.1.3.2.5.4.7v12.8c0 .1-.1.1-.1.2-.2.7-.6 1.3-1.3 1.8-.4.3-.8.5-1.3.6H9.6c-.1 0-.1-.1-.2-.1-.9-.3-1.6-.9-2.1-1.7-.1-.1-.2-.4-.3-.7zm2.8-10.5c.9 1.1 1.7 2.2 2.6 3.2.1.1.3.2.4.2h6.4c.1 0 .3-.1.4-.1.9-1.1 1.7-2.2 2.6-3.2-3-3.6-9.1-3.9-12.4-.1z"/><path d="M18.3 10.4c-.4 1.3-.6 2.8-1 4.1h-1.9c1.1-1.4 2-2.8 2.9-4.1z"/></svg>', smarty: '<svg viewBox="0 0 32 32"><path d="M16 19.7h-2.1c-.7 0-.8 0-.9-.7-.3-1.5-.8-2.9-1.5-4.2-.4-.7-.7-1.4-1-2.2-.4-1.1-.5-2.2-.3-3.4.2-1.6 1.2-2.8 2.6-3.4 2.2-1 4.5-1 6.7.1 2 .9 2.9 3 2.5 5.3-.2 1.5-.8 2.7-1.5 4-.6 1.2-1.1 2.4-1.3 3.7-.2.9-.2.9-1.1.9-.8-.1-1.5-.1-2.1-.1zm-.1 7.3h-2.4c-.4 0-.6-.1-.6-.6 0-1.3-.2-1.2 1.2-1.2h4.3c.5 0 .6.2.6.6 0 1.1 0 1.1-1.1 1.1-.6.1-1.3.1-2 .1zm.1-3.6h-2.5c-.4 0-.5-.1-.5-.5 0-1.3-.1-1.2 1.1-1.2h4.3c.4 0 .6.2.6.6 0 1.2.1 1.1-1.1 1.1H16z"/></svg>', sbt: '<svg viewBox="0 0 32 32"><path d="M26 17c0 .5-.1.9-.2 1.4H12.6c-.9 0-1.3.5-1.3 1.3 0 .7.5 1.1 1.4 1.1h12.2c-1.6 3-4.2 4.8-7.6 5.2-5.3.6-10.2-3-11.1-8.1-1-5.3 2.3-10.3 7.4-11.6 4.2-1.1 8.8.8 11 4.5-.2.1-.5.1-.8.1h-6.5c-.7 0-1.2.5-1.2 1.2s.4 1.1 1.1 1.1h8.4c.2.5.3 1 .3 1.5H15c-.9 0-1.4.4-1.4 1.2 0 .7.5 1.1 1.4 1.1h10.1c.3-.1.6-.1.9 0z"/></svg>', scala: '<svg viewBox="0 0 32 32"><path d="M21.6 7v4.2c-.1.1-.1.2-.2.2-.3.3-.7.5-1.1.6-.9.3-1.9.5-2.8.7-1.6.3-3.1.5-4.7.7-.8.1-1.6.2-2.4.4V9.6c.1-.1.2-.1.4-.1 1.2-.2 2.5-.4 3.8-.5 1.9-.3 3.8-.5 5.6-1.1.5-.2 1.1-.4 1.4-.9zm0 5.6v4.2l-.2.2c-.5.4-1.1.6-1.6.8-.8.2-1.6.4-2.4.5-1 .2-1.9.3-2.9.5-1.4.2-2.7.3-4.1.6v-4.2c.1-.1.2-.1.3-.1 1.7-.2 3.4-.5 5.1-.7 1.4-.2 2.9-.5 4.3-.9.6-.2 1.1-.4 1.5-.9zM10.5 25h-.1v-4.2c.1-.1.2-.1.3-.1 1.2-.2 2.3-.3 3.5-.5 2-.3 3.9-.5 5.8-1.1.6-.2 1.2-.4 1.6-.9v4.2c-.1.2-.3.3-.5.5-.6.3-1.2.5-1.9.7-1.2.3-2.5.5-3.7.7-1.3.2-2.6.4-3.9.5-.4 0-.7.1-1.1.2z"/></svg>', ethereum: '<svg id="Layer_1" viewBox="0 0 32 32"><style>.st1{fill:#231f20}</style><path d="M12.4 16.8l3.6 2.1h.1c1.8-1.1 3.6-2.2 5.5-3.2v-.1c-.5-.9-1-1.7-1.6-2.6-1.3-2.2-2.6-4.3-3.9-6.5-.1.2-.2.3-.3.5-.6 1-1.2 1.9-1.7 2.9-.5.9-1.1 1.8-1.6 2.7-.6 1-1.2 2-1.8 2.9v.1c.4.5 1.1.8 1.7 1.2z" class="st1"/><path d="M16.7 20.6c-.2.1-.5.3-.7.4-.8-.5-1.6-.9-2.4-1.4-.9-.5-1.8-1.1-2.7-1.6-.1-.1-.2-.1-.4-.2.3.4.5.7.8 1.1.7 1 1.4 2 2.2 3 .8 1.2 1.7 2.3 2.5 3.5 0 0 0 .1.1.1 1.2-1.7 2.5-3.5 3.7-5.2.6-.8 1.2-1.7 1.8-2.5-1.7.9-3.3 1.8-4.9 2.8z" class="st1"/></svg>', stylus: '<svg viewBox="0 0 32 32"><path d="M25.1 3.2c-.2 0-.5.1-.7.2-.9.3-1.5 1-2.1 1.7-1.2 1.3-2.2 2.8-3 4.4-1.1 1.9-1.9 3.9-2.5 6-.2.8-.4 1.7-.4 2.6 0 .5.4.8.8.7.9-.1 1.4-.8 1.9-1.4v-.3c-.3.3-.6.6-.9.8-.3.2-.5.1-.5-.2v-1c0-1.2.3-2.4.7-3.5.4-1.1.8-2.2 1.3-3.2.7-1.5 1.6-3 2.8-4.2.5-.8 1.2-1.3 2.2-1.4.5 0 .8.1.9.5 0 .1.1.1.1.1s.1-.1.2-.1c.1-.3.2-.6.2-.9 0-.4-.5-.9-1-.8zm-10 10.1c-.7 0-1.8.8-2.1 1.4v.2c.1 0 .1 0 .2-.1s.2-.3.4-.4c.2-.2.4-.4.7-.3.3.1.3.5.2.7-.1 1.2-.3 2.2-.5 3.3-.4 1.5-.9 3-1.6 4.3-.8 1.6-1.7 3-3 4.2-.6.5-1.3 1-2.1 1-.5 0-.7-.1-.8-.6 0-.1-.1-.1-.2-.2-.3.4-.4.8-.3 1.3.1.4.3.7.6.7.4 0 .8-.1 1.1-.2.7-.2 1.2-.8 1.7-1.3 1.2-1.2 2.2-2.6 3-4.1 1.3-2.2 2.3-4.5 3-7 .2-.8.4-1.5.3-2.3 0-.3-.3-.6-.6-.6z"/></svg>', swift: '<svg viewBox="0 0 32 32"><path d="M9.6 11c0-.1-.1-.1-.1-.2-.2-.3-.5-.6-.7-.9-.4-.4-.7-.7-.9-1.1.3.3.7.6 1 .8.2.1.3.3.5.4.4.3.7.6 1.1.9.4.4.9.7 1.3 1 .5.4 1 .8 1.5 1.1.8.6 1.6 1.1 2.4 1.7v-.1c-.6-.7-1.2-1.4-1.9-2.1-.4-.5-.8-1-1.2-1.4-.3-.4-.7-.9-1-1.3 0-.1-.1-.1-.1-.2l-.9-1.2c-.1-.2-.3-.4-.4-.7.5.4.9.9 1.4 1.3.5.5 1.1 1 1.6 1.5.4.3.8.7 1.2 1l1.2.9c.3.2.5.4.8.6 1.1.8 2.2 1.6 3.4 2.4.1.1.2.1.2-.1.4-1 .5-2 .5-3.1 0-.9-.2-1.9-.5-2.7 0-.2-.1-.5-.2-.8-.2-.4-.4-.9-.7-1.3-.1-.4-.4-.8-.7-1.1 0-.1-.1-.1-.1-.2.4.2.7.4 1 .6 1.5 1.1 2.7 2.4 3.7 3.9.3.6.7 1.3.9 1.9.4 1 .7 2.1.7 3.2v.1c0 .4 0 .9-.1 1.3s-.1.8-.2 1.2c0 .1 0 .2.1.3.8 1 1.3 2.1 1.5 3.3.1.3.1.6.1 1 0 .3 0 .5-.1.8 0 .1 0 .1-.1.1s-.1-.1-.1-.1c-.4-.8-1-1.4-1.9-1.5-.8-.2-1.5 0-2.2.3-.5.2-.9.5-1.3.6-1.4.6-2.9.8-4.4.6-1-.1-2-.3-3-.7h-.1c-.6-.3-1.2-.5-1.8-.8-2-1.1-3.6-2.6-4.9-4.5l-.1-.1c.1 0 .1 0 .2.1.3.2.6.4 1 .6.4.2.8.5 1.2.6.5.3 1.1.5 1.7.6.1.1.1 0 .2.1 1 .3 2.1.4 3.2.4 1.3-.1 2.5-.4 3.6-1 .2-.1.2-.1 0-.2-.7-.5-1.3-1.1-2-1.7-.5-.4-.9-.9-1.4-1.3-.4-.3-.7-.7-1-1.1-.2-.3-.5-.5-.7-.8-.4-.4-.8-.9-1.2-1.3-.3-.4-.6-.7-.9-1.1 0-.2-.2-.4-.3-.5z"/></svg>', db: '<svg viewBox="0 0 32 32"><path d="M16.4 14c-2.4 0-4.7-.1-7-.6-.6-.1-1.1-.4-1.7-.6-.3-.1-.4-.3-.4-.6V8.7c0-.2.1-.4.3-.4.7-.3 1.3-.6 2-.7C12.1 7 14.5 7 17 7c2 0 4.1.2 6 .7.4.1.9.3 1.3.5.3.1.4.3.4.6v3.5c0 .2-.2.4-.3.5-.4.2-.8.4-1.2.5-1.4.2-2.8.5-4.2.6-.9.1-1.8 0-2.6.1zm8.3.2v3.6c0 .2-.3.5-.5.5-.6.2-1.3.5-1.9.6-2.8.5-5.7.6-8.6.5-1.6-.1-3.3-.2-4.9-.7-.4-.1-.8-.3-1.2-.5-.2-.1-.3-.3-.3-.5v-3.5c2.9 1 5.8 1.1 8.7 1.1 2.9.1 5.8-.1 8.7-1.1zm0 5.6v3.5c0 .2-.3.5-.5.6-.8.3-1.6.6-2.4.7-4 .6-8 .6-12.1-.1-.7-.1-1.4-.4-2-.6-.3-.1-.4-.3-.4-.7v-3.4c2.8 1 5.7 1.1 8.7 1.1 2.9 0 5.8-.1 8.7-1.1z"/></svg>', terraform: '<svg viewBox="0 0 32 32"><path fill-rule="evenodd" d="M12.5 9l6.63 3.338V19l-6.63-3.37M27.13 9l-6.63 3.338V19l6.63-3.37M4.5 5l6.63 3.338V15L4.5 11.63m8 5.37l6.63 3.338V27l-6.63-3.37"/></svg>', tex: '<svg viewBox="0 0 32 32"><path d="M8.7 18.8H6.5 11 8.7zm15.5-1.3l-1.4-2.2-1.5 2.2.4.1v1.1h2.2v-1.2z"/><path d="M7.9 17.5H6.5v1.3h4.4v-1.3H9.6V11h.4c1.2 0 1.4.1 1.6 1h1.2l-.2-2.3H4.8l-.3 3.6h1.2v-.5c.2-1.7.3-1.8 1.8-1.8h.4v6.5z"/><path d="M15.8 21.1h-1.7v-2.8h.6c.7 0 .7 0 .7.9v.5h1.2v-4.1h-1.2v.5c0 .9 0 .9-.7.9h-.6v-2.4h1.6c1.5 0 1.6.4 1.7 1.8h1.2l-.3-3.2h-7v1.3h1v6.4h-1v1.3h7.1l.4-2.6h-1.3c0 1.1-.4 1.5-1.7 1.5z"/><path d="M21.7 17.6h-.5l1.5-2.2 1.5 2.2h-.3v1.1h3.6v-1.2H27c-.6 0-.6 0-.7-.2l-2.4-3.5 1.6-2.3c.2-.2.4-.6 1.1-.6h.5V9.6H24v1.2h.5l-.1.1-1.2 1.7-1.3-1.6h.3V9.6h-3.6V11h.5c.6 0 .6 0 .7.2l2.1 3.1-1.8 2.7-.3.3c-.2.2-.5.3-.8.3h-.5v1.2h3.2v-1.2z"/></svg>', default: '<svg viewBox="0 0 1200 1000"><path d="M394.1 537.8h411.7v54.7H394.1v-54.7zm0-130.3H624v54.7H394.1v-54.7zm0-130.3h411.7v54.7H394.1v-54.7zm0 390.9H700v54.7H394.1v-54.7z"/></svg>', twig: '<svg viewBox="0 0 32 32"><rect width="100%" height="100%"/><g class="currentLayer"><path d="M20.505 6.481c.122 0 .246-.005.368.001l.001.027a22.9 22.9 0 01-.37 0V6.48z"/><path d="M19.48 6.964c.296-.22.644-.43 1.024-.455h.37c.041.014.142-.031.143.028-.095 0-.186 0-.279.005-.379-.022-.71.206-.998.424l-.26-.002z"/><path d="M19.74 6.966c.287-.218.62-.446.998-.424-.256.079-.51.185-.712.367-.175.137-.32.305-.48.459a.32.32 0 00-.271.074c.13-.18.294-.336.465-.476z"/><path d="M20.738 6.542c.093-.005.184-.005.279-.005.415.073.76.372 1.026.683l-.024.065c-.282-.283-.626-.527-1.032-.59-.069-.024-.137-.037-.199-.002-.168.04-.332.1-.483.186-.121.07-.21.18-.319.264-.088-.082-.004-.155.04-.234.201-.182.456-.288.712-.367z"/><path d="M20.788 6.693c.062-.035.13-.022.2.001a.21.21 0 01-.2-.001z"/><path d="M19.546 7.368c.16-.154.305-.322.48-.459-.044.079-.128.152-.04.234-.317.4-.56.864-.797 1.319-.036.068-.044.163-.107.21.008-.048.02-.095.028-.143a9.271 9.271 0 00-.281-.002c0-.014.003-.04.004-.054.125-.207.243-.419.368-.626.105-.167.24-.313.345-.48z"/><path d="M18.777 7.623c.238-.216.438-.476.703-.66.087 0 .172.003.26.003a2.62 2.62 0 00-.465.476c-.075.077-.14.162-.213.242-.084.045-.149-.024-.222-.057-.027.034-.049.077-.098.08l.035-.084z"/><path d="M22.043 7.22c.053.06.104.124.14.197l-.018.032c-.04-.057-.134-.1-.146-.164l.024-.065z"/><path d="M19.275 7.442a.32.32 0 01.271-.074c-.106.166-.24.312-.345.48-.043.03-.083.066-.125.098-.054-.015-.105-.037-.16-.048l.146-.214c.072-.08.138-.165.213-.242z"/><path d="M22.183 7.417a.413.413 0 01.114.203.403.403 0 01-.132-.171l.018-.032z"/><path d="M18.84 7.627c.073.033.138.102.222.057l-.146.214a9.259 9.259 0 00-.552.91c-.106.198-.205.4-.3.603-.135 0-.266-.018-.399-.031-.04.038-.072.083-.118.113a9.299 9.299 0 011.042-1.629c.046-.055.083-.131.153-.158.049-.002.071-.045.098-.079z"/><path d="M19.076 7.946c.042-.032.082-.068.125-.099-.125.207-.243.419-.368.626-.034.023-.065.048-.098.07-.045-.012-.086-.036-.132-.043-.113.066-.104.278-.24.308.167-.313.352-.618.553-.91.055.011.106.033.16.048z"/><path d="M18.735 8.543c.033-.022.064-.047.098-.07l-.004.054c-.225.39-.384.817-.557 1.233-.099.29-.24.568-.297.87l-.03.08c-.127.098-.121.308-.23.431-.163.014-.117-.207-.25-.235.027-.093.06-.185.084-.28.169-.405.33-.815.514-1.215.096-.203.195-.405.3-.603.136-.03.127-.242.24-.308.046.007.087.031.132.043z"/><path d="M18.829 8.527c.094 0 .186 0 .28.002-.007.048-.019.095-.027.142a20.237 20.237 0 00-.772 2.008l-.02-.002c-.105-.011-.212-.017-.315-.046.057-.303.198-.581.297-.871.173-.416.332-.842.557-1.233z"/><path d="M17.547 9.493c.046-.03.079-.075.118-.113.133.013.264.032.398.031-.184.4-.345.81-.514 1.215-.084.032-.051.174-.14.175-.067-.095-.147-.19-.153-.31-.056-.013-.113 0-.127.062-.096.13-.077.317-.2.426.01-.13.078-.246.121-.367.15-.38.296-.767.497-1.119z"/><path d="M17.129 10.553c.014-.062.07-.075.127-.063.006.122.086.216.153.311.089-.001.056-.143.14-.175-.024.095-.057.187-.085.28-.174.487-.344.98-.462 1.484-.145.434-.222.888-.336 1.331-.07.04-.135.09-.216.107-.143.074-.275.2-.315.362a.354.354 0 01.002-.141c.188-1 .422-1.992.738-2.96l.055-.11c.122-.11.103-.297.199-.426z"/><path d="M17.975 10.63c.103.03.21.036.316.047-.074.034-.06.115-.062.182-.062.32-.189.629-.27.946a40.74 40.74 0 00-.312 1.25c-.022.03.01.112-.043.106-.094 0-.186-.008-.278-.023a.875.875 0 00-.149.194c.091-.474.243-.935.37-1.4.116-.413.266-.815.398-1.223l.03-.078z"/><path d="M18.23 10.86c.001-.068-.013-.15.06-.183-.015.057-.004.155-.06.182z"/><path d="M17.714 11.141c.11-.123.104-.333.231-.432-.132.408-.282.81-.399 1.222-.062.064-.104.143-.15.218a.523.523 0 01-.154.013c-.047-.048.027-.148-.084-.106-.036.118-.064.245-.156.334.118-.505.288-.997.462-1.484.134.028.088.249.25.235z"/><path d="M17.396 12.149c.046-.075.088-.154.15-.218-.126.466-.278.927-.369 1.401-.055.144-.066.3-.114.447-.109.171-.118.383-.205.564-.09.02-.2.03-.267.104-.031.103-.05.21-.089.311a.878.878 0 01.02-.211c.02-.28.135-.545.144-.826.114-.443.19-.897.336-1.331.092-.09.12-.216.156-.334.111-.042.037.058.084.106a.523.523 0 00.154-.013z"/><path d="M17.326 13.138c.092.015.184.022.278.023-.104.664-.265 1.318-.343 1.986l-.026.003c-.01-.144.021-.284.048-.423-.131-.072-.249.057-.379.063-.034.027-.044.071-.063.109.039-.379.165-.744.222-1.12.048-.146.06-.303.114-.447a.875.875 0 01.149-.194z"/><path d="M16.45 13.828c.081-.017.146-.067.216-.107-.009.28-.124.546-.144.826a1.312 1.312 0 00-.447 0c-.025-.124.064-.232.06-.357.04-.161.172-.288.315-.362z"/><path d="M16.858 14.343c.087-.18.096-.393.205-.564-.057.376-.183.741-.222 1.12a.97.97 0 01-.02.143l-.012-.093c-.053.01-.011.093-.05.123-.05.093-.165.026-.25.03-.02.047-.04.093-.065.136l-.004-.202c.018-.093.029-.189.062-.278.039-.101.058-.208.09-.311.066-.073.177-.084.266-.104z"/><path d="M16.075 14.548c.147-.022.299-.03.447-.001a.878.878 0 00-.02.211c-.033.09-.044.185-.062.278-.129.044-.265-.014-.39.036-.066.041-.072.124-.092.195a2.395 2.395 0 01.117-.72z"/><path d="M16.904 14.79c.13-.006.248-.135.379-.063-.027.14-.059.279-.048.423-.01.2-.036.397-.062.595l-.032.003a.205.205 0 00-.053-.199h-.303c-.043.069-.051.153-.09.225.005-.097.029-.193.026-.29.038-.147.069-.294.1-.442a.97.97 0 00.02-.143c.02-.038.029-.082.063-.11z"/><path d="M16.76 15.072c.038-.03-.004-.112.05-.123l.011.093a9.378 9.378 0 01-.1.441c-.04.064-.062.135-.09.203-.063-.012-.123-.04-.186-.052-.038.053-.06.115-.085.175-.001-.067.003-.133.006-.2.032-.12.017-.258.078-.37a1.41 1.41 0 00.065-.136c.085-.005.2.062.25-.031z"/><path d="M16.05 15.072c.125-.05.261.008.39-.036l.004.202c-.06.113-.046.25-.078.371-.102.097-.25.008-.374.008-.048.069-.076.148-.11.223a1.56 1.56 0 01.076-.573c.02-.07.026-.154.093-.195z"/><path d="M19.198 15.207c.084-.04.157-.126.258-.115-.953 1.021-1.415 2.395-1.657 3.746l-.024-.006a1.373 1.373 0 00-.286-.051c.227-.943.447-1.916.976-2.744.033-.058.102-.114.062-.186.001-.055.057-.103.094-.141.182-.18.353-.375.577-.503z"/><path d="M16.631 15.686c.028-.068.05-.14.09-.203.003.098-.02.194-.025.291-.057.116-.08.244-.122.366-.064-.011-.126-.032-.189-.046-.042.068-.053.15-.083.223l-.008-.034a4.22 4.22 0 01.066-.474c.025-.06.047-.122.085-.175.063.012.123.04.186.052z"/><path d="M16.785 15.549h.303a.205.205 0 01.053.199.356.356 0 00-.019.192c.015.25-.065.493-.058.743h-.026c-.02-.096.048-.246-.067-.301-.1.027-.315-.126-.326.055l-.03-.008-.012-.121c.027-.179.093-.352.093-.534.038-.072.046-.156.09-.225z"/><path d="M15.992 15.617c.124 0 .272.089.374-.008-.003.067-.007.133-.006.2a4.22 4.22 0 00-.066.474c-.02.057-.037.115-.06.17-.137.05-.33-.138-.406.04a1.12 1.12 0 01-.06.313c-.014-.224.033-.45.058-.672.008-.1.018-.2.055-.294.035-.075.063-.154.11-.223z"/><path d="M17.122 15.94a.356.356 0 01.019-.192c.02.052.046.172-.019.192z"/><path d="M16.574 16.14c.041-.122.065-.25.122-.366 0 .182-.066.355-.093.534-.025.085-.055.168-.085.252-.053-.011-.106-.027-.16-.038-.053.04-.064.108-.083.168.005-.125.016-.249.027-.373.03-.073.041-.155.083-.223.063.014.125.035.19.046z"/><path d="M18.23 16.229c.093-.127.165-.292.297-.378.04.072-.03.128-.062.186-.53.828-.749 1.801-.976 2.744-.11.206-.092.462-.144.688-.113.004-.157-.128-.23-.194-.054-.015-.106.01-.157.024.069-.404.224-.786.353-1.175.247-.658.524-1.31.92-1.895z"/><path d="M16.233 16.454c.024-.056.04-.114.061-.17l.008.033c-.01.124-.022.248-.027.373-.03.236-.041.473-.057.71-.017.423-.058.844-.068 1.267-.042.296-.02.596-.015.894-.014.35-.003.701-.01 1.052l-.044-.02c-.133-.222-.21-.476-.364-.685-.053-.032-.168-.131-.06.09.073.417.268.81.27 1.24a9.059 9.059 0 00-.045-.184 6.103 6.103 0 00-.288-.966 4.114 4.114 0 01-.063-.18c.016-.09.031-.178.029-.268 0-.055.002-.11.006-.165a2.41 2.41 0 00.021-.407 43.3 43.3 0 01-.001-.191c-.012-.18.022-.359.038-.537l.027-.238.006-.027a.45.45 0 00.017-.197l-.003-.195a2.34 2.34 0 01.067-.565 2.12 2.12 0 00.022-.264l.007-.048a1.02 1.02 0 00.06-.312c.078-.179.27.008.406-.04z"/><path d="M16.518 16.56c.03-.084.06-.167.085-.252l.012.12c-.057.226-.079.46-.154.68-.053-.004-.104-.02-.156-.025-.011.11-.051.214-.087.317.016-.237.027-.474.057-.71.019-.06.03-.127.083-.168.054.011.107.027.16.038z"/><path d="M16.645 16.437c.01-.18.227-.028.326-.055.115.055.047.205.067.302a3.39 3.39 0 01-.066.703c-.014.074-.019.152-.027.228a1.686 1.686 0 00-.023.291c0 .076 0 .151.002.227.003.074 0 .147-.007.22-.013.075-.021.153-.03.229a1.98 1.98 0 00-.019.35l-.003.191-.003.025c-.01.185-.042.37-.046.556-.02.11-.064.213-.066.327-.067 0-.05.07-.059.115a.997.997 0 00-.135.15c.032-.332-.032-.664-.035-.997-.083-.693-.018-1.388 0-2.082.024-.262.074-.521.124-.78z"/><path d="M16.615 16.429l.03.008c-.05.259-.1.518-.124.78a10.894 10.894 0 00-.034 2.395c-.06.412-.192.812-.275 1.22-.003.04-.054.047-.08.066-.003-.097-.003-.19-.007-.285.007-.35-.004-.702.01-1.052.04-.296.018-.596.015-.894.01-.423.05-.844.068-1.267.036-.103.076-.207.087-.317.052.005.103.02.156.024.075-.22.097-.453.154-.678z"/><path d="M10.7 16.54c.047.014.041.093.046.137l-.018.177-.028.001v-.315z"/><path d="M10.728 16.854l.018-.177c.065.262.107.53.168.792a.245.245 0 01.004.117c-.075.385.158.804-.022 1.173-.028-.018-.055-.039-.082-.06v-.082c-.002-.09.01-.18-.021-.264a9.89 9.89 0 01-.01-.222l.002-.196a.385.385 0 00-.014-.2.98.98 0 01-.015-.227c-.002-.117.006-.235-.017-.35a1.886 1.886 0 01-.011-.304z"/><path d="M15.738 17.118c.019-.072-.053-.237.022-.264a2.115 2.115 0 01-.022.264z"/><path d="M10.739 17.159c.023.114.015.232.017.35h-.028a1.965 1.965 0 01.01-.35z"/><path d="M16.487 19.612a10.897 10.897 0 01.034-2.395c-.018.694-.083 1.39 0 2.082.003.333.067.665.035.997a.997.997 0 01.135-.15l.013.068c-.059.26-.114.52-.161.783-.012.048-.02.096-.028.144l-.027.184-.021-.007c-.023-.02-.041-.074-.08-.053-.085.039-.2.028-.258.11a8.04 8.04 0 00-.006-.321l.008-.156c.027-.02.078-.025.081-.066.083-.408.214-.808.275-1.22z"/><path d="M16.945 17.615c.008-.076.013-.154.027-.228a.98.98 0 01.004.236l-.031-.008z"/><path d="M12.537 17.637c-.085.08-.322-.197-.02-.072.367-.025.732.036 1.078.15l.01.024c-.076.079-.15.158-.232.23-.275-.118-.533-.29-.836-.332z"/><path d="M10.896 18.759c.18-.369-.053-.788.022-1.173.069.239.101.498.15.745-.077-.071-.13.081-.081.143.044.264.002.527-.008.791-.018.04-.035.082-.057.121-.07-.034-.084-.111-.102-.179l-.007-.078v-.257l.001-.172.082.059z"/><path d="M16.922 17.906a1.686 1.686 0 01.023-.29c.004.095.011.193.005.29h-.028z"/><path d="M15.66 17.878c-.026-.053-.043-.165.011-.195l.003.195h-.015z"/><path d="M10.77 17.736a.385.385 0 01.015.199h-.014a.218.218 0 010-.2z"/><path d="M13.605 17.74a.864.864 0 01.36.162 1.387 1.387 0 00-.08.068c.079.08.19.123.254.22.171.129.069.38.214.522-.025.086.03.164.019.249-.106-.07-.153-.217-.24-.31-.221-.215-.425-.451-.687-.619-.022-.022-.07-.027-.072-.063.082-.072.156-.151.232-.23z"/><path d="M15.66 17.878h.014a.45.45 0 01-.017.197c-.028-.059-.034-.14.002-.197z"/><path d="M13.885 17.97a.87.87 0 01.08-.068c.548.304.946.822 1.247 1.363a.698.698 0 00-.162.125c0 .139.05.27.104.396a1.55 1.55 0 01-.039.905c.005.114.018.226.018.341l-.026-.001c-.08-.734-.373-1.44-.735-2.07.01-.085-.044-.163-.02-.25-.144-.14-.042-.392-.213-.521-.064-.097-.175-.14-.254-.22z"/><path d="M16.922 17.906h.028c-.011.068.037.202-.026.227a8.664 8.664 0 01-.002-.227z"/><path d="M10.771 17.935h.014l-.002.196h-.017a.257.257 0 01.005-.196z"/><path d="M15.624 18.34c.007-.072-.048-.214.027-.238-.008.08-.018.157-.027.238z"/><path d="M10.766 18.13h.017c.002.074.006.148.01.223l-.032.009a.786.786 0 01.005-.231z"/><path d="M10.987 18.474c-.05-.062.004-.214.08-.143.022.16.055.318.08.476-.06.037-.16.056-.079.179-.03.162.07.33.006.487-.016.048-.036.096-.054.145-.012-.118-.032-.235-.041-.353.01-.264.052-.527.008-.791z"/><path d="M10.793 18.353c.03.084.02.174.02.264h-.027a1.413 1.413 0 01.007-.264z"/><path d="M16.887 18.582c.009-.076.017-.154.03-.228.003.086.01.176.005.264l-.032-.006-.003-.03z"/><path d="M16.868 18.933c0-.118 0-.236.02-.351l.002.03c.003.105.016.215-.005.32h-.017z"/><path d="M10.786 18.617h.027l.001.083-.001.172h-.027a2.953 2.953 0 010-.255z"/><path d="M16.135 19.56c-.004-.297-.027-.597.015-.893.003.298.025.598-.015.894z"/><path d="M17.345 19.47c.052-.227.034-.483.144-.69.098.006.192.026.286.052-.049.101-.052.214-.057.325-.005.105-.019.21-.04.313a.4.4 0 00-.015.194c.005.057-.02.111-.037.166a2.48 2.48 0 00-.024.033c-.046.003-.089.016-.115.056-.04.057-.115.072-.157.127-.102.342-.068.72-.24 1.042-.07.012-.122-.042-.18-.068-.096-.02-.339.019-.242-.187.026-.37.1-.737.186-1.098a.192.192 0 00.007-.159l.012-.072a.56.56 0 00.085-.205c.05-.014.103-.04.157-.024.073.066.117.198.23.194z"/><path d="M11.068 18.986c-.081-.123.018-.142.079-.179.033.24.08.477.12.716-.046-.036-.08.001-.107.04-.004.147-.007.296-.008.444-.03.06-.093.102-.091.177a.7.7 0 00-.078-.23c.014-.112.026-.224.037-.336.018-.049.038-.097.054-.145.064-.157-.036-.325-.006-.487z"/><path d="M17.718 19.157c.005-.11.008-.224.057-.325-.04.08.032.285-.057.325z"/><path d="M10.786 18.873h.027v.256l-.027-.001a2.832 2.832 0 010-.255z"/><path d="M15.57 19.068c-.02-.053-.037-.162.016-.191l.001.191h-.017z"/><path d="M16.868 18.933h.017a.277.277 0 01-.002.19h-.018l.003-.19z"/><path d="M15.57 19.068h.017c.002.136 0 .272-.021.407l-.007-.12c0-.096-.01-.192.01-.287z"/><path d="M10.786 19.128h.027l.007.08-.007.204c-.084-.02-.008-.204-.027-.284z"/><path d="M16.865 19.123h.018l.012.206c.002.08.03-.042.063-.03a.56.56 0 01-.085.205 14.099 14.099 0 01-.01-.356l.002-.025z"/><path d="M16.816 19.704c.004-.186.036-.37.046-.556l.01.356a6.316 6.316 0 01-.011.072c-.016.042-.03.085-.045.128z"/><path d="M10.82 19.207c.018.068.033.145.102.18.022-.04.039-.081.057-.122.01.118.029.235.04.353-.01.112-.022.224-.036.336a.492.492 0 01-.14-.027c-.005-.082.003-.161-.02-.239-.017-.092-.01-.184-.01-.276l.007-.205z"/><path d="M15.05 19.39a.698.698 0 01.162-.125c.09.154.162.318.228.484-.035.031-.07.062-.102.097.047.248.176.49.126.75-.097.246-.223.485-.277.746l-.024.004c.009-.108-.037-.207-.03-.314 0-.115-.013-.227-.018-.34a1.55 1.55 0 00.039-.906 1.008 1.008 0 01-.104-.396z"/><path d="M15.532 19.64c.029-.072-.046-.25.027-.285l.007.12c-.004.055-.005.11-.006.165h-.028z"/><path d="M17.663 19.664a.4.4 0 01.014-.194c.024.051.049.17-.014.194z"/><path d="M11.16 19.563c.027-.039.06-.076.107-.04-.004.142.075.283.047.421a.187.187 0 00-.046.179 5.99 5.99 0 00.068 1.006c.03.165.015.34.073.5l.007.019c-.023.028-.044.058-.068.085-.076-.01-.163-.067-.221.01l-.022-.177c-.006-.12-.008-.238-.013-.357.025-.343-.038-.683-.031-1.025-.002-.075.06-.118.09-.177.002-.148.005-.297.01-.444z"/><path d="M16.816 19.704l.045-.128a.192.192 0 01-.007.16 6.67 6.67 0 00-.186 1.097c-.097.206.146.168.242.187.058.026.11.08.18.068.172-.323.138-.7.24-1.042.042-.055.117-.07.157-.127.026-.04.07-.053.115-.056l.004.203c.003.131-.019.26-.036.39-.015.094-.02.19-.028.285-.01.029-.018.057-.026.087-.047.076-.122.103-.212.101-.126.139-.119.334-.187.499-.172-.007-.264-.241-.459-.215-.116-.002-.13-.117-.115-.216.047-.262.102-.523.16-.783.02-.06.038-.12.047-.183.002-.114.046-.217.066-.327z"/><path d="M15.532 19.64h.028c.002.09-.013.178-.029.268-.001-.091-.003-.179.001-.268z"/><path d="M10.824 19.688c.022.078.014.157.018.239v.053l-.028.002c-.003-.1-.008-.197.01-.294z"/><path d="M15.338 19.846c.032-.035.067-.066.102-.097.031.053.04.118.091.159.02.06.04.12.063.18a6.63 6.63 0 00-.003.107c-.108.05-.023.178-.023.258.02.183.06.364.047.549-.106.217-.27.41-.311.655-.06.152.03.31-.023.464l-.03-.008a9.016 9.016 0 01-.004-.231.392.392 0 00-.014-.196c-.049-.108-.043-.229-.046-.344.054-.261.18-.5.277-.747.05-.26-.079-.501-.126-.749z"/><path d="M17.602 19.863a2.48 2.48 0 01.024-.033c-.006.07.044.209-.02.236l-.004-.203z"/><path d="M15.658 19.998c-.109-.221.006-.122.06-.09.154.209.23.463.363.685l.044.02c.004.095.004.188.006.285l-.008.156a.929.929 0 01-.157.187l-.016.193a3.701 3.701 0 00-.11-.009c.054-.05.106-.108.087-.188-.002-.428-.197-.822-.27-1.239z"/><path d="M10.842 19.927a.492.492 0 00.14.027.7.7 0 01.079.23c-.007.342.056.682.03 1.025-.026-.133-.014-.283-.083-.404-.08.001-.1.103-.157.147-.01-.106-.01-.211-.01-.318v-.654l.001-.053z"/><path d="M11.268 20.123a.187.187 0 01.046-.179c.092.445.129.903.193 1.354-.01.125.063.241.04.366a1.21 1.21 0 00-.056-.089c-.028.016-.055.035-.082.054-.058-.16-.043-.335-.073-.5a5.99 5.99 0 01-.068-1.006z"/><path d="M10.814 19.982l.028-.002v.313h-.028a4.958 4.958 0 010-.311z"/><path d="M16.691 20.146c.009-.046-.008-.115.059-.115a1.079 1.079 0 01-.046.183l-.013-.068z"/><path d="M15.594 20.088c.125.313.216.638.288.966l-.03-.006-.036-.013a1.47 1.47 0 00-.023-.101 4.345 4.345 0 00-.202-.739l.003-.107z"/><path d="M15.568 20.453c0-.08-.085-.208.023-.258.086.241.16.486.202.739a.925.925 0 00-.073.072c-.06.048.007.149-.038.206-.085.116-.211.21-.237.36-.13.342.155.657.072 1.001-.01.114-.07.214-.118.316-.058.116-.045.257-.117.367l-.003-.03c-.008-.286-.002-.572-.004-.858 0-.084 0-.165.006-.247.053-.155-.037-.312.023-.464.04-.245.205-.438.31-.655.014-.185-.026-.366-.046-.549z"/><path d="M10.814 20.293h.028v.341h-.029a5.684 5.684 0 01.001-.34z"/><path d="M17.542 20.741c.008-.095.013-.191.028-.285.004.097.013.196.003.293l-.031-.008z"/><path d="M17.516 20.828l.026-.087c.005.124.011.25.006.376h-.027c-.002-.097-.001-.192-.005-.29z"/><path d="M10.85 20.952c.057-.044.078-.146.158-.147.069.121.057.271.084.404.005.119.007.237.013.357.002.09.029.216-.09.175-.077-.037-.085-.164-.14-.232a43.324 43.324 0 01-.004-.192c-.002-.117 0-.233-.018-.348l-.002-.017z"/><path d="M17.304 20.93c.09 0 .165-.026.212-.102.004.097.003.192.005.29l-.003.193c-.135.01-.15.2-.307.156-.076.099-.09.226-.134.34-.003-.228-.161-.46-.39-.506-.097.001-.154-.072-.172-.16.007-.048.016-.096.028-.144-.014.1-.001.214.115.216.195-.026.287.208.459.215.068-.165.061-.36.187-.499z"/><path d="M15.72 21.006a.925.925 0 01.073-.072l.023.101a1.505 1.505 0 01-.096-.029z"/><path d="M10.853 20.969c.018.115.016.231.018.348h-.029a2.403 2.403 0 01.01-.348z"/><path d="M15.682 21.212c.045-.057-.021-.158.038-.206l.096.03.036.012c-.115.065-.113.215-.202.302-.143.14-.215.366-.141.558.044.158.155.278.242.413.05.372-.175.697-.237 1.052 0 .393-.004.794.105 1.175a2.939 2.939 0 00-.146-.027c-.026-.019-.075-.017-.082-.054-.067-.202-.114-.41-.167-.616.05-.048.026-.115.023-.175a.545.545 0 01.007-.107c.013-.104.022-.208.028-.313.072-.11.059-.251.117-.367.048-.102.107-.202.118-.316.083-.344-.202-.66-.072-1.001.026-.15.152-.244.237-.36z"/><path d="M15.65 21.35c.089-.087.087-.237.202-.302l.03.006c.009.088-.045.141-.11.189-.041.146-.196.225-.224.376-.079.232.086.454.272.575.06.03.055.1.066.157.036.32.009.645-.03.965 0 .364-.022.732.022 1.095a.609.609 0 01-.005.189c-.085-.016-.169-.035-.254-.052-.11-.38-.106-.782-.105-1.175.062-.355.286-.68.237-1.052-.087-.135-.198-.255-.242-.413-.074-.192-.002-.418.141-.558z"/><path d="M15.882 21.054l.045.183c.02.08-.033.138-.087.188-.13.062-.226.185-.21.34-.053.174.17.27.26.383.088.254.062.525.09.789.037.559.039 1.118.034 1.679-.047-.004-.095-.006-.14-.016a.609.609 0 00.004-.189c-.044-.363-.021-.731-.022-1.095.039-.32.066-.644.03-.965-.01-.057-.007-.127-.066-.157-.186-.121-.35-.343-.272-.575.028-.151.183-.23.224-.376.065-.048.119-.1.11-.189z"/><path d="M15.966 21.241a.929.929 0 00.157-.187c.005.107.006.213.006.321l-.06.113c-.04-.019-.08-.035-.119-.054l.016-.193z"/><path d="M17.52 21.118h.028c0 .141.006.285-.002.427l-.027-.008v-.226l.002-.193z"/><path d="M16.488 21.325l.027-.184c.018.088.075.161.171.16.23.046.388.278.391.506.043-.114.058-.241.134-.34.156.045.172-.147.307-.156v.226a3.257 3.257 0 01-.03.032.622.622 0 00-.174.22c-.04-.03-.077-.072-.13-.078-.011.104-.035.21-.018.316-.009.326-.102.645-.096.972l-.009.046c-.02.074-.037.153-.061.228-.17-.049-.325.048-.493.025a.45.45 0 01-.094-.253c.03.047.057.097.089.144.086-.04.155-.156.26-.125.084.001.161-.05.238-.08.062-.248.061-.505.091-.758a.916.916 0 00-.03-.343c-.057.082-.11.168-.176.245-.113.034-.23.087-.35.057-.062-.02-.126-.005-.188.007l.007-.022c.11-.12.316-.024.447-.123.184-.127.198-.415.046-.57-.083-.114-.239-.102-.359-.152z"/><path d="M9.703 21.172c.18.087.32.245.456.39a.124.124 0 00-.093.093l-.02-.002c-.083-.182-.22-.327-.343-.48z"/><path d="M16.13 21.375c.057-.082.172-.071.257-.11.039-.021.057.032.08.053l.006.14c-.159.077-.196.292-.087.427a.816.816 0 01-.03.197c-.052.057-.167.098-.194-.004-.034-.064-.073-.125-.099-.193a.266.266 0 00.005-.397l.061-.113z"/><path d="M10.842 21.316h.029c0 .049.003.145.004.193a7.292 7.292 0 00-.006.177h-.027c-.002-.124-.005-.247 0-.37z"/><path d="M16.467 21.318l.021.007c.12.05.276.038.36.153.151.154.137.442-.047.569-.131.1-.338.004-.447.123l.003-.088a.816.816 0 00.03-.197c.12.133.367.09.424-.084.116-.199-.146-.406-.338-.344l-.006-.139z"/><path d="M15.63 21.764c-.016-.154.08-.277.21-.339l.11.01c.04.018.08.034.118.053a.266.266 0 01-.005.397l-.078.058c-.151.045-.29-.05-.355-.179z"/><path d="M16.473 21.457c.192-.062.454.145.338.344-.057.175-.304.217-.425.084-.109-.135-.072-.35.087-.428z"/><path d="M10.875 21.509c.055.068.063.195.14.232.119.041.092-.085.09-.175l.022.178c-.001.095 0 .193-.003.29a1.538 1.538 0 01-.16-.044c-.05-.043-.062-.111-.09-.168a4.374 4.374 0 01-.005-.136c.001-.06.004-.118.006-.177z"/><path d="M17.487 21.569l.032-.032c0 .086.004.175 0 .263h-.027l-.005-.231z"/><path d="M10.066 21.655a.124.124 0 01.093-.093c.203.192.357.438.478.689-.08.08-.177.149-.23.25l-.015.011c-.064-.3-.206-.577-.326-.857z"/><path d="M11.41 21.629a1.02 1.02 0 01.08-.054c.02.029.039.058.056.089.01.097.055.2.026.297-.16.067-.06.28-.132.408-.043.11-.199.069-.285.116l.003-.2c.04-.132.2-.041.276-.123a5.48 5.48 0 00.005-.222c-.004-.098.017-.2-.023-.292l-.007-.02z"/><path d="M17.314 21.79a.622.622 0 01.173-.221l.005.23c0 .22 0 .439.002.658a1.647 1.647 0 00-.005.14c-.148-.112-.22.124-.354.155-.026.081-.044.163-.065.247-.006-.327.087-.646.096-.972-.017-.105.007-.212.018-.316.053.006.09.048.13.078z"/><path d="M11.348 21.733c.024-.027.045-.057.068-.085.04.092.02.194.023.292-.082.11-.256-.037-.315.094.003-.097.002-.195.003-.29.058-.078.145-.022.221-.011z"/><path d="M10.842 21.686h.027l.005.136-.005.262h-.027c-.001-.134-.004-.266 0-.398z"/><path d="M15.233 21.686a.392.392 0 01.014.196h-.019a.238.238 0 01.005-.196z"/><path d="M15.89 22.148c-.09-.113-.313-.21-.26-.384.065.129.204.224.355.179-.031.025-.075.024-.112.036.03.09.14.097.189.17.032.093.038.195.086.283.026.128.038.259.037.39a.641.641 0 00-.08-.029c-.01.088-.057.175-.047.267.044.526-.027 1.059.038 1.583h-.081l-.001-.027c.005-.56.003-1.12-.035-1.68-.027-.263-.001-.534-.09-.788z"/><path d="M17.492 21.8h.027c-.004.218.016.438-.008.656h-.017a35.863 35.863 0 01-.002-.656z"/><path d="M10.874 21.822c.028.057.04.125.09.168.052.018.106.032.16.044a2.5 2.5 0 00.014.1c-.023.088-.016.261-.179.174-.05-.006-.053-.082-.083-.117a.434.434 0 01-.007-.107l.005-.262z"/><path d="M15.228 21.883l.019-.001c0 .076.001.153.004.23-.069-.019-.024-.162-.023-.23z"/><path d="M15.985 21.943c.026-.02.052-.04.078-.058.026.068.065.129.099.193l-.014.354c-.048-.088-.054-.19-.086-.283-.05-.073-.16-.08-.189-.17.037-.012.08-.011.112-.036z"/><path d="M16.885 22.128c.065-.077.12-.163.177-.245.038.11.034.228.03.343-.03.253-.03.51-.092.759-.077.03-.154.08-.238.079-.105-.03-.174.085-.26.125-.032-.047-.059-.097-.09-.144-.064-.212-.068-.437-.094-.655a.559.559 0 01.03-.198c.061-.012.125-.026.187-.007.12.03.237-.023.35-.057z"/><path d="M11.124 22.034c.059-.13.233.017.315-.094 0 .074-.002.148-.005.222-.076.082-.235-.01-.276.124a1.125 1.125 0 00-.02-.152 2.5 2.5 0 01-.014-.1z"/><path d="M11.44 22.37c.072-.128-.027-.342.132-.409.021.094.05.192.032.289-.034.024-.082.038-.085.087-.037.174-.012.365-.093.53-.082.07-.161.144-.241.216-.008-.173-.03-.346-.033-.519l.003-.08c.086-.046.242-.005.285-.115z"/><path d="M16.162 22.078c.027.102.142.061.195.004l-.003.088-.007.022a.559.559 0 00-.029.198c-.03.174-.038.352-.083.523a3.62 3.62 0 01-.05-.092 1.897 1.897 0 00-.037-.389l.014-.354z"/><path d="M15.25 22.113l.03.008a4.437 4.437 0 00-.005.247h-.027a1.826 1.826 0 01.003-.255z"/><path d="M11.138 22.134c.01.05.016.1.02.152l-.003.199-.003.08c-.083.01-.166.029-.25.032a1.276 1.276 0 00-.021-.123 1.027 1.027 0 01-.005-.283c.03.035.032.11.083.117.163.087.156-.086.179-.174z"/><path d="M10.407 22.502c.053-.102.15-.171.23-.251.085.147.16.3.214.462.011.03.024.06.037.089.054.146.114.29.144.443-.174.037-.007.286-.1.378-.102.06-.272.11-.263.25l-.026.002c.002-.467-.138-.922-.236-1.373z"/><path d="M11.52 22.337c.002-.05.05-.063.084-.087.039.216.05.439.062.658-.004.117.054.255-.058.337-.077.054-.112.145-.145.23-.044.09-.059.189-.08.285-.022.028-.044.054-.063.083-.025.127-.033.264-.06.394l-.021.015a2.051 2.051 0 01-.031-.297c-.001-.045-.013-.088-.022-.132.055-.245-.03-.493-.001-.74l.24-.216c.082-.165.057-.356.094-.53z"/><path d="M15.248 22.368h.027c.002.286-.004.572.004.858l-.03-.007a35.34 35.34 0 01-.001-.85z"/><path d="M16.235 22.913c.045-.171.054-.35.083-.523.026.218.03.443.095.655a.45.45 0 00.094.253c.168.023.324-.074.493-.025.024-.075.04-.154.061-.228.001.056.002.113 0 .17-.024.141-.039.284-.057.426-.16-.068-.298.153-.442.084-.037-.098-.066-.198-.105-.296-.04-.067-.128-.078-.19-.12-.01-.117.02-.24-.018-.351l-.014-.045z"/><path d="M17.494 22.457l.017-.001c.026.053.013.118.008.176l-.01.018a10.44 10.44 0 01-.02-.053c0-.047.001-.094.005-.14z"/><path d="M10.88 22.474c.01.04.017.082.022.123l-.014.205c-.013-.03-.026-.06-.037-.09a3.58 3.58 0 01.03-.238z"/><path d="M10.902 22.597c.084-.003.167-.022.25-.033.002.173.025.346.033.519-.03.247.056.495.001.74l-.092-.059c.06-.173-.03-.349-.062-.52-.03-.152-.09-.296-.144-.442l.014-.205z"/><path d="M17.135 22.752c.134-.031.206-.267.354-.155l.02.053.002.022a.765.765 0 00.004.299l.002.025v.117c-.019-.05-.031-.102-.057-.149-.162.073-.405.113-.39.347a11.116 11.116 0 00-.01-.096 3.38 3.38 0 00.001-.17l.009-.046c.021-.084.04-.166.065-.247z"/><path d="M17.519 22.632l.026-.011c.002.123.01.248.001.371l-.029.004-.002-.025c0-.101.007-.2-.004-.299l-.001-.022.009-.018z"/><path d="M17.515 22.97a.765.765 0 01-.004-.298c.01.1.005.198.004.299z"/><path d="M12.461 22.71h.313v.027c-.104 0-.208.002-.312 0v-.028z"/><path d="M11.696 23.11c.197-.21.471-.371.766-.373.104.002.208 0 .312 0 .037.013.152-.028.136.028a.388.388 0 00-.193.013.857.857 0 00-.592.446c-.021.075-.072.136-.11.203-.063.201-.099.41-.123.618l-.023-.003a1.346 1.346 0 00-.128-.329c-.1-.063-.283-.08-.251-.237.043-.075.091-.148.118-.231.112-.082.054-.22.058-.337h.027l.003.202z"/><path d="M12.717 22.778a.388.388 0 01.193-.013c-.022.063-.143.04-.193.013z"/><path d="M16.106 22.793a.641.641 0 01.08.028l.049.092.014.045c.016.122-.048.265.017.38.03.048.033.105.038.161 0 .14-.015.284 0 .425.032.2.018.408.076.603-.067-.013-.093.02-.082.085.001.039-.017.06-.055.065-.049-.01-.098-.023-.147-.034-.065-.524.006-1.057-.038-1.583-.01-.092.038-.179.048-.267z"/><path d="M16.25 22.958c.038.111.006.234.017.35v.03c-.066-.115-.002-.258-.018-.38z"/><path d="M17.07 23.311c-.015-.234.228-.274.39-.347.026.047.038.099.056.15.002.041.002.083.003.126-.13.089-.28.161-.396.266-.077.304-.062.629-.051.943l-.007.078-.026.002c-.004-.406-.013-.813.031-1.218z"/><path d="M17.517 22.996l.03-.004c.002.085.006.174-.002.26l-.026-.012a2.66 2.66 0 00-.003-.127l.001-.117z"/><path d="M15.021 23.217c.033.018.066.04.046.082a.859.859 0 00-.012.255l-.003.03-.03.008c-.003-.126-.007-.25 0-.375z"/><path d="M15.249 23.219l.03.007.003.03a4.471 4.471 0 01-.028.313 3.43 3.43 0 01-.005-.35z"/><path d="M17.004 23.641c.018-.142.033-.285.057-.426l.01.096c-.045.405-.036.812-.032 1.218l-.024.004a1.876 1.876 0 00-.17 0 4.072 4.072 0 00-.228 0c-.052-.292-.051-.597-.158-.878-.077-.025-.14-.068-.155-.156-.005-.056-.009-.113-.038-.162l.001-.029c.062.043.15.054.19.121.039.098.068.198.105.296.144.069.283-.152.442-.084z"/><path d="M10.933 23.623c.092-.092-.075-.34.1-.378.032.17.12.346.061.52-.108-.033-.2.034-.223.14.002.109.104.18.201.206l-.084.027a.401.401 0 01.116.129c-.006.103.011.218-.041.314-.111.003-.222.004-.333.004a1.85 1.85 0 00-.02-.093c-.003-.208-.04-.413-.041-.62-.01-.14.161-.189.264-.249z"/><path d="M11.463 23.475c.033-.085.068-.176.145-.23-.027.083-.075.156-.118.23h-.027z"/><path d="M17.123 23.506c.117-.105.265-.177.396-.266 0 .099-.01.204.021.3l.01.106v.025l-.047-.008c-.102.117-.231.224-.262.384 0 .064-.069.05-.11.065 0 .115-.028.227-.06.337-.01-.314-.025-.64.052-.943z"/><path d="M17.519 23.24l.026.013c.006.055.006.11.004.166l-.009.122c-.032-.097-.02-.202-.021-.301z"/><path d="M15.055 23.554a.859.859 0 01.012-.255c.034.163.08.324.13.483.06.032-.021-.13.05-.106.003.06.026.127-.023.175.053.206.1.414.167.616.007.037.056.035.082.054-.08-.01-.057.08-.038.126l.031.085.01.079c-.128-.033-.288.017-.399-.06-.015-.399.026-.801-.022-1.197z"/><path d="M17.549 23.42c.063.024.015.158.027.227l-.027-.001a4.11 4.11 0 00-.009-.105l.009-.122z"/><path d="M11.463 23.475h.027c-.032.158.152.175.251.238.056.104.1.214.128.329a1.263 1.263 0 01-.012.138 2.333 2.333 0 00-.022.233c-.066 0-.134 0-.19.037-.031.088-.03.181-.035.274l-.002.02c-.022.057-.037.118-.064.174a1.68 1.68 0 01-.274.037 4.757 4.757 0 01-.036-.38c.032.027.052.071.092.088.073-.02.146-.043.22-.06a1.66 1.66 0 00.092-.415c-.123.016-.28-.052-.379.05.028-.131.036-.268.061-.395-.108.196.222.327.29.146.101-.131-.1-.305-.228-.229.022-.096.037-.195.08-.285z"/><path d="M16.304 23.5c.015.087.078.13.155.155.107.28.106.586.158.878l-.033-.001c-.039-.119-.05-.244-.09-.362-.148.057-.092-.183-.19-.246-.015-.141 0-.284 0-.425z"/><path d="M15.055 23.554c.048.396.007.798.022 1.197l-.027.005-.003-.056v-.056l-.002-.053c.001-.11.004-.216.002-.324v-.109c.005-.192-.008-.383.005-.574l.003-.03z"/><path d="M17.503 23.663l.046.008c0 .088-.01.182.017.269.017.072.041.142.041.217.007.123.02.245.025.368-.19.003-.378.003-.567.002l.007-.078c.031-.11.058-.222.058-.337.042-.015.111-.001.11-.065.032-.16.161-.267.263-.384z"/><path d="M17.55 23.646l.026.001c.002.096.009.197-.01.293-.027-.087-.016-.181-.017-.27v-.024z"/><path d="M11.382 23.76c.128-.076.33.098.229.23-.069.18-.4.05-.29-.147.018-.03.04-.055.061-.083z"/><path d="M10.87 23.905c.024-.106.116-.173.224-.14l.092.058c.01.044.02.087.022.132a.671.671 0 01-.136.156c-.097-.025-.2-.097-.201-.206z"/><path d="M17.888 24.303c.103-.182.187-.383.316-.546-.048.266-.175.518-.247.78-.03.083-.044.174-.1.244a2.13 2.13 0 01-.226.001.185.185 0 01.038-.08c.023-.036.043-.074.061-.112.048-.098.114-.187.158-.287z"/><path d="M16.304 23.924c.098.063.042.303.19.246.04.118.051.243.09.362a48.88 48.88 0 00-.204-.005c-.058-.195-.044-.404-.076-.603z"/><path d="M11.072 24.111a.671.671 0 00.136-.156c.004.1.012.199.03.297 0 .107 0 .215-.004.323-.036.154-.027.313.004.467a.607.607 0 00-.088-.088c-.07-.223.026-.47-.046-.687a.401.401 0 00-.116-.13.9.9 0 00.084-.026z"/><path d="M14.193 24.014c.096.052.142.163.223.235.064.071.12.148.178.224-.17.076-.207-.085-.277-.182-.042-.092-.102-.178-.124-.277z"/><path d="M18.752 24.14l.02-.012a2.295 2.295 0 01-.176.397l-.196.002c.084-.154.226-.267.352-.387z"/><path d="M14.416 24.25c.214.055.415-.107.631-.092v.053a.66.66 0 00-.283.09c-.056.035-.137.085-.111.164.108.1.253.145.393.18l.001.055c-.27-.05-.546-.108-.793-.233-.01-.062.003-.146.063-.176.07.097.106.258.277.182-.058-.076-.114-.153-.178-.224z"/><path d="M17.607 24.157c.055-.004 0 .091.057.087.075.02.15.034.224.06-.044.099-.11.188-.158.286.006-.073-.05-.053-.097-.042v-.023c-.005-.123-.019-.245-.026-.368z"/><path d="M11.26 24.237c.098-.1.255-.033.378-.05a1.7 1.7 0 01-.091.416c-.075.017-.148.04-.221.06-.04-.017-.06-.061-.092-.088.003-.108.005-.216.005-.323l.02-.015z"/><path d="M11.835 24.413c.003-.077.01-.158.022-.233.003.096.019.198-.001.295h-.017l-.004-.062z"/><path d="M14.764 24.301a.66.66 0 01.283-.09v.056c-.09.007-.18.052-.197.147.023.095.106.153.195.177l.001.053c-.14-.034-.285-.078-.393-.179-.026-.08.055-.129.111-.164z"/><path d="M11.104 24.267c.072.217-.023.464.046.687.004.13.002.262.008.393a.676.676 0 00-.17.007 4.53 4.53 0 00-.2-.035 2.912 2.912 0 01-.069-.215c.002-.09.008-.176.009-.263l.002-.256c.111 0 .222 0 .333-.004.052-.096.035-.21.041-.314z"/><path d="M14.85 24.414c.017-.095.107-.14.197-.147.002.108 0 .215-.002.324-.089-.024-.172-.082-.195-.177z"/><path d="M10.444 24.356c.047.003.034.075.04.11l-.014.117c-.097.018-.006-.167-.026-.227z"/><path d="M11.645 24.45c.056-.038.124-.037.19-.037 0 .016.003.046.004.062-.003.055-.004.11-.006.166-.08.002-.172.015-.223.083.005-.093.004-.186.035-.274z"/><path d="M10.47 24.583c.004-.04.009-.078.015-.117.09.208.143.43.234.638.02.072.044.144.07.215l.022.062.023.062.011.03a.663.663 0 01-.115.025c-.056 0-.113-.002-.17-.006l-.002-.027-.003-.051a9.343 9.343 0 00-.043-.41c-.012-.14-.044-.28-.042-.42z"/><path d="M11.84 24.475h.016a.336.336 0 010 .191l-.017-.002-.006-.023c.002-.056.003-.111.006-.166z"/><path d="M10.71 24.492l.02.093-.002.256h-.029a2.232 2.232 0 01.01-.35z"/><path d="M15.435 24.647c-.02-.047-.042-.136.038-.126l.039.056a1.934 1.934 0 00.584.066c.05.01.098.023.147.034l-.002.023c-.272.03-.536-.049-.806-.053z"/><path d="M15.473 24.521c.049.008.098.017.146.027.085.017.17.036.254.052.046.01.094.012.14.016l.002.027a1.934 1.934 0 01-.503-.066l-.04-.056z"/><path d="M16.298 24.612c-.011-.065.015-.098.082-.085l.204.005.033.001c-.087.063-.2.037-.297.073l-.022.006z"/><path d="M16.617 24.533c.075-.002.152-.002.228 0-.163.075-.348.09-.525.073.097-.036.21-.01.297-.073z"/><path d="M16.845 24.533c.056-.003.113-.002.17 0-.11.086-.255.058-.379.103l-.299.011-.008.025-.009.027-.08.001.003-.023c.038-.005.056-.026.055-.065l.022-.006c.177.016.362.002.525-.073z"/><path d="M17.015 24.533l.024-.004.026-.002c.19.001.378.001.567-.002l.001.023-.106.016-.2-.002c-.224-.02-.43.095-.656.086l-.035-.012c.124-.045.27-.017.379-.103z"/><path d="M17.633 24.548c.047-.011.103-.031.097.042a1.064 1.064 0 01-.061.112l-.012-.059a9.815 9.815 0 01-2.19.09 1.456 1.456 0 01-.032-.086c.27.004.534.083.806.053l.08-.001c.199.004.399.003.595-.037a1.15 1.15 0 00.611-.098l.106-.016z"/><path d="M12.525 24.562l.024-.007c-.029.287-.104.568-.15.853l-.172-.004c.02-.073.05-.142.073-.213.069-.212.166-.414.225-.629z"/><path d="M16.671 24.648c.225.009.432-.107.657-.086-.129.065-.273.076-.412.1a2.7 2.7 0 01-.596.037l.009-.027c.111-.015.234.017.342-.024z"/><path d="M17.328 24.562l.2.002a1.15 1.15 0 01-.612.098c.14-.024.283-.035.412-.1z"/><path d="M11.238 25.042a1.082 1.082 0 01-.004-.467c.008.127.018.253.036.38a1.68 1.68 0 00.274-.037c.027-.056.042-.117.064-.175.021.12.018.24.027.36v.05c-.131.03-.262.061-.393.089l-.004-.2z"/><path d="M11.61 24.724c.051-.068.143-.081.223-.083l.006.023c0 .097-.017.203.018.299l.006.107c-.04-.032-.082-.072-.137-.06-.034.028-.06.062-.091.093-.01-.12-.006-.24-.027-.36l.002-.019z"/><path d="M16.337 24.647l.3-.01.034.01c-.108.042-.23.01-.342.025l.008-.025z"/><path d="M11.84 24.664l.017.002a1.18 1.18 0 010 .297c-.035-.096-.018-.202-.018-.3z"/><path d="M12.895 24.905l.023-.01c-.004.099-.062.186-.065.285h-.14c.048-.1.115-.188.182-.275z"/><path d="M9.928 24.927c.103.046.143.163.226.234.047.04.151.143.026.15-.076-.043-.11-.125-.155-.195-.033-.062-.084-.118-.097-.19z"/><path d="M11.15 24.954a.607.607 0 01.088.088l.004.2-.004.14-.057-.002a2.375 2.375 0 00-.023-.033c-.006-.131-.004-.263-.008-.393z"/><path d="M11.857 24.963c.066-.03.025.096.037.134l-.002.054-.008.066c-.016-.048-.018-.098-.021-.147a4.232 4.232 0 00-.006-.107z"/><path d="M10.512 25.003c.017.136.032.274.043.41-.095-.001-.2-.093-.163-.195.04-.039.117-.054.108-.122l.012-.093z"/><path d="M11.635 25.103c.03-.03.057-.065.09-.093.056-.012.098.028.138.06.003.049.005.1.021.147.012.044.027.087.036.131-.075.048-.17.052-.256.063a3.656 3.656 0 01-.03-.259v-.049z"/><path d="M10.154 25.16c.117-.01.229-.056.346-.064.01.068-.069.083-.108.122-.037.102.068.194.163.196l.003.05c-.132-.032-.278-.051-.378-.154.125-.006.021-.11-.026-.15z"/><path d="M11.894 25.097c.134.028.286.022.406.094-.022.071-.054.14-.073.213-.288.06-.587.086-.881.083.106-.022.212-.048.32-.05.14-.02.318-.006.422-.12.033-.117-.114-.145-.196-.166l.002-.054z"/><path d="M9.873 25.206c.058-.017.104-.055.152-.09.044.07.079.152.155.194.1.103.246.122.378.155l.002.027c-.177.024-.343-.05-.514-.083a.41.41 0 01-.252-.12c-.026-.056.039-.07.079-.083z"/><path d="M11.242 25.242c.131-.028.262-.06.393-.09.007.086.016.173.03.259l.002.025c-.109.003-.215.029-.321.051a.435.435 0 01-.105.006l-.002-.027v-.027l-.001-.028v-.03l.004-.14z"/><path d="M11.892 25.151c.082.021.229.05.196.166-.104.114-.282.1-.421.12l-.003-.026c.087-.01.181-.015.256-.063-.009-.044-.024-.087-.036-.131l.008-.066z"/><path d="M10.788 25.319c.067.01.133.022.2.035a.23.23 0 00.193.026l.057.001v.03c-.144-.002-.285-.018-.427-.03l-.023-.062z"/><path d="M10.988 25.354a.676.676 0 01.17-.007l.023.033a.23.23 0 01-.193-.026z"/><path d="M10.81 25.38c.143.013.284.029.428.03v.029c-.13.018-.282-.042-.404.004l-.023-.062z"/><path d="M10.834 25.443c.122-.046.274.014.404-.004l.001.027c-.131 0-.263-.003-.394.006l-.011-.03z"/><path d="M10.845 25.472c.131-.009.263-.006.394-.006l.002.027c-.172 0-.345-.003-.515.03l.004-.025a.663.663 0 00.115-.026z"/></g></svg>', typescript: '<svg viewBox="0 0 32 32"><path d="M15.6 11.8h-3.4V22H9.7V11.8H6.3V10h9.2v1.8zm7.7 7.1c0-.5-.2-.8-.5-1.1-.3-.3-.9-.5-1.7-.8-1.4-.4-2.5-.9-3.3-1.5-.7-.6-1.1-1.3-1.1-2.3 0-1 .4-1.8 1.3-2.4.8-.6 1.9-.9 3.2-.9 1.3 0 2.4.4 3.2 1.1.8.7 1.2 1.6 1.2 2.6h-2.3c0-.6-.2-1-.6-1.4-.4-.3-.9-.5-1.6-.5-.6 0-1.1.1-1.5.4-.4.3-.5.7-.5 1.1 0 .4.2.7.6 1 .4.3 1 .5 2 .8 1.3.4 2.3.9 3 1.5.7.6 1 1.4 1 2.4s-.4 1.9-1.2 2.4c-.8.6-1.9.9-3.2.9-1.3 0-2.5-.3-3.4-1s-1.5-1.6-1.4-2.9h2.4c0 .7.2 1.2.7 1.6.4.3 1.1.5 1.8.5s1.2-.1 1.5-.4c.2-.3.4-.7.4-1.1z"/></svg>', tsconfig: '<svg viewBox="0 0 32 32"><path d="M8.125 7h15.75C24.496 7 25 7.504 25 8.125v15.75c0 .621-.504 1.125-1.125 1.125H8.125A1.125 1.125 0 017 23.875V8.125C7 7.504 7.504 7 8.125 7zm9 9.422v-1.547h-6.188v1.547h2.21v6.89h1.758v-6.89h2.22zm.597 6.968a3.71 3.71 0 001.054.364c.407.08.834.121 1.284.121.438 0 .855-.045 1.249-.133.394-.089.74-.237 1.038-.44.297-.206.54-.48.706-.802.173-.33.26-.737.26-1.223 0-.351-.05-.66-.149-.925-.097-.26-.242-.5-.429-.707a3.174 3.174 0 00-.672-.555 7.037 7.037 0 00-.883-.464c-.24-.105-.456-.208-.646-.307a3.24 3.24 0 01-.486-.304 1.288 1.288 0 01-.309-.327.72.72 0 01-.108-.391c0-.134.033-.255.097-.362a.868.868 0 01.275-.276c.118-.077.262-.136.434-.179.172-.042.362-.064.572-.064a3.623 3.623 0 011.495.34c.162.077.311.166.449.267V15.21a4.256 4.256 0 00-.912-.252 7.003 7.003 0 00-1.135-.082c-.435 0-.846.05-1.235.149-.388.1-.73.254-1.026.464a2.272 2.272 0 00-.7.805c-.172.325-.257.714-.257 1.167 0 .58.157 1.072.47 1.481.316.409.793.755 1.433 1.038.251.11.486.216.703.321.217.106.405.215.563.328.158.113.283.237.375.37a.786.786 0 01.137.456.73.73 0 01-.346.628c-.116.079-.26.14-.434.185a2.472 2.472 0 01-.61.067 3.293 3.293 0 01-1.177-.222 3.472 3.472 0 01-1.08-.665v1.943z"/></svg>', vala: '<svg viewBox="0 0 32 32"><path d="M17.2 12.8c.9 0 1.7.1 2.5.3.2.1.3.1.5.2 1.2.6 1.3 1.7.9 2.6-.2.6-.7 1-1.1 1.4-.8.7-1.7 1.2-2.6 1.8-.7.5-1.5.9-2.1 1.5-.2.2-.3.4-.5.6-.2.3-.2.7-.1 1 .3.6.9 1.1 1.6 1.3.8.2 1.4-.3 1.5-1.1V22c0-.3.1-.5.3-.7.3-.2.7-.4 1.1-.5.5-.1 1.1-.2 1.6-.1.1 0 .2 0 .3.1.5.2.6.5.5 1-.3 1.2-.9 2.1-1.8 2.9-.8.7-1.7 1.1-2.7 1.2-.8.1-1.6 0-2.4-.3-2.6-1-4.4-2.9-5.3-5.6-.6-2 0-3.8 1.6-5.1 1.1-1 2.5-1.5 3.9-1.8.4-.1.8-.2 1.2-.2.5-.1.9-.1 1.1-.1zm1.3-2.9c.1-1.4.7-2.7 2.1-3.5.8-.4 1.6-.5 2.4-.3.9.2 1.2.7 1.1 1.6-.1.6-.4 1.1-.7 1.5-.6.8-1.2 1.6-2.1 2.1-.4.3-.8.5-1.3.6-.6.1-1.1-.1-1.3-.7-.1-.3-.2-.7-.2-1.3zm-1.4-1.7c0 .9-.2 1.7-.7 2.4-.1.2-.2.3-.4.4-.3.3-.7.3-1 0-.3-.3-.4-.6-.5-.9-.2-.7-.3-1.4-.1-2.2.2-.7.7-1.1 1.5-1.1.5 0 .9.2 1 .6.1.1.1.2.1.3 0 .2 0 .3.1.5zM13 10.3c0 .5 0 1-.3 1.4-.2.5-.6.6-1.1.2-.6-.5-.9-1.1-1-1.8v-.7c.1-.6.6-1.1 1.2-1.1.3 0 .6.1.8.4.3.4.4.8.4 1.3v.3zm-2.8 2.9c0 .2-.1.5-.2.7-.1.3-.3.4-.6.3-.1 0-.1 0-.2-.1-.8-.3-1.4-1.4-1.4-2.2 0-.5.4-.9.8-1.1.3-.1.6 0 .9.3.4.4.5 1 .6 1.5.1.3.1.4.1.6z"/></svg>', vue: '<svg viewBox="0 0 1200 1000"><path d="M600 495.9l159.1-275.4h-84.4L600 349.7l-74.6-129.2h-84.5z"/><path d="M793.7 220.5L600 555.9 406.3 220.5H277l323 559 323-559z"/></svg>', wasm: '<svg viewBox="0 0 32 32"><path d="M7 7v18h18V7h-7c0 1-1 2-2 2s-2-1-2-2zm5.2 10h1.2l.9 3.45.9-3.45h.9l.9 3.45.9-3.45h1.2l-1.5 6h-1.05l-.9-3.9c-.3 1.41-.5 2.52-.9 3.9H13.7zm7.95 0h1.8l1.5 6H22.1l-.3-1.5h-1.5L20 23h-1.35l1.5-6m1.05 1.2h-.3l-.45 2.25h1.2z"/></svg>', wat: '<svg viewBox="0 0 32 32"><path d="M13.5 22l-2-8-2 8h-2L5 10h2.1l1.4 7 2-7h2l2 7 1.4-7H18l-2.5 12zM24 10h-4l-2.47 12H20l.5-3h3l.5 3h2.54zm-3.25 7l.75-4.5h1l.75 4.5z"/></svg>', xml: '<svg viewBox="0 0 32 32"><path d="M9.7 9.6c7.2-.1 12.9 6.2 12.7 12.7h-2.6c-.1-2.8-1-5.1-2.9-7.1s-4.4-2.9-7.1-2.9c-.1-.9-.1-1.8-.1-2.7zm8.6 12.8h-2.6c-.1-.5-.2-1.1-.3-1.6-.8-2.4-2.3-3.8-4.8-4.3-.2-.1-.4-.1-.7-.1-.2 0-.2-.1-.2-.2v-2.5c2.1 0 3.9.7 5.5 2 2 1.8 3 4 3.1 6.7zm-5.1-1.8c0 1-.8 1.8-1.8 1.8s-1.7-.8-1.8-1.8c0-1 .8-1.8 1.8-1.8s1.8.8 1.8 1.8z"/></svg>', yml: '<svg viewBox="0 0 32 32"><path fill-rule="evenodd" d="M17.1 19.3c-.5 0-.8.1-1.1.1h-1.8c.4-4.3.7-8.5 1.1-12.8 1.2 0 2.2-.1 3.2 0 .3 0 .7.5.6.8-.3 2.3-.8 4.7-1.2 7-.2 1.6-.5 3.2-.8 4.9zm.4 4c.1 1.1-.8 2.1-2.1 2.2-1.3.1-2.5-.7-2.6-1.8-.1-1.2.8-2.1 2.2-2.2 1.4-.1 2.4.6 2.5 1.8z" clip-rule="evenodd"/></svg>', prolog: '<svg viewBox="0 0 32 32"><g fill-rule="nonzero" transform="translate(8 7)"><path d="M14.532 0s-2.227 2.676-6.23 2.676C4.3 2.676 2.08 0 2.08 0S-.194 3.535.013 6.975c.13 2.167.693 4.453 2.783 6.803 1.232 1.386 2.99 2.79 5.507 4.21 6.797-3.83 8.082-7.573 8.29-11.013C16.8 3.535 14.531 0 14.531 0zM2.404 1.886c.39.294.8.559 1.23.792a4.57 4.57 0 00-2.095 1.478c.223-.78.513-1.539.865-2.27zm11.521 9.805c-.547.843-1.258 1.656-2.144 2.445v-1.069h-1.184v2.035c-.522.391-1.09.778-1.703 1.16v-1.734H7.71v1.732A23.887 23.887 0 016.01 15.1v-2.033H4.825v1.065a13.957 13.957 0 01-1.144-1.14c-.843-.95-1.399-1.87-1.767-2.747a4.555 4.555 0 004.53 1.106l1.859 1.858 1.858-1.858a4.554 4.554 0 004.53-1.105 8.91 8.91 0 01-.766 1.445zm-6.34-.874a4.5 4.5 0 00.718-.578c.219.216.46.41.717.578l-.717.718-.718-.718zm3.915-.45a3.381 3.381 0 01-3.197-2.293 3.37 3.37 0 110-2.162 3.375 3.375 0 113.197 4.456zm1.474-7.689c.43-.233.84-.498 1.23-.792.353.731.641 1.491.864 2.271a4.576 4.576 0 00-2.094-1.479z"/><circle cx="5.105" cy="6.993" r="1.688"/><circle cx="11.5" cy="6.993" r="1.688"/></g></svg>', zip: '<svg viewBox="0 0 1200 1000"><path d="M846.4 813.2H353.6c-8.2 0-15-6.8-15-15v-595c0-8.2 6.8-15 15-15h492.7c8.2 0 15 6.8 15 15v595c.1 8.3-6.7 15-14.9 15z"/><g><path d="M589.5 186.8h20.9v380.3h-20.9z"/><path d="M594.7 210h61.6v20.8h-61.6zm0 43.4h61.6v20.8h-61.6zm0 43.4h61.6v20.8h-61.6zm0 43.4h61.6V361h-61.6zm0 44.1h61.6v20.8h-61.6zm0 43.4h61.6v20.8h-61.6zm0 43.4h61.6v20.8h-61.6zm0 43.4h61.6v20.8h-61.6z"/><path d="M542 230.2h61.6V251H542zm0 43.4h61.6v20.8H542zm0 43.3h61.6v20.8H542zm0 44.2h61.6v20.8H542zm0 43.4h61.6v20.8H542zm0 43.4h61.6v20.8H542zm0 43.4h61.6v20.8H542zm0-304.5h61.6v20.8H542zm0 347.8h61.6v20.8H542zm132.3 160.8c-3.5-26.4-8.8-52.7-13.3-79-.2-1-.5-1.9-.9-2.9-6.7-14.5-24.6-20.7-60-20.5-35.5-.3-53.4 6-60 20.5-.4.9-.8 1.9-.9 2.9-4.5 26.3-9.8 52.6-13.3 79-2.5 18.8 13.7 30.7 41.1 31.8 10.8.4 21.7-.3 32.5 0h1.2c10.8-.2 21.7.5 32.5 0 27.4-1.1 43.6-13 41.1-31.8zM601 666.2h-2c-19.6.1-33.2-9.9-33.6-24.7-.4-15.4 13.8-26.3 34-26v.1h1.2v-.1c20.2-.3 34.4 10.5 34 26-.4 14.8-14 24.8-33.6 24.7z"/></g></svg>', wgt: '<svg viewBox="0 0 512 512"><path d="M252.245 87.27a2.687 2.687 0 00-1.285.276c-21.947 13.49-53.976 32.266-61.563 55.249-2.373 7.61-1.323 10.427-.029 16.561 2.146 7.381 6.63 17.058 11.62 25.1 3.234 5.208 13.882 18.953 14.685 18.953 14.75-9.362 30.539-20.182 42.413-31.898v-39.379c0-33.305-.35-39.883-2.254-42.6-.715-1.363-2.221-2.241-3.587-2.263zm-68.639 66.305c-.776.016-1.998 2.942-2.717 6.503-1.866 9.233-10.172 42.115-13.864 54.902-2.998 10.381-4.059 21.53-2.322 24.339 1.287 2.082 23.115 9.977 54.349 19.655 15.156 4.696 17.55 4.603 20.603-.761 4.651-8.172 5.375-6.754-23.805-46.602-23.032-31.454-26.088-36.773-29.22-50.842-.885-3.975-2.247-7.21-3.024-7.194zm159.185 9.645a28.373 28.373 0 00-3.745.198c-9.359 1.078-43.192 3.334-56.494 3.774-10.8.357-21.738 2.797-23.874 5.317-1.583 1.867-2.345 25.063-1.898 57.758.217 15.866 1.05 18.113 7.096 19.359 9.209 1.898 8.086 3.028 36.967-37.037 22.797-31.625 26.907-36.174 39.32-43.5 3.506-2.07 6.165-4.365 5.909-5.098-.16-.459-1.452-.732-3.281-.771zm15.326 2.945c-7.971.095-10.326 1.963-15.761 5.089-6.357 4.322-14.182 11.573-20.287 18.805-3.955 4.684-13.727 19.059-13.479 19.822 13.461 11.135 28.628 22.813 43.44 30.485l37.452-12.174c31.675-10.292 37.817-12.657 39.813-15.307 1.076-1.102 1.45-2.805 1.048-4.11a2.72 2.72 0 00-.662-1.137c-19.612-16.704-47.361-41.36-71.564-41.473zM86.727 215.74c-.737 0-1.304.085-1.8.237-1.517.26-2.818 1.426-3.26 2.718-.148.43-.207.87-.139 1.304 6.048 25.042 14.006 61.307 33.52 75.625 6.504 4.608 9.507 4.483 15.74 5.148 7.684.24 18.272-1.038 27.462-3.3 5.953-1.465 22.322-7.34 22.57-8.103-4.346-16.92-9.76-35.286-17.234-50.2l-37.452-12.164C99.41 218.323 90.7 215.75 86.726 215.741zm264.019 25.584c-4.43-.018-25.841 6.256-54.864 16.127-15.022 5.11-16.899 6.594-16.216 12.728 1.04 9.345-.377 8.62 46.652 23.706 37.122 11.908 42.717 14.422 53.52 23.963 3.052 2.696 6.051 4.512 6.67 4.042.618-.47-.11-3.555-1.621-6.858-3.918-8.567-16.53-40.056-21.058-52.57-3.677-10.161-9.365-19.797-12.421-21.05-.142-.057-.367-.087-.662-.088zm-117.978 37.62c-5.473-.013-16.236 3.62-44.092 12.786-37.032 12.186-43.036 13.445-57.383 12.076-4.055-.387-7.553-.091-7.777.652-.224.744 2.181 2.81 5.346 4.595 8.205 4.628 36.906 22.686 47.926 30.15 8.947 6.058 19.222 10.516 22.431 9.733 2.379-.58 16.63-18.9 35.486-45.614 9.15-12.963 9.8-15.272 5.642-19.833-2.573-2.823-3.835-4.536-7.58-4.545zm35.88 11.354c-1.126.034-2.3.43-3.705 1.067-8.567 3.877-8.318 2.302-8.133 51.691.146 38.985-.51 45.09-6.245 58.312-1.62 3.736-2.427 7.147-1.789 7.59.638.442 3.353-1.199 6.028-3.657 6.937-6.373 32.976-28.101 43.48-36.276 8.527-6.636 15.939-15.026 16.186-18.32.183-2.442-12.832-21.66-32.412-47.848-7.126-9.53-10.032-12.663-13.41-12.56zm62.74 10.089c-.052.01-.089.015-.11.029-6.43 16.243-12.843 34.285-15.563 50.743l23.143 31.858c19.576 26.944 23.732 32.054 26.868 33.134 1.38.682 3.112.508 4.23-.277a2.72 2.72 0 00.88-.978c9.826-23.814 24.702-57.83 17.332-80.882-2.554-7.552-5.062-9.217-9.714-13.42-6.075-4.71-15.386-9.897-24.151-13.468-5.5-2.242-21.34-6.882-22.916-6.74zm-106.14 48.5c-9.025.043-17.93.538-26.177 1.788l-23.153 31.859c-19.576 26.944-23.154 32.474-23.212 35.791-.222 1.524.479 3.113 1.571 3.933.364.274.773.465 1.206.534 25.685 1.986 62.628 5.625 82.275-8.508 6.393-4.763 7.204-7.667 9.763-13.39 2.603-7.233 4.658-17.696 5.346-27.135.446-6.115-.092-23.492-.74-23.964-8.718-.547-17.855-.952-26.88-.909z"/></svg>', illustrator: '<svg viewBox="0 0 32 32"><path d="M25 8H7v17h18V8zm-7.6 12.3h-1c-.2 0-.2 0-.3-.2-.2-.7-.5-1.5-.7-2.2 0-.1-.1-.2-.3-.2H13c-.2 0-.2.1-.3.2-.2.7-.4 1.5-.6 2.2 0 .1-.1.2-.2.2h-1.1c-.2 0-.2-.1-.2-.2.4-1.3.7-2.6 1.1-3.9.4-1.5.9-3.1 1.3-4.6.1-.2.1-.3.3-.2h1.5c.1 0 .2 0 .2.2.5 1.5.9 3.1 1.4 4.6l1.2 3.9c.1.2.1.2-.2.2zm3-.5c0 .5 0 .5-.5.5h-.7c-.2 0-.2 0-.2-.2v-6.5c0-.2.1-.3.2-.2h.9c.2 0 .2.1.2.2.1 2.1.1 4.2.1 6.2zm-.7-7.1c-.4 0-.8-.3-.8-.7 0-.4.3-.8.8-.8.4 0 .8.3.8.7 0 .5-.3.8-.8.8z"/><path d="M14.2 13.3c0-.1-.1-.1-.2 0 0 .1-.1.2-.1.3-.2.9-.4 1.8-.7 2.6 0 .1 0 .2.1.2h1.4c.2 0 .2-.1.1-.2-.1-1-.3-2-.6-2.9z"/></svg>', photoshop: '<svg viewBox="0 0 32 32"><path d="M25 7.4V7H7v18h17.5c.4 0 .5-.1.5-.5V7.4zm-10.6 9.7c-.8.2-1.4.2-2.4.3V21h-1.8c-.1 0-.2-.3-.2-.5V11c0-.1 1-.2 1.5-.2.9 0 1.8 0 2.6.1 1.7.2 2.6 1.3 2.7 2.8.1 1.7-.8 3-2.4 3.4zm7.7 2c-.1.9-.6 1.5-1.4 1.8-1.2.5-2.4.4-3.6-.1-.1 0-.2-.2-.2-.3.1-.4.2-.8.3-1.1.7.1 1.4.3 2 .4.4.1.8-.1.9-.6.1-.4-.1-.7-.6-1-.3-.2-.7-.3-1-.4-1.1-.5-1.6-1.2-1.5-2.3.1-.9.8-1.6 1.9-1.9.9-.2 1.8-.1 2.6.2.1 0 .3.3.2.4-.1.4-.2.7-.3 1.1-.5-.1-1-.2-1.4-.3-.2 0-.5 0-.7.1-.5.2-.6.8-.2 1.1.2.2.4.2.7.4.3.2.7.3 1.1.5.8.3 1.2 1 1.2 2z"/><path d="M13.9 12.5c-.6-.1-.9-.1-1.9-.2v3.4c1 .1 1.4.1 2.1-.2.7-.3.8-1 .8-1.6 0-.7-.4-1.2-1-1.4z"/></svg>', pdf: '<svg viewBox="0 0 32 32"><path d="M7 22.9c.1-.6.5-1 .9-1.4.5-.5 1.1-.8 1.8-1.2.7-.4 1.4-.7 2.1-1 .1 0 .2-.1.2-.2.6-1.2 1.2-2.4 1.7-3.6.3-.7.5-1.4.8-2.1v-.1c-.3-.7-.6-1.5-.7-2.3-.2-.8-.2-1.6-.1-2.4.1-.5.4-.9.8-1.3.1-.1.3-.1.5-.1h.8c.2 0 .4.1.5.3.3.2.5.5.7.8.2.4.2.8.3 1.2 0 1.2-.2 2.3-.4 3.4-.1.4-.2.7-.3 1.1v.1c.6 1.1 1.4 2.1 2.2 3 .1.1.1.1.3.1 1.1-.2 2.2-.2 3.2-.2.6 0 1.3.1 1.9.4.3.2.6.4.8.7.1.2.2.4.2.6v.7c0 .2-.1.4-.3.5-.2.2-.4.5-.8.5-.2 0-.5.1-.7.1-1.6.1-2.9-.4-4.2-1.3-.2-.2-.5-.4-.7-.6-.1 0-.1-.1-.2-.1-.6.1-1.2.2-1.8.4-.8.2-1.6.5-2.4.7-.1 0-.1.1-.2.1-.5.9-1.1 1.8-1.7 2.6-.5.6-1.1 1.2-1.7 1.7-.3.2-.7.4-1.1.5h-.8c-.2 0-.3 0-.5-.1-.5-.2-.9-.6-1-1.1-.1 0-.1-.2-.1-.4zm8.8-7c-.3.8-.7 1.6-1 2.4l2.4-.6c-.5-.6-1-1.3-1.4-1.8zm4.3 2.6c.6.4 1.3.7 2 .9.3.1.5 0 .7-.1.2-.1.3-.4.1-.5 0-.1-.1-.1-.2-.1-.2-.1-.5-.1-.8-.2-.6-.1-1.2-.1-1.8 0zm-9.4 2.8s-.1 0 0 0c-.6.3-1.2.7-1.7 1.1-.3.2-.5.5-.7.8v.2c.1.1.1.1.2.1.3-.2.5-.4.7-.5.6-.5 1-1.1 1.5-1.7zM15 11.2c.1 0 .1 0 0 0 .2-.6.3-1.2.3-1.7 0-.3 0-.6-.1-.9 0-.1-.1-.1-.2-.1s-.1.1-.2.1c-.2.3-.2.6-.2 1 0 .3 0 .5.1.8.2.2.2.5.3.8z"/></svg>', font: '<svg viewBox="0 0 32 32"><path d="M21.1 18.3h-3.3l-.4.9c-.1.3-.2.5-.2.7 0 .3.1.5.3.6.1.1.4.1.9.2v.3h-3.1v-.3c.3-.1.6-.2.8-.4s.5-.7.8-1.4l3.3-7.4h.1l3.3 7.6c.3.7.6 1.2.8 1.4.2.1.4.2.7.2v.3h-4.5v-.3h.4c.4 0 .6-.1.8-.2.1-.1.2-.2.2-.3v-.3s-.1-.2-.2-.5l-.7-1.1zm-.2-.6l-1.4-3.2-1.4 3.2h2.8z" opacity=".6"/><path d="M6.7 22.4c.5 0 .9-.3 1.2-.7.2-.3.5-.8.8-1.7l4.4-10.9h.6l4.5 10.5c.5 1.2.9 1.9 1.1 2.3s.6.5 1.1.5v.5h-6.5v-.5c.7 0 1.1-.1 1.3-.2.2-.1.3-.3.3-.6 0-.2-.1-.4-.2-.7-.1-.2-.2-.4-.3-.7l-.5-1.2H10c-.3.8-.5 1.3-.6 1.6-.2.5-.3.9-.3 1.1 0 .3.2.5.6.6.2.1.6.1 1 .1v.5h-4v-.5zm7.5-4.2l-1.9-4.6h-.2l-1.8 4.6h3.9z"/></svg>', image: '<svg viewBox="0 0 32 32"><path d="M21.3 17.2c1 0 1.8-.8 1.8-1.8s-.8-1.8-1.8-1.8-1.8.8-1.8 1.8.8 1.8 1.8 1.8zm-11.1-5.5v12.4h15.3V11.7H10.2zm.7.7h13.9v10.8l-3.6-4.1-2.2 2.6-4.4-4.7-3.7 4.6v-9.2zm9.8-4.5H6.5v10.8h1.9V9.6h12.3V7.9z"/></svg>', svg: '<svg viewBox="0 0 32 32"><path d="M11.5 11.4H17c0-2-2.3-4.9-5.1-4.9s-5.3 2.4-5.3 5.2 2.9 5.2 4.9 5.2v-5.5z" opacity=".5"/><path d="M13.6 13.7h11.8v11.8H13.6z"/></svg>', sublime: '<svg viewBox="0 0 32 32"><path d="M25 15.4v-.5c-.2-1.2-.6-2.4-1.2-3.5-.6-.9-1.3-1.7-2.1-2.4-.7-.6-1.4-1-2.2-1.3-2.6-1-5.2-.9-7.7.4-1.4.8-2.5 1.8-3.4 3.2-.9 1.4-1.4 2.8-1.4 4.5v1.1c.2 1.5.6 2.8 1.4 4.1.7 1 1.5 1.9 2.6 2.6.6.4 1.3.8 2.1 1 1.3.4 2.7.6 4 .4 3.3-.5 5.7-2.3 7.1-5.3.7-1.4.9-2.8.8-4.3zm-6.8 4.8c-.8.4-1.6.4-2.4.4-1.2 0-2.2-.4-3.2-1-.2-.1-.2-.2-.1-.3l.6-1.2c.1-.1.1-.1.2-.1.8.6 1.7.9 2.7 1 .3 0 .6 0 .9-.1.4-.1.6-.4.7-.7 0-.3-.1-.6-.5-.8-.6-.3-1.2-.5-1.8-.7-.7-.2-1.5-.4-2-1-.4-.4-.5-1-.5-1.6.1-1.6 1.2-2.4 2.5-2.6 1.4-.2 2.6.1 3.7.8.1.1.1.2.1.3-.2.4-.4.7-.6 1.1-.1.2-.1.1-.3.1-.8-.5-1.6-.8-2.6-.7-.2 0-.4.1-.6.1-.3.2-.5.4-.5.8 0 .3.1.6.4.8.3.2.6.3.9.3.6.2 1.2.3 1.9.5.1-.1.2-.1.4-.1-.1 0-.3 0-.4.1.2.1.5.2.7.3 0 0 .1 0 .1.1 0 0 .1 0 .1.1.1.1.2.1.2.2l.1.1c.9.8 1 3-.7 3.8z"/></svg>', "code-search": '<svg viewBox="0 0 32 32"><g class="layer"><path d="M18.381 5.225c-1.371 0-2.714.4-3.866 1.153a7.18 7.18 0 00-2.628 3.093 7.282 7.282 0 00-.547 4.04 7.241 7.241 0 001.709 3.694l-6.963 7.999.966.873 6.946-7.964a7.08 7.08 0 003.055 1.402 7.038 7.038 0 003.35-.17 7.1 7.1 0 002.901-1.703 7.214 7.214 0 001.809-2.858 7.285 7.285 0 00-.936-6.53 7.143 7.143 0 00-2.536-2.22 7.05 7.05 0 00-3.26-.8v-.009zm0 13.098a5.775 5.775 0 01-3.235-.993A5.88 5.88 0 0113 14.685a5.96 5.96 0 01-.331-3.406 5.916 5.916 0 011.594-3.018 5.803 5.803 0 012.982-1.613 5.76 5.76 0 013.365.336 5.84 5.84 0 012.614 2.17c.64.97.982 2.11.982 3.275a5.93 5.93 0 01-1.706 4.168 5.79 5.79 0 01-4.119 1.726z"/><path d="M18.404 6.514c-1.138 0-2.251.33-3.207.95a5.93 5.93 0 00-2.179 2.55 5.974 5.974 0 00.963 6.379l-5.774 6.595.801.72 5.76-6.566a5.869 5.869 0 007.717-.389 5.944 5.944 0 001.5-2.357 5.975 5.975 0 00-.775-5.384 5.914 5.914 0 00-2.103-1.832 5.874 5.874 0 00-2.703-.659v-.007zm0 10.8c-.956 0-1.89-.285-2.684-.819a4.854 4.854 0 01-1.779-2.18 4.888 4.888 0 011.047-5.297 4.802 4.802 0 015.264-1.054c.883.368 1.637.99 2.168 1.79a4.882 4.882 0 01-.601 6.137 4.815 4.815 0 01-3.415 1.423z"/><path stroke-dasharray="null" stroke-linecap="null" stroke-linejoin="null" stroke-width="null" d="M5.64 24.78l7.88-8.967 2.261 1.988-7.88 8.967z"/></g></svg>', salesforce: '<svg viewBox="0 0 32 32"><path d="M12.4 10.4c.6.1 1.2.3 1.7.7.2.2.4.3.5.5h.1c.2-.2.4-.3.6-.5.2-.1.5-.2.7-.3.1 0 .2 0 .4-.1h.6c.4 0 .7.1 1 .3.5.3.8.6 1.1 1.1 0 .1.1.1.1 0 .3-.1.5-.2.8-.2h.8c.4 0 .9.2 1.3.4.3.2.6.3.8.6.3.3.5.6.7 1 .2.3.3.7.3 1.1v.8c0 .5-.2.9-.4 1.3s-.5.8-.8 1.1c-.2.2-.5.4-.8.5l-.9.3h-1.3c-.2.4-.5.6-.8.9-.3.2-.6.3-1 .4h-.6c-.3 0-.5-.1-.8-.2h-.1c-.1.3-.3.5-.5.8-.2.3-.5.5-.8.6-1.2.6-2.7.3-3.6-.9-.2-.2-.3-.4-.4-.7 0-.1-.1 0-.1 0h-.7c-.3 0-.5-.1-.7-.1-.3-.1-.5-.2-.8-.4-.3-.3-.6-.6-.8-1 .1-.4.1-.7 0-.9v-.6c0-.3.1-.6.2-.8.1-.2.2-.4.4-.6.1-.1.2-.2.2-.3.2-.2.3-.3.5-.4 0 0 .1 0 0-.1-.1-.2-.2-.4-.2-.7v-.9c.2-1.5 1.4-2.7 2.9-2.8h.2c.1.1.2.1.2.1z"/></svg>', shell: '<svg viewBox="0 0 32 32"><path d="M6.726 7.237v17.8h18v-17.8zm2.8 2.3l1.899 1.5-1.899 1.6zm0 4.6h11.6v1.301h-11.6zm0 3.7h7.3v1.3h-7.3zm0 3.601h9.7v1.299h-9.7z"/></svg>', video: '<svg viewBox="0 0 32 32"><path d="M16 25c-4.9 0-9.1-4.1-9-9.2C7.1 11 11 7 16.1 7c4.9 0 9 4.1 8.9 9.2-.1 4.8-4.1 8.8-9 8.8zm-3.2-14.6v11.1h.1l8.1-5.4c.1-.1.1-.1 0-.1-2.7-1.8-5.4-3.6-8.2-5.4.1-.1.1-.2 0-.2z"/></svg>', audio: '<svg viewBox="0 0 32 32"><path d="M16.3 23.8c-.2 0-.4-.2-.6-.3-1.5-1.3-3-2.6-4.6-3.9-.1-.1-.1-.1-.2-.1H6.7c-.4 0-.6-.2-.7-.5v-5.7c0-.5.3-.8.8-.8H11c.1 0 .2 0 .2-.1 1.5-1.3 3.1-2.7 4.6-4 .4-.3.8-.3 1.1.1.1.1.1.3.1.4V23c0 .3-.1.6-.4.7-.1 0-.1 0-.2.1h-.1zm9.7-7.7c0 .3 0 .6-.1.9-.1 1.2-.4 2.4-.9 3.6-.4 1-.9 1.9-1.6 2.7-.1.2-.3.3-.6.4-.3 0-.5-.1-.7-.3-.2-.2-.2-.5 0-.7.1-.2.3-.4.4-.6 1-1.4 1.6-2.9 1.8-4.5.4-3-.3-5.7-2.2-8.1-.2-.3-.3-.6 0-.9.3-.4.8-.4 1.2 0 .7.9 1.3 1.8 1.7 2.9.5 1.2.8 2.5.9 3.8v.7c.1 0 .1.1.1.1z"/><path d="M23.3 15.9c0 2.1-.6 3.9-1.7 5.5-.1.2-.3.3-.6.4-.3 0-.5-.1-.7-.3-.2-.2-.2-.5 0-.8 0-.1.1-.1.1-.2.8-1.1 1.2-2.2 1.4-3.5.3-2.1-.2-4-1.5-5.8-.1-.2-.2-.4-.2-.6.1-.3.2-.5.5-.6.3-.1.6 0 .8.3.3.4.6.9.9 1.4.5 1.1.9 2.3.9 3.5.1.4.1.6.1.7z"/><path d="M20.5 16c0 1.2-.3 2.4-1 3.4-.2.4-.6.5-1 .3-.3-.2-.5-.6-.2-1 .4-.6.6-1.3.7-2 .2-1.2-.1-2.4-.7-3.4-.2-.4-.1-.8.2-1 .3-.2.8-.1 1 .2.4.6.6 1.2.8 1.9.1.6.2 1.1.2 1.6z"/></svg>', windows: '<svg preserveAspectRatio="xMidYMid" viewBox="0 0 32 32"><path d="M6 8.81l8.173-1.114.004 7.884-8.17.047L6 8.81zm8.17 7.68l.006 7.89-8.17-1.124v-6.82l8.163.053zm.99-8.94l10.837-1.58v9.51l-10.837.086V7.55zM26 16.564l-.003 9.468L15.16 24.5l-.015-7.955L26 16.563z"/></svg>', jenkins: '<svg viewBox="0 0 1200 1000"><path d="M637.9 394c1.9 0 3.7-.2 5.6-.3 21.2-1.1 39.2-10.7 56.4-22 1.1-.7 1.9-2.3 2.4-3.6 1.1-3 1.6-6.2 2.8-9.2 2.7-6.6.5-11.2-4.6-16-15.2-14.3-28.3-30.5-39.2-48.2-3.4-5.5-5.4-11.9-8.3-17.8-.8-1.6-2.8-2.7-4.2-4-.5 1.6-1.5 3.2-1.5 4.8 0 2.7.4 5.4 1 8 3.1 15.1 11.2 27.8 20.6 39.7 6.4 8.1 13 16 19.9 23.7 6 6.7 4.5 18.4-4.6 21.3-5.1 1.6-9.8 4.6-14.8 6.7-8.9 3.7-17.7 7.6-27.7 7.4-7.7-.2-10.8-2.5-12.7-9.8-.7-2.8-1.5-5.5-2.4-8.5-5.1 5.8-5.3 12.8-2 21.2 2.6 6.6 7.8 6.7 13.3 6.6zm-47.5 21.7c6.2 6.9 14.2 10.6 22.9 13.3 14.2 4.3 28.7 6 44 5 0-4.2-.1-7.7 0-11.3.1-4.7-1.8-6.3-6.7-6.4-12.5-.2-25.1-.5-37.5-1.8-9.1-1-17.9-3.7-27.5-5.7 1.6 2.4 3 4.9 4.8 6.9zM573.1 305c-4.7-.4-7.7 2.2-6.1 6.7.9 2.4 3.1 5.1 5.4 6.2 9.6 4.3 19.8 5.4 29.6 1.4 11.8-4.7 12.4-14.3 9.7-24.5-2.6-10.2-18.8-32-22.6-30.5-6.4 3.3 9.4 34 7.3 39.6-.2 3.3-15.6 1.8-23.3 1.1zm-30-43.9c.9-1.9 1.7-3.5 2.5-5.1 8.3-15.7 20.9-28.6 42.5-24.5 3.5.7 4.6-1 4.8-4 .3-4.7-4-9.6-9.7-10.8-8.5-1.9-16.1.4-23.1 5.2-11.2 7.7-20.1 17-21.7 31.3-.2 3.2-.2 6.5 4.7 7.9zm123.1 154.1c-1 .1-2.4 2-2.5 3.1-.3 4.7-.1 9.4-.1 14.3 20.9.7 38.8-14.8 47.5-35.2-1.2.3-2.2.4-3 .8-13.4 6.9-26.3 15.2-41.9 17zm32-101.9c10.2 1.2 18.9-2.2 26.4-9 2.6-2.3 2.7-4.4 1-7.5-4.4-8-12.7-34.6-17.3-33.5s.8 17.8 4.2 25.9c3.3 7.8 2.6 9-6 9.7-2.4.2-15.5-2.3-17.3 2.1-2 4.5 2.6 11.5 9 12.3z"/><path d="M827 655.2c-7.8-26.9-23.9-34.2-50.6-27.9-11.4 2.7-22.2 8.1-33.3 12.3-1.7.6-3.4 1.3-6 2.4 1.1-3.1 1.8-5.3 2.6-7.5 11.8-35.5 23.7-70.9 35.4-106.4 5.2-15.6 1.7-28.6-11.6-38.7-7.8-6-15.3-12.3-22.9-18.6-2.9-2.4-5.8-4.8-8.4-7.4-9.4-9.2-9.7-10.8-3.1-22 12.9-22.2 19.1-46.6 23.3-71.5 4.9-28.6 7.4-57.5 6.2-86.6-1.3-33-8.2-64.5-28.3-91.7-26.4-35.6-61-57.4-105.5-62.4-3.2-.4-6.3-.8-9.5-1.2h-22.4c-8.7 1.3-17.4 2.5-26 3.9-31.6 5.4-60.6 17.8-87.8 34.5-4 2.5-8 5.1-12 7.5-15.1 9.2-26.1 21.8-32.3 38.6-1 2.7-3.4 5.3-5.9 7-14.6 9.8-20.3 24.3-20.9 40.8-.6 13.9.6 27.8.6 41.7 0 2.8-1.4 5.7-2.3 8.4-2.4 6.8-6.1 13.4-7 20.4-3.2 25.2 2.8 48.1 20.1 67.3 6.1 6.8 14.4 10.6 23.1 13.3 3.3 1 5.1 2.6 5.6 6.1 1.8 11.9 6.4 22.7 13.2 32.7 1.7 2.6 3 5.8 3.5 8.8.9 5.2-1 8.9-6.1 12-23.3 14.1-46.4 28.7-69.5 43.1-2.3 1.4-4.7 2.6-7.3 3.5-8.9 3.1-16.1 7.8-18.9 17.4v7.1c8.6 23.3 17.9 46.3 25.5 69.8 9 27.5 12.3 56.1 14.1 84.9.9 13.9 1.3 27.7 1.8 41.6.2 6.7 3.6 11.4 9.3 13.9 20.4 9.1 40.8 18.1 61.3 26.8 11.2 4.7 23 6.9 35.2 6 3.4-.2 4.5 1 5.5 4.2 7.3 23.2 14.9 46.3 22.3 69.5 1 3.1 2.6 4.7 5.9 5.3 13.2 2.2 26.3 4.5 39.4 6.8 1.5.3 2.9.6 4.4.9h41.7c7.6-.7 15.2-1 22.7-2.2 7.4-1.2 15-2.8 22-5.4 8.2-3.1 11.5-9.6 10.2-18.7-1.4-10.2-1.1-10.2 8.7-12.8 18.1-4.8 22-11.3 18.2-29.4-2.2-10.8-4-21.6-5.9-32.4-.4-2.5-.2-5.1-.2-7.6 0-3.6 1.4-5.8 5.1-6.9 4.1-1.2 6.7-4.3 7.6-8.7.3-1.4 1.4-3.2 2.6-3.8 10.7-4.9 22-6.4 33.7-5.3.8.1 2 .4 2.2.9 2.9 8.1 10.3 8.3 16.8 8.7 10.4.7 21 1.1 31.3.1 17.5-1.7 25-14.4 29.4-29.5 1.3-4.5 2.1-9.2 3.1-13.8v-12.2c-3.1-12.5-6.3-25.1-9.9-37.6zM480.5 463.5c-7.7-16-14.3-32.4-17.5-50.1-.9-5.1.4-8.8 3.9-12.4 2.3-2.4 4.7-5 6.1-7.9.8-1.8.1-4.6-.8-6.6-.3-.6-3.7-.2-5.4.5-2.3.9-4.4 2.5-6.5 3.9-9.2 6.4-16.8 6.7-26.1.4-11.9-8-17.9-19.9-21.4-33.4-3-11.5-2.7-22.6 4.4-32.6 7.3-10.3 17.3-15.6 30.1-14 8.2 1 13.2 6.6 16.3 13.7 2 4.5 3.2 9.3 4.4 14 .7 2.8 2 4 4.9 3.6 3.7-.5 7.5-.5 11.1-1.4 8-2 10-5.5 8.2-13.7-1.8-7.9-4-15.8-5.5-23.7-2.1-10.7-.1-21.2 1.8-31.7 2.2-11.8 4.4-23.6 5.4-35.6.5-6.2-1.9-12.6-2.7-18.9-.3-2.4-.3-5.4.8-7.4 7.1-13.7 17.8-24.4 30.3-32.9 14.2-9.7 29-18.6 44.2-26.6 14.7-7.8 31.1-7.8 47.3-6.2 22.2 2.2 43.3 8.9 63.2 19.1 13.3 6.8 23.1 17.5 32.4 28.8 4.6 5.6 8.9 11.4 14.1 18-10.4-1.2-20-2-26.4 6.6-2.2 3-2.9 7.1-3.6 11.3 10-6.4 19.8-5.9 29.5-1.1 9.3 4.5 16.6 11.2 20 21.2 1.9 5.7 3.5 11.8 4 17.8 2.4 24.7 3.9 49.4 1.4 74.1-3.4 32.4-11 63.8-28.4 91.8-7.5 12.1-15.4 24.7-25.7 34.2-13.8 12.8-31.5 19.8-50.1 24.3-14.1 3.4-27.9 3.7-41.6-.8-15.2-5-28.9-12.9-41-23.7-14.1-12.6-25-27.9-36.1-43-.5-.7-1-1.3-1.6-2.1-.9 4.5.8 11.1 3.9 16.8 7.9 14.2 19.1 25.8 30.6 37 5.5 5.4 11.8 10 18.5 15.5-4.7 0-54.8 4.3-67.6 1.1-14.6-3.5-22.6-15.1-28.8-27.9zm134.4 107c13.5 12.4 33.1 52.6 40.2 69.9-6.4-1.8-12.3-2.9-17.8-5.1-17.9-7.2-35.5-14.7-53.3-22.1-2.9-1.2-3.6-3.3-2.3-5.6 3.6-6.4 6.7-13.4 11.6-18.7 6.3-6.9 14.2-12.3 21.6-18.4zm37.7 33.1c-6.1-12.4-13.1-24.3-19.6-36.5-1-1.8-2.1-4.4-1.5-6 1.1-2.6 2.8-5.1 7-4 2.2.6 5.3-.8 7.6-2 6.1-3.3 11.3-2.4 16.9 1.7 4 2.9 8.8 4.7 14 7.3.3 15.7-2.1 65.6-8.6 74.7-5.3-12.1-10.1-23.8-15.8-35.2zM636.1 850c-19.9 2.4-39.8 1.8-59.5-1.6-7.5-1.3-14.9-3.1-22.2-5-1.6-.4-3.6-2-4-3.5-6.3-23.4-13.4-46.7-18.2-70.4-5.2-25.5-8.3-51.5-12.2-77.3-.2-1.3-.2-2.7-.3-4.8 7.4-1.3 14.4-2.8 21.4-3.8 27.6-3.9 55.3-6.3 83.2-4.8 8.3.4 16.6 1.9 24.9 2.8 2.7.3 3.1 1.9 3.3 4 1 15.5 2.2 30.9 3.1 46.4 1.7 29.4 3.1 58.9 4.9 88.3.5 8 2 15.9 3.2 24.8-9.2 1.7-18.3 3.8-27.6 4.9zm55.4-31.6c-4.7 1.1-9.5 2.1-15.2 3.4-.9-19.8-1.7-38.6-2.6-57.7 5.3-1.3 9.4-2.5 13.5-3.1 1.3-.2 3.9 1.2 4 2.1 2.7 14.9 5.5 29.9 7.4 44.9 1.1 8.9 1.2 8.5-7.1 10.4zm-10-180.9c-.1.2-.6.3-.3.2 2.2-18 4.6-36.3 6.7-54.5.6-5 .8-10.1.8-15.2-.1-4 2.3-5.3 5.4-6.1 8.7-2.2 20.5 2.8 25.1 10.6.6 1 .8 3 .2 4-12.6 20.4-25.2 40.7-37.9 61zm110 90.2c-7.2.3-14.3.9-21.4-.7-.1-.5-.1-1.1-.2-1.6 8.1-1.8 16.1-3.6 24.2-5.4 0-.4 0-.7.1-1.1-2.9-.5-5.8-1.5-8.6-1.5-9.8.2-19.5.7-29.3 1.1-5.9.2-5.7 0-6.5-5.9-2-15.1-4.3-30.1-6.3-45.1-.2-1.2.8-3.4 1.9-3.9 7.2-3.5 14.6-6.8 21.9-10 4.8-2.1 10-3.6 14.6-6 9.5-4.9 20.4-1.9 23.7 8.3 4.4 13.7 8.8 27.8 10.6 42 1.7 15.2-8 29.1-24.7 29.8z"/><path d="M710.4 223.7s12.9 2.2 24.7 20.6 12.3 50.9 12.3 50.9.5 28.9-3.1 58.1c-8.7 67.3-61.4 122.8-61.4 122.8l35.7-29.9 25.7-51.3 9.2-60.6v-60.6l-8.4-50.2-32-7.8-2.7 8z"/></svg>', babel: '<svg viewBox="0 0 32 32"><path d="M22.36 12.38l1.876-1.687A4.99 4.99 0 0025 8.023v-.211c0-.211-.07-.422-.139-.563-.347-.703-.973-1.195-1.737-1.476-.695-.492-1.946-.703-3.753-.773-2.016.281-3.962.773-5.769 1.546-.695.492-1.46.984-2.224 1.406v.14c.07 0 .14-.07.209-.07s.139 0 .139.07l.139-.07h.07v.07s-.07.141-.348.282c-.278.14-.695.492-1.251.914l.208.14-.139-.07c0 .07-.07.07-.208.07v.07l.139.211c-.07 0-.14 0-.209-.07-.417.07-.764.351-.973.703v.281c.14-.14.278-.281.487-.422v.211h-.07l-.139.07v.07l.14.212v.07a.97.97 0 01.208-.281l.208-.211.14-.14.138-.141.07-.07.347-.211c.209.07.278.14.278.21h.14c1.042-.773 2.154-1.405 3.335-1.827v.14c-.07.141-.208.282-.278.352s-.07.07-.139.07c0 .07.07.211.14.281-.418 1.336-.904 2.601-1.53 3.796A97.162 97.162 0 017 25.032c0 .07.07.14.07.21l.208-.07c.208-.07.347-.14.486-.21h.07v.14h.139l.139-.07h.139v.281c-.07.14-.139.352-.209.492-.208.352-.417.703-.486 1.125V27h.208l.209-.281c.486-.562.903-1.125 1.181-1.757l.695-.211c.487-.14.904-.281 1.251-.422l.14-.07c.694-.281 1.39-.563 2.084-.914.765 0 1.599-.281 2.224-.773v-.07l-.347.14h-.07v-.14c.556-.07 1.043-.211 1.46-.492a130.306 130.306 0 013.127-2.32c2.155-1.617 3.197-3.163 3.128-4.639-.348-.562-.765-1.124-1.251-1.546l-.209-.281c0-.14.278-.422.973-.844zm-3.337 5.342l-1.946 1.546c-.764.492-1.529.984-2.293 1.406a20.566 20.566 0 01-3.962 1.898c-.07 0-.208.07-.278.07h-.07c.07-.281 1.113-2.32 3.059-6.255 1.39-.211 2.78-.633 4.03-1.195l.487-.07c.765-.141 1.53.07 2.085.562v.28c-.347.985-.695 1.547-1.112 1.758zm1.182-6.396a7.49 7.49 0 01-1.668 1.265c-1.112.351-2.224.773-3.267 1.336-.07 0-.07 0-.139-.07h-.208v-.141c0-.352.139-.774.347-1.055.14-.773.278-1.265.487-1.335l1.598-3.585c0-.21.348-.422 1.043-.492h.208v.211c.695-.14 1.112-.14 1.251-.14 1.182-.141 1.807.14 1.946.632v.14h.14v-.491h.138c.278.14.487.351.556.632v.14c0 .282-.139.563-.347.774-.07 0-.14-.07-.14-.21h-.138v.42c-.626.985-1.112 1.477-1.39 1.477a4.194 4.194 0 01-.417.492z"/></svg>', bower: '<svg viewBox="0 0 32 32"><path d="M25.1 15.5c-.3-.1-.6-.3-1-.4-1.8-.5-3.6-.7-5.4-1-.3 0-.6-.1-1-.1.1-.5.3-.7 1-.8.1.1.1.3.2.4 0 .1.1.2.2.1h.7c1.2-.2 2-.8 2.5-2 .1-.4.2-.8.3-1.1.1-.8.4-1.6 1-2.2l.2-.2c-1.4-.4-3.9.5-4.9 2.6-.2-.1-.5-.1-.7-.2-.1 0-.2-.1-.2-.2-.4-1.1-1.1-2-2.2-2.7-.8-.5-1.9-.6-2.8-.5-2.1.3-3.8 1.3-5.1 2.9S6 13.7 6.1 15.7c.1 2.1.8 4.1 2 5.9.4.6 1.1 1.2 1.6 1.7.7.4 1.6.4 2.2-.2.1-.1.2-.3.3-.4 0 .1.1.1.1.2.2.4.3 1 .5 1.3.2.4.9.7 1.4.5.1-.1.2-.1.3 0 .4.2.8.2 1.2 0 .2-.1.3-.3.5-.3.2-.1.4 0 .6 0 .5-.1 1-.3 1-1 0 0 0-.1.1-.1.2-.1.4-.3.4-.5.1-.3.1-.6 0-1-.3-.5-.6-1.2-1-1.7l-.1-.1c.3.1.6.2 1 .3.5.1 1 .1 1.4-.3.1 0 .1.1.2.1.8.5 1.9.3 2.5-.4h.2c.6.1 1.1 0 1.6-.4.2-.2.4-.4.4-.7v-.1c1-.1 1.5-.5 1.5-1.5-.1-.7-.3-1.2-.9-1.5zm-4.4-2.7c-.4.2-.8.3-1.4.3 0 0-.1 0-.1-.1-.1-.2-.1-.4-.2-.6 0-.1 0-.1.1-.1.3 0 .4 0 .4.4.2-.3.2-.3.5-.2.2.1.4.1.6.2.2.1.2.1.1.1zm-1.3-2.1c.4-.7 1-1.2 1.5-1.6.5-.3 1-.5 1.6-.5-.1.1-.2.2-.3.4-.3.4-.3 1-.4 1.4-.1.5-.2 1-.4 1.5 0 .2-.2.3-.2.4-.3-.3-.6-.5-1-.8v-.2c.4-.7.8-1.5 1.5-2-1 .4-1.4 1.1-1.9 2-.2-.1-.3-.2-.5-.3 0-.1.1-.2.1-.3zm-2.7 1.7c0-.5.1-1 .4-1.4 0-.1.2-.1.2-.1 1 .1 1.8.4 2.6 1 .2.1.3.3.5.4-.2-.1-.5-.1-.7-.2-.5-.1-1.1-.1-1.6.1-.4.3-.9.3-1.4.2.3.3.6.3 1 .2.3 0 .5-.1.8-.2 0 .1-.1.2-.1.2-.4.3-1 .5-1.5.7h-.1c-.1-.3-.1-.6-.1-.9zm-3-2.4c.9 0 1.8.8 1.8 1.8s-.8 1.8-1.8 1.8-1.8-.8-1.8-1.8c0-1.1.8-1.8 1.8-1.8zm4.6 6.1c.4.1 1 .2 1.4.2.6.1 1.1.2 1.8.3.2 0 .3.1.1.3-.2.3-.7.5-1.1.4h-.2c.1.2 0 .5-.2.6-.3.3-.6.4-1 .4-.2 0-.5-.1-.7-.1-.1.6-1.2.8-1.9.3.1.3.2.6.3 1v.3c-.2 1.5-1.4 2.6-2.9 2.7-1.4.1-2.8-.3-4-1.2-1.1-.7-1.9-1.7-2.4-2.8 0-.1-.1-.1-.1-.2.4.1.8.2 1.1.3.7.1 1.4.1 2.1-.4h.2c.7.2 1.4.3 2.2.2 1.1-.2 1.9-.8 2.7-1.7.3-.3.5-.7.7-1.1.2-.3.4-.5.6-.7h.2c.8.1 1.6.2 2.5.3 1.1.2 2.1.4 3.3.6 0 0 .1 0 .1.1-1.5.1-3.2.3-4.8.2zm-4.6-3.3c.6 0 1.1-.4 1.1-1s-.5-1-1.1-1c-.6 0-1.1.5-1.1 1s.4 1 1.1 1zm-.6-1.8c.1-.1.3-.1.5-.2.2.1.3.1.5.2s.2.3 0 .5-.7.2-1.1 0c-.1-.2-.1-.4.1-.5z"/></svg>', docker: '<svg viewBox="0 0 32 32"><g><path d="M14.5 8.6h2v2h-2zm0 2.3h2v2h-2zm0 2.4h2v2h-2zm-2.3-2.4h2v2h-2zm0 2.4h2v2h-2zm-2.4-2.4h2v2h-2zm0 2.4h2v2h-2zm-2.3 0h2v2h-2zm9.4 0h2v2h-2z"/><path d="M27.1 13.6c-.4-.1-.9-.2-1.3-.2-.5.1-.8-.1-1-.6-.2-.5-.5-.9-.9-1.2-.6-.7-1.2-.5-1.5.3-.2.7-.2 1.5-.1 2.2.2.9.1 1.1-.8 1.3-1.1.3-16.3.2-16.3.2-.2 0-.3.5-.3 1s.1 2 .4 2.7c1 2.2 2.7 3.8 5.2 4H15c2.9-.1 5.2-1.5 7.2-3.6.8-.9 1.5-1.9 2-3 .2-.4.5-.6.9-.7.7-.1 1.3-.2 1.8-.6.1-.2.3-.4.4-.5.7-.5.6-1.1-.2-1.3zm-14.9 5.1c.4 0 .8.3.8.8s-.3.8-.8.8c-.4 0-.8-.3-.8-.8s.4-.8.8-.8zm-4.9 2.2c.8-.1 1.6.1 2.3-.1.9-.3 1.6-.2 2.1.8.3.6 1 .9 1.7 1.3-2.2.3-4.6-.5-6.1-2z"/></g></svg>', "code-climate": '<svg viewBox="0 0 1200 1000"><path d="M723.4 621.3c-26.8 25.7-53 50.8-79 76.1-6.3 6.1-9.5 1.7-13.6-2.3-48.1-46.2-96.3-92.4-144.4-138.6-3.7-3.5-7.4-6.9-11.9-11.2-20.9 19.9-41.3 39.2-61.6 58.7-31.1 29.9-62.4 59.8-93.2 90-6.9 6.8-11.4 7.4-18.7.1-24.5-24.4-49.7-48.1-79-76.3 6.7-4.7 13.7-8.2 19.2-13.4 75.1-71.7 150.1-143.6 224.9-215.8 6.3-6 10-6.7 16.6-.3 77.8 75.1 155.9 149.9 233.9 224.9 2.4 2.3 4.3 5 6.8 8.1zm4.9-321.7C812.1 380 894.7 459.2 978 539.2c-28.6 27.6-56.6 54.4-85.4 82.2-55-52.6-109.5-104.8-164.3-157.4-19.5 18.6-38.2 36.5-57.9 55.3-28.8-27.6-56.7-54.3-85.5-81.9 48.2-46.4 95.2-91.6 143.4-137.8z"/></svg>', eslint: '<svg viewBox="0 0 32 32"><path d="M21.8 7H10.5l-5.1 9 5.1 9h11.3l4.7-9-4.7-9zM16 23.3l-6.3-3.6v-7.1L16 8.7l6.3 3.9v7.1L16 23.3z"/><path d="M11.8 13.7v4.8l4.2 2.4 4.2-2.4v-4.8L16 11.1z"/></svg>', firebase: '<svg baseProfile="tiny" version="1.2" viewBox="0 0 512 512"><path d="M297.036 205.578l-36.334 33.809-33.716-68.005 17.446-39.108c4.416-7.84 11.621-7.855 16.037 0l36.567 73.304z"/><path d="M260.702 239.386L124.924 365.697l102.062-194.316z"/><path d="M336.776 153.901c6.491-6.239 13.202-4.111 14.912 4.729l35.342 205.375-117.157 70.215c-4.1 2.264-14.957 3.246-14.957 3.246s-9.91-1.185-13.687-3.281L124.92 365.69l211.856-211.789z"/><path d="M226.986 171.381L124.924 365.697l45.46-283.998c1.674-8.847 6.71-9.699 11.203-1.89l45.399 91.572z"/></svg>', firefox: '<svg viewBox="0 0 1200 1000"><path d="M883 466.6c-2.1-12.2-4.2-24.4-6.4-37.6-3.6 8.1-6.5 14.7-9.4 21.3-.7 0-1.3-.1-2-.1 5.8-56.6-7.8-106-52.1-144.9-.8 2.3-1.2 3.5-1.7 5-9.8-12.7-22-21.6-34.5-30.6-2.2 7.7.1 12.3 5.1 17 17.9 16.6 33.7 35.1 46.1 56.3 1 1.7 1.8 3.6 2.7 5.4-12.9-18.2-29.1-33-44.4-48.7-20.5-21.2-45.2-34.6-72.9-43.4-4.9-1.6-9.9-3.1-13.8-4.3 13.8 11.4 28.6 22.8 42.3 35.4 16.8 15.5 33.1 37.5 34.1 44-13.8-11.5-28.4-21.1-48.4-22.4 41.2 37 59.9 81.7 55.7 136.7-5.7-10.6-12.5-19-23.5-25.3.9 8.8 1.7 16.1 2.3 23.4 1.7 19.5 6.1 38.9 1.8 58.7-1.9 8.8-3.6 17.7-5.5 26.6-2.5-4.9-4.8-9.2-7.1-13.7-4.2 16.4-7.7 31.7-12.2 46.7-4.5 15.1-11.9 28.8-23.6 39.7-2.7 2.5-5.8 4.6-8.9 6.5-1.3.8-3.2.4-4.8.6-.1-1.4-.2-2.9-.2-4.3 0-.7.1-1.4.3-3.1-2.5.6-4.9.6-6.3 1.7-2.8 2.3-5.3 5.1-7.4 8.1-5 7-11.4 12.3-19.6 16.5.9-3.3 1.5-5.6 2.1-8.1-6.6 1.7-12.4 3.6-18.3 4.7-18.3 3.6-36.5 8.5-55.4 5.3-9.4-1.6-18.3-4.2-25.4-11.7h17.4c-1.9-1.9-4-3.3-6.3-3.9-9.4-2.4-19-4.1-28.3-6.8-7.3-2.1-15.1-4.2-21.4-8.3-7.4-4.8-13.7-11.4-20-17.7-22.2-22.1-28.2-49.5-24.1-79.5 2-14.6 4.2-29.5 17.1-39.8-6.5-4.7-13.5-7.2-21.2-7.5-20.6-.7-41.7 14.7-49.2 36.6-9.4 27.6-2 52 14.9 74.5 1.2 1.6 2.4 3.2 3.7 4.9-22.9-19.8-35.8-57.3-21.5-89.4 17.5-39.3 62.3-47.8 92.7-17.6 1.5 1.5 2.5 3.3 4.1 5.4 5.2-11.7 3.6-29.5-2.9-38.5-15.6-21.4-22.9-44.7-17.4-71.4 5.4-26.3 18.4-48.1 37.3-66.7 1.4-1.4 2.8-2.8 4.5-4.6-28.7-6-59.7 13.1-89 53.3 1.3-7.7 2.6-15.4 3.9-23.7-2.7-.6-5.5-1.5-8.3-1.8-30.3-3.8-57.4 3.7-81.1 23.3-24.4 20.2-39.1 46.6-48.2 76.3-4.3 14.1-8.3 28.4-12.4 42.6.4.1.7.2 1.1.3 2.2-3.4 4.4-6.9 7.6-11.7-5.2 29.4-8.1 69.7-6.4 86.2 1.9-5.9 3.8-11.7 5.7-17.5 8.3 61.3 30.9 115 73.5 159.6 40.7 42.5 122 88.5 151.9 86.5-3.5-2.4-7.3-5-11-7.6 9.2 1.6 17.6 4.7 26.2 6.9 11.1 2.8 22.3 4.8 33.5 7.2h17.5c-2.7-2.3-5.4-4.7-9-7.7 11.4-.6 21.6-.8 31.8-1.6 30.9-2.5 61.1-9 90.5-18.9 19.9-6.7 32.3-21.5 43.8-37.7 2.4-3.3 5.7-6.4 9.2-8.3 29.8-16.7 52.7-40.2 69.5-69.8 8.6-15.2 9.5-31.3 5.7-48-.7-3-.4-6.6.7-9.4 4.9-12 11-23.6 15.4-35.9 4.2-11.6 6.8-23.8 10.2-35.7.3-.9.6-1.8 1-2.7v-28c-.6-2.8-1-5-1.4-7.3z"/><path d="M500.1 517.4c-5.7 28.1 9.6 62 35.2 76.4 1.3.7 2.9 1 4.3 1.1 29.3 2.2 56-4.2 79-23.5 2.5-2.1 5.6-3.6 7.9-5.9 6.4-6.3 13.8-7.9 22.5-6.2 6.9 1.3 10.3-2.8 8.9-9.7-1.5-7.3-5.9-12.8-12.4-16.2-19.8-10.4-39.6-11.4-59.6-.1-4.8 2.8-10.1 5.2-15.5 6.5-14.2 3.5-28.1.9-40.9-5.3-10.1-4.8-19.7-11.4-29.4-17.1zM408.6 312c1.1-1.1 2.2-2.2 3.4-3.2 67.8-63 147.4-86.3 238-67.8 32.2 6.5 63.5 17.5 93.2 25.9-106.4-72.2-258.3-53.3-343.9 39 2.6 2.4 5.3 4.9 7.8 7.2.9-.6 1.2-.8 1.5-1.1zm183.6 74.8c.5-7.2-1.3-9.9-8.5-10.5-11.4-1-22.9-1.2-34.3-1.5-9.8-.3-19.6-.3-26.9-8.6-8.8 19-.4 54.9 14.8 67.8 13.4-7.5 26.1-15.3 39.5-21.9 11-5.4 14.7-14.3 15.4-25.3zM400.5 320c-13.3-11.3-19.6-25.3-21-43.1-20.8 23.3-26.4 50-28 78.5 14.1-14.8 29.7-27.2 49-35.4z"/></svg>', grunt: '<svg viewBox="0 0 32 32"><path d="M22.5 16.4c.4-.2.9-.4 1.3-.7.9-.6.9-1.7 0-2.1-.2-.1-.3-.3-.4-.6-.1-.6 0-1.1.3-1.6.7-1 .2-1.8-1.1-1.9h-.1l-.1-.1c-.1-.5-.2-.9.4-1.3.2-.1.5-.2.8-.3.2-.1.4-.1.5-.1 0-.1-.1-.1-.1-.1-.7-.8-1.7-1-2.6-.9-1.2.1-1.9.7-2.6 1.5-.1.2-.3.2-.5.1s-.2-.2-.2-.3c0-.2.1-.4.1-.6l.3-.6c-.6 0-1 .3-1.5.6-.3-.5-.3-.9-.1-1.4-.9.3-1.5.7-1.7 1.6-.3-.3-.2-.7-.2-1.1h-.1c-.1 0-.1.1-.2.1-.5.4-.8.9-.9 1.4 0 .1-.1.2-.1.3-.1-.1-.2-.1-.3-.2-.4-.3-.8-.7-1.2-1-1.2-.7-2.3-.7-3.5-.1l-.8.8c.4.2.8.2 1.2.4.7.2.9.6.6 1.4-.2 0-.4.1-.6.1-.7.2-1 .7-.9 1.3.1.3.3.6.4.9 0 .1.1.2.1.3v1c0 .2-.2.4-.4.6-.2.2-.5.4-.6.7-.3.5 0 1.1.5 1.5.4.3.8.5 1.3.7.6.3.8.7.8 1.2 0 .6 0 1.1-.1 1.7 0 .2-.1.5-.1.8-.6-.5-1-1-1.1-1.7-.6.5-.9 1-.9 1.6-.2 1.3.3 2.6 1.9 3.2.1 0 .2.1.3.2.6 1 1.5 1.6 2.7 1.8.1 0 .2 0 .2.1 1.1.7 2.2.8 3.4.7.7-.1 1.3-.2 1.8-.6.1-.1.3-.1.4-.2 1.2-.2 2-.8 2.6-1.7l.3-.3c.6-.2 1.1-.5 1.4-1 .5-.7.6-1.6.5-2.3-.1-.6-.4-1-.9-1.5-.2.7-.5 1.2-1.1 1.7-.1-.9-.1-1.8-.1-2.6.2-.8.5-1.2 1-1.4zm-8.4 5.3h4.5-4.5z"/></svg>', gulp: '<svg viewBox="0 0 32 32"><path d="M20.1 22.8c-.2.3-.3.5-.4.7-.1.2-.2.5-.2.7-.1 1-.2 2.1-.3 3.1 0 .4-.2.6-.5.7-.7.2-1.5.5-2.2.7h-1.1c-.1 0-.3-.1-.4-.1-.6-.2-1.2-.4-1.7-.7-.1-.1-.3-.3-.3-.5-.1-.8-.1-1.5-.1-2.3 0-.8 0-1.6-.6-2.2v-.1c2.5.7 5.1.7 7.8 0zm1.5-12.7c-.1 1.4-.3 2.8-.4 4.2l-.4 4.1c-.1 1-.2 2.1-.3 3.2 0 .7-.4 1-1 1.1-1 .2-1.9.3-2.9.4-1.4.1-2.8 0-4.2-.4-.5-.1-.6-.5-.7-.9 0-.5-.1-1-.2-1.4-.1-.9-.2-1.8-.3-2.8l-.1-.9c0-.1-.1-.2-.1-.3-.1-1.6-.4-3.1-.6-4.7-.1-.5-.1-1-.1-1.5 3.8.8 7.6.8 11.3-.1zm-11.3-.6c.2-.1.4-.2.6-.2.9-.1 1.9-.2 2.8-.3.1 0 .4-.2.4-.2-.3-.9-.3-1.8-1-2.5-.8-.8-1.5-1.7-2.3-2.5.6-.6.6-.6 1.1-.1.4.4.7.8 1.1 1.1 1.1.9 1.8 2.1 2 3.5.2.6.5.7 1 .7 1.7.1 3.3.2 5 .3.2 0 .4.1.7.2-1.7 1.3-10.4 1.2-11.4 0z"/></svg>', ionic: '<svg viewBox="0 0 32 32"><path d="M24.9 11.6c.4-.4.6-1 .6-1.7 0-1.4-1.1-2.6-2.6-2.6-.5 0-1 .2-1.4.4C20 6.6 18.1 6 16 6 10.5 6 6 10.5 6 16s4.5 10 10 10 10-4.5 10-10c0-1.6-.4-3.1-1.1-4.4zM16 24.4c-4.7 0-8.4-3.8-8.4-8.4s3.8-8.4 8.4-8.4c1.7 0 3.3.5 4.6 1.4-.1.3-.2.6-.2.9 0 1.4 1.1 2.6 2.6 2.6.2 0 .4 0 .6-.1.5 1.1.8 2.3.8 3.6 0 4.7-3.7 8.4-8.4 8.4z"/><path d="M16 11.9c-2.3 0-4.1 1.8-4.2 4.1 0 2.3 1.8 4.1 4.1 4.2 2.3 0 4.1-1.8 4.2-4.1 0-2.3-1.8-4.2-4.1-4.2z"/></svg>', platformio: '<svg preserveAspectRatio="xMidYMid" viewBox="0 0 32 32"><g><path d="M20.155 10.313l.625-2.183c.64-.055 1.142-.575 1.142-1.21 0-.671-.562-1.215-1.255-1.215-.693 0-1.254.544-1.254 1.215 0 .442.244.828.609 1.04l-.614 2.144c-1.755-.432-3.237-.4-3.237-.4l-.274.12v16.592l.274.089c1.655 0 8.896-4.845 8.913-10.044 0-3.724-2.555-5.397-4.93-6.148zm-1.743 10.688c-1.412-2.186-.815-7.273 2.874-8 1.011-.158 2.25.486 2.615 1.917.921 3.034-4.5 7.284-5.49 6.083zm2.214-4.682c-.63 0-1.142.495-1.142 1.107 0 .611.511 1.107 1.142 1.107.631 0 1.143-.496 1.143-1.107 0-.612-.512-1.107-1.143-1.107zm.342 1.021a.284.284 0 01-.289-.28c0-.154.13-.28.289-.28.16 0 .288.126.288.28 0 .155-.129.28-.288.28z"/><path d="M12.922 10.154l-.61-2.226c.349-.216.581-.594.581-1.025 0-.671-.561-1.216-1.254-1.216s-1.254.545-1.254 1.216c0 .67.558 1.212 1.248 1.215l.612 2.233c-2.384.766-4.97 2.443-4.97 6.11.053 5.301 7.241 10.043 8.896 10.043v-16.8s-1.489-.007-3.249.45zm1.264 10.847c-.99 1.2-6.41-3.049-5.489-6.083.365-1.43 1.603-2.075 2.615-1.918 3.689.728 4.286 5.815 2.874 8zm-2.288-4.648c-.63 0-1.142.495-1.142 1.107 0 .611.511 1.107 1.142 1.107.631 0 1.143-.496 1.143-1.107 0-.612-.512-1.107-1.143-1.107zm-.341 1.021a.284.284 0 01-.29-.28c0-.154.13-.279.29-.279.159 0 .288.125.288.28 0 .154-.13.28-.288.28z"/></g></svg>', rollup: '<svg viewBox="0 0 32 32"><path d="M22.3 23.9l-2.7-5.4c-.1-.2-.1-.3.1-.4.6-.3 1.1-.7 1.5-1.2 1.1-1.3 1.6-2.9 1.4-4.6-.1-.8-.3-1.5-.7-2.2-.1-.1-.1-.2-.2-.3-.4-.4-.9-.6-1.5-.8-.6-.1-1.2-.2-1.8 0-.4.1-.7.2-.9.5-.5.6-.6 1.2-.4 1.9.2.8.7 1.3 1.3 1.8.2.1.4.2.7.3.2 0 .4 0 .5-.3.1-.1.1-.3.1-.4 0-.4-.1-.7-.2-1-.1-.2-.2-.4-.2-.6.2.5.5 1 .7 1.4.1.3.1.7-.1 1l-.2.2c-.5.4-1 .9-1.5 1.3-.7.6-1.3 1.2-1.8 1.8-.8 1-1.5 2-2.2 3-.5.7-.9 1.4-1.4 2.2-.4.6-.7 1.2-1.1 1.8-.2.4-.5.8-.7 1.1h11.6c.3 0 .4-.2.3-.5-.4-.2-.5-.4-.6-.6z"/><path d="M12.7 15.1c.8-1.4 1.5-2.8 2.4-4.1.4-.6.8-1.2 1.2-1.7.4-.4.8-.7 1.3-.9.5-.1 1.1-.2 1.7-.1.8.1 1.5.4 2.1 1l.1.1.1.1v-.1C20.4 7.9 18.8 7 16.8 7H9.6c-.2 0-.3.1-.3.4v14.4c.5-1.3 1.2-2.6 1.9-3.9.5-1 1-1.9 1.5-2.8z"/></svg>', stylelint: '<svg viewBox="0 0 32 32"><path d="M14.482 9.308h2.399v1.46h-2.4zm5.266 3.157l-2.534-1.572c-.093-.096-.046-1.76-.046-1.76L19.7 7.708l.047 4.758zm-8.152-.048l2.55-1.572c.094-.096.046-1.76.046-1.76l-2.55-1.426-.046 4.758zm3.392.485c0-.36.285-.653.637-.653.352 0 .637.292.637.653a.645.645 0 01-.637.654.645.645 0 01-.637-.654zm0 3.99c0-.362.285-.655.637-.655.352 0 .637.293.637.654a.645.645 0 01-.637.654.645.645 0 01-.637-.654zm0 3.988c0-.361.285-.654.637-.654.352 0 .637.293.637.654a.645.645 0 01-.637.653.645.645 0 01-.637-.653zM25.226 9.75L22.46 7.203h-1.546l-.796 2.835-.047 3.028-.75-.433-3.466 13.12 8.854-12.976-1.218-1.441 1.734-1.586zM6.11 9.702l2.764-2.547h1.546l.796 2.835.047 3.028.75-.433 3.467 13.12-8.855-12.976 1.218-1.441L6.11 9.702zm5.786 3.1"/></svg>', yarn: '<svg viewBox="0 0 32 32"><path d="M12 24.2c-.2-.1-.3-.2-.4-.4-.1-.1-.1-.1-.2 0-.1.2-.1.4-.2.6-.3 1-.8 1.3-1.8 1.1-.2 0-.4-.1-.6-.2-.4-.2-.5-.5-.3-.9 0-.1.1-.2.1-.3-.4 0-.6-.2-.7-.5-.5-1.3-.4-2.3.6-3.3.1-.2.2-.3.2-.5 0-1.3.2-2.5 1.1-3.6.3-.4.7-.8 1.2-1.1.2-.1.2-.2.1-.4-.4-.5-.6-1-.7-1.6-.1-.5.2-1 .4-1.5.1-.1.2-.2.3-.2.4-.1.7-.4 1-.6.7-.7 1.5-1 2.5-1 .2 0 .3-.1.3-.2.1-.4.3-.8.6-1.2l.3-.3c.2-.2.5-.2.6.1.3.5.5 1 .7 1.4.1.2.2.2.3.1.7-.3.7-.3.9.4.5 2.1.2 4.1-1 6-.1.2-.3.4-.4.6-.1.2-.1.3.1.5.9.8 1.5 1.9 1.7 3.1.1.7.1 1.5 0 2.2-.1.4 0 .4.3.3.7-.2 1.4-.5 2-.9.7-.4 1.3-.8 2.1-.9.3 0 .5-.1.8 0 .3.1.5.4.5.7 0 .3-.2.5-.5.6-1 .2-1.9.7-2.7 1.3-1 .7-2.2 1.2-3.3 1.5-.1 0-.3.1-.4.2-.4.3-.8.3-1.3.4-1.1.1-2.1.2-3.2.2-.3 0-.6 0-1-.1-.3-.1-.6-.3-.7-.6-.1-.4 0-.7.3-.9.2 0 .3-.1.4-.1z"/></svg>', webpack: '<svg viewBox="0 0 32 32"><path d="M24 21.4L16 26v-3.6l5-2.8 3 1.8zm.6-.5v-9.6l-3 1.7v6.2l3 1.7zm-17.4.5l8.1 4.6v-3.6l-5-2.8-3.1 1.8zm-.6-.5v-9.6l3 1.7v6.2l-3 1.7zm.3-10.2L15.2 6v3.4l-5.3 2.9-3-1.6zm17.4 0L16 6v3.4l5.3 2.9 3-1.6zm-9.1 10.9l-5-2.7v-5.4l5 2.9v5.2zm.8 0l5-2.7v-5.4l-5 2.9v5.2zm-5.4-8.8l5-2.7 5 2.7-5 2.9-5-2.9z"/></svg>', lock: '<svg viewBox="0 0 1200 1000"><path d="M818.5 463.8v290.9h-437V463.8h73.4v-6.2c0-22-.1-44 .1-66 .1-7.1.6-14.3 1.6-21.4 11.3-80 87.2-136 166.9-123.1C694 258.5 746.2 319.7 746.2 391v72.7c24.4.1 48.4.1 72.3.1zm-145.2-.1c.1-1.6.2-2.6.2-3.5 0-23.7.1-47.3-.1-71 0-4.1-.6-8.3-1.4-12.4-8-38.7-41-62.2-81.3-58.2-35.6 3.6-63.3 35.5-63.3 73.1v72h145.9z"/></svg>', license: '<svg viewBox="0 0 32 32"><path d="M18.7 12.8c-.2-2.2-1.9-3.7-4.2-3.8H13c-.1-1.3.4-3.1 2.5-3.3.9-.1 1.7.1 2.4.8.6.7.8 1.5.8 2.4 0 .1 0 .3.1.4l.9.9c.3-.9.3-1.8.1-2.7-.5-1.8-2-2.9-3.9-3-1.1 0-2.1.2-2.9 1-1.4 1.3-1.9 4.2.1 6.1.3.3.7.5 1.1.7.5.2.9-.2.9-.6 0-.4-.2-.7-.7-.8-.1 0-.2-.1-.3-.2v-.1c.4-.1.9 0 1.2.3.3.3.4.7.3 1.2-.2.7-.8 1-1.6.8-1.1-.3-1.8-1-2.3-2-.1-.3-.3-.6-.4-.9-.7.7-1.3 1.4-1.5 2.4-.4 1.8.1 3.3 1.4 4.5.1.1.2.2.1.4-.1.8-.2 1.5-.4 2.3-.3 1.7-.5 3.3-.8 5-.1.5-.1 1.1 0 1.6.1.4.3.7.8.9.1-.4.1-.8.2-1.2.3-1.7.5-3.3.8-5 .2-1 .3-2.1.5-3.1 0-.2.1-.3.3-.3.2 0 .2.2.2.4-.1 1-.3 2-.5 2.9-.3 2.1-.7 4.2-1 6.3 0 .1.1.2.1.2.5 0 .9.1 1.4.1.5 0 .9-.4 1.2-.8.3-.3.3-.7.1-1.1-.1-.1-.2-.2-.2-.3-.3-.4-.2-.7.2-.9.1-.1.3-.1.4-.2.2-.1.3-.4.1-.6-.3-.3-.5-.6-.8-.8-.2-.2-.1-.6.1-.7.3-.2.7-.3 1-.5.2-.1.3-.3.1-.5-.1-.1-.2-.2-.3-.4-.3-.3-.2-.8.1-1 .1-.1.2-.2.4-.2.2-.1.3-.2.3-.4 0-.3.1-.6.1-.9 0-.1.1-.3.2-.4.3-.3.7-.5 1.1-.7 1.4-1 1.9-2.5 1.7-4.2zm3.6 11.4c0-.2-.1-.4-.4-.4-.2 0-.5 0-.6-.3-.1-.3-.1-.6 0-.9.2-.4.1-.7-.4-.8-.2 0-.4-.1-.7-.1-.2 0-.3-.1-.3-.3 0-.2-.1-.4-.1-.6 0-.3.2-.5.4-.7.2-.3.2-.4-.1-.6-.1-.1-.3-.2-.4-.3-.4-.2-.4-.4-.2-.8.1-.1.2-.2.2-.3.2-.2.2-.4.1-.6-.1-.2-.2-.5-.4-.7-.1-.2-.1-.4 0-.6.8-1.6 1-3.2.3-4.9-.5-1.1-1.4-1.8-2.6-2.1l-.1.1c.1.1.2.3.3.4 1.2 1 1.9 2.3 1.9 3.9 0 1.7-.7 3.1-2.2 4.2-.2.1-.3.3-.2.5.4 1 .7 1.9 1.1 2.9.8 1.9 1.6 3.7 2.4 5.6.1.1.1.2.3.2 1.2-.6 1.9-1.7 1.7-2.8zm-6-5.9c-.1.4-.1.7-.2 1 0 .2-.1.4 0 .6.7 1.7 1.4 3.5 2.1 5.2.2.5.5 1 1 1.4.2.1.4.2.5.3l.1-.1c-1.1-2.8-2.3-5.6-3.5-8.4z"/></svg>', makefile: '<svg viewBox="0 0 32 32"><path d="M10.2 7L7 7.8v16h4.2v-9.9l3.6 3.9h2.4l3.6-3.9v9.9H25v-16L21.8 7 16 13.3 10.2 7z"/></svg>', heroku: '<svg viewBox="0 0 32 32"><path d="M9 26v-5.714l3.25 2.857L9 26zm11.742-11.58c1.243 1.242 1.26 2.826 1.258 3.009V26h-2.889v-8.532C19.097 16.8 18.772 16 17.306 16c-2.938 0-6.233 1.461-6.265 1.476L9 18.39V6h2.889v8.111c1.442-.464 3.458-.968 5.417-.968 1.785 0 2.854.694 3.436 1.277zm-3.798-3.777C18.08 9.17 18.793 7.619 19.111 6H22c-.195 1.623-.86 3.179-2.167 4.643h-2.889z"/></svg>', todo: '<svg viewBox="0 0 32 32"><path d="M16 7h5.7c1.6 0 2.9 1.1 3.2 2.6.1.2.1.5.1.6v11.4c0 1.6-1.1 3-2.7 3.2-.2 0-.4.1-.6.1H10.4c-2 0-3.4-1.4-3.4-3.3V10.3c0-1.7 1.1-3 2.7-3.3H16zm-6.3 9v5.7c0 .4.2.6.7.6h11.2c.4 0 .7-.3.7-.7V10.4c-.1-.5-.3-.7-.8-.7H10.3c-.5 0-.7.2-.7.7.1 1.8.1 3.7.1 5.6z"/><path d="M12.1 14.7c.2.1.3.1.5.2.7.3 1.4.7 2.1 1 .2.1.2.1.3 0 1.5-1.1 2.9-2.2 4.4-3.2.2-.2.4-.2.5-.3.3-.1.5.2.5.5-.1.2-.2.3-.2.4-.7.9-1.3 1.8-2 2.8-.8 1.1-1.5 2.1-2.3 3.1-.5.8-1.3.7-1.8-.1-.8-1.2-1.5-2.2-2.3-3.4-.1-.1-.2-.2-.2-.3-.1-.4.1-.7.5-.7z"/></svg>', npm_ignored: '<svg viewBox="0 0 32 32"><path d="M4 11.3v8h6.8v1.4h5.3v-1.3H28v-8.1H4zm6.6 6.7H9.3v-3.9H8V18H5.3v-5.3h5.3V18zm6.7 0h-2.7v1.4h-2.7v-6.6h5.3c.1 1.6.1 3.4.1 5.2zm9.3 0h-1.3v-3.9H24V18h-1.4v-3.9h-1.3V18h-2.7v-5.3h8V18zm-10.7-3.9h-1.3v2.6h1.3v-2.6z"/></svg>', ignored: '<svg viewBox="0 0 32 32"><path d="M22.9 10.3c.1-.2.2-.4.2-.6-.1-.4-.3-.6-.6-.7-.3-.1-.6 0-.9.2l-2 2c-.1.1-.2.1-.4.1-2.3-.9-4.5-.9-6.8.1s-4 2.7-5.3 4.7c-.2.4-.2.7.1 1 .5.6 1.1 1.2 1.7 1.7.6.5 1.2.9 1.8 1.3-.1 0-.1.1-.2.1-.5.5-1 .9-1.4 1.4-.2.2-.3.5-.2.9.1.3.3.5.7.6.3 0 .6-.1.8-.3l12.4-12.4.1-.1zm-10.8 8.4h-.2c-1.1-.6-2.1-1.3-3-2.3 1-1.3 2.2-2.5 3.7-3.3-1 1.7-.9 3.3.2 4.9l-.7.7zm4.5-5.5c-.1.3-.3.5-.7.5-.9 0-1.6.6-1.7 1.5v.3c0 .4-.3.6-.6.6-.4 0-.6-.3-.6-.7 0-1.6 1.3-3 2.9-3 .5 0 .8.4.7.8zm8.2 2.8c-.5-.6-1-1.3-1.5-1.9-.4-.5-1-.9-1.4-1.4l-1.2 1.2c.9.7 1.7 1.5 2.4 2.5-.1.1-.2.2-.3.2-.3.3-.6.6-.9.8-2 1.6-4.2 2.4-6.7 2.1-.2 0-.3 0-.4.1-.2.2-.4.4-.6.7l-.6.6h.1c1.4.3 2.9.4 4.3.1 2.8-.5 5-2 6.8-4.1.3-.2.3-.5 0-.9z"/></svg>' };
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
// ../../node_modules/seti-icons/lib/index.js
|
|
31
|
+
var require_lib = __commonJS((exports) => {
|
|
32
|
+
var __assign = exports && exports.__assign || function() {
|
|
33
|
+
__assign = Object.assign || function(t) {
|
|
34
|
+
for (var s, i = 1, n = arguments.length;i < n; i++) {
|
|
35
|
+
s = arguments[i];
|
|
36
|
+
for (var p in s)
|
|
37
|
+
if (Object.prototype.hasOwnProperty.call(s, p))
|
|
38
|
+
t[p] = s[p];
|
|
39
|
+
}
|
|
40
|
+
return t;
|
|
41
|
+
};
|
|
42
|
+
return __assign.apply(this, arguments);
|
|
43
|
+
};
|
|
44
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
+
var rawDefinitions = require_definitions();
|
|
46
|
+
var rawIcons = require_icons();
|
|
47
|
+
var definitions = rawDefinitions;
|
|
48
|
+
var icons = rawIcons;
|
|
49
|
+
var getDetails = function(fileName) {
|
|
50
|
+
if (definitions.files.hasOwnProperty(fileName)) {
|
|
51
|
+
return definitions.files[fileName];
|
|
52
|
+
}
|
|
53
|
+
var extension = fileName.slice(fileName.indexOf("."));
|
|
54
|
+
while (extension !== "") {
|
|
55
|
+
if (definitions.extensions.hasOwnProperty(extension)) {
|
|
56
|
+
return definitions.extensions[extension];
|
|
57
|
+
}
|
|
58
|
+
extension = extension.slice(1);
|
|
59
|
+
extension = extension.slice(extension.indexOf("."));
|
|
60
|
+
}
|
|
61
|
+
for (var _i = 0, _a = definitions.partials;_i < _a.length; _i++) {
|
|
62
|
+
var partial = _a[_i];
|
|
63
|
+
if (fileName.indexOf(partial[0]) > -1) {
|
|
64
|
+
return partial[1];
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return definitions.default;
|
|
68
|
+
};
|
|
69
|
+
var getIcon = function(fileName) {
|
|
70
|
+
var _a = getDetails(fileName), icon2 = _a[0], color2 = _a[1];
|
|
71
|
+
return {
|
|
72
|
+
svg: icons[icon2],
|
|
73
|
+
color: color2
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
exports.getIcon = getIcon;
|
|
77
|
+
var themeIcons = function(theme2) {
|
|
78
|
+
return function(fileName) {
|
|
79
|
+
var icon2 = getIcon(fileName);
|
|
80
|
+
return __assign(__assign({}, icon2), { color: theme2[icon2.color] });
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
exports.themeIcons = themeIcons;
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
// src/components/file-change-row/file-change-row.tsx
|
|
87
|
+
import {
|
|
88
|
+
highlight,
|
|
89
|
+
Pre
|
|
90
|
+
} from "codehike/code";
|
|
91
|
+
import { ChevronDown, ChevronUp } from "lucide-react";
|
|
92
|
+
import { useEffect as useEffect9, useState as useState12 } from "react";
|
|
93
|
+
|
|
94
|
+
// src/lib/utils.ts
|
|
95
|
+
import { clsx } from "clsx";
|
|
96
|
+
import { twMerge } from "tailwind-merge";
|
|
97
|
+
function cn(...inputs) {
|
|
98
|
+
return twMerge(clsx(inputs));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
// src/components/collapsible/collapsible.tsx
|
|
102
|
+
import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
|
|
103
|
+
import { jsx } from "react/jsx-runtime";
|
|
104
|
+
|
|
105
|
+
function Collapsible({ ...props }) {
|
|
106
|
+
return /* @__PURE__ */ jsx(CollapsiblePrimitive.Root, {
|
|
107
|
+
"data-slot": "collapsible",
|
|
108
|
+
...props
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
function CollapsibleTrigger2({
|
|
112
|
+
...props
|
|
113
|
+
}) {
|
|
114
|
+
return /* @__PURE__ */ jsx(CollapsiblePrimitive.CollapsibleTrigger, {
|
|
115
|
+
"data-slot": "collapsible-trigger",
|
|
116
|
+
...props
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
function CollapsibleContent2({
|
|
120
|
+
...props
|
|
121
|
+
}) {
|
|
122
|
+
return /* @__PURE__ */ jsx(CollapsiblePrimitive.CollapsibleContent, {
|
|
123
|
+
"data-slot": "collapsible-content",
|
|
124
|
+
...props
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
// src/components/docskit/code.config.ts
|
|
128
|
+
var theme = "github-from-css";
|
|
129
|
+
function flagsToOptions(flags = "") {
|
|
130
|
+
const options = {};
|
|
131
|
+
const map = {
|
|
132
|
+
c: "copyButton",
|
|
133
|
+
n: "lineNumbers",
|
|
134
|
+
w: "wordWrap",
|
|
135
|
+
a: "animate"
|
|
136
|
+
};
|
|
137
|
+
flags.split("").forEach((flag) => {
|
|
138
|
+
if (!flag)
|
|
139
|
+
return;
|
|
140
|
+
if (flag in map) {
|
|
141
|
+
const key = map[flag];
|
|
142
|
+
options[key] = true;
|
|
143
|
+
} else {
|
|
144
|
+
console.warn(`Unknown flag: ${flag}`);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
return options;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// src/components/docskit/code.copy.tsx
|
|
151
|
+
import { Check, Copy } from "lucide-react";
|
|
152
|
+
import { useState } from "react";
|
|
153
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
154
|
+
|
|
155
|
+
function CopyButton({
|
|
156
|
+
text,
|
|
157
|
+
className,
|
|
158
|
+
variant = "floating"
|
|
159
|
+
}) {
|
|
160
|
+
const [copied, setCopied] = useState(false);
|
|
161
|
+
return /* @__PURE__ */ jsx2("button", {
|
|
162
|
+
type: "button",
|
|
163
|
+
className: cn("cursor-pointer transition-opacity duration-200", variant === "floating" && [
|
|
164
|
+
"size-8 flex items-center justify-center",
|
|
165
|
+
"rounded border border-dk-border bg-dk-background",
|
|
166
|
+
"opacity-0 group-hover:opacity-100"
|
|
167
|
+
], variant === "inline" && "rounded", className),
|
|
168
|
+
onClick: () => {
|
|
169
|
+
navigator.clipboard.writeText(text);
|
|
170
|
+
setCopied(true);
|
|
171
|
+
setTimeout(() => setCopied(false), 1200);
|
|
172
|
+
},
|
|
173
|
+
"aria-label": "Copy to clipboard",
|
|
174
|
+
children: copied ? /* @__PURE__ */ jsx2(Check, {
|
|
175
|
+
size: 16,
|
|
176
|
+
className: "block"
|
|
177
|
+
}) : /* @__PURE__ */ jsx2(Copy, {
|
|
178
|
+
size: 16,
|
|
179
|
+
className: "block"
|
|
180
|
+
})
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// src/components/docskit/callout.tsx
|
|
185
|
+
import { InnerLine } from "codehike/code";
|
|
186
|
+
|
|
187
|
+
// src/components/docskit/notes.client.tsx
|
|
188
|
+
import React from "react";
|
|
189
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
190
|
+
|
|
191
|
+
var NotesContext = React.createContext([]);
|
|
192
|
+
function useNotesContext(n) {
|
|
193
|
+
return React.useContext(NotesContext).find(({ name }) => name === n);
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
// src/components/docskit/callout.client.tsx
|
|
197
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
198
|
+
|
|
199
|
+
function CalloutClient({ name }) {
|
|
200
|
+
const note = useNotesContext(name);
|
|
201
|
+
if (note?.type === "code") {
|
|
202
|
+
return /* @__PURE__ */ jsx4("div", {
|
|
203
|
+
className: "prose-no-margin [&>div]:!border-none [&>div]:!my-0 [&>div>pre]:!bg-transparent",
|
|
204
|
+
children: note.children
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
return /* @__PURE__ */ jsx4("div", {
|
|
208
|
+
className: "px-2 prose dark:prose-invert",
|
|
209
|
+
children: note ? note.children : name
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// src/components/docskit/callout.tsx
|
|
214
|
+
import { jsx as jsx5, jsxs } from "react/jsx-runtime";
|
|
215
|
+
var callout = {
|
|
216
|
+
name: "callout",
|
|
217
|
+
transform: (annotation) => {
|
|
218
|
+
const { name, query, lineNumber, fromColumn, toColumn } = annotation;
|
|
219
|
+
return {
|
|
220
|
+
name,
|
|
221
|
+
query,
|
|
222
|
+
fromLineNumber: lineNumber,
|
|
223
|
+
toLineNumber: lineNumber,
|
|
224
|
+
data: {
|
|
225
|
+
...annotation.data,
|
|
226
|
+
column: (fromColumn + toColumn) / 2
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
},
|
|
230
|
+
AnnotatedLine: ({ annotation, ...props }) => {
|
|
231
|
+
const { column } = annotation.data;
|
|
232
|
+
const { indentation, children } = props;
|
|
233
|
+
return /* @__PURE__ */ jsxs(InnerLine, {
|
|
234
|
+
merge: props,
|
|
235
|
+
children: [
|
|
236
|
+
children,
|
|
237
|
+
/* @__PURE__ */ jsxs("div", {
|
|
238
|
+
style: {
|
|
239
|
+
minWidth: `${column + 4}ch`,
|
|
240
|
+
marginLeft: `${indentation}ch`,
|
|
241
|
+
border: "1px solid var(--ch-23)"
|
|
242
|
+
},
|
|
243
|
+
className: "w-fit bg-dk-tabs-background rounded px-0 relative my-1 whitespace-break-spaces select-none",
|
|
244
|
+
children: [
|
|
245
|
+
/* @__PURE__ */ jsx5("div", {
|
|
246
|
+
style: {
|
|
247
|
+
left: `${column - indentation - 1}ch`,
|
|
248
|
+
borderColor: "var(--ch-23)"
|
|
249
|
+
},
|
|
250
|
+
className: "absolute border-l border-t w-2 h-2 rotate-45 -translate-y-1/2 -top-[1px] bg-dk-tabs-background"
|
|
251
|
+
}),
|
|
252
|
+
/* @__PURE__ */ jsx5(CalloutClient, {
|
|
253
|
+
name: annotation.query
|
|
254
|
+
})
|
|
255
|
+
]
|
|
256
|
+
})
|
|
257
|
+
]
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
// src/components/docskit/code.line.tsx
|
|
263
|
+
import { InnerLine as InnerLine2 } from "codehike/code";
|
|
264
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
265
|
+
var line = {
|
|
266
|
+
name: "line",
|
|
267
|
+
Line: ({ annotation, ...props }) => {
|
|
268
|
+
return /* @__PURE__ */ jsx6("div", {
|
|
269
|
+
style: {
|
|
270
|
+
borderLeftColor: "var(--dk-line-border, transparent)",
|
|
271
|
+
backgroundColor: "var(--dk-line-bg, transparent)"
|
|
272
|
+
},
|
|
273
|
+
className: "flex border-l-2 border-l-transparent background-color 0.3s ease",
|
|
274
|
+
children: /* @__PURE__ */ jsx6(InnerLine2, {
|
|
275
|
+
merge: props,
|
|
276
|
+
className: "px-3 flex-1"
|
|
277
|
+
})
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
|
|
282
|
+
// src/components/docskit/collapse.tsx
|
|
283
|
+
import { InnerLine as InnerLine3 } from "codehike/code";
|
|
284
|
+
import { ChevronDownIcon } from "lucide-react";
|
|
285
|
+
import { jsx as jsx7, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
286
|
+
var collapseRoot = {
|
|
287
|
+
name: "collapse",
|
|
288
|
+
transform: (annotation) => {
|
|
289
|
+
const { fromLineNumber } = annotation;
|
|
290
|
+
return [
|
|
291
|
+
annotation,
|
|
292
|
+
{
|
|
293
|
+
...annotation,
|
|
294
|
+
fromLineNumber,
|
|
295
|
+
toLineNumber: fromLineNumber,
|
|
296
|
+
name: "CollapseTrigger"
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
...annotation,
|
|
300
|
+
fromLineNumber: fromLineNumber + 1,
|
|
301
|
+
name: "CollapseContent"
|
|
302
|
+
}
|
|
303
|
+
];
|
|
304
|
+
},
|
|
305
|
+
Block: ({ annotation, children }) => {
|
|
306
|
+
return /* @__PURE__ */ jsx7(Collapsible, {
|
|
307
|
+
defaultOpen: annotation.query !== "collapsed",
|
|
308
|
+
children
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
};
|
|
312
|
+
var icon = /* @__PURE__ */ jsx7(ChevronDownIcon, {
|
|
313
|
+
className: "inline-block group-data-[state=closed]:-rotate-90 transition select-none opacity-30 group-data-[state=closed]:opacity-80 group-hover:!opacity-100 mb-0.5 ml-1 -mr-1 ",
|
|
314
|
+
size: 15
|
|
315
|
+
});
|
|
316
|
+
var collapseTrigger = {
|
|
317
|
+
name: "CollapseTrigger",
|
|
318
|
+
onlyIfAnnotated: true,
|
|
319
|
+
AnnotatedLine: ({ annotation, ...props }) => /* @__PURE__ */ jsx7(CollapsibleTrigger2, {
|
|
320
|
+
className: "group contents",
|
|
321
|
+
children: /* @__PURE__ */ jsx7(InnerLine3, {
|
|
322
|
+
merge: props,
|
|
323
|
+
data: { icon }
|
|
324
|
+
})
|
|
325
|
+
}),
|
|
326
|
+
Line: (props) => {
|
|
327
|
+
const icon2 = props.data?.icon;
|
|
328
|
+
return /* @__PURE__ */ jsxs2("div", {
|
|
329
|
+
className: "table-row",
|
|
330
|
+
children: [
|
|
331
|
+
/* @__PURE__ */ jsx7("span", {
|
|
332
|
+
className: "w-4 text-center table-cell",
|
|
333
|
+
children: icon2
|
|
334
|
+
}),
|
|
335
|
+
/* @__PURE__ */ jsx7("div", {
|
|
336
|
+
className: "table-cell",
|
|
337
|
+
children: /* @__PURE__ */ jsx7(InnerLine3, {
|
|
338
|
+
merge: props
|
|
339
|
+
})
|
|
340
|
+
})
|
|
341
|
+
]
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
};
|
|
345
|
+
var collapseContent = {
|
|
346
|
+
name: "CollapseContent",
|
|
347
|
+
Block: CollapsibleContent2
|
|
348
|
+
};
|
|
349
|
+
var collapse = [collapseRoot, collapseTrigger, collapseContent];
|
|
350
|
+
|
|
351
|
+
// src/components/docskit/diff.tsx
|
|
352
|
+
import { InnerLine as InnerLine4 } from "codehike/code";
|
|
353
|
+
import { jsx as jsx8, jsxs as jsxs3, Fragment } from "react/jsx-runtime";
|
|
354
|
+
var diff = {
|
|
355
|
+
name: "diff",
|
|
356
|
+
onlyIfAnnotated: true,
|
|
357
|
+
Block: ({ annotation, children }) => {
|
|
358
|
+
const color = annotation.query === "-" ? "#f85149" : "#3fb950";
|
|
359
|
+
return /* @__PURE__ */ jsx8("div", {
|
|
360
|
+
style: {
|
|
361
|
+
["--dk-line-bg"]: `rgb(from ${color} r g b / 0.13)`,
|
|
362
|
+
["--dk-line-border"]: color
|
|
363
|
+
},
|
|
364
|
+
children
|
|
365
|
+
});
|
|
366
|
+
},
|
|
367
|
+
Line: ({ annotation, ...props }) => /* @__PURE__ */ jsxs3(Fragment, {
|
|
368
|
+
children: [
|
|
369
|
+
/* @__PURE__ */ jsx8("div", {
|
|
370
|
+
className: "min-w-[1ch] box-content opacity-70 pl-2 select-none",
|
|
371
|
+
children: annotation?.query
|
|
372
|
+
}),
|
|
373
|
+
/* @__PURE__ */ jsx8(InnerLine4, {
|
|
374
|
+
merge: props
|
|
375
|
+
})
|
|
376
|
+
]
|
|
377
|
+
})
|
|
378
|
+
};
|
|
379
|
+
|
|
380
|
+
// src/components/docskit/expandable.tsx
|
|
381
|
+
import { jsx as jsx9, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
382
|
+
var expandable = {
|
|
383
|
+
name: "expandable",
|
|
384
|
+
transform: (annotation) => {
|
|
385
|
+
return { ...annotation, toLineNumber: 999 };
|
|
386
|
+
},
|
|
387
|
+
Block: ({ children }) => {
|
|
388
|
+
return /* @__PURE__ */ jsxs4(Collapsible, {
|
|
389
|
+
children: [
|
|
390
|
+
/* @__PURE__ */ jsx9(CollapsibleTrigger2, {
|
|
391
|
+
className: "h-24 w-full translate-y-[-75%] absolute bg-gradient-to-b from-dk-background/0 via-dk-background/80 to-dk-background data-[state=open]:invisible",
|
|
392
|
+
children: /* @__PURE__ */ jsx9("div", {
|
|
393
|
+
className: "pt-6",
|
|
394
|
+
children: "Expand"
|
|
395
|
+
})
|
|
396
|
+
}),
|
|
397
|
+
/* @__PURE__ */ jsx9(CollapsibleContent2, {
|
|
398
|
+
children
|
|
399
|
+
})
|
|
400
|
+
]
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
};
|
|
404
|
+
|
|
405
|
+
// src/components/docskit/hover.client.tsx
|
|
406
|
+
import {
|
|
407
|
+
InnerLine as InnerLine5
|
|
408
|
+
} from "codehike/code";
|
|
409
|
+
import { createContext, useContext, useState as useState2 } from "react";
|
|
410
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
411
|
+
|
|
412
|
+
var HoverContext = createContext({
|
|
413
|
+
hoveredNames: [],
|
|
414
|
+
addHoveredName: () => {},
|
|
415
|
+
removeHoveredName: () => {}
|
|
416
|
+
});
|
|
417
|
+
var HoverBlock = ({ annotation, children }) => {
|
|
418
|
+
const { hoveredNames } = useContext(HoverContext);
|
|
419
|
+
const name = annotation?.query;
|
|
420
|
+
const isHovered = name && hoveredNames[hoveredNames.length - 1] === name;
|
|
421
|
+
const style = isHovered && !annotation.data?.inline ? {
|
|
422
|
+
["--dk-line-bg"]: `rgb(from ${color} r g b / 0.13)`,
|
|
423
|
+
["--dk-line-border"]: color
|
|
424
|
+
} : undefined;
|
|
425
|
+
return /* @__PURE__ */ jsx10("div", {
|
|
426
|
+
style,
|
|
427
|
+
children
|
|
428
|
+
});
|
|
429
|
+
};
|
|
430
|
+
var color = "var(--ch-5)";
|
|
431
|
+
var HoverLine = ({ annotation, ...props }) => {
|
|
432
|
+
const { hoveredNames } = useContext(HoverContext);
|
|
433
|
+
const prevOpacity = props.style?.opacity;
|
|
434
|
+
const anyHovered = hoveredNames.length > 0;
|
|
435
|
+
const name = annotation?.query;
|
|
436
|
+
const isHovered = name && hoveredNames[hoveredNames.length - 1] === name;
|
|
437
|
+
const opacity = isHovered ? 1 : prevOpacity ? prevOpacity : anyHovered ? 0.5 : 1;
|
|
438
|
+
return /* @__PURE__ */ jsx10(InnerLine5, {
|
|
439
|
+
merge: props,
|
|
440
|
+
style: {
|
|
441
|
+
opacity,
|
|
442
|
+
transition: "opacity 0.3s ease"
|
|
443
|
+
}
|
|
444
|
+
});
|
|
445
|
+
};
|
|
446
|
+
var HoverInline = ({ annotation, children }) => {
|
|
447
|
+
const { hoveredNames } = useContext(HoverContext);
|
|
448
|
+
const isHovered = hoveredNames[hoveredNames.length - 1] === annotation.query;
|
|
449
|
+
return /* @__PURE__ */ jsx10("span", {
|
|
450
|
+
className: "rounded px-0.5 py-0 -mx-0.5",
|
|
451
|
+
style: {
|
|
452
|
+
transition: "background-color 0.3s ease, box-shadow 0.3s ease",
|
|
453
|
+
boxShadow: isHovered ? `0 0 0 1px rgb(from ${color} r g b / 0.5)` : undefined,
|
|
454
|
+
backgroundColor: isHovered ? `rgb(from ${color} r g b / 0.13)` : undefined
|
|
455
|
+
},
|
|
456
|
+
children
|
|
457
|
+
});
|
|
458
|
+
};
|
|
459
|
+
|
|
460
|
+
// src/components/docskit/hover.tsx
|
|
461
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
462
|
+
var hover = {
|
|
463
|
+
name: "hover",
|
|
464
|
+
onlyIfAnnotated: true,
|
|
465
|
+
Block: HoverBlock,
|
|
466
|
+
Line: HoverLine,
|
|
467
|
+
Inline: HoverInline,
|
|
468
|
+
transform: (annotation) => {
|
|
469
|
+
if (!("fromColumn" in annotation)) {
|
|
470
|
+
return [annotation];
|
|
471
|
+
}
|
|
472
|
+
const blockAnnotation = {
|
|
473
|
+
name: annotation.name,
|
|
474
|
+
query: annotation.query,
|
|
475
|
+
fromLineNumber: annotation.lineNumber,
|
|
476
|
+
toLineNumber: annotation.lineNumber,
|
|
477
|
+
data: { inline: true }
|
|
478
|
+
};
|
|
479
|
+
return [blockAnnotation, annotation];
|
|
480
|
+
}
|
|
481
|
+
};
|
|
482
|
+
|
|
483
|
+
// src/components/docskit/line-numbers.tsx
|
|
484
|
+
import { InnerLine as InnerLine6 } from "codehike/code";
|
|
485
|
+
import { jsx as jsx12, jsxs as jsxs5, Fragment as Fragment2 } from "react/jsx-runtime";
|
|
486
|
+
var lineNumbers = {
|
|
487
|
+
name: "line-numbers",
|
|
488
|
+
Line: (props) => {
|
|
489
|
+
const width = props.totalLines.toString().length + 1;
|
|
490
|
+
return /* @__PURE__ */ jsxs5(Fragment2, {
|
|
491
|
+
children: [
|
|
492
|
+
/* @__PURE__ */ jsx12("span", {
|
|
493
|
+
style: { minWidth: `${width}ch` },
|
|
494
|
+
className: "text-right text-dk-line-number select-none mr-1",
|
|
495
|
+
children: props.lineNumber
|
|
496
|
+
}),
|
|
497
|
+
/* @__PURE__ */ jsx12(InnerLine6, {
|
|
498
|
+
merge: props
|
|
499
|
+
})
|
|
500
|
+
]
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
};
|
|
504
|
+
|
|
505
|
+
// src/components/docskit/link.tsx
|
|
506
|
+
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
507
|
+
var link = {
|
|
508
|
+
name: "link",
|
|
509
|
+
Inline: ({ annotation, children }) => {
|
|
510
|
+
const { query } = annotation;
|
|
511
|
+
return /* @__PURE__ */ jsx13("a", {
|
|
512
|
+
href: query,
|
|
513
|
+
className: "underline",
|
|
514
|
+
children
|
|
515
|
+
});
|
|
516
|
+
}
|
|
517
|
+
};
|
|
518
|
+
|
|
519
|
+
// src/components/docskit/mark.tsx
|
|
520
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
521
|
+
var mark = {
|
|
522
|
+
name: "mark",
|
|
523
|
+
Block: ({ annotation, children }) => {
|
|
524
|
+
const color2 = getColor(annotation);
|
|
525
|
+
return /* @__PURE__ */ jsx14("div", {
|
|
526
|
+
style: {
|
|
527
|
+
["--dk-line-bg"]: `rgb(from ${color2} r g b / 0.13)`,
|
|
528
|
+
["--dk-line-border"]: color2
|
|
529
|
+
},
|
|
530
|
+
children
|
|
531
|
+
});
|
|
532
|
+
},
|
|
533
|
+
Inline: ({ annotation, children }) => {
|
|
534
|
+
const color2 = getColor(annotation);
|
|
535
|
+
return /* @__PURE__ */ jsx14("span", {
|
|
536
|
+
style: {
|
|
537
|
+
boxShadow: `0 0 0 1px rgb(from ${color2} r g b / 0.5)`,
|
|
538
|
+
backgroundColor: `rgb(from ${color2} r g b / 0.13)`
|
|
539
|
+
},
|
|
540
|
+
className: "rounded px-0.5 py-0 -mx-0.5",
|
|
541
|
+
children
|
|
542
|
+
});
|
|
543
|
+
}
|
|
544
|
+
};
|
|
545
|
+
function getColor(annotation) {
|
|
546
|
+
const n = Number(annotation?.query || "0") % colors.length;
|
|
547
|
+
return colors[n] || annotation?.query;
|
|
548
|
+
}
|
|
549
|
+
var colors = ["var(--ch-5)", "var(--ch-3)", "var(--ch-2)"];
|
|
550
|
+
|
|
551
|
+
// ../../node_modules/@radix-ui/react-tooltip/dist/index.mjs
|
|
552
|
+
import * as React26 from "react";
|
|
553
|
+
|
|
554
|
+
// ../../node_modules/@radix-ui/primitive/dist/index.mjs
|
|
555
|
+
var canUseDOM = !!(typeof window !== "undefined" && window.document && window.document.createElement);
|
|
556
|
+
function composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {
|
|
557
|
+
return function handleEvent(event) {
|
|
558
|
+
originalEventHandler?.(event);
|
|
559
|
+
if (checkForDefaultPrevented === false || !event.defaultPrevented) {
|
|
560
|
+
return ourEventHandler?.(event);
|
|
561
|
+
}
|
|
562
|
+
};
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
// ../../node_modules/@radix-ui/react-compose-refs/dist/index.mjs
|
|
566
|
+
import * as React2 from "react";
|
|
567
|
+
function setRef(ref, value) {
|
|
568
|
+
if (typeof ref === "function") {
|
|
569
|
+
return ref(value);
|
|
570
|
+
} else if (ref !== null && ref !== undefined) {
|
|
571
|
+
ref.current = value;
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
function composeRefs(...refs) {
|
|
575
|
+
return (node) => {
|
|
576
|
+
let hasCleanup = false;
|
|
577
|
+
const cleanups = refs.map((ref) => {
|
|
578
|
+
const cleanup = setRef(ref, node);
|
|
579
|
+
if (!hasCleanup && typeof cleanup == "function") {
|
|
580
|
+
hasCleanup = true;
|
|
581
|
+
}
|
|
582
|
+
return cleanup;
|
|
583
|
+
});
|
|
584
|
+
if (hasCleanup) {
|
|
585
|
+
return () => {
|
|
586
|
+
for (let i = 0;i < cleanups.length; i++) {
|
|
587
|
+
const cleanup = cleanups[i];
|
|
588
|
+
if (typeof cleanup == "function") {
|
|
589
|
+
cleanup();
|
|
590
|
+
} else {
|
|
591
|
+
setRef(refs[i], null);
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
};
|
|
595
|
+
}
|
|
596
|
+
};
|
|
597
|
+
}
|
|
598
|
+
function useComposedRefs(...refs) {
|
|
599
|
+
return React2.useCallback(composeRefs(...refs), refs);
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
// ../../node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-context/dist/index.mjs
|
|
603
|
+
import * as React3 from "react";
|
|
604
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
605
|
+
function createContextScope(scopeName, createContextScopeDeps = []) {
|
|
606
|
+
let defaultContexts = [];
|
|
607
|
+
function createContext3(rootComponentName, defaultContext) {
|
|
608
|
+
const BaseContext = React3.createContext(defaultContext);
|
|
609
|
+
const index = defaultContexts.length;
|
|
610
|
+
defaultContexts = [...defaultContexts, defaultContext];
|
|
611
|
+
const Provider = (props) => {
|
|
612
|
+
const { scope, children, ...context } = props;
|
|
613
|
+
const Context = scope?.[scopeName]?.[index] || BaseContext;
|
|
614
|
+
const value = React3.useMemo(() => context, Object.values(context));
|
|
615
|
+
return /* @__PURE__ */ jsx15(Context.Provider, { value, children });
|
|
616
|
+
};
|
|
617
|
+
Provider.displayName = rootComponentName + "Provider";
|
|
618
|
+
function useContext22(consumerName, scope) {
|
|
619
|
+
const Context = scope?.[scopeName]?.[index] || BaseContext;
|
|
620
|
+
const context = React3.useContext(Context);
|
|
621
|
+
if (context)
|
|
622
|
+
return context;
|
|
623
|
+
if (defaultContext !== undefined)
|
|
624
|
+
return defaultContext;
|
|
625
|
+
throw new Error(`\`${consumerName}\` must be used within \`${rootComponentName}\``);
|
|
626
|
+
}
|
|
627
|
+
return [Provider, useContext22];
|
|
628
|
+
}
|
|
629
|
+
const createScope = () => {
|
|
630
|
+
const scopeContexts = defaultContexts.map((defaultContext) => {
|
|
631
|
+
return React3.createContext(defaultContext);
|
|
632
|
+
});
|
|
633
|
+
return function useScope(scope) {
|
|
634
|
+
const contexts = scope?.[scopeName] || scopeContexts;
|
|
635
|
+
return React3.useMemo(() => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }), [scope, contexts]);
|
|
636
|
+
};
|
|
637
|
+
};
|
|
638
|
+
createScope.scopeName = scopeName;
|
|
639
|
+
return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];
|
|
640
|
+
}
|
|
641
|
+
function composeContextScopes(...scopes) {
|
|
642
|
+
const baseScope = scopes[0];
|
|
643
|
+
if (scopes.length === 1)
|
|
644
|
+
return baseScope;
|
|
645
|
+
const createScope = () => {
|
|
646
|
+
const scopeHooks = scopes.map((createScope2) => ({
|
|
647
|
+
useScope: createScope2(),
|
|
648
|
+
scopeName: createScope2.scopeName
|
|
649
|
+
}));
|
|
650
|
+
return function useComposedScopes(overrideScopes) {
|
|
651
|
+
const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {
|
|
652
|
+
const scopeProps = useScope(overrideScopes);
|
|
653
|
+
const currentScope = scopeProps[`__scope${scopeName}`];
|
|
654
|
+
return { ...nextScopes2, ...currentScope };
|
|
655
|
+
}, {});
|
|
656
|
+
return React3.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);
|
|
657
|
+
};
|
|
658
|
+
};
|
|
659
|
+
createScope.scopeName = baseScope.scopeName;
|
|
660
|
+
return createScope;
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
// ../../node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs
|
|
664
|
+
import * as React7 from "react";
|
|
665
|
+
|
|
666
|
+
// ../../node_modules/@radix-ui/react-dismissable-layer/node_modules/@radix-ui/react-primitive/dist/index.mjs
|
|
667
|
+
import * as React4 from "react";
|
|
668
|
+
import * as ReactDOM from "react-dom";
|
|
669
|
+
import { createSlot } from "@radix-ui/react-slot";
|
|
670
|
+
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
671
|
+
var NODES = [
|
|
672
|
+
"a",
|
|
673
|
+
"button",
|
|
674
|
+
"div",
|
|
675
|
+
"form",
|
|
676
|
+
"h2",
|
|
677
|
+
"h3",
|
|
678
|
+
"img",
|
|
679
|
+
"input",
|
|
680
|
+
"label",
|
|
681
|
+
"li",
|
|
682
|
+
"nav",
|
|
683
|
+
"ol",
|
|
684
|
+
"p",
|
|
685
|
+
"select",
|
|
686
|
+
"span",
|
|
687
|
+
"svg",
|
|
688
|
+
"ul"
|
|
689
|
+
];
|
|
690
|
+
var Primitive = NODES.reduce((primitive, node) => {
|
|
691
|
+
const Slot = createSlot(`Primitive.${node}`);
|
|
692
|
+
const Node2 = React4.forwardRef((props, forwardedRef) => {
|
|
693
|
+
const { asChild, ...primitiveProps } = props;
|
|
694
|
+
const Comp = asChild ? Slot : node;
|
|
695
|
+
if (typeof window !== "undefined") {
|
|
696
|
+
window[Symbol.for("radix-ui")] = true;
|
|
697
|
+
}
|
|
698
|
+
return /* @__PURE__ */ jsx16(Comp, { ...primitiveProps, ref: forwardedRef });
|
|
699
|
+
});
|
|
700
|
+
Node2.displayName = `Primitive.${node}`;
|
|
701
|
+
return { ...primitive, [node]: Node2 };
|
|
702
|
+
}, {});
|
|
703
|
+
function dispatchDiscreteCustomEvent(target, event) {
|
|
704
|
+
if (target)
|
|
705
|
+
ReactDOM.flushSync(() => target.dispatchEvent(event));
|
|
706
|
+
}
|
|
707
|
+
|
|
708
|
+
// ../../node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs
|
|
709
|
+
import * as React5 from "react";
|
|
710
|
+
function useCallbackRef(callback) {
|
|
711
|
+
const callbackRef = React5.useRef(callback);
|
|
712
|
+
React5.useEffect(() => {
|
|
713
|
+
callbackRef.current = callback;
|
|
714
|
+
});
|
|
715
|
+
return React5.useMemo(() => (...args) => callbackRef.current?.(...args), []);
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
// ../../node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs
|
|
719
|
+
import * as React6 from "react";
|
|
720
|
+
function useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {
|
|
721
|
+
const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);
|
|
722
|
+
React6.useEffect(() => {
|
|
723
|
+
const handleKeyDown = (event) => {
|
|
724
|
+
if (event.key === "Escape") {
|
|
725
|
+
onEscapeKeyDown(event);
|
|
726
|
+
}
|
|
727
|
+
};
|
|
728
|
+
ownerDocument.addEventListener("keydown", handleKeyDown, { capture: true });
|
|
729
|
+
return () => ownerDocument.removeEventListener("keydown", handleKeyDown, { capture: true });
|
|
730
|
+
}, [onEscapeKeyDown, ownerDocument]);
|
|
731
|
+
}
|
|
732
|
+
|
|
733
|
+
// ../../node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs
|
|
734
|
+
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
735
|
+
|
|
736
|
+
var DISMISSABLE_LAYER_NAME = "DismissableLayer";
|
|
737
|
+
var CONTEXT_UPDATE = "dismissableLayer.update";
|
|
738
|
+
var POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside";
|
|
739
|
+
var FOCUS_OUTSIDE = "dismissableLayer.focusOutside";
|
|
740
|
+
var originalBodyPointerEvents;
|
|
741
|
+
var DismissableLayerContext = React7.createContext({
|
|
742
|
+
layers: /* @__PURE__ */ new Set,
|
|
743
|
+
layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set,
|
|
744
|
+
branches: /* @__PURE__ */ new Set
|
|
745
|
+
});
|
|
746
|
+
var DismissableLayer = React7.forwardRef((props, forwardedRef) => {
|
|
747
|
+
const {
|
|
748
|
+
disableOutsidePointerEvents = false,
|
|
749
|
+
onEscapeKeyDown,
|
|
750
|
+
onPointerDownOutside,
|
|
751
|
+
onFocusOutside,
|
|
752
|
+
onInteractOutside,
|
|
753
|
+
onDismiss,
|
|
754
|
+
...layerProps
|
|
755
|
+
} = props;
|
|
756
|
+
const context = React7.useContext(DismissableLayerContext);
|
|
757
|
+
const [node, setNode] = React7.useState(null);
|
|
758
|
+
const ownerDocument = node?.ownerDocument ?? globalThis?.document;
|
|
759
|
+
const [, force] = React7.useState({});
|
|
760
|
+
const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));
|
|
761
|
+
const layers = Array.from(context.layers);
|
|
762
|
+
const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);
|
|
763
|
+
const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);
|
|
764
|
+
const index = node ? layers.indexOf(node) : -1;
|
|
765
|
+
const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;
|
|
766
|
+
const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;
|
|
767
|
+
const pointerDownOutside = usePointerDownOutside((event) => {
|
|
768
|
+
const target = event.target;
|
|
769
|
+
const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));
|
|
770
|
+
if (!isPointerEventsEnabled || isPointerDownOnBranch)
|
|
771
|
+
return;
|
|
772
|
+
onPointerDownOutside?.(event);
|
|
773
|
+
onInteractOutside?.(event);
|
|
774
|
+
if (!event.defaultPrevented)
|
|
775
|
+
onDismiss?.();
|
|
776
|
+
}, ownerDocument);
|
|
777
|
+
const focusOutside = useFocusOutside((event) => {
|
|
778
|
+
const target = event.target;
|
|
779
|
+
const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));
|
|
780
|
+
if (isFocusInBranch)
|
|
781
|
+
return;
|
|
782
|
+
onFocusOutside?.(event);
|
|
783
|
+
onInteractOutside?.(event);
|
|
784
|
+
if (!event.defaultPrevented)
|
|
785
|
+
onDismiss?.();
|
|
786
|
+
}, ownerDocument);
|
|
787
|
+
useEscapeKeydown((event) => {
|
|
788
|
+
const isHighestLayer = index === context.layers.size - 1;
|
|
789
|
+
if (!isHighestLayer)
|
|
790
|
+
return;
|
|
791
|
+
onEscapeKeyDown?.(event);
|
|
792
|
+
if (!event.defaultPrevented && onDismiss) {
|
|
793
|
+
event.preventDefault();
|
|
794
|
+
onDismiss();
|
|
795
|
+
}
|
|
796
|
+
}, ownerDocument);
|
|
797
|
+
React7.useEffect(() => {
|
|
798
|
+
if (!node)
|
|
799
|
+
return;
|
|
800
|
+
if (disableOutsidePointerEvents) {
|
|
801
|
+
if (context.layersWithOutsidePointerEventsDisabled.size === 0) {
|
|
802
|
+
originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;
|
|
803
|
+
ownerDocument.body.style.pointerEvents = "none";
|
|
804
|
+
}
|
|
805
|
+
context.layersWithOutsidePointerEventsDisabled.add(node);
|
|
806
|
+
}
|
|
807
|
+
context.layers.add(node);
|
|
808
|
+
dispatchUpdate();
|
|
809
|
+
return () => {
|
|
810
|
+
if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {
|
|
811
|
+
ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;
|
|
812
|
+
}
|
|
813
|
+
};
|
|
814
|
+
}, [node, ownerDocument, disableOutsidePointerEvents, context]);
|
|
815
|
+
React7.useEffect(() => {
|
|
816
|
+
return () => {
|
|
817
|
+
if (!node)
|
|
818
|
+
return;
|
|
819
|
+
context.layers.delete(node);
|
|
820
|
+
context.layersWithOutsidePointerEventsDisabled.delete(node);
|
|
821
|
+
dispatchUpdate();
|
|
822
|
+
};
|
|
823
|
+
}, [node, context]);
|
|
824
|
+
React7.useEffect(() => {
|
|
825
|
+
const handleUpdate = () => force({});
|
|
826
|
+
document.addEventListener(CONTEXT_UPDATE, handleUpdate);
|
|
827
|
+
return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);
|
|
828
|
+
}, []);
|
|
829
|
+
return /* @__PURE__ */ jsx17(Primitive.div, {
|
|
830
|
+
...layerProps,
|
|
831
|
+
ref: composedRefs,
|
|
832
|
+
style: {
|
|
833
|
+
pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? "auto" : "none" : undefined,
|
|
834
|
+
...props.style
|
|
835
|
+
},
|
|
836
|
+
onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),
|
|
837
|
+
onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),
|
|
838
|
+
onPointerDownCapture: composeEventHandlers(props.onPointerDownCapture, pointerDownOutside.onPointerDownCapture)
|
|
839
|
+
});
|
|
840
|
+
});
|
|
841
|
+
DismissableLayer.displayName = DISMISSABLE_LAYER_NAME;
|
|
842
|
+
var BRANCH_NAME = "DismissableLayerBranch";
|
|
843
|
+
var DismissableLayerBranch = React7.forwardRef((props, forwardedRef) => {
|
|
844
|
+
const context = React7.useContext(DismissableLayerContext);
|
|
845
|
+
const ref = React7.useRef(null);
|
|
846
|
+
const composedRefs = useComposedRefs(forwardedRef, ref);
|
|
847
|
+
React7.useEffect(() => {
|
|
848
|
+
const node = ref.current;
|
|
849
|
+
if (node) {
|
|
850
|
+
context.branches.add(node);
|
|
851
|
+
return () => {
|
|
852
|
+
context.branches.delete(node);
|
|
853
|
+
};
|
|
854
|
+
}
|
|
855
|
+
}, [context.branches]);
|
|
856
|
+
return /* @__PURE__ */ jsx17(Primitive.div, { ...props, ref: composedRefs });
|
|
857
|
+
});
|
|
858
|
+
DismissableLayerBranch.displayName = BRANCH_NAME;
|
|
859
|
+
function usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {
|
|
860
|
+
const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);
|
|
861
|
+
const isPointerInsideReactTreeRef = React7.useRef(false);
|
|
862
|
+
const handleClickRef = React7.useRef(() => {});
|
|
863
|
+
React7.useEffect(() => {
|
|
864
|
+
const handlePointerDown = (event) => {
|
|
865
|
+
if (event.target && !isPointerInsideReactTreeRef.current) {
|
|
866
|
+
let handleAndDispatchPointerDownOutsideEvent2 = function() {
|
|
867
|
+
handleAndDispatchCustomEvent(POINTER_DOWN_OUTSIDE, handlePointerDownOutside, eventDetail, { discrete: true });
|
|
868
|
+
};
|
|
869
|
+
var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;
|
|
870
|
+
const eventDetail = { originalEvent: event };
|
|
871
|
+
if (event.pointerType === "touch") {
|
|
872
|
+
ownerDocument.removeEventListener("click", handleClickRef.current);
|
|
873
|
+
handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;
|
|
874
|
+
ownerDocument.addEventListener("click", handleClickRef.current, { once: true });
|
|
875
|
+
} else {
|
|
876
|
+
handleAndDispatchPointerDownOutsideEvent2();
|
|
877
|
+
}
|
|
878
|
+
} else {
|
|
879
|
+
ownerDocument.removeEventListener("click", handleClickRef.current);
|
|
880
|
+
}
|
|
881
|
+
isPointerInsideReactTreeRef.current = false;
|
|
882
|
+
};
|
|
883
|
+
const timerId = window.setTimeout(() => {
|
|
884
|
+
ownerDocument.addEventListener("pointerdown", handlePointerDown);
|
|
885
|
+
}, 0);
|
|
886
|
+
return () => {
|
|
887
|
+
window.clearTimeout(timerId);
|
|
888
|
+
ownerDocument.removeEventListener("pointerdown", handlePointerDown);
|
|
889
|
+
ownerDocument.removeEventListener("click", handleClickRef.current);
|
|
890
|
+
};
|
|
891
|
+
}, [ownerDocument, handlePointerDownOutside]);
|
|
892
|
+
return {
|
|
893
|
+
onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true
|
|
894
|
+
};
|
|
895
|
+
}
|
|
896
|
+
function useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {
|
|
897
|
+
const handleFocusOutside = useCallbackRef(onFocusOutside);
|
|
898
|
+
const isFocusInsideReactTreeRef = React7.useRef(false);
|
|
899
|
+
React7.useEffect(() => {
|
|
900
|
+
const handleFocus = (event) => {
|
|
901
|
+
if (event.target && !isFocusInsideReactTreeRef.current) {
|
|
902
|
+
const eventDetail = { originalEvent: event };
|
|
903
|
+
handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {
|
|
904
|
+
discrete: false
|
|
905
|
+
});
|
|
906
|
+
}
|
|
907
|
+
};
|
|
908
|
+
ownerDocument.addEventListener("focusin", handleFocus);
|
|
909
|
+
return () => ownerDocument.removeEventListener("focusin", handleFocus);
|
|
910
|
+
}, [ownerDocument, handleFocusOutside]);
|
|
911
|
+
return {
|
|
912
|
+
onFocusCapture: () => isFocusInsideReactTreeRef.current = true,
|
|
913
|
+
onBlurCapture: () => isFocusInsideReactTreeRef.current = false
|
|
914
|
+
};
|
|
915
|
+
}
|
|
916
|
+
function dispatchUpdate() {
|
|
917
|
+
const event = new CustomEvent(CONTEXT_UPDATE);
|
|
918
|
+
document.dispatchEvent(event);
|
|
919
|
+
}
|
|
920
|
+
function handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {
|
|
921
|
+
const target = detail.originalEvent.target;
|
|
922
|
+
const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });
|
|
923
|
+
if (handler)
|
|
924
|
+
target.addEventListener(name, handler, { once: true });
|
|
925
|
+
if (discrete) {
|
|
926
|
+
dispatchDiscreteCustomEvent(target, event);
|
|
927
|
+
} else {
|
|
928
|
+
target.dispatchEvent(event);
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
|
|
932
|
+
// ../../node_modules/@radix-ui/react-id/dist/index.mjs
|
|
933
|
+
import * as React9 from "react";
|
|
934
|
+
|
|
935
|
+
// ../../node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs
|
|
936
|
+
import * as React8 from "react";
|
|
937
|
+
var useLayoutEffect2 = globalThis?.document ? React8.useLayoutEffect : () => {};
|
|
938
|
+
|
|
939
|
+
// ../../node_modules/@radix-ui/react-id/dist/index.mjs
|
|
940
|
+
var useReactId = React9[" useId ".trim().toString()] || (() => {
|
|
941
|
+
return;
|
|
942
|
+
});
|
|
943
|
+
var count = 0;
|
|
944
|
+
function useId(deterministicId) {
|
|
945
|
+
const [id, setId] = React9.useState(useReactId());
|
|
946
|
+
useLayoutEffect2(() => {
|
|
947
|
+
if (!deterministicId)
|
|
948
|
+
setId((reactId) => reactId ?? String(count++));
|
|
949
|
+
}, [deterministicId]);
|
|
950
|
+
return deterministicId || (id ? `radix-${id}` : "");
|
|
951
|
+
}
|
|
952
|
+
|
|
953
|
+
// ../../node_modules/@radix-ui/react-popper/dist/index.mjs
|
|
954
|
+
import * as React16 from "react";
|
|
955
|
+
|
|
956
|
+
// ../../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs
|
|
957
|
+
var sides = ["top", "right", "bottom", "left"];
|
|
958
|
+
var min = Math.min;
|
|
959
|
+
var max = Math.max;
|
|
960
|
+
var round = Math.round;
|
|
961
|
+
var floor = Math.floor;
|
|
962
|
+
var createCoords = (v) => ({
|
|
963
|
+
x: v,
|
|
964
|
+
y: v
|
|
965
|
+
});
|
|
966
|
+
var oppositeSideMap = {
|
|
967
|
+
left: "right",
|
|
968
|
+
right: "left",
|
|
969
|
+
bottom: "top",
|
|
970
|
+
top: "bottom"
|
|
971
|
+
};
|
|
972
|
+
var oppositeAlignmentMap = {
|
|
973
|
+
start: "end",
|
|
974
|
+
end: "start"
|
|
975
|
+
};
|
|
976
|
+
function clamp(start, value, end) {
|
|
977
|
+
return max(start, min(value, end));
|
|
978
|
+
}
|
|
979
|
+
function evaluate(value, param) {
|
|
980
|
+
return typeof value === "function" ? value(param) : value;
|
|
981
|
+
}
|
|
982
|
+
function getSide(placement) {
|
|
983
|
+
return placement.split("-")[0];
|
|
984
|
+
}
|
|
985
|
+
function getAlignment(placement) {
|
|
986
|
+
return placement.split("-")[1];
|
|
987
|
+
}
|
|
988
|
+
function getOppositeAxis(axis) {
|
|
989
|
+
return axis === "x" ? "y" : "x";
|
|
990
|
+
}
|
|
991
|
+
function getAxisLength(axis) {
|
|
992
|
+
return axis === "y" ? "height" : "width";
|
|
993
|
+
}
|
|
994
|
+
var yAxisSides = /* @__PURE__ */ new Set(["top", "bottom"]);
|
|
995
|
+
function getSideAxis(placement) {
|
|
996
|
+
return yAxisSides.has(getSide(placement)) ? "y" : "x";
|
|
997
|
+
}
|
|
998
|
+
function getAlignmentAxis(placement) {
|
|
999
|
+
return getOppositeAxis(getSideAxis(placement));
|
|
1000
|
+
}
|
|
1001
|
+
function getAlignmentSides(placement, rects, rtl) {
|
|
1002
|
+
if (rtl === undefined) {
|
|
1003
|
+
rtl = false;
|
|
1004
|
+
}
|
|
1005
|
+
const alignment = getAlignment(placement);
|
|
1006
|
+
const alignmentAxis = getAlignmentAxis(placement);
|
|
1007
|
+
const length = getAxisLength(alignmentAxis);
|
|
1008
|
+
let mainAlignmentSide = alignmentAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top";
|
|
1009
|
+
if (rects.reference[length] > rects.floating[length]) {
|
|
1010
|
+
mainAlignmentSide = getOppositePlacement(mainAlignmentSide);
|
|
1011
|
+
}
|
|
1012
|
+
return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];
|
|
1013
|
+
}
|
|
1014
|
+
function getExpandedPlacements(placement) {
|
|
1015
|
+
const oppositePlacement = getOppositePlacement(placement);
|
|
1016
|
+
return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
|
|
1017
|
+
}
|
|
1018
|
+
function getOppositeAlignmentPlacement(placement) {
|
|
1019
|
+
return placement.replace(/start|end/g, (alignment) => oppositeAlignmentMap[alignment]);
|
|
1020
|
+
}
|
|
1021
|
+
var lrPlacement = ["left", "right"];
|
|
1022
|
+
var rlPlacement = ["right", "left"];
|
|
1023
|
+
var tbPlacement = ["top", "bottom"];
|
|
1024
|
+
var btPlacement = ["bottom", "top"];
|
|
1025
|
+
function getSideList(side, isStart, rtl) {
|
|
1026
|
+
switch (side) {
|
|
1027
|
+
case "top":
|
|
1028
|
+
case "bottom":
|
|
1029
|
+
if (rtl)
|
|
1030
|
+
return isStart ? rlPlacement : lrPlacement;
|
|
1031
|
+
return isStart ? lrPlacement : rlPlacement;
|
|
1032
|
+
case "left":
|
|
1033
|
+
case "right":
|
|
1034
|
+
return isStart ? tbPlacement : btPlacement;
|
|
1035
|
+
default:
|
|
1036
|
+
return [];
|
|
1037
|
+
}
|
|
1038
|
+
}
|
|
1039
|
+
function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
|
|
1040
|
+
const alignment = getAlignment(placement);
|
|
1041
|
+
let list = getSideList(getSide(placement), direction === "start", rtl);
|
|
1042
|
+
if (alignment) {
|
|
1043
|
+
list = list.map((side) => side + "-" + alignment);
|
|
1044
|
+
if (flipAlignment) {
|
|
1045
|
+
list = list.concat(list.map(getOppositeAlignmentPlacement));
|
|
1046
|
+
}
|
|
1047
|
+
}
|
|
1048
|
+
return list;
|
|
1049
|
+
}
|
|
1050
|
+
function getOppositePlacement(placement) {
|
|
1051
|
+
return placement.replace(/left|right|bottom|top/g, (side) => oppositeSideMap[side]);
|
|
1052
|
+
}
|
|
1053
|
+
function expandPaddingObject(padding) {
|
|
1054
|
+
return {
|
|
1055
|
+
top: 0,
|
|
1056
|
+
right: 0,
|
|
1057
|
+
bottom: 0,
|
|
1058
|
+
left: 0,
|
|
1059
|
+
...padding
|
|
1060
|
+
};
|
|
1061
|
+
}
|
|
1062
|
+
function getPaddingObject(padding) {
|
|
1063
|
+
return typeof padding !== "number" ? expandPaddingObject(padding) : {
|
|
1064
|
+
top: padding,
|
|
1065
|
+
right: padding,
|
|
1066
|
+
bottom: padding,
|
|
1067
|
+
left: padding
|
|
1068
|
+
};
|
|
1069
|
+
}
|
|
1070
|
+
function rectToClientRect(rect) {
|
|
1071
|
+
const {
|
|
1072
|
+
x,
|
|
1073
|
+
y,
|
|
1074
|
+
width,
|
|
1075
|
+
height
|
|
1076
|
+
} = rect;
|
|
1077
|
+
return {
|
|
1078
|
+
width,
|
|
1079
|
+
height,
|
|
1080
|
+
top: y,
|
|
1081
|
+
left: x,
|
|
1082
|
+
right: x + width,
|
|
1083
|
+
bottom: y + height,
|
|
1084
|
+
x,
|
|
1085
|
+
y
|
|
1086
|
+
};
|
|
1087
|
+
}
|
|
1088
|
+
|
|
1089
|
+
// ../../node_modules/@floating-ui/core/dist/floating-ui.core.mjs
|
|
1090
|
+
function computeCoordsFromPlacement(_ref, placement, rtl) {
|
|
1091
|
+
let {
|
|
1092
|
+
reference,
|
|
1093
|
+
floating
|
|
1094
|
+
} = _ref;
|
|
1095
|
+
const sideAxis = getSideAxis(placement);
|
|
1096
|
+
const alignmentAxis = getAlignmentAxis(placement);
|
|
1097
|
+
const alignLength = getAxisLength(alignmentAxis);
|
|
1098
|
+
const side = getSide(placement);
|
|
1099
|
+
const isVertical = sideAxis === "y";
|
|
1100
|
+
const commonX = reference.x + reference.width / 2 - floating.width / 2;
|
|
1101
|
+
const commonY = reference.y + reference.height / 2 - floating.height / 2;
|
|
1102
|
+
const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;
|
|
1103
|
+
let coords;
|
|
1104
|
+
switch (side) {
|
|
1105
|
+
case "top":
|
|
1106
|
+
coords = {
|
|
1107
|
+
x: commonX,
|
|
1108
|
+
y: reference.y - floating.height
|
|
1109
|
+
};
|
|
1110
|
+
break;
|
|
1111
|
+
case "bottom":
|
|
1112
|
+
coords = {
|
|
1113
|
+
x: commonX,
|
|
1114
|
+
y: reference.y + reference.height
|
|
1115
|
+
};
|
|
1116
|
+
break;
|
|
1117
|
+
case "right":
|
|
1118
|
+
coords = {
|
|
1119
|
+
x: reference.x + reference.width,
|
|
1120
|
+
y: commonY
|
|
1121
|
+
};
|
|
1122
|
+
break;
|
|
1123
|
+
case "left":
|
|
1124
|
+
coords = {
|
|
1125
|
+
x: reference.x - floating.width,
|
|
1126
|
+
y: commonY
|
|
1127
|
+
};
|
|
1128
|
+
break;
|
|
1129
|
+
default:
|
|
1130
|
+
coords = {
|
|
1131
|
+
x: reference.x,
|
|
1132
|
+
y: reference.y
|
|
1133
|
+
};
|
|
1134
|
+
}
|
|
1135
|
+
switch (getAlignment(placement)) {
|
|
1136
|
+
case "start":
|
|
1137
|
+
coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);
|
|
1138
|
+
break;
|
|
1139
|
+
case "end":
|
|
1140
|
+
coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);
|
|
1141
|
+
break;
|
|
1142
|
+
}
|
|
1143
|
+
return coords;
|
|
1144
|
+
}
|
|
1145
|
+
var computePosition = async (reference, floating, config) => {
|
|
1146
|
+
const {
|
|
1147
|
+
placement = "bottom",
|
|
1148
|
+
strategy = "absolute",
|
|
1149
|
+
middleware = [],
|
|
1150
|
+
platform
|
|
1151
|
+
} = config;
|
|
1152
|
+
const validMiddleware = middleware.filter(Boolean);
|
|
1153
|
+
const rtl = await (platform.isRTL == null ? undefined : platform.isRTL(floating));
|
|
1154
|
+
let rects = await platform.getElementRects({
|
|
1155
|
+
reference,
|
|
1156
|
+
floating,
|
|
1157
|
+
strategy
|
|
1158
|
+
});
|
|
1159
|
+
let {
|
|
1160
|
+
x,
|
|
1161
|
+
y
|
|
1162
|
+
} = computeCoordsFromPlacement(rects, placement, rtl);
|
|
1163
|
+
let statefulPlacement = placement;
|
|
1164
|
+
let middlewareData = {};
|
|
1165
|
+
let resetCount = 0;
|
|
1166
|
+
for (let i = 0;i < validMiddleware.length; i++) {
|
|
1167
|
+
const {
|
|
1168
|
+
name,
|
|
1169
|
+
fn
|
|
1170
|
+
} = validMiddleware[i];
|
|
1171
|
+
const {
|
|
1172
|
+
x: nextX,
|
|
1173
|
+
y: nextY,
|
|
1174
|
+
data,
|
|
1175
|
+
reset
|
|
1176
|
+
} = await fn({
|
|
1177
|
+
x,
|
|
1178
|
+
y,
|
|
1179
|
+
initialPlacement: placement,
|
|
1180
|
+
placement: statefulPlacement,
|
|
1181
|
+
strategy,
|
|
1182
|
+
middlewareData,
|
|
1183
|
+
rects,
|
|
1184
|
+
platform,
|
|
1185
|
+
elements: {
|
|
1186
|
+
reference,
|
|
1187
|
+
floating
|
|
1188
|
+
}
|
|
1189
|
+
});
|
|
1190
|
+
x = nextX != null ? nextX : x;
|
|
1191
|
+
y = nextY != null ? nextY : y;
|
|
1192
|
+
middlewareData = {
|
|
1193
|
+
...middlewareData,
|
|
1194
|
+
[name]: {
|
|
1195
|
+
...middlewareData[name],
|
|
1196
|
+
...data
|
|
1197
|
+
}
|
|
1198
|
+
};
|
|
1199
|
+
if (reset && resetCount <= 50) {
|
|
1200
|
+
resetCount++;
|
|
1201
|
+
if (typeof reset === "object") {
|
|
1202
|
+
if (reset.placement) {
|
|
1203
|
+
statefulPlacement = reset.placement;
|
|
1204
|
+
}
|
|
1205
|
+
if (reset.rects) {
|
|
1206
|
+
rects = reset.rects === true ? await platform.getElementRects({
|
|
1207
|
+
reference,
|
|
1208
|
+
floating,
|
|
1209
|
+
strategy
|
|
1210
|
+
}) : reset.rects;
|
|
1211
|
+
}
|
|
1212
|
+
({
|
|
1213
|
+
x,
|
|
1214
|
+
y
|
|
1215
|
+
} = computeCoordsFromPlacement(rects, statefulPlacement, rtl));
|
|
1216
|
+
}
|
|
1217
|
+
i = -1;
|
|
1218
|
+
}
|
|
1219
|
+
}
|
|
1220
|
+
return {
|
|
1221
|
+
x,
|
|
1222
|
+
y,
|
|
1223
|
+
placement: statefulPlacement,
|
|
1224
|
+
strategy,
|
|
1225
|
+
middlewareData
|
|
1226
|
+
};
|
|
1227
|
+
};
|
|
1228
|
+
async function detectOverflow(state, options) {
|
|
1229
|
+
var _await$platform$isEle;
|
|
1230
|
+
if (options === undefined) {
|
|
1231
|
+
options = {};
|
|
1232
|
+
}
|
|
1233
|
+
const {
|
|
1234
|
+
x,
|
|
1235
|
+
y,
|
|
1236
|
+
platform,
|
|
1237
|
+
rects,
|
|
1238
|
+
elements,
|
|
1239
|
+
strategy
|
|
1240
|
+
} = state;
|
|
1241
|
+
const {
|
|
1242
|
+
boundary = "clippingAncestors",
|
|
1243
|
+
rootBoundary = "viewport",
|
|
1244
|
+
elementContext = "floating",
|
|
1245
|
+
altBoundary = false,
|
|
1246
|
+
padding = 0
|
|
1247
|
+
} = evaluate(options, state);
|
|
1248
|
+
const paddingObject = getPaddingObject(padding);
|
|
1249
|
+
const altContext = elementContext === "floating" ? "reference" : "floating";
|
|
1250
|
+
const element = elements[altBoundary ? altContext : elementContext];
|
|
1251
|
+
const clippingClientRect = rectToClientRect(await platform.getClippingRect({
|
|
1252
|
+
element: ((_await$platform$isEle = await (platform.isElement == null ? undefined : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || await (platform.getDocumentElement == null ? undefined : platform.getDocumentElement(elements.floating)),
|
|
1253
|
+
boundary,
|
|
1254
|
+
rootBoundary,
|
|
1255
|
+
strategy
|
|
1256
|
+
}));
|
|
1257
|
+
const rect = elementContext === "floating" ? {
|
|
1258
|
+
x,
|
|
1259
|
+
y,
|
|
1260
|
+
width: rects.floating.width,
|
|
1261
|
+
height: rects.floating.height
|
|
1262
|
+
} : rects.reference;
|
|
1263
|
+
const offsetParent = await (platform.getOffsetParent == null ? undefined : platform.getOffsetParent(elements.floating));
|
|
1264
|
+
const offsetScale = await (platform.isElement == null ? undefined : platform.isElement(offsetParent)) ? await (platform.getScale == null ? undefined : platform.getScale(offsetParent)) || {
|
|
1265
|
+
x: 1,
|
|
1266
|
+
y: 1
|
|
1267
|
+
} : {
|
|
1268
|
+
x: 1,
|
|
1269
|
+
y: 1
|
|
1270
|
+
};
|
|
1271
|
+
const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({
|
|
1272
|
+
elements,
|
|
1273
|
+
rect,
|
|
1274
|
+
offsetParent,
|
|
1275
|
+
strategy
|
|
1276
|
+
}) : rect);
|
|
1277
|
+
return {
|
|
1278
|
+
top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
|
|
1279
|
+
bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
|
|
1280
|
+
left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
|
|
1281
|
+
right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
|
|
1282
|
+
};
|
|
1283
|
+
}
|
|
1284
|
+
var arrow = (options) => ({
|
|
1285
|
+
name: "arrow",
|
|
1286
|
+
options,
|
|
1287
|
+
async fn(state) {
|
|
1288
|
+
const {
|
|
1289
|
+
x,
|
|
1290
|
+
y,
|
|
1291
|
+
placement,
|
|
1292
|
+
rects,
|
|
1293
|
+
platform,
|
|
1294
|
+
elements,
|
|
1295
|
+
middlewareData
|
|
1296
|
+
} = state;
|
|
1297
|
+
const {
|
|
1298
|
+
element,
|
|
1299
|
+
padding = 0
|
|
1300
|
+
} = evaluate(options, state) || {};
|
|
1301
|
+
if (element == null) {
|
|
1302
|
+
return {};
|
|
1303
|
+
}
|
|
1304
|
+
const paddingObject = getPaddingObject(padding);
|
|
1305
|
+
const coords = {
|
|
1306
|
+
x,
|
|
1307
|
+
y
|
|
1308
|
+
};
|
|
1309
|
+
const axis = getAlignmentAxis(placement);
|
|
1310
|
+
const length = getAxisLength(axis);
|
|
1311
|
+
const arrowDimensions = await platform.getDimensions(element);
|
|
1312
|
+
const isYAxis = axis === "y";
|
|
1313
|
+
const minProp = isYAxis ? "top" : "left";
|
|
1314
|
+
const maxProp = isYAxis ? "bottom" : "right";
|
|
1315
|
+
const clientProp = isYAxis ? "clientHeight" : "clientWidth";
|
|
1316
|
+
const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];
|
|
1317
|
+
const startDiff = coords[axis] - rects.reference[axis];
|
|
1318
|
+
const arrowOffsetParent = await (platform.getOffsetParent == null ? undefined : platform.getOffsetParent(element));
|
|
1319
|
+
let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;
|
|
1320
|
+
if (!clientSize || !await (platform.isElement == null ? undefined : platform.isElement(arrowOffsetParent))) {
|
|
1321
|
+
clientSize = elements.floating[clientProp] || rects.floating[length];
|
|
1322
|
+
}
|
|
1323
|
+
const centerToReference = endDiff / 2 - startDiff / 2;
|
|
1324
|
+
const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;
|
|
1325
|
+
const minPadding = min(paddingObject[minProp], largestPossiblePadding);
|
|
1326
|
+
const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);
|
|
1327
|
+
const min$1 = minPadding;
|
|
1328
|
+
const max2 = clientSize - arrowDimensions[length] - maxPadding;
|
|
1329
|
+
const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;
|
|
1330
|
+
const offset = clamp(min$1, center, max2);
|
|
1331
|
+
const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;
|
|
1332
|
+
const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max2 : 0;
|
|
1333
|
+
return {
|
|
1334
|
+
[axis]: coords[axis] + alignmentOffset,
|
|
1335
|
+
data: {
|
|
1336
|
+
[axis]: offset,
|
|
1337
|
+
centerOffset: center - offset - alignmentOffset,
|
|
1338
|
+
...shouldAddOffset && {
|
|
1339
|
+
alignmentOffset
|
|
1340
|
+
}
|
|
1341
|
+
},
|
|
1342
|
+
reset: shouldAddOffset
|
|
1343
|
+
};
|
|
1344
|
+
}
|
|
1345
|
+
});
|
|
1346
|
+
var flip = function(options) {
|
|
1347
|
+
if (options === undefined) {
|
|
1348
|
+
options = {};
|
|
1349
|
+
}
|
|
1350
|
+
return {
|
|
1351
|
+
name: "flip",
|
|
1352
|
+
options,
|
|
1353
|
+
async fn(state) {
|
|
1354
|
+
var _middlewareData$arrow, _middlewareData$flip;
|
|
1355
|
+
const {
|
|
1356
|
+
placement,
|
|
1357
|
+
middlewareData,
|
|
1358
|
+
rects,
|
|
1359
|
+
initialPlacement,
|
|
1360
|
+
platform,
|
|
1361
|
+
elements
|
|
1362
|
+
} = state;
|
|
1363
|
+
const {
|
|
1364
|
+
mainAxis: checkMainAxis = true,
|
|
1365
|
+
crossAxis: checkCrossAxis = true,
|
|
1366
|
+
fallbackPlacements: specifiedFallbackPlacements,
|
|
1367
|
+
fallbackStrategy = "bestFit",
|
|
1368
|
+
fallbackAxisSideDirection = "none",
|
|
1369
|
+
flipAlignment = true,
|
|
1370
|
+
...detectOverflowOptions
|
|
1371
|
+
} = evaluate(options, state);
|
|
1372
|
+
if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
|
|
1373
|
+
return {};
|
|
1374
|
+
}
|
|
1375
|
+
const side = getSide(placement);
|
|
1376
|
+
const initialSideAxis = getSideAxis(initialPlacement);
|
|
1377
|
+
const isBasePlacement = getSide(initialPlacement) === initialPlacement;
|
|
1378
|
+
const rtl = await (platform.isRTL == null ? undefined : platform.isRTL(elements.floating));
|
|
1379
|
+
const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));
|
|
1380
|
+
const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== "none";
|
|
1381
|
+
if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {
|
|
1382
|
+
fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));
|
|
1383
|
+
}
|
|
1384
|
+
const placements2 = [initialPlacement, ...fallbackPlacements];
|
|
1385
|
+
const overflow = await detectOverflow(state, detectOverflowOptions);
|
|
1386
|
+
const overflows = [];
|
|
1387
|
+
let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? undefined : _middlewareData$flip.overflows) || [];
|
|
1388
|
+
if (checkMainAxis) {
|
|
1389
|
+
overflows.push(overflow[side]);
|
|
1390
|
+
}
|
|
1391
|
+
if (checkCrossAxis) {
|
|
1392
|
+
const sides2 = getAlignmentSides(placement, rects, rtl);
|
|
1393
|
+
overflows.push(overflow[sides2[0]], overflow[sides2[1]]);
|
|
1394
|
+
}
|
|
1395
|
+
overflowsData = [...overflowsData, {
|
|
1396
|
+
placement,
|
|
1397
|
+
overflows
|
|
1398
|
+
}];
|
|
1399
|
+
if (!overflows.every((side2) => side2 <= 0)) {
|
|
1400
|
+
var _middlewareData$flip2, _overflowsData$filter;
|
|
1401
|
+
const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? undefined : _middlewareData$flip2.index) || 0) + 1;
|
|
1402
|
+
const nextPlacement = placements2[nextIndex];
|
|
1403
|
+
if (nextPlacement) {
|
|
1404
|
+
const ignoreCrossAxisOverflow = checkCrossAxis === "alignment" ? initialSideAxis !== getSideAxis(nextPlacement) : false;
|
|
1405
|
+
if (!ignoreCrossAxisOverflow || overflowsData.every((d) => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {
|
|
1406
|
+
return {
|
|
1407
|
+
data: {
|
|
1408
|
+
index: nextIndex,
|
|
1409
|
+
overflows: overflowsData
|
|
1410
|
+
},
|
|
1411
|
+
reset: {
|
|
1412
|
+
placement: nextPlacement
|
|
1413
|
+
}
|
|
1414
|
+
};
|
|
1415
|
+
}
|
|
1416
|
+
}
|
|
1417
|
+
let resetPlacement = (_overflowsData$filter = overflowsData.filter((d) => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? undefined : _overflowsData$filter.placement;
|
|
1418
|
+
if (!resetPlacement) {
|
|
1419
|
+
switch (fallbackStrategy) {
|
|
1420
|
+
case "bestFit": {
|
|
1421
|
+
var _overflowsData$filter2;
|
|
1422
|
+
const placement2 = (_overflowsData$filter2 = overflowsData.filter((d) => {
|
|
1423
|
+
if (hasFallbackAxisSideDirection) {
|
|
1424
|
+
const currentSideAxis = getSideAxis(d.placement);
|
|
1425
|
+
return currentSideAxis === initialSideAxis || currentSideAxis === "y";
|
|
1426
|
+
}
|
|
1427
|
+
return true;
|
|
1428
|
+
}).map((d) => [d.placement, d.overflows.filter((overflow2) => overflow2 > 0).reduce((acc, overflow2) => acc + overflow2, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? undefined : _overflowsData$filter2[0];
|
|
1429
|
+
if (placement2) {
|
|
1430
|
+
resetPlacement = placement2;
|
|
1431
|
+
}
|
|
1432
|
+
break;
|
|
1433
|
+
}
|
|
1434
|
+
case "initialPlacement":
|
|
1435
|
+
resetPlacement = initialPlacement;
|
|
1436
|
+
break;
|
|
1437
|
+
}
|
|
1438
|
+
}
|
|
1439
|
+
if (placement !== resetPlacement) {
|
|
1440
|
+
return {
|
|
1441
|
+
reset: {
|
|
1442
|
+
placement: resetPlacement
|
|
1443
|
+
}
|
|
1444
|
+
};
|
|
1445
|
+
}
|
|
1446
|
+
}
|
|
1447
|
+
return {};
|
|
1448
|
+
}
|
|
1449
|
+
};
|
|
1450
|
+
};
|
|
1451
|
+
function getSideOffsets(overflow, rect) {
|
|
1452
|
+
return {
|
|
1453
|
+
top: overflow.top - rect.height,
|
|
1454
|
+
right: overflow.right - rect.width,
|
|
1455
|
+
bottom: overflow.bottom - rect.height,
|
|
1456
|
+
left: overflow.left - rect.width
|
|
1457
|
+
};
|
|
1458
|
+
}
|
|
1459
|
+
function isAnySideFullyClipped(overflow) {
|
|
1460
|
+
return sides.some((side) => overflow[side] >= 0);
|
|
1461
|
+
}
|
|
1462
|
+
var hide = function(options) {
|
|
1463
|
+
if (options === undefined) {
|
|
1464
|
+
options = {};
|
|
1465
|
+
}
|
|
1466
|
+
return {
|
|
1467
|
+
name: "hide",
|
|
1468
|
+
options,
|
|
1469
|
+
async fn(state) {
|
|
1470
|
+
const {
|
|
1471
|
+
rects
|
|
1472
|
+
} = state;
|
|
1473
|
+
const {
|
|
1474
|
+
strategy = "referenceHidden",
|
|
1475
|
+
...detectOverflowOptions
|
|
1476
|
+
} = evaluate(options, state);
|
|
1477
|
+
switch (strategy) {
|
|
1478
|
+
case "referenceHidden": {
|
|
1479
|
+
const overflow = await detectOverflow(state, {
|
|
1480
|
+
...detectOverflowOptions,
|
|
1481
|
+
elementContext: "reference"
|
|
1482
|
+
});
|
|
1483
|
+
const offsets = getSideOffsets(overflow, rects.reference);
|
|
1484
|
+
return {
|
|
1485
|
+
data: {
|
|
1486
|
+
referenceHiddenOffsets: offsets,
|
|
1487
|
+
referenceHidden: isAnySideFullyClipped(offsets)
|
|
1488
|
+
}
|
|
1489
|
+
};
|
|
1490
|
+
}
|
|
1491
|
+
case "escaped": {
|
|
1492
|
+
const overflow = await detectOverflow(state, {
|
|
1493
|
+
...detectOverflowOptions,
|
|
1494
|
+
altBoundary: true
|
|
1495
|
+
});
|
|
1496
|
+
const offsets = getSideOffsets(overflow, rects.floating);
|
|
1497
|
+
return {
|
|
1498
|
+
data: {
|
|
1499
|
+
escapedOffsets: offsets,
|
|
1500
|
+
escaped: isAnySideFullyClipped(offsets)
|
|
1501
|
+
}
|
|
1502
|
+
};
|
|
1503
|
+
}
|
|
1504
|
+
default: {
|
|
1505
|
+
return {};
|
|
1506
|
+
}
|
|
1507
|
+
}
|
|
1508
|
+
}
|
|
1509
|
+
};
|
|
1510
|
+
};
|
|
1511
|
+
var originSides = /* @__PURE__ */ new Set(["left", "top"]);
|
|
1512
|
+
async function convertValueToCoords(state, options) {
|
|
1513
|
+
const {
|
|
1514
|
+
placement,
|
|
1515
|
+
platform,
|
|
1516
|
+
elements
|
|
1517
|
+
} = state;
|
|
1518
|
+
const rtl = await (platform.isRTL == null ? undefined : platform.isRTL(elements.floating));
|
|
1519
|
+
const side = getSide(placement);
|
|
1520
|
+
const alignment = getAlignment(placement);
|
|
1521
|
+
const isVertical = getSideAxis(placement) === "y";
|
|
1522
|
+
const mainAxisMulti = originSides.has(side) ? -1 : 1;
|
|
1523
|
+
const crossAxisMulti = rtl && isVertical ? -1 : 1;
|
|
1524
|
+
const rawValue = evaluate(options, state);
|
|
1525
|
+
let {
|
|
1526
|
+
mainAxis,
|
|
1527
|
+
crossAxis,
|
|
1528
|
+
alignmentAxis
|
|
1529
|
+
} = typeof rawValue === "number" ? {
|
|
1530
|
+
mainAxis: rawValue,
|
|
1531
|
+
crossAxis: 0,
|
|
1532
|
+
alignmentAxis: null
|
|
1533
|
+
} : {
|
|
1534
|
+
mainAxis: rawValue.mainAxis || 0,
|
|
1535
|
+
crossAxis: rawValue.crossAxis || 0,
|
|
1536
|
+
alignmentAxis: rawValue.alignmentAxis
|
|
1537
|
+
};
|
|
1538
|
+
if (alignment && typeof alignmentAxis === "number") {
|
|
1539
|
+
crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis;
|
|
1540
|
+
}
|
|
1541
|
+
return isVertical ? {
|
|
1542
|
+
x: crossAxis * crossAxisMulti,
|
|
1543
|
+
y: mainAxis * mainAxisMulti
|
|
1544
|
+
} : {
|
|
1545
|
+
x: mainAxis * mainAxisMulti,
|
|
1546
|
+
y: crossAxis * crossAxisMulti
|
|
1547
|
+
};
|
|
1548
|
+
}
|
|
1549
|
+
var offset = function(options) {
|
|
1550
|
+
if (options === undefined) {
|
|
1551
|
+
options = 0;
|
|
1552
|
+
}
|
|
1553
|
+
return {
|
|
1554
|
+
name: "offset",
|
|
1555
|
+
options,
|
|
1556
|
+
async fn(state) {
|
|
1557
|
+
var _middlewareData$offse, _middlewareData$arrow;
|
|
1558
|
+
const {
|
|
1559
|
+
x,
|
|
1560
|
+
y,
|
|
1561
|
+
placement,
|
|
1562
|
+
middlewareData
|
|
1563
|
+
} = state;
|
|
1564
|
+
const diffCoords = await convertValueToCoords(state, options);
|
|
1565
|
+
if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? undefined : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
|
|
1566
|
+
return {};
|
|
1567
|
+
}
|
|
1568
|
+
return {
|
|
1569
|
+
x: x + diffCoords.x,
|
|
1570
|
+
y: y + diffCoords.y,
|
|
1571
|
+
data: {
|
|
1572
|
+
...diffCoords,
|
|
1573
|
+
placement
|
|
1574
|
+
}
|
|
1575
|
+
};
|
|
1576
|
+
}
|
|
1577
|
+
};
|
|
1578
|
+
};
|
|
1579
|
+
var shift = function(options) {
|
|
1580
|
+
if (options === undefined) {
|
|
1581
|
+
options = {};
|
|
1582
|
+
}
|
|
1583
|
+
return {
|
|
1584
|
+
name: "shift",
|
|
1585
|
+
options,
|
|
1586
|
+
async fn(state) {
|
|
1587
|
+
const {
|
|
1588
|
+
x,
|
|
1589
|
+
y,
|
|
1590
|
+
placement
|
|
1591
|
+
} = state;
|
|
1592
|
+
const {
|
|
1593
|
+
mainAxis: checkMainAxis = true,
|
|
1594
|
+
crossAxis: checkCrossAxis = false,
|
|
1595
|
+
limiter = {
|
|
1596
|
+
fn: (_ref) => {
|
|
1597
|
+
let {
|
|
1598
|
+
x: x2,
|
|
1599
|
+
y: y2
|
|
1600
|
+
} = _ref;
|
|
1601
|
+
return {
|
|
1602
|
+
x: x2,
|
|
1603
|
+
y: y2
|
|
1604
|
+
};
|
|
1605
|
+
}
|
|
1606
|
+
},
|
|
1607
|
+
...detectOverflowOptions
|
|
1608
|
+
} = evaluate(options, state);
|
|
1609
|
+
const coords = {
|
|
1610
|
+
x,
|
|
1611
|
+
y
|
|
1612
|
+
};
|
|
1613
|
+
const overflow = await detectOverflow(state, detectOverflowOptions);
|
|
1614
|
+
const crossAxis = getSideAxis(getSide(placement));
|
|
1615
|
+
const mainAxis = getOppositeAxis(crossAxis);
|
|
1616
|
+
let mainAxisCoord = coords[mainAxis];
|
|
1617
|
+
let crossAxisCoord = coords[crossAxis];
|
|
1618
|
+
if (checkMainAxis) {
|
|
1619
|
+
const minSide = mainAxis === "y" ? "top" : "left";
|
|
1620
|
+
const maxSide = mainAxis === "y" ? "bottom" : "right";
|
|
1621
|
+
const min2 = mainAxisCoord + overflow[minSide];
|
|
1622
|
+
const max2 = mainAxisCoord - overflow[maxSide];
|
|
1623
|
+
mainAxisCoord = clamp(min2, mainAxisCoord, max2);
|
|
1624
|
+
}
|
|
1625
|
+
if (checkCrossAxis) {
|
|
1626
|
+
const minSide = crossAxis === "y" ? "top" : "left";
|
|
1627
|
+
const maxSide = crossAxis === "y" ? "bottom" : "right";
|
|
1628
|
+
const min2 = crossAxisCoord + overflow[minSide];
|
|
1629
|
+
const max2 = crossAxisCoord - overflow[maxSide];
|
|
1630
|
+
crossAxisCoord = clamp(min2, crossAxisCoord, max2);
|
|
1631
|
+
}
|
|
1632
|
+
const limitedCoords = limiter.fn({
|
|
1633
|
+
...state,
|
|
1634
|
+
[mainAxis]: mainAxisCoord,
|
|
1635
|
+
[crossAxis]: crossAxisCoord
|
|
1636
|
+
});
|
|
1637
|
+
return {
|
|
1638
|
+
...limitedCoords,
|
|
1639
|
+
data: {
|
|
1640
|
+
x: limitedCoords.x - x,
|
|
1641
|
+
y: limitedCoords.y - y,
|
|
1642
|
+
enabled: {
|
|
1643
|
+
[mainAxis]: checkMainAxis,
|
|
1644
|
+
[crossAxis]: checkCrossAxis
|
|
1645
|
+
}
|
|
1646
|
+
}
|
|
1647
|
+
};
|
|
1648
|
+
}
|
|
1649
|
+
};
|
|
1650
|
+
};
|
|
1651
|
+
var limitShift = function(options) {
|
|
1652
|
+
if (options === undefined) {
|
|
1653
|
+
options = {};
|
|
1654
|
+
}
|
|
1655
|
+
return {
|
|
1656
|
+
options,
|
|
1657
|
+
fn(state) {
|
|
1658
|
+
const {
|
|
1659
|
+
x,
|
|
1660
|
+
y,
|
|
1661
|
+
placement,
|
|
1662
|
+
rects,
|
|
1663
|
+
middlewareData
|
|
1664
|
+
} = state;
|
|
1665
|
+
const {
|
|
1666
|
+
offset: offset2 = 0,
|
|
1667
|
+
mainAxis: checkMainAxis = true,
|
|
1668
|
+
crossAxis: checkCrossAxis = true
|
|
1669
|
+
} = evaluate(options, state);
|
|
1670
|
+
const coords = {
|
|
1671
|
+
x,
|
|
1672
|
+
y
|
|
1673
|
+
};
|
|
1674
|
+
const crossAxis = getSideAxis(placement);
|
|
1675
|
+
const mainAxis = getOppositeAxis(crossAxis);
|
|
1676
|
+
let mainAxisCoord = coords[mainAxis];
|
|
1677
|
+
let crossAxisCoord = coords[crossAxis];
|
|
1678
|
+
const rawOffset = evaluate(offset2, state);
|
|
1679
|
+
const computedOffset = typeof rawOffset === "number" ? {
|
|
1680
|
+
mainAxis: rawOffset,
|
|
1681
|
+
crossAxis: 0
|
|
1682
|
+
} : {
|
|
1683
|
+
mainAxis: 0,
|
|
1684
|
+
crossAxis: 0,
|
|
1685
|
+
...rawOffset
|
|
1686
|
+
};
|
|
1687
|
+
if (checkMainAxis) {
|
|
1688
|
+
const len = mainAxis === "y" ? "height" : "width";
|
|
1689
|
+
const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;
|
|
1690
|
+
const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;
|
|
1691
|
+
if (mainAxisCoord < limitMin) {
|
|
1692
|
+
mainAxisCoord = limitMin;
|
|
1693
|
+
} else if (mainAxisCoord > limitMax) {
|
|
1694
|
+
mainAxisCoord = limitMax;
|
|
1695
|
+
}
|
|
1696
|
+
}
|
|
1697
|
+
if (checkCrossAxis) {
|
|
1698
|
+
var _middlewareData$offse, _middlewareData$offse2;
|
|
1699
|
+
const len = mainAxis === "y" ? "width" : "height";
|
|
1700
|
+
const isOriginSide = originSides.has(getSide(placement));
|
|
1701
|
+
const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? undefined : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);
|
|
1702
|
+
const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? undefined : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);
|
|
1703
|
+
if (crossAxisCoord < limitMin) {
|
|
1704
|
+
crossAxisCoord = limitMin;
|
|
1705
|
+
} else if (crossAxisCoord > limitMax) {
|
|
1706
|
+
crossAxisCoord = limitMax;
|
|
1707
|
+
}
|
|
1708
|
+
}
|
|
1709
|
+
return {
|
|
1710
|
+
[mainAxis]: mainAxisCoord,
|
|
1711
|
+
[crossAxis]: crossAxisCoord
|
|
1712
|
+
};
|
|
1713
|
+
}
|
|
1714
|
+
};
|
|
1715
|
+
};
|
|
1716
|
+
var size = function(options) {
|
|
1717
|
+
if (options === undefined) {
|
|
1718
|
+
options = {};
|
|
1719
|
+
}
|
|
1720
|
+
return {
|
|
1721
|
+
name: "size",
|
|
1722
|
+
options,
|
|
1723
|
+
async fn(state) {
|
|
1724
|
+
var _state$middlewareData, _state$middlewareData2;
|
|
1725
|
+
const {
|
|
1726
|
+
placement,
|
|
1727
|
+
rects,
|
|
1728
|
+
platform,
|
|
1729
|
+
elements
|
|
1730
|
+
} = state;
|
|
1731
|
+
const {
|
|
1732
|
+
apply = () => {},
|
|
1733
|
+
...detectOverflowOptions
|
|
1734
|
+
} = evaluate(options, state);
|
|
1735
|
+
const overflow = await detectOverflow(state, detectOverflowOptions);
|
|
1736
|
+
const side = getSide(placement);
|
|
1737
|
+
const alignment = getAlignment(placement);
|
|
1738
|
+
const isYAxis = getSideAxis(placement) === "y";
|
|
1739
|
+
const {
|
|
1740
|
+
width,
|
|
1741
|
+
height
|
|
1742
|
+
} = rects.floating;
|
|
1743
|
+
let heightSide;
|
|
1744
|
+
let widthSide;
|
|
1745
|
+
if (side === "top" || side === "bottom") {
|
|
1746
|
+
heightSide = side;
|
|
1747
|
+
widthSide = alignment === (await (platform.isRTL == null ? undefined : platform.isRTL(elements.floating)) ? "start" : "end") ? "left" : "right";
|
|
1748
|
+
} else {
|
|
1749
|
+
widthSide = side;
|
|
1750
|
+
heightSide = alignment === "end" ? "top" : "bottom";
|
|
1751
|
+
}
|
|
1752
|
+
const maximumClippingHeight = height - overflow.top - overflow.bottom;
|
|
1753
|
+
const maximumClippingWidth = width - overflow.left - overflow.right;
|
|
1754
|
+
const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);
|
|
1755
|
+
const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);
|
|
1756
|
+
const noShift = !state.middlewareData.shift;
|
|
1757
|
+
let availableHeight = overflowAvailableHeight;
|
|
1758
|
+
let availableWidth = overflowAvailableWidth;
|
|
1759
|
+
if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {
|
|
1760
|
+
availableWidth = maximumClippingWidth;
|
|
1761
|
+
}
|
|
1762
|
+
if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {
|
|
1763
|
+
availableHeight = maximumClippingHeight;
|
|
1764
|
+
}
|
|
1765
|
+
if (noShift && !alignment) {
|
|
1766
|
+
const xMin = max(overflow.left, 0);
|
|
1767
|
+
const xMax = max(overflow.right, 0);
|
|
1768
|
+
const yMin = max(overflow.top, 0);
|
|
1769
|
+
const yMax = max(overflow.bottom, 0);
|
|
1770
|
+
if (isYAxis) {
|
|
1771
|
+
availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));
|
|
1772
|
+
} else {
|
|
1773
|
+
availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));
|
|
1774
|
+
}
|
|
1775
|
+
}
|
|
1776
|
+
await apply({
|
|
1777
|
+
...state,
|
|
1778
|
+
availableWidth,
|
|
1779
|
+
availableHeight
|
|
1780
|
+
});
|
|
1781
|
+
const nextDimensions = await platform.getDimensions(elements.floating);
|
|
1782
|
+
if (width !== nextDimensions.width || height !== nextDimensions.height) {
|
|
1783
|
+
return {
|
|
1784
|
+
reset: {
|
|
1785
|
+
rects: true
|
|
1786
|
+
}
|
|
1787
|
+
};
|
|
1788
|
+
}
|
|
1789
|
+
return {};
|
|
1790
|
+
}
|
|
1791
|
+
};
|
|
1792
|
+
};
|
|
1793
|
+
|
|
1794
|
+
// ../../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs
|
|
1795
|
+
function hasWindow() {
|
|
1796
|
+
return typeof window !== "undefined";
|
|
1797
|
+
}
|
|
1798
|
+
function getNodeName(node) {
|
|
1799
|
+
if (isNode(node)) {
|
|
1800
|
+
return (node.nodeName || "").toLowerCase();
|
|
1801
|
+
}
|
|
1802
|
+
return "#document";
|
|
1803
|
+
}
|
|
1804
|
+
function getWindow(node) {
|
|
1805
|
+
var _node$ownerDocument;
|
|
1806
|
+
return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? undefined : _node$ownerDocument.defaultView) || window;
|
|
1807
|
+
}
|
|
1808
|
+
function getDocumentElement(node) {
|
|
1809
|
+
var _ref;
|
|
1810
|
+
return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? undefined : _ref.documentElement;
|
|
1811
|
+
}
|
|
1812
|
+
function isNode(value) {
|
|
1813
|
+
if (!hasWindow()) {
|
|
1814
|
+
return false;
|
|
1815
|
+
}
|
|
1816
|
+
return value instanceof Node || value instanceof getWindow(value).Node;
|
|
1817
|
+
}
|
|
1818
|
+
function isElement(value) {
|
|
1819
|
+
if (!hasWindow()) {
|
|
1820
|
+
return false;
|
|
1821
|
+
}
|
|
1822
|
+
return value instanceof Element || value instanceof getWindow(value).Element;
|
|
1823
|
+
}
|
|
1824
|
+
function isHTMLElement(value) {
|
|
1825
|
+
if (!hasWindow()) {
|
|
1826
|
+
return false;
|
|
1827
|
+
}
|
|
1828
|
+
return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;
|
|
1829
|
+
}
|
|
1830
|
+
function isShadowRoot(value) {
|
|
1831
|
+
if (!hasWindow() || typeof ShadowRoot === "undefined") {
|
|
1832
|
+
return false;
|
|
1833
|
+
}
|
|
1834
|
+
return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;
|
|
1835
|
+
}
|
|
1836
|
+
var invalidOverflowDisplayValues = /* @__PURE__ */ new Set(["inline", "contents"]);
|
|
1837
|
+
function isOverflowElement(element) {
|
|
1838
|
+
const {
|
|
1839
|
+
overflow,
|
|
1840
|
+
overflowX,
|
|
1841
|
+
overflowY,
|
|
1842
|
+
display
|
|
1843
|
+
} = getComputedStyle2(element);
|
|
1844
|
+
return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !invalidOverflowDisplayValues.has(display);
|
|
1845
|
+
}
|
|
1846
|
+
var tableElements = /* @__PURE__ */ new Set(["table", "td", "th"]);
|
|
1847
|
+
function isTableElement(element) {
|
|
1848
|
+
return tableElements.has(getNodeName(element));
|
|
1849
|
+
}
|
|
1850
|
+
var topLayerSelectors = [":popover-open", ":modal"];
|
|
1851
|
+
function isTopLayer(element) {
|
|
1852
|
+
return topLayerSelectors.some((selector) => {
|
|
1853
|
+
try {
|
|
1854
|
+
return element.matches(selector);
|
|
1855
|
+
} catch (_e) {
|
|
1856
|
+
return false;
|
|
1857
|
+
}
|
|
1858
|
+
});
|
|
1859
|
+
}
|
|
1860
|
+
var transformProperties = ["transform", "translate", "scale", "rotate", "perspective"];
|
|
1861
|
+
var willChangeValues = ["transform", "translate", "scale", "rotate", "perspective", "filter"];
|
|
1862
|
+
var containValues = ["paint", "layout", "strict", "content"];
|
|
1863
|
+
function isContainingBlock(elementOrCss) {
|
|
1864
|
+
const webkit = isWebKit();
|
|
1865
|
+
const css = isElement(elementOrCss) ? getComputedStyle2(elementOrCss) : elementOrCss;
|
|
1866
|
+
return transformProperties.some((value) => css[value] ? css[value] !== "none" : false) || (css.containerType ? css.containerType !== "normal" : false) || !webkit && (css.backdropFilter ? css.backdropFilter !== "none" : false) || !webkit && (css.filter ? css.filter !== "none" : false) || willChangeValues.some((value) => (css.willChange || "").includes(value)) || containValues.some((value) => (css.contain || "").includes(value));
|
|
1867
|
+
}
|
|
1868
|
+
function getContainingBlock(element) {
|
|
1869
|
+
let currentNode = getParentNode(element);
|
|
1870
|
+
while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {
|
|
1871
|
+
if (isContainingBlock(currentNode)) {
|
|
1872
|
+
return currentNode;
|
|
1873
|
+
} else if (isTopLayer(currentNode)) {
|
|
1874
|
+
return null;
|
|
1875
|
+
}
|
|
1876
|
+
currentNode = getParentNode(currentNode);
|
|
1877
|
+
}
|
|
1878
|
+
return null;
|
|
1879
|
+
}
|
|
1880
|
+
function isWebKit() {
|
|
1881
|
+
if (typeof CSS === "undefined" || !CSS.supports)
|
|
1882
|
+
return false;
|
|
1883
|
+
return CSS.supports("-webkit-backdrop-filter", "none");
|
|
1884
|
+
}
|
|
1885
|
+
var lastTraversableNodeNames = /* @__PURE__ */ new Set(["html", "body", "#document"]);
|
|
1886
|
+
function isLastTraversableNode(node) {
|
|
1887
|
+
return lastTraversableNodeNames.has(getNodeName(node));
|
|
1888
|
+
}
|
|
1889
|
+
function getComputedStyle2(element) {
|
|
1890
|
+
return getWindow(element).getComputedStyle(element);
|
|
1891
|
+
}
|
|
1892
|
+
function getNodeScroll(element) {
|
|
1893
|
+
if (isElement(element)) {
|
|
1894
|
+
return {
|
|
1895
|
+
scrollLeft: element.scrollLeft,
|
|
1896
|
+
scrollTop: element.scrollTop
|
|
1897
|
+
};
|
|
1898
|
+
}
|
|
1899
|
+
return {
|
|
1900
|
+
scrollLeft: element.scrollX,
|
|
1901
|
+
scrollTop: element.scrollY
|
|
1902
|
+
};
|
|
1903
|
+
}
|
|
1904
|
+
function getParentNode(node) {
|
|
1905
|
+
if (getNodeName(node) === "html") {
|
|
1906
|
+
return node;
|
|
1907
|
+
}
|
|
1908
|
+
const result = node.assignedSlot || node.parentNode || isShadowRoot(node) && node.host || getDocumentElement(node);
|
|
1909
|
+
return isShadowRoot(result) ? result.host : result;
|
|
1910
|
+
}
|
|
1911
|
+
function getNearestOverflowAncestor(node) {
|
|
1912
|
+
const parentNode = getParentNode(node);
|
|
1913
|
+
if (isLastTraversableNode(parentNode)) {
|
|
1914
|
+
return node.ownerDocument ? node.ownerDocument.body : node.body;
|
|
1915
|
+
}
|
|
1916
|
+
if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {
|
|
1917
|
+
return parentNode;
|
|
1918
|
+
}
|
|
1919
|
+
return getNearestOverflowAncestor(parentNode);
|
|
1920
|
+
}
|
|
1921
|
+
function getOverflowAncestors(node, list, traverseIframes) {
|
|
1922
|
+
var _node$ownerDocument2;
|
|
1923
|
+
if (list === undefined) {
|
|
1924
|
+
list = [];
|
|
1925
|
+
}
|
|
1926
|
+
if (traverseIframes === undefined) {
|
|
1927
|
+
traverseIframes = true;
|
|
1928
|
+
}
|
|
1929
|
+
const scrollableAncestor = getNearestOverflowAncestor(node);
|
|
1930
|
+
const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? undefined : _node$ownerDocument2.body);
|
|
1931
|
+
const win = getWindow(scrollableAncestor);
|
|
1932
|
+
if (isBody) {
|
|
1933
|
+
const frameElement = getFrameElement(win);
|
|
1934
|
+
return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);
|
|
1935
|
+
}
|
|
1936
|
+
return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
|
|
1937
|
+
}
|
|
1938
|
+
function getFrameElement(win) {
|
|
1939
|
+
return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;
|
|
1940
|
+
}
|
|
1941
|
+
|
|
1942
|
+
// ../../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs
|
|
1943
|
+
function getCssDimensions(element) {
|
|
1944
|
+
const css = getComputedStyle2(element);
|
|
1945
|
+
let width = parseFloat(css.width) || 0;
|
|
1946
|
+
let height = parseFloat(css.height) || 0;
|
|
1947
|
+
const hasOffset = isHTMLElement(element);
|
|
1948
|
+
const offsetWidth = hasOffset ? element.offsetWidth : width;
|
|
1949
|
+
const offsetHeight = hasOffset ? element.offsetHeight : height;
|
|
1950
|
+
const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;
|
|
1951
|
+
if (shouldFallback) {
|
|
1952
|
+
width = offsetWidth;
|
|
1953
|
+
height = offsetHeight;
|
|
1954
|
+
}
|
|
1955
|
+
return {
|
|
1956
|
+
width,
|
|
1957
|
+
height,
|
|
1958
|
+
$: shouldFallback
|
|
1959
|
+
};
|
|
1960
|
+
}
|
|
1961
|
+
function unwrapElement(element) {
|
|
1962
|
+
return !isElement(element) ? element.contextElement : element;
|
|
1963
|
+
}
|
|
1964
|
+
function getScale(element) {
|
|
1965
|
+
const domElement = unwrapElement(element);
|
|
1966
|
+
if (!isHTMLElement(domElement)) {
|
|
1967
|
+
return createCoords(1);
|
|
1968
|
+
}
|
|
1969
|
+
const rect = domElement.getBoundingClientRect();
|
|
1970
|
+
const {
|
|
1971
|
+
width,
|
|
1972
|
+
height,
|
|
1973
|
+
$
|
|
1974
|
+
} = getCssDimensions(domElement);
|
|
1975
|
+
let x = ($ ? round(rect.width) : rect.width) / width;
|
|
1976
|
+
let y = ($ ? round(rect.height) : rect.height) / height;
|
|
1977
|
+
if (!x || !Number.isFinite(x)) {
|
|
1978
|
+
x = 1;
|
|
1979
|
+
}
|
|
1980
|
+
if (!y || !Number.isFinite(y)) {
|
|
1981
|
+
y = 1;
|
|
1982
|
+
}
|
|
1983
|
+
return {
|
|
1984
|
+
x,
|
|
1985
|
+
y
|
|
1986
|
+
};
|
|
1987
|
+
}
|
|
1988
|
+
var noOffsets = /* @__PURE__ */ createCoords(0);
|
|
1989
|
+
function getVisualOffsets(element) {
|
|
1990
|
+
const win = getWindow(element);
|
|
1991
|
+
if (!isWebKit() || !win.visualViewport) {
|
|
1992
|
+
return noOffsets;
|
|
1993
|
+
}
|
|
1994
|
+
return {
|
|
1995
|
+
x: win.visualViewport.offsetLeft,
|
|
1996
|
+
y: win.visualViewport.offsetTop
|
|
1997
|
+
};
|
|
1998
|
+
}
|
|
1999
|
+
function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {
|
|
2000
|
+
if (isFixed === undefined) {
|
|
2001
|
+
isFixed = false;
|
|
2002
|
+
}
|
|
2003
|
+
if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {
|
|
2004
|
+
return false;
|
|
2005
|
+
}
|
|
2006
|
+
return isFixed;
|
|
2007
|
+
}
|
|
2008
|
+
function getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {
|
|
2009
|
+
if (includeScale === undefined) {
|
|
2010
|
+
includeScale = false;
|
|
2011
|
+
}
|
|
2012
|
+
if (isFixedStrategy === undefined) {
|
|
2013
|
+
isFixedStrategy = false;
|
|
2014
|
+
}
|
|
2015
|
+
const clientRect = element.getBoundingClientRect();
|
|
2016
|
+
const domElement = unwrapElement(element);
|
|
2017
|
+
let scale = createCoords(1);
|
|
2018
|
+
if (includeScale) {
|
|
2019
|
+
if (offsetParent) {
|
|
2020
|
+
if (isElement(offsetParent)) {
|
|
2021
|
+
scale = getScale(offsetParent);
|
|
2022
|
+
}
|
|
2023
|
+
} else {
|
|
2024
|
+
scale = getScale(element);
|
|
2025
|
+
}
|
|
2026
|
+
}
|
|
2027
|
+
const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);
|
|
2028
|
+
let x = (clientRect.left + visualOffsets.x) / scale.x;
|
|
2029
|
+
let y = (clientRect.top + visualOffsets.y) / scale.y;
|
|
2030
|
+
let width = clientRect.width / scale.x;
|
|
2031
|
+
let height = clientRect.height / scale.y;
|
|
2032
|
+
if (domElement) {
|
|
2033
|
+
const win = getWindow(domElement);
|
|
2034
|
+
const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;
|
|
2035
|
+
let currentWin = win;
|
|
2036
|
+
let currentIFrame = getFrameElement(currentWin);
|
|
2037
|
+
while (currentIFrame && offsetParent && offsetWin !== currentWin) {
|
|
2038
|
+
const iframeScale = getScale(currentIFrame);
|
|
2039
|
+
const iframeRect = currentIFrame.getBoundingClientRect();
|
|
2040
|
+
const css = getComputedStyle2(currentIFrame);
|
|
2041
|
+
const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;
|
|
2042
|
+
const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;
|
|
2043
|
+
x *= iframeScale.x;
|
|
2044
|
+
y *= iframeScale.y;
|
|
2045
|
+
width *= iframeScale.x;
|
|
2046
|
+
height *= iframeScale.y;
|
|
2047
|
+
x += left;
|
|
2048
|
+
y += top;
|
|
2049
|
+
currentWin = getWindow(currentIFrame);
|
|
2050
|
+
currentIFrame = getFrameElement(currentWin);
|
|
2051
|
+
}
|
|
2052
|
+
}
|
|
2053
|
+
return rectToClientRect({
|
|
2054
|
+
width,
|
|
2055
|
+
height,
|
|
2056
|
+
x,
|
|
2057
|
+
y
|
|
2058
|
+
});
|
|
2059
|
+
}
|
|
2060
|
+
function getWindowScrollBarX(element, rect) {
|
|
2061
|
+
const leftScroll = getNodeScroll(element).scrollLeft;
|
|
2062
|
+
if (!rect) {
|
|
2063
|
+
return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;
|
|
2064
|
+
}
|
|
2065
|
+
return rect.left + leftScroll;
|
|
2066
|
+
}
|
|
2067
|
+
function getHTMLOffset(documentElement, scroll) {
|
|
2068
|
+
const htmlRect = documentElement.getBoundingClientRect();
|
|
2069
|
+
const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);
|
|
2070
|
+
const y = htmlRect.top + scroll.scrollTop;
|
|
2071
|
+
return {
|
|
2072
|
+
x,
|
|
2073
|
+
y
|
|
2074
|
+
};
|
|
2075
|
+
}
|
|
2076
|
+
function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
|
|
2077
|
+
let {
|
|
2078
|
+
elements,
|
|
2079
|
+
rect,
|
|
2080
|
+
offsetParent,
|
|
2081
|
+
strategy
|
|
2082
|
+
} = _ref;
|
|
2083
|
+
const isFixed = strategy === "fixed";
|
|
2084
|
+
const documentElement = getDocumentElement(offsetParent);
|
|
2085
|
+
const topLayer = elements ? isTopLayer(elements.floating) : false;
|
|
2086
|
+
if (offsetParent === documentElement || topLayer && isFixed) {
|
|
2087
|
+
return rect;
|
|
2088
|
+
}
|
|
2089
|
+
let scroll = {
|
|
2090
|
+
scrollLeft: 0,
|
|
2091
|
+
scrollTop: 0
|
|
2092
|
+
};
|
|
2093
|
+
let scale = createCoords(1);
|
|
2094
|
+
const offsets = createCoords(0);
|
|
2095
|
+
const isOffsetParentAnElement = isHTMLElement(offsetParent);
|
|
2096
|
+
if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
|
|
2097
|
+
if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) {
|
|
2098
|
+
scroll = getNodeScroll(offsetParent);
|
|
2099
|
+
}
|
|
2100
|
+
if (isHTMLElement(offsetParent)) {
|
|
2101
|
+
const offsetRect = getBoundingClientRect(offsetParent);
|
|
2102
|
+
scale = getScale(offsetParent);
|
|
2103
|
+
offsets.x = offsetRect.x + offsetParent.clientLeft;
|
|
2104
|
+
offsets.y = offsetRect.y + offsetParent.clientTop;
|
|
2105
|
+
}
|
|
2106
|
+
}
|
|
2107
|
+
const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
|
|
2108
|
+
return {
|
|
2109
|
+
width: rect.width * scale.x,
|
|
2110
|
+
height: rect.height * scale.y,
|
|
2111
|
+
x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,
|
|
2112
|
+
y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y
|
|
2113
|
+
};
|
|
2114
|
+
}
|
|
2115
|
+
function getClientRects(element) {
|
|
2116
|
+
return Array.from(element.getClientRects());
|
|
2117
|
+
}
|
|
2118
|
+
function getDocumentRect(element) {
|
|
2119
|
+
const html = getDocumentElement(element);
|
|
2120
|
+
const scroll = getNodeScroll(element);
|
|
2121
|
+
const body = element.ownerDocument.body;
|
|
2122
|
+
const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);
|
|
2123
|
+
const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);
|
|
2124
|
+
let x = -scroll.scrollLeft + getWindowScrollBarX(element);
|
|
2125
|
+
const y = -scroll.scrollTop;
|
|
2126
|
+
if (getComputedStyle2(body).direction === "rtl") {
|
|
2127
|
+
x += max(html.clientWidth, body.clientWidth) - width;
|
|
2128
|
+
}
|
|
2129
|
+
return {
|
|
2130
|
+
width,
|
|
2131
|
+
height,
|
|
2132
|
+
x,
|
|
2133
|
+
y
|
|
2134
|
+
};
|
|
2135
|
+
}
|
|
2136
|
+
var SCROLLBAR_MAX = 25;
|
|
2137
|
+
function getViewportRect(element, strategy) {
|
|
2138
|
+
const win = getWindow(element);
|
|
2139
|
+
const html = getDocumentElement(element);
|
|
2140
|
+
const visualViewport = win.visualViewport;
|
|
2141
|
+
let width = html.clientWidth;
|
|
2142
|
+
let height = html.clientHeight;
|
|
2143
|
+
let x = 0;
|
|
2144
|
+
let y = 0;
|
|
2145
|
+
if (visualViewport) {
|
|
2146
|
+
width = visualViewport.width;
|
|
2147
|
+
height = visualViewport.height;
|
|
2148
|
+
const visualViewportBased = isWebKit();
|
|
2149
|
+
if (!visualViewportBased || visualViewportBased && strategy === "fixed") {
|
|
2150
|
+
x = visualViewport.offsetLeft;
|
|
2151
|
+
y = visualViewport.offsetTop;
|
|
2152
|
+
}
|
|
2153
|
+
}
|
|
2154
|
+
const windowScrollbarX = getWindowScrollBarX(html);
|
|
2155
|
+
if (windowScrollbarX <= 0) {
|
|
2156
|
+
const doc = html.ownerDocument;
|
|
2157
|
+
const body = doc.body;
|
|
2158
|
+
const bodyStyles = getComputedStyle(body);
|
|
2159
|
+
const bodyMarginInline = doc.compatMode === "CSS1Compat" ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;
|
|
2160
|
+
const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);
|
|
2161
|
+
if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {
|
|
2162
|
+
width -= clippingStableScrollbarWidth;
|
|
2163
|
+
}
|
|
2164
|
+
} else if (windowScrollbarX <= SCROLLBAR_MAX) {
|
|
2165
|
+
width += windowScrollbarX;
|
|
2166
|
+
}
|
|
2167
|
+
return {
|
|
2168
|
+
width,
|
|
2169
|
+
height,
|
|
2170
|
+
x,
|
|
2171
|
+
y
|
|
2172
|
+
};
|
|
2173
|
+
}
|
|
2174
|
+
var absoluteOrFixed = /* @__PURE__ */ new Set(["absolute", "fixed"]);
|
|
2175
|
+
function getInnerBoundingClientRect(element, strategy) {
|
|
2176
|
+
const clientRect = getBoundingClientRect(element, true, strategy === "fixed");
|
|
2177
|
+
const top = clientRect.top + element.clientTop;
|
|
2178
|
+
const left = clientRect.left + element.clientLeft;
|
|
2179
|
+
const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);
|
|
2180
|
+
const width = element.clientWidth * scale.x;
|
|
2181
|
+
const height = element.clientHeight * scale.y;
|
|
2182
|
+
const x = left * scale.x;
|
|
2183
|
+
const y = top * scale.y;
|
|
2184
|
+
return {
|
|
2185
|
+
width,
|
|
2186
|
+
height,
|
|
2187
|
+
x,
|
|
2188
|
+
y
|
|
2189
|
+
};
|
|
2190
|
+
}
|
|
2191
|
+
function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {
|
|
2192
|
+
let rect;
|
|
2193
|
+
if (clippingAncestor === "viewport") {
|
|
2194
|
+
rect = getViewportRect(element, strategy);
|
|
2195
|
+
} else if (clippingAncestor === "document") {
|
|
2196
|
+
rect = getDocumentRect(getDocumentElement(element));
|
|
2197
|
+
} else if (isElement(clippingAncestor)) {
|
|
2198
|
+
rect = getInnerBoundingClientRect(clippingAncestor, strategy);
|
|
2199
|
+
} else {
|
|
2200
|
+
const visualOffsets = getVisualOffsets(element);
|
|
2201
|
+
rect = {
|
|
2202
|
+
x: clippingAncestor.x - visualOffsets.x,
|
|
2203
|
+
y: clippingAncestor.y - visualOffsets.y,
|
|
2204
|
+
width: clippingAncestor.width,
|
|
2205
|
+
height: clippingAncestor.height
|
|
2206
|
+
};
|
|
2207
|
+
}
|
|
2208
|
+
return rectToClientRect(rect);
|
|
2209
|
+
}
|
|
2210
|
+
function hasFixedPositionAncestor(element, stopNode) {
|
|
2211
|
+
const parentNode = getParentNode(element);
|
|
2212
|
+
if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {
|
|
2213
|
+
return false;
|
|
2214
|
+
}
|
|
2215
|
+
return getComputedStyle2(parentNode).position === "fixed" || hasFixedPositionAncestor(parentNode, stopNode);
|
|
2216
|
+
}
|
|
2217
|
+
function getClippingElementAncestors(element, cache) {
|
|
2218
|
+
const cachedResult = cache.get(element);
|
|
2219
|
+
if (cachedResult) {
|
|
2220
|
+
return cachedResult;
|
|
2221
|
+
}
|
|
2222
|
+
let result = getOverflowAncestors(element, [], false).filter((el) => isElement(el) && getNodeName(el) !== "body");
|
|
2223
|
+
let currentContainingBlockComputedStyle = null;
|
|
2224
|
+
const elementIsFixed = getComputedStyle2(element).position === "fixed";
|
|
2225
|
+
let currentNode = elementIsFixed ? getParentNode(element) : element;
|
|
2226
|
+
while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {
|
|
2227
|
+
const computedStyle = getComputedStyle2(currentNode);
|
|
2228
|
+
const currentNodeIsContaining = isContainingBlock(currentNode);
|
|
2229
|
+
if (!currentNodeIsContaining && computedStyle.position === "fixed") {
|
|
2230
|
+
currentContainingBlockComputedStyle = null;
|
|
2231
|
+
}
|
|
2232
|
+
const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === "static" && !!currentContainingBlockComputedStyle && absoluteOrFixed.has(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
|
|
2233
|
+
if (shouldDropCurrentNode) {
|
|
2234
|
+
result = result.filter((ancestor) => ancestor !== currentNode);
|
|
2235
|
+
} else {
|
|
2236
|
+
currentContainingBlockComputedStyle = computedStyle;
|
|
2237
|
+
}
|
|
2238
|
+
currentNode = getParentNode(currentNode);
|
|
2239
|
+
}
|
|
2240
|
+
cache.set(element, result);
|
|
2241
|
+
return result;
|
|
2242
|
+
}
|
|
2243
|
+
function getClippingRect(_ref) {
|
|
2244
|
+
let {
|
|
2245
|
+
element,
|
|
2246
|
+
boundary,
|
|
2247
|
+
rootBoundary,
|
|
2248
|
+
strategy
|
|
2249
|
+
} = _ref;
|
|
2250
|
+
const elementClippingAncestors = boundary === "clippingAncestors" ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);
|
|
2251
|
+
const clippingAncestors = [...elementClippingAncestors, rootBoundary];
|
|
2252
|
+
const firstClippingAncestor = clippingAncestors[0];
|
|
2253
|
+
const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {
|
|
2254
|
+
const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);
|
|
2255
|
+
accRect.top = max(rect.top, accRect.top);
|
|
2256
|
+
accRect.right = min(rect.right, accRect.right);
|
|
2257
|
+
accRect.bottom = min(rect.bottom, accRect.bottom);
|
|
2258
|
+
accRect.left = max(rect.left, accRect.left);
|
|
2259
|
+
return accRect;
|
|
2260
|
+
}, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));
|
|
2261
|
+
return {
|
|
2262
|
+
width: clippingRect.right - clippingRect.left,
|
|
2263
|
+
height: clippingRect.bottom - clippingRect.top,
|
|
2264
|
+
x: clippingRect.left,
|
|
2265
|
+
y: clippingRect.top
|
|
2266
|
+
};
|
|
2267
|
+
}
|
|
2268
|
+
function getDimensions(element) {
|
|
2269
|
+
const {
|
|
2270
|
+
width,
|
|
2271
|
+
height
|
|
2272
|
+
} = getCssDimensions(element);
|
|
2273
|
+
return {
|
|
2274
|
+
width,
|
|
2275
|
+
height
|
|
2276
|
+
};
|
|
2277
|
+
}
|
|
2278
|
+
function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
|
|
2279
|
+
const isOffsetParentAnElement = isHTMLElement(offsetParent);
|
|
2280
|
+
const documentElement = getDocumentElement(offsetParent);
|
|
2281
|
+
const isFixed = strategy === "fixed";
|
|
2282
|
+
const rect = getBoundingClientRect(element, true, isFixed, offsetParent);
|
|
2283
|
+
let scroll = {
|
|
2284
|
+
scrollLeft: 0,
|
|
2285
|
+
scrollTop: 0
|
|
2286
|
+
};
|
|
2287
|
+
const offsets = createCoords(0);
|
|
2288
|
+
function setLeftRTLScrollbarOffset() {
|
|
2289
|
+
offsets.x = getWindowScrollBarX(documentElement);
|
|
2290
|
+
}
|
|
2291
|
+
if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
|
|
2292
|
+
if (getNodeName(offsetParent) !== "body" || isOverflowElement(documentElement)) {
|
|
2293
|
+
scroll = getNodeScroll(offsetParent);
|
|
2294
|
+
}
|
|
2295
|
+
if (isOffsetParentAnElement) {
|
|
2296
|
+
const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);
|
|
2297
|
+
offsets.x = offsetRect.x + offsetParent.clientLeft;
|
|
2298
|
+
offsets.y = offsetRect.y + offsetParent.clientTop;
|
|
2299
|
+
} else if (documentElement) {
|
|
2300
|
+
setLeftRTLScrollbarOffset();
|
|
2301
|
+
}
|
|
2302
|
+
}
|
|
2303
|
+
if (isFixed && !isOffsetParentAnElement && documentElement) {
|
|
2304
|
+
setLeftRTLScrollbarOffset();
|
|
2305
|
+
}
|
|
2306
|
+
const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);
|
|
2307
|
+
const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;
|
|
2308
|
+
const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;
|
|
2309
|
+
return {
|
|
2310
|
+
x,
|
|
2311
|
+
y,
|
|
2312
|
+
width: rect.width,
|
|
2313
|
+
height: rect.height
|
|
2314
|
+
};
|
|
2315
|
+
}
|
|
2316
|
+
function isStaticPositioned(element) {
|
|
2317
|
+
return getComputedStyle2(element).position === "static";
|
|
2318
|
+
}
|
|
2319
|
+
function getTrueOffsetParent(element, polyfill) {
|
|
2320
|
+
if (!isHTMLElement(element) || getComputedStyle2(element).position === "fixed") {
|
|
2321
|
+
return null;
|
|
2322
|
+
}
|
|
2323
|
+
if (polyfill) {
|
|
2324
|
+
return polyfill(element);
|
|
2325
|
+
}
|
|
2326
|
+
let rawOffsetParent = element.offsetParent;
|
|
2327
|
+
if (getDocumentElement(element) === rawOffsetParent) {
|
|
2328
|
+
rawOffsetParent = rawOffsetParent.ownerDocument.body;
|
|
2329
|
+
}
|
|
2330
|
+
return rawOffsetParent;
|
|
2331
|
+
}
|
|
2332
|
+
function getOffsetParent(element, polyfill) {
|
|
2333
|
+
const win = getWindow(element);
|
|
2334
|
+
if (isTopLayer(element)) {
|
|
2335
|
+
return win;
|
|
2336
|
+
}
|
|
2337
|
+
if (!isHTMLElement(element)) {
|
|
2338
|
+
let svgOffsetParent = getParentNode(element);
|
|
2339
|
+
while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {
|
|
2340
|
+
if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {
|
|
2341
|
+
return svgOffsetParent;
|
|
2342
|
+
}
|
|
2343
|
+
svgOffsetParent = getParentNode(svgOffsetParent);
|
|
2344
|
+
}
|
|
2345
|
+
return win;
|
|
2346
|
+
}
|
|
2347
|
+
let offsetParent = getTrueOffsetParent(element, polyfill);
|
|
2348
|
+
while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {
|
|
2349
|
+
offsetParent = getTrueOffsetParent(offsetParent, polyfill);
|
|
2350
|
+
}
|
|
2351
|
+
if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {
|
|
2352
|
+
return win;
|
|
2353
|
+
}
|
|
2354
|
+
return offsetParent || getContainingBlock(element) || win;
|
|
2355
|
+
}
|
|
2356
|
+
var getElementRects = async function(data) {
|
|
2357
|
+
const getOffsetParentFn = this.getOffsetParent || getOffsetParent;
|
|
2358
|
+
const getDimensionsFn = this.getDimensions;
|
|
2359
|
+
const floatingDimensions = await getDimensionsFn(data.floating);
|
|
2360
|
+
return {
|
|
2361
|
+
reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),
|
|
2362
|
+
floating: {
|
|
2363
|
+
x: 0,
|
|
2364
|
+
y: 0,
|
|
2365
|
+
width: floatingDimensions.width,
|
|
2366
|
+
height: floatingDimensions.height
|
|
2367
|
+
}
|
|
2368
|
+
};
|
|
2369
|
+
};
|
|
2370
|
+
function isRTL(element) {
|
|
2371
|
+
return getComputedStyle2(element).direction === "rtl";
|
|
2372
|
+
}
|
|
2373
|
+
var platform = {
|
|
2374
|
+
convertOffsetParentRelativeRectToViewportRelativeRect,
|
|
2375
|
+
getDocumentElement,
|
|
2376
|
+
getClippingRect,
|
|
2377
|
+
getOffsetParent,
|
|
2378
|
+
getElementRects,
|
|
2379
|
+
getClientRects,
|
|
2380
|
+
getDimensions,
|
|
2381
|
+
getScale,
|
|
2382
|
+
isElement,
|
|
2383
|
+
isRTL
|
|
2384
|
+
};
|
|
2385
|
+
function rectsAreEqual(a, b) {
|
|
2386
|
+
return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;
|
|
2387
|
+
}
|
|
2388
|
+
function observeMove(element, onMove) {
|
|
2389
|
+
let io = null;
|
|
2390
|
+
let timeoutId;
|
|
2391
|
+
const root = getDocumentElement(element);
|
|
2392
|
+
function cleanup() {
|
|
2393
|
+
var _io;
|
|
2394
|
+
clearTimeout(timeoutId);
|
|
2395
|
+
(_io = io) == null || _io.disconnect();
|
|
2396
|
+
io = null;
|
|
2397
|
+
}
|
|
2398
|
+
function refresh(skip, threshold) {
|
|
2399
|
+
if (skip === undefined) {
|
|
2400
|
+
skip = false;
|
|
2401
|
+
}
|
|
2402
|
+
if (threshold === undefined) {
|
|
2403
|
+
threshold = 1;
|
|
2404
|
+
}
|
|
2405
|
+
cleanup();
|
|
2406
|
+
const elementRectForRootMargin = element.getBoundingClientRect();
|
|
2407
|
+
const {
|
|
2408
|
+
left,
|
|
2409
|
+
top,
|
|
2410
|
+
width,
|
|
2411
|
+
height
|
|
2412
|
+
} = elementRectForRootMargin;
|
|
2413
|
+
if (!skip) {
|
|
2414
|
+
onMove();
|
|
2415
|
+
}
|
|
2416
|
+
if (!width || !height) {
|
|
2417
|
+
return;
|
|
2418
|
+
}
|
|
2419
|
+
const insetTop = floor(top);
|
|
2420
|
+
const insetRight = floor(root.clientWidth - (left + width));
|
|
2421
|
+
const insetBottom = floor(root.clientHeight - (top + height));
|
|
2422
|
+
const insetLeft = floor(left);
|
|
2423
|
+
const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px";
|
|
2424
|
+
const options = {
|
|
2425
|
+
rootMargin,
|
|
2426
|
+
threshold: max(0, min(1, threshold)) || 1
|
|
2427
|
+
};
|
|
2428
|
+
let isFirstUpdate = true;
|
|
2429
|
+
function handleObserve(entries) {
|
|
2430
|
+
const ratio = entries[0].intersectionRatio;
|
|
2431
|
+
if (ratio !== threshold) {
|
|
2432
|
+
if (!isFirstUpdate) {
|
|
2433
|
+
return refresh();
|
|
2434
|
+
}
|
|
2435
|
+
if (!ratio) {
|
|
2436
|
+
timeoutId = setTimeout(() => {
|
|
2437
|
+
refresh(false, 0.0000001);
|
|
2438
|
+
}, 1000);
|
|
2439
|
+
} else {
|
|
2440
|
+
refresh(false, ratio);
|
|
2441
|
+
}
|
|
2442
|
+
}
|
|
2443
|
+
if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {
|
|
2444
|
+
refresh();
|
|
2445
|
+
}
|
|
2446
|
+
isFirstUpdate = false;
|
|
2447
|
+
}
|
|
2448
|
+
try {
|
|
2449
|
+
io = new IntersectionObserver(handleObserve, {
|
|
2450
|
+
...options,
|
|
2451
|
+
root: root.ownerDocument
|
|
2452
|
+
});
|
|
2453
|
+
} catch (_e) {
|
|
2454
|
+
io = new IntersectionObserver(handleObserve, options);
|
|
2455
|
+
}
|
|
2456
|
+
io.observe(element);
|
|
2457
|
+
}
|
|
2458
|
+
refresh(true);
|
|
2459
|
+
return cleanup;
|
|
2460
|
+
}
|
|
2461
|
+
function autoUpdate(reference, floating, update, options) {
|
|
2462
|
+
if (options === undefined) {
|
|
2463
|
+
options = {};
|
|
2464
|
+
}
|
|
2465
|
+
const {
|
|
2466
|
+
ancestorScroll = true,
|
|
2467
|
+
ancestorResize = true,
|
|
2468
|
+
elementResize = typeof ResizeObserver === "function",
|
|
2469
|
+
layoutShift = typeof IntersectionObserver === "function",
|
|
2470
|
+
animationFrame = false
|
|
2471
|
+
} = options;
|
|
2472
|
+
const referenceEl = unwrapElement(reference);
|
|
2473
|
+
const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...getOverflowAncestors(floating)] : [];
|
|
2474
|
+
ancestors.forEach((ancestor) => {
|
|
2475
|
+
ancestorScroll && ancestor.addEventListener("scroll", update, {
|
|
2476
|
+
passive: true
|
|
2477
|
+
});
|
|
2478
|
+
ancestorResize && ancestor.addEventListener("resize", update);
|
|
2479
|
+
});
|
|
2480
|
+
const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;
|
|
2481
|
+
let reobserveFrame = -1;
|
|
2482
|
+
let resizeObserver = null;
|
|
2483
|
+
if (elementResize) {
|
|
2484
|
+
resizeObserver = new ResizeObserver((_ref) => {
|
|
2485
|
+
let [firstEntry] = _ref;
|
|
2486
|
+
if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {
|
|
2487
|
+
resizeObserver.unobserve(floating);
|
|
2488
|
+
cancelAnimationFrame(reobserveFrame);
|
|
2489
|
+
reobserveFrame = requestAnimationFrame(() => {
|
|
2490
|
+
var _resizeObserver;
|
|
2491
|
+
(_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);
|
|
2492
|
+
});
|
|
2493
|
+
}
|
|
2494
|
+
update();
|
|
2495
|
+
});
|
|
2496
|
+
if (referenceEl && !animationFrame) {
|
|
2497
|
+
resizeObserver.observe(referenceEl);
|
|
2498
|
+
}
|
|
2499
|
+
resizeObserver.observe(floating);
|
|
2500
|
+
}
|
|
2501
|
+
let frameId;
|
|
2502
|
+
let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;
|
|
2503
|
+
if (animationFrame) {
|
|
2504
|
+
frameLoop();
|
|
2505
|
+
}
|
|
2506
|
+
function frameLoop() {
|
|
2507
|
+
const nextRefRect = getBoundingClientRect(reference);
|
|
2508
|
+
if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {
|
|
2509
|
+
update();
|
|
2510
|
+
}
|
|
2511
|
+
prevRefRect = nextRefRect;
|
|
2512
|
+
frameId = requestAnimationFrame(frameLoop);
|
|
2513
|
+
}
|
|
2514
|
+
update();
|
|
2515
|
+
return () => {
|
|
2516
|
+
var _resizeObserver2;
|
|
2517
|
+
ancestors.forEach((ancestor) => {
|
|
2518
|
+
ancestorScroll && ancestor.removeEventListener("scroll", update);
|
|
2519
|
+
ancestorResize && ancestor.removeEventListener("resize", update);
|
|
2520
|
+
});
|
|
2521
|
+
cleanupIo == null || cleanupIo();
|
|
2522
|
+
(_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();
|
|
2523
|
+
resizeObserver = null;
|
|
2524
|
+
if (animationFrame) {
|
|
2525
|
+
cancelAnimationFrame(frameId);
|
|
2526
|
+
}
|
|
2527
|
+
};
|
|
2528
|
+
}
|
|
2529
|
+
var offset2 = offset;
|
|
2530
|
+
var shift2 = shift;
|
|
2531
|
+
var flip2 = flip;
|
|
2532
|
+
var size2 = size;
|
|
2533
|
+
var hide2 = hide;
|
|
2534
|
+
var arrow2 = arrow;
|
|
2535
|
+
var limitShift2 = limitShift;
|
|
2536
|
+
var computePosition2 = (reference, floating, options) => {
|
|
2537
|
+
const cache = new Map;
|
|
2538
|
+
const mergedOptions = {
|
|
2539
|
+
platform,
|
|
2540
|
+
...options
|
|
2541
|
+
};
|
|
2542
|
+
const platformWithCache = {
|
|
2543
|
+
...mergedOptions.platform,
|
|
2544
|
+
_c: cache
|
|
2545
|
+
};
|
|
2546
|
+
return computePosition(reference, floating, {
|
|
2547
|
+
...mergedOptions,
|
|
2548
|
+
platform: platformWithCache
|
|
2549
|
+
});
|
|
2550
|
+
};
|
|
2551
|
+
|
|
2552
|
+
// ../../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs
|
|
2553
|
+
import * as React10 from "react";
|
|
2554
|
+
import { useLayoutEffect as useLayoutEffect3 } from "react";
|
|
2555
|
+
import * as ReactDOM2 from "react-dom";
|
|
2556
|
+
var isClient = typeof document !== "undefined";
|
|
2557
|
+
var noop = function noop2() {};
|
|
2558
|
+
var index = isClient ? useLayoutEffect3 : noop;
|
|
2559
|
+
function deepEqual(a, b) {
|
|
2560
|
+
if (a === b) {
|
|
2561
|
+
return true;
|
|
2562
|
+
}
|
|
2563
|
+
if (typeof a !== typeof b) {
|
|
2564
|
+
return false;
|
|
2565
|
+
}
|
|
2566
|
+
if (typeof a === "function" && a.toString() === b.toString()) {
|
|
2567
|
+
return true;
|
|
2568
|
+
}
|
|
2569
|
+
let length;
|
|
2570
|
+
let i;
|
|
2571
|
+
let keys;
|
|
2572
|
+
if (a && b && typeof a === "object") {
|
|
2573
|
+
if (Array.isArray(a)) {
|
|
2574
|
+
length = a.length;
|
|
2575
|
+
if (length !== b.length)
|
|
2576
|
+
return false;
|
|
2577
|
+
for (i = length;i-- !== 0; ) {
|
|
2578
|
+
if (!deepEqual(a[i], b[i])) {
|
|
2579
|
+
return false;
|
|
2580
|
+
}
|
|
2581
|
+
}
|
|
2582
|
+
return true;
|
|
2583
|
+
}
|
|
2584
|
+
keys = Object.keys(a);
|
|
2585
|
+
length = keys.length;
|
|
2586
|
+
if (length !== Object.keys(b).length) {
|
|
2587
|
+
return false;
|
|
2588
|
+
}
|
|
2589
|
+
for (i = length;i-- !== 0; ) {
|
|
2590
|
+
if (!{}.hasOwnProperty.call(b, keys[i])) {
|
|
2591
|
+
return false;
|
|
2592
|
+
}
|
|
2593
|
+
}
|
|
2594
|
+
for (i = length;i-- !== 0; ) {
|
|
2595
|
+
const key = keys[i];
|
|
2596
|
+
if (key === "_owner" && a.$$typeof) {
|
|
2597
|
+
continue;
|
|
2598
|
+
}
|
|
2599
|
+
if (!deepEqual(a[key], b[key])) {
|
|
2600
|
+
return false;
|
|
2601
|
+
}
|
|
2602
|
+
}
|
|
2603
|
+
return true;
|
|
2604
|
+
}
|
|
2605
|
+
return a !== a && b !== b;
|
|
2606
|
+
}
|
|
2607
|
+
function getDPR(element) {
|
|
2608
|
+
if (typeof window === "undefined") {
|
|
2609
|
+
return 1;
|
|
2610
|
+
}
|
|
2611
|
+
const win = element.ownerDocument.defaultView || window;
|
|
2612
|
+
return win.devicePixelRatio || 1;
|
|
2613
|
+
}
|
|
2614
|
+
function roundByDPR(element, value) {
|
|
2615
|
+
const dpr = getDPR(element);
|
|
2616
|
+
return Math.round(value * dpr) / dpr;
|
|
2617
|
+
}
|
|
2618
|
+
function useLatestRef(value) {
|
|
2619
|
+
const ref = React10.useRef(value);
|
|
2620
|
+
index(() => {
|
|
2621
|
+
ref.current = value;
|
|
2622
|
+
});
|
|
2623
|
+
return ref;
|
|
2624
|
+
}
|
|
2625
|
+
function useFloating(options) {
|
|
2626
|
+
if (options === undefined) {
|
|
2627
|
+
options = {};
|
|
2628
|
+
}
|
|
2629
|
+
const {
|
|
2630
|
+
placement = "bottom",
|
|
2631
|
+
strategy = "absolute",
|
|
2632
|
+
middleware = [],
|
|
2633
|
+
platform: platform2,
|
|
2634
|
+
elements: {
|
|
2635
|
+
reference: externalReference,
|
|
2636
|
+
floating: externalFloating
|
|
2637
|
+
} = {},
|
|
2638
|
+
transform = true,
|
|
2639
|
+
whileElementsMounted,
|
|
2640
|
+
open
|
|
2641
|
+
} = options;
|
|
2642
|
+
const [data, setData] = React10.useState({
|
|
2643
|
+
x: 0,
|
|
2644
|
+
y: 0,
|
|
2645
|
+
strategy,
|
|
2646
|
+
placement,
|
|
2647
|
+
middlewareData: {},
|
|
2648
|
+
isPositioned: false
|
|
2649
|
+
});
|
|
2650
|
+
const [latestMiddleware, setLatestMiddleware] = React10.useState(middleware);
|
|
2651
|
+
if (!deepEqual(latestMiddleware, middleware)) {
|
|
2652
|
+
setLatestMiddleware(middleware);
|
|
2653
|
+
}
|
|
2654
|
+
const [_reference, _setReference] = React10.useState(null);
|
|
2655
|
+
const [_floating, _setFloating] = React10.useState(null);
|
|
2656
|
+
const setReference = React10.useCallback((node) => {
|
|
2657
|
+
if (node !== referenceRef.current) {
|
|
2658
|
+
referenceRef.current = node;
|
|
2659
|
+
_setReference(node);
|
|
2660
|
+
}
|
|
2661
|
+
}, []);
|
|
2662
|
+
const setFloating = React10.useCallback((node) => {
|
|
2663
|
+
if (node !== floatingRef.current) {
|
|
2664
|
+
floatingRef.current = node;
|
|
2665
|
+
_setFloating(node);
|
|
2666
|
+
}
|
|
2667
|
+
}, []);
|
|
2668
|
+
const referenceEl = externalReference || _reference;
|
|
2669
|
+
const floatingEl = externalFloating || _floating;
|
|
2670
|
+
const referenceRef = React10.useRef(null);
|
|
2671
|
+
const floatingRef = React10.useRef(null);
|
|
2672
|
+
const dataRef = React10.useRef(data);
|
|
2673
|
+
const hasWhileElementsMounted = whileElementsMounted != null;
|
|
2674
|
+
const whileElementsMountedRef = useLatestRef(whileElementsMounted);
|
|
2675
|
+
const platformRef = useLatestRef(platform2);
|
|
2676
|
+
const openRef = useLatestRef(open);
|
|
2677
|
+
const update = React10.useCallback(() => {
|
|
2678
|
+
if (!referenceRef.current || !floatingRef.current) {
|
|
2679
|
+
return;
|
|
2680
|
+
}
|
|
2681
|
+
const config = {
|
|
2682
|
+
placement,
|
|
2683
|
+
strategy,
|
|
2684
|
+
middleware: latestMiddleware
|
|
2685
|
+
};
|
|
2686
|
+
if (platformRef.current) {
|
|
2687
|
+
config.platform = platformRef.current;
|
|
2688
|
+
}
|
|
2689
|
+
computePosition2(referenceRef.current, floatingRef.current, config).then((data2) => {
|
|
2690
|
+
const fullData = {
|
|
2691
|
+
...data2,
|
|
2692
|
+
isPositioned: openRef.current !== false
|
|
2693
|
+
};
|
|
2694
|
+
if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {
|
|
2695
|
+
dataRef.current = fullData;
|
|
2696
|
+
ReactDOM2.flushSync(() => {
|
|
2697
|
+
setData(fullData);
|
|
2698
|
+
});
|
|
2699
|
+
}
|
|
2700
|
+
});
|
|
2701
|
+
}, [latestMiddleware, placement, strategy, platformRef, openRef]);
|
|
2702
|
+
index(() => {
|
|
2703
|
+
if (open === false && dataRef.current.isPositioned) {
|
|
2704
|
+
dataRef.current.isPositioned = false;
|
|
2705
|
+
setData((data2) => ({
|
|
2706
|
+
...data2,
|
|
2707
|
+
isPositioned: false
|
|
2708
|
+
}));
|
|
2709
|
+
}
|
|
2710
|
+
}, [open]);
|
|
2711
|
+
const isMountedRef = React10.useRef(false);
|
|
2712
|
+
index(() => {
|
|
2713
|
+
isMountedRef.current = true;
|
|
2714
|
+
return () => {
|
|
2715
|
+
isMountedRef.current = false;
|
|
2716
|
+
};
|
|
2717
|
+
}, []);
|
|
2718
|
+
index(() => {
|
|
2719
|
+
if (referenceEl)
|
|
2720
|
+
referenceRef.current = referenceEl;
|
|
2721
|
+
if (floatingEl)
|
|
2722
|
+
floatingRef.current = floatingEl;
|
|
2723
|
+
if (referenceEl && floatingEl) {
|
|
2724
|
+
if (whileElementsMountedRef.current) {
|
|
2725
|
+
return whileElementsMountedRef.current(referenceEl, floatingEl, update);
|
|
2726
|
+
}
|
|
2727
|
+
update();
|
|
2728
|
+
}
|
|
2729
|
+
}, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);
|
|
2730
|
+
const refs = React10.useMemo(() => ({
|
|
2731
|
+
reference: referenceRef,
|
|
2732
|
+
floating: floatingRef,
|
|
2733
|
+
setReference,
|
|
2734
|
+
setFloating
|
|
2735
|
+
}), [setReference, setFloating]);
|
|
2736
|
+
const elements = React10.useMemo(() => ({
|
|
2737
|
+
reference: referenceEl,
|
|
2738
|
+
floating: floatingEl
|
|
2739
|
+
}), [referenceEl, floatingEl]);
|
|
2740
|
+
const floatingStyles = React10.useMemo(() => {
|
|
2741
|
+
const initialStyles = {
|
|
2742
|
+
position: strategy,
|
|
2743
|
+
left: 0,
|
|
2744
|
+
top: 0
|
|
2745
|
+
};
|
|
2746
|
+
if (!elements.floating) {
|
|
2747
|
+
return initialStyles;
|
|
2748
|
+
}
|
|
2749
|
+
const x = roundByDPR(elements.floating, data.x);
|
|
2750
|
+
const y = roundByDPR(elements.floating, data.y);
|
|
2751
|
+
if (transform) {
|
|
2752
|
+
return {
|
|
2753
|
+
...initialStyles,
|
|
2754
|
+
transform: "translate(" + x + "px, " + y + "px)",
|
|
2755
|
+
...getDPR(elements.floating) >= 1.5 && {
|
|
2756
|
+
willChange: "transform"
|
|
2757
|
+
}
|
|
2758
|
+
};
|
|
2759
|
+
}
|
|
2760
|
+
return {
|
|
2761
|
+
position: strategy,
|
|
2762
|
+
left: x,
|
|
2763
|
+
top: y
|
|
2764
|
+
};
|
|
2765
|
+
}, [strategy, transform, elements.floating, data.x, data.y]);
|
|
2766
|
+
return React10.useMemo(() => ({
|
|
2767
|
+
...data,
|
|
2768
|
+
update,
|
|
2769
|
+
refs,
|
|
2770
|
+
elements,
|
|
2771
|
+
floatingStyles
|
|
2772
|
+
}), [data, update, refs, elements, floatingStyles]);
|
|
2773
|
+
}
|
|
2774
|
+
var arrow$1 = (options) => {
|
|
2775
|
+
function isRef(value) {
|
|
2776
|
+
return {}.hasOwnProperty.call(value, "current");
|
|
2777
|
+
}
|
|
2778
|
+
return {
|
|
2779
|
+
name: "arrow",
|
|
2780
|
+
options,
|
|
2781
|
+
fn(state) {
|
|
2782
|
+
const {
|
|
2783
|
+
element,
|
|
2784
|
+
padding
|
|
2785
|
+
} = typeof options === "function" ? options(state) : options;
|
|
2786
|
+
if (element && isRef(element)) {
|
|
2787
|
+
if (element.current != null) {
|
|
2788
|
+
return arrow2({
|
|
2789
|
+
element: element.current,
|
|
2790
|
+
padding
|
|
2791
|
+
}).fn(state);
|
|
2792
|
+
}
|
|
2793
|
+
return {};
|
|
2794
|
+
}
|
|
2795
|
+
if (element) {
|
|
2796
|
+
return arrow2({
|
|
2797
|
+
element,
|
|
2798
|
+
padding
|
|
2799
|
+
}).fn(state);
|
|
2800
|
+
}
|
|
2801
|
+
return {};
|
|
2802
|
+
}
|
|
2803
|
+
};
|
|
2804
|
+
};
|
|
2805
|
+
var offset3 = (options, deps) => ({
|
|
2806
|
+
...offset2(options),
|
|
2807
|
+
options: [options, deps]
|
|
2808
|
+
});
|
|
2809
|
+
var shift3 = (options, deps) => ({
|
|
2810
|
+
...shift2(options),
|
|
2811
|
+
options: [options, deps]
|
|
2812
|
+
});
|
|
2813
|
+
var limitShift3 = (options, deps) => ({
|
|
2814
|
+
...limitShift2(options),
|
|
2815
|
+
options: [options, deps]
|
|
2816
|
+
});
|
|
2817
|
+
var flip3 = (options, deps) => ({
|
|
2818
|
+
...flip2(options),
|
|
2819
|
+
options: [options, deps]
|
|
2820
|
+
});
|
|
2821
|
+
var size3 = (options, deps) => ({
|
|
2822
|
+
...size2(options),
|
|
2823
|
+
options: [options, deps]
|
|
2824
|
+
});
|
|
2825
|
+
var hide3 = (options, deps) => ({
|
|
2826
|
+
...hide2(options),
|
|
2827
|
+
options: [options, deps]
|
|
2828
|
+
});
|
|
2829
|
+
var arrow3 = (options, deps) => ({
|
|
2830
|
+
...arrow$1(options),
|
|
2831
|
+
options: [options, deps]
|
|
2832
|
+
});
|
|
2833
|
+
|
|
2834
|
+
// ../../node_modules/@radix-ui/react-arrow/dist/index.mjs
|
|
2835
|
+
import * as React12 from "react";
|
|
2836
|
+
|
|
2837
|
+
// ../../node_modules/@radix-ui/react-arrow/node_modules/@radix-ui/react-primitive/dist/index.mjs
|
|
2838
|
+
import * as React11 from "react";
|
|
2839
|
+
import * as ReactDOM3 from "react-dom";
|
|
2840
|
+
import { createSlot as createSlot2 } from "@radix-ui/react-slot";
|
|
2841
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
2842
|
+
var NODES2 = [
|
|
2843
|
+
"a",
|
|
2844
|
+
"button",
|
|
2845
|
+
"div",
|
|
2846
|
+
"form",
|
|
2847
|
+
"h2",
|
|
2848
|
+
"h3",
|
|
2849
|
+
"img",
|
|
2850
|
+
"input",
|
|
2851
|
+
"label",
|
|
2852
|
+
"li",
|
|
2853
|
+
"nav",
|
|
2854
|
+
"ol",
|
|
2855
|
+
"p",
|
|
2856
|
+
"select",
|
|
2857
|
+
"span",
|
|
2858
|
+
"svg",
|
|
2859
|
+
"ul"
|
|
2860
|
+
];
|
|
2861
|
+
var Primitive2 = NODES2.reduce((primitive, node) => {
|
|
2862
|
+
const Slot = createSlot2(`Primitive.${node}`);
|
|
2863
|
+
const Node2 = React11.forwardRef((props, forwardedRef) => {
|
|
2864
|
+
const { asChild, ...primitiveProps } = props;
|
|
2865
|
+
const Comp = asChild ? Slot : node;
|
|
2866
|
+
if (typeof window !== "undefined") {
|
|
2867
|
+
window[Symbol.for("radix-ui")] = true;
|
|
2868
|
+
}
|
|
2869
|
+
return /* @__PURE__ */ jsx18(Comp, { ...primitiveProps, ref: forwardedRef });
|
|
2870
|
+
});
|
|
2871
|
+
Node2.displayName = `Primitive.${node}`;
|
|
2872
|
+
return { ...primitive, [node]: Node2 };
|
|
2873
|
+
}, {});
|
|
2874
|
+
|
|
2875
|
+
// ../../node_modules/@radix-ui/react-arrow/dist/index.mjs
|
|
2876
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
2877
|
+
var NAME = "Arrow";
|
|
2878
|
+
var Arrow = React12.forwardRef((props, forwardedRef) => {
|
|
2879
|
+
const { children, width = 10, height = 5, ...arrowProps } = props;
|
|
2880
|
+
return /* @__PURE__ */ jsx19(Primitive2.svg, {
|
|
2881
|
+
...arrowProps,
|
|
2882
|
+
ref: forwardedRef,
|
|
2883
|
+
width,
|
|
2884
|
+
height,
|
|
2885
|
+
viewBox: "0 0 30 10",
|
|
2886
|
+
preserveAspectRatio: "none",
|
|
2887
|
+
children: props.asChild ? children : /* @__PURE__ */ jsx19("polygon", { points: "0,0 30,0 15,10" })
|
|
2888
|
+
});
|
|
2889
|
+
});
|
|
2890
|
+
Arrow.displayName = NAME;
|
|
2891
|
+
var Root2 = Arrow;
|
|
2892
|
+
|
|
2893
|
+
// ../../node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-context/dist/index.mjs
|
|
2894
|
+
import * as React13 from "react";
|
|
2895
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
2896
|
+
function createContextScope2(scopeName, createContextScopeDeps = []) {
|
|
2897
|
+
let defaultContexts = [];
|
|
2898
|
+
function createContext32(rootComponentName, defaultContext) {
|
|
2899
|
+
const BaseContext = React13.createContext(defaultContext);
|
|
2900
|
+
const index2 = defaultContexts.length;
|
|
2901
|
+
defaultContexts = [...defaultContexts, defaultContext];
|
|
2902
|
+
const Provider = (props) => {
|
|
2903
|
+
const { scope, children, ...context } = props;
|
|
2904
|
+
const Context = scope?.[scopeName]?.[index2] || BaseContext;
|
|
2905
|
+
const value = React13.useMemo(() => context, Object.values(context));
|
|
2906
|
+
return /* @__PURE__ */ jsx20(Context.Provider, { value, children });
|
|
2907
|
+
};
|
|
2908
|
+
Provider.displayName = rootComponentName + "Provider";
|
|
2909
|
+
function useContext22(consumerName, scope) {
|
|
2910
|
+
const Context = scope?.[scopeName]?.[index2] || BaseContext;
|
|
2911
|
+
const context = React13.useContext(Context);
|
|
2912
|
+
if (context)
|
|
2913
|
+
return context;
|
|
2914
|
+
if (defaultContext !== undefined)
|
|
2915
|
+
return defaultContext;
|
|
2916
|
+
throw new Error(`\`${consumerName}\` must be used within \`${rootComponentName}\``);
|
|
2917
|
+
}
|
|
2918
|
+
return [Provider, useContext22];
|
|
2919
|
+
}
|
|
2920
|
+
const createScope = () => {
|
|
2921
|
+
const scopeContexts = defaultContexts.map((defaultContext) => {
|
|
2922
|
+
return React13.createContext(defaultContext);
|
|
2923
|
+
});
|
|
2924
|
+
return function useScope(scope) {
|
|
2925
|
+
const contexts = scope?.[scopeName] || scopeContexts;
|
|
2926
|
+
return React13.useMemo(() => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }), [scope, contexts]);
|
|
2927
|
+
};
|
|
2928
|
+
};
|
|
2929
|
+
createScope.scopeName = scopeName;
|
|
2930
|
+
return [createContext32, composeContextScopes2(createScope, ...createContextScopeDeps)];
|
|
2931
|
+
}
|
|
2932
|
+
function composeContextScopes2(...scopes) {
|
|
2933
|
+
const baseScope = scopes[0];
|
|
2934
|
+
if (scopes.length === 1)
|
|
2935
|
+
return baseScope;
|
|
2936
|
+
const createScope = () => {
|
|
2937
|
+
const scopeHooks = scopes.map((createScope2) => ({
|
|
2938
|
+
useScope: createScope2(),
|
|
2939
|
+
scopeName: createScope2.scopeName
|
|
2940
|
+
}));
|
|
2941
|
+
return function useComposedScopes(overrideScopes) {
|
|
2942
|
+
const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {
|
|
2943
|
+
const scopeProps = useScope(overrideScopes);
|
|
2944
|
+
const currentScope = scopeProps[`__scope${scopeName}`];
|
|
2945
|
+
return { ...nextScopes2, ...currentScope };
|
|
2946
|
+
}, {});
|
|
2947
|
+
return React13.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);
|
|
2948
|
+
};
|
|
2949
|
+
};
|
|
2950
|
+
createScope.scopeName = baseScope.scopeName;
|
|
2951
|
+
return createScope;
|
|
2952
|
+
}
|
|
2953
|
+
|
|
2954
|
+
// ../../node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-primitive/dist/index.mjs
|
|
2955
|
+
import * as React14 from "react";
|
|
2956
|
+
import * as ReactDOM4 from "react-dom";
|
|
2957
|
+
import { createSlot as createSlot3 } from "@radix-ui/react-slot";
|
|
2958
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
2959
|
+
var NODES3 = [
|
|
2960
|
+
"a",
|
|
2961
|
+
"button",
|
|
2962
|
+
"div",
|
|
2963
|
+
"form",
|
|
2964
|
+
"h2",
|
|
2965
|
+
"h3",
|
|
2966
|
+
"img",
|
|
2967
|
+
"input",
|
|
2968
|
+
"label",
|
|
2969
|
+
"li",
|
|
2970
|
+
"nav",
|
|
2971
|
+
"ol",
|
|
2972
|
+
"p",
|
|
2973
|
+
"select",
|
|
2974
|
+
"span",
|
|
2975
|
+
"svg",
|
|
2976
|
+
"ul"
|
|
2977
|
+
];
|
|
2978
|
+
var Primitive3 = NODES3.reduce((primitive, node) => {
|
|
2979
|
+
const Slot = createSlot3(`Primitive.${node}`);
|
|
2980
|
+
const Node2 = React14.forwardRef((props, forwardedRef) => {
|
|
2981
|
+
const { asChild, ...primitiveProps } = props;
|
|
2982
|
+
const Comp = asChild ? Slot : node;
|
|
2983
|
+
if (typeof window !== "undefined") {
|
|
2984
|
+
window[Symbol.for("radix-ui")] = true;
|
|
2985
|
+
}
|
|
2986
|
+
return /* @__PURE__ */ jsx21(Comp, { ...primitiveProps, ref: forwardedRef });
|
|
2987
|
+
});
|
|
2988
|
+
Node2.displayName = `Primitive.${node}`;
|
|
2989
|
+
return { ...primitive, [node]: Node2 };
|
|
2990
|
+
}, {});
|
|
2991
|
+
|
|
2992
|
+
// ../../node_modules/@radix-ui/react-use-size/dist/index.mjs
|
|
2993
|
+
import * as React15 from "react";
|
|
2994
|
+
function useSize(element) {
|
|
2995
|
+
const [size4, setSize] = React15.useState(undefined);
|
|
2996
|
+
useLayoutEffect2(() => {
|
|
2997
|
+
if (element) {
|
|
2998
|
+
setSize({ width: element.offsetWidth, height: element.offsetHeight });
|
|
2999
|
+
const resizeObserver = new ResizeObserver((entries) => {
|
|
3000
|
+
if (!Array.isArray(entries)) {
|
|
3001
|
+
return;
|
|
3002
|
+
}
|
|
3003
|
+
if (!entries.length) {
|
|
3004
|
+
return;
|
|
3005
|
+
}
|
|
3006
|
+
const entry = entries[0];
|
|
3007
|
+
let width;
|
|
3008
|
+
let height;
|
|
3009
|
+
if ("borderBoxSize" in entry) {
|
|
3010
|
+
const borderSizeEntry = entry["borderBoxSize"];
|
|
3011
|
+
const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;
|
|
3012
|
+
width = borderSize["inlineSize"];
|
|
3013
|
+
height = borderSize["blockSize"];
|
|
3014
|
+
} else {
|
|
3015
|
+
width = element.offsetWidth;
|
|
3016
|
+
height = element.offsetHeight;
|
|
3017
|
+
}
|
|
3018
|
+
setSize({ width, height });
|
|
3019
|
+
});
|
|
3020
|
+
resizeObserver.observe(element, { box: "border-box" });
|
|
3021
|
+
return () => resizeObserver.unobserve(element);
|
|
3022
|
+
} else {
|
|
3023
|
+
setSize(undefined);
|
|
3024
|
+
}
|
|
3025
|
+
}, [element]);
|
|
3026
|
+
return size4;
|
|
3027
|
+
}
|
|
3028
|
+
|
|
3029
|
+
// ../../node_modules/@radix-ui/react-popper/dist/index.mjs
|
|
3030
|
+
import { jsx as jsx22 } from "react/jsx-runtime";
|
|
3031
|
+
|
|
3032
|
+
var POPPER_NAME = "Popper";
|
|
3033
|
+
var [createPopperContext, createPopperScope] = createContextScope2(POPPER_NAME);
|
|
3034
|
+
var [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);
|
|
3035
|
+
var Popper = (props) => {
|
|
3036
|
+
const { __scopePopper, children } = props;
|
|
3037
|
+
const [anchor, setAnchor] = React16.useState(null);
|
|
3038
|
+
return /* @__PURE__ */ jsx22(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });
|
|
3039
|
+
};
|
|
3040
|
+
Popper.displayName = POPPER_NAME;
|
|
3041
|
+
var ANCHOR_NAME = "PopperAnchor";
|
|
3042
|
+
var PopperAnchor = React16.forwardRef((props, forwardedRef) => {
|
|
3043
|
+
const { __scopePopper, virtualRef, ...anchorProps } = props;
|
|
3044
|
+
const context = usePopperContext(ANCHOR_NAME, __scopePopper);
|
|
3045
|
+
const ref = React16.useRef(null);
|
|
3046
|
+
const composedRefs = useComposedRefs(forwardedRef, ref);
|
|
3047
|
+
const anchorRef = React16.useRef(null);
|
|
3048
|
+
React16.useEffect(() => {
|
|
3049
|
+
const previousAnchor = anchorRef.current;
|
|
3050
|
+
anchorRef.current = virtualRef?.current || ref.current;
|
|
3051
|
+
if (previousAnchor !== anchorRef.current) {
|
|
3052
|
+
context.onAnchorChange(anchorRef.current);
|
|
3053
|
+
}
|
|
3054
|
+
});
|
|
3055
|
+
return virtualRef ? null : /* @__PURE__ */ jsx22(Primitive3.div, { ...anchorProps, ref: composedRefs });
|
|
3056
|
+
});
|
|
3057
|
+
PopperAnchor.displayName = ANCHOR_NAME;
|
|
3058
|
+
var CONTENT_NAME = "PopperContent";
|
|
3059
|
+
var [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);
|
|
3060
|
+
var PopperContent = React16.forwardRef((props, forwardedRef) => {
|
|
3061
|
+
const {
|
|
3062
|
+
__scopePopper,
|
|
3063
|
+
side = "bottom",
|
|
3064
|
+
sideOffset = 0,
|
|
3065
|
+
align = "center",
|
|
3066
|
+
alignOffset = 0,
|
|
3067
|
+
arrowPadding = 0,
|
|
3068
|
+
avoidCollisions = true,
|
|
3069
|
+
collisionBoundary = [],
|
|
3070
|
+
collisionPadding: collisionPaddingProp = 0,
|
|
3071
|
+
sticky = "partial",
|
|
3072
|
+
hideWhenDetached = false,
|
|
3073
|
+
updatePositionStrategy = "optimized",
|
|
3074
|
+
onPlaced,
|
|
3075
|
+
...contentProps
|
|
3076
|
+
} = props;
|
|
3077
|
+
const context = usePopperContext(CONTENT_NAME, __scopePopper);
|
|
3078
|
+
const [content, setContent] = React16.useState(null);
|
|
3079
|
+
const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));
|
|
3080
|
+
const [arrow4, setArrow] = React16.useState(null);
|
|
3081
|
+
const arrowSize = useSize(arrow4);
|
|
3082
|
+
const arrowWidth = arrowSize?.width ?? 0;
|
|
3083
|
+
const arrowHeight = arrowSize?.height ?? 0;
|
|
3084
|
+
const desiredPlacement = side + (align !== "center" ? "-" + align : "");
|
|
3085
|
+
const collisionPadding = typeof collisionPaddingProp === "number" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };
|
|
3086
|
+
const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];
|
|
3087
|
+
const hasExplicitBoundaries = boundary.length > 0;
|
|
3088
|
+
const detectOverflowOptions = {
|
|
3089
|
+
padding: collisionPadding,
|
|
3090
|
+
boundary: boundary.filter(isNotNull),
|
|
3091
|
+
altBoundary: hasExplicitBoundaries
|
|
3092
|
+
};
|
|
3093
|
+
const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({
|
|
3094
|
+
strategy: "fixed",
|
|
3095
|
+
placement: desiredPlacement,
|
|
3096
|
+
whileElementsMounted: (...args) => {
|
|
3097
|
+
const cleanup = autoUpdate(...args, {
|
|
3098
|
+
animationFrame: updatePositionStrategy === "always"
|
|
3099
|
+
});
|
|
3100
|
+
return cleanup;
|
|
3101
|
+
},
|
|
3102
|
+
elements: {
|
|
3103
|
+
reference: context.anchor
|
|
3104
|
+
},
|
|
3105
|
+
middleware: [
|
|
3106
|
+
offset3({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),
|
|
3107
|
+
avoidCollisions && shift3({
|
|
3108
|
+
mainAxis: true,
|
|
3109
|
+
crossAxis: false,
|
|
3110
|
+
limiter: sticky === "partial" ? limitShift3() : undefined,
|
|
3111
|
+
...detectOverflowOptions
|
|
3112
|
+
}),
|
|
3113
|
+
avoidCollisions && flip3({ ...detectOverflowOptions }),
|
|
3114
|
+
size3({
|
|
3115
|
+
...detectOverflowOptions,
|
|
3116
|
+
apply: ({ elements, rects, availableWidth, availableHeight }) => {
|
|
3117
|
+
const { width: anchorWidth, height: anchorHeight } = rects.reference;
|
|
3118
|
+
const contentStyle = elements.floating.style;
|
|
3119
|
+
contentStyle.setProperty("--radix-popper-available-width", `${availableWidth}px`);
|
|
3120
|
+
contentStyle.setProperty("--radix-popper-available-height", `${availableHeight}px`);
|
|
3121
|
+
contentStyle.setProperty("--radix-popper-anchor-width", `${anchorWidth}px`);
|
|
3122
|
+
contentStyle.setProperty("--radix-popper-anchor-height", `${anchorHeight}px`);
|
|
3123
|
+
}
|
|
3124
|
+
}),
|
|
3125
|
+
arrow4 && arrow3({ element: arrow4, padding: arrowPadding }),
|
|
3126
|
+
transformOrigin({ arrowWidth, arrowHeight }),
|
|
3127
|
+
hideWhenDetached && hide3({ strategy: "referenceHidden", ...detectOverflowOptions })
|
|
3128
|
+
]
|
|
3129
|
+
});
|
|
3130
|
+
const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);
|
|
3131
|
+
const handlePlaced = useCallbackRef(onPlaced);
|
|
3132
|
+
useLayoutEffect2(() => {
|
|
3133
|
+
if (isPositioned) {
|
|
3134
|
+
handlePlaced?.();
|
|
3135
|
+
}
|
|
3136
|
+
}, [isPositioned, handlePlaced]);
|
|
3137
|
+
const arrowX = middlewareData.arrow?.x;
|
|
3138
|
+
const arrowY = middlewareData.arrow?.y;
|
|
3139
|
+
const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;
|
|
3140
|
+
const [contentZIndex, setContentZIndex] = React16.useState();
|
|
3141
|
+
useLayoutEffect2(() => {
|
|
3142
|
+
if (content)
|
|
3143
|
+
setContentZIndex(window.getComputedStyle(content).zIndex);
|
|
3144
|
+
}, [content]);
|
|
3145
|
+
return /* @__PURE__ */ jsx22("div", {
|
|
3146
|
+
ref: refs.setFloating,
|
|
3147
|
+
"data-radix-popper-content-wrapper": "",
|
|
3148
|
+
style: {
|
|
3149
|
+
...floatingStyles,
|
|
3150
|
+
transform: isPositioned ? floatingStyles.transform : "translate(0, -200%)",
|
|
3151
|
+
minWidth: "max-content",
|
|
3152
|
+
zIndex: contentZIndex,
|
|
3153
|
+
["--radix-popper-transform-origin"]: [
|
|
3154
|
+
middlewareData.transformOrigin?.x,
|
|
3155
|
+
middlewareData.transformOrigin?.y
|
|
3156
|
+
].join(" "),
|
|
3157
|
+
...middlewareData.hide?.referenceHidden && {
|
|
3158
|
+
visibility: "hidden",
|
|
3159
|
+
pointerEvents: "none"
|
|
3160
|
+
}
|
|
3161
|
+
},
|
|
3162
|
+
dir: props.dir,
|
|
3163
|
+
children: /* @__PURE__ */ jsx22(PopperContentProvider, {
|
|
3164
|
+
scope: __scopePopper,
|
|
3165
|
+
placedSide,
|
|
3166
|
+
onArrowChange: setArrow,
|
|
3167
|
+
arrowX,
|
|
3168
|
+
arrowY,
|
|
3169
|
+
shouldHideArrow: cannotCenterArrow,
|
|
3170
|
+
children: /* @__PURE__ */ jsx22(Primitive3.div, {
|
|
3171
|
+
"data-side": placedSide,
|
|
3172
|
+
"data-align": placedAlign,
|
|
3173
|
+
...contentProps,
|
|
3174
|
+
ref: composedRefs,
|
|
3175
|
+
style: {
|
|
3176
|
+
...contentProps.style,
|
|
3177
|
+
animation: !isPositioned ? "none" : undefined
|
|
3178
|
+
}
|
|
3179
|
+
})
|
|
3180
|
+
})
|
|
3181
|
+
});
|
|
3182
|
+
});
|
|
3183
|
+
PopperContent.displayName = CONTENT_NAME;
|
|
3184
|
+
var ARROW_NAME = "PopperArrow";
|
|
3185
|
+
var OPPOSITE_SIDE = {
|
|
3186
|
+
top: "bottom",
|
|
3187
|
+
right: "left",
|
|
3188
|
+
bottom: "top",
|
|
3189
|
+
left: "right"
|
|
3190
|
+
};
|
|
3191
|
+
var PopperArrow = React16.forwardRef(function PopperArrow2(props, forwardedRef) {
|
|
3192
|
+
const { __scopePopper, ...arrowProps } = props;
|
|
3193
|
+
const contentContext = useContentContext(ARROW_NAME, __scopePopper);
|
|
3194
|
+
const baseSide = OPPOSITE_SIDE[contentContext.placedSide];
|
|
3195
|
+
return /* @__PURE__ */ jsx22("span", {
|
|
3196
|
+
ref: contentContext.onArrowChange,
|
|
3197
|
+
style: {
|
|
3198
|
+
position: "absolute",
|
|
3199
|
+
left: contentContext.arrowX,
|
|
3200
|
+
top: contentContext.arrowY,
|
|
3201
|
+
[baseSide]: 0,
|
|
3202
|
+
transformOrigin: {
|
|
3203
|
+
top: "",
|
|
3204
|
+
right: "0 0",
|
|
3205
|
+
bottom: "center 0",
|
|
3206
|
+
left: "100% 0"
|
|
3207
|
+
}[contentContext.placedSide],
|
|
3208
|
+
transform: {
|
|
3209
|
+
top: "translateY(100%)",
|
|
3210
|
+
right: "translateY(50%) rotate(90deg) translateX(-50%)",
|
|
3211
|
+
bottom: `rotate(180deg)`,
|
|
3212
|
+
left: "translateY(50%) rotate(-90deg) translateX(50%)"
|
|
3213
|
+
}[contentContext.placedSide],
|
|
3214
|
+
visibility: contentContext.shouldHideArrow ? "hidden" : undefined
|
|
3215
|
+
},
|
|
3216
|
+
children: /* @__PURE__ */ jsx22(Root2, {
|
|
3217
|
+
...arrowProps,
|
|
3218
|
+
ref: forwardedRef,
|
|
3219
|
+
style: {
|
|
3220
|
+
...arrowProps.style,
|
|
3221
|
+
display: "block"
|
|
3222
|
+
}
|
|
3223
|
+
})
|
|
3224
|
+
});
|
|
3225
|
+
});
|
|
3226
|
+
PopperArrow.displayName = ARROW_NAME;
|
|
3227
|
+
function isNotNull(value) {
|
|
3228
|
+
return value !== null;
|
|
3229
|
+
}
|
|
3230
|
+
var transformOrigin = (options) => ({
|
|
3231
|
+
name: "transformOrigin",
|
|
3232
|
+
options,
|
|
3233
|
+
fn(data) {
|
|
3234
|
+
const { placement, rects, middlewareData } = data;
|
|
3235
|
+
const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;
|
|
3236
|
+
const isArrowHidden = cannotCenterArrow;
|
|
3237
|
+
const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;
|
|
3238
|
+
const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;
|
|
3239
|
+
const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);
|
|
3240
|
+
const noArrowAlign = { start: "0%", center: "50%", end: "100%" }[placedAlign];
|
|
3241
|
+
const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;
|
|
3242
|
+
const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;
|
|
3243
|
+
let x = "";
|
|
3244
|
+
let y = "";
|
|
3245
|
+
if (placedSide === "bottom") {
|
|
3246
|
+
x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;
|
|
3247
|
+
y = `${-arrowHeight}px`;
|
|
3248
|
+
} else if (placedSide === "top") {
|
|
3249
|
+
x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;
|
|
3250
|
+
y = `${rects.floating.height + arrowHeight}px`;
|
|
3251
|
+
} else if (placedSide === "right") {
|
|
3252
|
+
x = `${-arrowHeight}px`;
|
|
3253
|
+
y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;
|
|
3254
|
+
} else if (placedSide === "left") {
|
|
3255
|
+
x = `${rects.floating.width + arrowHeight}px`;
|
|
3256
|
+
y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;
|
|
3257
|
+
}
|
|
3258
|
+
return { data: { x, y } };
|
|
3259
|
+
}
|
|
3260
|
+
});
|
|
3261
|
+
function getSideAndAlignFromPlacement(placement) {
|
|
3262
|
+
const [side, align = "center"] = placement.split("-");
|
|
3263
|
+
return [side, align];
|
|
3264
|
+
}
|
|
3265
|
+
var Root22 = Popper;
|
|
3266
|
+
var Anchor = PopperAnchor;
|
|
3267
|
+
var Content = PopperContent;
|
|
3268
|
+
var Arrow2 = PopperArrow;
|
|
3269
|
+
|
|
3270
|
+
// ../../node_modules/@radix-ui/react-portal/dist/index.mjs
|
|
3271
|
+
import * as React18 from "react";
|
|
3272
|
+
import ReactDOM6 from "react-dom";
|
|
3273
|
+
|
|
3274
|
+
// ../../node_modules/@radix-ui/react-portal/node_modules/@radix-ui/react-primitive/dist/index.mjs
|
|
3275
|
+
import * as React17 from "react";
|
|
3276
|
+
import * as ReactDOM5 from "react-dom";
|
|
3277
|
+
import { createSlot as createSlot4 } from "@radix-ui/react-slot";
|
|
3278
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
3279
|
+
var NODES4 = [
|
|
3280
|
+
"a",
|
|
3281
|
+
"button",
|
|
3282
|
+
"div",
|
|
3283
|
+
"form",
|
|
3284
|
+
"h2",
|
|
3285
|
+
"h3",
|
|
3286
|
+
"img",
|
|
3287
|
+
"input",
|
|
3288
|
+
"label",
|
|
3289
|
+
"li",
|
|
3290
|
+
"nav",
|
|
3291
|
+
"ol",
|
|
3292
|
+
"p",
|
|
3293
|
+
"select",
|
|
3294
|
+
"span",
|
|
3295
|
+
"svg",
|
|
3296
|
+
"ul"
|
|
3297
|
+
];
|
|
3298
|
+
var Primitive4 = NODES4.reduce((primitive, node) => {
|
|
3299
|
+
const Slot = createSlot4(`Primitive.${node}`);
|
|
3300
|
+
const Node2 = React17.forwardRef((props, forwardedRef) => {
|
|
3301
|
+
const { asChild, ...primitiveProps } = props;
|
|
3302
|
+
const Comp = asChild ? Slot : node;
|
|
3303
|
+
if (typeof window !== "undefined") {
|
|
3304
|
+
window[Symbol.for("radix-ui")] = true;
|
|
3305
|
+
}
|
|
3306
|
+
return /* @__PURE__ */ jsx23(Comp, { ...primitiveProps, ref: forwardedRef });
|
|
3307
|
+
});
|
|
3308
|
+
Node2.displayName = `Primitive.${node}`;
|
|
3309
|
+
return { ...primitive, [node]: Node2 };
|
|
3310
|
+
}, {});
|
|
3311
|
+
|
|
3312
|
+
// ../../node_modules/@radix-ui/react-portal/dist/index.mjs
|
|
3313
|
+
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
3314
|
+
|
|
3315
|
+
var PORTAL_NAME = "Portal";
|
|
3316
|
+
var Portal = React18.forwardRef((props, forwardedRef) => {
|
|
3317
|
+
const { container: containerProp, ...portalProps } = props;
|
|
3318
|
+
const [mounted, setMounted] = React18.useState(false);
|
|
3319
|
+
useLayoutEffect2(() => setMounted(true), []);
|
|
3320
|
+
const container = containerProp || mounted && globalThis?.document?.body;
|
|
3321
|
+
return container ? ReactDOM6.createPortal(/* @__PURE__ */ jsx24(Primitive4.div, { ...portalProps, ref: forwardedRef }), container) : null;
|
|
3322
|
+
});
|
|
3323
|
+
Portal.displayName = PORTAL_NAME;
|
|
3324
|
+
|
|
3325
|
+
// ../../node_modules/@radix-ui/react-presence/dist/index.mjs
|
|
3326
|
+
import * as React22 from "react";
|
|
3327
|
+
import * as React19 from "react";
|
|
3328
|
+
|
|
3329
|
+
function useStateMachine(initialState, machine) {
|
|
3330
|
+
return React19.useReducer((state, event) => {
|
|
3331
|
+
const nextState = machine[state][event];
|
|
3332
|
+
return nextState ?? state;
|
|
3333
|
+
}, initialState);
|
|
3334
|
+
}
|
|
3335
|
+
var Presence = (props) => {
|
|
3336
|
+
const { present, children } = props;
|
|
3337
|
+
const presence = usePresence(present);
|
|
3338
|
+
const child = typeof children === "function" ? children({ present: presence.isPresent }) : React22.Children.only(children);
|
|
3339
|
+
const ref = useComposedRefs(presence.ref, getElementRef(child));
|
|
3340
|
+
const forceMount = typeof children === "function";
|
|
3341
|
+
return forceMount || presence.isPresent ? React22.cloneElement(child, { ref }) : null;
|
|
3342
|
+
};
|
|
3343
|
+
Presence.displayName = "Presence";
|
|
3344
|
+
function usePresence(present) {
|
|
3345
|
+
const [node, setNode] = React22.useState();
|
|
3346
|
+
const stylesRef = React22.useRef(null);
|
|
3347
|
+
const prevPresentRef = React22.useRef(present);
|
|
3348
|
+
const prevAnimationNameRef = React22.useRef("none");
|
|
3349
|
+
const initialState = present ? "mounted" : "unmounted";
|
|
3350
|
+
const [state, send] = useStateMachine(initialState, {
|
|
3351
|
+
mounted: {
|
|
3352
|
+
UNMOUNT: "unmounted",
|
|
3353
|
+
ANIMATION_OUT: "unmountSuspended"
|
|
3354
|
+
},
|
|
3355
|
+
unmountSuspended: {
|
|
3356
|
+
MOUNT: "mounted",
|
|
3357
|
+
ANIMATION_END: "unmounted"
|
|
3358
|
+
},
|
|
3359
|
+
unmounted: {
|
|
3360
|
+
MOUNT: "mounted"
|
|
3361
|
+
}
|
|
3362
|
+
});
|
|
3363
|
+
React22.useEffect(() => {
|
|
3364
|
+
const currentAnimationName = getAnimationName(stylesRef.current);
|
|
3365
|
+
prevAnimationNameRef.current = state === "mounted" ? currentAnimationName : "none";
|
|
3366
|
+
}, [state]);
|
|
3367
|
+
useLayoutEffect2(() => {
|
|
3368
|
+
const styles = stylesRef.current;
|
|
3369
|
+
const wasPresent = prevPresentRef.current;
|
|
3370
|
+
const hasPresentChanged = wasPresent !== present;
|
|
3371
|
+
if (hasPresentChanged) {
|
|
3372
|
+
const prevAnimationName = prevAnimationNameRef.current;
|
|
3373
|
+
const currentAnimationName = getAnimationName(styles);
|
|
3374
|
+
if (present) {
|
|
3375
|
+
send("MOUNT");
|
|
3376
|
+
} else if (currentAnimationName === "none" || styles?.display === "none") {
|
|
3377
|
+
send("UNMOUNT");
|
|
3378
|
+
} else {
|
|
3379
|
+
const isAnimating = prevAnimationName !== currentAnimationName;
|
|
3380
|
+
if (wasPresent && isAnimating) {
|
|
3381
|
+
send("ANIMATION_OUT");
|
|
3382
|
+
} else {
|
|
3383
|
+
send("UNMOUNT");
|
|
3384
|
+
}
|
|
3385
|
+
}
|
|
3386
|
+
prevPresentRef.current = present;
|
|
3387
|
+
}
|
|
3388
|
+
}, [present, send]);
|
|
3389
|
+
useLayoutEffect2(() => {
|
|
3390
|
+
if (node) {
|
|
3391
|
+
let timeoutId;
|
|
3392
|
+
const ownerWindow = node.ownerDocument.defaultView ?? window;
|
|
3393
|
+
const handleAnimationEnd = (event) => {
|
|
3394
|
+
const currentAnimationName = getAnimationName(stylesRef.current);
|
|
3395
|
+
const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));
|
|
3396
|
+
if (event.target === node && isCurrentAnimation) {
|
|
3397
|
+
send("ANIMATION_END");
|
|
3398
|
+
if (!prevPresentRef.current) {
|
|
3399
|
+
const currentFillMode = node.style.animationFillMode;
|
|
3400
|
+
node.style.animationFillMode = "forwards";
|
|
3401
|
+
timeoutId = ownerWindow.setTimeout(() => {
|
|
3402
|
+
if (node.style.animationFillMode === "forwards") {
|
|
3403
|
+
node.style.animationFillMode = currentFillMode;
|
|
3404
|
+
}
|
|
3405
|
+
});
|
|
3406
|
+
}
|
|
3407
|
+
}
|
|
3408
|
+
};
|
|
3409
|
+
const handleAnimationStart = (event) => {
|
|
3410
|
+
if (event.target === node) {
|
|
3411
|
+
prevAnimationNameRef.current = getAnimationName(stylesRef.current);
|
|
3412
|
+
}
|
|
3413
|
+
};
|
|
3414
|
+
node.addEventListener("animationstart", handleAnimationStart);
|
|
3415
|
+
node.addEventListener("animationcancel", handleAnimationEnd);
|
|
3416
|
+
node.addEventListener("animationend", handleAnimationEnd);
|
|
3417
|
+
return () => {
|
|
3418
|
+
ownerWindow.clearTimeout(timeoutId);
|
|
3419
|
+
node.removeEventListener("animationstart", handleAnimationStart);
|
|
3420
|
+
node.removeEventListener("animationcancel", handleAnimationEnd);
|
|
3421
|
+
node.removeEventListener("animationend", handleAnimationEnd);
|
|
3422
|
+
};
|
|
3423
|
+
} else {
|
|
3424
|
+
send("ANIMATION_END");
|
|
3425
|
+
}
|
|
3426
|
+
}, [node, send]);
|
|
3427
|
+
return {
|
|
3428
|
+
isPresent: ["mounted", "unmountSuspended"].includes(state),
|
|
3429
|
+
ref: React22.useCallback((node2) => {
|
|
3430
|
+
stylesRef.current = node2 ? getComputedStyle(node2) : null;
|
|
3431
|
+
setNode(node2);
|
|
3432
|
+
}, [])
|
|
3433
|
+
};
|
|
3434
|
+
}
|
|
3435
|
+
function getAnimationName(styles) {
|
|
3436
|
+
return styles?.animationName || "none";
|
|
3437
|
+
}
|
|
3438
|
+
function getElementRef(element) {
|
|
3439
|
+
let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get;
|
|
3440
|
+
let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
|
|
3441
|
+
if (mayWarn) {
|
|
3442
|
+
return element.ref;
|
|
3443
|
+
}
|
|
3444
|
+
getter = Object.getOwnPropertyDescriptor(element, "ref")?.get;
|
|
3445
|
+
mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
|
|
3446
|
+
if (mayWarn) {
|
|
3447
|
+
return element.props.ref;
|
|
3448
|
+
}
|
|
3449
|
+
return element.props.ref || element.ref;
|
|
3450
|
+
}
|
|
3451
|
+
|
|
3452
|
+
// ../../node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-primitive/dist/index.mjs
|
|
3453
|
+
import * as React20 from "react";
|
|
3454
|
+
import * as ReactDOM7 from "react-dom";
|
|
3455
|
+
import { createSlot as createSlot5 } from "@radix-ui/react-slot";
|
|
3456
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
3457
|
+
var NODES5 = [
|
|
3458
|
+
"a",
|
|
3459
|
+
"button",
|
|
3460
|
+
"div",
|
|
3461
|
+
"form",
|
|
3462
|
+
"h2",
|
|
3463
|
+
"h3",
|
|
3464
|
+
"img",
|
|
3465
|
+
"input",
|
|
3466
|
+
"label",
|
|
3467
|
+
"li",
|
|
3468
|
+
"nav",
|
|
3469
|
+
"ol",
|
|
3470
|
+
"p",
|
|
3471
|
+
"select",
|
|
3472
|
+
"span",
|
|
3473
|
+
"svg",
|
|
3474
|
+
"ul"
|
|
3475
|
+
];
|
|
3476
|
+
var Primitive5 = NODES5.reduce((primitive, node) => {
|
|
3477
|
+
const Slot = createSlot5(`Primitive.${node}`);
|
|
3478
|
+
const Node2 = React20.forwardRef((props, forwardedRef) => {
|
|
3479
|
+
const { asChild, ...primitiveProps } = props;
|
|
3480
|
+
const Comp = asChild ? Slot : node;
|
|
3481
|
+
if (typeof window !== "undefined") {
|
|
3482
|
+
window[Symbol.for("radix-ui")] = true;
|
|
3483
|
+
}
|
|
3484
|
+
return /* @__PURE__ */ jsx25(Comp, { ...primitiveProps, ref: forwardedRef });
|
|
3485
|
+
});
|
|
3486
|
+
Node2.displayName = `Primitive.${node}`;
|
|
3487
|
+
return { ...primitive, [node]: Node2 };
|
|
3488
|
+
}, {});
|
|
3489
|
+
|
|
3490
|
+
// ../../node_modules/@radix-ui/react-tooltip/dist/index.mjs
|
|
3491
|
+
import { createSlottable } from "@radix-ui/react-slot";
|
|
3492
|
+
|
|
3493
|
+
// ../../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs
|
|
3494
|
+
import * as React23 from "react";
|
|
3495
|
+
import * as React24 from "react";
|
|
3496
|
+
|
|
3497
|
+
// ../../node_modules/@radix-ui/react-use-effect-event/dist/index.mjs
|
|
3498
|
+
import * as React21 from "react";
|
|
3499
|
+
var useReactEffectEvent = React21[" useEffectEvent ".trim().toString()];
|
|
3500
|
+
var useReactInsertionEffect = React21[" useInsertionEffect ".trim().toString()];
|
|
3501
|
+
|
|
3502
|
+
// ../../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs
|
|
3503
|
+
var useInsertionEffect = React23[" useInsertionEffect ".trim().toString()] || useLayoutEffect2;
|
|
3504
|
+
function useControllableState({
|
|
3505
|
+
prop,
|
|
3506
|
+
defaultProp,
|
|
3507
|
+
onChange = () => {},
|
|
3508
|
+
caller
|
|
3509
|
+
}) {
|
|
3510
|
+
const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({
|
|
3511
|
+
defaultProp,
|
|
3512
|
+
onChange
|
|
3513
|
+
});
|
|
3514
|
+
const isControlled = prop !== undefined;
|
|
3515
|
+
const value = isControlled ? prop : uncontrolledProp;
|
|
3516
|
+
if (true) {
|
|
3517
|
+
const isControlledRef = React23.useRef(prop !== undefined);
|
|
3518
|
+
React23.useEffect(() => {
|
|
3519
|
+
const wasControlled = isControlledRef.current;
|
|
3520
|
+
if (wasControlled !== isControlled) {
|
|
3521
|
+
const from = wasControlled ? "controlled" : "uncontrolled";
|
|
3522
|
+
const to = isControlled ? "controlled" : "uncontrolled";
|
|
3523
|
+
console.warn(`${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`);
|
|
3524
|
+
}
|
|
3525
|
+
isControlledRef.current = isControlled;
|
|
3526
|
+
}, [isControlled, caller]);
|
|
3527
|
+
}
|
|
3528
|
+
const setValue = React23.useCallback((nextValue) => {
|
|
3529
|
+
if (isControlled) {
|
|
3530
|
+
const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;
|
|
3531
|
+
if (value2 !== prop) {
|
|
3532
|
+
onChangeRef.current?.(value2);
|
|
3533
|
+
}
|
|
3534
|
+
} else {
|
|
3535
|
+
setUncontrolledProp(nextValue);
|
|
3536
|
+
}
|
|
3537
|
+
}, [isControlled, prop, setUncontrolledProp, onChangeRef]);
|
|
3538
|
+
return [value, setValue];
|
|
3539
|
+
}
|
|
3540
|
+
function useUncontrolledState({
|
|
3541
|
+
defaultProp,
|
|
3542
|
+
onChange
|
|
3543
|
+
}) {
|
|
3544
|
+
const [value, setValue] = React23.useState(defaultProp);
|
|
3545
|
+
const prevValueRef = React23.useRef(value);
|
|
3546
|
+
const onChangeRef = React23.useRef(onChange);
|
|
3547
|
+
useInsertionEffect(() => {
|
|
3548
|
+
onChangeRef.current = onChange;
|
|
3549
|
+
}, [onChange]);
|
|
3550
|
+
React23.useEffect(() => {
|
|
3551
|
+
if (prevValueRef.current !== value) {
|
|
3552
|
+
onChangeRef.current?.(value);
|
|
3553
|
+
prevValueRef.current = value;
|
|
3554
|
+
}
|
|
3555
|
+
}, [value, prevValueRef]);
|
|
3556
|
+
return [value, setValue, onChangeRef];
|
|
3557
|
+
}
|
|
3558
|
+
function isFunction(value) {
|
|
3559
|
+
return typeof value === "function";
|
|
3560
|
+
}
|
|
3561
|
+
var SYNC_STATE = Symbol("RADIX:SYNC_STATE");
|
|
3562
|
+
|
|
3563
|
+
// ../../node_modules/@radix-ui/react-tooltip/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs
|
|
3564
|
+
import * as React25 from "react";
|
|
3565
|
+
import { jsx as jsx26 } from "react/jsx-runtime";
|
|
3566
|
+
var VISUALLY_HIDDEN_STYLES = Object.freeze({
|
|
3567
|
+
position: "absolute",
|
|
3568
|
+
border: 0,
|
|
3569
|
+
width: 1,
|
|
3570
|
+
height: 1,
|
|
3571
|
+
padding: 0,
|
|
3572
|
+
margin: -1,
|
|
3573
|
+
overflow: "hidden",
|
|
3574
|
+
clip: "rect(0, 0, 0, 0)",
|
|
3575
|
+
whiteSpace: "nowrap",
|
|
3576
|
+
wordWrap: "normal"
|
|
3577
|
+
});
|
|
3578
|
+
var NAME2 = "VisuallyHidden";
|
|
3579
|
+
var VisuallyHidden = React25.forwardRef((props, forwardedRef) => {
|
|
3580
|
+
return /* @__PURE__ */ jsx26(Primitive5.span, {
|
|
3581
|
+
...props,
|
|
3582
|
+
ref: forwardedRef,
|
|
3583
|
+
style: { ...VISUALLY_HIDDEN_STYLES, ...props.style }
|
|
3584
|
+
});
|
|
3585
|
+
});
|
|
3586
|
+
VisuallyHidden.displayName = NAME2;
|
|
3587
|
+
var Root3 = VisuallyHidden;
|
|
3588
|
+
|
|
3589
|
+
// ../../node_modules/@radix-ui/react-tooltip/dist/index.mjs
|
|
3590
|
+
import { jsx as jsx27, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
3591
|
+
|
|
3592
|
+
var [createTooltipContext, createTooltipScope] = createContextScope("Tooltip", [
|
|
3593
|
+
createPopperScope
|
|
3594
|
+
]);
|
|
3595
|
+
var usePopperScope = createPopperScope();
|
|
3596
|
+
var PROVIDER_NAME = "TooltipProvider";
|
|
3597
|
+
var DEFAULT_DELAY_DURATION = 700;
|
|
3598
|
+
var TOOLTIP_OPEN = "tooltip.open";
|
|
3599
|
+
var [TooltipProviderContextProvider, useTooltipProviderContext] = createTooltipContext(PROVIDER_NAME);
|
|
3600
|
+
var TooltipProvider = (props) => {
|
|
3601
|
+
const {
|
|
3602
|
+
__scopeTooltip,
|
|
3603
|
+
delayDuration = DEFAULT_DELAY_DURATION,
|
|
3604
|
+
skipDelayDuration = 300,
|
|
3605
|
+
disableHoverableContent = false,
|
|
3606
|
+
children
|
|
3607
|
+
} = props;
|
|
3608
|
+
const isOpenDelayedRef = React26.useRef(true);
|
|
3609
|
+
const isPointerInTransitRef = React26.useRef(false);
|
|
3610
|
+
const skipDelayTimerRef = React26.useRef(0);
|
|
3611
|
+
React26.useEffect(() => {
|
|
3612
|
+
const skipDelayTimer = skipDelayTimerRef.current;
|
|
3613
|
+
return () => window.clearTimeout(skipDelayTimer);
|
|
3614
|
+
}, []);
|
|
3615
|
+
return /* @__PURE__ */ jsx27(TooltipProviderContextProvider, {
|
|
3616
|
+
scope: __scopeTooltip,
|
|
3617
|
+
isOpenDelayedRef,
|
|
3618
|
+
delayDuration,
|
|
3619
|
+
onOpen: React26.useCallback(() => {
|
|
3620
|
+
window.clearTimeout(skipDelayTimerRef.current);
|
|
3621
|
+
isOpenDelayedRef.current = false;
|
|
3622
|
+
}, []),
|
|
3623
|
+
onClose: React26.useCallback(() => {
|
|
3624
|
+
window.clearTimeout(skipDelayTimerRef.current);
|
|
3625
|
+
skipDelayTimerRef.current = window.setTimeout(() => isOpenDelayedRef.current = true, skipDelayDuration);
|
|
3626
|
+
}, [skipDelayDuration]),
|
|
3627
|
+
isPointerInTransitRef,
|
|
3628
|
+
onPointerInTransitChange: React26.useCallback((inTransit) => {
|
|
3629
|
+
isPointerInTransitRef.current = inTransit;
|
|
3630
|
+
}, []),
|
|
3631
|
+
disableHoverableContent,
|
|
3632
|
+
children
|
|
3633
|
+
});
|
|
3634
|
+
};
|
|
3635
|
+
TooltipProvider.displayName = PROVIDER_NAME;
|
|
3636
|
+
var TOOLTIP_NAME = "Tooltip";
|
|
3637
|
+
var [TooltipContextProvider, useTooltipContext] = createTooltipContext(TOOLTIP_NAME);
|
|
3638
|
+
var Tooltip = (props) => {
|
|
3639
|
+
const {
|
|
3640
|
+
__scopeTooltip,
|
|
3641
|
+
children,
|
|
3642
|
+
open: openProp,
|
|
3643
|
+
defaultOpen,
|
|
3644
|
+
onOpenChange,
|
|
3645
|
+
disableHoverableContent: disableHoverableContentProp,
|
|
3646
|
+
delayDuration: delayDurationProp
|
|
3647
|
+
} = props;
|
|
3648
|
+
const providerContext = useTooltipProviderContext(TOOLTIP_NAME, props.__scopeTooltip);
|
|
3649
|
+
const popperScope = usePopperScope(__scopeTooltip);
|
|
3650
|
+
const [trigger, setTrigger] = React26.useState(null);
|
|
3651
|
+
const contentId = useId();
|
|
3652
|
+
const openTimerRef = React26.useRef(0);
|
|
3653
|
+
const disableHoverableContent = disableHoverableContentProp ?? providerContext.disableHoverableContent;
|
|
3654
|
+
const delayDuration = delayDurationProp ?? providerContext.delayDuration;
|
|
3655
|
+
const wasOpenDelayedRef = React26.useRef(false);
|
|
3656
|
+
const [open, setOpen] = useControllableState({
|
|
3657
|
+
prop: openProp,
|
|
3658
|
+
defaultProp: defaultOpen ?? false,
|
|
3659
|
+
onChange: (open2) => {
|
|
3660
|
+
if (open2) {
|
|
3661
|
+
providerContext.onOpen();
|
|
3662
|
+
document.dispatchEvent(new CustomEvent(TOOLTIP_OPEN));
|
|
3663
|
+
} else {
|
|
3664
|
+
providerContext.onClose();
|
|
3665
|
+
}
|
|
3666
|
+
onOpenChange?.(open2);
|
|
3667
|
+
},
|
|
3668
|
+
caller: TOOLTIP_NAME
|
|
3669
|
+
});
|
|
3670
|
+
const stateAttribute = React26.useMemo(() => {
|
|
3671
|
+
return open ? wasOpenDelayedRef.current ? "delayed-open" : "instant-open" : "closed";
|
|
3672
|
+
}, [open]);
|
|
3673
|
+
const handleOpen = React26.useCallback(() => {
|
|
3674
|
+
window.clearTimeout(openTimerRef.current);
|
|
3675
|
+
openTimerRef.current = 0;
|
|
3676
|
+
wasOpenDelayedRef.current = false;
|
|
3677
|
+
setOpen(true);
|
|
3678
|
+
}, [setOpen]);
|
|
3679
|
+
const handleClose = React26.useCallback(() => {
|
|
3680
|
+
window.clearTimeout(openTimerRef.current);
|
|
3681
|
+
openTimerRef.current = 0;
|
|
3682
|
+
setOpen(false);
|
|
3683
|
+
}, [setOpen]);
|
|
3684
|
+
const handleDelayedOpen = React26.useCallback(() => {
|
|
3685
|
+
window.clearTimeout(openTimerRef.current);
|
|
3686
|
+
openTimerRef.current = window.setTimeout(() => {
|
|
3687
|
+
wasOpenDelayedRef.current = true;
|
|
3688
|
+
setOpen(true);
|
|
3689
|
+
openTimerRef.current = 0;
|
|
3690
|
+
}, delayDuration);
|
|
3691
|
+
}, [delayDuration, setOpen]);
|
|
3692
|
+
React26.useEffect(() => {
|
|
3693
|
+
return () => {
|
|
3694
|
+
if (openTimerRef.current) {
|
|
3695
|
+
window.clearTimeout(openTimerRef.current);
|
|
3696
|
+
openTimerRef.current = 0;
|
|
3697
|
+
}
|
|
3698
|
+
};
|
|
3699
|
+
}, []);
|
|
3700
|
+
return /* @__PURE__ */ jsx27(Root22, { ...popperScope, children: /* @__PURE__ */ jsx27(TooltipContextProvider, {
|
|
3701
|
+
scope: __scopeTooltip,
|
|
3702
|
+
contentId,
|
|
3703
|
+
open,
|
|
3704
|
+
stateAttribute,
|
|
3705
|
+
trigger,
|
|
3706
|
+
onTriggerChange: setTrigger,
|
|
3707
|
+
onTriggerEnter: React26.useCallback(() => {
|
|
3708
|
+
if (providerContext.isOpenDelayedRef.current)
|
|
3709
|
+
handleDelayedOpen();
|
|
3710
|
+
else
|
|
3711
|
+
handleOpen();
|
|
3712
|
+
}, [providerContext.isOpenDelayedRef, handleDelayedOpen, handleOpen]),
|
|
3713
|
+
onTriggerLeave: React26.useCallback(() => {
|
|
3714
|
+
if (disableHoverableContent) {
|
|
3715
|
+
handleClose();
|
|
3716
|
+
} else {
|
|
3717
|
+
window.clearTimeout(openTimerRef.current);
|
|
3718
|
+
openTimerRef.current = 0;
|
|
3719
|
+
}
|
|
3720
|
+
}, [handleClose, disableHoverableContent]),
|
|
3721
|
+
onOpen: handleOpen,
|
|
3722
|
+
onClose: handleClose,
|
|
3723
|
+
disableHoverableContent,
|
|
3724
|
+
children
|
|
3725
|
+
}) });
|
|
3726
|
+
};
|
|
3727
|
+
Tooltip.displayName = TOOLTIP_NAME;
|
|
3728
|
+
var TRIGGER_NAME = "TooltipTrigger";
|
|
3729
|
+
var TooltipTrigger = React26.forwardRef((props, forwardedRef) => {
|
|
3730
|
+
const { __scopeTooltip, ...triggerProps } = props;
|
|
3731
|
+
const context = useTooltipContext(TRIGGER_NAME, __scopeTooltip);
|
|
3732
|
+
const providerContext = useTooltipProviderContext(TRIGGER_NAME, __scopeTooltip);
|
|
3733
|
+
const popperScope = usePopperScope(__scopeTooltip);
|
|
3734
|
+
const ref = React26.useRef(null);
|
|
3735
|
+
const composedRefs = useComposedRefs(forwardedRef, ref, context.onTriggerChange);
|
|
3736
|
+
const isPointerDownRef = React26.useRef(false);
|
|
3737
|
+
const hasPointerMoveOpenedRef = React26.useRef(false);
|
|
3738
|
+
const handlePointerUp = React26.useCallback(() => isPointerDownRef.current = false, []);
|
|
3739
|
+
React26.useEffect(() => {
|
|
3740
|
+
return () => document.removeEventListener("pointerup", handlePointerUp);
|
|
3741
|
+
}, [handlePointerUp]);
|
|
3742
|
+
return /* @__PURE__ */ jsx27(Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx27(Primitive5.button, {
|
|
3743
|
+
"aria-describedby": context.open ? context.contentId : undefined,
|
|
3744
|
+
"data-state": context.stateAttribute,
|
|
3745
|
+
...triggerProps,
|
|
3746
|
+
ref: composedRefs,
|
|
3747
|
+
onPointerMove: composeEventHandlers(props.onPointerMove, (event) => {
|
|
3748
|
+
if (event.pointerType === "touch")
|
|
3749
|
+
return;
|
|
3750
|
+
if (!hasPointerMoveOpenedRef.current && !providerContext.isPointerInTransitRef.current) {
|
|
3751
|
+
context.onTriggerEnter();
|
|
3752
|
+
hasPointerMoveOpenedRef.current = true;
|
|
3753
|
+
}
|
|
3754
|
+
}),
|
|
3755
|
+
onPointerLeave: composeEventHandlers(props.onPointerLeave, () => {
|
|
3756
|
+
context.onTriggerLeave();
|
|
3757
|
+
hasPointerMoveOpenedRef.current = false;
|
|
3758
|
+
}),
|
|
3759
|
+
onPointerDown: composeEventHandlers(props.onPointerDown, () => {
|
|
3760
|
+
if (context.open) {
|
|
3761
|
+
context.onClose();
|
|
3762
|
+
}
|
|
3763
|
+
isPointerDownRef.current = true;
|
|
3764
|
+
document.addEventListener("pointerup", handlePointerUp, { once: true });
|
|
3765
|
+
}),
|
|
3766
|
+
onFocus: composeEventHandlers(props.onFocus, () => {
|
|
3767
|
+
if (!isPointerDownRef.current)
|
|
3768
|
+
context.onOpen();
|
|
3769
|
+
}),
|
|
3770
|
+
onBlur: composeEventHandlers(props.onBlur, context.onClose),
|
|
3771
|
+
onClick: composeEventHandlers(props.onClick, context.onClose)
|
|
3772
|
+
}) });
|
|
3773
|
+
});
|
|
3774
|
+
TooltipTrigger.displayName = TRIGGER_NAME;
|
|
3775
|
+
var PORTAL_NAME2 = "TooltipPortal";
|
|
3776
|
+
var [PortalProvider, usePortalContext] = createTooltipContext(PORTAL_NAME2, {
|
|
3777
|
+
forceMount: undefined
|
|
3778
|
+
});
|
|
3779
|
+
var TooltipPortal = (props) => {
|
|
3780
|
+
const { __scopeTooltip, forceMount, children, container } = props;
|
|
3781
|
+
const context = useTooltipContext(PORTAL_NAME2, __scopeTooltip);
|
|
3782
|
+
return /* @__PURE__ */ jsx27(PortalProvider, { scope: __scopeTooltip, forceMount, children: /* @__PURE__ */ jsx27(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx27(Portal, { asChild: true, container, children }) }) });
|
|
3783
|
+
};
|
|
3784
|
+
TooltipPortal.displayName = PORTAL_NAME2;
|
|
3785
|
+
var CONTENT_NAME2 = "TooltipContent";
|
|
3786
|
+
var TooltipContent = React26.forwardRef((props, forwardedRef) => {
|
|
3787
|
+
const portalContext = usePortalContext(CONTENT_NAME2, props.__scopeTooltip);
|
|
3788
|
+
const { forceMount = portalContext.forceMount, side = "top", ...contentProps } = props;
|
|
3789
|
+
const context = useTooltipContext(CONTENT_NAME2, props.__scopeTooltip);
|
|
3790
|
+
return /* @__PURE__ */ jsx27(Presence, { present: forceMount || context.open, children: context.disableHoverableContent ? /* @__PURE__ */ jsx27(TooltipContentImpl, { side, ...contentProps, ref: forwardedRef }) : /* @__PURE__ */ jsx27(TooltipContentHoverable, { side, ...contentProps, ref: forwardedRef }) });
|
|
3791
|
+
});
|
|
3792
|
+
var TooltipContentHoverable = React26.forwardRef((props, forwardedRef) => {
|
|
3793
|
+
const context = useTooltipContext(CONTENT_NAME2, props.__scopeTooltip);
|
|
3794
|
+
const providerContext = useTooltipProviderContext(CONTENT_NAME2, props.__scopeTooltip);
|
|
3795
|
+
const ref = React26.useRef(null);
|
|
3796
|
+
const composedRefs = useComposedRefs(forwardedRef, ref);
|
|
3797
|
+
const [pointerGraceArea, setPointerGraceArea] = React26.useState(null);
|
|
3798
|
+
const { trigger, onClose } = context;
|
|
3799
|
+
const content = ref.current;
|
|
3800
|
+
const { onPointerInTransitChange } = providerContext;
|
|
3801
|
+
const handleRemoveGraceArea = React26.useCallback(() => {
|
|
3802
|
+
setPointerGraceArea(null);
|
|
3803
|
+
onPointerInTransitChange(false);
|
|
3804
|
+
}, [onPointerInTransitChange]);
|
|
3805
|
+
const handleCreateGraceArea = React26.useCallback((event, hoverTarget) => {
|
|
3806
|
+
const currentTarget = event.currentTarget;
|
|
3807
|
+
const exitPoint = { x: event.clientX, y: event.clientY };
|
|
3808
|
+
const exitSide = getExitSideFromRect(exitPoint, currentTarget.getBoundingClientRect());
|
|
3809
|
+
const paddedExitPoints = getPaddedExitPoints(exitPoint, exitSide);
|
|
3810
|
+
const hoverTargetPoints = getPointsFromRect(hoverTarget.getBoundingClientRect());
|
|
3811
|
+
const graceArea = getHull([...paddedExitPoints, ...hoverTargetPoints]);
|
|
3812
|
+
setPointerGraceArea(graceArea);
|
|
3813
|
+
onPointerInTransitChange(true);
|
|
3814
|
+
}, [onPointerInTransitChange]);
|
|
3815
|
+
React26.useEffect(() => {
|
|
3816
|
+
return () => handleRemoveGraceArea();
|
|
3817
|
+
}, [handleRemoveGraceArea]);
|
|
3818
|
+
React26.useEffect(() => {
|
|
3819
|
+
if (trigger && content) {
|
|
3820
|
+
const handleTriggerLeave = (event) => handleCreateGraceArea(event, content);
|
|
3821
|
+
const handleContentLeave = (event) => handleCreateGraceArea(event, trigger);
|
|
3822
|
+
trigger.addEventListener("pointerleave", handleTriggerLeave);
|
|
3823
|
+
content.addEventListener("pointerleave", handleContentLeave);
|
|
3824
|
+
return () => {
|
|
3825
|
+
trigger.removeEventListener("pointerleave", handleTriggerLeave);
|
|
3826
|
+
content.removeEventListener("pointerleave", handleContentLeave);
|
|
3827
|
+
};
|
|
3828
|
+
}
|
|
3829
|
+
}, [trigger, content, handleCreateGraceArea, handleRemoveGraceArea]);
|
|
3830
|
+
React26.useEffect(() => {
|
|
3831
|
+
if (pointerGraceArea) {
|
|
3832
|
+
const handleTrackPointerGrace = (event) => {
|
|
3833
|
+
const target = event.target;
|
|
3834
|
+
const pointerPosition = { x: event.clientX, y: event.clientY };
|
|
3835
|
+
const hasEnteredTarget = trigger?.contains(target) || content?.contains(target);
|
|
3836
|
+
const isPointerOutsideGraceArea = !isPointInPolygon(pointerPosition, pointerGraceArea);
|
|
3837
|
+
if (hasEnteredTarget) {
|
|
3838
|
+
handleRemoveGraceArea();
|
|
3839
|
+
} else if (isPointerOutsideGraceArea) {
|
|
3840
|
+
handleRemoveGraceArea();
|
|
3841
|
+
onClose();
|
|
3842
|
+
}
|
|
3843
|
+
};
|
|
3844
|
+
document.addEventListener("pointermove", handleTrackPointerGrace);
|
|
3845
|
+
return () => document.removeEventListener("pointermove", handleTrackPointerGrace);
|
|
3846
|
+
}
|
|
3847
|
+
}, [trigger, content, pointerGraceArea, onClose, handleRemoveGraceArea]);
|
|
3848
|
+
return /* @__PURE__ */ jsx27(TooltipContentImpl, { ...props, ref: composedRefs });
|
|
3849
|
+
});
|
|
3850
|
+
var [VisuallyHiddenContentContextProvider, useVisuallyHiddenContentContext] = createTooltipContext(TOOLTIP_NAME, { isInside: false });
|
|
3851
|
+
var Slottable = createSlottable("TooltipContent");
|
|
3852
|
+
var TooltipContentImpl = React26.forwardRef((props, forwardedRef) => {
|
|
3853
|
+
const {
|
|
3854
|
+
__scopeTooltip,
|
|
3855
|
+
children,
|
|
3856
|
+
"aria-label": ariaLabel,
|
|
3857
|
+
onEscapeKeyDown,
|
|
3858
|
+
onPointerDownOutside,
|
|
3859
|
+
...contentProps
|
|
3860
|
+
} = props;
|
|
3861
|
+
const context = useTooltipContext(CONTENT_NAME2, __scopeTooltip);
|
|
3862
|
+
const popperScope = usePopperScope(__scopeTooltip);
|
|
3863
|
+
const { onClose } = context;
|
|
3864
|
+
React26.useEffect(() => {
|
|
3865
|
+
document.addEventListener(TOOLTIP_OPEN, onClose);
|
|
3866
|
+
return () => document.removeEventListener(TOOLTIP_OPEN, onClose);
|
|
3867
|
+
}, [onClose]);
|
|
3868
|
+
React26.useEffect(() => {
|
|
3869
|
+
if (context.trigger) {
|
|
3870
|
+
const handleScroll = (event) => {
|
|
3871
|
+
const target = event.target;
|
|
3872
|
+
if (target?.contains(context.trigger))
|
|
3873
|
+
onClose();
|
|
3874
|
+
};
|
|
3875
|
+
window.addEventListener("scroll", handleScroll, { capture: true });
|
|
3876
|
+
return () => window.removeEventListener("scroll", handleScroll, { capture: true });
|
|
3877
|
+
}
|
|
3878
|
+
}, [context.trigger, onClose]);
|
|
3879
|
+
return /* @__PURE__ */ jsx27(DismissableLayer, {
|
|
3880
|
+
asChild: true,
|
|
3881
|
+
disableOutsidePointerEvents: false,
|
|
3882
|
+
onEscapeKeyDown,
|
|
3883
|
+
onPointerDownOutside,
|
|
3884
|
+
onFocusOutside: (event) => event.preventDefault(),
|
|
3885
|
+
onDismiss: onClose,
|
|
3886
|
+
children: /* @__PURE__ */ jsxs6(Content, {
|
|
3887
|
+
"data-state": context.stateAttribute,
|
|
3888
|
+
...popperScope,
|
|
3889
|
+
...contentProps,
|
|
3890
|
+
ref: forwardedRef,
|
|
3891
|
+
style: {
|
|
3892
|
+
...contentProps.style,
|
|
3893
|
+
...{
|
|
3894
|
+
"--radix-tooltip-content-transform-origin": "var(--radix-popper-transform-origin)",
|
|
3895
|
+
"--radix-tooltip-content-available-width": "var(--radix-popper-available-width)",
|
|
3896
|
+
"--radix-tooltip-content-available-height": "var(--radix-popper-available-height)",
|
|
3897
|
+
"--radix-tooltip-trigger-width": "var(--radix-popper-anchor-width)",
|
|
3898
|
+
"--radix-tooltip-trigger-height": "var(--radix-popper-anchor-height)"
|
|
3899
|
+
}
|
|
3900
|
+
},
|
|
3901
|
+
children: [
|
|
3902
|
+
/* @__PURE__ */ jsx27(Slottable, { children }),
|
|
3903
|
+
/* @__PURE__ */ jsx27(VisuallyHiddenContentContextProvider, { scope: __scopeTooltip, isInside: true, children: /* @__PURE__ */ jsx27(Root3, { id: context.contentId, role: "tooltip", children: ariaLabel || children }) })
|
|
3904
|
+
]
|
|
3905
|
+
})
|
|
3906
|
+
});
|
|
3907
|
+
});
|
|
3908
|
+
TooltipContent.displayName = CONTENT_NAME2;
|
|
3909
|
+
var ARROW_NAME2 = "TooltipArrow";
|
|
3910
|
+
var TooltipArrow = React26.forwardRef((props, forwardedRef) => {
|
|
3911
|
+
const { __scopeTooltip, ...arrowProps } = props;
|
|
3912
|
+
const popperScope = usePopperScope(__scopeTooltip);
|
|
3913
|
+
const visuallyHiddenContentContext = useVisuallyHiddenContentContext(ARROW_NAME2, __scopeTooltip);
|
|
3914
|
+
return visuallyHiddenContentContext.isInside ? null : /* @__PURE__ */ jsx27(Arrow2, { ...popperScope, ...arrowProps, ref: forwardedRef });
|
|
3915
|
+
});
|
|
3916
|
+
TooltipArrow.displayName = ARROW_NAME2;
|
|
3917
|
+
function getExitSideFromRect(point, rect) {
|
|
3918
|
+
const top = Math.abs(rect.top - point.y);
|
|
3919
|
+
const bottom = Math.abs(rect.bottom - point.y);
|
|
3920
|
+
const right = Math.abs(rect.right - point.x);
|
|
3921
|
+
const left = Math.abs(rect.left - point.x);
|
|
3922
|
+
switch (Math.min(top, bottom, right, left)) {
|
|
3923
|
+
case left:
|
|
3924
|
+
return "left";
|
|
3925
|
+
case right:
|
|
3926
|
+
return "right";
|
|
3927
|
+
case top:
|
|
3928
|
+
return "top";
|
|
3929
|
+
case bottom:
|
|
3930
|
+
return "bottom";
|
|
3931
|
+
default:
|
|
3932
|
+
throw new Error("unreachable");
|
|
3933
|
+
}
|
|
3934
|
+
}
|
|
3935
|
+
function getPaddedExitPoints(exitPoint, exitSide, padding = 5) {
|
|
3936
|
+
const paddedExitPoints = [];
|
|
3937
|
+
switch (exitSide) {
|
|
3938
|
+
case "top":
|
|
3939
|
+
paddedExitPoints.push({ x: exitPoint.x - padding, y: exitPoint.y + padding }, { x: exitPoint.x + padding, y: exitPoint.y + padding });
|
|
3940
|
+
break;
|
|
3941
|
+
case "bottom":
|
|
3942
|
+
paddedExitPoints.push({ x: exitPoint.x - padding, y: exitPoint.y - padding }, { x: exitPoint.x + padding, y: exitPoint.y - padding });
|
|
3943
|
+
break;
|
|
3944
|
+
case "left":
|
|
3945
|
+
paddedExitPoints.push({ x: exitPoint.x + padding, y: exitPoint.y - padding }, { x: exitPoint.x + padding, y: exitPoint.y + padding });
|
|
3946
|
+
break;
|
|
3947
|
+
case "right":
|
|
3948
|
+
paddedExitPoints.push({ x: exitPoint.x - padding, y: exitPoint.y - padding }, { x: exitPoint.x - padding, y: exitPoint.y + padding });
|
|
3949
|
+
break;
|
|
3950
|
+
}
|
|
3951
|
+
return paddedExitPoints;
|
|
3952
|
+
}
|
|
3953
|
+
function getPointsFromRect(rect) {
|
|
3954
|
+
const { top, right, bottom, left } = rect;
|
|
3955
|
+
return [
|
|
3956
|
+
{ x: left, y: top },
|
|
3957
|
+
{ x: right, y: top },
|
|
3958
|
+
{ x: right, y: bottom },
|
|
3959
|
+
{ x: left, y: bottom }
|
|
3960
|
+
];
|
|
3961
|
+
}
|
|
3962
|
+
function isPointInPolygon(point, polygon) {
|
|
3963
|
+
const { x, y } = point;
|
|
3964
|
+
let inside = false;
|
|
3965
|
+
for (let i = 0, j = polygon.length - 1;i < polygon.length; j = i++) {
|
|
3966
|
+
const ii = polygon[i];
|
|
3967
|
+
const jj = polygon[j];
|
|
3968
|
+
const xi = ii.x;
|
|
3969
|
+
const yi = ii.y;
|
|
3970
|
+
const xj = jj.x;
|
|
3971
|
+
const yj = jj.y;
|
|
3972
|
+
const intersect = yi > y !== yj > y && x < (xj - xi) * (y - yi) / (yj - yi) + xi;
|
|
3973
|
+
if (intersect)
|
|
3974
|
+
inside = !inside;
|
|
3975
|
+
}
|
|
3976
|
+
return inside;
|
|
3977
|
+
}
|
|
3978
|
+
function getHull(points) {
|
|
3979
|
+
const newPoints = points.slice();
|
|
3980
|
+
newPoints.sort((a, b) => {
|
|
3981
|
+
if (a.x < b.x)
|
|
3982
|
+
return -1;
|
|
3983
|
+
else if (a.x > b.x)
|
|
3984
|
+
return 1;
|
|
3985
|
+
else if (a.y < b.y)
|
|
3986
|
+
return -1;
|
|
3987
|
+
else if (a.y > b.y)
|
|
3988
|
+
return 1;
|
|
3989
|
+
else
|
|
3990
|
+
return 0;
|
|
3991
|
+
});
|
|
3992
|
+
return getHullPresorted(newPoints);
|
|
3993
|
+
}
|
|
3994
|
+
function getHullPresorted(points) {
|
|
3995
|
+
if (points.length <= 1)
|
|
3996
|
+
return points.slice();
|
|
3997
|
+
const upperHull = [];
|
|
3998
|
+
for (let i = 0;i < points.length; i++) {
|
|
3999
|
+
const p = points[i];
|
|
4000
|
+
while (upperHull.length >= 2) {
|
|
4001
|
+
const q = upperHull[upperHull.length - 1];
|
|
4002
|
+
const r = upperHull[upperHull.length - 2];
|
|
4003
|
+
if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x))
|
|
4004
|
+
upperHull.pop();
|
|
4005
|
+
else
|
|
4006
|
+
break;
|
|
4007
|
+
}
|
|
4008
|
+
upperHull.push(p);
|
|
4009
|
+
}
|
|
4010
|
+
upperHull.pop();
|
|
4011
|
+
const lowerHull = [];
|
|
4012
|
+
for (let i = points.length - 1;i >= 0; i--) {
|
|
4013
|
+
const p = points[i];
|
|
4014
|
+
while (lowerHull.length >= 2) {
|
|
4015
|
+
const q = lowerHull[lowerHull.length - 1];
|
|
4016
|
+
const r = lowerHull[lowerHull.length - 2];
|
|
4017
|
+
if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x))
|
|
4018
|
+
lowerHull.pop();
|
|
4019
|
+
else
|
|
4020
|
+
break;
|
|
4021
|
+
}
|
|
4022
|
+
lowerHull.push(p);
|
|
4023
|
+
}
|
|
4024
|
+
lowerHull.pop();
|
|
4025
|
+
if (upperHull.length === 1 && lowerHull.length === 1 && upperHull[0].x === lowerHull[0].x && upperHull[0].y === lowerHull[0].y) {
|
|
4026
|
+
return upperHull;
|
|
4027
|
+
} else {
|
|
4028
|
+
return upperHull.concat(lowerHull);
|
|
4029
|
+
}
|
|
4030
|
+
}
|
|
4031
|
+
var Provider = TooltipProvider;
|
|
4032
|
+
var Root32 = Tooltip;
|
|
4033
|
+
var Trigger = TooltipTrigger;
|
|
4034
|
+
var Portal2 = TooltipPortal;
|
|
4035
|
+
var Content2 = TooltipContent;
|
|
4036
|
+
var Arrow22 = TooltipArrow;
|
|
4037
|
+
|
|
4038
|
+
// src/components/tooltip/tooltip.tsx
|
|
4039
|
+
import { jsx as jsx28, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
4040
|
+
|
|
4041
|
+
function TooltipProvider2({
|
|
4042
|
+
delayDuration = 0,
|
|
4043
|
+
...props
|
|
4044
|
+
}) {
|
|
4045
|
+
return /* @__PURE__ */ jsx28(Provider, {
|
|
4046
|
+
"data-slot": "tooltip-provider",
|
|
4047
|
+
delayDuration,
|
|
4048
|
+
...props
|
|
4049
|
+
});
|
|
4050
|
+
}
|
|
4051
|
+
function Tooltip2({ ...props }) {
|
|
4052
|
+
return /* @__PURE__ */ jsx28(TooltipProvider2, {
|
|
4053
|
+
children: /* @__PURE__ */ jsx28(Root32, {
|
|
4054
|
+
"data-slot": "tooltip",
|
|
4055
|
+
...props
|
|
4056
|
+
})
|
|
4057
|
+
});
|
|
4058
|
+
}
|
|
4059
|
+
function TooltipTrigger2({ ...props }) {
|
|
4060
|
+
return /* @__PURE__ */ jsx28(Trigger, {
|
|
4061
|
+
"data-slot": "tooltip-trigger",
|
|
4062
|
+
...props
|
|
4063
|
+
});
|
|
4064
|
+
}
|
|
4065
|
+
function TooltipContent2({
|
|
4066
|
+
className,
|
|
4067
|
+
sideOffset = 0,
|
|
4068
|
+
children,
|
|
4069
|
+
...props
|
|
4070
|
+
}) {
|
|
4071
|
+
return /* @__PURE__ */ jsx28(Portal2, {
|
|
4072
|
+
children: /* @__PURE__ */ jsxs7(Content2, {
|
|
4073
|
+
"data-slot": "tooltip-content",
|
|
4074
|
+
sideOffset,
|
|
4075
|
+
className: cn("bg-foreground text-background animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance", className),
|
|
4076
|
+
...props,
|
|
4077
|
+
children: [
|
|
4078
|
+
children,
|
|
4079
|
+
/* @__PURE__ */ jsx28(Arrow22, {
|
|
4080
|
+
className: "bg-foreground fill-foreground z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"
|
|
4081
|
+
})
|
|
4082
|
+
]
|
|
4083
|
+
})
|
|
4084
|
+
});
|
|
4085
|
+
}
|
|
4086
|
+
|
|
4087
|
+
// src/components/docskit/tooltip.client.tsx
|
|
4088
|
+
import { jsx as jsx29, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
4089
|
+
|
|
4090
|
+
function NoteTooltip({ children, name }) {
|
|
4091
|
+
let note = useNotesContext(name);
|
|
4092
|
+
if (!note) {
|
|
4093
|
+
note = { name, type: "prose", children: name };
|
|
4094
|
+
}
|
|
4095
|
+
return /* @__PURE__ */ jsx29(TooltipProvider2, {
|
|
4096
|
+
delayDuration: 100,
|
|
4097
|
+
children: /* @__PURE__ */ jsxs8(Tooltip2, {
|
|
4098
|
+
children: [
|
|
4099
|
+
/* @__PURE__ */ jsx29(TooltipTrigger2, {
|
|
4100
|
+
asChild: true,
|
|
4101
|
+
children: /* @__PURE__ */ jsx29("span", {
|
|
4102
|
+
className: "underline decoration-dotted underline-offset-4 cursor-help",
|
|
4103
|
+
children
|
|
4104
|
+
})
|
|
4105
|
+
}),
|
|
4106
|
+
note.type === "code" ? /* @__PURE__ */ jsx29(TooltipContent2, {
|
|
4107
|
+
className: cn("min-w-44 max-w-96 whitespace-normal", "p-0 [&>div]:!my-0 border-none rounded-none bg-transparent", "[&>span>svg]:invisible"),
|
|
4108
|
+
children: note?.children
|
|
4109
|
+
}) : note.type === "image" ? /* @__PURE__ */ jsx29(TooltipContent2, {
|
|
4110
|
+
className: cn("min-w-44 max-w-96 whitespace-normal", "p-0 [&>*]:first:mt-0 [&>*]:last:mb-0 border-none bg-transparent", "[&>span>svg]:invisible"),
|
|
4111
|
+
children: note?.children
|
|
4112
|
+
}) : /* @__PURE__ */ jsx29(TooltipContent2, {
|
|
4113
|
+
className: cn("min-w-44 max-w-96 whitespace-normal", "p-4"),
|
|
4114
|
+
children: /* @__PURE__ */ jsx29("div", {
|
|
4115
|
+
className: "[&>:first-child]:mt-0 [&>:last-child]:mb-0",
|
|
4116
|
+
children: note?.children
|
|
4117
|
+
})
|
|
4118
|
+
})
|
|
4119
|
+
]
|
|
4120
|
+
})
|
|
4121
|
+
});
|
|
4122
|
+
}
|
|
4123
|
+
|
|
4124
|
+
// src/components/docskit/tooltip.tsx
|
|
4125
|
+
import { jsx as jsx30 } from "react/jsx-runtime";
|
|
4126
|
+
var tooltip = {
|
|
4127
|
+
name: "tooltip",
|
|
4128
|
+
Inline: ({ children, annotation }) => {
|
|
4129
|
+
const { query } = annotation;
|
|
4130
|
+
return /* @__PURE__ */ jsx30(NoteTooltip, {
|
|
4131
|
+
name: query,
|
|
4132
|
+
children
|
|
4133
|
+
});
|
|
4134
|
+
}
|
|
4135
|
+
};
|
|
4136
|
+
|
|
4137
|
+
// src/components/docskit/word-wrap.tsx
|
|
4138
|
+
import { InnerLine as InnerLine7, InnerPre, InnerToken } from "codehike/code";
|
|
4139
|
+
import { jsx as jsx31 } from "react/jsx-runtime";
|
|
4140
|
+
var wordWrap = {
|
|
4141
|
+
name: "word-wrap",
|
|
4142
|
+
Pre: (props) => /* @__PURE__ */ jsx31(InnerPre, {
|
|
4143
|
+
merge: props,
|
|
4144
|
+
className: "whitespace-pre-wrap"
|
|
4145
|
+
}),
|
|
4146
|
+
Line: (props) => /* @__PURE__ */ jsx31(InnerLine7, {
|
|
4147
|
+
merge: props,
|
|
4148
|
+
children: /* @__PURE__ */ jsx31("div", {
|
|
4149
|
+
style: {
|
|
4150
|
+
textIndent: `${-props.indentation}ch`,
|
|
4151
|
+
marginLeft: `${props.indentation}ch`
|
|
4152
|
+
},
|
|
4153
|
+
children: props.children
|
|
4154
|
+
})
|
|
4155
|
+
}),
|
|
4156
|
+
Token: (props) => /* @__PURE__ */ jsx31(InnerToken, {
|
|
4157
|
+
merge: props,
|
|
4158
|
+
style: { textIndent: 0 }
|
|
4159
|
+
})
|
|
4160
|
+
};
|
|
4161
|
+
|
|
4162
|
+
// src/components/docskit/code.handlers.tsx
|
|
4163
|
+
function getHandlers(options) {
|
|
4164
|
+
return [
|
|
4165
|
+
line,
|
|
4166
|
+
options.lineNumbers && lineNumbers,
|
|
4167
|
+
mark,
|
|
4168
|
+
diff,
|
|
4169
|
+
link,
|
|
4170
|
+
callout,
|
|
4171
|
+
...collapse,
|
|
4172
|
+
expandable,
|
|
4173
|
+
hover,
|
|
4174
|
+
tooltip,
|
|
4175
|
+
options.wordWrap && wordWrap
|
|
4176
|
+
].filter(Boolean);
|
|
4177
|
+
}
|
|
4178
|
+
|
|
4179
|
+
// src/components/docskit/code.icon.tsx
|
|
4180
|
+
var import_seti_icons = __toESM(require_lib(), 1);
|
|
4181
|
+
import { TerminalIcon } from "lucide-react";
|
|
4182
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
|
4183
|
+
function CodeIcon({
|
|
4184
|
+
title,
|
|
4185
|
+
lang,
|
|
4186
|
+
className
|
|
4187
|
+
}) {
|
|
4188
|
+
if (title?.toLowerCase() === "terminal output" || title?.toLowerCase() === "terminal" || lang === "sh" || lang === "shell" || lang === "bash") {
|
|
4189
|
+
return /* @__PURE__ */ jsx32(TerminalIcon, {
|
|
4190
|
+
size: 16,
|
|
4191
|
+
className,
|
|
4192
|
+
style: { marginTop: -3.5 }
|
|
4193
|
+
});
|
|
4194
|
+
}
|
|
4195
|
+
const ext = lang === "rust" ? "rs" : lang === "typescript" ? "ts" : lang;
|
|
4196
|
+
const filename = `x.${ext}`;
|
|
4197
|
+
const { svg } = getIcon(filename);
|
|
4198
|
+
const __html = svg.replace(/svg/, `svg fill='currentColor' style='margin: -4px; height: 24px; width: 24px;'`);
|
|
4199
|
+
return /* @__PURE__ */ jsx32("span", {
|
|
4200
|
+
className,
|
|
4201
|
+
children: /* @__PURE__ */ jsx32("span", {
|
|
4202
|
+
dangerouslySetInnerHTML: { __html },
|
|
4203
|
+
style: { display: "contents" }
|
|
4204
|
+
})
|
|
4205
|
+
});
|
|
4206
|
+
}
|
|
4207
|
+
var getIcon = import_seti_icons.themeIcons({
|
|
4208
|
+
white: "#d4d7d6",
|
|
4209
|
+
grey: "#4d5a5e",
|
|
4210
|
+
"grey-light": "#6d8086",
|
|
4211
|
+
blue: "#519aba",
|
|
4212
|
+
green: "#8dc149",
|
|
4213
|
+
orange: "#e37933",
|
|
4214
|
+
pink: "#f55385",
|
|
4215
|
+
purple: "#a074c4",
|
|
4216
|
+
red: "#cc3e44",
|
|
4217
|
+
yellow: "#cbcb41",
|
|
4218
|
+
ignore: "#41535b"
|
|
4219
|
+
});
|
|
4220
|
+
|
|
4221
|
+
// src/components/file-change-row/file-change-row.tsx
|
|
4222
|
+
import { jsx as jsx33, jsxs as jsxs9, Fragment as Fragment3 } from "react/jsx-runtime";
|
|
4223
|
+
|
|
4224
|
+
function StackedChevrons({ isOpen, className }) {
|
|
4225
|
+
return /* @__PURE__ */ jsxs9("div", {
|
|
4226
|
+
className: cn("flex flex-col items-center -space-y-1 transition-opacity", className),
|
|
4227
|
+
children: [
|
|
4228
|
+
/* @__PURE__ */ jsx33(ChevronUp, {
|
|
4229
|
+
className: cn("size-3 transition-colors", isOpen ? "text-dk-tab-active-foreground" : "text-dk-tab-inactive-foreground")
|
|
4230
|
+
}),
|
|
4231
|
+
/* @__PURE__ */ jsx33(ChevronDown, {
|
|
4232
|
+
className: cn("size-3 transition-colors", isOpen ? "text-dk-tab-active-foreground" : "text-dk-tab-inactive-foreground")
|
|
4233
|
+
})
|
|
4234
|
+
]
|
|
4235
|
+
});
|
|
4236
|
+
}
|
|
4237
|
+
function getLangFromFilename(filename) {
|
|
4238
|
+
const ext = filename.split(".").pop()?.toLowerCase() || "";
|
|
4239
|
+
const extMap = {
|
|
4240
|
+
ts: "typescript",
|
|
4241
|
+
tsx: "tsx",
|
|
4242
|
+
js: "javascript",
|
|
4243
|
+
jsx: "jsx",
|
|
4244
|
+
json: "json",
|
|
4245
|
+
html: "html",
|
|
4246
|
+
css: "css",
|
|
4247
|
+
scss: "scss",
|
|
4248
|
+
md: "markdown",
|
|
4249
|
+
py: "python",
|
|
4250
|
+
rs: "rust",
|
|
4251
|
+
go: "go",
|
|
4252
|
+
yaml: "yaml",
|
|
4253
|
+
yml: "yaml"
|
|
4254
|
+
};
|
|
4255
|
+
return extMap[ext] || ext;
|
|
4256
|
+
}
|
|
4257
|
+
function FileChangeRow({
|
|
4258
|
+
path,
|
|
4259
|
+
filename,
|
|
4260
|
+
additions,
|
|
4261
|
+
deletions,
|
|
4262
|
+
codeblock,
|
|
4263
|
+
handlers: extraHandlers,
|
|
4264
|
+
showCopy = true,
|
|
4265
|
+
children,
|
|
4266
|
+
defaultOpen = false,
|
|
4267
|
+
className
|
|
4268
|
+
}) {
|
|
4269
|
+
const [isOpen, setIsOpen] = useState12(defaultOpen);
|
|
4270
|
+
const [highlighted, setHighlighted] = useState12(null);
|
|
4271
|
+
const lang = getLangFromFilename(filename);
|
|
4272
|
+
const hasAdditions = additions !== undefined && additions > 0;
|
|
4273
|
+
const hasDeletions = deletions !== undefined && deletions > 0;
|
|
4274
|
+
useEffect9(() => {
|
|
4275
|
+
if (!codeblock)
|
|
4276
|
+
return;
|
|
4277
|
+
let cancelled = false;
|
|
4278
|
+
const codeWithLang = { ...codeblock, lang: codeblock.lang || lang || "txt" };
|
|
4279
|
+
highlight(codeWithLang, theme).then((result) => {
|
|
4280
|
+
if (!cancelled)
|
|
4281
|
+
setHighlighted(result);
|
|
4282
|
+
});
|
|
4283
|
+
return () => {
|
|
4284
|
+
cancelled = true;
|
|
4285
|
+
};
|
|
4286
|
+
}, [codeblock?.value, codeblock?.lang, codeblock?.meta, lang, codeblock]);
|
|
4287
|
+
const options = flagsToOptions("");
|
|
4288
|
+
const handlers = getHandlers(options);
|
|
4289
|
+
if (extraHandlers) {
|
|
4290
|
+
handlers.push(...extraHandlers);
|
|
4291
|
+
}
|
|
4292
|
+
return /* @__PURE__ */ jsx33(Collapsible, {
|
|
4293
|
+
open: isOpen,
|
|
4294
|
+
onOpenChange: setIsOpen,
|
|
4295
|
+
className,
|
|
4296
|
+
children: /* @__PURE__ */ jsxs9("div", {
|
|
4297
|
+
className: "group rounded overflow-hidden border border-dk-border",
|
|
4298
|
+
children: [
|
|
4299
|
+
/* @__PURE__ */ jsx33(CollapsibleTrigger2, {
|
|
4300
|
+
asChild: true,
|
|
4301
|
+
children: /* @__PURE__ */ jsxs9("button", {
|
|
4302
|
+
type: "button",
|
|
4303
|
+
className: cn("flex items-center gap-2 px-3 py-0 cursor-pointer w-full text-left", "h-9 shrink-0 font-mono text-sm", "bg-dk-tabs-background", isOpen && "border-b border-dk-border", "text-dk-tab-inactive-foreground", "hover:bg-dk-background/50 transition-colors"),
|
|
4304
|
+
children: [
|
|
4305
|
+
/* @__PURE__ */ jsx33("div", {
|
|
4306
|
+
className: "size-4 shrink-0 opacity-60",
|
|
4307
|
+
children: /* @__PURE__ */ jsx33(CodeIcon, {
|
|
4308
|
+
title: filename,
|
|
4309
|
+
lang
|
|
4310
|
+
})
|
|
4311
|
+
}),
|
|
4312
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
4313
|
+
className: "flex-1 min-w-0 flex items-center gap-1",
|
|
4314
|
+
children: [
|
|
4315
|
+
path && /* @__PURE__ */ jsx33("span", {
|
|
4316
|
+
className: "text-dk-tab-inactive-foreground truncate",
|
|
4317
|
+
children: path
|
|
4318
|
+
}),
|
|
4319
|
+
/* @__PURE__ */ jsx33("span", {
|
|
4320
|
+
className: "text-dk-tab-active-foreground font-medium truncate",
|
|
4321
|
+
children: filename
|
|
4322
|
+
})
|
|
4323
|
+
]
|
|
4324
|
+
}),
|
|
4325
|
+
/* @__PURE__ */ jsxs9("div", {
|
|
4326
|
+
className: "flex items-center gap-2 text-sm shrink-0",
|
|
4327
|
+
children: [
|
|
4328
|
+
hasAdditions && /* @__PURE__ */ jsxs9("span", {
|
|
4329
|
+
className: "text-green-500 font-medium",
|
|
4330
|
+
children: [
|
|
4331
|
+
"+",
|
|
4332
|
+
additions
|
|
4333
|
+
]
|
|
4334
|
+
}),
|
|
4335
|
+
hasDeletions && /* @__PURE__ */ jsxs9("span", {
|
|
4336
|
+
className: "text-red-500 font-medium",
|
|
4337
|
+
children: [
|
|
4338
|
+
"-",
|
|
4339
|
+
deletions
|
|
4340
|
+
]
|
|
4341
|
+
})
|
|
4342
|
+
]
|
|
4343
|
+
}),
|
|
4344
|
+
/* @__PURE__ */ jsx33(StackedChevrons, {
|
|
4345
|
+
isOpen,
|
|
4346
|
+
className: "ml-1"
|
|
4347
|
+
})
|
|
4348
|
+
]
|
|
4349
|
+
})
|
|
4350
|
+
}),
|
|
4351
|
+
/* @__PURE__ */ jsx33(CollapsibleContent2, {
|
|
4352
|
+
className: "relative",
|
|
4353
|
+
children: codeblock && highlighted ? /* @__PURE__ */ jsxs9(Fragment3, {
|
|
4354
|
+
children: [
|
|
4355
|
+
/* @__PURE__ */ jsx33(Pre, {
|
|
4356
|
+
code: highlighted,
|
|
4357
|
+
className: "overflow-auto px-0 py-3 m-0 rounded-none !bg-dk-background selection:bg-dk-selection selection:text-current max-h-full",
|
|
4358
|
+
style: highlighted.style,
|
|
4359
|
+
handlers
|
|
4360
|
+
}),
|
|
4361
|
+
showCopy && /* @__PURE__ */ jsx33(CopyButton, {
|
|
4362
|
+
text: highlighted.code,
|
|
4363
|
+
variant: "floating",
|
|
4364
|
+
className: "absolute right-3 top-3 z-10 text-dk-tab-inactive-foreground"
|
|
4365
|
+
})
|
|
4366
|
+
]
|
|
4367
|
+
}) : children
|
|
4368
|
+
})
|
|
4369
|
+
]
|
|
4370
|
+
})
|
|
4371
|
+
});
|
|
4372
|
+
}
|
|
4373
|
+
function FileChangeList({
|
|
4374
|
+
title = "Changed files",
|
|
4375
|
+
count: count2,
|
|
4376
|
+
children,
|
|
4377
|
+
defaultOpen = true,
|
|
4378
|
+
className
|
|
4379
|
+
}) {
|
|
4380
|
+
const [isOpen, setIsOpen] = useState12(defaultOpen);
|
|
4381
|
+
return /* @__PURE__ */ jsxs9(Collapsible, {
|
|
4382
|
+
open: isOpen,
|
|
4383
|
+
onOpenChange: setIsOpen,
|
|
4384
|
+
className,
|
|
4385
|
+
children: [
|
|
4386
|
+
/* @__PURE__ */ jsx33(CollapsibleTrigger2, {
|
|
4387
|
+
asChild: true,
|
|
4388
|
+
children: /* @__PURE__ */ jsxs9("button", {
|
|
4389
|
+
type: "button",
|
|
4390
|
+
className: "flex items-center gap-2 text-sm font-medium text-foreground hover:text-foreground/80 transition-colors py-2",
|
|
4391
|
+
children: [
|
|
4392
|
+
/* @__PURE__ */ jsx33(StackedChevrons, {
|
|
4393
|
+
isOpen
|
|
4394
|
+
}),
|
|
4395
|
+
/* @__PURE__ */ jsx33("span", {
|
|
4396
|
+
children: count2 !== undefined ? `${count2} ${title}` : title
|
|
4397
|
+
})
|
|
4398
|
+
]
|
|
4399
|
+
})
|
|
4400
|
+
}),
|
|
4401
|
+
/* @__PURE__ */ jsx33(CollapsibleContent2, {
|
|
4402
|
+
children: /* @__PURE__ */ jsx33("div", {
|
|
4403
|
+
className: "space-y-3 mt-2",
|
|
4404
|
+
children
|
|
4405
|
+
})
|
|
4406
|
+
})
|
|
4407
|
+
]
|
|
4408
|
+
});
|
|
4409
|
+
}
|
|
4410
|
+
export {
|
|
4411
|
+
getLangFromFilename,
|
|
4412
|
+
StackedChevrons,
|
|
4413
|
+
FileChangeRow,
|
|
4414
|
+
FileChangeList
|
|
4415
|
+
};
|