From 02e64c96b1649eacc2b724fb1accf72afcda882a Mon Sep 17 00:00:00 2001 From: Juan Carlos Farah Date: Wed, 11 Oct 2023 17:22:55 +0200 Subject: [PATCH] feat: improve changing layout --- index.css | 3 + index.html | 1 + package.json | 1 - postcss.config.js | 6 - src/App.tsx | 75 +++++----- src/Filter.tsx | 51 +++++++ src/Layout.tsx | 74 +++++++++ src/Select.tsx | 138 ++++++----------- src/View.tsx | 371 ++++++++++++++++++++++------------------------ src/constants.tsx | 1 + yarn.lock | 330 +++-------------------------------------- 11 files changed, 408 insertions(+), 643 deletions(-) create mode 100644 index.css delete mode 100644 postcss.config.js create mode 100644 src/Filter.tsx create mode 100644 src/Layout.tsx create mode 100644 src/constants.tsx diff --git a/index.css b/index.css new file mode 100644 index 0000000..699a279 --- /dev/null +++ b/index.css @@ -0,0 +1,3 @@ +body { + margin: 0; +} diff --git a/index.html b/index.html index c205513..186059b 100644 --- a/index.html +++ b/index.html @@ -3,6 +3,7 @@ + G-interface diff --git a/package.json b/package.json index e5d0a73..565bf59 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,6 @@ "autoprefixer": "^10.4.14", "postcss": "^8.4.24", "prettier": "^3.0.3", - "tailwindcss": "^3.3.2", "typescript": "^5.1.3", "vite": "^4.3.9", "vite-plugin-checker": "^0.6.0", diff --git a/postcss.config.js b/postcss.config.js deleted file mode 100644 index 2e7af2b..0000000 --- a/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -export default { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/src/App.tsx b/src/App.tsx index a54a118..60aa41a 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -18,7 +18,6 @@ const steps = ['Select Data', 'Visualize', 'Export']; export default function HorizontalLinearStepper() { const [activeStep, setActiveStep] = React.useState(0); const [skipped, setSkipped] = React.useState(new Set()); - const [layout, setLayout] = React.useState('cola'); const [graph, setGraph] = React.useState(privacyGraph); const isStepOptional = (step: number) => { @@ -68,15 +67,13 @@ export default function HorizontalLinearStepper() { case 0: return ( + Cola + Cose + Fcose + Circle + Concentric + Avsdf + Cise + Grid + Random + + + + + + ); +} diff --git a/src/Select.tsx b/src/Select.tsx index 63afd5b..deddd9b 100644 --- a/src/Select.tsx +++ b/src/Select.tsx @@ -1,25 +1,26 @@ import * as React from 'react'; import { useEffect } from 'react'; -import CheckBoxSetting from './components/CheckBoxSetting'; +import { + FormControl, + FormControlLabel, + FormLabel, + Radio, + RadioGroup, +} from '@mui/material'; +import Box from '@mui/material/Box'; + import ExplanationDataImporter from './components/ExplanationDataImporter'; -import SettingsWrapper from './components/SettingsWrapper'; import genomicsGraph from './data/genomicsGraph'; import privacyGraph from './data/privacyGraph'; import { GraphData } from './data/types'; type Props = { - layout: string; graph: GraphData; - handleChangeLayout: (layout: string) => void; handleSetGraph: (graph: GraphData) => void; }; -export default function Select({ - layout, - handleChangeLayout, - handleSetGraph, -}: Props) { +export default function Select({ handleSetGraph }: Props) { const [useCase, setUseCase] = React.useState('privacy'); const handleUseCase = (event: React.ChangeEvent) => { @@ -40,94 +41,41 @@ export default function Select({ } }, [useCase]); - const handleLayout = (event: React.ChangeEvent) => { - // @ts-ignore - const value = event.target.value; - handleChangeLayout(value); - }; - return (
-
- -
- -
-
- - -
- - -
- - -
-
- {useCase === 'custom' ? ( - - ) : ( - <> - )} -
-
-
- -
-
- - -
- - -
- - -
-
-
-
-
-
+ + + Use Case + + } + label="Privacy" + /> + } + label="Genomics" + /> + } + label="Custom" + /> + + + {useCase === 'custom' ? ( + + ) : ( + <> + )} +
); } diff --git a/src/View.tsx b/src/View.tsx index 331e62f..2a04b80 100644 --- a/src/View.tsx +++ b/src/View.tsx @@ -1,17 +1,16 @@ -import { ChangeEvent, useEffect, useState } from 'react'; +import React, { useEffect, useState } from 'react'; import CytoscapeComponent from 'react-cytoscapejs'; -import { FilterAlt as FilterIcon } from '@mui/icons-material'; import { + Checkbox, Chip, - FormControl, - IconButton, - InputAdornment, - InputLabel, - OutlinedInput, + FormControlLabel, + FormGroup, + Grid, } from '@mui/material'; +import Box from '@mui/material/Box'; -import Cytoscape, { Core, ElementDefinition, NodeSingular } from 'cytoscape'; +import Cytoscape, { Core, NodeSingular } from 'cytoscape'; // @ts-ignore import avsdf from 'cytoscape-avsdf'; // @ts-ignore @@ -28,8 +27,9 @@ import _ from 'lodash'; import randomColor from 'randomcolor'; import rgbHex from 'rgb-hex'; -import CheckBoxSetting from './components/CheckBoxSetting'; -import SettingsWrapper from './components/SettingsWrapper'; +import Filter from './Filter'; +import Layout from './Layout'; +import { DEFAULT_LAYOUT } from './constants'; import { GraphData } from './data/types'; Cytoscape.use(fcose); @@ -69,16 +69,15 @@ const SHOW_EDGES_KEY = 'showEdges'; const SHOW_LABELS = 'showLabels'; type Props = { - layout: string; graph: GraphData; }; -const View = ({ layout, graph }: Props) => { +const View = ({ graph }: Props) => { const [settings, setSettings] = useState({ [SHOW_NODES_KEY]: true, [SHOW_PARENT_NODES_KEY]: true, [SHOW_EDGES_KEY]: true, - [SHOW_LABELS]: false, + [SHOW_LABELS]: true, }); const scores = graph.nodes.map((node) => node.data.score); @@ -94,16 +93,8 @@ const View = ({ layout, graph }: Props) => { const [maxScore, setMaxScore] = useState(Math.max(...scores)); const [minWeight, setMinWeight] = useState(Math.min(...weights)); const [maxWeight, setMaxWeight] = useState(Math.max(...weights)); - const [query, setQuery] = useState(); const [filters, setFilters] = useState>(new Set()); - // const layout = { name: 'cose' }; - // const layout = { name: 'circle' }; - // const layout = { name: 'concentric' }; - // const layout = { name: 'grid' }; - // const layout = { name: 'avsdf' }; - // const layout = { name: 'cise' }; - const stylesheet = [ { selector: 'node[score][name]', @@ -168,24 +159,13 @@ const View = ({ layout, graph }: Props) => { }, ]; + const areNodesHidden = () => + !settings[SHOW_PARENT_NODES_KEY] && !settings[SHOW_NODES_KEY]; + const handleCheckbox = (key: keyof typeof settings) => { setSettings((p) => ({ ...p, [key]: !p[key] })); }; - const handleSearch = () => { - if (query) { - const cleanQuery = query.trim().toLowerCase(); - const newSet = new Set(filters); - newSet.add(cleanQuery); - setFilters(newSet); - setQuery(''); - } - }; - - const handleChangeQuery = (event: ChangeEvent) => { - setQuery(event.target.value); - }; - const handleRemoveFilter = (v: string) => { const newSet = new Set(filters); newSet.delete(v); @@ -195,139 +175,137 @@ const View = ({ layout, graph }: Props) => { useEffect(() => { // anything in here is fired on component mount. if (cyHandle) { - // edges - if (settings[SHOW_EDGES_KEY]) { - cyHandle - .style() - .selector('edge') - .style({ - opacity: 0.5, - }) - .update(); - } else { - cyHandle - .style() - .selector('edge') - .style({ - opacity: 0, - }) - .update(); - } - - // parent nodes - if (settings[SHOW_PARENT_NODES_KEY]) { - // without labels - if (!settings[SHOW_LABELS]) { + // have to catch this error as it explodes on first load + try { + // edges + if (settings[SHOW_EDGES_KEY]) { cyHandle .style() - .selector('node:parent[color]') + .selector('edge') .style({ - 'text-outline-opacity': 0, - 'text-opacity': 0, - 'background-opacity': 1, + opacity: 0.5, }) .update(); } else { - // with labels cyHandle .style() - .selector('node:parent[color]') + .selector('edge') .style({ - 'background-opacity': 0.75, - 'border-width': 1, - 'text-outline-opacity': 1, - 'text-opacity': 1, + opacity: 0, }) .update(); } - } else { - cyHandle - .style() - .selector('node:parent[color]') - .style({ - 'background-opacity': 0, - 'border-width': 0, - 'text-outline-opacity': 0, - 'text-opacity': 0, - }) - .update(); - } - // note: assuming childless nodes as children - // show children nodes - if (settings[SHOW_NODES_KEY]) { - // without labels - if (!settings[SHOW_LABELS]) { + // parent nodes + if (settings[SHOW_PARENT_NODES_KEY]) { + // without labels + if (!settings[SHOW_LABELS]) { + cyHandle + .style() + .selector('node:parent[color]') + .style({ + 'text-outline-opacity': 0, + 'text-opacity': 0, + 'background-opacity': 1, + }) + .update(); + } else { + // with labels + cyHandle + .style() + .selector('node:parent[color]') + .style({ + 'background-opacity': 0.75, + 'border-width': 1, + 'text-outline-opacity': 1, + 'text-opacity': 1, + }) + .update(); + } + } else { cyHandle .style() - .selector('node:childless') + .selector('node:parent[color]') .style({ + 'background-opacity': 0, + 'border-width': 0, 'text-outline-opacity': 0, 'text-opacity': 0, - 'background-opacity': 1, }) .update(); + } + + // note: assuming childless nodes as children + // show children nodes + if (settings[SHOW_NODES_KEY]) { + // without labels + if (!settings[SHOW_LABELS]) { + cyHandle + .style() + .selector('node:childless') + .style({ + 'text-outline-opacity': 0, + 'text-opacity': 0, + 'background-opacity': 1, + }) + .update(); + } else { + // with labels + cyHandle + .style() + .selector('node:childless') + .style({ + 'text-outline-opacity': 1, + 'text-opacity': 1, + }) + .update(); + } } else { - // with labels cyHandle .style() .selector('node:childless') .style({ - 'text-outline-opacity': 1, - 'text-opacity': 1, + 'text-outline-opacity': 0, + 'text-opacity': 0, }) .update(); } - } else { - cyHandle - .style() - .selector('node:childless') - .style({ - 'text-outline-opacity': 0, - 'text-opacity': 0, - }) - .update(); - } - - // hide all nodes - if (filters.size) { - cyHandle.nodes().style({ visibility: 'hidden' }); - } else { - cyHandle.nodes().style({ visibility: 'visible' }); - cyHandle.edges().style({ visibility: 'visible' }); - } - - // filter - filters.forEach((f) => { - // bring back relevant nodes - cyHandle.nodes(`[name *= '${f}']`).forEach((ele) => { - // const cleanName = ele.data('name').trim().toLowerCase(); - // if (cleanName.includes(cleanFilter)) { - ele.style({ visibility: 'visible' }); - // if node is a child - // todo: do not assume just one parent - const category = ele.parent(); - category.style({ visibility: 'visible' }); + // hide all nodes + if (filters.size) { + cyHandle.nodes().style({ visibility: 'hidden' }); + } else { + cyHandle.nodes().style({ visibility: 'visible' }); + cyHandle.edges().style({ visibility: 'visible' }); + } - // if node is a parent - const children = ele.children(); - children.style({ visibility: 'visible' }); - // } else { - // ele.connectedEdges().style({ visibility: 'hidden' }); - // } + // filter + filters.forEach((f) => { + // bring back relevant nodes + cyHandle.nodes().forEach((ele) => { + const cleanName = ele.data('name').trim().toLowerCase(); + if (cleanName.includes(f)) { + ele.style({ visibility: 'visible' }); + + // if node is a child + // todo: do not assume just one parent + const category = ele.parent(); + category.style({ visibility: 'visible' }); + + // if node is a parent + const children = ele.children(); + children.style({ visibility: 'visible' }); + } + }); + cyHandle.edges().style({ visibility: 'visible' }); }); - cyHandle.edges().style({ visibility: 'visible' }); - }); - cyHandle.nodes(':hidden').forEach((ele) => { - ele.connectedEdges().style({ visibility: 'hidden' }); - }); + cyHandle.nodes(':hidden').forEach((ele) => { + ele.connectedEdges().style({ visibility: 'hidden' }); + }); - const visibleNodes = cyHandle.nodes(':visible'); + const visibleNodes = cyHandle.nodes(':visible'); - // have to catch this error as it explodes on first load - try { if (visibleNodes.length && cyHandle.container()) { cyHandle.fit(visibleNodes); } @@ -339,71 +317,72 @@ const View = ({ layout, graph }: Props) => { return () => { // anything in here is fired on component unmount. }; - }, [settings, cyHandle, filters, query]); + }, [settings, cyHandle, filters]); return ( <>
-
-
- - handleCheckbox(SHOW_NODES_KEY)} - /> - handleCheckbox(SHOW_PARENT_NODES_KEY)} - /> - - handleCheckbox(SHOW_EDGES_KEY)} - label="Show Edges" - /> - - handleCheckbox(SHOW_LABELS)} - label="Show Labels" - /> - -
- - - Filter - - - - - - - } - label="Filter..." - /> - -
- {Array.from(filters).map((f) => ( - handleRemoveFilter(f)} /> - ))} -
-
+ + + + + handleCheckbox(SHOW_NODES_KEY)} + /> + } + label="Show Nodes" + /> + handleCheckbox(SHOW_PARENT_NODES_KEY)} + /> + } + label="Show Categories" + /> + handleCheckbox(SHOW_EDGES_KEY)} + /> + } + label="Show Edges" + /> + handleCheckbox(SHOW_LABELS)} + indeterminate={areNodesHidden()} + /> + } + label="Show Labels" + /> + + + + +
+ {Array.from(filters).map((f) => ( + handleRemoveFilter(f)} + /> + ))} +
+
+ + + +
+
@@ -415,7 +394,7 @@ const View = ({ layout, graph }: Props) => { width: 'calc(100vw - 50px)', height: 'calc(100vh - 300px)', }} - layout={{ name: layout }} + layout={{ name: DEFAULT_LAYOUT }} cy={(cy) => { // todo: enable reshuffling setCyHandle(cy); diff --git a/src/constants.tsx b/src/constants.tsx new file mode 100644 index 0000000..32008be --- /dev/null +++ b/src/constants.tsx @@ -0,0 +1 @@ +export const DEFAULT_LAYOUT: string = 'cola'; diff --git a/yarn.lock b/yarn.lock index 7146345..9cbabe0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,13 +5,6 @@ __metadata: version: 6 cacheKey: 8 -"@alloc/quick-lru@npm:^5.2.0": - version: 5.2.0 - resolution: "@alloc/quick-lru@npm:5.2.0" - checksum: bdc35758b552bcf045733ac047fb7f9a07c4678b944c641adfbd41f798b4b91fffd0fdc0df2578d9b0afc7b4d636aa6e110ead5d6281a2adc1ab90efd7f057f8 - languageName: node - linkType: hard - "@ampproject/remapping@npm:^2.2.0": version: 2.2.1 resolution: "@ampproject/remapping@npm:2.2.1" @@ -1479,7 +1472,6 @@ __metadata: react-cytoscapejs: ^2.0.0 react-dom: ^18.2.0 rgb-hex: ^4.1.0 - tailwindcss: ^3.3.2 typescript: ^5.1.3 vite: ^4.3.9 vite-plugin-checker: ^0.6.0 @@ -1594,13 +1586,6 @@ __metadata: languageName: node linkType: hard -"any-promise@npm:^1.0.0": - version: 1.3.0 - resolution: "any-promise@npm:1.3.0" - checksum: 0ee8a9bdbe882c90464d75d1f55cf027f5458650c4bd1f0467e65aec38ccccda07ca5844969ee77ed46d04e7dded3eaceb027e8d32f385688523fe305fa7e1de - languageName: node - linkType: hard - "anymatch@npm:~3.1.2": version: 3.1.3 resolution: "anymatch@npm:3.1.3" @@ -1628,13 +1613,6 @@ __metadata: languageName: node linkType: hard -"arg@npm:^5.0.2": - version: 5.0.2 - resolution: "arg@npm:5.0.2" - checksum: 6c69ada1a9943d332d9e5382393e897c500908d91d5cb735a01120d5f71daf1b339b7b8980cbeaba8fd1afc68e658a739746179e4315a26e8a28951ff9930078 - languageName: node - linkType: hard - "argparse@npm:~1.0.9": version: 1.0.10 resolution: "argparse@npm:1.0.10" @@ -1806,13 +1784,6 @@ __metadata: languageName: node linkType: hard -"camelcase-css@npm:^2.0.1": - version: 2.0.1 - resolution: "camelcase-css@npm:2.0.1" - checksum: 1cec2b3b3dcb5026688a470b00299a8db7d904c4802845c353dbd12d9d248d3346949a814d83bfd988d4d2e5b9904c07efe76fecd195a1d4f05b543e7c0b56b1 - languageName: node - linkType: hard - "caniuse-lite@npm:^1.0.30001449": version: 1.0.30001486 resolution: "caniuse-lite@npm:1.0.30001486" @@ -1870,7 +1841,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^3.5.1, chokidar@npm:^3.5.3": +"chokidar@npm:^3.5.1": version: 3.5.3 resolution: "chokidar@npm:3.5.3" dependencies: @@ -1965,13 +1936,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:^4.0.0": - version: 4.1.1 - resolution: "commander@npm:4.1.1" - checksum: d7b9913ff92cae20cb577a4ac6fcc121bd6223319e54a40f51a14740a681ad5c574fd29a57da478a5f234a6fa6c52cbf0b7c641353e03c648b1ae85ba670b977 - languageName: node - linkType: hard - "commander@npm:^8.0.0": version: 8.3.0 resolution: "commander@npm:8.3.0" @@ -2054,15 +2018,6 @@ __metadata: languageName: node linkType: hard -"cssesc@npm:^3.0.0": - version: 3.0.0 - resolution: "cssesc@npm:3.0.0" - bin: - cssesc: bin/cssesc - checksum: f8c4ababffbc5e2ddf2fa9957dda1ee4af6048e22aeda1869d0d00843223c1b13ad3f5d88b51caa46c994225eacb636b764eb807a8883e2fb6f99b4f4e8c48b2 - languageName: node - linkType: hard - "csstype@npm:^3.0.2, csstype@npm:^3.1.2": version: 3.1.2 resolution: "csstype@npm:3.1.2" @@ -2237,20 +2192,6 @@ __metadata: languageName: node linkType: hard -"didyoumean@npm:^1.2.2": - version: 1.2.2 - resolution: "didyoumean@npm:1.2.2" - checksum: d5d98719d58b3c2fa59663c4c42ba9716f1fd01245c31d5fce31915bd3aa26e6aac149788e007358f778ebbd68a2256eb5973e8ca6f221df221ba060115acf2e - languageName: node - linkType: hard - -"dlv@npm:^1.1.3": - version: 1.1.3 - resolution: "dlv@npm:1.1.3" - checksum: d7381bca22ed11933a1ccf376db7a94bee2c57aa61e490f680124fa2d1cd27e94eba641d9f45be57caab4f9a6579de0983466f620a2cd6230d7ec93312105ae7 - languageName: node - linkType: hard - "dom-helpers@npm:^5.0.1": version: 5.2.1 resolution: "dom-helpers@npm:5.2.1" @@ -2606,29 +2547,6 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:^6.0.2": - version: 6.0.2 - resolution: "glob-parent@npm:6.0.2" - dependencies: - is-glob: ^4.0.3 - checksum: c13ee97978bef4f55106b71e66428eb1512e71a7466ba49025fc2aec59a5bfb0954d5abd58fc5ee6c9b076eef4e1f6d3375c2e964b88466ca390da4419a786a8 - languageName: node - linkType: hard - -"glob@npm:7.1.6": - version: 7.1.6 - resolution: "glob@npm:7.1.6" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^3.0.4 - once: ^1.3.0 - path-is-absolute: ^1.0.0 - checksum: 351d549dd90553b87c2d3f90ce11aed9e1093c74130440e7ae0592e11bbcd2ce7f0ebb8ba6bfe63aaf9b62166a7f4c80cb84490ae5d78408bb2572bf7d4ee0a6 - languageName: node - linkType: hard - "glob@npm:^7.1.3, glob@npm:^7.1.4": version: 7.2.3 resolution: "glob@npm:7.2.3" @@ -2872,7 +2790,7 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": +"is-glob@npm:^4.0.1, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" dependencies: @@ -2909,15 +2827,6 @@ __metadata: languageName: node linkType: hard -"jiti@npm:^1.18.2": - version: 1.18.2 - resolution: "jiti@npm:1.18.2" - bin: - jiti: bin/jiti.js - checksum: 46c41cd82d01c6efdee3fc0ae9b3e86ed37457192d6366f19157d863d64961b07982ab04e9d5879576a1af99cc4d132b0b73b336094f86a5ce9fb1029ec2d29f - languageName: node - linkType: hard - "jju@npm:~1.4.0": version: 1.4.0 resolution: "jju@npm:1.4.0" @@ -3024,13 +2933,6 @@ __metadata: languageName: node linkType: hard -"lilconfig@npm:^2.0.5, lilconfig@npm:^2.1.0": - version: 2.1.0 - resolution: "lilconfig@npm:2.1.0" - checksum: 8549bb352b8192375fed4a74694cd61ad293904eee33f9d4866c2192865c44c4eb35d10782966242634e0cbc1e91fe62b1247f148dc5514918e3a966da7ea117 - languageName: node - linkType: hard - "lines-and-columns@npm:^1.1.6": version: 1.2.4 resolution: "lines-and-columns@npm:1.2.4" @@ -3197,7 +3099,7 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": +"micromatch@npm:^4.0.4": version: 4.0.5 resolution: "micromatch@npm:4.0.5" dependencies: @@ -3355,17 +3257,6 @@ __metadata: languageName: node linkType: hard -"mz@npm:^2.7.0": - version: 2.7.0 - resolution: "mz@npm:2.7.0" - dependencies: - any-promise: ^1.0.0 - object-assign: ^4.0.1 - thenify-all: ^1.0.0 - checksum: 8427de0ece99a07e9faed3c0c6778820d7543e3776f9a84d22cf0ec0a8eb65f6e9aee9c9d353ff9a105ff62d33a9463c6ca638974cc652ee8140cd1e35951c87 - languageName: node - linkType: hard - "nanoid@npm:^3.3.6": version: 3.3.6 resolution: "nanoid@npm:3.3.6" @@ -3462,20 +3353,13 @@ __metadata: languageName: node linkType: hard -"object-assign@npm:^4.0.1, object-assign@npm:^4.1.1": +"object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" checksum: fcc6e4ea8c7fe48abfbb552578b1c53e0d194086e2e6bbbf59e0a536381a292f39943c6e9628af05b5528aa5e3318bb30d6b2e53cadaf5b8fe9e12c4b69af23f languageName: node linkType: hard -"object-hash@npm:^3.0.0": - version: 3.0.0 - resolution: "object-hash@npm:3.0.0" - checksum: 80b4904bb3857c52cc1bfd0b52c0352532ca12ed3b8a6ff06a90cd209dfda1b95cee059a7625eb9da29537027f68ac4619363491eedb2f5d3dddbba97494fd6c - languageName: node - linkType: hard - "once@npm:^1.3.0": version: 1.4.0 resolution: "once@npm:1.4.0" @@ -3587,20 +3471,6 @@ __metadata: languageName: node linkType: hard -"pify@npm:^2.3.0": - version: 2.3.0 - resolution: "pify@npm:2.3.0" - checksum: 9503aaeaf4577acc58642ad1d25c45c6d90288596238fb68f82811c08104c800e5a7870398e9f015d82b44ecbcbef3dc3d4251a1cbb582f6e5959fe09884b2ba - languageName: node - linkType: hard - -"pirates@npm:^4.0.1": - version: 4.0.5 - resolution: "pirates@npm:4.0.5" - checksum: c9994e61b85260bec6c4fc0307016340d9b0c4f4b6550a957afaaff0c9b1ad58fbbea5cfcf083860a25cb27a375442e2b0edf52e2e1e40e69934e08dcc52d227 - languageName: node - linkType: hard - "pkg-types@npm:^1.0.2": version: 1.0.3 resolution: "pkg-types@npm:1.0.3" @@ -3612,70 +3482,7 @@ __metadata: languageName: node linkType: hard -"postcss-import@npm:^15.1.0": - version: 15.1.0 - resolution: "postcss-import@npm:15.1.0" - dependencies: - postcss-value-parser: ^4.0.0 - read-cache: ^1.0.0 - resolve: ^1.1.7 - peerDependencies: - postcss: ^8.0.0 - checksum: 7bd04bd8f0235429009d0022cbf00faebc885de1d017f6d12ccb1b021265882efc9302006ba700af6cab24c46bfa2f3bc590be3f9aee89d064944f171b04e2a3 - languageName: node - linkType: hard - -"postcss-js@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-js@npm:4.0.1" - dependencies: - camelcase-css: ^2.0.1 - peerDependencies: - postcss: ^8.4.21 - checksum: 5c1e83efeabeb5a42676193f4357aa9c88f4dc1b3c4a0332c132fe88932b33ea58848186db117cf473049fc233a980356f67db490bd0a7832ccba9d0b3fd3491 - languageName: node - linkType: hard - -"postcss-load-config@npm:^4.0.1": - version: 4.0.1 - resolution: "postcss-load-config@npm:4.0.1" - dependencies: - lilconfig: ^2.0.5 - yaml: ^2.1.1 - peerDependencies: - postcss: ">=8.0.9" - ts-node: ">=9.0.0" - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true - checksum: b61f890499ed7dcda1e36c20a9582b17d745bad5e2b2c7bc96942465e406bc43ae03f270c08e60d1e29dab1ee50cb26970b5eb20c9aae30e066e20bd607ae4e4 - languageName: node - linkType: hard - -"postcss-nested@npm:^6.0.1": - version: 6.0.1 - resolution: "postcss-nested@npm:6.0.1" - dependencies: - postcss-selector-parser: ^6.0.11 - peerDependencies: - postcss: ^8.2.14 - checksum: 7ddb0364cd797de01e38f644879189e0caeb7ea3f78628c933d91cc24f327c56d31269384454fc02ecaf503b44bfa8e08870a7c4cc56b23bc15640e1894523fa - languageName: node - linkType: hard - -"postcss-selector-parser@npm:^6.0.11": - version: 6.0.13 - resolution: "postcss-selector-parser@npm:6.0.13" - dependencies: - cssesc: ^3.0.0 - util-deprecate: ^1.0.2 - checksum: f89163338a1ce3b8ece8e9055cd5a3165e79a15e1c408e18de5ad8f87796b61ec2d48a2902d179ae0c4b5de10fccd3a325a4e660596549b040bc5ad1b465f096 - languageName: node - linkType: hard - -"postcss-value-parser@npm:^4.0.0, postcss-value-parser@npm:^4.2.0": +"postcss-value-parser@npm:^4.2.0": version: 4.2.0 resolution: "postcss-value-parser@npm:4.2.0" checksum: 819ffab0c9d51cf0acbabf8996dffbfafbafa57afc0e4c98db88b67f2094cb44488758f06e5da95d7036f19556a4a732525e84289a425f4f6fd8e412a9d7442f @@ -3849,15 +3656,6 @@ __metadata: languageName: node linkType: hard -"read-cache@npm:^1.0.0": - version: 1.0.0 - resolution: "read-cache@npm:1.0.0" - dependencies: - pify: ^2.3.0 - checksum: cffc728b9ede1e0667399903f9ecaf3789888b041c46ca53382fa3a06303e5132774dc0a96d0c16aa702dbac1ea0833d5a868d414f5ab2af1e1438e19e6657c6 - languageName: node - linkType: hard - "readable-stream@npm:^3.6.0": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" @@ -3892,19 +3690,6 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.7, resolve@npm:^1.22.2, resolve@npm:~1.22.1": - version: 1.22.3 - resolution: "resolve@npm:1.22.3" - dependencies: - is-core-module: ^2.12.0 - path-parse: ^1.0.7 - supports-preserve-symlinks-flag: ^1.0.0 - bin: - resolve: bin/resolve - checksum: fb834b81348428cb545ff1b828a72ea28feb5a97c026a1cf40aa1008352c72811ff4d4e71f2035273dc536dcfcae20c13604ba6283c612d70fa0b6e44519c374 - languageName: node - linkType: hard - "resolve@npm:^1.19.0": version: 1.22.6 resolution: "resolve@npm:1.22.6" @@ -3928,16 +3713,16 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.22.2#~builtin, resolve@patch:resolve@~1.22.1#~builtin": +"resolve@npm:~1.22.1": version: 1.22.3 - resolution: "resolve@patch:resolve@npm%3A1.22.3#~builtin::version=1.22.3&hash=c3c19d" + resolution: "resolve@npm:1.22.3" dependencies: is-core-module: ^2.12.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: ad59734723b596d0891321c951592ed9015a77ce84907f89c9d9307dd0c06e11a67906a3e628c4cae143d3e44898603478af0ddeb2bba3f229a9373efe342665 + checksum: fb834b81348428cb545ff1b828a72ea28feb5a97c026a1cf40aa1008352c72811ff4d4e71f2035273dc536dcfcae20c13604ba6283c612d70fa0b6e44519c374 languageName: node linkType: hard @@ -3964,6 +3749,19 @@ __metadata: languageName: node linkType: hard +"resolve@patch:resolve@~1.22.1#~builtin": + version: 1.22.3 + resolution: "resolve@patch:resolve@npm%3A1.22.3#~builtin::version=1.22.3&hash=c3c19d" + dependencies: + is-core-module: ^2.12.0 + path-parse: ^1.0.7 + supports-preserve-symlinks-flag: ^1.0.0 + bin: + resolve: bin/resolve + checksum: ad59734723b596d0891321c951592ed9015a77ce84907f89c9d9307dd0c06e11a67906a3e628c4cae143d3e44898603478af0ddeb2bba3f229a9373efe342665 + languageName: node + linkType: hard + "retry@npm:^0.12.0": version: 0.12.0 resolution: "retry@npm:0.12.0" @@ -4243,24 +4041,6 @@ __metadata: languageName: node linkType: hard -"sucrase@npm:^3.32.0": - version: 3.32.0 - resolution: "sucrase@npm:3.32.0" - dependencies: - "@jridgewell/gen-mapping": ^0.3.2 - commander: ^4.0.0 - glob: 7.1.6 - lines-and-columns: ^1.1.6 - mz: ^2.7.0 - pirates: ^4.0.1 - ts-interface-checker: ^0.1.9 - bin: - sucrase: bin/sucrase - sucrase-node: bin/sucrase-node - checksum: 79f760aef513adcf22b882d43100296a8afa7f307acef3e8803304b763484cf138a3e2cebc498a6791110ab20c7b8deba097f6ce82f812ca8f1723e3440e5c95 - languageName: node - linkType: hard - "supports-color@npm:^5.3.0": version: 5.5.0 resolution: "supports-color@npm:5.5.0" @@ -4286,40 +4066,6 @@ __metadata: languageName: node linkType: hard -"tailwindcss@npm:^3.3.2": - version: 3.3.2 - resolution: "tailwindcss@npm:3.3.2" - dependencies: - "@alloc/quick-lru": ^5.2.0 - arg: ^5.0.2 - chokidar: ^3.5.3 - didyoumean: ^1.2.2 - dlv: ^1.1.3 - fast-glob: ^3.2.12 - glob-parent: ^6.0.2 - is-glob: ^4.0.3 - jiti: ^1.18.2 - lilconfig: ^2.1.0 - micromatch: ^4.0.5 - normalize-path: ^3.0.0 - object-hash: ^3.0.0 - picocolors: ^1.0.0 - postcss: ^8.4.23 - postcss-import: ^15.1.0 - postcss-js: ^4.0.1 - postcss-load-config: ^4.0.1 - postcss-nested: ^6.0.1 - postcss-selector-parser: ^6.0.11 - postcss-value-parser: ^4.2.0 - resolve: ^1.22.2 - sucrase: ^3.32.0 - bin: - tailwind: lib/cli.js - tailwindcss: lib/cli.js - checksum: 4897c70e671c885e151f57434d87ccb806f468a11900f028245b351ffbca5245ff0c10ca5dbb6eb4c7c4df3de8a15a05fe08c2aea4b152cb07bee9bb1d8a14a8 - languageName: node - linkType: hard - "tar@npm:^6.1.11, tar@npm:^6.1.2": version: 6.1.14 resolution: "tar@npm:6.1.14" @@ -4334,24 +4080,6 @@ __metadata: languageName: node linkType: hard -"thenify-all@npm:^1.0.0": - version: 1.6.0 - resolution: "thenify-all@npm:1.6.0" - dependencies: - thenify: ">= 3.1.0 < 4" - checksum: dba7cc8a23a154cdcb6acb7f51d61511c37a6b077ec5ab5da6e8b874272015937788402fd271fdfc5f187f8cb0948e38d0a42dcc89d554d731652ab458f5343e - languageName: node - linkType: hard - -"thenify@npm:>= 3.1.0 < 4": - version: 3.3.1 - resolution: "thenify@npm:3.3.1" - dependencies: - any-promise: ^1.0.0 - checksum: 84e1b804bfec49f3531215f17b4a6e50fd4397b5f7c1bccc427b9c656e1ecfb13ea79d899930184f78bc2f57285c54d9a50a590c8868f4f0cef5c1d9f898b05e - languageName: node - linkType: hard - "time-zone@npm:^1.0.0": version: 1.0.0 resolution: "time-zone@npm:1.0.0" @@ -4403,13 +4131,6 @@ __metadata: languageName: node linkType: hard -"ts-interface-checker@npm:^0.1.9": - version: 0.1.13 - resolution: "ts-interface-checker@npm:0.1.13" - checksum: 20c29189c2dd6067a8775e07823ddf8d59a33e2ffc47a1bd59a5cb28bb0121a2969a816d5e77eda2ed85b18171aa5d1c4005a6b88ae8499ec7cc49f78571cb5e - languageName: node - linkType: hard - "ts-morph@npm:18.0.0": version: 18.0.0 resolution: "ts-morph@npm:18.0.0" @@ -4536,7 +4257,7 @@ __metadata: languageName: node linkType: hard -"util-deprecate@npm:^1.0.1, util-deprecate@npm:^1.0.2": +"util-deprecate@npm:^1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" checksum: 474acf1146cb2701fe3b074892217553dfcf9a031280919ba1b8d651a068c9b15d863b7303cb15bd00a862b498e6cf4ad7b4a08fb134edd5a6f7641681cb54a2 @@ -4875,13 +4596,6 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.1.1": - version: 2.3.1 - resolution: "yaml@npm:2.3.1" - checksum: 2c7bc9a7cd4c9f40d3b0b0a98e370781b68b8b7c4515720869aced2b00d92f5da1762b4ffa947f9e795d6cd6b19f410bd4d15fdd38aca7bd96df59bd9486fb54 - languageName: node - linkType: hard - "yocto-queue@npm:^1.0.0": version: 1.0.0 resolution: "yocto-queue@npm:1.0.0"