Enhance/more ns plugin api (#4828)

* improve(plugin): WIP add settings schema

* improve(plugin): add identity for settings modal

* improve(plugin): WIP add settings input

* fix(ui): scrollbar overlay of modal panel content

* improve(plugin): WIP add more render types of setting item

* improve(plugin): WIP polish settings items

* improve(plugin): WIP settings list of plugins

* improve(plugin): more settings types & polish releated ui

* fix(plugin): sometimes disable plugin not work

* improve(plugin): polish ui of plugin settings

* fix(dev): warning of lint

* improve(plugin): add api of settings changed

* chore: build libs core

* fix(ui): width of settings panel wrap

* improve(plugin): separate layouts data from settings aio file

* imporve(plugin): container size of single plugin settings

* fix: add missing state

* improve(plugin): add Git ns

* improve(plugin): git related api

* improve(api): type of git result

* chore: build libs core

* fix(dev): kondo lint

* fix(plugin): use cdn sdk when js entry

* chore: build libs core

* fix(plugin): env condition

* improve(plugin): add UI ns

* fix(api): arguments of datascript query

* enhance(api): manageable message instance of UI tools

* enhance(api): WIP add experiments api

* enhance(api): WIP add resources state of plugin

* improve(plugin): add status of loading script resources

* improve(plugin): more opts for script loader

* improve(plugin): WIP add fenced code renderer hook

* improve(plugin): fenced code renderer hook

* fix(plugin): resource root path of plugin fs location

* imporve(plugin): support local files for loading scripts

* improve(plugin): types of expirements api

* fix: typo of class

* enhance(api): add namespace related apis

* enhance(api): add linked refrences related apis

* enhance(plugin): add sample links to related api comments

* improve(plugin): add db changed hook & optimize strategy of caller for hooks

* improve(plugin): compatible commands registration for old sdk

* improve(plugin): collect user sdk version for plugin local

* improve(plugin): add internal callable apis for user sdk

* chore(plugin): missing files & bump libs version

* improve(plugin): compatiable for old sdk about hook messaging optimization

* improve(plugin): db hook optimization for old sdk

* enhance(ux): auto focus searchbar when open plugins list

* improve(plugin): api of a hook from specific block changed event

* improve(plugin): api of db block change hook

* improve(plugin): add show bracket user config of api

* improve(plugin): api of db block change hook

* fix(api): toggle collapsed of block

* improve(api): try to init grpah with git before exec git commands

* improve(plugin): attributes of sandbox container

* improve(dev): support register command with keybinding

* improve(plugin): add api of register shortcut command

* fix(plugin): reubild slash commands when new command registration

* fix(dev): lint

* improve(dev): lint script of libs codebase

* chore(dev): remove useless codes

* improve(plugin):sanitize path string of plugin repo value

* fix(plugin): rebuild commands list when unregister a plugin

* fix(ui): overflow width of query result table

* chore: rebuild libs core

* improve(plugin): add assets related apis

* chore: rebuild libs core

* improve(plugin): support replace state of into block in page api

* improve(plugin): prepend/append child block in page

* improve(plugin): polished exceptions message of plugin update/install

* fix(plugin): update settings within gui

* improve(ux): debounce change event of input for plugin settings gui

* chore: rebuild libs core

* enhance(plugin): catch exception of hook plugin
This commit is contained in:
Charlie
2022-04-21 18:43:16 +08:00
committed by GitHub
parent a87e5ea0fa
commit 79bc33e1e3
35 changed files with 3444 additions and 937 deletions

View File

@@ -3,7 +3,8 @@
[frontend.util :as util]
[frontend.ui :as ui]
[frontend.handler.plugin :as plugin-handler]
[cljs-bean.core :as bean]))
[cljs-bean.core :as bean]
[goog.functions :refer [debounce]]))
(rum/defc edit-settings-file
[pid {:keys [class]}]
@@ -24,10 +25,10 @@
(let [input-as (util/safe-lower-case (or inputAs (name type)))
input-as (if (= input-as "string") :text (keyword input-as))]
[:input
{:class (util/classnames [{:form-input (not (contains? #{:color :range} input-as))}])
:type (name input-as)
:value (or val default)
:on-change #(update-setting! key (util/evalue %))}])]])
{:class (util/classnames [{:form-input (not (contains? #{:color :range} input-as))}])
:type (name input-as)
:defaultValue (or val default)
:on-change (debounce #(update-setting! key (util/evalue %)) 1000)}])]])
(rum/defc render-item-toggle
[val {:keys [key title description default]} update-setting!]
@@ -77,12 +78,11 @@
[schema ^js pl]
(let [^js _settings (.-settings pl)
pid (.-id pl)
[settings, set-settings] (rum/use-state nil)
[settings, set-settings] (rum/use-state (bean/->clj (.toJSON _settings)))
update-setting! (fn [k v] (.set _settings (name k) (bean/->js v)))]
(rum/use-effect!
(fn []
(set-settings (bean/->clj (.toJSON _settings)))
(let [on-change (fn [^js s]
(when-let [s (bean/->clj s)]
(set-settings s)))]