instaui 0.1.2__py3-none-any.whl → 0.1.4__py3-none-any.whl
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.
- instaui/components/content.py +4 -4
- instaui/components/element.py +56 -12
- instaui/components/highlight_code/code.js +63 -0
- instaui/components/highlight_code/code.py +117 -0
- instaui/components/highlight_code/static/core.min.js +307 -0
- instaui/components/highlight_code/static/languages/css.min.js +31 -0
- instaui/components/highlight_code/static/languages/javascript.min.js +81 -0
- instaui/components/highlight_code/static/languages/json.min.js +8 -0
- instaui/components/highlight_code/static/languages/python-repl.min.js +5 -0
- instaui/components/highlight_code/static/languages/python.min.js +42 -0
- instaui/components/highlight_code/static/languages/shell.min.js +5 -0
- instaui/components/highlight_code/static/styles/default.min.css +9 -0
- instaui/components/highlight_code/static/styles/github-dark-dimmed.min.css +9 -0
- instaui/components/highlight_code/static/styles/github-dark.min.css +10 -0
- instaui/components/highlight_code/static/styles/github.min.css +10 -0
- instaui/components/html/__init__.py +2 -0
- instaui/components/html/select.py +7 -8
- instaui/components/html/textarea.py +28 -0
- instaui/components/markdown/markdown.js +33 -0
- instaui/components/markdown/markdown.py +41 -0
- instaui/components/markdown/static/github-markdown.css +12 -0
- instaui/components/markdown/static/marked.esm.js +2580 -0
- instaui/components/vfor.py +1 -1
- instaui/consts.py +4 -0
- instaui/daisyui/__init__.py +20 -0
- instaui/daisyui/_index.py +15 -0
- instaui/daisyui/button.py +38 -0
- instaui/daisyui/checkbox.py +17 -0
- instaui/daisyui/static/daisyui.css +1 -0
- instaui/daisyui/static/themes.css +1 -0
- instaui/dependencies/component_dependency.py +11 -5
- instaui/fastapi_server/dependency_router.py +4 -3
- instaui/fastapi_server/resource.py +12 -17
- instaui/fastapi_server/server.py +66 -20
- instaui/html_tools.py +12 -0
- instaui/inject.py +3 -3
- instaui/runtime/_app.py +6 -1
- instaui/runtime/resource.py +5 -2
- instaui/spa_router/_functions.py +1 -1
- instaui/spa_router/_route_model.py +1 -1
- instaui/static/insta-ui.css +1 -1
- instaui/static/insta-ui.esm-browser.prod.js +106 -111
- instaui/static/insta-ui.ico +0 -0
- instaui/static/insta-ui.js.map +1 -1
- instaui/static/templates/debug/sse.html +2 -2
- instaui/systems/file_system.py +3 -5
- instaui/systems/module_system.py +30 -0
- instaui/template/web_template.py +1 -1
- instaui/template/zero_template.py +19 -23
- instaui/ui/__build_init.py +73 -0
- instaui/ui/__init__.py +69 -57
- instaui/ui/__init__.pyi +129 -0
- instaui/ui/events.py +1 -1
- instaui/ui_functions/server.py +3 -1
- instaui/zero/func.py +16 -11
- instaui/zero/scope.py +89 -1
- {instaui-0.1.2.dist-info → instaui-0.1.4.dist-info}/METADATA +1 -1
- {instaui-0.1.2.dist-info → instaui-0.1.4.dist-info}/RECORD +60 -34
- instaui/static/insta-ui.iife.js +0 -29
- instaui/static/insta-ui.iife.js.map +0 -1
- {instaui-0.1.2.dist-info → instaui-0.1.4.dist-info}/LICENSE +0 -0
- {instaui-0.1.2.dist-info → instaui-0.1.4.dist-info}/WHEEL +0 -0
instaui/components/content.py
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
from __future__ import annotations
|
2
|
-
from typing import Dict
|
2
|
+
from typing import Any, Dict
|
3
3
|
from instaui.components.component import Component
|
4
4
|
from instaui.vars.types import TMaybeRef
|
5
5
|
from instaui.vars.mixin_types.element_binding import ElementBindingMixin
|
6
6
|
|
7
7
|
|
8
8
|
class Content(Component):
|
9
|
-
def __init__(self, content: TMaybeRef[
|
9
|
+
def __init__(self, content: TMaybeRef[Any]):
|
10
10
|
"""Content to be displayed on the page, typically used for pure text content within slots.
|
11
11
|
|
12
12
|
Args:
|
13
|
-
content (TMaybeRef[
|
13
|
+
content (TMaybeRef[Any]): The textual content to display.
|
14
14
|
|
15
|
-
|
15
|
+
Examples:
|
16
16
|
.. code-block:: python
|
17
17
|
with html.div():
|
18
18
|
ui.content("Hello, world!")
|
instaui/components/element.py
CHANGED
@@ -8,9 +8,11 @@ import re
|
|
8
8
|
from typing import (
|
9
9
|
Any,
|
10
10
|
Dict,
|
11
|
+
Iterable,
|
11
12
|
List,
|
12
13
|
ClassVar,
|
13
14
|
Optional,
|
15
|
+
Set,
|
14
16
|
Tuple,
|
15
17
|
Union,
|
16
18
|
cast,
|
@@ -35,6 +37,7 @@ from instaui.vars.mixin_types.element_binding import ElementBindingMixin
|
|
35
37
|
|
36
38
|
if TYPE_CHECKING:
|
37
39
|
from instaui.event.event_mixin import EventMixin
|
40
|
+
from instaui.vars.types import TMaybeRef
|
38
41
|
|
39
42
|
|
40
43
|
# Refer to the NiceGUI project.
|
@@ -103,7 +106,7 @@ class Element(Component):
|
|
103
106
|
cls,
|
104
107
|
*,
|
105
108
|
esm: Union[str, Path, None] = None,
|
106
|
-
externals: Optional[
|
109
|
+
externals: Optional[Dict[str, Path]] = None,
|
107
110
|
css: Union[List[Union[str, Path]], None] = None,
|
108
111
|
) -> None:
|
109
112
|
super().__init_subclass__()
|
@@ -112,18 +115,21 @@ class Element(Component):
|
|
112
115
|
esm = _make_dependency_path(esm, cls)
|
113
116
|
|
114
117
|
if externals:
|
115
|
-
externals =
|
118
|
+
externals = {
|
119
|
+
key: _make_dependency_path(value, cls)
|
120
|
+
for key, value in externals.items()
|
121
|
+
}
|
116
122
|
|
117
123
|
if css:
|
118
|
-
css =
|
124
|
+
css = set(_make_dependency_path(c, cls) for c in css) # type: ignore
|
119
125
|
|
120
126
|
tag_name = f"instaui-{esm.stem}"
|
121
127
|
|
122
128
|
cls.dependency = ComponentDependencyInfo(
|
123
129
|
tag_name=tag_name,
|
124
130
|
esm=esm,
|
125
|
-
externals=cast(
|
126
|
-
css=cast(
|
131
|
+
externals=cast(Dict[str, Path], externals or {}),
|
132
|
+
css=cast(Set[Path], css or set()),
|
127
133
|
)
|
128
134
|
|
129
135
|
cls._default_props = copy(cls._default_props)
|
@@ -225,32 +231,53 @@ class Element(Component):
|
|
225
231
|
@overload
|
226
232
|
def classes(self, add: str) -> Self: ...
|
227
233
|
@overload
|
228
|
-
def classes(self, add: Dict[str,
|
234
|
+
def classes(self, add: Dict[str, TMaybeRef[bool]]) -> Self: ...
|
229
235
|
|
230
236
|
@overload
|
231
|
-
def classes(self, add:
|
237
|
+
def classes(self, add: TMaybeRef[str]) -> Self: ...
|
232
238
|
|
233
239
|
def classes(
|
234
240
|
self,
|
235
241
|
add: Union[
|
236
242
|
str,
|
237
|
-
Dict[str,
|
238
|
-
|
243
|
+
Dict[str, TMaybeRef[bool]],
|
244
|
+
TMaybeRef[str],
|
239
245
|
VForItem,
|
240
246
|
],
|
241
247
|
) -> Self:
|
248
|
+
"""Add classes to the component.
|
249
|
+
|
250
|
+
Args:
|
251
|
+
add (Union[ str, Dict[str, TMaybeRef[bool]], TMaybeRef[str], VForItem, ]): classes to add.
|
252
|
+
|
253
|
+
|
254
|
+
Examples:
|
255
|
+
.. code-block:: python
|
256
|
+
|
257
|
+
elemelt = html.span('test')
|
258
|
+
elemelt.classes('class1 class2')
|
259
|
+
|
260
|
+
# dynamically classes
|
261
|
+
class_name = ui.state('x')
|
262
|
+
elemelt.classes(class_name)
|
263
|
+
|
264
|
+
# apply name if True
|
265
|
+
apply = ui.state(True)
|
266
|
+
elemelt.classes({'x': apply})
|
267
|
+
"""
|
268
|
+
|
242
269
|
if isinstance(add, str):
|
243
270
|
self._str_classes = self._update_classes(self._str_classes, add)
|
244
271
|
|
245
272
|
if isinstance(add, dict):
|
246
|
-
self._dict_classes.update(**add)
|
273
|
+
self._dict_classes.update(**add) # type: ignore
|
247
274
|
|
248
275
|
if isinstance(add, ElementBindingMixin):
|
249
276
|
self._bind_str_classes.append(add) # type: ignore
|
250
277
|
|
251
278
|
return self
|
252
279
|
|
253
|
-
def style(self, add: Union[str, Dict[str, Any],
|
280
|
+
def style(self, add: Union[str, Dict[str, Any], TMaybeRef[str]]) -> Self:
|
254
281
|
if isinstance(add, dict):
|
255
282
|
add = {key: value for key, value in add.items()}
|
256
283
|
|
@@ -262,7 +289,7 @@ class Element(Component):
|
|
262
289
|
self._style.update(new_style)
|
263
290
|
return self
|
264
291
|
|
265
|
-
def props(self, add: Union[str, Dict[str, Any],
|
292
|
+
def props(self, add: Union[str, Dict[str, Any], TMaybeRef]) -> Self:
|
266
293
|
if isinstance(add, ElementBindingMixin):
|
267
294
|
self._proxy_props.append(add)
|
268
295
|
return self
|
@@ -326,6 +353,23 @@ class Element(Component):
|
|
326
353
|
self._element_ref = ref
|
327
354
|
return self
|
328
355
|
|
356
|
+
def update_dependencies(
|
357
|
+
self,
|
358
|
+
*,
|
359
|
+
css: Optional[Iterable[Path]] = None,
|
360
|
+
externals: Optional[Dict[str, Path]] = None,
|
361
|
+
):
|
362
|
+
if not self.dependency:
|
363
|
+
return
|
364
|
+
|
365
|
+
if css:
|
366
|
+
self.dependency.css.update(css)
|
367
|
+
|
368
|
+
if externals:
|
369
|
+
self.dependency.externals.update(externals)
|
370
|
+
|
371
|
+
get_app_slot().use_component_dependency(self.dependency.copy(), replace=True)
|
372
|
+
|
329
373
|
def _to_json_dict(self):
|
330
374
|
data = super()._to_json_dict()
|
331
375
|
|
@@ -0,0 +1,63 @@
|
|
1
|
+
import { h, onMounted, ref, computed, watch } from "vue";
|
2
|
+
import hljs from 'highlight.js/lib/core.min.js'
|
3
|
+
|
4
|
+
async function registerLanguage(language) {
|
5
|
+
const langModule = await import(`highlight.js/languages/${language}.min.js`);
|
6
|
+
hljs.registerLanguage(language, langModule.default);
|
7
|
+
}
|
8
|
+
|
9
|
+
|
10
|
+
export default {
|
11
|
+
props: ['code', 'language'],
|
12
|
+
setup(props) {
|
13
|
+
const language = ref(props.language ?? hljs.getLanguage(props.code))
|
14
|
+
|
15
|
+
watch(() => props.language, (newLanguage) => {
|
16
|
+
language.value = newLanguage
|
17
|
+
})
|
18
|
+
|
19
|
+
watch(language, async (newLanguage) => {
|
20
|
+
ready.value = false
|
21
|
+
await registerLanguage(language.value)
|
22
|
+
ready.value = true
|
23
|
+
})
|
24
|
+
|
25
|
+
const ready = ref(false)
|
26
|
+
|
27
|
+
onMounted(async () => {
|
28
|
+
await registerLanguage(language.value)
|
29
|
+
ready.value = true
|
30
|
+
})
|
31
|
+
|
32
|
+
const highlightedCode = computed(() => {
|
33
|
+
if (!ready.value) {
|
34
|
+
return ''
|
35
|
+
}
|
36
|
+
|
37
|
+
if (!language.value) {
|
38
|
+
const result = hljs.highlightAuto(props.code)
|
39
|
+
return result.value
|
40
|
+
}
|
41
|
+
|
42
|
+
const result = hljs.highlight(props.code, { language: language.value })
|
43
|
+
return result.value
|
44
|
+
})
|
45
|
+
|
46
|
+
const classes = computed(() => {
|
47
|
+
if (!ready.value) {
|
48
|
+
return ''
|
49
|
+
}
|
50
|
+
|
51
|
+
return `hljs language-${language.value}`
|
52
|
+
|
53
|
+
})
|
54
|
+
|
55
|
+
|
56
|
+
return () => h("div", { class: classes.value },
|
57
|
+
h('pre', {},
|
58
|
+
h('code', { innerHTML: highlightedCode.value }))
|
59
|
+
);
|
60
|
+
}
|
61
|
+
|
62
|
+
}
|
63
|
+
|
@@ -0,0 +1,117 @@
|
|
1
|
+
from pathlib import Path
|
2
|
+
from typing import ClassVar, Iterable, List, Union
|
3
|
+
from warnings import warn
|
4
|
+
from instaui import ui
|
5
|
+
from instaui.runtime import get_app_slot
|
6
|
+
|
7
|
+
_STATIC_DIR = Path(__file__).parent / "static"
|
8
|
+
_STYLES_DIR = _STATIC_DIR / "styles"
|
9
|
+
_LANGUAGE_DIR = _STATIC_DIR / "languages"
|
10
|
+
_CORE_JS_FILE = _STATIC_DIR / "core.min.js"
|
11
|
+
|
12
|
+
_LANGUAGE_IMPORT_NAME = "highlight.js/languages/"
|
13
|
+
_CORE_JS_IMPORT_NAME_ZERO_MODE = "highlight.js/lib/core.min.js"
|
14
|
+
|
15
|
+
_IMPORT_MAPS = {
|
16
|
+
"highlight.js/lib/": _STATIC_DIR,
|
17
|
+
_LANGUAGE_IMPORT_NAME: _LANGUAGE_DIR,
|
18
|
+
}
|
19
|
+
|
20
|
+
|
21
|
+
class Code(
|
22
|
+
ui.element,
|
23
|
+
esm="./code.js",
|
24
|
+
externals=_IMPORT_MAPS,
|
25
|
+
css=[_STYLES_DIR],
|
26
|
+
):
|
27
|
+
_language_folder: ClassVar[Path] = _LANGUAGE_DIR
|
28
|
+
|
29
|
+
def __init__(
|
30
|
+
self,
|
31
|
+
code: ui.TMaybeRef[str],
|
32
|
+
*,
|
33
|
+
language: ui.TMaybeRef[str] = "python",
|
34
|
+
theme: str = "default",
|
35
|
+
):
|
36
|
+
super().__init__()
|
37
|
+
self.props({"code": code})
|
38
|
+
|
39
|
+
mode = get_app_slot().mode
|
40
|
+
|
41
|
+
if language:
|
42
|
+
self.props({"language": language})
|
43
|
+
|
44
|
+
if mode == "zero":
|
45
|
+
_try_update_dependencies_by_zero(self, language)
|
46
|
+
|
47
|
+
self.update_dependencies(css=[_STYLES_DIR / f"{theme}.min.css"])
|
48
|
+
|
49
|
+
@classmethod
|
50
|
+
def reset_language_folder(cls, folder: Path):
|
51
|
+
"""Reset the language folder for all js files.
|
52
|
+
|
53
|
+
Args:
|
54
|
+
folder (Path): The new language folder.
|
55
|
+
|
56
|
+
Examples
|
57
|
+
.. code-block:: python
|
58
|
+
from instaui import ui
|
59
|
+
|
60
|
+
# must be called outside of page function
|
61
|
+
ui.code.reset_language_folder(Path("my_lang_folder"))
|
62
|
+
"""
|
63
|
+
assert cls.dependency
|
64
|
+
cls.dependency.externals.update({_LANGUAGE_IMPORT_NAME: folder})
|
65
|
+
cls._language_folder = folder
|
66
|
+
|
67
|
+
@classmethod
|
68
|
+
def specified_language_by_zero_mode(
|
69
|
+
cls, folder_or_files: Union[Path, Iterable[Path]]
|
70
|
+
):
|
71
|
+
"""Specify the language files for zero mode.
|
72
|
+
|
73
|
+
Args:
|
74
|
+
folder_or_files (Union[Path, Iterable[Path]]): The folder or files to be imported.
|
75
|
+
|
76
|
+
Examples
|
77
|
+
.. code-block:: python
|
78
|
+
from instaui import ui,zero
|
79
|
+
|
80
|
+
def page():
|
81
|
+
...
|
82
|
+
|
83
|
+
with zero() as z:
|
84
|
+
ui.code.specified_language_by_zero_mode(Path("my_lang_folder"))
|
85
|
+
page()
|
86
|
+
"""
|
87
|
+
if not isinstance(folder_or_files, Iterable):
|
88
|
+
is_dir = folder_or_files.is_dir()
|
89
|
+
files = (
|
90
|
+
list(folder_or_files.glob("*.min.js")) if is_dir else [folder_or_files]
|
91
|
+
)
|
92
|
+
|
93
|
+
else:
|
94
|
+
files = folder_or_files
|
95
|
+
|
96
|
+
externals = {}
|
97
|
+
for file in files:
|
98
|
+
language = file.stem
|
99
|
+
externals[f"{_LANGUAGE_IMPORT_NAME}{language}.min.js"] = file
|
100
|
+
|
101
|
+
cls.dependency.externals.update(externals) # type: ignore
|
102
|
+
|
103
|
+
|
104
|
+
def _try_update_dependencies_by_zero(code: Code, language: ui.TMaybeRef[str]):
|
105
|
+
if isinstance(language, str):
|
106
|
+
code.update_dependencies(
|
107
|
+
externals={
|
108
|
+
f"{_LANGUAGE_IMPORT_NAME}{language}.min.js": code._language_folder
|
109
|
+
/ f"{language}.min.js",
|
110
|
+
_CORE_JS_IMPORT_NAME_ZERO_MODE: _CORE_JS_FILE,
|
111
|
+
}
|
112
|
+
)
|
113
|
+
else:
|
114
|
+
warn(
|
115
|
+
"language must be a string in zero mode , or you can call specified_language_by_zero_mode() to specify the language files",
|
116
|
+
stacklevel=2,
|
117
|
+
)
|
@@ -0,0 +1,307 @@
|
|
1
|
+
/*!
|
2
|
+
Highlight.js v11.10.0 (git: 366a8bd012)
|
3
|
+
(c) 2006-2024 Josh Goebel <hello@joshgoebel.com> and other contributors
|
4
|
+
License: BSD-3-Clause
|
5
|
+
*/
|
6
|
+
function e(t){return t instanceof Map?t.clear=t.delete=t.set=()=>{
|
7
|
+
throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{
|
8
|
+
throw Error("set is read-only")
|
9
|
+
}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{
|
10
|
+
const i=t[n],s=typeof i;"object"!==s&&"function"!==s||Object.isFrozen(i)||e(i)
|
11
|
+
})),t}class t{constructor(e){
|
12
|
+
void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}
|
13
|
+
ignoreMatch(){this.isMatchIgnored=!0}}function n(e){
|
14
|
+
return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")
|
15
|
+
}function i(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t]
|
16
|
+
;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const s=e=>!!e.scope
|
17
|
+
;class r{constructor(e,t){
|
18
|
+
this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){
|
19
|
+
this.buffer+=n(e)}openNode(e){if(!s(e))return;const t=((e,{prefix:t})=>{
|
20
|
+
if(e.startsWith("language:"))return e.replace("language:","language-")
|
21
|
+
;if(e.includes(".")){const n=e.split(".")
|
22
|
+
;return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ")
|
23
|
+
}return`${t}${e}`})(e.scope,{prefix:this.classPrefix});this.span(t)}
|
24
|
+
closeNode(e){s(e)&&(this.buffer+="</span>")}value(){return this.buffer}span(e){
|
25
|
+
this.buffer+=`<span class="${e}">`}}const o=(e={})=>{const t={children:[]}
|
26
|
+
;return Object.assign(t,e),t};class a{constructor(){
|
27
|
+
this.rootNode=o(),this.stack=[this.rootNode]}get top(){
|
28
|
+
return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){
|
29
|
+
this.top.children.push(e)}openNode(e){const t=o({scope:e})
|
30
|
+
;this.add(t),this.stack.push(t)}closeNode(){
|
31
|
+
if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){
|
32
|
+
for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}
|
33
|
+
walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){
|
34
|
+
return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t),
|
35
|
+
t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){
|
36
|
+
"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{
|
37
|
+
a._collapse(e)})))}}class c extends a{constructor(e){super(),this.options=e}
|
38
|
+
addText(e){""!==e&&this.add(e)}startScope(e){this.openNode(e)}endScope(){
|
39
|
+
this.closeNode()}__addSublanguage(e,t){const n=e.root
|
40
|
+
;t&&(n.scope="language:"+t),this.add(n)}toHTML(){
|
41
|
+
return new r(this,this.options).value()}finalize(){
|
42
|
+
return this.closeAllNodes(),!0}}function l(e){
|
43
|
+
return e?"string"==typeof e?e:e.source:null}function g(e){return h("(?=",e,")")}
|
44
|
+
function u(e){return h("(?:",e,")*")}function d(e){return h("(?:",e,")?")}
|
45
|
+
function h(...e){return e.map((e=>l(e))).join("")}function f(...e){const t=(e=>{
|
46
|
+
const t=e[e.length-1]
|
47
|
+
;return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}
|
48
|
+
})(e);return"("+(t.capture?"":"?:")+e.map((e=>l(e))).join("|")+")"}
|
49
|
+
function p(e){return RegExp(e.toString()+"|").exec("").length-1}
|
50
|
+
const b=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./
|
51
|
+
;function m(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n
|
52
|
+
;let i=l(e),s="";for(;i.length>0;){const e=b.exec(i);if(!e){s+=i;break}
|
53
|
+
s+=i.substring(0,e.index),
|
54
|
+
i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?s+="\\"+(Number(e[1])+t):(s+=e[0],
|
55
|
+
"("===e[0]&&n++)}return s})).map((e=>`(${e})`)).join(t)}
|
56
|
+
const E="[a-zA-Z]\\w*",x="[a-zA-Z_]\\w*",w="\\b\\d+(\\.\\d+)?",y="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",_="\\b(0b[01]+)",O={
|
57
|
+
begin:"\\\\[\\s\\S]",relevance:0},k={scope:"string",begin:"'",end:"'",
|
58
|
+
illegal:"\\n",contains:[O]},v={scope:"string",begin:'"',end:'"',illegal:"\\n",
|
59
|
+
contains:[O]},N=(e,t,n={})=>{const s=i({scope:"comment",begin:e,end:t,
|
60
|
+
contains:[]},n);s.contains.push({scope:"doctag",
|
61
|
+
begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
|
62
|
+
end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0})
|
63
|
+
;const r=f("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/)
|
64
|
+
;return s.contains.push({begin:h(/[ ]+/,"(",r,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s
|
65
|
+
},S=N("//","$"),M=N("/\\*","\\*/"),R=N("#","$");var A=Object.freeze({
|
66
|
+
__proto__:null,APOS_STRING_MODE:k,BACKSLASH_ESCAPE:O,BINARY_NUMBER_MODE:{
|
67
|
+
scope:"number",begin:_,relevance:0},BINARY_NUMBER_RE:_,COMMENT:N,
|
68
|
+
C_BLOCK_COMMENT_MODE:M,C_LINE_COMMENT_MODE:S,C_NUMBER_MODE:{scope:"number",
|
69
|
+
begin:y,relevance:0},C_NUMBER_RE:y,END_SAME_AS_BEGIN:e=>Object.assign(e,{
|
70
|
+
"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{
|
71
|
+
t.data._beginMatch!==e[1]&&t.ignoreMatch()}}),HASH_COMMENT_MODE:R,IDENT_RE:E,
|
72
|
+
MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:{begin:"\\.\\s*"+x,relevance:0},
|
73
|
+
NUMBER_MODE:{scope:"number",begin:w,relevance:0},NUMBER_RE:w,
|
74
|
+
PHRASAL_WORDS_MODE:{
|
75
|
+
begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/
|
76
|
+
},QUOTE_STRING_MODE:v,REGEXP_MODE:{scope:"regexp",begin:/\/(?=[^/\n]*\/)/,
|
77
|
+
end:/\/[gimuy]*/,contains:[O,{begin:/\[/,end:/\]/,relevance:0,contains:[O]}]},
|
78
|
+
RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",
|
79
|
+
SHEBANG:(e={})=>{const t=/^#![ ]*\//
|
80
|
+
;return e.binary&&(e.begin=h(t,/.*\b/,e.binary,/\b.*/)),i({scope:"meta",begin:t,
|
81
|
+
end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},
|
82
|
+
TITLE_MODE:{scope:"title",begin:E,relevance:0},UNDERSCORE_IDENT_RE:x,
|
83
|
+
UNDERSCORE_TITLE_MODE:{scope:"title",begin:x,relevance:0}});function j(e,t){
|
84
|
+
"."===e.input[e.index-1]&&t.ignoreMatch()}function I(e,t){
|
85
|
+
void 0!==e.className&&(e.scope=e.className,delete e.className)}function T(e,t){
|
86
|
+
t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",
|
87
|
+
e.__beforeBegin=j,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,
|
88
|
+
void 0===e.relevance&&(e.relevance=0))}function L(e,t){
|
89
|
+
Array.isArray(e.illegal)&&(e.illegal=f(...e.illegal))}function B(e,t){
|
90
|
+
if(e.match){
|
91
|
+
if(e.begin||e.end)throw Error("begin & end are not supported with match")
|
92
|
+
;e.begin=e.match,delete e.match}}function P(e,t){
|
93
|
+
void 0===e.relevance&&(e.relevance=1)}const D=(e,t)=>{if(!e.beforeMatch)return
|
94
|
+
;if(e.starts)throw Error("beforeMatch cannot be used with starts")
|
95
|
+
;const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t]
|
96
|
+
})),e.keywords=n.keywords,e.begin=h(n.beforeMatch,g(n.begin)),e.starts={
|
97
|
+
relevance:0,contains:[Object.assign(n,{endsParent:!0})]
|
98
|
+
},e.relevance=0,delete n.beforeMatch
|
99
|
+
},H=["of","and","for","in","not","or","if","then","parent","list","value"],C="keyword"
|
100
|
+
;function $(e,t,n=C){const i=Object.create(null)
|
101
|
+
;return"string"==typeof e?s(n,e.split(" ")):Array.isArray(e)?s(n,e):Object.keys(e).forEach((n=>{
|
102
|
+
Object.assign(i,$(e[n],t,n))})),i;function s(e,n){
|
103
|
+
t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|")
|
104
|
+
;i[n[0]]=[e,U(n[0],n[1])]}))}}function U(e,t){
|
105
|
+
return t?Number(t):(e=>H.includes(e.toLowerCase()))(e)?0:1}const z={},W=e=>{
|
106
|
+
console.error(e)},X=(e,...t)=>{console.log("WARN: "+e,...t)},G=(e,t)=>{
|
107
|
+
z[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),z[`${e}/${t}`]=!0)
|
108
|
+
},K=Error();function F(e,t,{key:n}){let i=0;const s=e[n],r={},o={}
|
109
|
+
;for(let e=1;e<=t.length;e++)o[e+i]=s[e],r[e+i]=!0,i+=p(t[e-1])
|
110
|
+
;e[n]=o,e[n]._emit=r,e[n]._multi=!0}function Z(e){(e=>{
|
111
|
+
e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,
|
112
|
+
delete e.scope)})(e),"string"==typeof e.beginScope&&(e.beginScope={
|
113
|
+
_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope
|
114
|
+
}),(e=>{if(Array.isArray(e.begin)){
|
115
|
+
if(e.skip||e.excludeBegin||e.returnBegin)throw W("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),
|
116
|
+
K
|
117
|
+
;if("object"!=typeof e.beginScope||null===e.beginScope)throw W("beginScope must be object"),
|
118
|
+
K;F(e,e.begin,{key:"beginScope"}),e.begin=m(e.begin,{joinWith:""})}})(e),(e=>{
|
119
|
+
if(Array.isArray(e.end)){
|
120
|
+
if(e.skip||e.excludeEnd||e.returnEnd)throw W("skip, excludeEnd, returnEnd not compatible with endScope: {}"),
|
121
|
+
K
|
122
|
+
;if("object"!=typeof e.endScope||null===e.endScope)throw W("endScope must be object"),
|
123
|
+
K;F(e,e.end,{key:"endScope"}),e.end=m(e.end,{joinWith:""})}})(e)}function V(e){
|
124
|
+
function t(t,n){
|
125
|
+
return RegExp(l(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))
|
126
|
+
}class n{constructor(){
|
127
|
+
this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}
|
128
|
+
addRule(e,t){
|
129
|
+
t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),
|
130
|
+
this.matchAt+=p(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null)
|
131
|
+
;const e=this.regexes.map((e=>e[1]));this.matcherRe=t(m(e,{joinWith:"|"
|
132
|
+
}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex
|
133
|
+
;const t=this.matcherRe.exec(e);if(!t)return null
|
134
|
+
;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),i=this.matchIndexes[n]
|
135
|
+
;return t.splice(0,n),Object.assign(t,i)}}class s{constructor(){
|
136
|
+
this.rules=[],this.multiRegexes=[],
|
137
|
+
this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){
|
138
|
+
if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n
|
139
|
+
;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))),
|
140
|
+
t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){
|
141
|
+
return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){
|
142
|
+
this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){
|
143
|
+
const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex
|
144
|
+
;let n=t.exec(e)
|
145
|
+
;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{
|
146
|
+
const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}
|
147
|
+
return n&&(this.regexIndex+=n.position+1,
|
148
|
+
this.regexIndex===this.count&&this.considerAll()),n}}
|
149
|
+
if(e.compilerExtensions||(e.compilerExtensions=[]),
|
150
|
+
e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.")
|
151
|
+
;return e.classNameAliases=i(e.classNameAliases||{}),function n(r,o){const a=r
|
152
|
+
;if(r.isCompiled)return a
|
153
|
+
;[I,B,Z,D].forEach((e=>e(r,o))),e.compilerExtensions.forEach((e=>e(r,o))),
|
154
|
+
r.__beforeBegin=null,[T,L,P].forEach((e=>e(r,o))),r.isCompiled=!0;let c=null
|
155
|
+
;return"object"==typeof r.keywords&&r.keywords.$pattern&&(r.keywords=Object.assign({},r.keywords),
|
156
|
+
c=r.keywords.$pattern,
|
157
|
+
delete r.keywords.$pattern),c=c||/\w+/,r.keywords&&(r.keywords=$(r.keywords,e.case_insensitive)),
|
158
|
+
a.keywordPatternRe=t(c,!0),
|
159
|
+
o&&(r.begin||(r.begin=/\B|\b/),a.beginRe=t(a.begin),r.end||r.endsWithParent||(r.end=/\B|\b/),
|
160
|
+
r.end&&(a.endRe=t(a.end)),
|
161
|
+
a.terminatorEnd=l(a.end)||"",r.endsWithParent&&o.terminatorEnd&&(a.terminatorEnd+=(r.end?"|":"")+o.terminatorEnd)),
|
162
|
+
r.illegal&&(a.illegalRe=t(r.illegal)),
|
163
|
+
r.contains||(r.contains=[]),r.contains=[].concat(...r.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>i(e,{
|
164
|
+
variants:null},t)))),e.cachedVariants?e.cachedVariants:q(e)?i(e,{
|
165
|
+
starts:e.starts?i(e.starts):null
|
166
|
+
}):Object.isFrozen(e)?i(e):e))("self"===e?r:e)))),r.contains.forEach((e=>{n(e,a)
|
167
|
+
})),r.starts&&n(r.starts,o),a.matcher=(e=>{const t=new s
|
168
|
+
;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin"
|
169
|
+
}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"
|
170
|
+
}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(a),a}(e)}function q(e){
|
171
|
+
return!!e&&(e.endsWithParent||q(e.starts))}class J extends Error{
|
172
|
+
constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}
|
173
|
+
const Y=n,Q=i,ee=Symbol("nomatch"),te=n=>{
|
174
|
+
const i=Object.create(null),s=Object.create(null),r=[];let o=!0
|
175
|
+
;const a="Could not find the language '{}', did you forget to load/include a language module?",l={
|
176
|
+
disableAutodetect:!0,name:"Plain text",contains:[]};let p={
|
177
|
+
ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,
|
178
|
+
languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",
|
179
|
+
cssSelector:"pre code",languages:null,__emitter:c};function b(e){
|
180
|
+
return p.noHighlightRe.test(e)}function m(e,t,n){let i="",s=""
|
181
|
+
;"object"==typeof t?(i=e,
|
182
|
+
n=t.ignoreIllegals,s=t.language):(G("10.7.0","highlight(lang, code, ...args) has been deprecated."),
|
183
|
+
G("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),
|
184
|
+
s=e,i=t),void 0===n&&(n=!0);const r={code:i,language:s};N("before:highlight",r)
|
185
|
+
;const o=r.result?r.result:E(r.language,r.code,n)
|
186
|
+
;return o.code=r.code,N("after:highlight",o),o}function E(e,n,s,r){
|
187
|
+
const c=Object.create(null);function l(){if(!N.keywords)return void M.addText(R)
|
188
|
+
;let e=0;N.keywordPatternRe.lastIndex=0;let t=N.keywordPatternRe.exec(R),n=""
|
189
|
+
;for(;t;){n+=R.substring(e,t.index)
|
190
|
+
;const s=_.case_insensitive?t[0].toLowerCase():t[0],r=(i=s,N.keywords[i]);if(r){
|
191
|
+
const[e,i]=r
|
192
|
+
;if(M.addText(n),n="",c[s]=(c[s]||0)+1,c[s]<=7&&(A+=i),e.startsWith("_"))n+=t[0];else{
|
193
|
+
const n=_.classNameAliases[e]||e;u(t[0],n)}}else n+=t[0]
|
194
|
+
;e=N.keywordPatternRe.lastIndex,t=N.keywordPatternRe.exec(R)}var i
|
195
|
+
;n+=R.substring(e),M.addText(n)}function g(){null!=N.subLanguage?(()=>{
|
196
|
+
if(""===R)return;let e=null;if("string"==typeof N.subLanguage){
|
197
|
+
if(!i[N.subLanguage])return void M.addText(R)
|
198
|
+
;e=E(N.subLanguage,R,!0,S[N.subLanguage]),S[N.subLanguage]=e._top
|
199
|
+
}else e=x(R,N.subLanguage.length?N.subLanguage:null)
|
200
|
+
;N.relevance>0&&(A+=e.relevance),M.__addSublanguage(e._emitter,e.language)
|
201
|
+
})():l(),R=""}function u(e,t){
|
202
|
+
""!==e&&(M.startScope(t),M.addText(e),M.endScope())}function d(e,t){let n=1
|
203
|
+
;const i=t.length-1;for(;n<=i;){if(!e._emit[n]){n++;continue}
|
204
|
+
const i=_.classNameAliases[e[n]]||e[n],s=t[n];i?u(s,i):(R=s,l(),R=""),n++}}
|
205
|
+
function h(e,t){
|
206
|
+
return e.scope&&"string"==typeof e.scope&&M.openNode(_.classNameAliases[e.scope]||e.scope),
|
207
|
+
e.beginScope&&(e.beginScope._wrap?(u(R,_.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),
|
208
|
+
R=""):e.beginScope._multi&&(d(e.beginScope,t),R="")),N=Object.create(e,{parent:{
|
209
|
+
value:N}}),N}function f(e,n,i){let s=((e,t)=>{const n=e&&e.exec(t)
|
210
|
+
;return n&&0===n.index})(e.endRe,i);if(s){if(e["on:end"]){const i=new t(e)
|
211
|
+
;e["on:end"](n,i),i.isMatchIgnored&&(s=!1)}if(s){
|
212
|
+
for(;e.endsParent&&e.parent;)e=e.parent;return e}}
|
213
|
+
if(e.endsWithParent)return f(e.parent,n,i)}function b(e){
|
214
|
+
return 0===N.matcher.regexIndex?(R+=e[0],1):(T=!0,0)}function m(e){
|
215
|
+
const t=e[0],i=n.substring(e.index),s=f(N,e,i);if(!s)return ee;const r=N
|
216
|
+
;N.endScope&&N.endScope._wrap?(g(),
|
217
|
+
u(t,N.endScope._wrap)):N.endScope&&N.endScope._multi?(g(),
|
218
|
+
d(N.endScope,e)):r.skip?R+=t:(r.returnEnd||r.excludeEnd||(R+=t),
|
219
|
+
g(),r.excludeEnd&&(R=t));do{
|
220
|
+
N.scope&&M.closeNode(),N.skip||N.subLanguage||(A+=N.relevance),N=N.parent
|
221
|
+
}while(N!==s.parent);return s.starts&&h(s.starts,e),r.returnEnd?0:t.length}
|
222
|
+
let w={};function y(i,r){const a=r&&r[0];if(R+=i,null==a)return g(),0
|
223
|
+
;if("begin"===w.type&&"end"===r.type&&w.index===r.index&&""===a){
|
224
|
+
if(R+=n.slice(r.index,r.index+1),!o){const t=Error(`0 width match regex (${e})`)
|
225
|
+
;throw t.languageName=e,t.badRule=w.rule,t}return 1}
|
226
|
+
if(w=r,"begin"===r.type)return(e=>{
|
227
|
+
const n=e[0],i=e.rule,s=new t(i),r=[i.__beforeBegin,i["on:begin"]]
|
228
|
+
;for(const t of r)if(t&&(t(e,s),s.isMatchIgnored))return b(n)
|
229
|
+
;return i.skip?R+=n:(i.excludeBegin&&(R+=n),
|
230
|
+
g(),i.returnBegin||i.excludeBegin||(R=n)),h(i,e),i.returnBegin?0:n.length})(r)
|
231
|
+
;if("illegal"===r.type&&!s){
|
232
|
+
const e=Error('Illegal lexeme "'+a+'" for mode "'+(N.scope||"<unnamed>")+'"')
|
233
|
+
;throw e.mode=N,e}if("end"===r.type){const e=m(r);if(e!==ee)return e}
|
234
|
+
if("illegal"===r.type&&""===a)return 1
|
235
|
+
;if(I>1e5&&I>3*r.index)throw Error("potential infinite loop, way more iterations than matches")
|
236
|
+
;return R+=a,a.length}const _=O(e)
|
237
|
+
;if(!_)throw W(a.replace("{}",e)),Error('Unknown language: "'+e+'"')
|
238
|
+
;const k=V(_);let v="",N=r||k;const S={},M=new p.__emitter(p);(()=>{const e=[]
|
239
|
+
;for(let t=N;t!==_;t=t.parent)t.scope&&e.unshift(t.scope)
|
240
|
+
;e.forEach((e=>M.openNode(e)))})();let R="",A=0,j=0,I=0,T=!1;try{
|
241
|
+
if(_.__emitTokens)_.__emitTokens(n,M);else{for(N.matcher.considerAll();;){
|
242
|
+
I++,T?T=!1:N.matcher.considerAll(),N.matcher.lastIndex=j
|
243
|
+
;const e=N.matcher.exec(n);if(!e)break;const t=y(n.substring(j,e.index),e)
|
244
|
+
;j=e.index+t}y(n.substring(j))}return M.finalize(),v=M.toHTML(),{language:e,
|
245
|
+
value:v,relevance:A,illegal:!1,_emitter:M,_top:N}}catch(t){
|
246
|
+
if(t.message&&t.message.includes("Illegal"))return{language:e,value:Y(n),
|
247
|
+
illegal:!0,relevance:0,_illegalBy:{message:t.message,index:j,
|
248
|
+
context:n.slice(j-100,j+100),mode:t.mode,resultSoFar:v},_emitter:M};if(o)return{
|
249
|
+
language:e,value:Y(n),illegal:!1,relevance:0,errorRaised:t,_emitter:M,_top:N}
|
250
|
+
;throw t}}function x(e,t){t=t||p.languages||Object.keys(i);const n=(e=>{
|
251
|
+
const t={value:Y(e),illegal:!1,relevance:0,_top:l,_emitter:new p.__emitter(p)}
|
252
|
+
;return t._emitter.addText(e),t})(e),s=t.filter(O).filter(v).map((t=>E(t,e,!1)))
|
253
|
+
;s.unshift(n);const r=s.sort(((e,t)=>{
|
254
|
+
if(e.relevance!==t.relevance)return t.relevance-e.relevance
|
255
|
+
;if(e.language&&t.language){if(O(e.language).supersetOf===t.language)return 1
|
256
|
+
;if(O(t.language).supersetOf===e.language)return-1}return 0})),[o,a]=r,c=o
|
257
|
+
;return c.secondBest=a,c}function w(e){let t=null;const n=(e=>{
|
258
|
+
let t=e.className+" ";t+=e.parentNode?e.parentNode.className:""
|
259
|
+
;const n=p.languageDetectRe.exec(t);if(n){const t=O(n[1])
|
260
|
+
;return t||(X(a.replace("{}",n[1])),
|
261
|
+
X("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}
|
262
|
+
return t.split(/\s+/).find((e=>b(e)||O(e)))})(e);if(b(n))return
|
263
|
+
;if(N("before:highlightElement",{el:e,language:n
|
264
|
+
}),e.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e)
|
265
|
+
;if(e.children.length>0&&(p.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),
|
266
|
+
console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),
|
267
|
+
console.warn("The element with unescaped HTML:"),
|
268
|
+
console.warn(e)),p.throwUnescapedHTML))throw new J("One of your code blocks includes unescaped HTML.",e.innerHTML)
|
269
|
+
;t=e;const i=t.textContent,r=n?m(i,{language:n,ignoreIllegals:!0}):x(i)
|
270
|
+
;e.innerHTML=r.value,e.dataset.highlighted="yes",((e,t,n)=>{const i=t&&s[t]||n
|
271
|
+
;e.classList.add("hljs"),e.classList.add("language-"+i)
|
272
|
+
})(e,n,r.language),e.result={language:r.language,re:r.relevance,
|
273
|
+
relevance:r.relevance},r.secondBest&&(e.secondBest={
|
274
|
+
language:r.secondBest.language,relevance:r.secondBest.relevance
|
275
|
+
}),N("after:highlightElement",{el:e,result:r,text:i})}let y=!1;function _(){
|
276
|
+
"loading"!==document.readyState?document.querySelectorAll(p.cssSelector).forEach(w):y=!0
|
277
|
+
}function O(e){return e=(e||"").toLowerCase(),i[e]||i[s[e]]}
|
278
|
+
function k(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{
|
279
|
+
s[e.toLowerCase()]=t}))}function v(e){const t=O(e)
|
280
|
+
;return t&&!t.disableAutodetect}function N(e,t){const n=e;r.forEach((e=>{
|
281
|
+
e[n]&&e[n](t)}))}
|
282
|
+
"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{
|
283
|
+
y&&_()}),!1),Object.assign(n,{highlight:m,highlightAuto:x,highlightAll:_,
|
284
|
+
highlightElement:w,
|
285
|
+
highlightBlock:e=>(G("10.7.0","highlightBlock will be removed entirely in v12.0"),
|
286
|
+
G("10.7.0","Please use highlightElement now."),w(e)),configure:e=>{p=Q(p,e)},
|
287
|
+
initHighlighting:()=>{
|
288
|
+
_(),G("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},
|
289
|
+
initHighlightingOnLoad:()=>{
|
290
|
+
_(),G("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")
|
291
|
+
},registerLanguage:(e,t)=>{let s=null;try{s=t(n)}catch(t){
|
292
|
+
if(W("Language definition for '{}' could not be registered.".replace("{}",e)),
|
293
|
+
!o)throw t;W(t),s=l}
|
294
|
+
s.name||(s.name=e),i[e]=s,s.rawDefinition=t.bind(null,n),s.aliases&&k(s.aliases,{
|
295
|
+
languageName:e})},unregisterLanguage:e=>{delete i[e]
|
296
|
+
;for(const t of Object.keys(s))s[t]===e&&delete s[t]},
|
297
|
+
listLanguages:()=>Object.keys(i),getLanguage:O,registerAliases:k,
|
298
|
+
autoDetection:v,inherit:Q,addPlugin:e=>{(e=>{
|
299
|
+
e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{
|
300
|
+
e["before:highlightBlock"](Object.assign({block:t.el},t))
|
301
|
+
}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{
|
302
|
+
e["after:highlightBlock"](Object.assign({block:t.el},t))})})(e),r.push(e)},
|
303
|
+
removePlugin:e=>{const t=r.indexOf(e);-1!==t&&r.splice(t,1)}}),n.debugMode=()=>{
|
304
|
+
o=!1},n.safeMode=()=>{o=!0},n.versionString="11.10.0",n.regex={concat:h,
|
305
|
+
lookahead:g,either:f,optional:d,anyNumberOfTimes:u}
|
306
|
+
;for(const t in A)"object"==typeof A[t]&&e(A[t]);return Object.assign(n,A),n
|
307
|
+
},ne=te({});ne.newInstance=()=>te({});export{ne as default};
|