vue-markdown-mini
Version:
- 一个基于Vue的Markdown渲染组件,支持实时预览、主题切换和自定义扩展,适用于快速构建内容丰富的Web应用。
1,074 lines • 1.63 MB
JavaScript
var P_ = Object.defineProperty;
var k_ = (t, e, n) => e in t ? P_(t, e, { enumerable: !0, configurable: !0, writable: !0, value: n }) : t[e] = n;
var Nn = (t, e, n) => k_(t, typeof e != "symbol" ? e + "" : e, n);
import { defineComponent as a_, ref as at, computed as ln, watch as Lt, createElementBlock as $e, openBlock as ze, normalizeClass as sn, renderSlot as hn, createVNode as F_, createElementVNode as rt, toDisplayString as Ko, unref as Qo, Transition as U_, withCtx as B_, createCommentVNode as wt, createTextVNode as Xo, useSlots as G_, nextTick as Y_, h as Mt, onMounted as q_, Fragment as H_, createBlock as V_, resolveDynamicComponent as z_ } from "vue";
import On from "mermaid";
function W_(t) {
return t && t.__esModule && Object.prototype.hasOwnProperty.call(t, "default") ? t.default : t;
}
var An, Zo;
function $_() {
if (Zo) return An;
Zo = 1;
function t(f) {
return f instanceof Map ? f.clear = f.delete = f.set = function() {
throw new Error("map is read-only");
} : f instanceof Set && (f.add = f.clear = f.delete = function() {
throw new Error("set is read-only");
}), Object.freeze(f), Object.getOwnPropertyNames(f).forEach((h) => {
const D = f[h], H = typeof D;
(H === "object" || H === "function") && !Object.isFrozen(D) && t(D);
}), f;
}
class e {
/**
* @param {CompiledMode} mode
*/
constructor(h) {
h.data === void 0 && (h.data = {}), this.data = h.data, this.isMatchIgnored = !1;
}
ignoreMatch() {
this.isMatchIgnored = !0;
}
}
function n(f) {
return f.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
}
function a(f, ...h) {
const D = /* @__PURE__ */ Object.create(null);
for (const H in f)
D[H] = f[H];
return h.forEach(function(H) {
for (const _e in H)
D[_e] = H[_e];
}), /** @type {T} */
D;
}
const i = "</span>", r = (f) => !!f.scope, s = (f, { prefix: h }) => {
if (f.startsWith("language:"))
return f.replace("language:", "language-");
if (f.includes(".")) {
const D = f.split(".");
return [
`${h}${D.shift()}`,
...D.map((H, _e) => `${H}${"_".repeat(_e + 1)}`)
].join(" ");
}
return `${h}${f}`;
};
class o {
/**
* Creates a new HTMLRenderer
*
* @param {Tree} parseTree - the parse tree (must support `walk` API)
* @param {{classPrefix: string}} options
*/
constructor(h, D) {
this.buffer = "", this.classPrefix = D.classPrefix, h.walk(this);
}
/**
* Adds texts to the output stream
*
* @param {string} text */
addText(h) {
this.buffer += n(h);
}
/**
* Adds a node open to the output stream (if needed)
*
* @param {Node} node */
openNode(h) {
if (!r(h)) return;
const D = s(
h.scope,
{ prefix: this.classPrefix }
);
this.span(D);
}
/**
* Adds a node close to the output stream (if needed)
*
* @param {Node} node */
closeNode(h) {
r(h) && (this.buffer += i);
}
/**
* returns the accumulated buffer
*/
value() {
return this.buffer;
}
// helpers
/**
* Builds a span element
*
* @param {string} className */
span(h) {
this.buffer += `<span class="${h}">`;
}
}
const l = (f = {}) => {
const h = { children: [] };
return Object.assign(h, f), h;
};
class c {
constructor() {
this.rootNode = l(), this.stack = [this.rootNode];
}
get top() {
return this.stack[this.stack.length - 1];
}
get root() {
return this.rootNode;
}
/** @param {Node} node */
add(h) {
this.top.children.push(h);
}
/** @param {string} scope */
openNode(h) {
const D = l({ scope: h });
this.add(D), this.stack.push(D);
}
closeNode() {
if (this.stack.length > 1)
return this.stack.pop();
}
closeAllNodes() {
for (; this.closeNode(); ) ;
}
toJSON() {
return JSON.stringify(this.rootNode, null, 4);
}
/**
* @typedef { import("./html_renderer").Renderer } Renderer
* @param {Renderer} builder
*/
walk(h) {
return this.constructor._walk(h, this.rootNode);
}
/**
* @param {Renderer} builder
* @param {Node} node
*/
static _walk(h, D) {
return typeof D == "string" ? h.addText(D) : D.children && (h.openNode(D), D.children.forEach((H) => this._walk(h, H)), h.closeNode(D)), h;
}
/**
* @param {Node} node
*/
static _collapse(h) {
typeof h != "string" && h.children && (h.children.every((D) => typeof D == "string") ? h.children = [h.children.join("")] : h.children.forEach((D) => {
c._collapse(D);
}));
}
}
class _ extends c {
/**
* @param {*} options
*/
constructor(h) {
super(), this.options = h;
}
/**
* @param {string} text
*/
addText(h) {
h !== "" && this.add(h);
}
/** @param {string} scope */
startScope(h) {
this.openNode(h);
}
endScope() {
this.closeNode();
}
/**
* @param {Emitter & {root: DataNode}} emitter
* @param {string} name
*/
__addSublanguage(h, D) {
const H = h.root;
D && (H.scope = `language:${D}`), this.add(H);
}
toHTML() {
return new o(this, this.options).value();
}
finalize() {
return this.closeAllNodes(), !0;
}
}
function u(f) {
return f ? typeof f == "string" ? f : f.source : null;
}
function m(f) {
return b("(?=", f, ")");
}
function d(f) {
return b("(?:", f, ")*");
}
function p(f) {
return b("(?:", f, ")?");
}
function b(...f) {
return f.map((D) => u(D)).join("");
}
function S(f) {
const h = f[f.length - 1];
return typeof h == "object" && h.constructor === Object ? (f.splice(f.length - 1, 1), h) : {};
}
function N(...f) {
return "(" + (S(f).capture ? "" : "?:") + f.map((H) => u(H)).join("|") + ")";
}
function g(f) {
return new RegExp(f.toString() + "|").exec("").length - 1;
}
function E(f, h) {
const D = f && f.exec(h);
return D && D.index === 0;
}
const C = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;
function T(f, { joinWith: h }) {
let D = 0;
return f.map((H) => {
D += 1;
const _e = D;
let de = u(H), k = "";
for (; de.length > 0; ) {
const w = C.exec(de);
if (!w) {
k += de;
break;
}
k += de.substring(0, w.index), de = de.substring(w.index + w[0].length), w[0][0] === "\\" && w[1] ? k += "\\" + String(Number(w[1]) + _e) : (k += w[0], w[0] === "(" && D++);
}
return k;
}).map((H) => `(${H})`).join(h);
}
const R = /\b\B/, O = "[a-zA-Z]\\w*", A = "[a-zA-Z_]\\w*", M = "\\b\\d+(\\.\\d+)?", B = "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", y = "\\b(0b[01]+)", G = "!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", Q = (f = {}) => {
const h = /^#![ ]*\//;
return f.binary && (f.begin = b(
h,
/.*\b/,
f.binary,
/\b.*/
)), a({
scope: "meta",
begin: h,
end: /$/,
relevance: 0,
/** @type {ModeCallback} */
"on:begin": (D, H) => {
D.index !== 0 && H.ignoreMatch();
}
}, f);
}, K = {
begin: "\\\\[\\s\\S]",
relevance: 0
}, q = {
scope: "string",
begin: "'",
end: "'",
illegal: "\\n",
contains: [K]
}, v = {
scope: "string",
begin: '"',
end: '"',
illegal: "\\n",
contains: [K]
}, U = {
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/
}, L = function(f, h, D = {}) {
const H = a(
{
scope: "comment",
begin: f,
end: h,
contains: []
},
D
);
H.contains.push({
scope: "doctag",
// hack to avoid the space from being included. the space is necessary to
// match here to prevent the plain text rule below from gobbling up doctags
begin: "[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
end: /(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,
excludeBegin: !0,
relevance: 0
});
const _e = N(
// list of common 1 and 2 letter words in English
"I",
"a",
"is",
"so",
"us",
"to",
"at",
"if",
"in",
"it",
"on",
// note: this is not an exhaustive list of contractions, just popular ones
/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,
// contractions - can't we'd they're let's, etc
/[A-Za-z]+[-][a-z]+/,
// `no-way`, etc.
/[A-Za-z][a-z]{2,}/
// allow capitalized words at beginning of sentences
);
return H.contains.push(
{
// TODO: how to include ", (, ) without breaking grammars that use these for
// comment delimiters?
// begin: /[ ]+([()"]?([A-Za-z'-]{3,}|is|a|I|so|us|[tT][oO]|at|if|in|it|on)[.]?[()":]?([.][ ]|[ ]|\))){3}/
// ---
// this tries to find sequences of 3 english words in a row (without any
// "programming" type syntax) this gives us a strong signal that we've
// TRULY found a comment - vs perhaps scanning with the wrong language.
// It's possible to find something that LOOKS like the start of the
// comment - but then if there is no readable text - good chance it is a
// false match and not a comment.
//
// for a visual example please see:
// https://github.com/highlightjs/highlight.js/issues/2827
begin: b(
/[ ]+/,
// necessary to prevent us gobbling up doctags like /* @author Bob Mcgill */
"(",
_e,
/[.]?[:]?([.][ ]|[ ])/,
"){3}"
)
// look for 3 words in a row
}
), H;
}, z = L("//", "$"), ne = L("/\\*", "\\*/"), se = L("#", "$"), re = {
scope: "number",
begin: M,
relevance: 0
}, Ee = {
scope: "number",
begin: B,
relevance: 0
}, ae = {
scope: "number",
begin: y,
relevance: 0
}, ie = {
scope: "regexp",
begin: /\/(?=[^/\n]*\/)/,
end: /\/[gimuy]*/,
contains: [
K,
{
begin: /\[/,
end: /\]/,
relevance: 0,
contains: [K]
}
]
}, pe = {
scope: "title",
begin: O,
relevance: 0
}, ee = {
scope: "title",
begin: A,
relevance: 0
}, Z = {
// excludes method names from keyword processing
begin: "\\.\\s*" + A,
relevance: 0
};
var ue = /* @__PURE__ */ Object.freeze({
__proto__: null,
APOS_STRING_MODE: q,
BACKSLASH_ESCAPE: K,
BINARY_NUMBER_MODE: ae,
BINARY_NUMBER_RE: y,
COMMENT: L,
C_BLOCK_COMMENT_MODE: ne,
C_LINE_COMMENT_MODE: z,
C_NUMBER_MODE: Ee,
C_NUMBER_RE: B,
END_SAME_AS_BEGIN: function(f) {
return Object.assign(
f,
{
/** @type {ModeCallback} */
"on:begin": (h, D) => {
D.data._beginMatch = h[1];
},
/** @type {ModeCallback} */
"on:end": (h, D) => {
D.data._beginMatch !== h[1] && D.ignoreMatch();
}
}
);
},
HASH_COMMENT_MODE: se,
IDENT_RE: O,
MATCH_NOTHING_RE: R,
METHOD_GUARD: Z,
NUMBER_MODE: re,
NUMBER_RE: M,
PHRASAL_WORDS_MODE: U,
QUOTE_STRING_MODE: v,
REGEXP_MODE: ie,
RE_STARTERS_RE: G,
SHEBANG: Q,
TITLE_MODE: pe,
UNDERSCORE_IDENT_RE: A,
UNDERSCORE_TITLE_MODE: ee
});
function ge(f, h) {
f.input[f.index - 1] === "." && h.ignoreMatch();
}
function Ne(f, h) {
f.className !== void 0 && (f.scope = f.className, delete f.className);
}
function ve(f, h) {
h && f.beginKeywords && (f.begin = "\\b(" + f.beginKeywords.split(" ").join("|") + ")(?!\\.)(?=\\b|\\s)", f.__beforeBegin = ge, f.keywords = f.keywords || f.beginKeywords, delete f.beginKeywords, f.relevance === void 0 && (f.relevance = 0));
}
function Et(f, h) {
Array.isArray(f.illegal) && (f.illegal = N(...f.illegal));
}
function qt(f, h) {
if (f.match) {
if (f.begin || f.end) throw new Error("begin & end are not supported with match");
f.begin = f.match, delete f.match;
}
}
function it(f, h) {
f.relevance === void 0 && (f.relevance = 1);
}
const gt = (f, h) => {
if (!f.beforeMatch) return;
if (f.starts) throw new Error("beforeMatch cannot be used with starts");
const D = Object.assign({}, f);
Object.keys(f).forEach((H) => {
delete f[H];
}), f.keywords = D.keywords, f.begin = b(D.beforeMatch, m(D.begin)), f.starts = {
relevance: 0,
contains: [
Object.assign(D, { endsParent: !0 })
]
}, f.relevance = 0, delete D.beforeMatch;
}, St = [
"of",
"and",
"for",
"in",
"not",
"or",
"if",
"then",
"parent",
// common variable name
"list",
// common variable name
"value"
// common variable name
], Ht = "keyword";
function ft(f, h, D = Ht) {
const H = /* @__PURE__ */ Object.create(null);
return typeof f == "string" ? _e(D, f.split(" ")) : Array.isArray(f) ? _e(D, f) : Object.keys(f).forEach(function(de) {
Object.assign(
H,
ft(f[de], h, de)
);
}), H;
function _e(de, k) {
h && (k = k.map((w) => w.toLowerCase())), k.forEach(function(w) {
const Y = w.split("|");
H[Y[0]] = [de, ot(Y[0], Y[1])];
});
}
}
function ot(f, h) {
return h ? Number(h) : Vt(f) ? 0 : 1;
}
function Vt(f) {
return St.includes(f.toLowerCase());
}
const bt = {}, Pe = (f) => {
console.error(f);
}, We = (f, ...h) => {
console.log(`WARN: ${f}`, ...h);
}, he = (f, h) => {
bt[`${f}/${h}`] || (console.log(`Deprecated as of ${f}. ${h}`), bt[`${f}/${h}`] = !0);
}, je = new Error();
function Tt(f, h, { key: D }) {
let H = 0;
const _e = f[D], de = {}, k = {};
for (let w = 1; w <= h.length; w++)
k[w + H] = _e[w], de[w + H] = !0, H += g(h[w - 1]);
f[D] = k, f[D]._emit = de, f[D]._multi = !0;
}
function Ct(f) {
if (Array.isArray(f.begin)) {
if (f.skip || f.excludeBegin || f.returnBegin)
throw Pe("skip, excludeBegin, returnBegin not compatible with beginScope: {}"), je;
if (typeof f.beginScope != "object" || f.beginScope === null)
throw Pe("beginScope must be object"), je;
Tt(f, f.begin, { key: "beginScope" }), f.begin = T(f.begin, { joinWith: "" });
}
}
function st(f) {
if (Array.isArray(f.end)) {
if (f.skip || f.excludeEnd || f.returnEnd)
throw Pe("skip, excludeEnd, returnEnd not compatible with endScope: {}"), je;
if (typeof f.endScope != "object" || f.endScope === null)
throw Pe("endScope must be object"), je;
Tt(f, f.end, { key: "endScope" }), f.end = T(f.end, { joinWith: "" });
}
}
function zt(f) {
f.scope && typeof f.scope == "object" && f.scope !== null && (f.beginScope = f.scope, delete f.scope);
}
function Rt(f) {
zt(f), typeof f.beginScope == "string" && (f.beginScope = { _wrap: f.beginScope }), typeof f.endScope == "string" && (f.endScope = { _wrap: f.endScope }), Ct(f), st(f);
}
function Wt(f) {
function h(k, w) {
return new RegExp(
u(k),
"m" + (f.case_insensitive ? "i" : "") + (f.unicodeRegex ? "u" : "") + (w ? "g" : "")
);
}
class D {
constructor() {
this.matchIndexes = {}, this.regexes = [], this.matchAt = 1, this.position = 0;
}
// @ts-ignore
addRule(w, Y) {
Y.position = this.position++, this.matchIndexes[this.matchAt] = Y, this.regexes.push([Y, w]), this.matchAt += g(w) + 1;
}
compile() {
this.regexes.length === 0 && (this.exec = () => null);
const w = this.regexes.map((Y) => Y[1]);
this.matcherRe = h(T(w, { joinWith: "|" }), !0), this.lastIndex = 0;
}
/** @param {string} s */
exec(w) {
this.matcherRe.lastIndex = this.lastIndex;
const Y = this.matcherRe.exec(w);
if (!Y)
return null;
const fe = Y.findIndex((ct, Xt) => Xt > 0 && ct !== void 0), me = this.matchIndexes[fe];
return Y.splice(0, fe), Object.assign(Y, me);
}
}
class H {
constructor() {
this.rules = [], this.multiRegexes = [], this.count = 0, this.lastIndex = 0, this.regexIndex = 0;
}
// @ts-ignore
getMatcher(w) {
if (this.multiRegexes[w]) return this.multiRegexes[w];
const Y = new D();
return this.rules.slice(w).forEach(([fe, me]) => Y.addRule(fe, me)), Y.compile(), this.multiRegexes[w] = Y, Y;
}
resumingScanAtSamePosition() {
return this.regexIndex !== 0;
}
considerAll() {
this.regexIndex = 0;
}
// @ts-ignore
addRule(w, Y) {
this.rules.push([w, Y]), Y.type === "begin" && this.count++;
}
/** @param {string} s */
exec(w) {
const Y = this.getMatcher(this.regexIndex);
Y.lastIndex = this.lastIndex;
let fe = Y.exec(w);
if (this.resumingScanAtSamePosition() && !(fe && fe.index === this.lastIndex)) {
const me = this.getMatcher(0);
me.lastIndex = this.lastIndex + 1, fe = me.exec(w);
}
return fe && (this.regexIndex += fe.position + 1, this.regexIndex === this.count && this.considerAll()), fe;
}
}
function _e(k) {
const w = new H();
return k.contains.forEach((Y) => w.addRule(Y.begin, { rule: Y, type: "begin" })), k.terminatorEnd && w.addRule(k.terminatorEnd, { type: "end" }), k.illegal && w.addRule(k.illegal, { type: "illegal" }), w;
}
function de(k, w) {
const Y = (
/** @type CompiledMode */
k
);
if (k.isCompiled) return Y;
[
Ne,
// do this early so compiler extensions generally don't have to worry about
// the distinction between match/begin
qt,
Rt,
gt
].forEach((me) => me(k, w)), f.compilerExtensions.forEach((me) => me(k, w)), k.__beforeBegin = null, [
ve,
// do this later so compiler extensions that come earlier have access to the
// raw array if they wanted to perhaps manipulate it, etc.
Et,
// default to 1 relevance if not specified
it
].forEach((me) => me(k, w)), k.isCompiled = !0;
let fe = null;
return typeof k.keywords == "object" && k.keywords.$pattern && (k.keywords = Object.assign({}, k.keywords), fe = k.keywords.$pattern, delete k.keywords.$pattern), fe = fe || /\w+/, k.keywords && (k.keywords = ft(k.keywords, f.case_insensitive)), Y.keywordPatternRe = h(fe, !0), w && (k.begin || (k.begin = /\B|\b/), Y.beginRe = h(Y.begin), !k.end && !k.endsWithParent && (k.end = /\B|\b/), k.end && (Y.endRe = h(Y.end)), Y.terminatorEnd = u(Y.end) || "", k.endsWithParent && w.terminatorEnd && (Y.terminatorEnd += (k.end ? "|" : "") + w.terminatorEnd)), k.illegal && (Y.illegalRe = h(
/** @type {RegExp | string} */
k.illegal
)), k.contains || (k.contains = []), k.contains = [].concat(...k.contains.map(function(me) {
return $t(me === "self" ? k : me);
})), k.contains.forEach(function(me) {
de(
/** @type Mode */
me,
Y
);
}), k.starts && de(k.starts, w), Y.matcher = _e(Y), Y;
}
if (f.compilerExtensions || (f.compilerExtensions = []), f.contains && f.contains.includes("self"))
throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");
return f.classNameAliases = a(f.classNameAliases || {}), de(
/** @type Mode */
f
);
}
function Nt(f) {
return f ? f.endsWithParent || Nt(f.starts) : !1;
}
function $t(f) {
return f.variants && !f.cachedVariants && (f.cachedVariants = f.variants.map(function(h) {
return a(f, { variants: null }, h);
})), f.cachedVariants ? f.cachedVariants : Nt(f) ? a(f, { starts: f.starts ? a(f.starts) : null }) : Object.isFrozen(f) ? a(f) : f;
}
var Kt = "11.11.1";
class Qt extends Error {
constructor(h, D) {
super(h), this.name = "HTMLInjectionError", this.html = D;
}
}
const lt = n, ht = a, J = Symbol("nomatch"), et = 7, Ye = function(f) {
const h = /* @__PURE__ */ Object.create(null), D = /* @__PURE__ */ Object.create(null), H = [];
let _e = !0;
const de = "Could not find the language '{}', did you forget to load/include a language module?", k = { disableAutodetect: !0, name: "Plain text", contains: [] };
let w = {
ignoreUnescapedHTML: !1,
throwUnescapedHTML: !1,
noHighlightRe: /^(no-?highlight)$/i,
languageDetectRe: /\blang(?:uage)?-([\w-]+)\b/i,
classPrefix: "hljs-",
cssSelector: "pre code",
languages: null,
// beta configuration options, subject to change, welcome to discuss
// https://github.com/highlightjs/highlight.js/issues/1086
__emitter: _
};
function Y(I) {
return w.noHighlightRe.test(I);
}
function fe(I) {
let F = I.className + " ";
F += I.parentNode ? I.parentNode.className : "";
const $ = w.languageDetectRe.exec(F);
if ($) {
const te = He($[1]);
return te || (We(de.replace("{}", $[1])), We("Falling back to no-highlight mode for this block.", I)), te ? $[1] : "no-highlight";
}
return F.split(/\s+/).find((te) => Y(te) || He(te));
}
function me(I, F, $) {
let te = "", Se = "";
typeof F == "object" ? (te = I, $ = F.ignoreIllegals, Se = F.language) : (he("10.7.0", "highlight(lang, code, ...args) has been deprecated."), he("10.7.0", `Please use highlight(code, options) instead.
https://github.com/highlightjs/highlight.js/issues/2277`), Se = I, te = F), $ === void 0 && ($ = !0);
const ye = {
code: te,
language: Se
};
At("before:highlight", ye);
const Ve = ye.result ? ye.result : ct(ye.language, ye.code, $);
return Ve.code = ye.code, At("after:highlight", Ve), Ve;
}
function ct(I, F, $, te) {
const Se = /* @__PURE__ */ Object.create(null);
function ye(x, P) {
return x.keywords[P];
}
function Ve() {
if (!V.keywords) {
be.addText(j);
return;
}
let x = 0;
V.keywordPatternRe.lastIndex = 0;
let P = V.keywordPatternRe.exec(j), W = "";
for (; P; ) {
W += j.substring(x, P.index);
const X = De.case_insensitive ? P[0].toLowerCase() : P[0], Te = ye(V, X);
if (Te) {
const [xe, Wo] = Te;
if (be.addText(W), W = "", Se[X] = (Se[X] || 0) + 1, Se[X] <= et && (tt += Wo), xe.startsWith("_"))
W += P[0];
else {
const $o = De.classNameAliases[xe] || xe;
Le(P[0], $o);
}
} else
W += P[0];
x = V.keywordPatternRe.lastIndex, P = V.keywordPatternRe.exec(j);
}
W += j.substring(x), be.addText(W);
}
function It() {
if (j === "") return;
let x = null;
if (typeof V.subLanguage == "string") {
if (!h[V.subLanguage]) {
be.addText(j);
return;
}
x = ct(V.subLanguage, j, !0, en[V.subLanguage]), en[V.subLanguage] = /** @type {CompiledMode} */
x._top;
} else
x = Zt(j, V.subLanguage.length ? V.subLanguage : null);
V.relevance > 0 && (tt += x.relevance), be.__addSublanguage(x._emitter, x.language);
}
function Oe() {
V.subLanguage != null ? It() : Ve(), j = "";
}
function Le(x, P) {
x !== "" && (be.startScope(P), be.addText(x), be.endScope());
}
function bn(x, P) {
let W = 1;
const X = P.length - 1;
for (; W <= X; ) {
if (!x._emit[W]) {
W++;
continue;
}
const Te = De.classNameAliases[x[W]] || x[W], xe = P[W];
Te ? Le(xe, Te) : (j = xe, Ve(), j = ""), W++;
}
}
function Tn(x, P) {
return x.scope && typeof x.scope == "string" && be.openNode(De.classNameAliases[x.scope] || x.scope), x.beginScope && (x.beginScope._wrap ? (Le(j, De.classNameAliases[x.beginScope._wrap] || x.beginScope._wrap), j = "") : x.beginScope._multi && (bn(x.beginScope, P), j = "")), V = Object.create(x, { parent: { value: V } }), V;
}
function Cn(x, P, W) {
let X = E(x.endRe, W);
if (X) {
if (x["on:end"]) {
const Te = new e(x);
x["on:end"](P, Te), Te.isMatchIgnored && (X = !1);
}
if (X) {
for (; x.endsParent && x.parent; )
x = x.parent;
return x;
}
}
if (x.endsWithParent)
return Cn(x.parent, P, W);
}
function qo(x) {
return V.matcher.regexIndex === 0 ? (j += x[0], 1) : (xt = !0, 0);
}
function Ho(x) {
const P = x[0], W = x.rule, X = new e(W), Te = [W.__beforeBegin, W["on:begin"]];
for (const xe of Te)
if (xe && (xe(x, X), X.isMatchIgnored))
return qo(P);
return W.skip ? j += P : (W.excludeBegin && (j += P), Oe(), !W.returnBegin && !W.excludeBegin && (j = P)), Tn(W, x), W.returnBegin ? 0 : P.length;
}
function Vo(x) {
const P = x[0], W = F.substring(x.index), X = Cn(V, x, W);
if (!X)
return J;
const Te = V;
V.endScope && V.endScope._wrap ? (Oe(), Le(P, V.endScope._wrap)) : V.endScope && V.endScope._multi ? (Oe(), bn(V.endScope, x)) : Te.skip ? j += P : (Te.returnEnd || Te.excludeEnd || (j += P), Oe(), Te.excludeEnd && (j = P));
do
V.scope && be.closeNode(), !V.skip && !V.subLanguage && (tt += V.relevance), V = V.parent;
while (V !== X.parent);
return X.starts && Tn(X.starts, x), Te.returnEnd ? 0 : P.length;
}
function zo() {
const x = [];
for (let P = V; P !== De; P = P.parent)
P.scope && x.unshift(P.scope);
x.forEach((P) => be.openNode(P));
}
let vt = {};
function jt(x, P) {
const W = P && P[0];
if (j += x, W == null)
return Oe(), 0;
if (vt.type === "begin" && P.type === "end" && vt.index === P.index && W === "") {
if (j += F.slice(P.index, P.index + 1), !_e) {
const X = new Error(`0 width match regex (${I})`);
throw X.languageName = I, X.badRule = vt.rule, X;
}
return 1;
}
if (vt = P, P.type === "begin")
return Ho(P);
if (P.type === "illegal" && !$) {
const X = new Error('Illegal lexeme "' + W + '" for mode "' + (V.scope || "<unnamed>") + '"');
throw X.mode = V, X;
} else if (P.type === "end") {
const X = Vo(P);
if (X !== J)
return X;
}
if (P.type === "illegal" && W === "")
return j += `
`, 1;
if (Dt > 1e5 && Dt > P.index * 3)
throw new Error("potential infinite loop, way more iterations than matches");
return j += W, W.length;
}
const De = He(I);
if (!De)
throw Pe(de.replace("{}", I)), new Error('Unknown language: "' + I + '"');
const Rn = Wt(De);
let yt = "", V = te || Rn;
const en = {}, be = new w.__emitter(w);
zo();
let j = "", tt = 0, ke = 0, Dt = 0, xt = !1;
try {
if (De.__emitTokens)
De.__emitTokens(F, be);
else {
for (V.matcher.considerAll(); ; ) {
Dt++, xt ? xt = !1 : V.matcher.considerAll(), V.matcher.lastIndex = ke;
const x = V.matcher.exec(F);
if (!x) break;
const P = F.substring(ke, x.index), W = jt(P, x);
ke = x.index + W;
}
jt(F.substring(ke));
}
return be.finalize(), yt = be.toHTML(), {
language: I,
value: yt,
relevance: tt,
illegal: !1,
_emitter: be,
_top: V
};
} catch (x) {
if (x.message && x.message.includes("Illegal"))
return {
language: I,
value: lt(F),
illegal: !0,
relevance: 0,
_illegalBy: {
message: x.message,
index: ke,
context: F.slice(ke - 100, ke + 100),
mode: x.mode,
resultSoFar: yt
},
_emitter: be
};
if (_e)
return {
language: I,
value: lt(F),
illegal: !1,
relevance: 0,
errorRaised: x,
_emitter: be,
_top: V
};
throw x;
}
}
function Xt(I) {
const F = {
value: lt(I),
illegal: !1,
relevance: 0,
_top: k,
_emitter: new w.__emitter(w)
};
return F._emitter.addText(I), F;
}
function Zt(I, F) {
F = F || w.languages || Object.keys(h);
const $ = Xt(I), te = F.filter(He).filter(fn).map(
(Oe) => ct(Oe, I, !1)
);
te.unshift($);
const Se = te.sort((Oe, Le) => {
if (Oe.relevance !== Le.relevance) return Le.relevance - Oe.relevance;
if (Oe.language && Le.language) {
if (He(Oe.language).supersetOf === Le.language)
return 1;
if (He(Le.language).supersetOf === Oe.language)
return -1;
}
return 0;
}), [ye, Ve] = Se, It = ye;
return It.secondBest = Ve, It;
}
function xo(I, F, $) {
const te = F && D[F] || $;
I.classList.add("hljs"), I.classList.add(`language-${te}`);
}
function Jt(I) {
let F = null;
const $ = fe(I);
if (Y($)) return;
if (At(
"before:highlightElement",
{ el: I, language: $ }
), I.dataset.highlighted) {
console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.", I);
return;
}
if (I.children.length > 0 && (w.ignoreUnescapedHTML || (console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."), console.warn("https://github.com/highlightjs/highlight.js/wiki/security"), console.warn("The element with unescaped HTML:"), console.warn(I)), w.throwUnescapedHTML))
throw new Qt(
"One of your code blocks includes unescaped HTML.",
I.innerHTML
);
F = I;
const te = F.textContent, Se = $ ? me(te, { language: $, ignoreIllegals: !0 }) : Zt(te);
I.innerHTML = Se.value, I.dataset.highlighted = "yes", xo(I, $, Se.language), I.result = {
language: Se.language,
// TODO: remove with version 11.0
re: Se.relevance,
relevance: Se.relevance
}, Se.secondBest && (I.secondBest = {
language: Se.secondBest.language,
relevance: Se.secondBest.relevance
}), At("after:highlightElement", { el: I, result: Se, text: te });
}
function Mo(I) {
w = ht(w, I);
}
const Lo = () => {
Ot(), he("10.6.0", "initHighlighting() deprecated. Use highlightAll() now.");
};
function wo() {
Ot(), he("10.6.0", "initHighlightingOnLoad() deprecated. Use highlightAll() now.");
}
let gn = !1;
function Ot() {
function I() {
Ot();
}
if (document.readyState === "loading") {
gn || window.addEventListener("DOMContentLoaded", I, !1), gn = !0;
return;
}
document.querySelectorAll(w.cssSelector).forEach(Jt);
}
function Po(I, F) {
let $ = null;
try {
$ = F(f);
} catch (te) {
if (Pe("Language definition for '{}' could not be registered.".replace("{}", I)), _e)
Pe(te);
else
throw te;
$ = k;
}
$.name || ($.name = I), h[I] = $, $.rawDefinition = F.bind(null, f), $.aliases && Sn($.aliases, { languageName: I });
}
function ko(I) {
delete h[I];
for (const F of Object.keys(D))
D[F] === I && delete D[F];
}
function Fo() {
return Object.keys(h);
}
function He(I) {
return I = (I || "").toLowerCase(), h[I] || h[D[I]];
}
function Sn(I, { languageName: F }) {
typeof I == "string" && (I = [I]), I.forEach(($) => {
D[$.toLowerCase()] = F;
});
}
function fn(I) {
const F = He(I);
return F && !F.disableAutodetect;
}
function Uo(I) {
I["before:highlightBlock"] && !I["before:highlightElement"] && (I["before:highlightElement"] = (F) => {
I["before:highlightBlock"](
Object.assign({ block: F.el }, F)
);
}), I["after:highlightBlock"] && !I["after:highlightElement"] && (I["after:highlightElement"] = (F) => {
I["after:highlightBlock"](
Object.assign({ block: F.el }, F)
);
});
}
function Bo(I) {
Uo(I), H.push(I);
}
function Go(I) {
const F = H.indexOf(I);
F !== -1 && H.splice(F, 1);
}
function At(I, F) {
const $ = I;
H.forEach(function(te) {
te[$] && te[$](F);
});
}
function Yo(I) {
return he("10.7.0", "highlightBlock will be removed entirely in v12.0"), he("10.7.0", "Please use highlightElement now."), Jt(I);
}
Object.assign(f, {
highlight: me,
highlightAuto: Zt,
highlightAll: Ot,
highlightElement: Jt,
// TODO: Remove with v12 API
highlightBlock: Yo,
configure: Mo,
initHighlighting: Lo,
initHighlightingOnLoad: wo,
registerLanguage: Po,
unregisterLanguage: ko,
listLanguages: Fo,
getLanguage: He,
registerAliases: Sn,
autoDetection: fn,
inherit: ht,
addPlugin: Bo,
removePlugin: Go
}), f.debugMode = function() {
_e = !1;
}, f.safeMode = function() {
_e = !0;
}, f.versionString = Kt, f.regex = {
concat: b,
lookahead: m,
either: N,
optional: p,
anyNumberOfTimes: d
};
for (const I in ue)
typeof ue[I] == "object" && t(ue[I]);
return Object.assign(f, ue), f;
}, qe = Ye({});
return qe.newInstance = () => Ye({}), An = qe, qe.HighlightJS = qe, qe.default = qe, An;
}
var In, Jo;
function K_() {
if (Jo) return In;
Jo = 1;
function t(e) {
const n = "[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]+", r = "далее " + "возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт ", l = "загрузитьизфайла " + "вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент ", d = "разделительстраниц разделительстрок символтабуляции " + "ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон " + "acos asin atan base64значение base64строка cos exp log log10 pow sin sqrt tan xmlзначение xmlстрока xmlтип xmlтипзнч активноеокно безопасныйрежим безопасныйрежимразделенияданных булево ввестидату ввестизначение ввестистроку ввестичисло возможностьчтенияxml вопрос восстановитьзначение врег выгрузитьжурналрегистрации выполнитьобработкуоповещения выполнитьпроверкуправдоступа вычислить год данныеформывзначение дата день деньгода деньнедели добавитьмесяц заблокироватьданныедляредактирования заблокироватьработупользователя завершитьработусистемы загрузитьвнешнююкомпоненту закрытьсправку записатьjson записатьxml записатьдатуjson записьжурналарегистрации заполнитьзначениясвойств запроситьразрешениепользователя запуститьприложение запуститьсистему зафиксироватьтранзакцию значениевданныеформы значениевстрокувнутр значениевфайл значениезаполнено значениеизстрокивнутр значениеизфайла изxmlтипа импортмоделиxdto имякомпьютера имяпользователя инициализироватьпредопределенныеданные информацияобошибке каталогбиблиотекимобильногоустройства каталогвременныхфайлов каталогдокументов каталогпрограммы кодироватьстроку кодлокализацииинформационнойбазы кодсимвола командасистемы конецгода конецдня конецквартала конецмесяца конецминуты конецнедели конецчаса конфигурациябазыданныхизмененадинамически конфигурацияизменена копироватьданныеформы копироватьфайл краткоепредставлениеошибки лев макс местноевремя месяц мин минута монопольныйрежим найти найтинедопустимыесимволыxml найтиокнопонавигационнойссылке найтипомеченныенаудаление найтипоссылкам найтифайлы началогода началодня началоквартала началомесяца началоминуты началонедели началочаса начатьзапросразрешенияпользователя начатьзапускприложения начатькопированиефайла начатьперемещениефайла начатьподключениевнешнейкомпоненты начатьподключениерасширенияработыскриптографией начатьподключениерасширенияработысфайлами начатьпоискфайлов начатьполучениекаталогавременныхфайлов начатьполучениекаталогадокументов начатьполучениерабочегокаталогаданныхпользователя начатьполучениефайлов начатьпомещениефайла начатьпомещениефайлов начатьсозданиедвоичныхданныхизфайла начатьсозданиекаталога начатьтранзакцию начатьудалениефайлов начатьустановкувнешнейкомпоненты начатьустановкурасширенияработыскриптографией начатьустановкурасширенияработысфайлами неделягода необходимостьзавершениясоединения номерсеансаинформационнойбазы номерсоединенияинформационнойбазы нрег нстр обновитьинтерфейс обновитьнумерациюобъектов обновитьповторноиспользуемыезначения обработкапрерыванияпользователя объединитьфайлы окр описаниеошибки оповестить оповеститьобизменении отключитьобработчикзапросанастроекклиенталицензирования отключитьобработчикожидания отключитьобработчикоповещения открытьзначение открытьиндекссправки открытьсодержаниесправки открытьсправку открытьформу открытьформумодально отменитьтранзакцию очиститьжурналрегистрации очиститьнастройкипользователя очиститьсообщения параметрыдоступа перейтипонавигационнойссылке переместитьфайл подключитьвнешнююкомпоненту подключитьобработчикзапросанастроекклиенталицензирования подключитьобработчикожидания подключитьобработчикоповещения подключитьрасширениеработыскриптографией подключитьрасширениеработысфайлами подробноепредставлениеошибки показатьвводдаты показатьвводзначения показатьвводстроки показатьвводчисла показатьвопрос показатьзначение показатьинформациюобошибке показатьнакарте показатьоповещениепользователя показатьпредупреждение полноеимяпользователя получитьcomобъект получитьxmlтип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации получитьидентификаторконфигурации получитьизвременногохранилища получитьимявременногофайла получитьимяклиенталицензирования получитьинформациюэкрановклиента получитьиспользованиежурналарегистрации получитьиспользованиесобытияжурналарегистрации получитькраткийзаголовокприложения получитьмакетоформления получитьмаскувсефайлы получитьмаскувсефайлыклиента получитьмаскувсефайлысервера получитьместоположениепоадресу получитьминимальнуюдлинупаролейпользователей получитьнавигационнуюссылку получитьнавигационнуюссылкуинформационнойбазы получитьобновлениеконфигурациибазыданных получитьобновлениепредопределенныхданныхинформационнойбазы получитьобщиймакет получитьобщуюформу получитьокна получитьоперативнуюотметкувремени получитьотключениебезопасногорежима получитьпараметрыфункциональныхопцийинтерфейса получитьполноеимяпредопределенногозначения получитьпредставлениянавигационныхссылок получитьпроверкусложностипаролейпользователей получитьразделительпути получитьразделительпутиклиента получитьразделительпутисервера получитьсеансыинформационнойбазы получитьскоростьклиентскогосоединения получитьсоединенияинформационнойбазы получитьсообщенияпользователю получитьсоответствиеобъектаиформы получитьсоставстандартногоинтерфейсаodata получитьструктурухранениябазыданных получитьтекущийсеансинформационнойбазы получитьфайл получитьфайлы получитьформу получитьфункциональнуюопцию получитьфункциональнуюопциюинтерфейса получитьчасовойпоясинформационнойбазы пользователиос поместитьвовременноехранилище поместитьфайл поместитьфайлы прав праводоступа предопределенноезначение представлениекодалокализации представлениепериода представлениеправа представлениеприложения представлениесобытияжурналарегистрации представлениечасовогопояса предупреждение прекратитьработусистемы привилегированныйрежим продолжитьвызов прочитатьjson прочитатьxml прочитатьдатуjson пустаястрока рабочийкаталогданныхпользователя разблокироватьданныедляредактирования разделитьфайл разорватьсоединениесвнешнимисточникомданных раскодироватьстроку рольдоступна секунда сигнал символ скопироватьжурналрегистрации смещениелетнеговремени смещениестандартноговремени соединитьбуферыдвоичныхданных создатькаталог создатьфабрикуxdto сокрл сокрлп сокрп сообщить состояние сохранитьзначение сохранитьнастройкипользователя сред стрдлина стрзаканчиваетсяна стрзаменить стрнайти стрначинаетсяс строка строкасоединенияинформационнойбазы стрполучитьстроку стрразделить стрсоединить стрсравнить стрчисловхождений стрчислострок стршаблон текущаядата текущаядатасеанса текущаяуниверсальнаядата текущаяуниверсальнаядатавмиллисекундах текущийвариантинтерфейсаклиентскогоприложения текущийвариантосновногошрифтаклиентскогоприложения текущийкодлокализации текущийрежимзапуска текущийязык текущийязыксистемы тип типзнч транзакцияактивна трег удалитьданныеинформационнойбазы удалитьизвременногохранилища удалитьобъекты удалитьфайлы универсальноевремя установитьбезопасныйрежим установитьбезопасныйрежимразделенияданных установитьблокировкусеансов установитьвнешнююкомпоненту установитьвремязавершенияспящегосеанса установитьвремязасыпанияпассивногосеанса установитьвремяожиданияблокировкиданных установитьзаголовокклиентскогоприложения установитьзаголовоксистемы установитьиспользованиежурналарегистрации установитьиспользованиесобытияжурналарегистрации установитькраткийзаголовокприложения установитьминимальнуюдлинупаролейпользователей установитьмонопольныйрежим установитьнастройкиклиенталицензирования установитьобновлениепредопределенныхданныхинформационнойбазы установитьотключениебезопасногорежима установитьпараметрыфункциональныхопцийинтерфейса установитьпривилегированныйрежим установитьпроверкусложностипаролейпользователей установитьрасширениеработыскриптографией установитьрасширениеработысфайлами установитьсоединениесвнешнимисточникомданных установитьсоответствиеобъектаиформы установитьсоставстандартногоинтерфейсаodata установитьчасовойпоясинформационнойбазы установитьчасовойпояссеанса формат цел час часовойпояс часовойпояссеанса число числопрописью этоадресвременногохранилища " + "wsссылки библиотекакартинок библиотекамакетовоформлениякомпоновкиданных библиотекастилей бизнеспроцессы внешниеисточникиданных внешниеобработки внешниеотчеты встроенныепокупки главныйинтерфейс главныйстиль документы доставляемыеуведомления журналыдокументов задачи информацияобинтернетсоединении использованиерабочейдаты историяработыпользователя константы критерииотбора метаданные обработки отображениерекламы отправкадоставляемыхуведомлений отчеты панельзадачос параметрзапуска параметрысеанса перечисления планывидоврасчета планывидовхарактеристик планыобмена планысчетов полнотекстовыйпоиск пользователиинформационнойбазы последовательности проверкавстроенныхпокупок рабочаядата расширенияконфигурации регистрыбухгалтерии регистрынакопления регистрырасчета регистрысведений регламентныезадания сериализаторxdto справочники средствагеопозиционирования средствакриптографии средствамультимедиа средстваотображениярекламы средствапочты средствателефонии фабрикаxdto файловыепотоки фоновыезадания хранилищанастроек хранилищевариантовотчетов хранилищенастроекданныхформ хранилищеобщихнастроек хранилищепользовательскихнастроекдинамическихсписков хранилищепользовательскихнастроекотчетов хранилищесистемныхнастроек ", ne = "webцвета windowsцвета windowsшрифты библиотекакартинок рамкистиля символы цветастиля шрифтыстиля " + "автоматическоесохранениеданныхформывнастройках автонумерациявформе автораздвижениесерий анимациядиаграммы вариантвыравниванияэлементовизаголовков вариантуправлениявысотойтаблицы вертикальнаяпрокруткаформы вертикальноеположение вертикальноеположениеэлемента видгруппыформы виддекорацииформы виддополненияэлементаформы видизмененияданных видкнопкиформы видпереключателя видподписейкдиаграмме видполяформы видфлажка влияниеразмеранапузырекдиаграммы горизонтальноеположение горизонтальноеположениеэлемента группировкаколонок группировкаподчиненныхэлементовформы группыиэлементы действиеперетаскивания дополнительныйрежимотображения допустимыедействияперетаскивания интервалмеждуэлементамиформы использованиевывода использованиеполосыпрокрутки используемоезначениеточкибиржевойдиаграммы историявыборапривводе источникзначенийоситочекдиаграммы источникзначенияразмерапузырькадиаграммы категориягруппыкоманд максимумсерий начальноеотображениедерева начальноеотображениесписка обновлениетекстаредактирования ориентациядендрограммы ориентациядиаграммы ориентацияметокдиаграммы ориентацияметоксводнойдиаграммы ориентацияэлементаформы отображениевдиаграмме отображениевлегендедиаграммы отображениегруппыкнопок отображениезаголовкашкалыдиаграммы отображениезначенийсводнойдиаграммы отображениезначенияизмерительнойдиаграммы отображениеинтерваладиаграммыганта отображениекнопки отображениекнопкивыбора отображениеобсужденийформы отображениеобычнойгруппы отображениеотрицательныхзначенийпузырьковойдиаграммы отображениепанелипоиска отображениеподсказки отображениепредупрежденияприредактировании отображениеразметкиполосырегулирования отображениестраницформы отображениетаблицы отображениетекстазначениядиаграммыганта отображениеуправленияобычнойгруппы отображениефигурыкнопки палитрацветовдиаграммы поведениеобычнойгруппы поддержкамасштабадендрограммы поддержкамасштабадиаграммыганта поддержкамасштабасводнойдиаграммы поисквтаблицепривводе положениезаголовкаэлементаформы положениекартинкикнопкиформы положениекартинкиэлементаграфическойсхемы положениекоманднойпанелиформы положениекоманднойпанелиэлементаформы положениеопорнойточкиотрисовки положениеподписейкдиаграмме положениеподписейшкалызначенийизмерительнойдиаграммы положениесостоянияпросмотра положениестрокипоиска положениетекстасоединительнойлинии положениеуправленияпоиском положениешкалывремени порядокотображенияточекгоризонтальнойгистограммы порядоксерийвлегендедиаграммы размеркартинки расположениезаголовкашкалыдиаграммы растягиваниеповертикалидиаграммыганта режимавтоотображениясостояния режимвводастроктаблицы режимвыборанезаполненного режимвыделениядаты режимвыделениястрокитаблицы режимвыделениятаблицы режимизмененияразмера режимизменениясвязанногозначения режимиспользованиядиалогапечати режимиспользованияпараметракоманды режиммасштабированияпросмотра режимосновногоокнаклиентскогоприложения режимоткрытияокнаформы режимотображениявыделения режимотображениягеографическойсхемы режимотображениязначенийсерии режимотрисовкисеткиграфическойсхемы режимполупрозрачностидиаграммы режимпробеловдиаграммы режимразмещениянастранице режимредактированияколонки режимсглаживаниядиаграммы режимсглаживанияиндикатора режимсписказадач сквозноевыравнивание сохранениеданныхформывнастройках способзаполнениятекстазаголовкашкалыдиаграммы способопределенияограничивающегозначениядиаграммы стандартнаягруппакоманд стандартноеоформление статусоповещенияпользователя стильстрелки типаппроксимациилиниитрендадиаграммы типдиаграммы типединицышкалывремени типимпортасерийслоягеографическойсхемы типлиниигеографическойсхемы типлиниидиаграммы типмаркерагеографическойсхемы типмаркерадиаграммы типобластиоформления типорганизацииисточникаданныхгеографическойсхемы типотображениясериислоягеографическойсхемы типотображенияточечногообъектагеографическойсхемы типотображенияшкалыэлементалегендыгеографическойсхемы типпоискаобъектовгеографическойсхемы типпроекциигеографическойсхемы типразмещенияизмерений типразмещенияреквизитовизмерений типрамкиэлементауправления типсводнойдиаграммы типсвязидиаграммыганта типсоединениязначенийпосериямдиаграммы типсоедин