@diplodoc/client 3.7.3 → 3.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/build/client/app.js +1 -1
- package/build/client/app.js.map +1 -1
- package/build/client/react.js +1 -1
- package/build/client/react.js.LICENSE.txt +0 -20
- package/build/client/react.js.map +1 -1
- package/build/client/search.js +1 -1
- package/build/client/search.js.map +1 -1
- package/build/client/vendor.js +1 -1
- package/build/client/vendor.js.map +1 -1
- package/build/components/App/index.d.ts +3 -2
- package/build/server/app.js +59 -5
- package/build/server/app.js.map +1 -1
- package/build/server/vendor.js +316 -917
- package/build/server/vendor.js.map +1 -1
- package/build/utils.d.ts +12 -1
- package/package.json +2 -2
package/build/server/vendor.js
CHANGED
|
@@ -1694,923 +1694,6 @@ __exportStar(__webpack_require__(78748), exports);
|
|
|
1694
1694
|
__exportStar(__webpack_require__(52270), exports);
|
|
1695
1695
|
|
|
1696
1696
|
|
|
1697
|
-
/***/ }),
|
|
1698
|
-
|
|
1699
|
-
/***/ 2097:
|
|
1700
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
1701
|
-
|
|
1702
|
-
"use strict";
|
|
1703
|
-
|
|
1704
|
-
// EXPORTS
|
|
1705
|
-
__webpack_require__.d(__webpack_exports__, {
|
|
1706
|
-
Xf: () => (/* reexport */ hooks_useMdxSsr)
|
|
1707
|
-
});
|
|
1708
|
-
|
|
1709
|
-
// UNUSED EXPORTS: MdxSetStateCtx, MdxStateCtx, getAsyncMdxCollectPlugin, getAsyncSsrRenderer, getMdxCollectPlugin, getRender, getSsrRenderer, isWithMdxArtifacts, mdxPlugin, useMdx, validateMdx, withInitialProps, withPortal
|
|
1710
|
-
|
|
1711
|
-
;// ./node_modules/@mdx-js/mdx/lib/run.js
|
|
1712
|
-
/**
|
|
1713
|
-
* @import {MDXModule} from 'mdx/types.js'
|
|
1714
|
-
* @import {RunOptions} from './util/resolve-evaluate-options.js'
|
|
1715
|
-
*/
|
|
1716
|
-
|
|
1717
|
-
/** @type {new (code: string, ...args: Array<unknown>) => Function} **/
|
|
1718
|
-
const AsyncFunction = Object.getPrototypeOf(run_run).constructor
|
|
1719
|
-
|
|
1720
|
-
/**
|
|
1721
|
-
* Run code compiled with `outputFormat: 'function-body'`.
|
|
1722
|
-
*
|
|
1723
|
-
* > ☢️ **Danger**: this `eval`s JavaScript.
|
|
1724
|
-
*
|
|
1725
|
-
* @param {{toString(): string}} code
|
|
1726
|
-
* JavaScript function body to run.
|
|
1727
|
-
* @param {RunOptions} options
|
|
1728
|
-
* Configuration (**required**).
|
|
1729
|
-
* @return {Promise<MDXModule>}
|
|
1730
|
-
* Promise to a module;
|
|
1731
|
-
* the result is an object with a `default` field set to the component;
|
|
1732
|
-
* anything else that was exported is available too.
|
|
1733
|
-
*/
|
|
1734
|
-
async function run_run(code, options) {
|
|
1735
|
-
return new AsyncFunction(String(code))(options)
|
|
1736
|
-
}
|
|
1737
|
-
|
|
1738
|
-
/**
|
|
1739
|
-
* Run code, synchronously.
|
|
1740
|
-
*
|
|
1741
|
-
* When possible please use the async `run`.
|
|
1742
|
-
*
|
|
1743
|
-
* > ☢️ **Danger**: this `eval`s JavaScript.
|
|
1744
|
-
*
|
|
1745
|
-
* @param {{toString(): string}} code
|
|
1746
|
-
* JavaScript function body to run.
|
|
1747
|
-
* @param {RunOptions} options
|
|
1748
|
-
* Configuration (**required**).
|
|
1749
|
-
* @return {MDXModule}
|
|
1750
|
-
* Module.
|
|
1751
|
-
*/
|
|
1752
|
-
function run_runSync(code, options) {
|
|
1753
|
-
// eslint-disable-next-line no-new-func
|
|
1754
|
-
return new Function(String(code))(options)
|
|
1755
|
-
}
|
|
1756
|
-
|
|
1757
|
-
// EXTERNAL MODULE: ./node_modules/react-dom/client.js
|
|
1758
|
-
var client = __webpack_require__(5338);
|
|
1759
|
-
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
|
|
1760
|
-
var jsx_runtime = __webpack_require__(74848);
|
|
1761
|
-
var jsx_runtime_namespaceObject = /*#__PURE__*/__webpack_require__.t(jsx_runtime, 2);
|
|
1762
|
-
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
1763
|
-
var react = __webpack_require__(96540);
|
|
1764
|
-
;// ./node_modules/@diplodoc/mdx-extension/build/esm/context/MdxStateCtx.js
|
|
1765
|
-
|
|
1766
|
-
const MdxStateCtx_MdxStateCtx = (0,react.createContext)(null);
|
|
1767
|
-
;// ./node_modules/@diplodoc/mdx-extension/build/esm/context/MdxSetStateCtx.js
|
|
1768
|
-
|
|
1769
|
-
const MdxSetStateCtx_MdxSetStateCtx = (0,react.createContext)(null);
|
|
1770
|
-
;// ./node_modules/@diplodoc/mdx-extension/build/esm/context/index.js
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
;// ./node_modules/@diplodoc/mdx-extension/build/esm/context/internal/MdxPortalSetterCtx.js
|
|
1774
|
-
|
|
1775
|
-
const MdxPortalSetterCtx_MdxPortalSetterCtx = (0,react.createContext)(null);
|
|
1776
|
-
;// ./node_modules/@diplodoc/mdx-extension/build/esm/utils/internal/maps.js
|
|
1777
|
-
|
|
1778
|
-
const maps_portalWrapperComponentMap = new WeakMap();
|
|
1779
|
-
const maps_componentGetInitProps = new WeakMap();
|
|
1780
|
-
;// ./node_modules/@diplodoc/mdx-extension/build/esm/utils/internal/common.js
|
|
1781
|
-
|
|
1782
|
-
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
const nodeRootMap = new WeakMap();
|
|
1789
|
-
const nodeWillUmount = new WeakMap();
|
|
1790
|
-
const nodePortalCleanup = new WeakMap();
|
|
1791
|
-
const common_renderMdxComponents = ({
|
|
1792
|
-
idMdxComponent,
|
|
1793
|
-
isSSR,
|
|
1794
|
-
ctr,
|
|
1795
|
-
components,
|
|
1796
|
-
setPortal,
|
|
1797
|
-
idTagName
|
|
1798
|
-
}) => {
|
|
1799
|
-
const unmountFns = Object.entries(idMdxComponent).map(([id, Content]) => {
|
|
1800
|
-
let node = ctr.querySelector(`.${id}`);
|
|
1801
|
-
if (!node) {
|
|
1802
|
-
throw new Error('node is null');
|
|
1803
|
-
}
|
|
1804
|
-
if (nodeWillUmount.get(node) && node.parentNode) {
|
|
1805
|
-
const newNode = node.cloneNode(true);
|
|
1806
|
-
node.parentNode.replaceChild(newNode, node);
|
|
1807
|
-
node = newNode;
|
|
1808
|
-
}
|
|
1809
|
-
const mdxState = node?.dataset?.mdxState ? JSON.parse(node.dataset.mdxState) : null;
|
|
1810
|
-
const contentNode = react.createElement(MdxStateCtx_MdxStateCtx.Provider, {
|
|
1811
|
-
value: mdxState,
|
|
1812
|
-
children: react.createElement(Content, {
|
|
1813
|
-
components
|
|
1814
|
-
})
|
|
1815
|
-
});
|
|
1816
|
-
const isTopLevelPortal = components && common_isPortal(components[idTagName[id]]);
|
|
1817
|
-
let root;
|
|
1818
|
-
if (isTopLevelPortal) {
|
|
1819
|
-
if (!nodePortalCleanup.has(node)) {
|
|
1820
|
-
nodePortalCleanup.set(node, true);
|
|
1821
|
-
while (node.firstChild) {
|
|
1822
|
-
node.removeChild(node.firstChild);
|
|
1823
|
-
}
|
|
1824
|
-
}
|
|
1825
|
-
setPortal({
|
|
1826
|
-
id,
|
|
1827
|
-
node,
|
|
1828
|
-
reactNode: contentNode
|
|
1829
|
-
});
|
|
1830
|
-
} else {
|
|
1831
|
-
const reactNode = react.createElement(MdxPortalSetterCtx_MdxPortalSetterCtx.Provider, {
|
|
1832
|
-
value: setPortal,
|
|
1833
|
-
children: contentNode
|
|
1834
|
-
});
|
|
1835
|
-
root = nodeRootMap.get(node);
|
|
1836
|
-
if (root) {
|
|
1837
|
-
root.render(reactNode);
|
|
1838
|
-
} else {
|
|
1839
|
-
const options = {
|
|
1840
|
-
identifierPrefix: id
|
|
1841
|
-
};
|
|
1842
|
-
if (isSSR) {
|
|
1843
|
-
root = (0,client/* hydrateRoot */.c)(node, reactNode, options);
|
|
1844
|
-
} else {
|
|
1845
|
-
root = (0,client/* createRoot */.H)(node, options);
|
|
1846
|
-
root.render(reactNode);
|
|
1847
|
-
}
|
|
1848
|
-
nodeRootMap.set(node, root);
|
|
1849
|
-
}
|
|
1850
|
-
}
|
|
1851
|
-
return () => {
|
|
1852
|
-
nodeWillUmount.set(node, true);
|
|
1853
|
-
if (isTopLevelPortal) {
|
|
1854
|
-
setPortal({
|
|
1855
|
-
id,
|
|
1856
|
-
node: null,
|
|
1857
|
-
reactNode: null
|
|
1858
|
-
});
|
|
1859
|
-
} else if (root) {
|
|
1860
|
-
setTimeout(() => root.unmount(), 0);
|
|
1861
|
-
}
|
|
1862
|
-
};
|
|
1863
|
-
});
|
|
1864
|
-
return () => unmountFns.forEach(cb => cb());
|
|
1865
|
-
};
|
|
1866
|
-
const common_idMdxToComponents = idMdx => {
|
|
1867
|
-
return Object.entries(idMdx ?? {}).reduce((acc, [id, fnStr]) => {
|
|
1868
|
-
// eslint-disable-next-line no-param-reassign
|
|
1869
|
-
acc[id] = run_runSync(fnStr, jsx_runtime_namespaceObject).default;
|
|
1870
|
-
return acc;
|
|
1871
|
-
}, {});
|
|
1872
|
-
};
|
|
1873
|
-
function common_generateUniqueId() {
|
|
1874
|
-
return Date.now().toString(36) + Math.random().toString(36).substring(2);
|
|
1875
|
-
}
|
|
1876
|
-
function common_isPortal(component) {
|
|
1877
|
-
return maps_portalWrapperComponentMap.has(component);
|
|
1878
|
-
}
|
|
1879
|
-
function common_getInitMdxArtifacts() {
|
|
1880
|
-
return {
|
|
1881
|
-
idMdx: {},
|
|
1882
|
-
idTagName: {}
|
|
1883
|
-
};
|
|
1884
|
-
}
|
|
1885
|
-
;// ./node_modules/@diplodoc/mdx-extension/build/esm/mdx-plugin.js
|
|
1886
|
-
|
|
1887
|
-
|
|
1888
|
-
|
|
1889
|
-
|
|
1890
|
-
const mdxPlugin = options => {
|
|
1891
|
-
const {
|
|
1892
|
-
render = getRender(),
|
|
1893
|
-
isTestMode = false,
|
|
1894
|
-
tagNames
|
|
1895
|
-
} = options ?? {};
|
|
1896
|
-
const transform = md => {
|
|
1897
|
-
const idMdxBody = {};
|
|
1898
|
-
const iTagLen = InternalTagName.length + 2;
|
|
1899
|
-
const corePlugin = state => {
|
|
1900
|
-
let index = 0;
|
|
1901
|
-
// eslint-disable-next-line no-param-reassign
|
|
1902
|
-
state.src = replaceBlocks({
|
|
1903
|
-
content: state.src,
|
|
1904
|
-
tagNames,
|
|
1905
|
-
replacer: body => {
|
|
1906
|
-
const id = String(++index);
|
|
1907
|
-
idMdxBody[id] = body;
|
|
1908
|
-
return `<${InternalTagName}>${id}</${InternalTagName}>`;
|
|
1909
|
-
}
|
|
1910
|
-
});
|
|
1911
|
-
return true;
|
|
1912
|
-
};
|
|
1913
|
-
md.core.ruler.before('block', 'mdx-replacer-core', corePlugin);
|
|
1914
|
-
const mdxRe = new RegExp(`<${InternalTagName}>(\\d+)</${InternalTagName}>`, 'g');
|
|
1915
|
-
const tokenTypes = ['code_block', 'code_inline', 'fence'];
|
|
1916
|
-
const coreReplaceBack = state => {
|
|
1917
|
-
const next = tokens => {
|
|
1918
|
-
for (let i = 0, len = tokens.length; i < len; i++) {
|
|
1919
|
-
const token = tokens[i];
|
|
1920
|
-
if (tokenTypes.includes(token.type)) {
|
|
1921
|
-
token.content = token.content.replace(mdxRe, (_, id) => {
|
|
1922
|
-
return idMdxBody[id].fragment;
|
|
1923
|
-
});
|
|
1924
|
-
}
|
|
1925
|
-
if (token.children) {
|
|
1926
|
-
// eslint-disable-next-line callback-return
|
|
1927
|
-
next(token.children);
|
|
1928
|
-
}
|
|
1929
|
-
}
|
|
1930
|
-
};
|
|
1931
|
-
next(state.tokens);
|
|
1932
|
-
return true;
|
|
1933
|
-
};
|
|
1934
|
-
md.core.ruler.push('mdx-replace-back', coreReplaceBack);
|
|
1935
|
-
const blockPlugin = (state, startLine, endLine, silent) => {
|
|
1936
|
-
const {
|
|
1937
|
-
env
|
|
1938
|
-
} = state;
|
|
1939
|
-
const mdxArtifacts = env.mdxArtifacts = env.mdxArtifacts ?? getInitMdxArtifacts();
|
|
1940
|
-
const start = state.bMarks[startLine] + state.tShift[startLine];
|
|
1941
|
-
if (state.src.slice(start, start + iTagLen) !== `<${InternalTagName}>`) {
|
|
1942
|
-
return false;
|
|
1943
|
-
}
|
|
1944
|
-
let endPos = -1;
|
|
1945
|
-
let line = startLine;
|
|
1946
|
-
for (; line <= endLine; line++) {
|
|
1947
|
-
endPos = state.src.indexOf(`</${InternalTagName}>`, state.bMarks[line]);
|
|
1948
|
-
if (endPos !== -1 && endPos <= state.eMarks[line]) {
|
|
1949
|
-
break;
|
|
1950
|
-
}
|
|
1951
|
-
}
|
|
1952
|
-
if (endPos === -1) return false;
|
|
1953
|
-
if (!silent) {
|
|
1954
|
-
const htmlToken = state.push('html_block', '', 0);
|
|
1955
|
-
const id = state.src.slice(start + iTagLen, endPos);
|
|
1956
|
-
const {
|
|
1957
|
-
content,
|
|
1958
|
-
tagName
|
|
1959
|
-
} = idMdxBody[id];
|
|
1960
|
-
htmlToken.content = render({
|
|
1961
|
-
mdx: content,
|
|
1962
|
-
mdxArtifacts,
|
|
1963
|
-
tagName
|
|
1964
|
-
});
|
|
1965
|
-
htmlToken.map = [startLine, line];
|
|
1966
|
-
const afterText = state.src.slice(endPos + (iTagLen + 1), state.eMarks[line]);
|
|
1967
|
-
if (afterText) {
|
|
1968
|
-
const afterToken = state.push('inline', '', 0);
|
|
1969
|
-
afterToken.content = afterText;
|
|
1970
|
-
afterToken.children = [];
|
|
1971
|
-
afterToken.map = [line, line + 1];
|
|
1972
|
-
}
|
|
1973
|
-
}
|
|
1974
|
-
// eslint-disable-next-line no-param-reassign
|
|
1975
|
-
state.line = line + 1;
|
|
1976
|
-
return true;
|
|
1977
|
-
};
|
|
1978
|
-
md.block.ruler.before('table', 'mdx-replacer-block', blockPlugin);
|
|
1979
|
-
const inlinePlugin = (state, silent) => {
|
|
1980
|
-
const {
|
|
1981
|
-
env
|
|
1982
|
-
} = state;
|
|
1983
|
-
const mdxArtifacts = env.mdxArtifacts = env.mdxArtifacts ?? getInitMdxArtifacts();
|
|
1984
|
-
const start = state.pos;
|
|
1985
|
-
// Проверяем открывающий тег <MDX>
|
|
1986
|
-
if (state.src.slice(start, start + iTagLen) !== `<${InternalTagName}>`) {
|
|
1987
|
-
return false;
|
|
1988
|
-
}
|
|
1989
|
-
// Находим закрывающий тег
|
|
1990
|
-
const endPos = state.src.indexOf(`</${InternalTagName}>`, start + iTagLen);
|
|
1991
|
-
if (endPos === -1) return false;
|
|
1992
|
-
if (!silent) {
|
|
1993
|
-
const token = state.push('html_inline', '', 0);
|
|
1994
|
-
const id = state.src.slice(start + iTagLen, endPos);
|
|
1995
|
-
const {
|
|
1996
|
-
content,
|
|
1997
|
-
tagName
|
|
1998
|
-
} = idMdxBody[id];
|
|
1999
|
-
token.content = render({
|
|
2000
|
-
mdx: content,
|
|
2001
|
-
mdxArtifacts,
|
|
2002
|
-
tagName
|
|
2003
|
-
});
|
|
2004
|
-
}
|
|
2005
|
-
// eslint-disable-next-line no-param-reassign
|
|
2006
|
-
state.pos = endPos + (iTagLen + 1);
|
|
2007
|
-
return true;
|
|
2008
|
-
};
|
|
2009
|
-
md.inline.ruler.before('text', 'mdx-replacer-inline', inlinePlugin);
|
|
2010
|
-
if (isTestMode) {
|
|
2011
|
-
const testMd = md;
|
|
2012
|
-
testMd.env = testMd.env || {};
|
|
2013
|
-
testMd.env.idMdxBody = idMdxBody;
|
|
2014
|
-
testMd.env.corePlugin = corePlugin;
|
|
2015
|
-
testMd.env.coreReplaceBack = coreReplaceBack;
|
|
2016
|
-
testMd.env.blockPlugin = blockPlugin;
|
|
2017
|
-
testMd.env.inlinePlugin = inlinePlugin;
|
|
2018
|
-
}
|
|
2019
|
-
};
|
|
2020
|
-
return transform;
|
|
2021
|
-
};
|
|
2022
|
-
/* harmony default export */ const mdx_plugin = ((/* unused pure expression or super */ null && (mdxPlugin)));
|
|
2023
|
-
// EXTERNAL MODULE: ./node_modules/react-dom/server.node.js
|
|
2024
|
-
var server_node = __webpack_require__(94362);
|
|
2025
|
-
;// ./node_modules/@diplodoc/mdx-extension/build/esm/utils/getSsrRenderer.js
|
|
2026
|
-
|
|
2027
|
-
|
|
2028
|
-
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
|
|
2034
|
-
|
|
2035
|
-
const getSsrRenderer_getSsrRenderer = ({
|
|
2036
|
-
components,
|
|
2037
|
-
pureComponents,
|
|
2038
|
-
compileOptions
|
|
2039
|
-
}) => {
|
|
2040
|
-
const componentsNames = Object.keys(components || {});
|
|
2041
|
-
const usedComponents = new Set();
|
|
2042
|
-
const combinedComponents = {
|
|
2043
|
-
...components,
|
|
2044
|
-
...pureComponents
|
|
2045
|
-
};
|
|
2046
|
-
const combinedComponentsWatch = wrapObject(combinedComponents, name => usedComponents.add(name));
|
|
2047
|
-
const render = (id, mdx, tagName) => {
|
|
2048
|
-
const vFile = compileSync(mdx, {
|
|
2049
|
-
...compileOptions,
|
|
2050
|
-
outputFormat: 'function-body'
|
|
2051
|
-
});
|
|
2052
|
-
const {
|
|
2053
|
-
default: Component
|
|
2054
|
-
} = runSync(vFile, runtime);
|
|
2055
|
-
const isTopLevelPortal = isPortal(combinedComponents[tagName]);
|
|
2056
|
-
let code = vFile.toString();
|
|
2057
|
-
const state = {};
|
|
2058
|
-
const setState = value => {
|
|
2059
|
-
Object.assign(state, value);
|
|
2060
|
-
};
|
|
2061
|
-
const options = {
|
|
2062
|
-
identifierPrefix: id
|
|
2063
|
-
};
|
|
2064
|
-
usedComponents.clear();
|
|
2065
|
-
let html = renderToString(React.createElement(TAG_NAME, {
|
|
2066
|
-
className: id,
|
|
2067
|
-
children: React.createElement(MdxPortalSetterCtx.Provider, {
|
|
2068
|
-
value: () => {},
|
|
2069
|
-
children: React.createElement(MdxSetStateCtx.Provider, {
|
|
2070
|
-
value: setState,
|
|
2071
|
-
children: React.createElement(MdxStateCtx.Provider, {
|
|
2072
|
-
value: state,
|
|
2073
|
-
children: React.createElement(Component, {
|
|
2074
|
-
components: combinedComponentsWatch
|
|
2075
|
-
})
|
|
2076
|
-
})
|
|
2077
|
-
})
|
|
2078
|
-
})
|
|
2079
|
-
}), options);
|
|
2080
|
-
if (!isEmptyObject(state)) {
|
|
2081
|
-
html = html.replace(`${TAG_NAME} `, `${TAG_NAME} data-mdx-state="${escapeAttribute(JSON.stringify(state))}" `);
|
|
2082
|
-
}
|
|
2083
|
-
const withComponents = componentsNames.some(name => usedComponents.has(name));
|
|
2084
|
-
if (!withComponents) {
|
|
2085
|
-
html = trimComponentWrapper(html);
|
|
2086
|
-
code = undefined;
|
|
2087
|
-
}
|
|
2088
|
-
if (isTopLevelPortal) {
|
|
2089
|
-
html = trimPortalTag(html);
|
|
2090
|
-
}
|
|
2091
|
-
return {
|
|
2092
|
-
html,
|
|
2093
|
-
code
|
|
2094
|
-
};
|
|
2095
|
-
};
|
|
2096
|
-
let idx = 0;
|
|
2097
|
-
const getHtml = ({
|
|
2098
|
-
mdx,
|
|
2099
|
-
mdxArtifacts,
|
|
2100
|
-
tagName
|
|
2101
|
-
}) => {
|
|
2102
|
-
const {
|
|
2103
|
-
idMdx,
|
|
2104
|
-
idTagName
|
|
2105
|
-
} = mdxArtifacts;
|
|
2106
|
-
const id = `${MDX_PREFIX}${++idx}`;
|
|
2107
|
-
const {
|
|
2108
|
-
html,
|
|
2109
|
-
code
|
|
2110
|
-
} = render(id, mdx, tagName);
|
|
2111
|
-
if (code) {
|
|
2112
|
-
idMdx[id] = code;
|
|
2113
|
-
idTagName[id] = tagName;
|
|
2114
|
-
}
|
|
2115
|
-
return html;
|
|
2116
|
-
};
|
|
2117
|
-
return getHtml;
|
|
2118
|
-
};
|
|
2119
|
-
/* harmony default export */ const utils_getSsrRenderer = ((/* unused pure expression or super */ null && (getSsrRenderer_getSsrRenderer)));
|
|
2120
|
-
;// ./node_modules/@diplodoc/mdx-extension/build/esm/utils/internal/asyncRenderTools.js
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
const getInitPropsFn = component => {
|
|
2125
|
-
const origComponent = portalWrapperComponentMap.get(component);
|
|
2126
|
-
const initFn = componentGetInitProps.get(component) ?? (origComponent && componentGetInitProps.get(origComponent));
|
|
2127
|
-
return initFn;
|
|
2128
|
-
};
|
|
2129
|
-
class AsyncComponentWrapper {
|
|
2130
|
-
args;
|
|
2131
|
-
jsxs;
|
|
2132
|
-
node;
|
|
2133
|
-
constructor(jsxs, args) {
|
|
2134
|
-
this.jsxs = jsxs;
|
|
2135
|
-
this.args = args;
|
|
2136
|
-
}
|
|
2137
|
-
build() {
|
|
2138
|
-
const jsxFn = this.jsxs ? runtime.jsxs : runtime.jsx;
|
|
2139
|
-
return jsxFn.apply(runtime, this.args);
|
|
2140
|
-
}
|
|
2141
|
-
}
|
|
2142
|
-
function asyncRenderTools_getMdxRuntimeWithHook() {
|
|
2143
|
-
const refs = [];
|
|
2144
|
-
const jsx = function (isJsxs, ...args) {
|
|
2145
|
-
const ref = new AsyncComponentWrapper(isJsxs, args);
|
|
2146
|
-
refs.push(ref);
|
|
2147
|
-
return ref;
|
|
2148
|
-
};
|
|
2149
|
-
const rt = {
|
|
2150
|
-
Fragment: runtime.Fragment,
|
|
2151
|
-
jsx: jsx.bind(null, false),
|
|
2152
|
-
jsxs: jsx.bind(null, true)
|
|
2153
|
-
};
|
|
2154
|
-
const init = async state => {
|
|
2155
|
-
for (let i = 0, len = refs.length; i < len; i++) {
|
|
2156
|
-
const ref = refs[i];
|
|
2157
|
-
const {
|
|
2158
|
-
args
|
|
2159
|
-
} = ref;
|
|
2160
|
-
replaceComponentRefs(args);
|
|
2161
|
-
const [component, props] = args;
|
|
2162
|
-
const initFn = getInitPropsFn(component);
|
|
2163
|
-
if (initFn) {
|
|
2164
|
-
const readyProps = await initFn(props, state);
|
|
2165
|
-
args[1] = {
|
|
2166
|
-
...props,
|
|
2167
|
-
...readyProps
|
|
2168
|
-
};
|
|
2169
|
-
}
|
|
2170
|
-
}
|
|
2171
|
-
};
|
|
2172
|
-
return {
|
|
2173
|
-
runtime: rt,
|
|
2174
|
-
init
|
|
2175
|
-
};
|
|
2176
|
-
}
|
|
2177
|
-
function replaceComponentRefs(thing) {
|
|
2178
|
-
if (thing instanceof AsyncComponentWrapper) {
|
|
2179
|
-
return thing.build();
|
|
2180
|
-
}
|
|
2181
|
-
if (Array.isArray(thing)) {
|
|
2182
|
-
const arr = thing;
|
|
2183
|
-
for (let i = 0, len = arr.length; i < len; i++) {
|
|
2184
|
-
// eslint-disable-next-line no-param-reassign
|
|
2185
|
-
arr[i] = replaceComponentRefs(arr[i]);
|
|
2186
|
-
}
|
|
2187
|
-
return arr;
|
|
2188
|
-
}
|
|
2189
|
-
if (typeof thing === 'object' && thing !== null) {
|
|
2190
|
-
const obj = thing;
|
|
2191
|
-
for (const key in obj) {
|
|
2192
|
-
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
2193
|
-
obj[key] = replaceComponentRefs(obj[key]);
|
|
2194
|
-
}
|
|
2195
|
-
}
|
|
2196
|
-
}
|
|
2197
|
-
return thing;
|
|
2198
|
-
}
|
|
2199
|
-
;// ./node_modules/@diplodoc/mdx-extension/build/esm/utils/getAsyncSsrRenderer.js
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
2203
|
-
|
|
2204
|
-
|
|
2205
|
-
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
const getAsyncSsrRenderer_getAsyncSsrRenderer = ({
|
|
2210
|
-
components,
|
|
2211
|
-
pureComponents,
|
|
2212
|
-
compileOptions
|
|
2213
|
-
}) => {
|
|
2214
|
-
const componentsNames = Object.keys(components || {});
|
|
2215
|
-
const combinedComponents = {
|
|
2216
|
-
...components,
|
|
2217
|
-
...pureComponents
|
|
2218
|
-
};
|
|
2219
|
-
const render = async (id, mdx, tagName) => {
|
|
2220
|
-
const vFile = await compile(mdx, {
|
|
2221
|
-
...compileOptions,
|
|
2222
|
-
outputFormat: 'function-body'
|
|
2223
|
-
});
|
|
2224
|
-
const state = {};
|
|
2225
|
-
const setState = value => {
|
|
2226
|
-
Object.assign(state, value);
|
|
2227
|
-
};
|
|
2228
|
-
const {
|
|
2229
|
-
runtime,
|
|
2230
|
-
init
|
|
2231
|
-
} = getMdxRuntimeWithHook();
|
|
2232
|
-
const {
|
|
2233
|
-
default: componentFn
|
|
2234
|
-
} = await run(vFile, runtime);
|
|
2235
|
-
const isTopLevelPortal = isPortal(combinedComponents[tagName]);
|
|
2236
|
-
const usedComponents = new Set();
|
|
2237
|
-
const combinedComponentsWatch = wrapObject(combinedComponents, name => usedComponents.add(name));
|
|
2238
|
-
const asyncWrapper = componentFn({
|
|
2239
|
-
components: combinedComponentsWatch
|
|
2240
|
-
});
|
|
2241
|
-
await init(state);
|
|
2242
|
-
const Component = () => asyncWrapper.build();
|
|
2243
|
-
let code = vFile.toString();
|
|
2244
|
-
const options = {
|
|
2245
|
-
identifierPrefix: id
|
|
2246
|
-
};
|
|
2247
|
-
let html = renderToString(React.createElement(TAG_NAME, {
|
|
2248
|
-
className: id,
|
|
2249
|
-
children: React.createElement(MdxPortalSetterCtx.Provider, {
|
|
2250
|
-
value: () => {},
|
|
2251
|
-
children: React.createElement(MdxSetStateCtx.Provider, {
|
|
2252
|
-
value: setState,
|
|
2253
|
-
children: React.createElement(MdxStateCtx.Provider, {
|
|
2254
|
-
value: state,
|
|
2255
|
-
children: React.createElement(Component)
|
|
2256
|
-
})
|
|
2257
|
-
})
|
|
2258
|
-
})
|
|
2259
|
-
}), options);
|
|
2260
|
-
if (!isEmptyObject(state)) {
|
|
2261
|
-
html = html.replace(`${TAG_NAME} `, `${TAG_NAME} data-mdx-state="${escapeAttribute(JSON.stringify(state))}" `);
|
|
2262
|
-
}
|
|
2263
|
-
const withComponents = componentsNames.some(name => usedComponents.has(name));
|
|
2264
|
-
if (!withComponents) {
|
|
2265
|
-
html = trimComponentWrapper(html);
|
|
2266
|
-
code = undefined;
|
|
2267
|
-
}
|
|
2268
|
-
if (isTopLevelPortal) {
|
|
2269
|
-
html = trimPortalTag(html);
|
|
2270
|
-
}
|
|
2271
|
-
return {
|
|
2272
|
-
html,
|
|
2273
|
-
code
|
|
2274
|
-
};
|
|
2275
|
-
};
|
|
2276
|
-
const idFragment = new Map();
|
|
2277
|
-
const getHtmlAsync = async (inputOrig, mdxArtifacts) => {
|
|
2278
|
-
let input = inputOrig;
|
|
2279
|
-
const {
|
|
2280
|
-
idMdx,
|
|
2281
|
-
idTagName
|
|
2282
|
-
} = mdxArtifacts ?? getInitMdxArtifacts();
|
|
2283
|
-
const items = [];
|
|
2284
|
-
const promises = [];
|
|
2285
|
-
idFragment.forEach(({
|
|
2286
|
-
replacer,
|
|
2287
|
-
mdx,
|
|
2288
|
-
tagName
|
|
2289
|
-
}, id) => {
|
|
2290
|
-
promises.push(render(id, mdx, tagName));
|
|
2291
|
-
items.push({
|
|
2292
|
-
id,
|
|
2293
|
-
replacer,
|
|
2294
|
-
tagName
|
|
2295
|
-
});
|
|
2296
|
-
});
|
|
2297
|
-
const promiseResults = await Promise.all(promises);
|
|
2298
|
-
for (let item, i = 0; item = items[i]; i++) {
|
|
2299
|
-
const {
|
|
2300
|
-
id,
|
|
2301
|
-
replacer,
|
|
2302
|
-
tagName
|
|
2303
|
-
} = item;
|
|
2304
|
-
const {
|
|
2305
|
-
html,
|
|
2306
|
-
code
|
|
2307
|
-
} = promiseResults[i];
|
|
2308
|
-
input = input.replace(replacer, () => html);
|
|
2309
|
-
if (code) {
|
|
2310
|
-
idMdx[id] = code;
|
|
2311
|
-
idTagName[id] = tagName;
|
|
2312
|
-
}
|
|
2313
|
-
}
|
|
2314
|
-
return input;
|
|
2315
|
-
};
|
|
2316
|
-
let idx = 0;
|
|
2317
|
-
const getHtml = ({
|
|
2318
|
-
mdx,
|
|
2319
|
-
tagName
|
|
2320
|
-
}) => {
|
|
2321
|
-
const id = `${MDX_PREFIX}${++idx}`;
|
|
2322
|
-
const replacer = `<${TAG_NAME} class="${id}">${generateUniqueId()}</${TAG_NAME}>`;
|
|
2323
|
-
idFragment.set(id, {
|
|
2324
|
-
replacer,
|
|
2325
|
-
mdx,
|
|
2326
|
-
tagName
|
|
2327
|
-
});
|
|
2328
|
-
return replacer;
|
|
2329
|
-
};
|
|
2330
|
-
return {
|
|
2331
|
-
render: getHtml,
|
|
2332
|
-
renderAsync: getHtmlAsync
|
|
2333
|
-
};
|
|
2334
|
-
};
|
|
2335
|
-
/* harmony default export */ const utils_getAsyncSsrRenderer = ((/* unused pure expression or super */ null && (getAsyncSsrRenderer_getAsyncSsrRenderer)));
|
|
2336
|
-
;// ./node_modules/@diplodoc/mdx-extension/build/esm/utils/withInitialProps.js
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
const withInitialProps = (component, getInitProps) => {
|
|
2340
|
-
componentGetInitProps.set(component, getInitProps);
|
|
2341
|
-
return component;
|
|
2342
|
-
};
|
|
2343
|
-
/* harmony default export */ const utils_withInitialProps = ((/* unused pure expression or super */ null && (withInitialProps)));
|
|
2344
|
-
;// ./node_modules/@diplodoc/mdx-extension/build/esm/hooks/internal/useLocalLayoutEffect.js
|
|
2345
|
-
|
|
2346
|
-
/**
|
|
2347
|
-
* Just mute errors on server with useLayoutEffect
|
|
2348
|
-
*/
|
|
2349
|
-
const useLocalLayoutEffect_useLocalLayoutEffect = typeof window !== 'undefined' ? react.useLayoutEffect : react.useEffect;
|
|
2350
|
-
;// ./node_modules/@diplodoc/mdx-extension/build/esm/utils/withPortal.js
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
|
|
2355
|
-
|
|
2356
|
-
|
|
2357
|
-
const withPortal = (component, fallback) => {
|
|
2358
|
-
const wrappedComponent = portalSwitch(component, fallback);
|
|
2359
|
-
portalWrapperComponentMap.set(wrappedComponent, component);
|
|
2360
|
-
return wrappedComponent;
|
|
2361
|
-
};
|
|
2362
|
-
/* harmony default export */ const utils_withPortal = ((/* unused pure expression or super */ null && (withPortal)));
|
|
2363
|
-
function portalSwitch(component, fallback) {
|
|
2364
|
-
return props => {
|
|
2365
|
-
const portalSetter = useContext(MdxPortalSetterCtx);
|
|
2366
|
-
if (!portalSetter) {
|
|
2367
|
-
// inside portal
|
|
2368
|
-
return React.createElement(component, props);
|
|
2369
|
-
}
|
|
2370
|
-
return React.createElement(portalWrapper(component, fallback), props);
|
|
2371
|
-
};
|
|
2372
|
-
}
|
|
2373
|
-
function portalWrapper(component, fallback) {
|
|
2374
|
-
return props => {
|
|
2375
|
-
const portalSetter = useContext(MdxPortalSetterCtx);
|
|
2376
|
-
const ref = useRef();
|
|
2377
|
-
const id = useMemo(() => generateUniqueId(), []);
|
|
2378
|
-
const [mounted, setMounted] = useState(false);
|
|
2379
|
-
useEffect(() => {
|
|
2380
|
-
return () => {
|
|
2381
|
-
if (!portalSetter) return;
|
|
2382
|
-
portalSetter({
|
|
2383
|
-
id,
|
|
2384
|
-
node: null,
|
|
2385
|
-
reactNode: null
|
|
2386
|
-
});
|
|
2387
|
-
};
|
|
2388
|
-
}, [id]);
|
|
2389
|
-
useLocalLayoutEffect(() => {
|
|
2390
|
-
const node = ref.current;
|
|
2391
|
-
if (!node || !portalSetter) return;
|
|
2392
|
-
setMounted(true);
|
|
2393
|
-
portalSetter({
|
|
2394
|
-
id,
|
|
2395
|
-
node,
|
|
2396
|
-
reactNode: React.createElement(component, props)
|
|
2397
|
-
});
|
|
2398
|
-
}, [id, component, props]);
|
|
2399
|
-
return React.createElement(TAG_NAME, {
|
|
2400
|
-
ref,
|
|
2401
|
-
children: mounted || !fallback ? null : React.createElement(fallback, props)
|
|
2402
|
-
});
|
|
2403
|
-
};
|
|
2404
|
-
}
|
|
2405
|
-
;// ./node_modules/@diplodoc/mdx-extension/build/esm/utils/index.js
|
|
2406
|
-
|
|
2407
|
-
|
|
2408
|
-
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
;// ./node_modules/@diplodoc/mdx-extension/build/esm/mdx-collect-plugin.js
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
const getMdxCollectPlugin = options => {
|
|
2418
|
-
const {
|
|
2419
|
-
tagNames,
|
|
2420
|
-
...rendererOptions
|
|
2421
|
-
} = options;
|
|
2422
|
-
const render = getSsrRenderer(rendererOptions);
|
|
2423
|
-
const plugin = origContent => {
|
|
2424
|
-
const mdxArtifacts = getInitMdxArtifacts();
|
|
2425
|
-
const content = replaceBlocks({
|
|
2426
|
-
content: origContent,
|
|
2427
|
-
tagNames,
|
|
2428
|
-
replacer: ({
|
|
2429
|
-
content: contentLocal,
|
|
2430
|
-
tagName
|
|
2431
|
-
}) => render({
|
|
2432
|
-
mdx: contentLocal,
|
|
2433
|
-
mdxArtifacts,
|
|
2434
|
-
tagName
|
|
2435
|
-
})
|
|
2436
|
-
});
|
|
2437
|
-
return content;
|
|
2438
|
-
};
|
|
2439
|
-
return plugin;
|
|
2440
|
-
};
|
|
2441
|
-
const getAsyncMdxCollectPlugin = options => {
|
|
2442
|
-
const {
|
|
2443
|
-
tagNames,
|
|
2444
|
-
...rendererOptions
|
|
2445
|
-
} = options;
|
|
2446
|
-
const {
|
|
2447
|
-
render,
|
|
2448
|
-
renderAsync
|
|
2449
|
-
} = getAsyncSsrRenderer(rendererOptions);
|
|
2450
|
-
const plugin = async origContent => {
|
|
2451
|
-
const mdxArtifacts = getInitMdxArtifacts();
|
|
2452
|
-
let content = replaceBlocks({
|
|
2453
|
-
content: origContent,
|
|
2454
|
-
tagNames,
|
|
2455
|
-
replacer: ({
|
|
2456
|
-
content: contentLocal,
|
|
2457
|
-
tagName
|
|
2458
|
-
}) => render({
|
|
2459
|
-
mdx: contentLocal,
|
|
2460
|
-
mdxArtifacts,
|
|
2461
|
-
tagName
|
|
2462
|
-
})
|
|
2463
|
-
});
|
|
2464
|
-
content = await renderAsync(content, mdxArtifacts);
|
|
2465
|
-
return content;
|
|
2466
|
-
};
|
|
2467
|
-
return plugin;
|
|
2468
|
-
};
|
|
2469
|
-
// EXTERNAL MODULE: ./node_modules/react-dom/index.js
|
|
2470
|
-
var react_dom = __webpack_require__(40961);
|
|
2471
|
-
;// ./node_modules/@diplodoc/mdx-extension/build/esm/hooks/internal/usePortals.js
|
|
2472
|
-
|
|
2473
|
-
|
|
2474
|
-
const usePortals_usePortals = () => {
|
|
2475
|
-
const refIdPortalMap = (0,react.useRef)(new Map());
|
|
2476
|
-
const [portalNodes, setPortalNodes] = (0,react.useState)([]);
|
|
2477
|
-
const setPortal = (0,react.useCallback)(({
|
|
2478
|
-
id,
|
|
2479
|
-
node,
|
|
2480
|
-
reactNode
|
|
2481
|
-
}) => {
|
|
2482
|
-
const idPortalMap = refIdPortalMap.current;
|
|
2483
|
-
if (node) {
|
|
2484
|
-
idPortalMap.set(id, (0,react_dom.createPortal)(reactNode, node, id));
|
|
2485
|
-
} else {
|
|
2486
|
-
idPortalMap.delete(id);
|
|
2487
|
-
}
|
|
2488
|
-
setPortalNodes(Array.from(idPortalMap.values()));
|
|
2489
|
-
}, []);
|
|
2490
|
-
const fragment = (0,react.useMemo)(() => react.createElement(react.Fragment, {
|
|
2491
|
-
children: portalNodes
|
|
2492
|
-
}), [portalNodes]);
|
|
2493
|
-
return {
|
|
2494
|
-
portalsNode: fragment,
|
|
2495
|
-
setPortal
|
|
2496
|
-
};
|
|
2497
|
-
};
|
|
2498
|
-
/* harmony default export */ const internal_usePortals = (usePortals_usePortals);
|
|
2499
|
-
;// ./node_modules/@diplodoc/mdx-extension/build/esm/hooks/useMdx.js
|
|
2500
|
-
|
|
2501
|
-
|
|
2502
|
-
|
|
2503
|
-
const useMdx = ({
|
|
2504
|
-
refCtr,
|
|
2505
|
-
html,
|
|
2506
|
-
components,
|
|
2507
|
-
pureComponents,
|
|
2508
|
-
mdxArtifacts
|
|
2509
|
-
}) => {
|
|
2510
|
-
const refUmount = useRef(() => {});
|
|
2511
|
-
const {
|
|
2512
|
-
portalsNode,
|
|
2513
|
-
setPortal
|
|
2514
|
-
} = usePortals();
|
|
2515
|
-
const combinedComponents = useMemo(() => ({
|
|
2516
|
-
...components,
|
|
2517
|
-
...pureComponents
|
|
2518
|
-
}), [components, pureComponents]);
|
|
2519
|
-
// building mdx scripts into components
|
|
2520
|
-
const idMdxComponent = useMemo(() => idMdxToComponents(mdxArtifacts?.idMdx), [mdxArtifacts?.idMdx]);
|
|
2521
|
-
const idTagName = useMemo(() => mdxArtifacts?.idTagName ?? {}, [mdxArtifacts]);
|
|
2522
|
-
// render new html
|
|
2523
|
-
useLayoutEffect(() => {
|
|
2524
|
-
const ctr = refCtr.current;
|
|
2525
|
-
if (!ctr) {
|
|
2526
|
-
throw new Error('ctr is null');
|
|
2527
|
-
}
|
|
2528
|
-
const dom = new DOMParser().parseFromString(`<html lang="en"><body>${html}</body></html>`, 'text/html');
|
|
2529
|
-
const bodyNode = dom.querySelector('body');
|
|
2530
|
-
if (!bodyNode) {
|
|
2531
|
-
throw new Error('bodyNode is null');
|
|
2532
|
-
}
|
|
2533
|
-
const fragment = document.createDocumentFragment();
|
|
2534
|
-
fragment.append(...Array.from(bodyNode.childNodes.values()));
|
|
2535
|
-
ctr.textContent = null;
|
|
2536
|
-
ctr.appendChild(fragment);
|
|
2537
|
-
// umount mdx components when html or refCtr changes
|
|
2538
|
-
return () => refUmount.current();
|
|
2539
|
-
}, [refCtr, html]);
|
|
2540
|
-
// render mdx
|
|
2541
|
-
useLayoutEffect(() => {
|
|
2542
|
-
const ctr = refCtr.current;
|
|
2543
|
-
if (!ctr) {
|
|
2544
|
-
throw new Error('ctr is null');
|
|
2545
|
-
}
|
|
2546
|
-
refUmount.current = renderMdxComponents({
|
|
2547
|
-
idMdxComponent,
|
|
2548
|
-
idTagName,
|
|
2549
|
-
ctr,
|
|
2550
|
-
components: combinedComponents,
|
|
2551
|
-
setPortal
|
|
2552
|
-
});
|
|
2553
|
-
}, [refCtr, html, combinedComponents, idMdxComponent, idTagName, setPortal]);
|
|
2554
|
-
return portalsNode;
|
|
2555
|
-
};
|
|
2556
|
-
/* harmony default export */ const hooks_useMdx = ((/* unused pure expression or super */ null && (useMdx)));
|
|
2557
|
-
;// ./node_modules/@diplodoc/mdx-extension/build/esm/hooks/useMdxSsr.js
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
|
|
2561
|
-
const useMdxSsr = ({
|
|
2562
|
-
html,
|
|
2563
|
-
refCtr,
|
|
2564
|
-
mdxArtifacts,
|
|
2565
|
-
components,
|
|
2566
|
-
pureComponents
|
|
2567
|
-
}) => {
|
|
2568
|
-
const refUmount = (0,react.useRef)(() => {});
|
|
2569
|
-
const {
|
|
2570
|
-
portalsNode,
|
|
2571
|
-
setPortal
|
|
2572
|
-
} = internal_usePortals();
|
|
2573
|
-
const combinedComponents = (0,react.useMemo)(() => ({
|
|
2574
|
-
...components,
|
|
2575
|
-
...pureComponents
|
|
2576
|
-
}), [components, pureComponents]);
|
|
2577
|
-
// building mdx scripts into components
|
|
2578
|
-
const idMdxComponent = (0,react.useMemo)(() => common_idMdxToComponents(mdxArtifacts?.idMdx), [mdxArtifacts?.idMdx]);
|
|
2579
|
-
const idTagName = (0,react.useMemo)(() => mdxArtifacts?.idTagName ?? {}, [mdxArtifacts]);
|
|
2580
|
-
// umount mdx components when html or refCtr changes
|
|
2581
|
-
(0,react.useLayoutEffect)(() => {
|
|
2582
|
-
return () => refUmount.current();
|
|
2583
|
-
}, [html, refCtr]);
|
|
2584
|
-
// render mdx
|
|
2585
|
-
(0,react.useLayoutEffect)(() => {
|
|
2586
|
-
const ctr = refCtr.current;
|
|
2587
|
-
if (!ctr) {
|
|
2588
|
-
throw new Error('ctr is null');
|
|
2589
|
-
}
|
|
2590
|
-
refUmount.current = common_renderMdxComponents({
|
|
2591
|
-
idMdxComponent,
|
|
2592
|
-
idTagName,
|
|
2593
|
-
ctr,
|
|
2594
|
-
components: combinedComponents,
|
|
2595
|
-
isSSR: true,
|
|
2596
|
-
setPortal
|
|
2597
|
-
});
|
|
2598
|
-
}, [html, refCtr, combinedComponents, idMdxComponent, idTagName, setPortal]);
|
|
2599
|
-
return portalsNode;
|
|
2600
|
-
};
|
|
2601
|
-
/* harmony default export */ const hooks_useMdxSsr = (useMdxSsr);
|
|
2602
|
-
;// ./node_modules/@diplodoc/mdx-extension/build/esm/hooks/index.js
|
|
2603
|
-
|
|
2604
|
-
|
|
2605
|
-
;// ./node_modules/@diplodoc/mdx-extension/build/esm/index.js
|
|
2606
|
-
|
|
2607
|
-
|
|
2608
|
-
|
|
2609
|
-
|
|
2610
|
-
|
|
2611
|
-
|
|
2612
|
-
|
|
2613
|
-
|
|
2614
1697
|
/***/ }),
|
|
2615
1698
|
|
|
2616
1699
|
/***/ 2141:
|
|
@@ -177757,6 +176840,322 @@ MarkdownIt.prototype.renderInline = function (src, env) {
|
|
|
177757
176840
|
module.exports = MarkdownIt;
|
|
177758
176841
|
|
|
177759
176842
|
|
|
176843
|
+
/***/ }),
|
|
176844
|
+
|
|
176845
|
+
/***/ 91353:
|
|
176846
|
+
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
176847
|
+
|
|
176848
|
+
"use strict";
|
|
176849
|
+
|
|
176850
|
+
// EXPORTS
|
|
176851
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
176852
|
+
A: () => (/* binding */ hooks_useMdxSsr)
|
|
176853
|
+
});
|
|
176854
|
+
|
|
176855
|
+
// EXTERNAL MODULE: ./node_modules/react/index.js
|
|
176856
|
+
var react = __webpack_require__(96540);
|
|
176857
|
+
// EXTERNAL MODULE: ./node_modules/react-dom/client.js
|
|
176858
|
+
var client = __webpack_require__(5338);
|
|
176859
|
+
// EXTERNAL MODULE: ./node_modules/react/jsx-runtime.js
|
|
176860
|
+
var jsx_runtime = __webpack_require__(74848);
|
|
176861
|
+
var jsx_runtime_namespaceObject = /*#__PURE__*/__webpack_require__.t(jsx_runtime, 2);
|
|
176862
|
+
;// ./node_modules/@diplodoc/mdx-extension/build/esm/context/MdxStateCtx.js
|
|
176863
|
+
|
|
176864
|
+
const MdxStateCtx = (0,react.createContext)(null);
|
|
176865
|
+
|
|
176866
|
+
;// ./node_modules/@diplodoc/mdx-extension/build/esm/context/internal/MdxPortalSetterCtx.js
|
|
176867
|
+
|
|
176868
|
+
const MdxPortalSetterCtx = (0,react.createContext)(null);
|
|
176869
|
+
|
|
176870
|
+
;// ./node_modules/@diplodoc/mdx-extension/build/esm/utils/internal/maps.js
|
|
176871
|
+
|
|
176872
|
+
const portalWrapperComponentMap = new WeakMap();
|
|
176873
|
+
const componentGetInitProps = new WeakMap();
|
|
176874
|
+
|
|
176875
|
+
;// ./node_modules/@diplodoc/mdx-extension/build/esm/components/internal/CtxProxy.js
|
|
176876
|
+
|
|
176877
|
+
const CtxProxy = (0,react.forwardRef)(({ ctx, children, initValue }, ref) => {
|
|
176878
|
+
const [value, setValue] = react.useState(() => initValue);
|
|
176879
|
+
(0,react.useImperativeHandle)(ref, () => {
|
|
176880
|
+
return {
|
|
176881
|
+
setValue: (v) => setValue(() => v),
|
|
176882
|
+
};
|
|
176883
|
+
}, []);
|
|
176884
|
+
return react.createElement(ctx.Provider, {
|
|
176885
|
+
value,
|
|
176886
|
+
children,
|
|
176887
|
+
});
|
|
176888
|
+
});
|
|
176889
|
+
/* harmony default export */ const internal_CtxProxy = (CtxProxy);
|
|
176890
|
+
|
|
176891
|
+
;// ./node_modules/@diplodoc/mdx-extension/build/esm/utils/internal/common.js
|
|
176892
|
+
|
|
176893
|
+
|
|
176894
|
+
|
|
176895
|
+
|
|
176896
|
+
|
|
176897
|
+
|
|
176898
|
+
|
|
176899
|
+
const nodeRootMap = new WeakMap();
|
|
176900
|
+
const nodeWillUmount = new WeakMap();
|
|
176901
|
+
const nodePortalCleanup = new WeakMap();
|
|
176902
|
+
const renderMdxComponents = ({ idMdxComponent, isSSR, ctr, components, setPortal, idTagName, getCtxEmitterRef, contextList = [], }) => {
|
|
176903
|
+
const unmountFns = Object.entries(idMdxComponent).map(([id, Content]) => {
|
|
176904
|
+
let node = ctr.querySelector(`.${id}`);
|
|
176905
|
+
if (!node) {
|
|
176906
|
+
throw new Error('node is null');
|
|
176907
|
+
}
|
|
176908
|
+
if (nodeWillUmount.get(node) && node.parentNode) {
|
|
176909
|
+
const newNode = node.cloneNode(true);
|
|
176910
|
+
node.parentNode.replaceChild(newNode, node);
|
|
176911
|
+
node = newNode;
|
|
176912
|
+
}
|
|
176913
|
+
const mdxState = node?.dataset?.mdxState ? JSON.parse(node.dataset.mdxState) : null;
|
|
176914
|
+
const contentNode = react.createElement(MdxStateCtx.Provider, {
|
|
176915
|
+
value: mdxState,
|
|
176916
|
+
children: react.createElement(Content, {
|
|
176917
|
+
components,
|
|
176918
|
+
}),
|
|
176919
|
+
});
|
|
176920
|
+
const isTopLevelPortal = components && isPortal(components[idTagName[id]]);
|
|
176921
|
+
let root;
|
|
176922
|
+
if (isTopLevelPortal) {
|
|
176923
|
+
if (!nodePortalCleanup.has(node)) {
|
|
176924
|
+
nodePortalCleanup.set(node, true);
|
|
176925
|
+
node.textContent = null;
|
|
176926
|
+
}
|
|
176927
|
+
setPortal({
|
|
176928
|
+
id,
|
|
176929
|
+
node,
|
|
176930
|
+
reactNode: contentNode,
|
|
176931
|
+
});
|
|
176932
|
+
}
|
|
176933
|
+
else {
|
|
176934
|
+
const reactNode = react.createElement(MdxPortalSetterCtx.Provider, {
|
|
176935
|
+
value: setPortal,
|
|
176936
|
+
children: contextList.reduce((acc, ctxItem) => {
|
|
176937
|
+
const { ctx } = getCtxFromCtxItem(ctxItem);
|
|
176938
|
+
const { ref, value } = getCtxEmitterRef(Content, ctx);
|
|
176939
|
+
return react.createElement(internal_CtxProxy, {
|
|
176940
|
+
ref,
|
|
176941
|
+
ctx,
|
|
176942
|
+
children: acc,
|
|
176943
|
+
initValue: value,
|
|
176944
|
+
});
|
|
176945
|
+
}, contentNode),
|
|
176946
|
+
});
|
|
176947
|
+
root = nodeRootMap.get(node);
|
|
176948
|
+
if (root) {
|
|
176949
|
+
root.render(reactNode);
|
|
176950
|
+
}
|
|
176951
|
+
else {
|
|
176952
|
+
const options = {
|
|
176953
|
+
identifierPrefix: id,
|
|
176954
|
+
};
|
|
176955
|
+
if (isSSR) {
|
|
176956
|
+
root = (0,client/* hydrateRoot */.c)(node, reactNode, options);
|
|
176957
|
+
}
|
|
176958
|
+
else {
|
|
176959
|
+
root = (0,client/* createRoot */.H)(node, options);
|
|
176960
|
+
root.render(reactNode);
|
|
176961
|
+
}
|
|
176962
|
+
nodeRootMap.set(node, root);
|
|
176963
|
+
}
|
|
176964
|
+
}
|
|
176965
|
+
return () => {
|
|
176966
|
+
nodeWillUmount.set(node, true);
|
|
176967
|
+
getCtxEmitterRef(Content, null);
|
|
176968
|
+
if (isTopLevelPortal) {
|
|
176969
|
+
setPortal({
|
|
176970
|
+
id,
|
|
176971
|
+
node: null,
|
|
176972
|
+
reactNode: null,
|
|
176973
|
+
});
|
|
176974
|
+
}
|
|
176975
|
+
else if (root) {
|
|
176976
|
+
setTimeout(() => root.unmount(), 0);
|
|
176977
|
+
}
|
|
176978
|
+
};
|
|
176979
|
+
});
|
|
176980
|
+
return () => unmountFns.forEach((cb) => cb());
|
|
176981
|
+
};
|
|
176982
|
+
const idMdxToComponents = (idMdx) => {
|
|
176983
|
+
return Object.entries(idMdx ?? {}).reduce((acc, [id, fnStr]) => {
|
|
176984
|
+
// eslint-disable-next-line no-param-reassign
|
|
176985
|
+
acc[id] = runSync(fnStr, jsx_runtime_namespaceObject).default;
|
|
176986
|
+
return acc;
|
|
176987
|
+
}, {});
|
|
176988
|
+
};
|
|
176989
|
+
function generateUniqueId() {
|
|
176990
|
+
return Date.now().toString(36) + Math.random().toString(36).substring(2);
|
|
176991
|
+
}
|
|
176992
|
+
function isPortal(component) {
|
|
176993
|
+
if (!component || typeof component !== 'object')
|
|
176994
|
+
return false;
|
|
176995
|
+
return portalWrapperComponentMap.has(component);
|
|
176996
|
+
}
|
|
176997
|
+
function getInitMdxArtifacts() {
|
|
176998
|
+
return { idMdx: {}, idTagName: {} };
|
|
176999
|
+
}
|
|
177000
|
+
// runSync from @mdx-js/mdx
|
|
177001
|
+
function runSync(code, options) {
|
|
177002
|
+
// eslint-disable-next-line no-new-func
|
|
177003
|
+
return new Function(String(code))(options);
|
|
177004
|
+
}
|
|
177005
|
+
function getCtxFromCtxItem(ctxItem) {
|
|
177006
|
+
let ctx;
|
|
177007
|
+
let initValue;
|
|
177008
|
+
if ('ctx' in ctxItem) {
|
|
177009
|
+
ctx = ctxItem.ctx;
|
|
177010
|
+
initValue = ctxItem.initValue;
|
|
177011
|
+
}
|
|
177012
|
+
else {
|
|
177013
|
+
ctx = ctxItem;
|
|
177014
|
+
}
|
|
177015
|
+
return {
|
|
177016
|
+
ctx: ctx,
|
|
177017
|
+
initValue,
|
|
177018
|
+
};
|
|
177019
|
+
}
|
|
177020
|
+
|
|
177021
|
+
// EXTERNAL MODULE: ./node_modules/react-dom/index.js
|
|
177022
|
+
var react_dom = __webpack_require__(40961);
|
|
177023
|
+
;// ./node_modules/@diplodoc/mdx-extension/build/esm/hooks/internal/usePortals.js
|
|
177024
|
+
|
|
177025
|
+
|
|
177026
|
+
const usePortals = () => {
|
|
177027
|
+
const refIdPortalMap = (0,react.useRef)(new Map());
|
|
177028
|
+
const [portalNodes, setPortalNodes] = (0,react.useState)([]);
|
|
177029
|
+
const setPortal = (0,react.useCallback)(({ id, node, reactNode }) => {
|
|
177030
|
+
const idPortalMap = refIdPortalMap.current;
|
|
177031
|
+
if (node) {
|
|
177032
|
+
idPortalMap.set(id, (0,react_dom.createPortal)(reactNode, node, id));
|
|
177033
|
+
}
|
|
177034
|
+
else {
|
|
177035
|
+
idPortalMap.delete(id);
|
|
177036
|
+
}
|
|
177037
|
+
setPortalNodes(Array.from(idPortalMap.values()));
|
|
177038
|
+
}, []);
|
|
177039
|
+
const fragment = (0,react.useMemo)(() => react.createElement(react.Fragment, { children: portalNodes }), [portalNodes]);
|
|
177040
|
+
return {
|
|
177041
|
+
portalsNode: fragment,
|
|
177042
|
+
setPortal,
|
|
177043
|
+
};
|
|
177044
|
+
};
|
|
177045
|
+
/* harmony default export */ const internal_usePortals = (usePortals);
|
|
177046
|
+
|
|
177047
|
+
;// ./node_modules/@diplodoc/mdx-extension/build/esm/components/internal/CtxListener.js
|
|
177048
|
+
|
|
177049
|
+
const CtxListener = ({ ctx, setValue }) => {
|
|
177050
|
+
const value = (0,react.useContext)(ctx);
|
|
177051
|
+
(0,react.useMemo)(() => setValue(value), [value, setValue]);
|
|
177052
|
+
return null;
|
|
177053
|
+
};
|
|
177054
|
+
/* harmony default export */ const internal_CtxListener = (CtxListener);
|
|
177055
|
+
|
|
177056
|
+
;// ./node_modules/@diplodoc/mdx-extension/build/esm/hooks/internal/useContextProxy.js
|
|
177057
|
+
|
|
177058
|
+
|
|
177059
|
+
|
|
177060
|
+
const useContextProxy = (contextList) => {
|
|
177061
|
+
const refCtxValue = (0,react.useRef)(new Map());
|
|
177062
|
+
const refContentCtxListMap = (0,react.useRef)(new Map());
|
|
177063
|
+
const handleChangeValue = (0,react.useCallback)((ctx, value) => {
|
|
177064
|
+
const ctxValue = refCtxValue.current;
|
|
177065
|
+
const contentCtxListMap = refContentCtxListMap.current;
|
|
177066
|
+
ctxValue.set(ctx, value);
|
|
177067
|
+
contentCtxListMap.forEach((list) => {
|
|
177068
|
+
list.forEach(({ ctx: ctxLocal, ref }) => {
|
|
177069
|
+
if (ref.current && ctxLocal === ctx) {
|
|
177070
|
+
ref.current.setValue(value);
|
|
177071
|
+
}
|
|
177072
|
+
});
|
|
177073
|
+
});
|
|
177074
|
+
}, []);
|
|
177075
|
+
const listenerNodes = (0,react.useMemo)(() => {
|
|
177076
|
+
if (!contextList)
|
|
177077
|
+
return [];
|
|
177078
|
+
return contextList.map((ctxItem, idx) => {
|
|
177079
|
+
const { ctx } = getCtxFromCtxItem(ctxItem);
|
|
177080
|
+
return react.createElement(internal_CtxListener, {
|
|
177081
|
+
key: `ctx-${ctx.displayName ?? idx}`,
|
|
177082
|
+
ctx,
|
|
177083
|
+
setValue: (v) => handleChangeValue(ctx, v),
|
|
177084
|
+
});
|
|
177085
|
+
});
|
|
177086
|
+
}, [contextList, handleChangeValue]);
|
|
177087
|
+
const getCtxEmitterRef = (0,react.useCallback)((Content, ctx) => {
|
|
177088
|
+
const contentCtxListMap = refContentCtxListMap.current;
|
|
177089
|
+
if (!ctx) {
|
|
177090
|
+
contentCtxListMap.delete(Content);
|
|
177091
|
+
return { ref: null, value: null };
|
|
177092
|
+
}
|
|
177093
|
+
const ref = { current: null };
|
|
177094
|
+
const ctxValueMap = refCtxValue.current;
|
|
177095
|
+
let ctxListLocal = contentCtxListMap.get(Content);
|
|
177096
|
+
if (!ctxListLocal) {
|
|
177097
|
+
ctxListLocal = [];
|
|
177098
|
+
contentCtxListMap.set(Content, ctxListLocal);
|
|
177099
|
+
}
|
|
177100
|
+
ctxListLocal.push({ ctx, ref });
|
|
177101
|
+
const value = ctxValueMap.get(ctx);
|
|
177102
|
+
return { ref, value };
|
|
177103
|
+
}, []);
|
|
177104
|
+
return {
|
|
177105
|
+
getCtxEmitterRef,
|
|
177106
|
+
listenerNode: react.createElement(react.Fragment, { children: listenerNodes }),
|
|
177107
|
+
};
|
|
177108
|
+
};
|
|
177109
|
+
/* harmony default export */ const internal_useContextProxy = (useContextProxy);
|
|
177110
|
+
|
|
177111
|
+
;// ./node_modules/@diplodoc/mdx-extension/build/esm/hooks/useMdxSsr.js
|
|
177112
|
+
|
|
177113
|
+
|
|
177114
|
+
|
|
177115
|
+
|
|
177116
|
+
const useMdxSsr = ({ html, refCtr, mdxArtifacts, components, pureComponents, contextList, }) => {
|
|
177117
|
+
const refUmount = (0,react.useRef)(() => { });
|
|
177118
|
+
const { portalsNode, setPortal } = internal_usePortals();
|
|
177119
|
+
const combinedComponents = (0,react.useMemo)(() => ({ ...components, ...pureComponents }), [components, pureComponents]);
|
|
177120
|
+
// building mdx scripts into components
|
|
177121
|
+
const idMdxComponent = (0,react.useMemo)(() => idMdxToComponents(mdxArtifacts?.idMdx), [mdxArtifacts?.idMdx]);
|
|
177122
|
+
const idTagName = (0,react.useMemo)(() => mdxArtifacts?.idTagName ?? {}, [mdxArtifacts]);
|
|
177123
|
+
const { getCtxEmitterRef, listenerNode } = internal_useContextProxy(contextList);
|
|
177124
|
+
// umount mdx components when html or refCtr changes
|
|
177125
|
+
(0,react.useLayoutEffect)(() => {
|
|
177126
|
+
return () => refUmount.current();
|
|
177127
|
+
}, [html, refCtr]);
|
|
177128
|
+
// render mdx
|
|
177129
|
+
(0,react.useLayoutEffect)(() => {
|
|
177130
|
+
const ctr = refCtr.current;
|
|
177131
|
+
if (!ctr) {
|
|
177132
|
+
throw new Error('ctr is null');
|
|
177133
|
+
}
|
|
177134
|
+
refUmount.current = renderMdxComponents({
|
|
177135
|
+
idMdxComponent,
|
|
177136
|
+
idTagName,
|
|
177137
|
+
ctr,
|
|
177138
|
+
components: combinedComponents,
|
|
177139
|
+
setPortal,
|
|
177140
|
+
getCtxEmitterRef,
|
|
177141
|
+
contextList,
|
|
177142
|
+
isSSR: true,
|
|
177143
|
+
});
|
|
177144
|
+
}, [
|
|
177145
|
+
html,
|
|
177146
|
+
refCtr,
|
|
177147
|
+
combinedComponents,
|
|
177148
|
+
idMdxComponent,
|
|
177149
|
+
idTagName,
|
|
177150
|
+
setPortal,
|
|
177151
|
+
getCtxEmitterRef,
|
|
177152
|
+
contextList,
|
|
177153
|
+
]);
|
|
177154
|
+
return react.createElement(react.Fragment, null, portalsNode, listenerNode);
|
|
177155
|
+
};
|
|
177156
|
+
/* harmony default export */ const hooks_useMdxSsr = (useMdxSsr);
|
|
177157
|
+
|
|
177158
|
+
|
|
177760
177159
|
/***/ }),
|
|
177761
177160
|
|
|
177762
177161
|
/***/ 91541:
|