strapi-plugin-comments
Version:
1,446 lines (1,442 loc) • 1.53 MB
JavaScript
import { jsxs as D, jsx as m, Fragment as tt } from "react/jsx-runtime";
import { useNotification as rt, Form as ld, Page as Fe, Layouts as Oe, useQueryParams as _d, SearchInput as dd, Pagination as Je } from "@strapi/strapi/admin";
import { useNavigate as ud, useParams as Zd, Routes as Jd, Route as Ot, Navigate as jd } from "react-router-dom";
import { S as eu, a as tu, b as nu, c as ru, d as vi, p as ti, l as oe, B as ie, T as K, D as $o, F as W, C as mt, e as Se, I as ee, f as ft, g as au, h as ou, i as Ut, j as Ae, P as iu, k as su, m as cu, n as lu, o as Ze, q as Wo, r as be, s as Oi, t as Ai, u as yi, v as Ii, w as Jt, x as _u, y as du, z as uu, A as pu, E as mu, G as gu, M as re, H as ni, J as ri, K as nt, L as te, N as ai, O as Eu, Q as Su, R as oi, U as fu, V as bu, W as At, X as Ko, Y as Tu, Z as Qo, _ as hu, $ as jt, a0 as Ee, a1 as Ru, a2 as yt } from "./index-Bi2NddA5.mjs";
import { useQuery as gt, useQueryClient as ye, useMutation as ge } from "@tanstack/react-query";
import { u as fe, C as J, R as Re, g as M, a as bt, U as Cu, b as We, c as Di, d as wi, e as Nu } from "./index-B8Jogmi4.mjs";
import { create as vu } from "zustand/react";
import * as ue from "react";
import { useCallback as Ft, useMemo as Bt, useContext as Ou, useState as Ge, useRef as pd, Fragment as Au } from "react";
import at, { styled as Ie } from "styled-components";
import Xo from "codemirror5";
import Mi from "sanitize-html";
import yu from "punycode";
import "codemirror5/addon/display/placeholder";
const Iu = () => /* @__PURE__ */ D(eu, { ariaLabel: "Comments sub nav", children: [
/* @__PURE__ */ m(tu, { label: "Comments" }),
/* @__PURE__ */ m(nu, { children: /* @__PURE__ */ D(ru, { label: "Moderation", children: [
/* @__PURE__ */ m(vi, { href: "/admin/plugins/comments/discover", children: "Discover" }),
/* @__PURE__ */ m(
vi,
{
href: "/admin/plugins/comments/reports",
withBullet: !1,
children: "Reports"
}
)
] }) })
] }), Du = (t) => {
const e = fe();
return gt({
queryKey: e.config.getKey(),
queryFn: () => e.config.query().then((n) => (t(n), n))
});
}, wu = vu((t) => ({
settings: {
entryLabel: {},
approvalFlow: [],
blockedAuthorProps: [],
reportReasons: {
BAD_LANGUAGE: "BAD_LANGUAGE",
DISCRIMINATION: "DISCRIMINATION",
OTHER: "OTHER"
},
regex: {
uid: "",
relatedUid: "",
email: "",
sorting: ""
},
enabledCollections: [],
moderatorRoles: [],
isGQLPluginEnabled: !1,
client: {
url: "",
contactEmail: ""
}
},
setSettings: (e) => t({ settings: e })
})), Mu = (t = "") => `/plugins/${ti}/${t}`, xu = (t = null, e = null, n = "app.components.notification.error") => {
throw e({
type: "warning",
message: `${ti}.${n}`
}), t || new Error("error");
}, xi = (t = "") => oe.isString(t) ? t.split(" ").map((e) => oe.first(e)).join("").toUpperCase() : "", Lu = ({
removed: t,
blocked: e,
blockedThread: n,
approvalStatus: r,
reviewFlowEnabled: a
}) => {
const o = !oe.isNil(r);
if (t)
return J.REMOVED;
if (e || n)
return J.BLOCKED;
if (a)
return J.TO_REVIEW;
if (o) {
const i = r.toUpperCase();
return Object.keys(J).includes(i) ? i : J.UNKNOWN;
}
return J.OPEN;
}, ku = (t) => {
if (Object.values(J).includes(t))
switch (t) {
case J.REMOVED:
return "secondary";
case J.TO_REVIEW:
case J.REJECTED:
return "warning";
case J.BLOCKED:
return "danger";
case J.OPEN:
case J.APPROVED:
return "success";
}
return "secondary";
}, Pu = ({
resolved: t,
related: { blocked: e, blockedThread: n },
approvalStatus: r
}) => {
const a = !oe.isNil(r);
if (e || n)
return Re.BLOCKED;
if (t)
return Re.RESOLVED;
if (a) {
const o = r.toUpperCase();
return Object.keys(Re).includes(o) ? o : Re.PENDING;
}
return Re.PENDING;
}, Uu = (t) => {
switch (t) {
case Re.PENDING:
return "primary";
case Re.RESOLVED:
return "success";
case Re.BLOCKED:
return "danger";
default:
return "primary";
}
}, Li = (t) => {
const [e, n] = t.split("/").filter((r) => r.length > 0);
return {
value: e,
flags: n
};
}, Fu = ({ config: t, entity: e, filters: n, onChangeFilters: r, schema: a }) => {
const { entryLabel: o = {} } = t, { attributes: i = {} } = a, { removed: c = !1 } = n;
ye();
const s = Object.keys(i), l = oe.first(o[e?.uid]), p = oe.take(
s.filter(
(S) => i[S].type === "string" && !oe.isNil(e[S]) && S !== l
),
5
), u = (S = "") => S.split("_").map((E) => oe.capitalize(E)).join(" "), d = e && !oe.isEmpty(e) && (!oe.isEmpty(p) || e[l]), g = Ft((S) => {
r({
...n,
removed: S || void 0
});
}, [r, n]);
return /* @__PURE__ */ D(ie, { padding: 4, background: "neutral0", width: "100%", children: [
d && /* @__PURE__ */ D(ie, { marginBottom: 4, children: [
/* @__PURE__ */ m(
K,
{
variant: "sigma",
textColor: "neutral600",
id: "entity-details",
children: M("page.details.panel.entity", "Details")
}
),
/* @__PURE__ */ m(ie, { paddingTop: 2, paddingBottom: 4, children: /* @__PURE__ */ m($o, {}) }),
/* @__PURE__ */ D(W, { children: [
/* @__PURE__ */ D(W, { direction: "column", alignItems: "flex-start", children: [
/* @__PURE__ */ m(K, { fontWeight: "bold", children: u(l) }),
/* @__PURE__ */ m(K, { children: e[l] })
] }),
/* @__PURE__ */ m(W, { space: 4, children: p.map((S) => /* @__PURE__ */ D(
W,
{
direction: "column",
alignItems: "flex-start",
children: [
/* @__PURE__ */ m(K, { fontWeight: "bold", children: u(S) }),
/* @__PURE__ */ m(K, { children: e[S] })
]
},
`prop_${S}`
)) })
] })
] }),
/* @__PURE__ */ D(ie, { children: [
/* @__PURE__ */ m(K, { variant: "sigma", textColor: "neutral600", id: "view-filters", children: M("page.details.filters.label", "View") }),
/* @__PURE__ */ m(ie, { paddingTop: 2, paddingBottom: 4, children: /* @__PURE__ */ m($o, {}) }),
/* @__PURE__ */ m(W, { children: /* @__PURE__ */ m(
mt,
{
checked: c,
onCheckedChange: g,
children: M(
"page.details.filters.removed.label",
"Show removed comments"
)
}
) })
] })
] });
}, ot = (t = { comment: {}, report: {} }) => {
const e = fe(), { canModerate: n } = bt(), r = (S) => n ? S : void 0, a = ge({
mutationFn: r(e.comments.block),
onSuccess: t.comment?.blockSuccess,
onError: t.comment?.blockError
}), o = ge({
mutationFn: r(e.comments.unblock),
onSuccess: t.comment?.unBlockSuccess,
onError: t.comment?.unBlockError
}), i = ge({
mutationFn: r(e.comments.blockThread),
onSuccess: t.comment?.blockThreadSuccess,
onError: t.comment?.blockThreadError
}), c = ge({
mutationFn: r(e.comments.unBlockThread),
onSuccess: t.comment?.unBlockThreadSuccess,
onError: t.comment?.unBlockThreadError
}), s = ge({
mutationFn: r(e.comments.delete),
onSuccess: t.comment?.deleteSuccess,
onError: t.comment?.deleteError
}), l = ge({
mutationFn: r(e.comments.postComment),
onSuccess: t.comment?.postCommentSuccess,
onError: t.comment?.postCommentError
}), _ = ge({
mutationFn: r(e.reports.resolveMultipleReports),
onSuccess: t.report?.resolveMultipleSuccess,
onError: t.report?.resolveMultipleError
}), p = ge({
mutationFn: r(e.reports.resolveCommentMultipleReports),
onSuccess: t.report?.resolveCommentMultipleReportsSuccess,
onError: t.report?.resolveCommentMultipleReportsError
}), u = ge({
mutationFn: r(e.reports.resolve),
onSuccess: t.report?.resolveSuccess,
onError: t.report?.resolveError
}), d = ge({
mutationFn: r(e.reports.resolveAllAbuseReportsForComment),
onSuccess: t.report?.resolveAllAbuseSuccess,
onError: t.report?.resolveAllAbuseError
}), g = ge({
mutationFn: r(e.reports.resolveAllAbuseReportsForThread),
onSuccess: t.report?.resolveAllAbuseThreadSuccess,
onError: t.report?.resolveAllAbuseThreadError
});
return Bt(() => ({
commentMutation: {
block: a,
unBlock: o,
blockThread: i,
unBlockThread: c,
delete: s,
postComment: l
},
reportMutation: {
resolve: u,
resolveMultiple: _,
resolveAllAbuse: d,
resolveAllAbuseThread: g,
resolveCommentMultipleReports: p
}
}), [
a,
o,
i,
c,
_,
d,
g,
s,
u
]);
}, ii = () => {
const t = Ou(Cu);
if (!t)
throw new Error("UserContext is not provided");
return t;
}, Zo = at(Se)(({ isSingle: t }) => ({
padding: "7px 16px",
marginLeft: t ? "0" : ".5rem",
whiteSpace: "nowrap"
})), md = ({ id: t, canModerate: e, queryKey: n }) => {
const { toggleNotification: r } = rt(), a = ye(), o = fe(), i = (u) => async () => {
await a.invalidateQueries({
exact: !1,
queryKey: n
}), r({
type: "success",
message: `${ti}.${u}`
});
}, c = (u) => {
xu(u, r);
}, s = ge({
mutationKey: ["approveItem", t],
mutationFn: o.comments.approve,
onSuccess: i("success.approveItem"),
onError: c
}), l = () => {
s.mutate(t);
}, _ = ge({
mutationKey: ["rejectItem", t],
mutationFn: o.comments.reject,
onSuccess: i("success.rejectItem"),
onError: c
}), p = () => {
_.mutate(t);
};
return e ? /* @__PURE__ */ D(tt, { children: [
/* @__PURE__ */ m(
ee,
{
onClick: l,
label: "Approve",
children: /* @__PURE__ */ m(ft, {})
}
),
/* @__PURE__ */ m(
ee,
{
label: "Reject",
onClick: p,
children: /* @__PURE__ */ m(au, {})
}
)
] }) : null;
}, Bu = at(ou)`
padding: 5px 8px;
border: 1px ${({ theme: t, color: e }) => t.colors[`${e}200`]} solid;
overflow: hidden;
text-overflow: ellipsis;
cursor: default;
span {
text-transform: none;
}
`, Gt = ({ children: t, textColor: e, ...n }) => /* @__PURE__ */ m(Bu, { ...n, children: /* @__PURE__ */ m(K, { variant: "omega", fontWeight: "semibold", textColor: e, children: t }) }), Jo = ({ item: t, canAccessReports: e, hasReports: n }) => {
const r = e && n && !(t.blocked || t.blockedThread), a = Lu({ ...t, reviewFlowEnabled: r }), o = ku(a), i = t.reports?.filter((c) => !c.resolved) ?? [];
return /* @__PURE__ */ m(
Gt,
{
backgroundColor: `${o}100`,
textColor: `${o}700`,
color: o,
children: M(
{
id: `page.common.item.status.${a}`,
props: {
count: i.length
}
},
a
)
}
);
}, xt = at(Ut)(({ isSingle: t, withMargin: e }) => ({
...t ? {
button: {
"&:first-child": {
borderRadius: "4px !important"
},
"&:last-child": {
borderRadius: "4px !important"
}
}
} : {},
...e ? {
marginLeft: ".5rem"
} : {}
})), Gu = 330, ut = ({ width: t, height: e, size: n = 16 }) => /* @__PURE__ */ m(
"svg",
{
width: t || n,
height: e || n,
viewBox: `0 0 ${t || n} ${e || n}`,
style: { width: `${t || n}px`, height: `${e || n}px` },
xmlns: "http://www.w3.org/2000/svg",
fill: "currentColor",
children: /* @__PURE__ */ m("g", { style: { transform: `scale(${(t || n) / Gu})` }, children: /* @__PURE__ */ m(
"path",
{
d: `M165,330c63.411,0,115-51.589,115-115c0-29.771-11.373-56.936-30-77.379V85c0-46.869-38.131-85-85-85
S80.001,38.131,80.001,85v52.619C61.373,158.064,50,185.229,50,215C50,278.411,101.589,330,165,330z M180,219.986V240
c0,8.284-6.716,15-15,15s-15-6.716-15-15v-20.014c-6.068-4.565-10-11.824-10-19.986c0-13.785,11.215-25,25-25s25,11.215,25,25
C190,208.162,186.068,215.421,180,219.986z M110.001,85c0-30.327,24.673-55,54.999-55c30.327,0,55,24.673,55,55v29.029
C203.652,105.088,184.91,100,165,100c-19.909,0-38.651,5.088-54.999,14.028V85z`
}
) })
}
), qu = 330, ki = ({ width: t, height: e, size: n = 16 }) => /* @__PURE__ */ m(
"svg",
{
width: t || n,
height: e || n,
viewBox: `0 0 ${t || n} ${e || n}`,
style: { width: `${t || n}px`, height: `${e || n}px` },
xmlns: "http://www.w3.org/2000/svg",
children: /* @__PURE__ */ m("g", { style: { transform: `scale(${(t || n) / qu})` }, children: /* @__PURE__ */ m(
"path",
{
d: `M15,160c8.283,0,15-6.716,15-15V85c0-30.327,24.672-55,55-55c30.326,0,55,24.673,55,55v42.893
c-24.479,21.105-40,52.327-40,87.107c0,63.411,51.588,115,115,115c63.41,0,115-51.589,115-115s-51.59-115-115-115
c-15.961,0-31.172,3.271-45,9.174V85c0-46.869-38.131-85-85-85S0,38.131,0,85v60C0,153.284,6.715,160,15,160z`
}
) })
}
);
function si(t) {
return t instanceof Map ? t.clear = t.delete = t.set = function() {
throw new Error("map is read-only");
} : t instanceof Set && (t.add = t.clear = t.delete = function() {
throw new Error("set is read-only");
}), Object.freeze(t), Object.getOwnPropertyNames(t).forEach(function(e) {
var n = t[e];
typeof n == "object" && !Object.isFrozen(n) && si(n);
}), t;
}
var gd = si, Yu = si;
gd.default = Yu;
class Pi {
/**
* @param {CompiledMode} mode
*/
constructor(e) {
e.data === void 0 && (e.data = {}), this.data = e.data, this.isMatchIgnored = !1;
}
ignoreMatch() {
this.isMatchIgnored = !0;
}
}
function je(t) {
return t.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
}
function Be(t, ...e) {
const n = /* @__PURE__ */ Object.create(null);
for (const r in t)
n[r] = t[r];
return e.forEach(function(r) {
for (const a in r)
n[a] = r[a];
}), /** @type {T} */
n;
}
const Hu = "</span>", Ui = (t) => !!t.kind;
class Vu {
/**
* Creates a new HTMLRenderer
*
* @param {Tree} parseTree - the parse tree (must support `walk` API)
* @param {{classPrefix: string}} options
*/
constructor(e, n) {
this.buffer = "", this.classPrefix = n.classPrefix, e.walk(this);
}
/**
* Adds texts to the output stream
*
* @param {string} text */
addText(e) {
this.buffer += je(e);
}
/**
* Adds a node open to the output stream (if needed)
*
* @param {Node} node */
openNode(e) {
if (!Ui(e)) return;
let n = e.kind;
e.sublanguage || (n = `${this.classPrefix}${n}`), this.span(n);
}
/**
* Adds a node close to the output stream (if needed)
*
* @param {Node} node */
closeNode(e) {
Ui(e) && (this.buffer += Hu);
}
/**
* returns the accumulated buffer
*/
value() {
return this.buffer;
}
// helpers
/**
* Builds a span element
*
* @param {string} className */
span(e) {
this.buffer += `<span class="${e}">`;
}
}
class ci {
constructor() {
this.rootNode = { children: [] }, this.stack = [this.rootNode];
}
get top() {
return this.stack[this.stack.length - 1];
}
get root() {
return this.rootNode;
}
/** @param {Node} node */
add(e) {
this.top.children.push(e);
}
/** @param {string} kind */
openNode(e) {
const n = { kind: e, children: [] };
this.add(n), this.stack.push(n);
}
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(e) {
return this.constructor._walk(e, this.rootNode);
}
/**
* @param {Renderer} builder
* @param {Node} node
*/
static _walk(e, n) {
return typeof n == "string" ? e.addText(n) : n.children && (e.openNode(n), n.children.forEach((r) => this._walk(e, r)), e.closeNode(n)), e;
}
/**
* @param {Node} node
*/
static _collapse(e) {
typeof e != "string" && e.children && (e.children.every((n) => typeof n == "string") ? e.children = [e.children.join("")] : e.children.forEach((n) => {
ci._collapse(n);
}));
}
}
class zu extends ci {
/**
* @param {*} options
*/
constructor(e) {
super(), this.options = e;
}
/**
* @param {string} text
* @param {string} kind
*/
addKeyword(e, n) {
e !== "" && (this.openNode(n), this.addText(e), this.closeNode());
}
/**
* @param {string} text
*/
addText(e) {
e !== "" && this.add(e);
}
/**
* @param {Emitter & {root: DataNode}} emitter
* @param {string} name
*/
addSublanguage(e, n) {
const r = e.root;
r.kind = n, r.sublanguage = !0, this.add(r);
}
toHTML() {
return new Vu(this, this.options).value();
}
finalize() {
return !0;
}
}
function $u(t) {
return new RegExp(t.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&"), "m");
}
function Et(t) {
return t ? typeof t == "string" ? t : t.source : null;
}
function Wu(...t) {
return t.map((n) => Et(n)).join("");
}
function Ku(...t) {
return "(" + t.map((n) => Et(n)).join("|") + ")";
}
function Qu(t) {
return new RegExp(t.toString() + "|").exec("").length - 1;
}
function Xu(t, e) {
const n = t && t.exec(e);
return n && n.index === 0;
}
const Zu = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;
function Ju(t, e = "|") {
let n = 0;
return t.map((r) => {
n += 1;
const a = n;
let o = Et(r), i = "";
for (; o.length > 0; ) {
const c = Zu.exec(o);
if (!c) {
i += o;
break;
}
i += o.substring(0, c.index), o = o.substring(c.index + c[0].length), c[0][0] === "\\" && c[1] ? i += "\\" + String(Number(c[1]) + a) : (i += c[0], c[0] === "(" && n++);
}
return i;
}).map((r) => `(${r})`).join(e);
}
const ju = /\b\B/, Ed = "[a-zA-Z]\\w*", li = "[a-zA-Z_]\\w*", _i = "\\b\\d+(\\.\\d+)?", Sd = "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)", fd = "\\b(0b[01]+)", ep = "!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", tp = (t = {}) => {
const e = /^#![ ]*\//;
return t.binary && (t.begin = Wu(
e,
/.*\b/,
t.binary,
/\b.*/
)), Be({
className: "meta",
begin: e,
end: /$/,
relevance: 0,
/** @type {ModeCallback} */
"on:begin": (n, r) => {
n.index !== 0 && r.ignoreMatch();
}
}, t);
}, St = {
begin: "\\\\[\\s\\S]",
relevance: 0
}, np = {
className: "string",
begin: "'",
end: "'",
illegal: "\\n",
contains: [St]
}, rp = {
className: "string",
begin: '"',
end: '"',
illegal: "\\n",
contains: [St]
}, bd = {
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/
}, qt = function(t, e, n = {}) {
const r = Be(
{
className: "comment",
begin: t,
end: e,
contains: []
},
n
);
return r.contains.push(bd), r.contains.push({
className: "doctag",
begin: "(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",
relevance: 0
}), r;
}, ap = qt("//", "$"), op = qt("/\\*", "\\*/"), ip = qt("#", "$"), sp = {
className: "number",
begin: _i,
relevance: 0
}, cp = {
className: "number",
begin: Sd,
relevance: 0
}, lp = {
className: "number",
begin: fd,
relevance: 0
}, _p = {
className: "number",
begin: _i + "(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",
relevance: 0
}, dp = {
// this outer rule makes sure we actually have a WHOLE regex and not simply
// an expression such as:
//
// 3 / something
//
// (which will then blow up when regex's `illegal` sees the newline)
begin: /(?=\/[^/\n]*\/)/,
contains: [{
className: "regexp",
begin: /\//,
end: /\/[gimuy]*/,
illegal: /\n/,
contains: [
St,
{
begin: /\[/,
end: /\]/,
relevance: 0,
contains: [St]
}
]
}]
}, up = {
className: "title",
begin: Ed,
relevance: 0
}, pp = {
className: "title",
begin: li,
relevance: 0
}, mp = {
// excludes method names from keyword processing
begin: "\\.\\s*" + li,
relevance: 0
}, gp = function(t) {
return Object.assign(
t,
{
/** @type {ModeCallback} */
"on:begin": (e, n) => {
n.data._beginMatch = e[1];
},
/** @type {ModeCallback} */
"on:end": (e, n) => {
n.data._beginMatch !== e[1] && n.ignoreMatch();
}
}
);
};
var It = /* @__PURE__ */ Object.freeze({
__proto__: null,
MATCH_NOTHING_RE: ju,
IDENT_RE: Ed,
UNDERSCORE_IDENT_RE: li,
NUMBER_RE: _i,
C_NUMBER_RE: Sd,
BINARY_NUMBER_RE: fd,
RE_STARTERS_RE: ep,
SHEBANG: tp,
BACKSLASH_ESCAPE: St,
APOS_STRING_MODE: np,
QUOTE_STRING_MODE: rp,
PHRASAL_WORDS_MODE: bd,
COMMENT: qt,
C_LINE_COMMENT_MODE: ap,
C_BLOCK_COMMENT_MODE: op,
HASH_COMMENT_MODE: ip,
NUMBER_MODE: sp,
C_NUMBER_MODE: cp,
BINARY_NUMBER_MODE: lp,
CSS_NUMBER_MODE: _p,
REGEXP_MODE: dp,
TITLE_MODE: up,
UNDERSCORE_TITLE_MODE: pp,
METHOD_GUARD: mp,
END_SAME_AS_BEGIN: gp
});
function Ep(t, e) {
t.input[t.index - 1] === "." && e.ignoreMatch();
}
function Sp(t, e) {
e && t.beginKeywords && (t.begin = "\\b(" + t.beginKeywords.split(" ").join("|") + ")(?!\\.)(?=\\b|\\s)", t.__beforeBegin = Ep, t.keywords = t.keywords || t.beginKeywords, delete t.beginKeywords, t.relevance === void 0 && (t.relevance = 0));
}
function fp(t, e) {
Array.isArray(t.illegal) && (t.illegal = Ku(...t.illegal));
}
function bp(t, e) {
if (t.match) {
if (t.begin || t.end) throw new Error("begin & end are not supported with match");
t.begin = t.match, delete t.match;
}
}
function Tp(t, e) {
t.relevance === void 0 && (t.relevance = 1);
}
const hp = [
"of",
"and",
"for",
"in",
"not",
"or",
"if",
"then",
"parent",
// common variable name
"list",
// common variable name
"value"
// common variable name
], Rp = "keyword";
function Td(t, e, n = Rp) {
const r = {};
return typeof t == "string" ? a(n, t.split(" ")) : Array.isArray(t) ? a(n, t) : Object.keys(t).forEach(function(o) {
Object.assign(
r,
Td(t[o], e, o)
);
}), r;
function a(o, i) {
e && (i = i.map((c) => c.toLowerCase())), i.forEach(function(c) {
const s = c.split("|");
r[s[0]] = [o, Cp(s[0], s[1])];
});
}
}
function Cp(t, e) {
return e ? Number(e) : Np(t) ? 0 : 1;
}
function Np(t) {
return hp.includes(t.toLowerCase());
}
function vp(t, { plugins: e }) {
function n(c, s) {
return new RegExp(
Et(c),
"m" + (t.case_insensitive ? "i" : "") + (s ? "g" : "")
);
}
class r {
constructor() {
this.matchIndexes = {}, this.regexes = [], this.matchAt = 1, this.position = 0;
}
// @ts-ignore
addRule(s, l) {
l.position = this.position++, this.matchIndexes[this.matchAt] = l, this.regexes.push([l, s]), this.matchAt += Qu(s) + 1;
}
compile() {
this.regexes.length === 0 && (this.exec = () => null);
const s = this.regexes.map((l) => l[1]);
this.matcherRe = n(Ju(s), !0), this.lastIndex = 0;
}
/** @param {string} s */
exec(s) {
this.matcherRe.lastIndex = this.lastIndex;
const l = this.matcherRe.exec(s);
if (!l)
return null;
const _ = l.findIndex((u, d) => d > 0 && u !== void 0), p = this.matchIndexes[_];
return l.splice(0, _), Object.assign(l, p);
}
}
class a {
constructor() {
this.rules = [], this.multiRegexes = [], this.count = 0, this.lastIndex = 0, this.regexIndex = 0;
}
// @ts-ignore
getMatcher(s) {
if (this.multiRegexes[s]) return this.multiRegexes[s];
const l = new r();
return this.rules.slice(s).forEach(([_, p]) => l.addRule(_, p)), l.compile(), this.multiRegexes[s] = l, l;
}
resumingScanAtSamePosition() {
return this.regexIndex !== 0;
}
considerAll() {
this.regexIndex = 0;
}
// @ts-ignore
addRule(s, l) {
this.rules.push([s, l]), l.type === "begin" && this.count++;
}
/** @param {string} s */
exec(s) {
const l = this.getMatcher(this.regexIndex);
l.lastIndex = this.lastIndex;
let _ = l.exec(s);
if (this.resumingScanAtSamePosition() && !(_ && _.index === this.lastIndex)) {
const p = this.getMatcher(0);
p.lastIndex = this.lastIndex + 1, _ = p.exec(s);
}
return _ && (this.regexIndex += _.position + 1, this.regexIndex === this.count && this.considerAll()), _;
}
}
function o(c) {
const s = new a();
return c.contains.forEach((l) => s.addRule(l.begin, { rule: l, type: "begin" })), c.terminatorEnd && s.addRule(c.terminatorEnd, { type: "end" }), c.illegal && s.addRule(c.illegal, { type: "illegal" }), s;
}
function i(c, s) {
const l = (
/** @type CompiledMode */
c
);
if (c.isCompiled) return l;
[
// do this early so compiler extensions generally don't have to worry about
// the distinction between match/begin
bp
].forEach((p) => p(c, s)), t.compilerExtensions.forEach((p) => p(c, s)), c.__beforeBegin = null, [
Sp,
// do this later so compiler extensions that come earlier have access to the
// raw array if they wanted to perhaps manipulate it, etc.
fp,
// default to 1 relevance if not specified
Tp
].forEach((p) => p(c, s)), c.isCompiled = !0;
let _ = null;
if (typeof c.keywords == "object" && (_ = c.keywords.$pattern, delete c.keywords.$pattern), c.keywords && (c.keywords = Td(c.keywords, t.case_insensitive)), c.lexemes && _)
throw new Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ");
return _ = _ || c.lexemes || /\w+/, l.keywordPatternRe = n(_, !0), s && (c.begin || (c.begin = /\B|\b/), l.beginRe = n(c.begin), c.endSameAsBegin && (c.end = c.begin), !c.end && !c.endsWithParent && (c.end = /\B|\b/), c.end && (l.endRe = n(c.end)), l.terminatorEnd = Et(c.end) || "", c.endsWithParent && s.terminatorEnd && (l.terminatorEnd += (c.end ? "|" : "") + s.terminatorEnd)), c.illegal && (l.illegalRe = n(
/** @type {RegExp | string} */
c.illegal
)), c.contains || (c.contains = []), c.contains = [].concat(...c.contains.map(function(p) {
return Op(p === "self" ? c : p);
})), c.contains.forEach(function(p) {
i(
/** @type Mode */
p,
l
);
}), c.starts && i(c.starts, s), l.matcher = o(l), l;
}
if (t.compilerExtensions || (t.compilerExtensions = []), t.contains && t.contains.includes("self"))
throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");
return t.classNameAliases = Be(t.classNameAliases || {}), i(
/** @type Mode */
t
);
}
function hd(t) {
return t ? t.endsWithParent || hd(t.starts) : !1;
}
function Op(t) {
return t.variants && !t.cachedVariants && (t.cachedVariants = t.variants.map(function(e) {
return Be(t, { variants: null }, e);
})), t.cachedVariants ? t.cachedVariants : hd(t) ? Be(t, { starts: t.starts ? Be(t.starts) : null }) : Object.isFrozen(t) ? Be(t) : t;
}
var Ap = "10.7.3";
function yp(t) {
return !!(t || t === "");
}
function Ip(t) {
const e = {
props: ["language", "code", "autodetect"],
data: function() {
return {
detectedLanguage: "",
unknownLanguage: !1
};
},
computed: {
className() {
return this.unknownLanguage ? "" : "hljs " + this.detectedLanguage;
},
highlighted() {
if (!this.autoDetect && !t.getLanguage(this.language))
return console.warn(`The language "${this.language}" you specified could not be found.`), this.unknownLanguage = !0, je(this.code);
let r = {};
return this.autoDetect ? (r = t.highlightAuto(this.code), this.detectedLanguage = r.language) : (r = t.highlight(this.language, this.code, this.ignoreIllegals), this.detectedLanguage = this.language), r.value;
},
autoDetect() {
return !this.language || yp(this.autodetect);
},
ignoreIllegals() {
return !0;
}
},
// this avoids needing to use a whole Vue compilation pipeline just
// to build Highlight.js
render(r) {
return r("pre", {}, [
r("code", {
class: this.className,
domProps: { innerHTML: this.highlighted }
})
]);
}
// template: `<pre><code :class="className" v-html="highlighted"></code></pre>`
};
return { Component: e, VuePlugin: {
install(r) {
r.component("highlightjs", e);
}
} };
}
const Dp = {
"after:highlightElement": ({ el: t, result: e, text: n }) => {
const r = Fi(t);
if (!r.length) return;
const a = document.createElement("div");
a.innerHTML = e.value, e.value = wp(r, Fi(a), n);
}
};
function jo(t) {
return t.nodeName.toLowerCase();
}
function Fi(t) {
const e = [];
return function n(r, a) {
for (let o = r.firstChild; o; o = o.nextSibling)
o.nodeType === 3 ? a += o.nodeValue.length : o.nodeType === 1 && (e.push({
event: "start",
offset: a,
node: o
}), a = n(o, a), jo(o).match(/br|hr|img|input/) || e.push({
event: "stop",
offset: a,
node: o
}));
return a;
}(t, 0), e;
}
function wp(t, e, n) {
let r = 0, a = "";
const o = [];
function i() {
return !t.length || !e.length ? t.length ? t : e : t[0].offset !== e[0].offset ? t[0].offset < e[0].offset ? t : e : e[0].event === "start" ? t : e;
}
function c(_) {
function p(u) {
return " " + u.nodeName + '="' + je(u.value) + '"';
}
a += "<" + jo(_) + [].map.call(_.attributes, p).join("") + ">";
}
function s(_) {
a += "</" + jo(_) + ">";
}
function l(_) {
(_.event === "start" ? c : s)(_.node);
}
for (; t.length || e.length; ) {
let _ = i();
if (a += je(n.substring(r, _[0].offset)), r = _[0].offset, _ === t) {
o.reverse().forEach(s);
do
l(_.splice(0, 1)[0]), _ = i();
while (_ === t && _.length && _[0].offset === r);
o.reverse().forEach(c);
} else
_[0].event === "start" ? o.push(_[0].node) : o.pop(), l(_.splice(0, 1)[0]);
}
return a + je(n.substr(r));
}
const Bi = {}, en = (t) => {
console.error(t);
}, Gi = (t, ...e) => {
console.log(`WARN: ${t}`, ...e);
}, he = (t, e) => {
Bi[`${t}/${e}`] || (console.log(`Deprecated as of ${t}. ${e}`), Bi[`${t}/${e}`] = !0);
}, tn = je, qi = Be, Yi = Symbol("nomatch"), Mp = function(t) {
const e = /* @__PURE__ */ Object.create(null), n = /* @__PURE__ */ Object.create(null), r = [];
let a = !0;
const o = /(^(<[^>]+>|\t|)+|\n)/gm, i = "Could not find the language '{}', did you forget to load/include a language module?", c = { disableAutodetect: !0, name: "Plain text", contains: [] };
let s = {
noHighlightRe: /^(no-?highlight)$/i,
languageDetectRe: /\blang(?:uage)?-([\w-]+)\b/i,
classPrefix: "hljs-",
tabReplace: null,
useBR: !1,
languages: null,
// beta configuration options, subject to change, welcome to discuss
// https://github.com/highlightjs/highlight.js/issues/1086
__emitter: zu
};
function l(O) {
return s.noHighlightRe.test(O);
}
function _(O) {
let w = O.className + " ";
w += O.parentNode ? O.parentNode.className : "";
const Y = s.languageDetectRe.exec(w);
if (Y) {
const z = G(Y[1]);
return z || (Gi(i.replace("{}", Y[1])), Gi("Falling back to no-highlight mode for this block.", O)), z ? Y[1] : "no-highlight";
}
return w.split(/\s+/).find((z) => l(z) || G(z));
}
function p(O, w, Y, z) {
let X = "", pe = "";
typeof w == "object" ? (X = O, Y = w.ignoreIllegals, pe = w.language, z = void 0) : (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`), pe = O, X = w);
const se = {
code: X,
language: pe
};
de("before:highlight", se);
const Z = se.result ? se.result : u(se.language, se.code, Y, z);
return Z.code = se.code, de("after:highlight", Z), Z;
}
function u(O, w, Y, z) {
function X(P, F) {
const V = xe.case_insensitive ? F[0].toLowerCase() : F[0];
return Object.prototype.hasOwnProperty.call(P.keywords, V) && P.keywords[V];
}
function pe() {
if (!H.keywords) {
ae.addText(j);
return;
}
let P = 0;
H.keywordPatternRe.lastIndex = 0;
let F = H.keywordPatternRe.exec(j), V = "";
for (; F; ) {
V += j.substring(P, F.index);
const B = X(H, F);
if (B) {
const [le, Ue] = B;
if (ae.addText(V), V = "", Pe += Ue, le.startsWith("_"))
V += F[0];
else {
const Nt = xe.classNameAliases[le] || le;
ae.addKeyword(F[0], Nt);
}
} else
V += F[0];
P = H.keywordPatternRe.lastIndex, F = H.keywordPatternRe.exec(j);
}
V += j.substr(P), ae.addText(V);
}
function se() {
if (j === "") return;
let P = null;
if (typeof H.subLanguage == "string") {
if (!e[H.subLanguage]) {
ae.addText(j);
return;
}
P = u(H.subLanguage, j, !0, dt[H.subLanguage]), dt[H.subLanguage] = /** @type {CompiledMode} */
P.top;
} else
P = g(j, H.subLanguage.length ? H.subLanguage : null);
H.relevance > 0 && (Pe += P.relevance), ae.addSublanguage(P.emitter, P.language);
}
function Z() {
H.subLanguage != null ? se() : pe(), j = "";
}
function ce(P) {
return P.className && ae.openNode(xe.classNameAliases[P.className] || P.className), H = Object.create(P, { parent: { value: H } }), H;
}
function me(P, F, V) {
let B = Xu(P.endRe, V);
if (B) {
if (P["on:end"]) {
const le = new Pi(P);
P["on:end"](F, le), le.isMatchIgnored && (B = !1);
}
if (B) {
for (; P.endsParent && P.parent; )
P = P.parent;
return P;
}
}
if (P.endsWithParent)
return me(P.parent, F, V);
}
function lt(P) {
return H.matcher.regexIndex === 0 ? (j += P[0], 1) : (Qe = !0, 0);
}
function Rt(P) {
const F = P[0], V = P.rule, B = new Pi(V), le = [V.__beforeBegin, V["on:begin"]];
for (const Ue of le)
if (Ue && (Ue(P, B), B.isMatchIgnored))
return lt(F);
return V && V.endSameAsBegin && (V.endRe = $u(F)), V.skip ? j += F : (V.excludeBegin && (j += F), Z(), !V.returnBegin && !V.excludeBegin && (j = F)), ce(V), V.returnBegin ? 0 : F.length;
}
function Ct(P) {
const F = P[0], V = w.substr(P.index), B = me(H, P, V);
if (!B)
return Yi;
const le = H;
le.skip ? j += F : (le.returnEnd || le.excludeEnd || (j += F), Z(), le.excludeEnd && (j = F));
do
H.className && ae.closeNode(), !H.skip && !H.subLanguage && (Pe += H.relevance), H = H.parent;
while (H !== B.parent);
return B.starts && (B.endSameAsBegin && (B.starts.endRe = B.endRe), ce(B.starts)), le.returnEnd ? 0 : F.length;
}
function Ke() {
const P = [];
for (let F = H; F !== xe; F = F.parent)
F.className && P.unshift(F.className);
P.forEach((F) => ae.openNode(F));
}
let qe = {};
function _t(P, F) {
const V = F && F[0];
if (j += P, V == null)
return Z(), 0;
if (qe.type === "begin" && F.type === "end" && qe.index === F.index && V === "") {
if (j += w.slice(F.index, F.index + 1), !a) {
const B = new Error("0 width match regex");
throw B.languageName = O, B.badRule = qe.rule, B;
}
return 1;
}
if (qe = F, F.type === "begin")
return Rt(F);
if (F.type === "illegal" && !Y) {
const B = new Error('Illegal lexeme "' + V + '" for mode "' + (H.className || "<unnamed>") + '"');
throw B.mode = H, B;
} else if (F.type === "end") {
const B = Ct(F);
if (B !== Yi)
return B;
}
if (F.type === "illegal" && V === "")
return 1;
if (He > 1e5 && He > F.index * 3)
throw new Error("potential infinite loop, way more iterations than matches");
return j += V, V.length;
}
const xe = G(O);
if (!xe)
throw en(i.replace("{}", O)), new Error('Unknown language: "' + O + '"');
const Ye = vp(xe, { plugins: r });
let Te = "", H = z || Ye;
const dt = {}, ae = new s.__emitter(s);
Ke();
let j = "", Pe = 0, Le = 0, He = 0, Qe = !1;
try {
for (H.matcher.considerAll(); ; ) {
He++, Qe ? Qe = !1 : H.matcher.considerAll(), H.matcher.lastIndex = Le;
const P = H.matcher.exec(w);
if (!P) break;
const F = w.substring(Le, P.index), V = _t(F, P);
Le = P.index + V;
}
return _t(w.substr(Le)), ae.closeAllNodes(), ae.finalize(), Te = ae.toHTML(), {
// avoid possible breakage with v10 clients expecting
// this to always be an integer
relevance: Math.floor(Pe),
value: Te,
language: O,
illegal: !1,
emitter: ae,
top: H
};
} catch (P) {
if (P.message && P.message.includes("Illegal"))
return {
illegal: !0,
illegalBy: {
msg: P.message,
context: w.slice(Le - 100, Le + 100),
mode: P.mode
},
sofar: Te,
relevance: 0,
value: tn(w),
emitter: ae
};
if (a)
return {
illegal: !1,
relevance: 0,
value: tn(w),
emitter: ae,
language: O,
top: H,
errorRaised: P
};
throw P;
}
}
function d(O) {
const w = {
relevance: 0,
emitter: new s.__emitter(s),
value: tn(O),
illegal: !1,
top: c
};
return w.emitter.addText(O), w;
}
function g(O, w) {
w = w || s.languages || Object.keys(e);
const Y = d(O), z = w.filter(G).filter($).map(
(ce) => u(ce, O, !1)
);
z.unshift(Y);
const X = z.sort((ce, me) => {
if (ce.relevance !== me.relevance) return me.relevance - ce.relevance;
if (ce.language && me.language) {
if (G(ce.language).supersetOf === me.language)
return 1;
if (G(me.language).supersetOf === ce.language)
return -1;
}
return 0;
}), [pe, se] = X, Z = pe;
return Z.second_best = se, Z;
}
function S(O) {
return s.tabReplace || s.useBR ? O.replace(o, (w) => w === `
` ? s.useBR ? "<br>" : w : s.tabReplace ? w.replace(/\t/g, s.tabReplace) : w) : O;
}
function E(O, w, Y) {
const z = w ? n[w] : Y;
O.classList.add("hljs"), z && O.classList.add(z);
}
const f = {
"before:highlightElement": ({ el: O }) => {
s.useBR && (O.innerHTML = O.innerHTML.replace(/\n/g, "").replace(/<br[ /]*>/g, `
`));
},
"after:highlightElement": ({ result: O }) => {
s.useBR && (O.value = O.value.replace(/\n/g, "<br>"));
}
}, b = /^(<[^>]+>|\t)+/gm, h = {
"after:highlightElement": ({ result: O }) => {
s.tabReplace && (O.value = O.value.replace(
b,
(w) => w.replace(/\t/g, s.tabReplace)
));
}
};
function C(O) {
let w = null;
const Y = _(O);
if (l(Y)) return;
de(
"before:highlightElement",
{ el: O, language: Y }
), w = O;
const z = w.textContent, X = Y ? p(z, { language: Y, ignoreIllegals: !0 }) : g(z);
de("after:highlightElement", { el: O, result: X, text: z }), O.innerHTML = X.value, E(O, Y, X.language), O.result = {
language: X.language,
// TODO: remove with version 11.0
re: X.relevance,
relavance: X.relevance
}, X.second_best && (O.second_best = {
language: X.second_best.language,
// TODO: remove with version 11.0
re: X.second_best.relevance,
relavance: X.second_best.relevance
});
}
function v(O) {
O.useBR && (he("10.3.0", "'useBR' will be removed entirely in v11.0"), he("10.3.0", "Please see https://github.com/highlightjs/highlight.js/issues/2559")), s = qi(s, O);
}
const R = () => {
if (R.called) return;
R.called = !0, he("10.6.0", "initHighlighting() is deprecated. Use highlightAll() instead."), document.querySelectorAll("pre code").forEach(C);
};
function N() {
he("10.6.0", "initHighlightingOnLoad() is deprecated. Use highlightAll() instead."), I = !0;
}
let I = !1;
function L() {
if (document.readyState === "loading") {
I = !0;
return;
}
document.querySelectorAll("pre code").forEach(C);
}
function A() {
I && L();
}
typeof window < "u" && window.addEventListener && window.addEventListener("DOMContentLoaded", A, !1);
function x(O, w) {
let Y = null;
try {
Y = w(t);
} catch (z) {
if (en("Language definition for '{}' could not be registered.".replace("{}", O)), a)
en(z);
else
throw z;
Y = c;
}
Y.name || (Y.name = O), e[O] = Y, Y.rawDefinition = w.bind(null, t), Y.aliases && k(Y.aliases, { languageName: O });
}
function U(O) {
delete e[O];
for (const w of Object.keys(n))
n[w] === O && delete n[w];
}
function q() {
return Object.keys(e);
}
function y(O) {
he("10.4.0", "requireLanguage will be removed entirely in v11."), he("10.4.0", "Please see https://github.com/highlightjs/highlight.js/pull/2844");
const w = G(O);
if (w)
return w;
throw new Error("The '{}' language is required, but not loaded.".replace("{}", O));
}
function G(O) {
return O = (O || "").toLowerCase(), e[O] || e[n[O]];
}
function k(O, { languageName: w }) {
typeof O == "string" && (O = [O]), O.forEach((Y) => {
n[Y.toLowerCase()] = w;
});
}
function $(O) {
const w = G(O);
return w && !w.disableAutodetect;
}
function ne(O) {
O["before:highlightBlock"] && !O["before:highlightElement"] && (O["before:highlightElement"] = (w) => {
O["before:highlightBlock"](
Object.assign({ block: w.el }, w)
);
}), O["after:highlightBlock"] && !O["after:highlightElement"] && (O["after:highlightElement"] = (w) => {
O["after:highlightBlock"](
Object.assign({ block: w.el }, w)
);
});
}
function _e(O) {
ne(O), r.push(O);
}
function de(O, w) {
const Y = O;
r.forEach(function(z) {
z[Y] && z[Y](w);
});
}
function Me(O) {
return he("10.2.0", "fixMarkup will be removed entirely in v11.0"), he("10.2.0", "Please see https://github.com/highlightjs/highlight.js/issues/2534"), S(O);
}
function ke(O) {
return he("10.7.0", "highlightBlock will be removed entirely in v12.0"), he("10.7.0", "Please use highlightElement now."), C(O);
}
Object.assign(t, {
highlight: p,
highlightAuto: g,
highlightAll: L,
fixMarkup: Me,
highlightElement: C,
// TODO: Remove with v12 API
highlightBlock: ke,
configure: v,
initHighlighting: R,
initHighlightingOnLoad: N,
registerLanguage: x,
unregisterLanguage: U,
listLanguages: q,
getLanguage: G,
registerAliases: k,
requireLanguage: y,
autoDetection: $,
inherit: qi,
addPlugin: _e,
// plugins for frameworks
vuePlugin: Ip(t).VuePlugin
}), t.debugMode = function() {
a = !1;
}, t.safeMode = function() {
a = !0;
}, t.versionString = Ap;
for (const O in It)
typeof It[O] == "object" && gd(It[O]);
return Object.assign(t, It), t.addPlugin(f), t.addPlugin(Dp), t.addPlugin(h), t;
};
var xp = Mp({}), Lp = xp, nn, Hi;
function kp() {
if (Hi) return nn;
Hi = 1;
function t(e) {
var n = "[A-Za-zА-Яа-яёЁ_][A-Za-zА-Яа-яёЁ_0-9]+", r = "далее ", a = "возврат вызватьисключение выполнить для если и из или иначе иначеесли исключение каждого конецесли конецпопытки конеццикла не новый перейти перем по пока попытка прервать продолжить тогда цикл экспорт ", o = r + a, i = "загрузитьизфайла ", c = "вебклиент вместо внешнеесоединение клиент конецобласти мобильноеприложениеклиент мобильноеприложениесервер наклиенте наклиентенасервере наклиентенасерверебезконтекста насервере насерверебезконтекста область перед после сервер толстыйклиентобычноеприложение толстыйклиентуправляемоеприложение тонкийклиент ", s = i + c, l = "разделительстраниц разделительстрок символтабуляции ", _ = "ansitooem oemtoansi ввестивидсубконто ввестиперечисление ввестипериод ввестиплансчетов выбранныйплансчетов датагод датамесяц датачисло заголовоксистемы значениевстроку значениеизстроки каталогиб каталогпользователя кодсимв конгода конецпериодаби конецрассчитанногопериодаби конецстандартногоинтервала конквартала конмесяца коннедели лог лог10 максимальноеколичествосубконто названиеинтерфейса названиенабораправ назначитьвид назначитьсчет найтиссылки началопериодаби началостандартногоинтервала начгода начквартала начмесяца начнедели номерднягода номерднянедели номернеделигода обработкаожидания основнойжурналрасчетов основнойплансчетов основнойязык очиститьокносообщений периодстр получитьвремята получитьдатута получитьдокументта получитьзначенияотбора получитьпозициюта получитьпустоезначение получитьта префиксавтонумерации пропись пустоезначение разм разобратьпозициюдокумента рассчитатьрегистрына рассчитатьрегистрыпо симв создатьобъект статусвозврата стрколичествострок сформироватьпозициюдокумента счетпокоду текущеевремя типзначения типзначениястр установитьтана установитьтапо фиксшаблон шаблон ", p = "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тип получитьадреспоместоположению получитьблокировкусеансов получитьвремязавершенияспящегосеанса получитьвремязасыпанияпассивногосеанса получитьвремяожиданияблокировкиданных получитьданныевыбора получитьдополнительныйпараметрклиенталицензирования получитьдопустимыекодылокализации получитьдопустимыечасовыепояса получитьзаголовокклиентскогоприложения получитьзаголовоксистемы получитьзначенияотборажурналарегистрации получитьидентификаторконфигурации получитьизвременногохранилища получит