From 08898d3c5f898be8b5be16ae2eceb76b7b7a6605 Mon Sep 17 00:00:00 2001 From: Bohdan Zavhorodskyi Date: Fri, 25 Aug 2023 16:46:11 +0300 Subject: [PATCH 01/17] feat: cleanings --- .gitignore | 1 + integrations/astro-tabs.ts | 121 ------------------ integrations/utils/makeComponentNode.ts | 33 ----- .../AstroTabs/AstroTabContent.astro | 5 - src/components/AstroTabs/AstroTabName.astro | 5 - src/components/AstroTabs/AstroTabs.astro | 33 ----- 6 files changed, 1 insertion(+), 197 deletions(-) delete mode 100644 integrations/astro-tabs.ts delete mode 100644 integrations/utils/makeComponentNode.ts delete mode 100644 src/components/AstroTabs/AstroTabContent.astro delete mode 100644 src/components/AstroTabs/AstroTabName.astro delete mode 100644 src/components/AstroTabs/AstroTabs.astro diff --git a/.gitignore b/.gitignore index 6240da8b1..223de634a 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ dist/ # dependencies node_modules/ +.npmrc # logs npm-debug.log* diff --git a/integrations/astro-tabs.ts b/integrations/astro-tabs.ts deleted file mode 100644 index 4c1e2c177..000000000 --- a/integrations/astro-tabs.ts +++ /dev/null @@ -1,121 +0,0 @@ -import type { AstroIntegration } from "astro"; -import type * as mdast from "mdast"; -import remarkDirective from "remark-directive"; -import type * as unified from "unified"; -import { remove } from "unist-util-remove"; -import { visit } from "unist-util-visit"; -import { visitChildren } from "unist-util-visit-children"; -import { makeComponentNode } from "./utils/makeComponentNode"; - -const TabsTagname = "AutoImportedAstroTabs"; -const TabNameTagname = "AutoImportedAstroTabName"; -const TabContentTagname = "AutoImportedAstroTabContent"; -export const tabsAutoImport: Record = { - "@components/AstroTabs/AstroTabs.astro": [["default", TabsTagname]], -}; -export const tabNameAutoImport: Record = { - "@components/AstroTabs/AstroTabName.astro": [["default", TabNameTagname]], -}; -export const tabContentAutoImport: Record = { - "@components/AstroTabs/AstroTabContent.astro": [ - ["default", TabContentTagname], - ], -}; - -/** - * remark plugin that converts blocks delimited with `:::tabs` into instances of - * the `` component. Depends on the `remark-directive` module for the - * core parsing logic. - */ -const remarkTabs = (): unified.Plugin<[], mdast.Root> => { - const variants = new Set(["tabs"]); - - const transformer: unified.Transformer = (tree) => { - // @ts-expect-error Possibly infinite type instantiation we can’t do anything about. - visit(tree, (node, index, parent) => { - if (!parent || index === null || node.type !== "containerDirective") - return; - const type = node.name; - if (!variants.has(type)) return; - - // remark-directive converts a container’s “label” to a paragraph in - // its children, but we want to pass it as the title prop to , so - // we iterate over the children, find a directive label, store it for the - // title prop, and remove the paragraph from children. - let title: string | undefined; - - remove(node, (child) => { - if (child.data?.directiveLabel) { - if ("children" in child && "value" in child?.children[0]) { - title = child?.children[0].value; - } - return true; - } - }); - - // finding all leaves and changing default children by this Node - let tabCount = 0; - const visitChild = visitChildren((child, index) => { - if (child?.type === "leafDirective" && child?.name === "title") { - if ("children" in child && "value" in child?.children[0]) { - tabCount += 1; - const tabContentNode = makeComponentNode( - TabContentTagname, - { - attributes: { - title: child?.children[0].value, - name: "tabcontent", - }, - }, - ...node.children[index].children - ); - const tabNameNode = makeComponentNode(TabNameTagname, { - attributes: { - title: child?.children[0].value, - name: "tabname", - slotName: `tab.${tabCount}`, - }, - ...[], - }); - node.children.splice( - index, - 1, - { ...tabContentNode }, - { ...tabNameNode } - ); - } - } - }); - visitChild(node); - - // Replace this node with the tabs component it represents. - parent.children[index] = makeComponentNode( - TabsTagname, - { attributes: { type, title } }, - ...node.children - ); - }); - }; - - return function attacher() { - return transformer; - }; -}; - -/** - * Astro integration that sets up the remark plugin and auto-imports the `` component everywhere. - */ -export function astroTabs(): AstroIntegration { - return { - name: "@astrojs/tabs", - hooks: { - "astro:config:setup": ({ updateConfig }) => { - updateConfig({ - markdown: { - remarkPlugins: [remarkDirective, remarkTabs()], - }, - }); - }, - }, - }; -} diff --git a/integrations/utils/makeComponentNode.ts b/integrations/utils/makeComponentNode.ts deleted file mode 100644 index 6c3cf223a..000000000 --- a/integrations/utils/makeComponentNode.ts +++ /dev/null @@ -1,33 +0,0 @@ -import type { BlockContent } from 'mdast'; -import type { MdxJsxAttribute, MdxJsxFlowElement } from 'mdast-util-mdx-jsx'; - -interface NodeProps { - attributes?: Record; -} - -/** - * Create AST node for a custom component injection. - * - * @example - * makeComponentNode('MyComponent', { prop: 'val' }, h('p', 'Paragraph inside component')) - * - */ -export function makeComponentNode( - name: string, - { attributes = {} }: NodeProps = {}, - ...children: BlockContent[] -): MdxJsxFlowElement { - return { - type: 'mdxJsxFlowElement', - name, - attributes: Object.entries(attributes) - // Filter out non-truthy attributes to avoid empty attrs being parsed as `true`. - .filter(([_k, v]) => v !== false && Boolean(v)) - .map(([name, value]) => ({ - type: 'mdxJsxAttribute', - name, - value: value as MdxJsxAttribute['value'], - })), - children, - }; -} \ No newline at end of file diff --git a/src/components/AstroTabs/AstroTabContent.astro b/src/components/AstroTabs/AstroTabContent.astro deleted file mode 100644 index 4a9656026..000000000 --- a/src/components/AstroTabs/AstroTabContent.astro +++ /dev/null @@ -1,5 +0,0 @@ ---- -console.log(Astro.props, "astro props conten tab"); ---- - -Hi there diff --git a/src/components/AstroTabs/AstroTabName.astro b/src/components/AstroTabs/AstroTabName.astro deleted file mode 100644 index 5afac8af6..000000000 --- a/src/components/AstroTabs/AstroTabName.astro +++ /dev/null @@ -1,5 +0,0 @@ ---- -console.log(Astro.props, "astro props name tab"); ---- - -Slot1 diff --git a/src/components/AstroTabs/AstroTabs.astro b/src/components/AstroTabs/AstroTabs.astro deleted file mode 100644 index d6868e467..000000000 --- a/src/components/AstroTabs/AstroTabs.astro +++ /dev/null @@ -1,33 +0,0 @@ ---- -import { parse } from "node-html-parser"; -import Tabs from "../tabs/Tabs"; - -const rowSlides = await Astro.slots.render("default"); - -const tabNames = Array.from(parse(rowSlides).querySelectorAll("tabname*")).map( - (tabName) => { - return { - ...tabName, - rawAttrs: { slot: tabName?.rawAttrs?.replace(/.*=/g, "") }, - }; - } -); -const tabContents = Array.from( - parse(rowSlides).querySelectorAll("tabcontent*") -); ---- - - - { - tabNames.map((tabName, index) => { - // doesn`t work with dynamic value for the "slot" prop - return Tab 1; - }) - } - { - tabContents.map((tabContent, index) => { - // doesn`t work with dynamic value for the "slot" prop - return Panel 1; - }) - } - From c5499dca6f726217a9d92340f9ec33185a51f8d9 Mon Sep 17 00:00:00 2001 From: Bohdan Zavhorodskyi Date: Fri, 25 Aug 2023 23:51:57 +0300 Subject: [PATCH 02/17] feat: some progress with tabs --- astro.config.mjs | 13 ++------ src/components/Tab.astro | 23 +++++++++++++ src/components/TabComponent/index.tsx | 12 +++++++ src/components/Tabs.astro | 39 +++++++++++++++++++++++ src/components/atlas/BuildTabs.tsx | 20 ++++++++++++ src/content/docs/en/kitchen-sink/tabs.mdx | 16 ++++++++++ 6 files changed, 112 insertions(+), 11 deletions(-) create mode 100644 src/components/Tab.astro create mode 100644 src/components/TabComponent/index.tsx create mode 100644 src/components/Tabs.astro create mode 100644 src/components/atlas/BuildTabs.tsx create mode 100644 src/content/docs/en/kitchen-sink/tabs.mdx diff --git a/astro.config.mjs b/astro.config.mjs index 08c59065c..b297a962d 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -12,21 +12,11 @@ import { defListHastHandlers, } from "remark-definition-list"; -import { - tabsAutoImport, - tabNameAutoImport, - tabContentAutoImport, - astroTabs, -} from "./integrations/astro-tabs"; - // https://astro.build/config export default defineConfig({ integrations: [ AutoImport({ imports: [ - tabsAutoImport, - tabNameAutoImport, - tabContentAutoImport, "@components/Callout.astro", "@components/Accordion.astro", "@components/ListTable.astro", @@ -35,6 +25,8 @@ export default defineConfig({ "@components/Tile.astro", "@components/GuiLabel.astro", "@components/MenuSelection.astro", + "@components/Tabs.astro", + "@components/Tab.astro", ], }), // Enable Preact to support Preact JSX components. @@ -43,7 +35,6 @@ export default defineConfig({ react(), mdx(), tailwind(), - astroTabs(), sitemap(), ], site: `https://dev-docs-nine.vercel.app/`, diff --git a/src/components/Tab.astro b/src/components/Tab.astro new file mode 100644 index 000000000..f70351bc3 --- /dev/null +++ b/src/components/Tab.astro @@ -0,0 +1,23 @@ +--- +import TabComponent from "@components/TabComponent"; + +export interface Props { + icon: string; + sync: string; +} + +const { icon, sync } = Astro.props as Props; + +// Store the content contained within the Accordion as a string. +// Replacing h3 element with populated sync value to make it accessible from Tabs component + +let content = ""; + +if (Astro.slots.has("default")) { + content = await Astro.slots.render("default"); + content = content.replace(/

(.*)\<\/h3>/, `

$1

`); +} + +--- + + diff --git a/src/components/TabComponent/index.tsx b/src/components/TabComponent/index.tsx new file mode 100644 index 000000000..e20356262 --- /dev/null +++ b/src/components/TabComponent/index.tsx @@ -0,0 +1,12 @@ +/** @jsxImportSource react */ +import type { FC } from "react"; + +const TabComponent: FC<{ + content: string; + icon: string; + sync: string; +}> = (props) => { + return
; +}; + +export default TabComponent; diff --git a/src/components/Tabs.astro b/src/components/Tabs.astro new file mode 100644 index 000000000..273990436 --- /dev/null +++ b/src/components/Tabs.astro @@ -0,0 +1,39 @@ +--- +import BuildTabs from "@components/atlas/BuildTabs.tsx"; + +export interface Props { + items: { + icon: string; + label: string; + sync: string; + }[]; +} + +const { items } = Astro.props as Props; + +// Store the content contained within the Accordion as a string. +// This string is converted to HTML inside the atlas/BuildAccordion.jsx file. + +let content = ""; + +if (Astro.slots.has("default")) { + content = await Astro.slots.render("default"); +} + +// need to parse Tab content to take translated labels and other props to the Tabs component +const tabsItems = items.map((item) => { + const reg = new RegExp(`

(\\w*)

`); + const translatedLabel = content.match(reg)![1]; + + // removing label from content + content = content.replace(reg, ""); + + return { + id: item.label, + iconName: item.icon, + label: translatedLabel, + }; +}); +--- + + diff --git a/src/components/atlas/BuildTabs.tsx b/src/components/atlas/BuildTabs.tsx new file mode 100644 index 000000000..59e66e31b --- /dev/null +++ b/src/components/atlas/BuildTabs.tsx @@ -0,0 +1,20 @@ +/** @jsxImportSource react */ +import { useState, type FC } from "react"; +import { htmlWithTitles } from "@components/utils/htmlWithTitles"; +import { Tabs } from "@adjust/components"; + +const BuildTabs: FC = (props) => { + const [currentTab, setCurrentTab] = useState("1"); + /* The Astro component passes the body content as a string of HTML. + We use a helper function to convert this into usable HTML content*/ + const content = htmlWithTitles(props.content); + + return ( + <> + + {content.body} + + ); +}; + +export default BuildTabs; diff --git a/src/content/docs/en/kitchen-sink/tabs.mdx b/src/content/docs/en/kitchen-sink/tabs.mdx new file mode 100644 index 000000000..64562a590 --- /dev/null +++ b/src/content/docs/en/kitchen-sink/tabs.mdx @@ -0,0 +1,16 @@ +--- +title: "Tabs" +description: "Reference for the tabs component" +slug: "en/kitchen-sink/tabs" +--- + + + + ### iOS + _IOS_ content + + + ### Android + _Android_ content + + From 6772b7614edde2c18549a06e0d46c82e9161cdfc Mon Sep 17 00:00:00 2001 From: Bohdan Zavhorodskyi Date: Fri, 25 Aug 2023 23:56:21 +0300 Subject: [PATCH 03/17] feat: added MD content to the tabs --- src/content/docs/en/kitchen-sink/tabs.mdx | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/content/docs/en/kitchen-sink/tabs.mdx b/src/content/docs/en/kitchen-sink/tabs.mdx index 64562a590..c626e665e 100644 --- a/src/content/docs/en/kitchen-sink/tabs.mdx +++ b/src/content/docs/en/kitchen-sink/tabs.mdx @@ -8,9 +8,29 @@ slug: "en/kitchen-sink/tabs" ### iOS _IOS_ content + ```javascript + Adjust.initSdk({ + appToken: 'YOUR_APP_TOKEN', + environment: 'sandbox', + attributionCallback: function (e, attribution){ + console.log('Adid: ' + attribution.adid); + console.log('Tracker Token: ' + attribution.tracker_token); + console.log('Tracker Name: ' + attribution.tracker_name); + console.log('Network: ' + attribution.network); + console.log('Campaign: ' + attribution.campaign); + console.log('Adgroup: ' + attribution.adgroup); + console.log('Creative: ' + attribution.creative); + console.log('Click Label: ' + attribution.click_label); + console.log('Attribution State: ' + attribution.state); + } + }); + ``` ### Android _Android_ content + ```javascript + Adjust.stop(); + ``` From fd61fcc80090145ddcbf921d3dac228449ff44db Mon Sep 17 00:00:00 2001 From: Bohdan Zavhorodskyi Date: Sun, 27 Aug 2023 18:48:28 +0300 Subject: [PATCH 04/17] fix: types updates --- src/components/Tab.astro | 5 ++--- src/components/TabComponent/index.tsx | 1 - src/components/Tabs.astro | 3 ++- src/components/atlas/BuildTabs.tsx | 6 +++++- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/components/Tab.astro b/src/components/Tab.astro index f70351bc3..47f5b8308 100644 --- a/src/components/Tab.astro +++ b/src/components/Tab.astro @@ -2,11 +2,10 @@ import TabComponent from "@components/TabComponent"; export interface Props { - icon: string; sync: string; } -const { icon, sync } = Astro.props as Props; +const { sync } = Astro.props as Props; // Store the content contained within the Accordion as a string. // Replacing h3 element with populated sync value to make it accessible from Tabs component @@ -20,4 +19,4 @@ if (Astro.slots.has("default")) { --- - + diff --git a/src/components/TabComponent/index.tsx b/src/components/TabComponent/index.tsx index e20356262..370a7fd6e 100644 --- a/src/components/TabComponent/index.tsx +++ b/src/components/TabComponent/index.tsx @@ -3,7 +3,6 @@ import type { FC } from "react"; const TabComponent: FC<{ content: string; - icon: string; sync: string; }> = (props) => { return
; diff --git a/src/components/Tabs.astro b/src/components/Tabs.astro index 273990436..f99490fb8 100644 --- a/src/components/Tabs.astro +++ b/src/components/Tabs.astro @@ -1,4 +1,5 @@ --- +import type { TabItemType } from "@adjust/components/build/Tabs/TabItem"; import BuildTabs from "@components/atlas/BuildTabs.tsx"; export interface Props { @@ -32,7 +33,7 @@ const tabsItems = items.map((item) => { id: item.label, iconName: item.icon, label: translatedLabel, - }; + } as TabItemType; }); --- diff --git a/src/components/atlas/BuildTabs.tsx b/src/components/atlas/BuildTabs.tsx index 59e66e31b..1e5eda39d 100644 --- a/src/components/atlas/BuildTabs.tsx +++ b/src/components/atlas/BuildTabs.tsx @@ -2,8 +2,12 @@ import { useState, type FC } from "react"; import { htmlWithTitles } from "@components/utils/htmlWithTitles"; import { Tabs } from "@adjust/components"; +import type { TabItemType } from "@adjust/components/build/Tabs/TabItem"; -const BuildTabs: FC = (props) => { +const BuildTabs: FC<{ + content: string; + items: TabItemType[]; +}> = (props) => { const [currentTab, setCurrentTab] = useState("1"); /* The Astro component passes the body content as a string of HTML. We use a helper function to convert this into usable HTML content*/ From 77ce93405939070acbfc08d9b245f28622c88a34 Mon Sep 17 00:00:00 2001 From: Bohdan Zavhorodskyi Date: Mon, 28 Aug 2023 13:42:35 +0300 Subject: [PATCH 05/17] feat: changed syntax --- package-lock.json | 484 +++++++++++++++++++++- package.json | 1 + src/components/Tab.astro | 5 +- src/components/Tabs.astro | 29 +- src/components/utils/extractTabProps.ts | 37 ++ src/content/docs/en/kitchen-sink/tabs.mdx | 26 +- 6 files changed, 517 insertions(+), 65 deletions(-) create mode 100644 src/components/utils/extractTabProps.ts diff --git a/package-lock.json b/package-lock.json index b8ee41d51..75f634a0c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,6 +36,7 @@ "preact": "^10.17.1", "react": "^18.2.0", "react-dom": "^18.2.0", + "rehype": "^13.0.0", "rehype-mermaidjs": "^1.0.1", "remark": "^14.0.3", "remark-definition-list": "^1.2.0", @@ -2007,6 +2008,11 @@ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==" }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + }, "node_modules/@vscode/emmet-helper": { "version": "2.9.2", "resolved": "https://registry.npmjs.org/@vscode/emmet-helper/-/emmet-helper-2.9.2.tgz", @@ -2343,6 +2349,36 @@ "node": ">=10" } }, + "node_modules/astro/node_modules/rehype": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/rehype/-/rehype-12.0.1.tgz", + "integrity": "sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw==", + "dependencies": { + "@types/hast": "^2.0.0", + "rehype-parse": "^8.0.0", + "rehype-stringify": "^9.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/astro/node_modules/rehype-parse": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-8.0.5.tgz", + "integrity": "sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-from-parse5": "^7.0.0", + "parse5": "^6.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/astro/node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -8995,14 +9031,14 @@ "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" }, "node_modules/rehype": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/rehype/-/rehype-12.0.1.tgz", - "integrity": "sha512-ey6kAqwLM3X6QnMDILJthGvG1m1ULROS9NT4uG9IDCuv08SFyLlreSuvOa//DgEvbXx62DS6elGVqusWhRUbgw==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.0.tgz", + "integrity": "sha512-oKDh5mN59cKd8Fu/V8pomLcodHIlCGNnbIieQUSUTzUxEQYZ6vUcwcGTk8lcxvByeVgMcHAzLOI16rkM99dcXA==", "dependencies": { - "@types/hast": "^2.0.0", - "rehype-parse": "^8.0.0", - "rehype-stringify": "^9.0.0", - "unified": "^10.0.0" + "@types/hast": "^3.0.0", + "rehype-parse": "^9.0.0", + "rehype-stringify": "^10.0.0", + "unified": "^11.0.0" }, "funding": { "type": "opencollective", @@ -9029,14 +9065,125 @@ } }, "node_modules/rehype-parse": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-8.0.5.tgz", - "integrity": "sha512-Ds3RglaY/+clEX2U2mHflt7NlMA72KspZ0JLUJgBBLpRddBcEw3H8uYZQliQriku22NZpYMfjDdSgHcjxue24A==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.0.tgz", + "integrity": "sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==", "dependencies": { - "@types/hast": "^2.0.0", - "hast-util-from-parse5": "^7.0.0", - "parse5": "^6.0.0", - "unified": "^10.0.0" + "@types/hast": "^3.0.0", + "hast-util-from-html": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse/node_modules/@types/hast": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.0.tgz", + "integrity": "sha512-SoytUJRuf68HXYqcXicQIhCrLQjqeYU2anikr4G3p3Iz+OZO5QDQpDj++gv+RenHsnUBwNZ2dumBArF8VLSk2Q==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/rehype-parse/node_modules/hast-util-from-html": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.1.tgz", + "integrity": "sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==", + "dependencies": { + "@types/hast": "^3.0.0", + "devlop": "^1.1.0", + "hast-util-from-parse5": "^8.0.0", + "parse5": "^7.0.0", + "vfile": "^6.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse/node_modules/hast-util-from-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", + "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^8.0.0", + "property-information": "^6.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse/node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/rehype-parse/node_modules/unified": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.2.tgz", + "integrity": "sha512-Zta++onvS/dJ6xUvXQOR5q8XJZOkiMCE5wQ8Yv9mLR25pxRS567EX0GO6HZRxxNV/lznwfsvRZ/1pqe9K9QLeQ==", + "dependencies": { + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype-parse/node_modules/vfile-location": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", + "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" }, "funding": { "type": "opencollective", @@ -9071,6 +9218,315 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/rehype/node_modules/@types/hast": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.0.tgz", + "integrity": "sha512-SoytUJRuf68HXYqcXicQIhCrLQjqeYU2anikr4G3p3Iz+OZO5QDQpDj++gv+RenHsnUBwNZ2dumBArF8VLSk2Q==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/rehype/node_modules/hast-util-from-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", + "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^8.0.0", + "property-information": "^6.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype/node_modules/hast-util-raw": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.0.tgz", + "integrity": "sha512-HRjOZeaRAOM66qU/zmJ1fI/dKQovAFi9Fpq0bBW/6P/ZDdyQnFyu/ZMPk+CXmUEgE0AaqP1HNgTdg+N5JyvNeA==", + "dependencies": { + "@types/hast": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype/node_modules/hast-util-to-html": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.0.tgz", + "integrity": "sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-raw": "^9.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype/node_modules/hast-util-to-parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", + "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype/node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype/node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/rehype/node_modules/mdast-util-to-hast": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.0.1.tgz", + "integrity": "sha512-ka3PknAg27U8ay/v8p+uYcN5bdwjqoAtPF78neohOLaJKhwnuQsp7MAJM3LnMgQ/LABDbK9jwhkVZp7uCLkOMQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype/node_modules/micromark-util-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", + "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/rehype/node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/rehype/node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/rehype/node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/rehype/node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/rehype/node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/rehype/node_modules/rehype-stringify": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.0.tgz", + "integrity": "sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==", + "dependencies": { + "@types/hast": "^3.0.0", + "hast-util-to-html": "^9.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype/node_modules/unified": { + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.2.tgz", + "integrity": "sha512-Zta++onvS/dJ6xUvXQOR5q8XJZOkiMCE5wQ8Yv9mLR25pxRS567EX0GO6HZRxxNV/lznwfsvRZ/1pqe9K9QLeQ==", + "dependencies": { + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype/node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype/node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype/node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/rehype/node_modules/vfile-location": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", + "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/remark": { "version": "14.0.3", "resolved": "https://registry.npmjs.org/remark/-/remark-14.0.3.tgz", diff --git a/package.json b/package.json index 20c1c13b1..9c1ec3ed2 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "preact": "^10.17.1", "react": "^18.2.0", "react-dom": "^18.2.0", + "rehype": "^13.0.0", "rehype-mermaidjs": "^1.0.1", "remark": "^14.0.3", "remark-definition-list": "^1.2.0", diff --git a/src/components/Tab.astro b/src/components/Tab.astro index 47f5b8308..d1a9b436c 100644 --- a/src/components/Tab.astro +++ b/src/components/Tab.astro @@ -3,9 +3,10 @@ import TabComponent from "@components/TabComponent"; export interface Props { sync: string; + icon: string; } -const { sync } = Astro.props as Props; +const { sync, icon } = Astro.props as Props; // Store the content contained within the Accordion as a string. // Replacing h3 element with populated sync value to make it accessible from Tabs component @@ -14,7 +15,7 @@ let content = ""; if (Astro.slots.has("default")) { content = await Astro.slots.render("default"); - content = content.replace(/

(.*)\<\/h3>/, `

$1

`); + content = content.replace(/

(.*)\<\/h3>/, `

$1

`); } --- diff --git a/src/components/Tabs.astro b/src/components/Tabs.astro index f99490fb8..4de8b0f61 100644 --- a/src/components/Tabs.astro +++ b/src/components/Tabs.astro @@ -1,16 +1,6 @@ --- -import type { TabItemType } from "@adjust/components/build/Tabs/TabItem"; import BuildTabs from "@components/atlas/BuildTabs.tsx"; - -export interface Props { - items: { - icon: string; - label: string; - sync: string; - }[]; -} - -const { items } = Astro.props as Props; +import { extractTabProps } from "./utils/extractTabProps"; // Store the content contained within the Accordion as a string. // This string is converted to HTML inside the atlas/BuildAccordion.jsx file. @@ -21,20 +11,7 @@ if (Astro.slots.has("default")) { content = await Astro.slots.render("default"); } -// need to parse Tab content to take translated labels and other props to the Tabs component -const tabsItems = items.map((item) => { - const reg = new RegExp(`

(\\w*)

`); - const translatedLabel = content.match(reg)![1]; - - // removing label from content - content = content.replace(reg, ""); - - return { - id: item.label, - iconName: item.icon, - label: translatedLabel, - } as TabItemType; -}); +const { tabs, updatedContent } = await extractTabProps(content); --- - + diff --git a/src/components/utils/extractTabProps.ts b/src/components/utils/extractTabProps.ts new file mode 100644 index 000000000..86179e067 --- /dev/null +++ b/src/components/utils/extractTabProps.ts @@ -0,0 +1,37 @@ +import { rehype } from "rehype"; +import { visit } from "unist-util-visit"; +import { remove } from "unist-util-remove"; + +import type { TabItemType } from "@adjust/components/build/Tabs/TabItem"; +import type { Node } from "unist"; + +interface TreeNode extends Node { + tagName: string; + properties: Record; + children: { type: string; value: string }[]; +} + +export const extractTabProps = async (content: string) => { + const tabItems: TabItemType[] = []; + + const data = await rehype() + .use(() => { + return (tree) => { + visit(tree, "element", (node: TreeNode) => { + if (node.tagName == "h3") { + const { properties, children } = node; + tabItems.push({ + id: properties.id!, + iconName: properties.dataIcon, + label: children[0].value, + }); + + remove(node); + } + }); + }; + }) + .process(content); + + return { tabs: tabItems, updatedContent: data.value as string }; +}; diff --git a/src/content/docs/en/kitchen-sink/tabs.mdx b/src/content/docs/en/kitchen-sink/tabs.mdx index c626e665e..a613f70d2 100644 --- a/src/content/docs/en/kitchen-sink/tabs.mdx +++ b/src/content/docs/en/kitchen-sink/tabs.mdx @@ -4,33 +4,13 @@ description: "Reference for the tabs component" slug: "en/kitchen-sink/tabs" --- - - + + ### iOS _IOS_ content - ```javascript - Adjust.initSdk({ - appToken: 'YOUR_APP_TOKEN', - environment: 'sandbox', - attributionCallback: function (e, attribution){ - console.log('Adid: ' + attribution.adid); - console.log('Tracker Token: ' + attribution.tracker_token); - console.log('Tracker Name: ' + attribution.tracker_name); - console.log('Network: ' + attribution.network); - console.log('Campaign: ' + attribution.campaign); - console.log('Adgroup: ' + attribution.adgroup); - console.log('Creative: ' + attribution.creative); - console.log('Click Label: ' + attribution.click_label); - console.log('Attribution State: ' + attribution.state); - } - }); - ``` - + ### Android _Android_ content - ```javascript - Adjust.stop(); - ``` From d9e4bf6e7b9deb98673453d7c254f178e76aab80 Mon Sep 17 00:00:00 2001 From: Bohdan Zavhorodskyi Date: Mon, 28 Aug 2023 17:21:09 +0300 Subject: [PATCH 06/17] feat: added new package, added tabStore --- package-lock.json | 31 +++++++++++++++++++-- package.json | 2 ++ src/components/Tab.astro | 10 ++++--- src/components/TabComponent/index.tsx | 21 ++++++++++++-- src/components/atlas/BuildTabs.tsx | 21 +++++++++++--- src/content/docs/en/kitchen-sink/tabs.mdx | 34 ++++++++++++++++++++++- src/store/tabStore.ts | 24 ++++++++++++++++ tsconfig.json | 3 +- 8 files changed, 131 insertions(+), 15 deletions(-) create mode 100644 src/store/tabStore.ts diff --git a/package-lock.json b/package-lock.json index 75f634a0c..55d12cae2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,6 +18,7 @@ "@docsearch/css": "^3.5.2", "@docsearch/react": "^3.5.2", "@nanostores/preact": "^0.5.0", + "@nanostores/react": "^0.7.1", "@types/mdast": "^4.0.0", "@types/node": "^20.5.4", "@types/react": "^18.2.21", @@ -26,6 +27,7 @@ "astro-auto-import": "^0.3.1", "astro-icon": "^0.8.1", "chroma-js": "^2.4.2", + "classnames": "^2.3.2", "hastscript": "^8.0.0", "html-escaper": "^3.0.3", "mdast": "^3.0.0", @@ -96,6 +98,11 @@ "react-dom": "~16.13 || ^17.0 || ^18.0" } }, + "node_modules/@adjust/components/node_modules/classnames": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", + "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" + }, "node_modules/@adjust/components/node_modules/memoize-one": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", @@ -1666,6 +1673,24 @@ "preact": ">=10.0.0" } }, + "node_modules/@nanostores/react": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/@nanostores/react/-/react-0.7.1.tgz", + "integrity": "sha512-EXQg9N4MdI4eJQz/AZLIx3hxQ6BuBmV4Q55bCd5YCSgEOAW7tGTsIZxpRXxvxLXzflNvHTBvfrDNY38TlSVBkQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "engines": { + "node": "^16.0.0 || ^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "nanostores": "^0.9.0", + "react": ">=18.0.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2936,9 +2961,9 @@ } }, "node_modules/classnames": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", - "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" }, "node_modules/cli-boxes": { "version": "3.0.0", diff --git a/package.json b/package.json index 9c1ec3ed2..feae784ca 100644 --- a/package.json +++ b/package.json @@ -21,6 +21,7 @@ "@docsearch/css": "^3.5.2", "@docsearch/react": "^3.5.2", "@nanostores/preact": "^0.5.0", + "@nanostores/react": "^0.7.1", "@types/mdast": "^4.0.0", "@types/node": "^20.5.4", "@types/react": "^18.2.21", @@ -29,6 +30,7 @@ "astro-auto-import": "^0.3.1", "astro-icon": "^0.8.1", "chroma-js": "^2.4.2", + "classnames": "^2.3.2", "hastscript": "^8.0.0", "html-escaper": "^3.0.3", "mdast": "^3.0.0", diff --git a/src/components/Tab.astro b/src/components/Tab.astro index d1a9b436c..a721b4cb9 100644 --- a/src/components/Tab.astro +++ b/src/components/Tab.astro @@ -6,7 +6,7 @@ export interface Props { icon: string; } -const { sync, icon } = Astro.props as Props; +const { sync, icon } = Astro.props as Props; // Store the content contained within the Accordion as a string. // Replacing h3 element with populated sync value to make it accessible from Tabs component @@ -15,9 +15,11 @@ let content = ""; if (Astro.slots.has("default")) { content = await Astro.slots.render("default"); - content = content.replace(/

(.*)\<\/h3>/, `

$1

`); + content = content.replace( + /

(.*)\<\/h3>/, + `

$1

` + ); } - --- - + diff --git a/src/components/TabComponent/index.tsx b/src/components/TabComponent/index.tsx index 370a7fd6e..c72fd6bc7 100644 --- a/src/components/TabComponent/index.tsx +++ b/src/components/TabComponent/index.tsx @@ -1,11 +1,28 @@ /** @jsxImportSource react */ -import type { FC } from "react"; +import { useStore } from "@nanostores/react"; +import { useEffect, type FC, useState } from "react"; +import classNames from "classnames"; + +import { $tabs } from "@store/tabStore"; const TabComponent: FC<{ content: string; sync: string; }> = (props) => { - return
; + const tabs = useStore($tabs); + // for some reason, this component don`t normally render with the default value so we need to use additional store + const [currentTab, setCurrentTab] = useState(props.sync); + + useEffect(() => { + setCurrentTab(tabs.currentSync); + }, [tabs.currentSync]); + + return ( +
+ ); }; export default TabComponent; diff --git a/src/components/atlas/BuildTabs.tsx b/src/components/atlas/BuildTabs.tsx index 1e5eda39d..ad6865f66 100644 --- a/src/components/atlas/BuildTabs.tsx +++ b/src/components/atlas/BuildTabs.tsx @@ -1,21 +1,34 @@ /** @jsxImportSource react */ -import { useState, type FC } from "react"; -import { htmlWithTitles } from "@components/utils/htmlWithTitles"; +import { type FC, useEffect } from "react"; import { Tabs } from "@adjust/components"; +import { useStore } from "@nanostores/react"; + +import { htmlWithTitles } from "@components/utils/htmlWithTitles"; +import { $tabs, changeCurrentTab, updateTabs } from "@store/tabStore"; + import type { TabItemType } from "@adjust/components/build/Tabs/TabItem"; const BuildTabs: FC<{ content: string; items: TabItemType[]; }> = (props) => { - const [currentTab, setCurrentTab] = useState("1"); + const tabs = useStore($tabs); + /* The Astro component passes the body content as a string of HTML. We use a helper function to convert this into usable HTML content*/ const content = htmlWithTitles(props.content); + useEffect(() => { + updateTabs(props.items); + }, []); + return ( <> - + {content.body} ); diff --git a/src/content/docs/en/kitchen-sink/tabs.mdx b/src/content/docs/en/kitchen-sink/tabs.mdx index a613f70d2..3ce910930 100644 --- a/src/content/docs/en/kitchen-sink/tabs.mdx +++ b/src/content/docs/en/kitchen-sink/tabs.mdx @@ -7,10 +7,42 @@ slug: "en/kitchen-sink/tabs" ### iOS - _IOS_ content + When a user interacts with a campaign link, their attribution information updates. This can happen if the user interacts with a [deep link](hc:deep-links). The SDK can listen for attribution changes and call a function when it detects an update. + + You can set an attribution callback method by specifying an `attributionCallback` function in the [`initSdk` method](#web-initsdk-invocation). + + Within your function, you have access to the user's attribution information. + + ## Get current attribution information + + When a user installs your app, Adjust attributes the install to a campaign. The Adjust SDK gives you access to campaign attribution ### Android _Android_ content + + + + ### iOS + _IOS_ content 2 + + + ### Android + _Android_ content 2 + + + + + + ### iOS + When a user interacts with a campaign link, their attribution information updates. This can happen if the user interacts with a [deep link](hc:deep-links). The SDK can listen for attribution changes and call a function when it detects an update. + + You can set an attribution callback method by specifying an `attributionCallback` function in the [`initSdk` method](#web-initsdk-invocation). + + + ### Android + _Android_ content 3 + + diff --git a/src/store/tabStore.ts b/src/store/tabStore.ts new file mode 100644 index 000000000..fd662aeb2 --- /dev/null +++ b/src/store/tabStore.ts @@ -0,0 +1,24 @@ +import { map } from "nanostores"; + +import type { TabItemType } from "@adjust/components/build/Tabs/TabItem"; + +interface TabStore { + items: TabItemType[]; + currentSync: string; +} + +export const $tabs = map({ + items: [], + currentSync: "", +}); + +export const updateTabs = (items: TabStore["items"]) => { + $tabs.set({ + items: [...$tabs.get().items, ...items], + currentSync: items[0].id, + }); +}; + +export const changeCurrentTab = (newTab: string) => { + $tabs.set({ ...$tabs.get(), currentSync: newTab }); +}; diff --git a/tsconfig.json b/tsconfig.json index 3113353a6..99816c83b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,7 +8,8 @@ "baseUrl": ".", "allowImportingTsExtensions": true, "paths": { - "@components/*": ["src/components/*"] + "@components/*": ["src/components/*"], + "@store/*": ["src/store/*"] } } } From 3c0fc9b4e7a98960d6c423496208205bd73697e3 Mon Sep 17 00:00:00 2001 From: Bohdan Zavhorodskyi Date: Mon, 28 Aug 2023 17:29:13 +0300 Subject: [PATCH 07/17] fix: changed deps --- package-lock.json | 27 +++++---------------------- package.json | 11 +++++------ 2 files changed, 10 insertions(+), 28 deletions(-) diff --git a/package-lock.json b/package-lock.json index 55d12cae2..c00e7e8a6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,10 +19,6 @@ "@docsearch/react": "^3.5.2", "@nanostores/preact": "^0.5.0", "@nanostores/react": "^0.7.1", - "@types/mdast": "^4.0.0", - "@types/node": "^20.5.4", - "@types/react": "^18.2.21", - "@types/react-dom": "^18.2.7", "astro": "^2.10.13", "astro-auto-import": "^0.3.1", "astro-icon": "^0.8.1", @@ -47,14 +43,17 @@ "sass": "^1.66.1", "shiki": "^0.14.3", "tailwindcss": "^3.3.3", - "typescript": "^5.1.6", "unified": "~10.1.2", "unist-util-remove": "^4.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-children": "^3.0.0" }, "devDependencies": { - "playwright": "^1.37.1" + "@types/mdast": "^4.0.0", + "@types/node": "^20.5.4", + "@types/react": "^18.2.21", + "@types/react-dom": "^18.2.7", + "typescript": "^5.1.6" } }, "node_modules/@adjust/components": { @@ -8451,22 +8450,6 @@ "node": ">=8" } }, - "node_modules/playwright": { - "version": "1.37.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.37.1.tgz", - "integrity": "sha512-bgUXRrQKhT48zHdxDYQTpf//0xDfDd5hLeEhjuSw8rXEGoT9YeElpfvs/izonTNY21IQZ7d3s22jLxYaAnubbQ==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "playwright-core": "1.37.1" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=16" - } - }, "node_modules/playwright-core": { "version": "1.37.1", "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.37.1.tgz", diff --git a/package.json b/package.json index feae784ca..4b214d0f9 100644 --- a/package.json +++ b/package.json @@ -22,10 +22,6 @@ "@docsearch/react": "^3.5.2", "@nanostores/preact": "^0.5.0", "@nanostores/react": "^0.7.1", - "@types/mdast": "^4.0.0", - "@types/node": "^20.5.4", - "@types/react": "^18.2.21", - "@types/react-dom": "^18.2.7", "astro": "^2.10.13", "astro-auto-import": "^0.3.1", "astro-icon": "^0.8.1", @@ -50,13 +46,16 @@ "sass": "^1.66.1", "shiki": "^0.14.3", "tailwindcss": "^3.3.3", - "typescript": "^5.1.6", "unified": "~10.1.2", "unist-util-remove": "^4.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-children": "^3.0.0" }, "devDependencies": { - "playwright": "^1.37.1" + "@types/mdast": "^4.0.0", + "@types/node": "^20.5.4", + "@types/react": "^18.2.21", + "@types/react-dom": "^18.2.7", + "typescript": "^5.1.6" } } From da0803f2059aa5d7834221ab981b25a6e70a850f Mon Sep 17 00:00:00 2001 From: Bohdan Zavhorodskyi Date: Mon, 28 Aug 2023 17:31:55 +0300 Subject: [PATCH 08/17] fix: added missed dependency --- package-lock.json | 16 ++++++++++++++++ package.json | 3 ++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/package-lock.json b/package-lock.json index c00e7e8a6..2c02eebfb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,6 +31,7 @@ "nanostores": "^0.9.3", "node-html-parser": "^6.1.6", "parse-numeric-range": "^1.3.0", + "playwright": "^1.37.1", "preact": "^10.17.1", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -8450,6 +8451,21 @@ "node": ">=8" } }, + "node_modules/playwright": { + "version": "1.37.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.37.1.tgz", + "integrity": "sha512-bgUXRrQKhT48zHdxDYQTpf//0xDfDd5hLeEhjuSw8rXEGoT9YeElpfvs/izonTNY21IQZ7d3s22jLxYaAnubbQ==", + "hasInstallScript": true, + "dependencies": { + "playwright-core": "1.37.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/playwright-core": { "version": "1.37.1", "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.37.1.tgz", diff --git a/package.json b/package.json index 4b214d0f9..7c57e64c0 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,8 @@ "unified": "~10.1.2", "unist-util-remove": "^4.0.0", "unist-util-visit": "^5.0.0", - "unist-util-visit-children": "^3.0.0" + "unist-util-visit-children": "^3.0.0", + "playwright": "^1.37.1" }, "devDependencies": { "@types/mdast": "^4.0.0", From 98190d95810d9028a55c556b6ad7a8e1d41e6fcb Mon Sep 17 00:00:00 2001 From: Bohdan Zavhorodskyi Date: Sat, 2 Sep 2023 15:27:14 +0300 Subject: [PATCH 09/17] fix: added more examples, changed Tab astro compoennt --- src/components/Tab.astro | 2 +- src/content/docs/en/kitchen-sink/tabs.mdx | 64 +++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/src/components/Tab.astro b/src/components/Tab.astro index a721b4cb9..fa158c93a 100644 --- a/src/components/Tab.astro +++ b/src/components/Tab.astro @@ -17,7 +17,7 @@ if (Astro.slots.has("default")) { content = await Astro.slots.render("default"); content = content.replace( /

(.*)\<\/h3>/, - `

$1

` + `

$1

` ); } --- diff --git a/src/content/docs/en/kitchen-sink/tabs.mdx b/src/content/docs/en/kitchen-sink/tabs.mdx index 3ce910930..218cff783 100644 --- a/src/content/docs/en/kitchen-sink/tabs.mdx +++ b/src/content/docs/en/kitchen-sink/tabs.mdx @@ -4,6 +4,8 @@ description: "Reference for the tabs component" slug: "en/kitchen-sink/tabs" --- +### Examples of using Tabs component + ### iOS @@ -46,3 +48,65 @@ slug: "en/kitchen-sink/tabs" _Android_ content 3 + + + + ### Javascript + + Content + + + + +Run the following in your AppDelegate file + + + + ### Objective-C + ```objc + code + ``` + + + ### Swift + ```swift + code + ``` + + + ### Javascript + ```js + code + ``` + + + +If you're using Javascript, you may need to install some dependencies: + + + + ### npm + These are the instructions for npm + + + ### Yarn + These are the instructions for Yarn + + + ### pnpm + These are the instructions for pnpm + + + +Next add a call to this in your app.js file + + + + ### Javascript + Some js instructions + + + ### Typescript + Some ts instructions + + From fe630335fb2518cdeb12a1ba4260d3f5c775cd4f Mon Sep 17 00:00:00 2001 From: Bohdan Zavhorodskyi Date: Sat, 2 Sep 2023 18:06:06 +0300 Subject: [PATCH 10/17] feat: updated logic for the tabs sync/active/change --- src/components/Tab.astro | 8 ++- src/components/TabComponent/index.tsx | 28 ++++------- src/components/atlas/BuildTabs.tsx | 67 +++++++++++++++++++++---- src/components/utils/extractTabProps.ts | 8 +-- src/store/tabStore.ts | 15 +----- 5 files changed, 80 insertions(+), 46 deletions(-) diff --git a/src/components/Tab.astro b/src/components/Tab.astro index fa158c93a..5a71889d0 100644 --- a/src/components/Tab.astro +++ b/src/components/Tab.astro @@ -1,4 +1,6 @@ --- +import { randomUUID } from "crypto"; + import TabComponent from "@components/TabComponent"; export interface Props { @@ -13,13 +15,15 @@ const { sync, icon } = Astro.props as Props; let content = ""; +const uniqueId = randomUUID(); if (Astro.slots.has("default")) { content = await Astro.slots.render("default"); + content = content.replace( /

(.*)\<\/h3>/, - `

$1

` + `

$1

` ); } --- - + diff --git a/src/components/TabComponent/index.tsx b/src/components/TabComponent/index.tsx index c72fd6bc7..b3641a3cb 100644 --- a/src/components/TabComponent/index.tsx +++ b/src/components/TabComponent/index.tsx @@ -1,27 +1,21 @@ /** @jsxImportSource react */ -import { useStore } from "@nanostores/react"; -import { useEffect, type FC, useState } from "react"; -import classNames from "classnames"; -import { $tabs } from "@store/tabStore"; +import type { FC } from "react"; + const TabComponent: FC<{ content: string; - sync: string; -}> = (props) => { - const tabs = useStore($tabs); - // for some reason, this component don`t normally render with the default value so we need to use additional store - const [currentTab, setCurrentTab] = useState(props.sync); - - useEffect(() => { - setCurrentTab(tabs.currentSync); - }, [tabs.currentSync]); + uniqueId: string; +}> = ({content, uniqueId}) => { return ( -
+
+ {/* additional div in case of adding styles to the content */} +
+
); }; diff --git a/src/components/atlas/BuildTabs.tsx b/src/components/atlas/BuildTabs.tsx index ad6865f66..b7773624d 100644 --- a/src/components/atlas/BuildTabs.tsx +++ b/src/components/atlas/BuildTabs.tsx @@ -1,35 +1,80 @@ /** @jsxImportSource react */ -import { type FC, useEffect } from "react"; +import { type FC, useEffect, useState } from "react"; import { Tabs } from "@adjust/components"; import { useStore } from "@nanostores/react"; import { htmlWithTitles } from "@components/utils/htmlWithTitles"; -import { $tabs, changeCurrentTab, updateTabs } from "@store/tabStore"; +import { $tabs, changeSyncValue } from "@store/tabStore"; import type { TabItemType } from "@adjust/components/build/Tabs/TabItem"; +export interface TabItem extends TabItemType { + sync: string; +} + const BuildTabs: FC<{ content: string; - items: TabItemType[]; -}> = (props) => { + items: TabItem[]; +}> = ({ content, items }) => { const tabs = useStore($tabs); + const isTabsHaveSync = items.every((tab) => tab.sync !== "undefined"); + const [currentTabs, setCurrentTabs] = useState({ + items: items, + activeTab: items[0].id, + isTabsHaveSync: isTabsHaveSync, + }); /* The Astro component passes the body content as a string of HTML. We use a helper function to convert this into usable HTML content*/ - const content = htmlWithTitles(props.content); + const contentParsed = htmlWithTitles(content); + + const handleTabChange = (tabId: string, withSync = true) => { + // hiding inactive tabs from the current list + currentTabs.items.forEach((tab) => { + if (tab.id !== tabId) { + const currentTab = document.getElementById(tab.id)!; + currentTab.className = "hidden"; + } + }); + + // making the current tab visible + const currentTab = document.getElementById(tabId)!; + currentTab.className = "block"; + + // if current list has sync values we need to update store with the latest sync value + if (withSync) { + const syncValue = items.find((tab) => tab.id === tabId)?.sync!; + changeSyncValue(syncValue); + } + + setCurrentTabs((prev) => ({ ...prev, activeTab: tabId })); + }; useEffect(() => { - updateTabs(props.items); - }, []); + if ( + currentTabs.isTabsHaveSync && + tabs.currentSync + ) { + const activeTabId = currentTabs.items.find( + (tab) => tab.sync === tabs.currentSync + )?.id; + + if (activeTabId) { + handleTabChange(activeTabId); + } + } else { + handleTabChange(currentTabs.activeTab, false); + } + }, [tabs.currentSync]); return ( <> handleTabChange(id, currentTabs.isTabsHaveSync)} /> - {content.body} + {contentParsed.body} ); }; diff --git a/src/components/utils/extractTabProps.ts b/src/components/utils/extractTabProps.ts index 86179e067..0bf0c8a57 100644 --- a/src/components/utils/extractTabProps.ts +++ b/src/components/utils/extractTabProps.ts @@ -2,8 +2,8 @@ import { rehype } from "rehype"; import { visit } from "unist-util-visit"; import { remove } from "unist-util-remove"; -import type { TabItemType } from "@adjust/components/build/Tabs/TabItem"; import type { Node } from "unist"; +import type { TabItem } from "@components/atlas/BuildTabs"; interface TreeNode extends Node { tagName: string; @@ -12,7 +12,7 @@ interface TreeNode extends Node { } export const extractTabProps = async (content: string) => { - const tabItems: TabItemType[] = []; + const tabItems: TabItem[] = []; const data = await rehype() .use(() => { @@ -20,8 +20,10 @@ export const extractTabProps = async (content: string) => { visit(tree, "element", (node: TreeNode) => { if (node.tagName == "h3") { const { properties, children } = node; + tabItems.push({ - id: properties.id!, + id: properties.id, + sync: properties.dataSync, iconName: properties.dataIcon, label: children[0].value, }); diff --git a/src/store/tabStore.ts b/src/store/tabStore.ts index fd662aeb2..72acb4088 100644 --- a/src/store/tabStore.ts +++ b/src/store/tabStore.ts @@ -1,24 +1,13 @@ import { map } from "nanostores"; -import type { TabItemType } from "@adjust/components/build/Tabs/TabItem"; - interface TabStore { - items: TabItemType[]; currentSync: string; } export const $tabs = map({ - items: [], currentSync: "", }); -export const updateTabs = (items: TabStore["items"]) => { - $tabs.set({ - items: [...$tabs.get().items, ...items], - currentSync: items[0].id, - }); -}; - -export const changeCurrentTab = (newTab: string) => { - $tabs.set({ ...$tabs.get(), currentSync: newTab }); +export const changeSyncValue = (sync: string) => { + $tabs.set({ currentSync: sync }); }; From dc9f22ae431e60b1c6b02f7b26875c46392d942c Mon Sep 17 00:00:00 2001 From: Bohdan Zavhorodskyi Date: Sat, 2 Sep 2023 18:12:00 +0300 Subject: [PATCH 11/17] fix: changed examples --- src/content/docs/en/kitchen-sink/tabs.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/content/docs/en/kitchen-sink/tabs.mdx b/src/content/docs/en/kitchen-sink/tabs.mdx index 218cff783..47c5de3a5 100644 --- a/src/content/docs/en/kitchen-sink/tabs.mdx +++ b/src/content/docs/en/kitchen-sink/tabs.mdx @@ -64,19 +64,19 @@ Run the following in your AppDelegate file ### Objective-C ```objc - code + code objc ``` ### Swift ```swift - code + code Swift ``` ### Javascript ```js - code + code JS ``` From 5e056aabf326f945d567ace7c4ed91e65024c6be Mon Sep 17 00:00:00 2001 From: Bohdan Zavhorodskyi Date: Sat, 2 Sep 2023 19:03:02 +0300 Subject: [PATCH 12/17] fix: package lock --- package-lock.json | 902 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 898 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index bf82ede8a..ff6ce5c59 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,10 +18,7 @@ "@docsearch/css": "^3.5.2", "@docsearch/react": "^3.5.2", "@nanostores/preact": "^0.5.0", - "@types/mdast": "^4.0.0", - "@types/node": "^20.5.8", - "@types/react": "^18.2.21", - "@types/react-dom": "^18.2.7", + "@nanostores/react": "^0.7.1", "astro": "^2.10.15", "astro-auto-import": "^0.3.1", "astro-icon": "^0.8.1", @@ -39,12 +36,24 @@ "preact": "^10.17.1", "react": "^18.2.0", "react-dom": "^18.2.0", + "rehype": "^13.0.0", + "rehype-mermaidjs": "^1.0.1", "remark": "^14.0.3", "remark-definition-list": "^1.2.0", "remark-directive": "^2.0.1", "sass": "^1.66.1", "shiki": "^0.14.4", "tailwindcss": "^3.3.3", + "unified": "~10.1.2", + "unist-util-remove": "^4.0.0", + "unist-util-visit": "^5.0.0", + "unist-util-visit-children": "^3.0.0" + }, + "devDependencies": { + "@types/mdast": "^4.0.0", + "@types/node": "^20.5.8", + "@types/react": "^18.2.21", + "@types/react-dom": "^18.2.7", "typescript": "^5.2.2", "unified": "~10.1.2", "unist-util-remove": "^4.0.0", @@ -941,6 +950,11 @@ "react": "^16.8 || ^17 || ^18" } }, + "node_modules/@braintree/sanitize-url": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", + "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==" + }, "node_modules/@datepicker-react/hooks": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/@datepicker-react/hooks/-/hooks-2.8.0.tgz", @@ -1546,6 +1560,15 @@ "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.1.tgz", "integrity": "sha512-m0G6wlnhm/AX0H12IOWtK8gASEMffnX08RtKkCgTdHb9JpHKGloI7icFfLg9ZmQeavcvR0PKmzxClyuFPSjKWw==" }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-6.4.2.tgz", + "integrity": "sha512-m5cPn3e2+FDCOgi1mz0RexTUvvQibBebOUlUlW0+YrMjDTPkiJ6VTKukA1GRsvRw+12KyJndNjj0O4AgTxm2Pg==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", @@ -1814,6 +1837,24 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/d3-scale": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.4.tgz", + "integrity": "sha512-eq1ZeTj0yr72L8MQk6N6heP603ubnywSDRfNpi5enouR112HzGLS6RIvExCzZTraFF4HdzNpJMwA/zGiMoHUUw==", + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-dsoJGEIShosKVRBZB0Vo3C8nqSDqVGujJU6tPznsBJxNJNwMF8utmS83nvCBKQYPpjCzaaHcrf66iTRpZosLPw==" + }, + "node_modules/@types/d3-time": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.0.tgz", + "integrity": "sha512-sZLCdHvBUcNby1cB6Fd3ZBrABbjz3v1Vm90nysCQ6Vt7vd6e/h9Lt7SiJUoEX0l4Dzc7P5llKyhqSi1ycSf1Hg==" + }, "node_modules/@types/debug": { "version": "4.1.8", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", @@ -3033,6 +3074,14 @@ "node": ">= 0.6" } }, + "node_modules/cose-base": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", + "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "dependencies": { + "layout-base": "^1.0.0" + } + }, "node_modules/cosmiconfig": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", @@ -3150,6 +3199,467 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, + "node_modules/cytoscape": { + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.26.0.tgz", + "integrity": "sha512-IV+crL+KBcrCnVVUCZW+zRRRFUZQcrtdOPXki+o4CFUWLdAEYvuZLcBSJC9EBK++suamERKzeY7roq2hdovV3w==", + "dependencies": { + "heap": "^0.2.6", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "dependencies": { + "cose-base": "^1.0.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "dependencies": { + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==" + }, + "node_modules/d3": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", + "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dagre-d3-es": { + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz", + "integrity": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==", + "dependencies": { + "d3": "^7.8.2", + "lodash-es": "^4.17.21" + } + }, "node_modules/data-uri-to-buffer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", @@ -3170,6 +3680,11 @@ "url": "https://opencollective.com/date-fns" } }, + "node_modules/dayjs": { + "version": "1.11.9", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.9.tgz", + "integrity": "sha512-QvzAURSbQ0pKdIye2txOzNaHmxtUBXerpY0FJsFXUMKbIZeFm5ht1LS/jFsrncjnmtv8HsG0W2g6c0zUjZWmpA==" + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -3297,6 +3812,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delaunator": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.0.tgz", + "integrity": "sha512-AyLvtyJdbv/U1GkiS6gUUzclRoAY4Gs75qkMygJJhU75LW4DNuSF2RMzpxs9jw9Oz1BobHjTdkG3zdP55VxAqw==", + "dependencies": { + "robust-predicates": "^3.0.0" + } + }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -3400,6 +3923,11 @@ "url": "https://github.com/fb55/domhandler?sponsor=1" } }, + "node_modules/dompurify": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.5.tgz", + "integrity": "sha512-F9e6wPGtY+8KNMRAVfxeCOHU0/NPWMSENNq4pQctuXRqqdEPW7q3CrLbR5Nse044WwacyjHGOMlvNsBe1y6z9A==" + }, "node_modules/domutils": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", @@ -3431,6 +3959,11 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.496.tgz", "integrity": "sha512-qeXC3Zbykq44RCrBa4kr8v/dWzYJA8rAwpyh9Qd+NKWoJfjG5vvJqy9XOJ9H4P/lqulZBCgUWAYi+FeK5AuJ8g==" }, + "node_modules/elkjs": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.8.2.tgz", + "integrity": "sha512-L6uRgvZTH+4OF5NE/MBbzQx/WYpru1xCBE9respNj6qznEewGUIfhzmm7horWWxbNO2M0WckQypGctR8lH79xQ==" + }, "node_modules/emmet": { "version": "2.4.6", "resolved": "https://registry.npmjs.org/emmet/-/emmet-2.4.6.tgz", @@ -4044,6 +4577,139 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hast-util-from-dom": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-4.2.0.tgz", + "integrity": "sha512-t1RJW/OpJbCAJQeKi3Qrj1cAOLA0+av/iPFori112+0X7R3wng+jxLA+kXec8K4szqPRGI8vPxbbpEYvvpwaeQ==", + "dependencies": { + "hastscript": "^7.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-dom/node_modules/hast-util-parse-selector": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-3.1.1.tgz", + "integrity": "sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==", + "dependencies": { + "@types/hast": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-dom/node_modules/hastscript": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-7.2.0.tgz", + "integrity": "sha512-TtYPq24IldU8iKoJQqvZOuhi5CyCQRAbvDOX0x1eW6rsHSxa/1i2CCiptNTotGHJ3VoHRGmqiv6/D3q113ikkw==", + "dependencies": { + "@types/hast": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^3.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-1.0.2.tgz", + "integrity": "sha512-LhrTA2gfCbLOGJq2u/asp4kwuG0y6NhWTXiPKP+n0qNukKy7hc10whqqCFfyvIA1Q5U5d0sp9HhNim9gglEH4A==", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-from-parse5": "^7.0.0", + "parse5": "^7.0.0", + "vfile": "^5.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html-isomorphic": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hast-util-from-html-isomorphic/-/hast-util-from-html-isomorphic-1.0.0.tgz", + "integrity": "sha512-Yu480AKeOEN/+l5LA674a+7BmIvtDj24GvOt7MtQWuhzUwlaaRWdEPXAh3Qm5vhuthpAipFb2vTetKXWOjmTvw==", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-from-dom": "^4.0.0", + "hast-util-from-html": "^1.0.0", + "unist-util-remove-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html-isomorphic/node_modules/@types/unist": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.8.tgz", + "integrity": "sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==" + }, + "node_modules/hast-util-from-html-isomorphic/node_modules/unist-util-remove-position": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.2.tgz", + "integrity": "sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html-isomorphic/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-from-html/node_modules/@types/unist": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.8.tgz", + "integrity": "sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==" + }, + "node_modules/hast-util-from-html/node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/hast-util-from-html/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-from-parse5": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-7.1.2.tgz", @@ -4095,6 +4761,24 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-is-element": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.3.tgz", + "integrity": "sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element/node_modules/@types/unist": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.8.tgz", + "integrity": "sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==" + }, "node_modules/hast-util-parse-selector": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", @@ -4231,6 +4915,26 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-text": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-3.1.2.tgz", + "integrity": "sha512-tcllLfp23dJJ+ju5wCCZHVpzsQQ43+moJbqVX3jNWPB7z/KFC4FyZD6R7y94cHL6MQ33YtMZL8Z0aIXXI4XFTw==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "hast-util-is-element": "^2.0.0", + "unist-util-find-after": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-text/node_modules/@types/unist": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.8.tgz", + "integrity": "sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==" + }, "node_modules/hast-util-whitespace": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", @@ -4272,6 +4976,11 @@ "he": "bin/he" } }, + "node_modules/heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==" + }, "node_modules/highlight-words-core": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/highlight-words-core/-/highlight-words-core-1.2.2.tgz", @@ -4353,6 +5062,17 @@ "node": ">=12.20.0" } }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -4420,6 +5140,14 @@ "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, "node_modules/is-alphabetical": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", @@ -4795,6 +5523,11 @@ "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-2.3.1.tgz", "integrity": "sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==" }, + "node_modules/khroma": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.0.0.tgz", + "integrity": "sha512-2J8rDNlQWbtiNYThZRvmMv5yt44ZakX+Tz5ZIp/mN1pt4snn+m030Va5Z4v8xA0cQFDXBwO/8i42xL4QPsVk3g==" + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -4811,6 +5544,11 @@ "node": ">=6" } }, + "node_modules/layout-base": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", + "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==" + }, "node_modules/lilconfig": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", @@ -6214,6 +6952,49 @@ "node": ">= 8" } }, + "node_modules/mermaid": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-10.4.0.tgz", + "integrity": "sha512-4QCQLp79lvz7UZxow5HUX7uWTPJOaQBVExduo91tliXC7v78i6kssZOPHxLL+Xs30KU72cpPn3g3imw/xm/gaw==", + "dependencies": { + "@braintree/sanitize-url": "^6.0.1", + "@types/d3-scale": "^4.0.3", + "@types/d3-scale-chromatic": "^3.0.0", + "cytoscape": "^3.23.0", + "cytoscape-cose-bilkent": "^4.1.0", + "cytoscape-fcose": "^2.1.0", + "d3": "^7.4.0", + "d3-sankey": "^0.12.3", + "dagre-d3-es": "7.0.10", + "dayjs": "^1.11.7", + "dompurify": "^3.0.5", + "elkjs": "^0.8.2", + "khroma": "^2.0.0", + "lodash-es": "^4.17.21", + "mdast-util-from-markdown": "^1.3.0", + "non-layered-tidy-tree-layout": "^2.0.2", + "stylis": "^4.1.3", + "ts-dedent": "^2.2.0", + "uuid": "^9.0.0", + "web-worker": "^1.2.0" + } + }, + "node_modules/mermaid-isomorphic": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mermaid-isomorphic/-/mermaid-isomorphic-2.1.0.tgz", + "integrity": "sha512-5ne8lMF4HLBznRSE7hGHF7G5rBBZ4qnGvihdgQHvO12dZijxWRcPs3c8hh6zJCECZO6Q9vCOj1TYUWEX9znVxw==", + "dependencies": { + "@fortawesome/fontawesome-free": "^6.0.0", + "mermaid": "^10.0.0", + "playwright-core": "^1.0.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + } + }, "node_modules/micromark": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", @@ -7057,6 +7838,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/mini-svg-data-uri": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz", + "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==", + "bin": { + "mini-svg-data-uri": "cli.js" + } + }, "node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", @@ -7199,6 +7988,11 @@ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" }, + "node_modules/non-layered-tidy-tree-layout": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/non-layered-tidy-tree-layout/-/non-layered-tidy-tree-layout-2.0.2.tgz", + "integrity": "sha512-gkXMxRzUH+PB0ax9dUN0yYF0S25BqeAYqhgMaLUFmpXLEk7Fcu8f4emJuOAY0V8kjDICxROIKsTAKsV/v355xw==" + }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -7661,6 +8455,32 @@ "node": ">=8" } }, + "node_modules/playwright": { + "version": "1.37.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.37.1.tgz", + "integrity": "sha512-bgUXRrQKhT48zHdxDYQTpf//0xDfDd5hLeEhjuSw8rXEGoT9YeElpfvs/izonTNY21IQZ7d3s22jLxYaAnubbQ==", + "hasInstallScript": true, + "dependencies": { + "playwright-core": "1.37.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/playwright-core": { + "version": "1.37.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.37.1.tgz", + "integrity": "sha512-17EuQxlSIYCmEMwzMqusJ2ztDgJePjrbttaefgdsiqeLWidjYz9BxXaTaZWxH1J95SHGk6tjE+dwgWILJoUZfA==", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/postcss": { "version": "8.4.28", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.28.tgz", @@ -8253,6 +9073,25 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/rehype-mermaidjs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rehype-mermaidjs/-/rehype-mermaidjs-1.0.1.tgz", + "integrity": "sha512-bXuvGxzljFS1KQphX8FKELLxLtHrHi0tI7G9s0a9IpydLF7miYH9/HDXr0RAgWtUxuERSUKtpD5zSur22aCvOA==", + "dependencies": { + "@types/hast": "^2.0.0", + "hast-util-from-html-isomorphic": "^1.0.0", + "hast-util-to-text": "^3.0.0", + "mermaid-isomorphic": "^2.0.0", + "mini-svg-data-uri": "^1.0.0", + "space-separated-tokens": "^2.0.0", + "unified": "^10.0.0", + "unist-util-visit-parents": "^5.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + } + }, "node_modules/rehype-parse": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.0.tgz", @@ -9203,6 +10042,11 @@ "node": "*" } }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, "node_modules/rollup": { "version": "3.28.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.28.0.tgz", @@ -9336,6 +10180,11 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, "node_modules/s.color": { "version": "0.0.15", "resolved": "https://registry.npmjs.org/s.color/-/s.color-0.0.15.tgz", @@ -9371,6 +10220,11 @@ } ] }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, "node_modules/sass": { "version": "1.66.1", "resolved": "https://registry.npmjs.org/sass/-/sass-1.66.1.tgz", @@ -9680,6 +10534,11 @@ "inline-style-parser": "0.1.1" } }, + "node_modules/stylis": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.0.tgz", + "integrity": "sha512-E87pIogpwUsUwXw7dNyU4QDjdgVMy52m+XEOPEKUn161cCzWjjhPSQhByfd1CcNvrOLnXQ6OnnZDwnJrz/Z4YQ==" + }, "node_modules/sucrase": { "version": "3.34.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", @@ -10156,6 +11015,24 @@ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.7.tgz", "integrity": "sha512-cputDpIbFgLUaGQn6Vqg3/YsJwxUwHLO13v3i5ouxT4lat0khip9AEWxtERujXV9wxIB1EyF97BSJFt6vpdI8g==" }, + "node_modules/unist-util-find-after": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-4.0.1.tgz", + "integrity": "sha512-QO/PuPMm2ERxC6vFXEPtmAutOopy5PknD+Oq64gGwxKtk4xwo9Z97t9Av1obPmGU0IyTa6EKYUfTrK2QJS3Ozw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-find-after/node_modules/@types/unist": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.8.tgz", + "integrity": "sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==" + }, "node_modules/unist-util-generated": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz", @@ -10238,6 +11115,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-4.0.0.tgz", "integrity": "sha512-b4gokeGId57UVRX/eVKej5gXqGlc9+trkORhFJpu9raqZkZhU0zm8Doi05+HaiBsMEIJowL+2WtQ5ItjsngPXg==", + "dev": true, "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0", @@ -10265,6 +11143,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, "dependencies": { "@types/unist": "^3.0.0" }, @@ -10277,6 +11156,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, "dependencies": { "@types/unist": "^3.0.0", "unist-util-is": "^6.0.0" @@ -10321,6 +11201,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==", + "dev": true, "dependencies": { "@types/unist": "^3.0.0" }, @@ -10456,6 +11337,14 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, + "node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/uvu": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", @@ -11090,6 +11979,11 @@ "node": ">= 8" } }, + "node_modules/web-worker": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz", + "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==" + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", From 14f06d3643746376bf0c485dc41c9702708d6520 Mon Sep 17 00:00:00 2001 From: Bohdan Zavhorodskyi Date: Sat, 2 Sep 2023 19:10:13 +0300 Subject: [PATCH 13/17] fix: fixes for the TOC component --- package-lock.json | 7 + package.json | 5 +- .../RightSidebar/TableOfContents.tsx | 153 +++++++++--------- 3 files changed, 89 insertions(+), 76 deletions(-) diff --git a/package-lock.json b/package-lock.json index ff6ce5c59..de09d596e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -50,6 +50,7 @@ "unist-util-visit-children": "^3.0.0" }, "devDependencies": { + "@types/html-escaper": "^3.0.0", "@types/mdast": "^4.0.0", "@types/node": "^20.5.8", "@types/react": "^18.2.21", @@ -1903,6 +1904,12 @@ "hoist-non-react-statics": "^3.3.0" } }, + "node_modules/@types/html-escaper": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/html-escaper/-/html-escaper-3.0.0.tgz", + "integrity": "sha512-OcJcvP3Yk8mjYwf/IdXZtTE1tb/u0WF0qa29ER07ZHCYUBZXSN29Z1mBS+/96+kNMGTFUAbSz9X+pHmHpZrTCw==", + "dev": true + }, "node_modules/@types/json5": { "version": "0.0.30", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.30.tgz", diff --git a/package.json b/package.json index c8eecc092..105859e92 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "nanostores": "^0.9.3", "node-html-parser": "^6.1.6", "parse-numeric-range": "^1.3.0", + "playwright": "^1.37.1", "preact": "^10.17.1", "react": "^18.2.0", "react-dom": "^18.2.0", @@ -49,10 +50,10 @@ "unified": "~10.1.2", "unist-util-remove": "^4.0.0", "unist-util-visit": "^5.0.0", - "unist-util-visit-children": "^3.0.0", - "playwright": "^1.37.1" + "unist-util-visit-children": "^3.0.0" }, "devDependencies": { + "@types/html-escaper": "^3.0.0", "@types/mdast": "^4.0.0", "@types/node": "^20.5.8", "@types/react": "^18.2.21", diff --git a/src/components/RightSidebar/TableOfContents.tsx b/src/components/RightSidebar/TableOfContents.tsx index 962d64ec2..94916dd8c 100644 --- a/src/components/RightSidebar/TableOfContents.tsx +++ b/src/components/RightSidebar/TableOfContents.tsx @@ -1,93 +1,98 @@ -import type { MarkdownHeading } from 'astro'; -import type { FunctionalComponent } from 'preact'; -import { unescape } from 'html-escaper'; -import { useState, useEffect, useRef } from 'preact/hooks'; +import type { MarkdownHeading } from "astro"; +import type { FunctionalComponent } from "preact"; +import { unescape } from "html-escaper"; +import { useState, useEffect, useRef } from "preact/hooks"; type ItemOffsets = { - id: string; - topOffset: number; + id: string; + topOffset: number; }; const TableOfContents: FunctionalComponent<{ headings: MarkdownHeading[] }> = ({ - headings = [], + headings = [], }) => { - const toc = useRef(); - const onThisPageID = 'on-this-page-heading'; - const itemOffsets = useRef([]); - const [currentID, setCurrentID] = useState('overview'); - useEffect(() => { - const getItemOffsets = () => { - const titles = document.querySelectorAll('article :is(h1, h2, h3, h4)'); - itemOffsets.current = Array.from(titles).map((title) => ({ - id: title.id, - topOffset: title.getBoundingClientRect().top + window.scrollY, - })); - }; + const toc = useRef(null); + const onThisPageID = "on-this-page-heading"; + const itemOffsets = useRef([]); + const [currentID, setCurrentID] = useState("overview"); + useEffect(() => { + const getItemOffsets = () => { + const titles = document.querySelectorAll("article :is(h1, h2, h3, h4)"); + itemOffsets.current = Array.from(titles).map((title) => ({ + id: title.id, + topOffset: title.getBoundingClientRect().top + window.scrollY, + })); + }; - getItemOffsets(); - window.addEventListener('resize', getItemOffsets); + getItemOffsets(); + window.addEventListener("resize", getItemOffsets); - return () => { - window.removeEventListener('resize', getItemOffsets); - }; - }, []); + return () => { + window.removeEventListener("resize", getItemOffsets); + }; + }, []); - useEffect(() => { - if (!toc.current) return; + useEffect(() => { + if (!toc.current) return; - const setCurrent: IntersectionObserverCallback = (entries) => { - for (const entry of entries) { - if (entry.isIntersecting) { - const { id } = entry.target; - if (id === onThisPageID) continue; - setCurrentID(entry.target.id); - break; - } - } - }; + const setCurrent: IntersectionObserverCallback = (entries) => { + for (const entry of entries) { + if (entry.isIntersecting) { + const { id } = entry.target; + if (id === onThisPageID) continue; + setCurrentID(entry.target.id); + break; + } + } + }; - const observerOptions: IntersectionObserverInit = { - // Negative top margin accounts for `scroll-margin`. - // Negative bottom margin means heading needs to be towards top of viewport to trigger intersection. - rootMargin: '-100px 0% -66%', - threshold: 1, - }; + const observerOptions: IntersectionObserverInit = { + // Negative top margin accounts for `scroll-margin`. + // Negative bottom margin means heading needs to be towards top of viewport to trigger intersection. + rootMargin: "-100px 0% -66%", + threshold: 1, + }; - const headingsObserver = new IntersectionObserver(setCurrent, observerOptions); + const headingsObserver = new IntersectionObserver( + setCurrent, + observerOptions + ); - // Observe all the headings in the main page content. - document.querySelectorAll('article :is(h1,h2,h3)').forEach((h) => headingsObserver.observe(h)); + // Observe all the headings in the main page content. + document + .querySelectorAll("article :is(h1,h2,h3)") + .forEach((h) => headingsObserver.observe(h)); - // Stop observing when the component is unmounted. - return () => headingsObserver.disconnect(); - }, [toc.current]); + // Stop observing when the component is unmounted. + return () => headingsObserver.disconnect(); + }, [toc.current]); - const onLinkClick = (e) => { - setCurrentID(e.target.getAttribute('href').replace('#', '')); - }; + const onLinkClick = (e) => { + setCurrentID(e.target.getAttribute("href").replace("#", "")); + }; - return ( - <> -

- On this page -

- - - ); + return ( + <> +

+ On this page +

+ + + ); }; export default TableOfContents; From 55a1dd81d359bd4dd8478ba454b04c7e2b2dc46d Mon Sep 17 00:00:00 2001 From: Bohdan Zavhorodskyi Date: Sat, 2 Sep 2023 19:33:51 +0300 Subject: [PATCH 14/17] feat: updated TOC component --- .../RightSidebar/TableOfContents.tsx | 25 ++++++++++++++++--- src/components/atlas/BuildTabs.tsx | 11 ++++---- src/store/tabStore.ts | 11 +++++++- 3 files changed, 37 insertions(+), 10 deletions(-) diff --git a/src/components/RightSidebar/TableOfContents.tsx b/src/components/RightSidebar/TableOfContents.tsx index 94916dd8c..2ca5c5988 100644 --- a/src/components/RightSidebar/TableOfContents.tsx +++ b/src/components/RightSidebar/TableOfContents.tsx @@ -1,16 +1,21 @@ +/** @jsxImportSource react */ import type { MarkdownHeading } from "astro"; -import type { FunctionalComponent } from "preact"; +import type { FC } from "react"; import { unescape } from "html-escaper"; -import { useState, useEffect, useRef } from "preact/hooks"; +import { useState, useEffect, useRef } from "react"; +import { useStore } from "@nanostores/react"; +import { $tabs } from "@store/tabStore"; type ItemOffsets = { id: string; topOffset: number; }; -const TableOfContents: FunctionalComponent<{ headings: MarkdownHeading[] }> = ({ +const TableOfContents: FC<{ headings: MarkdownHeading[] }> = ({ headings = [], }) => { + const [headingsLocal, setHeadingsLocal] = useState(headings); + const tabs = useStore($tabs); const toc = useRef(null); const onThisPageID = "on-this-page-heading"; const itemOffsets = useRef([]); @@ -67,6 +72,18 @@ const TableOfContents: FunctionalComponent<{ headings: MarkdownHeading[] }> = ({ return () => headingsObserver.disconnect(); }, [toc.current]); + useEffect(() => { + if (tabs.items.length) { + // logic for removing tabs labels from TOC + const filteredHeadings = headings.filter( + (heading) => + heading.depth === 3 && + !tabs.items.find((tab) => tab.label === heading.text) + ); + setHeadingsLocal(filteredHeadings); + } + }, [tabs]); + const onLinkClick = (e) => { setCurrentID(e.target.getAttribute("href").replace("#", "")); }; @@ -77,7 +94,7 @@ const TableOfContents: FunctionalComponent<{ headings: MarkdownHeading[] }> = ({ On this page
    - {headings + {headingsLocal .filter(({ depth }) => depth > 1 && depth < 4) .map((heading) => (
  • { - if ( - currentTabs.isTabsHaveSync && - tabs.currentSync - ) { + if (currentTabs.isTabsHaveSync && tabs.currentSync) { const activeTabId = currentTabs.items.find( (tab) => tab.sync === tabs.currentSync )?.id; @@ -67,6 +64,10 @@ const BuildTabs: FC<{ } }, [tabs.currentSync]); + useEffect(() => { + updateTabItems(items); + }, []); + return ( <> ({ + items: [], currentSync: "", }); export const changeSyncValue = (sync: string) => { - $tabs.set({ currentSync: sync }); + $tabs.set({ ...$tabs.get(), currentSync: sync }); +}; + +export const updateTabItems = (newItems: TabItem[]) => { + const tabsData = $tabs.get(); + $tabs.set({ ...tabsData, items: [...tabsData.items, ...newItems] }); }; From 4ac71bdbf6cf21e807a344eaad156b629c3a2c14 Mon Sep 17 00:00:00 2001 From: Bohdan Zavhorodskyi Date: Sat, 2 Sep 2023 20:07:41 +0300 Subject: [PATCH 15/17] feat: updated lock file --- package-lock.json | 556 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 536 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3834cc5e3..f4dcf5be2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2941,11 +2941,6 @@ "node": ">=8" } }, - "node_modules/classnames": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", - "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" - }, "node_modules/cli-boxes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", @@ -3020,6 +3015,14 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, "node_modules/common-ancestor-path": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/common-ancestor-path/-/common-ancestor-path-1.0.1.tgz", @@ -3137,6 +3140,467 @@ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, + "node_modules/cytoscape": { + "version": "3.26.0", + "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.26.0.tgz", + "integrity": "sha512-IV+crL+KBcrCnVVUCZW+zRRRFUZQcrtdOPXki+o4CFUWLdAEYvuZLcBSJC9EBK++suamERKzeY7roq2hdovV3w==", + "dependencies": { + "heap": "^0.2.6", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/cytoscape-cose-bilkent": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", + "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "dependencies": { + "cose-base": "^1.0.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", + "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "dependencies": { + "cose-base": "^2.2.0" + }, + "peerDependencies": { + "cytoscape": "^3.2.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/cose-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", + "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", + "dependencies": { + "layout-base": "^2.0.0" + } + }, + "node_modules/cytoscape-fcose/node_modules/layout-base": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", + "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==" + }, + "node_modules/d3": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.8.5.tgz", + "integrity": "sha512-JgoahDG51ncUfJu6wX/1vWQEqOflgXyl4MaHqlcSruTez7yhaRKR9i8VjjcQGeS2en/jnFivXuaIMnseMMt0XA==", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz", + "integrity": "sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/dagre-d3-es": { + "version": "7.0.10", + "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.10.tgz", + "integrity": "sha512-qTCQmEhcynucuaZgY5/+ti3X/rnszKZhEQH/ZdWdtP1tA/y3VoHJzcVrO9pjjJCNpigfscAtoUB5ONcd2wNn0A==", + "dependencies": { + "d3": "^7.8.2", + "lodash-es": "^4.17.21" + } + }, "node_modules/date-fns": { "version": "2.28.0", "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.28.0.tgz", @@ -4197,6 +4661,44 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-is-element": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-2.1.3.tgz", + "integrity": "sha512-O1bKah6mhgEq2WtVMk+Ta5K7pPMqsBBlmzysLdcwKVrqzZQ0CHqUPiIVspNhAG1rvxpvJjtGee17XfauZYKqVA==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-is-element/node_modules/@types/unist": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.8.tgz", + "integrity": "sha512-d0XxK3YTObnWVp6rZuev3c49+j4Lo8g4L1ZRm9z5L0xpoZycUPshHgczK5gsUMaZOstjVYYi09p5gYvUtfChYw==" + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector/node_modules/@types/hast": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.0.tgz", + "integrity": "sha512-SoytUJRuf68HXYqcXicQIhCrLQjqeYU2anikr4G3p3Iz+OZO5QDQpDj++gv+RenHsnUBwNZ2dumBArF8VLSk2Q==", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/hast-util-raw": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-7.2.3.tgz", @@ -4342,6 +4844,30 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hastscript": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript/node_modules/@types/hast": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.0.tgz", + "integrity": "sha512-SoytUJRuf68HXYqcXicQIhCrLQjqeYU2anikr4G3p3Iz+OZO5QDQpDj++gv+RenHsnUBwNZ2dumBArF8VLSk2Q==", + "dependencies": { + "@types/unist": "*" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -7786,21 +8312,6 @@ "node": ">=8" } }, - "node_modules/playwright": { - "version": "1.37.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.37.1.tgz", - "integrity": "sha512-bgUXRrQKhT48zHdxDYQTpf//0xDfDd5hLeEhjuSw8rXEGoT9YeElpfvs/izonTNY21IQZ7d3s22jLxYaAnubbQ==", - "hasInstallScript": true, - "dependencies": { - "playwright-core": "1.37.1" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=16" - } - }, "node_modules/playwright-core": { "version": "1.37.1", "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.37.1.tgz", @@ -11196,6 +11707,11 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/web-worker": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz", + "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA==" + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", From c89e2681c752eaa1556a16c22bd47adf28d21510 Mon Sep 17 00:00:00 2001 From: Bohdan Zavhorodskyi Date: Sat, 2 Sep 2023 20:09:19 +0300 Subject: [PATCH 16/17] fix: updated packages --- package.json | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/package.json b/package.json index 23ff45925..cb9d97ed4 100644 --- a/package.json +++ b/package.json @@ -52,9 +52,6 @@ "@types/react": "^18.2.21", "@types/react-dom": "^18.2.7", "typescript": "^5.2.2", - "unified": "~10.1.2", - "unist-util-remove": "^4.0.0", - "unist-util-visit": "^5.0.0", - "unist-util-visit-children": "^3.0.0" + "unified": "~10.1.2" } } From 01cb69099b58e9b9405848c5f8be122e7e0f617a Mon Sep 17 00:00:00 2001 From: Bohdan Zavhorodskyi Date: Sat, 2 Sep 2023 20:09:42 +0300 Subject: [PATCH 17/17] fix: updated packages --- package.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index cb9d97ed4..b92df7f2d 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,6 @@ "@types/node": "^20.5.8", "@types/react": "^18.2.21", "@types/react-dom": "^18.2.7", - "typescript": "^5.2.2", - "unified": "~10.1.2" + "typescript": "^5.2.2" } }