From 0055fc36c6ed21a3ba25e89ef08320460fc6d793 Mon Sep 17 00:00:00 2001 From: Mai Trung Duc Date: Fri, 23 Jun 2023 14:19:13 +0800 Subject: [PATCH] feat: add all shape attrs, search by attr --- README.md | 11 +- package.json | 2 +- src/pages/panel/components/Attributes.tsx | 202 ++++++++++-------- .../panel/components/InspectedElement.tsx | 33 ++- src/pages/panel/components/Panel.scss | 105 +++++---- src/pages/panel/components/Panel.tsx | 24 ++- src/pages/panel/components/constants.ts | 105 ++++++++- .../panel/devtools/konvaDevtoolsSelection.ts | 60 +++--- src/pages/panel/index.tsx | 5 - 9 files changed, 378 insertions(+), 169 deletions(-) diff --git a/README.md b/README.md index b49e46f..7e640d3 100755 --- a/README.md +++ b/README.md @@ -31,13 +31,12 @@ To Develop the extension: - Run `yarn install` or `npm install` - Run `yarn dev` (for Chrome/Edge) or `yarn dev:firefox` for Firefox -Next drag `dist` folder to the following for the browser you're using: +After that, a `dist` folder will be generated, next based on your browser do the following +- Chrome: open `chrome://extensions/` and drag `dist` folder there +- Edge: open `edge://extensions/` and drag `dist` folder there +- Firefox: open `about:debugging#/runtime/this-firefox` > Load Temporary Add > Select any file in the `dist` folder -- Chrome: `chrome://extensions/` -- Edge: `edge://extensions/` -- Firefox: `about:debugging#/runtime/this-firefox` > Load Temporary Add > Select any file in the `dist` folder - -> Note: for Firefox, to make background script + popup page work on load, right click the Konva extension icon on browser bar -> Always allow.... +> Note: for Firefox, to make background script + popup page work on load, right click the Konva extension icon on browser bar -> select "Always allow...."" # Build To build project for publish, run `yarn build` (for Chrome/Edge) or `yarn build:firefox` for Firefox diff --git a/package.json b/package.json index fadbfd1..3a2a666 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "konva-inspector", - "version": "0.0.11", + "version": "0.0.12", "description": "Devtools for your Konva App", "license": "MIT", "repository": { diff --git a/src/pages/panel/components/Attributes.tsx b/src/pages/panel/components/Attributes.tsx index b339d65..216853f 100644 --- a/src/pages/panel/components/Attributes.tsx +++ b/src/pages/panel/components/Attributes.tsx @@ -1,9 +1,12 @@ -import React from "react"; +import React, { useState } from "react"; import { bridge } from ".."; import CopyToClipboard from "./CopyToClipboard"; import { IAttr } from "./constants"; +import DownArrow from "./DownArrow"; +import RightArrow from "./RightArrow"; interface IProps { + attrSearch: string; title: string; nodeAttrs: Record; attrs: IAttr[]; @@ -12,21 +15,40 @@ interface IProps { } export default function Attributes({ + attrSearch, title, nodeAttrs, attrs, custom, updateAttr, }: IProps) { + const [expanded, setExpanded] = useState(true); + const copyToClipBoard = () => { bridge( `window.copy(window.__KONVA_DEVTOOLS_GLOBAL_HOOK__ && window.__KONVA_DEVTOOLS_GLOBAL_HOOK__.selection.selected().attrs)` ); }; + const renderArrow = () => { + return ( +
setExpanded((v) => !v)} + > + {expanded ? : } +
+ ); + }; + + const filteredAttrs = attrs.filter((item) => + item.name.toLowerCase().startsWith(attrSearch.toLowerCase()) + ); + return (
+ {renderArrow()}
{title}
-
- {attrs.map((item) => { - let input; + {expanded && ( +
+ {filteredAttrs.map((item) => { + let input; - switch (item.type) { - case "boolean": { - input = ( - updateAttr(item.name, e.target.checked)} - /> - ); - break; - } - case "number": { - input = ( - - updateAttr( - item.name, - isNaN(e.target.valueAsNumber) - ? null // JSON.stringify will not preserve undefined, so we have to use null here - : e.target.valueAsNumber - ) - } - min={item.min} - /> - ); - break; - } - case "json": { - input = ( -