diff --git a/apps/remix-ide/src/app.js b/apps/remix-ide/src/app.js index 033c1b1bb0..732ef24c4a 100644 --- a/apps/remix-ide/src/app.js +++ b/apps/remix-ide/src/app.js @@ -30,6 +30,7 @@ const isElectron = require('is-electron') const remixLib = require('@remix-project/remix-lib') import { QueryParams } from '@remix-project/remix-lib' +import { SearchPlugin } from './app/tabs/search' const Storage = remixLib.Storage const RemixDProvider = require('./app/files/remixDProvider') const Config = require('./config') @@ -147,6 +148,9 @@ class AppComponent { // ----------------- Storage plugin --------------------------------- const storagePlugin = new StoragePlugin() + //----- search + const search = new SearchPlugin() + // ----------------- import content service ------------------------ const contentImport = new CompilerImports() @@ -221,7 +225,8 @@ class AppComponent { dGitProvider, storagePlugin, hardhatProvider, - this.walkthroughService + this.walkthroughService, + search ]) // LAYOUT & SYSTEM VIEWS @@ -332,7 +337,7 @@ class AppComponent { await this.appManager.activatePlugin(['settings', 'config']) await this.appManager.activatePlugin(['hiddenPanel', 'pluginManager', 'contextualListener', 'terminal', 'blockchain', 'fetchAndCompile', 'contentImport', 'gistHandler']) await this.appManager.activatePlugin(['settings']) - await this.appManager.activatePlugin(['walkthrough','storage']) + await this.appManager.activatePlugin(['walkthrough','storage', 'search']) this.appManager.on( 'filePanel', diff --git a/apps/remix-ide/src/app/files/fileManager.ts b/apps/remix-ide/src/app/files/fileManager.ts index d9789f4512..263d583093 100644 --- a/apps/remix-ide/src/app/files/fileManager.ts +++ b/apps/remix-ide/src/app/files/fileManager.ts @@ -19,7 +19,7 @@ const profile = { icon: 'assets/img/fileManager.webp', permission: true, version: packageJson.version, - methods: ['closeAllFiles', 'closeFile', 'file', 'exists', 'open', 'writeFile', 'readFile', 'copyFile', 'copyDir', 'rename', 'mkdir', 'readdir', 'remove', 'getCurrentFile', 'getFile', 'getFolder', 'setFile', 'switchFile', 'refresh', 'getProviderOf', 'getProviderByName', 'getPathFromUrl', 'getUrlFromPath', 'saveCurrentFile', 'setBatchFiles'], + methods: ['closeAllFiles', 'closeFile', 'file', 'exists', 'open', 'writeFile', 'readFile', 'copyFile', 'copyDir', 'rename', 'mkdir', 'readdir', 'remove', 'getCurrentFile', 'getFile', 'getFolder', 'setFile', 'switchFile', 'refresh', 'getProviderOf', 'getProviderByName', 'getPathFromUrl', 'getUrlFromPath', 'saveCurrentFile', 'setBatchFiles', 'findInFile'], kind: 'file-system' } const errorMsg = { @@ -396,6 +396,14 @@ class FileManager extends Plugin { } } + + async findInFile(query) { + const browserProvider = this.getProvider('browser') + await browserProvider.copyFolderToJson('/.workspaces/default_workspace', ({ path, content }) => { + console.log(path, content) + }) + } + init() { this._deps = { config: this._components.registry.get('config').api, diff --git a/apps/remix-ide/src/app/tabs/search.tsx b/apps/remix-ide/src/app/tabs/search.tsx new file mode 100644 index 0000000000..267396181a --- /dev/null +++ b/apps/remix-ide/src/app/tabs/search.tsx @@ -0,0 +1,34 @@ +import { ViewPlugin } from '@remixproject/engine-web' +import * as packageJson from '../../../../../package.json' +import React from 'react' // eslint-disable-line +import { PluginViewWrapper } from '@remix-ui/helper' +import { SearchTab } from '@remix-ui/search' +const profile = { + name: 'search', + displayName: 'Search', + methods: [''], + events: [], + icon: 'assets/img/Search_Icon.svg', + description: '', + kind: '', + location: 'sidePanel', + documentation: '', + version: packageJson.version + } + +export class SearchPlugin extends ViewPlugin { + dispatch: React.Dispatch = () => {} + constructor () { + super(profile) + } + + + render() { + return ( +
+ +
+ ); + } + +} \ No newline at end of file diff --git a/apps/remix-ide/src/assets/img/Search_Icon.svg b/apps/remix-ide/src/assets/img/Search_Icon.svg new file mode 100644 index 0000000000..00a6fcde04 --- /dev/null +++ b/apps/remix-ide/src/assets/img/Search_Icon.svg @@ -0,0 +1,77 @@ + + + + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/libs/remix-ui/search/.babelrc b/libs/remix-ui/search/.babelrc new file mode 100644 index 0000000000..64a3748691 --- /dev/null +++ b/libs/remix-ui/search/.babelrc @@ -0,0 +1,4 @@ +{ + "presets": ["@nrwl/react/babel"], + "plugins": [] +} \ No newline at end of file diff --git a/libs/remix-ui/search/.eslintrc.json b/libs/remix-ui/search/.eslintrc.json new file mode 100644 index 0000000000..1587c6172a --- /dev/null +++ b/libs/remix-ui/search/.eslintrc.json @@ -0,0 +1,19 @@ +{ + "env": { + "browser": true, + "es6": true + }, + "ignorePatterns": ["!**/*"], + "extends": "../../../.eslintrc.json", + "globals": { + "Atomics": "readonly", + "SharedArrayBuffer": "readonly" + }, + "parserOptions": { + "ecmaVersion": 11, + "sourceType": "module" + }, + "rules": { + "standard/no-callback-literal": "off" + } +} \ No newline at end of file diff --git a/libs/remix-ui/search/.prettierrc b/libs/remix-ui/search/.prettierrc new file mode 100644 index 0000000000..591b168cb7 --- /dev/null +++ b/libs/remix-ui/search/.prettierrc @@ -0,0 +1,5 @@ +{ + "tabWidth": 2, + "singleQuote": true, + "semi": false +} \ No newline at end of file diff --git a/libs/remix-ui/search/README.md b/libs/remix-ui/search/README.md new file mode 100644 index 0000000000..cf9595a10e --- /dev/null +++ b/libs/remix-ui/search/README.md @@ -0,0 +1,7 @@ +# remix-ui-vertical-icons-panel + +React library for RemixIde vertical icons Panel + +## Running unit tests + +Run `nx test remix-ui-vertical-icons-panel` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/libs/remix-ui/search/src/index.ts b/libs/remix-ui/search/src/index.ts new file mode 100644 index 0000000000..8617e2ddff --- /dev/null +++ b/libs/remix-ui/search/src/index.ts @@ -0,0 +1 @@ +export { SearchTab } from './lib/components/Search'; \ No newline at end of file diff --git a/libs/remix-ui/search/src/lib/components/Exclude.tsx b/libs/remix-ui/search/src/lib/components/Exclude.tsx new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libs/remix-ui/search/src/lib/components/Find.tsx b/libs/remix-ui/search/src/lib/components/Find.tsx new file mode 100644 index 0000000000..db8cb94463 --- /dev/null +++ b/libs/remix-ui/search/src/lib/components/Find.tsx @@ -0,0 +1,17 @@ +import React, { useContext, useReducer } from "react" +import { SearchContext } from "../context/context" +import { SearchingInitialState, SearchReducer } from "../reducers/Reducer" + + + +export const Find = props => { + + const { setFind } = useContext(SearchContext) + const change = (e) => { + setFind(e.target.value) + } + + return(<> + + ) +} \ No newline at end of file diff --git a/libs/remix-ui/search/src/lib/components/Include.tsx b/libs/remix-ui/search/src/lib/components/Include.tsx new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libs/remix-ui/search/src/lib/components/Replace.tsx b/libs/remix-ui/search/src/lib/components/Replace.tsx new file mode 100644 index 0000000000..fc60d3d73a --- /dev/null +++ b/libs/remix-ui/search/src/lib/components/Replace.tsx @@ -0,0 +1,16 @@ +import React, { useContext, useEffect } from 'react' +import { SearchContext } from '../context/context' + +export const Replace = props => { + const { state, setReplace } = useContext(SearchContext) + + const change = e => { + setReplace(e.target.value) + } + + return ( + <> + + + ) +} diff --git a/libs/remix-ui/search/src/lib/components/Search.tsx b/libs/remix-ui/search/src/lib/components/Search.tsx new file mode 100644 index 0000000000..e9d2df1097 --- /dev/null +++ b/libs/remix-ui/search/src/lib/components/Search.tsx @@ -0,0 +1,25 @@ +import React, { useContext, useEffect, useReducer } from 'react' +import { SearchContext, SearchProvider } from '../context/context' +import { SearchingInitialState, SearchReducer } from '../reducers/Reducer' +import { Find } from './Find' +import { Replace } from './Replace' +import { Results } from './results/Results' + +export const SearchTab = props => { + +const plugin = props.plugin + +useEffect(() => { + console.log (plugin) +},[]) + +return ( + <> + + + + + + + ) +} diff --git a/libs/remix-ui/search/src/lib/components/results/ResultFileName.tsx b/libs/remix-ui/search/src/lib/components/results/ResultFileName.tsx new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libs/remix-ui/search/src/lib/components/results/ResultItem.tsx b/libs/remix-ui/search/src/lib/components/results/ResultItem.tsx new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libs/remix-ui/search/src/lib/components/results/ResultSummary.tsx b/libs/remix-ui/search/src/lib/components/results/ResultSummary.tsx new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libs/remix-ui/search/src/lib/components/results/Results.tsx b/libs/remix-ui/search/src/lib/components/results/Results.tsx new file mode 100644 index 0000000000..7514c51e98 --- /dev/null +++ b/libs/remix-ui/search/src/lib/components/results/Results.tsx @@ -0,0 +1,81 @@ +import { ViewPlugin } from "@remixproject/engine-web" +import React, { useContext, useEffect } from "react" +import { SearchContext } from "../../context/context" +import { SearchResult } from "../../reducers/Reducer" + +interface ResultsProps { + plugin: ViewPlugin +} + +export const Results = (props: ResultsProps) => { + + const { state, setSearchResults } = useContext(SearchContext) + + const { plugin } = props + + const getDirectory = async (dir) => { + let result = [] + const files = await plugin.call('fileManager', 'readdir', dir) + const fileArray = normalize(files) + for (const fi of fileArray) { + if (fi) { + const type = fi.data.isDirectory + if (type === true) { + result = [ + ...result, + ...(await getDirectory( + `${fi.filename}` + )) + ] + } else { + result = [...result, fi.filename] + } + } + } + return result + } + + const normalize = (filesList) => { + const folders = [] + const files = [] + Object.keys(filesList || {}).forEach(key => { + if (filesList[key].isDirectory) { + folders.push({ + filename: key, + data: filesList[key] + }) + } else { + files.push({ + filename: key, + data: filesList[key] + }) + } + }) + return [...folders, ...files] + } + + useEffect(() => { + if (state.find) { + getDirectory('/').then(res => { + const ob = res.map(file => { + const r:SearchResult = { + filename: file, + lines: [], + path: file, + searchComplete: false + } + return r + }) + console.log(ob) + setSearchResults(ob) + }) + } + },[state.find]) + + + useEffect(() => { + console.log(state.searchResults) + },[state.searchResults]) + + return(<>) +} \ No newline at end of file diff --git a/libs/remix-ui/search/src/lib/context/context.tsx b/libs/remix-ui/search/src/lib/context/context.tsx new file mode 100644 index 0000000000..4b696f948e --- /dev/null +++ b/libs/remix-ui/search/src/lib/context/context.tsx @@ -0,0 +1,88 @@ +import React from 'react' +import { createContext, useReducer } from 'react' +import { + SearchingInitialState, + SearchReducer, + SearchResult, + SearchState +} from '../reducers/Reducer' + +export interface SearchingStateInterface { + state: SearchState + setFind: (value: string) => void + setReplace: (value: string) => void + setInclude: (value: string) => void, + setExclude: (value: string) => void, + setCaseSensitive: (value: boolean) => void, + setRegex: (value: boolean) => void, + setWholeWord: (value: boolean) => void, + setSearchResults: (value: SearchResult[]) => void, +} + +export const SearchContext = createContext(null) + +export const SearchProvider = ({ + children = [], + reducer = SearchReducer, + initialState = SearchingInitialState +} = {}) => { + const [state, dispatch] = useReducer(reducer, initialState) + + const value = { + state, + setFind: (value: string) => { + dispatch({ + type: 'SET_FIND', + payload: value + }) + }, + setReplace: (value: string) => { + dispatch({ + type: 'SET_REPLACE', + payload: value + }) + }, + setInclude: (value: string) => { + dispatch({ + type: 'SET_INCLUDE', + payload: value + }) + }, + setExclude(value: string) { + dispatch({ + type: 'SET_EXCLUDE', + payload: value + }) + }, + setCaseSensitive(value: boolean) { + dispatch({ + type: 'SET_CASE_SENSITIVE', + payload: value + }) + }, + setWholeWord(value: boolean) { + dispatch({ + type: 'SET_WHOLE_WORD', + payload: value + }) + }, + setRegex(value: boolean) { + dispatch({ + type: 'SET_REGEX', + payload: value + }) + }, + setSearchResults(value: SearchResult[]) { + dispatch({ + type: 'SET_SEARCH_RESULTS', + payload: value + }) + } + } + + return ( + <> + {children} + + ) +} diff --git a/libs/remix-ui/search/src/lib/reducers/Reducer.ts b/libs/remix-ui/search/src/lib/reducers/Reducer.ts new file mode 100644 index 0000000000..e0cc2a4b0c --- /dev/null +++ b/libs/remix-ui/search/src/lib/reducers/Reducer.ts @@ -0,0 +1,70 @@ + +interface Action { + type: string + payload: any +} + +export interface SearchResultLine { + lineNumber: number + text: string +} + +export interface SearchResult { + filename: string, + path: string, + lines: SearchResultLine[], + searchComplete: boolean +} + +export interface SearchState { + find: string, + searchResults: SearchResult[], + replace: string, + include: string, + exclude: string, +} + +export const SearchingInitialState: SearchState = { + find: '', + replace: '', + include: '', + exclude: '', + searchResults: [] +} + +export const SearchReducer = (state: SearchState = SearchingInitialState, action: Action) => { + console.log(state) + switch (action.type) { + case 'SET_FIND': + return { + ...state, + find: action.payload, + } + break; + case 'SET_REPLACE': + return { + ...state, + replace: action.payload, + } + break; + case 'SET_INCLUDE': + return { + ...state, + include: action.payload, + } + break; + case 'SET_EXCLUDE': + return { + ...state, + exclude: action.payload, + } + break; + case 'SET_SEARCH_RESULTS': + return { + ...state, + searchResults: action.payload, + } + break; + default: + } +} \ No newline at end of file diff --git a/libs/remix-ui/search/tsconfig.json b/libs/remix-ui/search/tsconfig.json new file mode 100644 index 0000000000..a7180ef589 --- /dev/null +++ b/libs/remix-ui/search/tsconfig.json @@ -0,0 +1,19 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "jsx": "react", + "allowJs": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ] +} diff --git a/libs/remix-ui/search/tsconfig.lib.json b/libs/remix-ui/search/tsconfig.lib.json new file mode 100644 index 0000000000..b560bc4dec --- /dev/null +++ b/libs/remix-ui/search/tsconfig.lib.json @@ -0,0 +1,13 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "types": ["node"] + }, + "files": [ + "../../../node_modules/@nrwl/react/typings/cssmodule.d.ts", + "../../../node_modules/@nrwl/react/typings/image.d.ts" + ], + "exclude": ["**/*.spec.ts", "**/*.spec.tsx"], + "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] +} diff --git a/nx.json b/nx.json index 7f7de57643..bbf5b08f6f 100644 --- a/nx.json +++ b/nx.json @@ -139,6 +139,9 @@ "remix-ui-vertical-icons-panel": { "tags": [] }, + "remix-ui-search": { + "tags": [] + }, "remix-ui-home-tab": { "tags": [] }, diff --git a/package-lock.json b/package-lock.json index 18feb9d161..c72f9cbe60 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9782,46 +9782,46 @@ "integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==" }, "@remixproject/engine": { - "version": "0.3.26", - "resolved": "https://registry.npmjs.org/@remixproject/engine/-/engine-0.3.26.tgz", - "integrity": "sha512-6Rq6aTUyhtXAaoQamAI8ocFSVy2txpGwu1aoYZGrqova/p/tRWn4/+PU713sffyiAQVBCk7C1z/5VKLm7tUYrQ==", + "version": "0.3.28", + "resolved": "https://registry.npmjs.org/@remixproject/engine/-/engine-0.3.28.tgz", + "integrity": "sha512-27SHaCrG3KrPfMa1MYud4tE9xUIJKITEUsql99fhN7x12lOmgGZFjiqIG/WWjCMmT7OMG3vtLayiZrsYkzHCVw==", "requires": { - "@remixproject/plugin-api": "0.3.26", - "@remixproject/plugin-utils": "0.3.26" + "@remixproject/plugin-api": "0.3.28", + "@remixproject/plugin-utils": "0.3.28" } }, "@remixproject/engine-web": { - "version": "0.3.26", - "resolved": "https://registry.npmjs.org/@remixproject/engine-web/-/engine-web-0.3.26.tgz", - "integrity": "sha512-QSW9KVOgHWuRDNqTZIp1jjBeDOXlXQZWYABgljTsC+Nig8EwlyRTfIza9PuCb+MDYT/kID8VgSPXnMrlOtvhjQ==", + "version": "0.3.28", + "resolved": "https://registry.npmjs.org/@remixproject/engine-web/-/engine-web-0.3.28.tgz", + "integrity": "sha512-JTwTuonW+pI7WsSsgGHAzPynGjIdG34VnPrspR9XKBQO4+NX7m3lbNIMUUviyrbqIoGiGtgYd/ry98uLpTHr4g==", "requires": { - "@remixproject/engine": "0.3.26", - "@remixproject/plugin-api": "0.3.26", - "@remixproject/plugin-utils": "0.3.26" + "@remixproject/engine": "0.3.28", + "@remixproject/plugin-api": "0.3.28", + "@remixproject/plugin-utils": "0.3.28" } }, "@remixproject/plugin": { - "version": "0.3.26", - "resolved": "https://registry.npmjs.org/@remixproject/plugin/-/plugin-0.3.26.tgz", - "integrity": "sha512-j0sgl4yDOVJLCuRWOEb/Wo9/fumrWlIpsO0MrtficuhVc1FGhZxKVv8Vdu3x3HgWhXkuhLUMs8VoJ1Ntd9ZkUQ==", + "version": "0.3.28", + "resolved": "https://registry.npmjs.org/@remixproject/plugin/-/plugin-0.3.28.tgz", + "integrity": "sha512-sw+cow3GKAcEacXLvdJwtHHIphPty4KRMZ6tcQHdtx/iCKTMNdw2hribKPnvTO+6mXE+4oAKCrFqeTdVp/rd1w==", "requires": { - "@remixproject/plugin-api": "0.3.26", - "@remixproject/plugin-utils": "0.3.26", + "@remixproject/plugin-api": "0.3.28", + "@remixproject/plugin-utils": "0.3.28", "events": "3.2.0" } }, "@remixproject/plugin-api": { - "version": "0.3.26", - "resolved": "https://registry.npmjs.org/@remixproject/plugin-api/-/plugin-api-0.3.26.tgz", - "integrity": "sha512-6vR9nVF4EfXDHA0r8MrlLyVYRMJMG7J3Y3jzpaAumetW+YpvfJqgE/uhGgm2me2ypDM8vW0POQGhRaGeZTGwFg==", + "version": "0.3.28", + "resolved": "https://registry.npmjs.org/@remixproject/plugin-api/-/plugin-api-0.3.28.tgz", + "integrity": "sha512-tOzVFR504037weEkNHQGZsk+Ebxcu/xnBsVCkJaQaBMb+H/i6YevKQmoR1aGcH+JfQxc8eS8LGC65MaV8zmcWg==", "requires": { - "@remixproject/plugin-utils": "0.3.26" + "@remixproject/plugin-utils": "0.3.28" } }, "@remixproject/plugin-utils": { - "version": "0.3.26", - "resolved": "https://registry.npmjs.org/@remixproject/plugin-utils/-/plugin-utils-0.3.26.tgz", - "integrity": "sha512-K/v+TXYOMV13dLf1LEgiF7CfqbOc105hC/2oapkSoHKSf3WVyWIUDlBsChRQl7osfUs/zT93q2+jNlLofWQUxg==", + "version": "0.3.28", + "resolved": "https://registry.npmjs.org/@remixproject/plugin-utils/-/plugin-utils-0.3.28.tgz", + "integrity": "sha512-5CayTgMqRiOguanTy6kpuRgCmjEFLUu2K4Rs7Zmt+GOzHucmwkDxYQO+3hFv0Jz/M/6yC5wkKYTx8vfPLLdEBQ==", "requires": { "tslib": "2.0.1" }, @@ -9834,13 +9834,13 @@ } }, "@remixproject/plugin-webview": { - "version": "0.3.26", - "resolved": "https://registry.npmjs.org/@remixproject/plugin-webview/-/plugin-webview-0.3.26.tgz", - "integrity": "sha512-hqWaFapUfcAX2Odsj0ANKvLXQbkzZ/xNONMqE0wRxFRYTIhFGZqFzJVzwSD+U4bSehP1JtzkrxwKBqNyjz5GxQ==", + "version": "0.3.28", + "resolved": "https://registry.npmjs.org/@remixproject/plugin-webview/-/plugin-webview-0.3.28.tgz", + "integrity": "sha512-DodSkN0vMSo2DEEoBOWyKxC/ElvBA826vhX+JVGXA8HGS45aavplZIN967hsc+SdzjV1UZfSNKEHttLGwM1BIw==", "requires": { - "@remixproject/plugin": "0.3.26", - "@remixproject/plugin-api": "0.3.26", - "@remixproject/plugin-utils": "0.3.26", + "@remixproject/plugin": "0.3.28", + "@remixproject/plugin-api": "0.3.28", + "@remixproject/plugin-utils": "0.3.28", "axios": "^0.21.1" }, "dependencies": { @@ -9855,13 +9855,13 @@ } }, "@remixproject/plugin-ws": { - "version": "0.3.26", - "resolved": "https://registry.npmjs.org/@remixproject/plugin-ws/-/plugin-ws-0.3.26.tgz", - "integrity": "sha512-Nerd/2vGb96G6B8pGRCRNAGlO97KnJpbFmpa47SYipgjaq5Yj5iCUY+fbQzMWdGW2W4BrUPE+YBZCkq/KlfbGw==", + "version": "0.3.28", + "resolved": "https://registry.npmjs.org/@remixproject/plugin-ws/-/plugin-ws-0.3.28.tgz", + "integrity": "sha512-i3He9t4qvcBQxzshFx66D6drqLlySmV7Cb+NeYtMOYlWxQSJtUakp/Px1Tl3IDFQXDfpXxvDvYhn2w0AWPBOqw==", "requires": { - "@remixproject/plugin": "0.3.26", - "@remixproject/plugin-api": "0.3.26", - "@remixproject/plugin-utils": "0.3.26" + "@remixproject/plugin": "0.3.28", + "@remixproject/plugin-api": "0.3.28", + "@remixproject/plugin-utils": "0.3.28" } }, "@restart/context": { diff --git a/tsconfig.base.json b/tsconfig.base.json index 8105a813ef..d9e148acdb 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -40,6 +40,7 @@ ], "@remix-project/remixd": ["dist/libs/remixd/index.js"], "@remix-ui/tree-view": ["libs/remix-ui/tree-view/src/index.ts"], + "@remix-ui/search": ["libs/remix-ui/search/src/index.ts"], "@remix-ui/debugger-ui": ["libs/remix-ui/debugger-ui/src/index.ts"], "@remix-ui/utils": ["libs/remix-ui/utils/src/index.ts"], "@remix-ui/clipboard": ["libs/remix-ui/clipboard/src/index.ts"], diff --git a/workspace.json b/workspace.json index dc00725dc8..98dcecd3ff 100644 --- a/workspace.json +++ b/workspace.json @@ -1108,6 +1108,21 @@ } } }, + "remix-ui-search": { + "root": "libs/remix-ui/search", + "sourceRoot": "libs/remix-ui/search/src", + "projectType": "library", + "architect": { + "lint": { + "builder": "@nrwl/linter:lint", + "options": { + "linter": "eslint", + "tsConfig": ["libs/remix-ui/search/tsconfig.lib.json"], + "exclude": ["**/node_modules/**", "!libs/remix-ui/search/**/*"] + } + } + } + }, "remix-ui-panel": { "root": "libs/remix-ui/panel", "sourceRoot": "libs/remix-ui/panel/src",