Skip to content

Commit

Permalink
chore(website): [playground] rebase changes on v6
Browse files Browse the repository at this point in the history
  • Loading branch information
armano2 committed Apr 24, 2023
1 parent 2946d87 commit 6aaf43a
Show file tree
Hide file tree
Showing 54 changed files with 1,730 additions and 1,792 deletions.
1 change: 0 additions & 1 deletion packages/typescript-estree/src/use-at-your-own-risk.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
// required by website
export * from './create-program/getScriptKind';
export * from './ast-converter';
export type { ParseSettings } from './parseSettings';

Expand Down
11 changes: 6 additions & 5 deletions packages/website/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"build": "docusaurus build",
"clear": "docusaurus clear",
"format": "prettier --write \"./**/*.{md,mdx,ts,js,tsx,jsx}\" --ignore-path ../../.prettierignore",
"generate-website-dts": "tsx ./tools/generate-website-dts.ts",
"generate-package-versions": "tsx ./tools/generate-package-versions.ts",
"stylelint": "stylelint \"src/**/*.css\"",
"stylelint:fix": "stylelint \"src/**/*.css\" --fix",
"lint": "nx lint",
Expand All @@ -26,17 +26,19 @@
"@mdx-js/react": "1.6.22",
"@typescript-eslint/parser": "5.59.0",
"@typescript-eslint/website-eslint": "5.59.0",
"@typescript/vfs": "^1.4.0",
"clsx": "^1.1.1",
"eslint": "*",
"json-schema": "^0.4.0",
"@monaco-editor/react": "^4.3.0",
"json5": "^2.2.1",
"konamimojisplosion": "^0.5.1",
"lz-string": "^1.5.0",
"prettier": "*",
"prism-react-renderer": "^1.3.3",
"react": "^18.1.0",
"react-dom": "^18.1.0",
"react-split-pane": "^0.1.92",
"react-resizable-panels": "^0.0.36",
"remark-docusaurus-tabs": "^0.2.0",
"ts-node": "*",
"typescript": "*"
Expand All @@ -57,14 +59,13 @@
"copy-webpack-plugin": "^11.0.0",
"cross-fetch": "*",
"globby": "^11.1.0",
"make-dir": "*",
"monaco-editor": "^0.37.0",
"rimraf": "*",
"stylelint": "^15.3.0",
"stylelint-config-recommended": "^11.0.0",
"stylelint-config-standard": "^31.0.0",
"stylelint-order": "^6.0.3",
"webpack": "^5.74.0"
"webpack": "^5.74.0",
"semver": "^7.3.7"
},
"browserslist": {
"production": [
Expand Down
53 changes: 33 additions & 20 deletions packages/website/src/components/ESQueryFilter.tsx
Original file line number Diff line number Diff line change
@@ -1,39 +1,52 @@
import clsx from 'clsx';
import type { Selector } from 'esquery';
import React, { useState } from 'react';
import React, { useEffect, useState } from 'react';

import { ErrorViewer } from './ErrorsViewer';
import styles from './ESQueryFilter.module.css';
import Text from './inputs/Text';

export interface ESQueryFilterProps {
readonly onChange: (value: Selector) => void;
readonly onError: (value?: Error) => void;
readonly onChange: (value?: Selector) => void;
}

export function ESQueryFilter({
onChange,
onError,
}: ESQueryFilterProps): JSX.Element {
const [value, setValue] = useState('');
export function ESQueryFilter({ onChange }: ESQueryFilterProps): JSX.Element {
const [esQueryError, setEsQueryError] = useState<Error>();
const [inputValue, setInputValue] = useState('');

useEffect(() => {
onChange(undefined);
}, [onChange]);

const changeEvent = (value: string): void => {
setValue(value);
setInputValue(value);
try {
const queryParsed = window.esquery.parse(value);
onChange(queryParsed);
onError(undefined);
setEsQueryError(undefined);
} catch (e: unknown) {
onError(e instanceof Error ? e : new Error(String(e)));
setEsQueryError(e instanceof Error ? e : new Error(String(e)));
}
};

return (
<div className={styles.searchContainer}>
<Text
value={value}
type="search"
name="esquery"
onChange={changeEvent}
placeholder="ESQuery filter"
/>
</div>
<>
<div className={clsx(styles.searchContainer, 'margin-bottom--xs')}>
<Text
value={inputValue}
type="search"
name="esquery"
onChange={changeEvent}
placeholder="ESQuery filter"
/>
</div>
{esQueryError && (
<ErrorViewer
type="warning"
title="Invalid Selector"
value={esQueryError}
/>
)}
</>
);
}
21 changes: 12 additions & 9 deletions packages/website/src/components/OptionsSelector.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,30 @@ import {
NavbarSecondaryMenuFiller,
useWindowSize,
} from '@docusaurus/theme-common';
import Checkbox from '@site/src/components/inputs/Checkbox';
import CopyIcon from '@site/src/icons/copy.svg';
import IconExternalLink from '@theme/Icon/ExternalLink';
import React, { useCallback } from 'react';

import { useClipboard } from '../hooks/useClipboard';
import Checkbox from './inputs/Checkbox';
import Dropdown from './inputs/Dropdown';
import Tooltip from './inputs/Tooltip';
import ActionLabel from './layout/ActionLabel';
import Expander from './layout/Expander';
import InputLabel from './layout/InputLabel';
import { createMarkdown, createMarkdownParams } from './lib/markdown';
import { fileTypes } from './options';
import { fileTypes, tsVersions } from './options';
import styles from './Playground.module.css';
import type { ConfigModel } from './types';

export interface OptionsSelectorParams {
readonly state: ConfigModel;
readonly setState: (cfg: Partial<ConfigModel>) => void;
readonly tsVersions: readonly string[];
}

function OptionsSelectorContent({
state,
setState,
tsVersions,
}: OptionsSelectorParams): JSX.Element {
const [copyLink, copyLinkToClipboard] = useClipboard(() =>
document.location.toString(),
Expand All @@ -35,7 +34,7 @@ function OptionsSelectorContent({
createMarkdown(state),
);

const openIssue = useCallback(() => {
const openIssue = useCallback((): void => {
const params = createMarkdownParams(state);

window
Expand All @@ -53,10 +52,9 @@ function OptionsSelectorContent({
<Dropdown
name="ts"
className="text--right"
options={tsVersions}
value={state.ts}
disabled={!tsVersions.length}
onChange={(ts): void => setState({ ts })}
options={(tsVersions.length && tsVersions) || [state.ts]}
/>
</InputLabel>
<InputLabel name="Eslint">{process.env.ESLINT_VERSION}</InputLabel>
Expand All @@ -74,7 +72,7 @@ function OptionsSelectorContent({
<InputLabel name="Source type">
<Dropdown
name="sourceType"
value={state.sourceType}
value={state.sourceType ?? 'module'}
onChange={(sourceType): void => setState({ sourceType })}
options={['script', 'module']}
/>
Expand Down Expand Up @@ -123,7 +121,12 @@ function OptionsSelector(props: OptionsSelectorParams): JSX.Element {
/>
);
}
return <OptionsSelectorContent {...props} />;

return (
<div className={styles.playgroundMenu}>
<OptionsSelectorContent {...props} />
</div>
);
}

export default OptionsSelector;
126 changes: 72 additions & 54 deletions packages/website/src/components/Playground.module.css
Original file line number Diff line number Diff line change
Expand Up @@ -3,88 +3,106 @@
--playground-secondary-color: var(--ifm-color-emphasis-100);
}

.options {
.playgroundMenu {
width: 100%;
background: var(--playground-main-color);
overflow: auto;
z-index: 1;
}

.sourceCode {
height: 100%;
border: 1px solid var(--playground-secondary-color);
.playgroundEditor {
width: 100%;
display: flex;
flex-direction: column;
}

.codeBlocks {
display: flex;
flex: 1 1 0;
flex-direction: row;
height: 100%;
width: calc(100vw - 20rem);
.hidden {
display: none;
visibility: hidden;
}

.astViewer {
height: 100%;
.playgroundInfoContainer {
width: 100%;
border: 1px solid var(--playground-secondary-color);
padding: 0;
height: 100%;
overflow: auto;
word-wrap: initial;
white-space: nowrap;
background: var(--code-editor-bg);
}

.codeContainer {
display: flex;
flex-direction: row;
position: fixed;
width: 100%;
height: calc(100% - var(--ifm-navbar-height));
top: var(--ifm-navbar-height);
z-index: calc(var(--ifm-z-index-fixed) - 1);
}

.playgroundInfoHeader {
position: sticky;
top: 0;
left: 0;
z-index: 1;
}

.tabCode {
height: calc(100% - 41px);
.playgroundInfo {
word-wrap: normal;
width: 100%;
position: relative;
padding: 5px 0;
}

.hidden {
display: none;
visibility: hidden;
.panelGroup {
height: calc(100vh - 60px) !important;
}

@media only screen and (max-width: 996px) {
.codeContainer {
display: block;
width: 100%;
position: static;
}
.panelGroup .panelGroup {
height: calc(100vh - 111px) !important;
}

.codeBlocks {
display: block;
width: 100%;
@media (max-width: 996px) {
.panelGroup .panelGroup {
height: auto !important;
}
}

.options {
display: none;
}
.Panel {
display: flex;
flex-direction: row;
font-size: 2rem;
}

.tabCode {
height: calc(30rem - 3.2rem);
}
.PanelColumn,
.PanelRow {
display: flex;
}

.astViewer,
.sourceCode {
height: 30rem;
}
.PanelColumn {
flex-direction: column;
}

.PanelRow {
flex-direction: row;
}

.PanelResizeHandle {
--resize-border-color: var(--playground-main-color);
--resize-background-color: var(--ifm-color-emphasis-200);

flex: 0 0 11px;
background-clip: padding-box;
display: flex;
justify-content: stretch;
align-items: stretch;
outline: none;
transition: border-color 0.2s linear, background-color 0.2s linear;
background-color: var(--resize-background-color);
border-color: var(--resize-border-color);
border-style: solid;
border-width: 0 5px;
}

.PanelResizeHandle[data-panel-group-direction='vertical'] {
flex-direction: column;
border-width: 5px 0;
}

.PanelResizeHandle[data-resize-handle-active],
.PanelResizeHandle:hover {
--resize-border-color: var(--ifm-color-emphasis-200);
--resize-background-color: var(--ifm-color-emphasis-300);
}

.astViewer {
height: auto;
@media (max-width: 500px) {
.PanelResizeHandle {
flex: 0 0 10px;
}
}

0 comments on commit 6aaf43a

Please sign in to comment.