@next-libs/visual-builder 1.4.1 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/interfaces/brick-visualization.js.map +1 -1
- package/dist/cjs/visual-property-form/VisualPropertyForm.js +88 -26
- package/dist/cjs/visual-property-form/VisualPropertyForm.js.map +1 -1
- package/dist/cjs/visual-property-form/components/CodeEditor/CodeEditorFormItem.js +5 -2
- package/dist/cjs/visual-property-form/components/CodeEditor/CodeEditorFormItem.js.map +1 -1
- package/dist/cjs/visual-property-form/components/ListEditor/ListEditor.js +6 -0
- package/dist/cjs/visual-property-form/components/ListEditor/ListEditor.js.map +1 -1
- package/dist/cjs/visual-property-form/components/MenuEditor/MenuEditorItem.js +1 -1
- package/dist/cjs/visual-property-form/components/MenuEditor/MenuEditorItem.js.map +1 -1
- package/dist/cjs/visual-property-form/processor.js +29 -11
- package/dist/cjs/visual-property-form/processor.js.map +1 -1
- package/dist/esm/interfaces/brick-visualization.js.map +1 -1
- package/dist/esm/visual-property-form/VisualPropertyForm.js +87 -29
- package/dist/esm/visual-property-form/VisualPropertyForm.js.map +1 -1
- package/dist/esm/visual-property-form/VisualPropertyForm.module.css +15 -4
- package/dist/esm/visual-property-form/components/CodeEditor/CodeEditorFormItem.js +5 -2
- package/dist/esm/visual-property-form/components/CodeEditor/CodeEditorFormItem.js.map +1 -1
- package/dist/esm/visual-property-form/components/ListEditor/ListEditor.js +6 -1
- package/dist/esm/visual-property-form/components/ListEditor/ListEditor.js.map +1 -1
- package/dist/esm/visual-property-form/components/MenuEditor/MenuEditorItem.js +1 -1
- package/dist/esm/visual-property-form/components/MenuEditor/MenuEditorItem.js.map +1 -1
- package/dist/esm/visual-property-form/processor.js +27 -10
- package/dist/esm/visual-property-form/processor.js.map +1 -1
- package/dist/types/interfaces/brick-visualization.d.ts +1 -0
- package/dist/types/visual-property-form/VisualPropertyForm.d.ts +2 -1
- package/dist/types/visual-property-form/processor.d.ts +1 -0
- package/package.json +2 -2
|
@@ -30,6 +30,8 @@ export function CodeEditorFormItem(props) {
|
|
|
30
30
|
};
|
|
31
31
|
}();
|
|
32
32
|
return /*#__PURE__*/React.createElement(Form.Item, {
|
|
33
|
+
labelCol: props.labelCol,
|
|
34
|
+
wrapperCol: props.wrapperCol,
|
|
33
35
|
key: props.name,
|
|
34
36
|
name: props.name,
|
|
35
37
|
label: props.label,
|
|
@@ -41,10 +43,11 @@ export function CodeEditorFormItem(props) {
|
|
|
41
43
|
}]
|
|
42
44
|
}, /*#__PURE__*/React.createElement(CodeEditorItem, _extends({
|
|
43
45
|
tabSize: 2,
|
|
44
|
-
minLines:
|
|
46
|
+
minLines: 3,
|
|
45
47
|
maxLines: 12,
|
|
46
48
|
printMargin: false,
|
|
47
|
-
showLineNumbers:
|
|
49
|
+
showLineNumbers: props.showLineNumbers,
|
|
50
|
+
showGutter: props.showGutter,
|
|
48
51
|
showCopyButton: true,
|
|
49
52
|
showExpandButton: true,
|
|
50
53
|
theme: "tomorrow",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeEditorFormItem.js","names":["React","useState","some","Form","CodeEditorItem","CodeEditorFormItem","props","name","label","rest","hasError","setHasError","handleValidate","err","error","validatorFn","Promise","resolve","reject","required","message","validator"],"sources":["../../../../../src/visual-property-form/components/CodeEditor/CodeEditorFormItem.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { some } from \"lodash\";\nimport { Form } from \"antd\";\nimport { FormItemWrapperProps } from \"@next-libs/forms\";\nimport {\n CodeEditorProps,\n CodeEditorItem,\n Error,\n} from \"@next-libs/code-editor-components\";\n\ninterface CodeEditorItemProps extends CodeEditorProps, FormItemWrapperProps {}\n\nexport function CodeEditorFormItem(\n props: CodeEditorItemProps\n): React.ReactElement {\n const { name, label, ...rest } = props;\n const [hasError, setHasError] = useState(false);\n\n const handleValidate = (err: Error[\"err\"]): void => {\n const error = some(err, [\"type\", \"error\"]);\n setHasError(error);\n };\n\n const validatorFn = async () => {\n if (!hasError) {\n return Promise.resolve();\n } else {\n return Promise.reject(\"请填写正确的 yaml 语法\");\n }\n };\n\n return (\n <Form.Item\n key={props.name}\n name={props.name}\n label={props.label}\n rules={[\n { required: props.required, message: `请输入${props.name}` },\n { validator: validatorFn },\n ]}\n >\n <CodeEditorItem\n tabSize={2}\n minLines={
|
|
1
|
+
{"version":3,"file":"CodeEditorFormItem.js","names":["React","useState","some","Form","CodeEditorItem","CodeEditorFormItem","props","name","label","rest","hasError","setHasError","handleValidate","err","error","validatorFn","Promise","resolve","reject","labelCol","wrapperCol","required","message","validator","showLineNumbers","showGutter"],"sources":["../../../../../src/visual-property-form/components/CodeEditor/CodeEditorFormItem.tsx"],"sourcesContent":["import React, { useState } from \"react\";\nimport { some } from \"lodash\";\nimport { Form } from \"antd\";\nimport { FormItemWrapperProps } from \"@next-libs/forms\";\nimport {\n CodeEditorProps,\n CodeEditorItem,\n Error,\n} from \"@next-libs/code-editor-components\";\n\ninterface CodeEditorItemProps extends CodeEditorProps, FormItemWrapperProps {}\n\nexport function CodeEditorFormItem(\n props: CodeEditorItemProps\n): React.ReactElement {\n const { name, label, ...rest } = props;\n const [hasError, setHasError] = useState(false);\n\n const handleValidate = (err: Error[\"err\"]): void => {\n const error = some(err, [\"type\", \"error\"]);\n setHasError(error);\n };\n\n const validatorFn = async () => {\n if (!hasError) {\n return Promise.resolve();\n } else {\n return Promise.reject(\"请填写正确的 yaml 语法\");\n }\n };\n\n return (\n <Form.Item\n labelCol={props.labelCol}\n wrapperCol={props.wrapperCol}\n key={props.name}\n name={props.name}\n label={props.label}\n rules={[\n { required: props.required, message: `请输入${props.name}` },\n { validator: validatorFn },\n ]}\n >\n <CodeEditorItem\n tabSize={2}\n minLines={3}\n maxLines={12}\n printMargin={false}\n showLineNumbers={props.showLineNumbers}\n showGutter={props.showGutter}\n showCopyButton={true}\n showExpandButton={true}\n theme=\"tomorrow\"\n enableLiveAutocompletion={true}\n onValidate={handleValidate}\n {...rest}\n ></CodeEditorItem>\n </Form.Item>\n );\n}\n"],"mappings":";;;;AAAA,OAAOA,KAAK,IAAIC,QAAQ,QAAQ,OAAO;AACvC,SAASC,IAAI,QAAQ,QAAQ;AAC7B,SAASC,IAAI,QAAQ,MAAM;AAE3B,SAEEC,cAAc,QAET,mCAAmC;AAI1C,OAAO,SAASC,kBAAkB,CAChCC,KAA0B,EACN;EACpB,IAAM;MAAEC,IAAI;MAAEC;IAAe,CAAC,GAAGF,KAAK;IAAdG,IAAI,4BAAKH,KAAK;EACtC,IAAM,CAACI,QAAQ,EAAEC,WAAW,CAAC,GAAGV,QAAQ,CAAC,KAAK,CAAC;EAE/C,IAAMW,cAAc,GAAIC,GAAiB,IAAW;IAClD,IAAMC,KAAK,GAAGZ,IAAI,CAACW,GAAG,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1CF,WAAW,CAACG,KAAK,CAAC;EACpB,CAAC;EAED,IAAMC,WAAW;IAAA,6BAAG,aAAY;MAC9B,IAAI,CAACL,QAAQ,EAAE;QACb,OAAOM,OAAO,CAACC,OAAO,EAAE;MAC1B,CAAC,MAAM;QACL,OAAOD,OAAO,CAACE,MAAM,CAAC,gBAAgB,CAAC;MACzC;IACF,CAAC;IAAA,gBANKH,WAAW;MAAA;IAAA;EAAA,GAMhB;EAED,oBACE,oBAAC,IAAI,CAAC,IAAI;IACR,QAAQ,EAAET,KAAK,CAACa,QAAS;IACzB,UAAU,EAAEb,KAAK,CAACc,UAAW;IAC7B,GAAG,EAAEd,KAAK,CAACC,IAAK;IAChB,IAAI,EAAED,KAAK,CAACC,IAAK;IACjB,KAAK,EAAED,KAAK,CAACE,KAAM;IACnB,KAAK,EAAE,CACL;MAAEa,QAAQ,EAAEf,KAAK,CAACe,QAAQ;MAAEC,OAAO,8BAAQhB,KAAK,CAACC,IAAI;IAAG,CAAC,EACzD;MAAEgB,SAAS,EAAER;IAAY,CAAC;EAC1B,gBAEF,oBAAC,cAAc;IACb,OAAO,EAAE,CAAE;IACX,QAAQ,EAAE,CAAE;IACZ,QAAQ,EAAE,EAAG;IACb,WAAW,EAAE,KAAM;IACnB,eAAe,EAAET,KAAK,CAACkB,eAAgB;IACvC,UAAU,EAAElB,KAAK,CAACmB,UAAW;IAC7B,cAAc,EAAE,IAAK;IACrB,gBAAgB,EAAE,IAAK;IACvB,KAAK,EAAC,UAAU;IAChB,wBAAwB,EAAE,IAAK;IAC/B,UAAU,EAAEb;EAAe,GACvBH,IAAI,EACQ,CACR;AAEhB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
|
|
2
|
-
import React, { useState, useCallback, useMemo } from "react";
|
|
2
|
+
import React, { useState, useEffect, useCallback, useMemo } from "react";
|
|
3
3
|
import { GeneralIcon } from "@next-libs/basic-components";
|
|
4
4
|
import { Form, Popover } from "antd";
|
|
5
5
|
import styles from "./ListEditor.module.css";
|
|
@@ -19,6 +19,11 @@ export function ListEditor(_ref) {
|
|
|
19
19
|
var [list, setList] = useState((value !== null && value !== void 0 ? value : []).map(item => _objectSpread(_objectSpread({}, item), {}, {
|
|
20
20
|
[COLUMN_KEY]: ++key
|
|
21
21
|
})));
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
setList((value !== null && value !== void 0 ? value : []).map(item => _objectSpread(_objectSpread({}, item), {}, {
|
|
24
|
+
[COLUMN_KEY]: ++key
|
|
25
|
+
})));
|
|
26
|
+
}, [value]);
|
|
22
27
|
var handleRemoveItem = useCallback((e, item) => {
|
|
23
28
|
e.stopPropagation();
|
|
24
29
|
var key = item[COLUMN_KEY];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListEditor.js","names":["React","useState","useCallback","useMemo","GeneralIcon","Form","Popover","styles","COLUMN_KEY","Symbol","for","key","ListEditor","name","label","value","required","listItemKey","getDefaultItem","renderFormItem","onChange","list","setList","map","item","handleRemoveItem","e","stopPropagation","newList","filter","handleAddListItem","defaultValue","length","concat","renderListForm","handleOnValuesChange","changeValues","style","minWidth","renderListContent","listContent","index","zIndex","listItem","lib","category","icon","color","padding","border","borderRadius","listEmptyItem","listContainer","message","addListItem","marginRight"],"sources":["../../../../../src/visual-property-form/components/ListEditor/ListEditor.tsx"],"sourcesContent":["import React, { useState, useCallback, useMemo } from \"react\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport { Form, Popover } from \"antd\";\nimport styles from \"./ListEditor.module.css\";\n\nconst COLUMN_KEY = Symbol.for(\"column_key\");\n\ninterface ListEditor {\n name?: string;\n label?: string | React.ReactElement;\n value?: any[];\n required?: boolean;\n listItemKey: string;\n getDefaultItem: (data: any) => Record<string, any>;\n renderFormItem?: (data: any) => React.ReactElement;\n onChange?: (data: any) => void;\n}\n\nlet key = 0;\n\nexport function ListEditor({\n name,\n label,\n value,\n required,\n listItemKey,\n getDefaultItem,\n renderFormItem,\n onChange,\n}: ListEditor): React.ReactElement {\n const [list, setList] = useState<any[]>(\n (value ?? []).map((item) => ({\n ...item,\n [COLUMN_KEY]: ++key,\n }))\n );\n\n const handleRemoveItem = useCallback(\n (e: React.MouseEvent, item: any): void => {\n e.stopPropagation();\n const key = item[COLUMN_KEY];\n const newList = list.filter((item) => item[COLUMN_KEY] !== key);\n setList(newList);\n onChange(newList);\n },\n [list, onChange]\n );\n\n const handleAddListItem = (): void => {\n key++;\n const defaultValue = `newItem(${list.length})`;\n const newList = list.concat([\n { ...getDefaultItem(defaultValue), [COLUMN_KEY]: key },\n ]);\n setList(newList);\n onChange?.(newList);\n };\n\n const renderListForm = useCallback(\n (item: any): React.ReactElement => {\n const handleOnValuesChange = (changeValues: any): void => {\n const key = item[COLUMN_KEY];\n const newList = list.map((item) => {\n if (item[COLUMN_KEY] === key) {\n item = {\n ...item,\n ...changeValues,\n };\n }\n return item;\n });\n setList(newList);\n onChange?.(newList);\n };\n return (\n <Form\n layout=\"horizontal\"\n labelAlign=\"left\"\n labelCol={{\n style: {\n minWidth: \"112px\",\n },\n }}\n onValuesChange={handleOnValuesChange}\n >\n {renderFormItem(item)}\n </Form>\n );\n },\n [list, onChange, renderFormItem]\n );\n\n const renderListContent = useMemo((): React.ReactElement => {\n return (\n <div className={styles.listContent}>\n {list.length ? (\n list.map((item, index) => {\n return (\n <Popover\n key={index}\n overlayStyle={{\n zIndex: 999,\n }}\n content={renderListForm(item)}\n title=\"Detail\"\n trigger=\"click\"\n placement=\"left\"\n >\n <div className={styles.listItem}>\n <span>{item[listItemKey]}</span>\n <span onClick={(e) => handleRemoveItem(e, item)}>\n <GeneralIcon\n icon={{\n lib: \"easyops\",\n category: \"assets-inventory\",\n icon: \"out\",\n color: \"red\",\n }}\n style={{\n padding: \"2px\",\n border: \"1px solid\",\n borderRadius: \"50%\",\n }}\n />\n </span>\n </div>\n </Popover>\n );\n })\n ) : (\n <div className={styles.listEmptyItem}>No data</div>\n )}\n </div>\n );\n }, [list, renderListForm, listItemKey, handleRemoveItem]);\n\n return (\n <div className={styles.listContainer}>\n <Form.Item\n key={name}\n name={name}\n label={label}\n rules={[{ required: required, message: `请输入${name}` }]}\n >\n <div className={styles.listContent}>{renderListContent}</div>\n <span className={styles.addListItem} onClick={handleAddListItem}>\n <GeneralIcon\n icon={{\n lib: \"easyops\",\n category: \"assets-inventory\",\n icon: \"xin\",\n color: \"blue\",\n }}\n style={{\n marginRight: \"4px\",\n }}\n />\n 添加\n </span>\n </Form.Item>\n </div>\n );\n}\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,WAAW,EAAEC,OAAO,QAAQ,OAAO;
|
|
1
|
+
{"version":3,"file":"ListEditor.js","names":["React","useState","useEffect","useCallback","useMemo","GeneralIcon","Form","Popover","styles","COLUMN_KEY","Symbol","for","key","ListEditor","name","label","value","required","listItemKey","getDefaultItem","renderFormItem","onChange","list","setList","map","item","handleRemoveItem","e","stopPropagation","newList","filter","handleAddListItem","defaultValue","length","concat","renderListForm","handleOnValuesChange","changeValues","style","minWidth","renderListContent","listContent","index","zIndex","listItem","lib","category","icon","color","padding","border","borderRadius","listEmptyItem","listContainer","message","addListItem","marginRight"],"sources":["../../../../../src/visual-property-form/components/ListEditor/ListEditor.tsx"],"sourcesContent":["import React, { useState, useEffect, useCallback, useMemo } from \"react\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport { Form, Popover } from \"antd\";\nimport styles from \"./ListEditor.module.css\";\n\nconst COLUMN_KEY = Symbol.for(\"column_key\");\n\ninterface ListEditor {\n name?: string;\n label?: string | React.ReactElement;\n value?: any[];\n required?: boolean;\n listItemKey: string;\n getDefaultItem: (data: any) => Record<string, any>;\n renderFormItem?: (data: any) => React.ReactElement;\n onChange?: (data: any) => void;\n}\n\nlet key = 0;\n\nexport function ListEditor({\n name,\n label,\n value,\n required,\n listItemKey,\n getDefaultItem,\n renderFormItem,\n onChange,\n}: ListEditor): React.ReactElement {\n const [list, setList] = useState<any[]>(\n (value ?? []).map((item) => ({\n ...item,\n [COLUMN_KEY]: ++key,\n }))\n );\n\n useEffect(() => {\n setList(\n (value ?? []).map((item) => ({\n ...item,\n [COLUMN_KEY]: ++key,\n }))\n );\n }, [value]);\n\n const handleRemoveItem = useCallback(\n (e: React.MouseEvent, item: any): void => {\n e.stopPropagation();\n const key = item[COLUMN_KEY];\n const newList = list.filter((item) => item[COLUMN_KEY] !== key);\n setList(newList);\n onChange(newList);\n },\n [list, onChange]\n );\n\n const handleAddListItem = (): void => {\n key++;\n const defaultValue = `newItem(${list.length})`;\n const newList = list.concat([\n { ...getDefaultItem(defaultValue), [COLUMN_KEY]: key },\n ]);\n setList(newList);\n onChange?.(newList);\n };\n\n const renderListForm = useCallback(\n (item: any): React.ReactElement => {\n const handleOnValuesChange = (changeValues: any): void => {\n const key = item[COLUMN_KEY];\n const newList = list.map((item) => {\n if (item[COLUMN_KEY] === key) {\n item = {\n ...item,\n ...changeValues,\n };\n }\n return item;\n });\n setList(newList);\n onChange?.(newList);\n };\n return (\n <Form\n layout=\"horizontal\"\n labelAlign=\"left\"\n labelCol={{\n style: {\n minWidth: \"112px\",\n },\n }}\n onValuesChange={handleOnValuesChange}\n >\n {renderFormItem(item)}\n </Form>\n );\n },\n [list, onChange, renderFormItem]\n );\n\n const renderListContent = useMemo((): React.ReactElement => {\n return (\n <div className={styles.listContent}>\n {list.length ? (\n list.map((item, index) => {\n return (\n <Popover\n key={index}\n overlayStyle={{\n zIndex: 999,\n }}\n content={renderListForm(item)}\n title=\"Detail\"\n trigger=\"click\"\n placement=\"left\"\n >\n <div className={styles.listItem}>\n <span>{item[listItemKey]}</span>\n <span onClick={(e) => handleRemoveItem(e, item)}>\n <GeneralIcon\n icon={{\n lib: \"easyops\",\n category: \"assets-inventory\",\n icon: \"out\",\n color: \"red\",\n }}\n style={{\n padding: \"2px\",\n border: \"1px solid\",\n borderRadius: \"50%\",\n }}\n />\n </span>\n </div>\n </Popover>\n );\n })\n ) : (\n <div className={styles.listEmptyItem}>No data</div>\n )}\n </div>\n );\n }, [list, renderListForm, listItemKey, handleRemoveItem]);\n\n return (\n <div className={styles.listContainer}>\n <Form.Item\n key={name}\n name={name}\n label={label}\n rules={[{ required: required, message: `请输入${name}` }]}\n >\n <div className={styles.listContent}>{renderListContent}</div>\n <span className={styles.addListItem} onClick={handleAddListItem}>\n <GeneralIcon\n icon={{\n lib: \"easyops\",\n category: \"assets-inventory\",\n icon: \"xin\",\n color: \"blue\",\n }}\n style={{\n marginRight: \"4px\",\n }}\n />\n 添加\n </span>\n </Form.Item>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuEditorItem.js","names":["React","useState","useEffect","Form","Select","Tooltip","GeneralIcon","InstanceApi_getDetail","MenuEditorItem","props","options","setOptions","getMenu","result","projectId","fields","menus","map","item","value","menuId","label","handleMenuSettingClick","menuSettingClick","display","alignItems","name","required","message","width","input","option","toLocaleLowerCase","indexOf","fontSize","
|
|
1
|
+
{"version":3,"file":"MenuEditorItem.js","names":["React","useState","useEffect","Form","Select","Tooltip","GeneralIcon","InstanceApi_getDetail","MenuEditorItem","props","options","setOptions","getMenu","result","projectId","fields","menus","map","item","value","menuId","label","handleMenuSettingClick","menuSettingClick","display","alignItems","name","required","message","width","input","option","toLocaleLowerCase","indexOf","fontSize","marginBottom","marginLeft","cursor","category","color","icon","lib"],"sources":["../../../../../src/visual-property-form/components/MenuEditor/MenuEditorItem.tsx"],"sourcesContent":["import React, { useState, useEffect } from \"react\";\nimport { Form, Select, Tooltip } from \"antd\";\nimport { GeneralIcon } from \"@next-libs/basic-components\";\nimport { InstanceApi_getDetail } from \"@next-sdk/cmdb-sdk\";\n\ninterface MenuEditorItemProps {\n name?: string;\n label?: string | React.ReactElement;\n value?: string;\n required?: boolean;\n projectId?: string;\n menuSettingClick?: () => void;\n}\n\nexport function MenuEditorItem(props: MenuEditorItemProps): React.ReactElement {\n const [options, setOptions] = useState([]);\n\n const getMenu = async () => {\n const result = await InstanceApi_getDetail(\n \"PROJECT_MICRO_APP\",\n props.projectId,\n {\n fields: \"menus.menuId\",\n }\n );\n\n const options = result.menus.map((item: Record<string, any>) => ({\n value: item.menuId,\n label: item.menuId,\n }));\n setOptions(options);\n };\n\n const handleMenuSettingClick = () => {\n props.menuSettingClick();\n };\n\n useEffect(() => {\n if (props.projectId) {\n getMenu();\n }\n }, []);\n\n return (\n <div\n style={{\n display: \"flex\",\n alignItems: \"center\",\n }}\n >\n <Form.Item\n key={props.name}\n name={props.name}\n label={props.label}\n rules={[{ required: props.required, message: `请输入${props.name}` }]}\n >\n <Select\n style={{\n width: \"300px\",\n }}\n options={options}\n showSearch\n allowClear\n placeholder=\"Select a menu id\"\n filterOption={(input, option) =>\n (option.label as string)\n .toLocaleLowerCase()\n .indexOf(input.toLocaleLowerCase()) >= 0 ||\n (option.value as string)\n .toLocaleLowerCase()\n .indexOf(input.toLocaleLowerCase()) >= 0\n }\n />\n </Form.Item>\n <div\n style={{\n fontSize: \"18px\",\n marginBottom: \"8px\",\n marginLeft: \"10px\",\n cursor: \"pointer\",\n display: \"inline-block\",\n }}\n >\n <Tooltip title=\"配置菜单数据\">\n {\" \"}\n <GeneralIcon\n icon={{\n category: \"app\",\n color: \"blue\",\n icon: \"launchpad-setting\",\n lib: \"easyops\",\n }}\n onClick={handleMenuSettingClick}\n />\n </Tooltip>\n </div>\n </div>\n );\n}\n"],"mappings":";AAAA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAClD,SAASC,IAAI,EAAEC,MAAM,EAAEC,OAAO,QAAQ,MAAM;AAC5C,SAASC,WAAW,QAAQ,6BAA6B;AACzD,SAASC,qBAAqB,QAAQ,oBAAoB;AAW1D,OAAO,SAASC,cAAc,CAACC,KAA0B,EAAsB;EAC7E,IAAM,CAACC,OAAO,EAAEC,UAAU,CAAC,GAAGV,QAAQ,CAAC,EAAE,CAAC;EAE1C,IAAMW,OAAO;IAAA,6BAAG,aAAY;MAC1B,IAAMC,MAAM,SAASN,qBAAqB,CACxC,mBAAmB,EACnBE,KAAK,CAACK,SAAS,EACf;QACEC,MAAM,EAAE;MACV,CAAC,CACF;MAED,IAAML,OAAO,GAAGG,MAAM,CAACG,KAAK,CAACC,GAAG,CAAEC,IAAyB,KAAM;QAC/DC,KAAK,EAAED,IAAI,CAACE,MAAM;QAClBC,KAAK,EAAEH,IAAI,CAACE;MACd,CAAC,CAAC,CAAC;MACHT,UAAU,CAACD,OAAO,CAAC;IACrB,CAAC;IAAA,gBAdKE,OAAO;MAAA;IAAA;EAAA,GAcZ;EAED,IAAMU,sBAAsB,GAAG,MAAM;IACnCb,KAAK,CAACc,gBAAgB,EAAE;EAC1B,CAAC;EAEDrB,SAAS,CAAC,MAAM;IACd,IAAIO,KAAK,CAACK,SAAS,EAAE;MACnBF,OAAO,EAAE;IACX;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,oBACE;IACE,KAAK,EAAE;MACLY,OAAO,EAAE,MAAM;MACfC,UAAU,EAAE;IACd;EAAE,gBAEF,oBAAC,IAAI,CAAC,IAAI;IACR,GAAG,EAAEhB,KAAK,CAACiB,IAAK;IAChB,IAAI,EAAEjB,KAAK,CAACiB,IAAK;IACjB,KAAK,EAAEjB,KAAK,CAACY,KAAM;IACnB,KAAK,EAAE,CAAC;MAAEM,QAAQ,EAAElB,KAAK,CAACkB,QAAQ;MAAEC,OAAO,8BAAQnB,KAAK,CAACiB,IAAI;IAAG,CAAC;EAAE,gBAEnE,oBAAC,MAAM;IACL,KAAK,EAAE;MACLG,KAAK,EAAE;IACT,CAAE;IACF,OAAO,EAAEnB,OAAQ;IACjB,UAAU;IACV,UAAU;IACV,WAAW,EAAC,kBAAkB;IAC9B,YAAY,EAAE,CAACoB,KAAK,EAAEC,MAAM,KACzBA,MAAM,CAACV,KAAK,CACVW,iBAAiB,EAAE,CACnBC,OAAO,CAACH,KAAK,CAACE,iBAAiB,EAAE,CAAC,IAAI,CAAC,IACzCD,MAAM,CAACZ,KAAK,CACVa,iBAAiB,EAAE,CACnBC,OAAO,CAACH,KAAK,CAACE,iBAAiB,EAAE,CAAC,IAAI;EAC1C,EACD,CACQ,eACZ;IACE,KAAK,EAAE;MACLE,QAAQ,EAAE,MAAM;MAChBC,YAAY,EAAE,KAAK;MACnBC,UAAU,EAAE,MAAM;MAClBC,MAAM,EAAE,SAAS;MACjBb,OAAO,EAAE;IACX;EAAE,gBAEF,oBAAC,OAAO;IAAC,KAAK,EAAC;EAAQ,GACpB,GAAG,eACJ,oBAAC,WAAW;IACV,IAAI,EAAE;MACJc,QAAQ,EAAE,KAAK;MACfC,KAAK,EAAE,MAAM;MACbC,IAAI,EAAE,mBAAmB;MACzBC,GAAG,EAAE;IACP,CAAE;IACF,OAAO,EAAEnB;EAAuB,EAChC,CACM,CACN,CACF;AAEV"}
|
|
@@ -5,7 +5,7 @@ import { safeDump, JSON_SCHEMA, safeLoad } from "js-yaml";
|
|
|
5
5
|
import { omit, isEmpty, groupBy } from "lodash";
|
|
6
6
|
import { supportBasicType, supportMenuType, OTHER_FORM_ITEM_FIELD, defaultCommonProps, groupI18nMap } from "./constant";
|
|
7
7
|
export function isAdvanceMode(value) {
|
|
8
|
-
if (typeof value === "string" && (value.startsWith("<%") || value.includes("${"))) {
|
|
8
|
+
if (typeof value === "string" && (value.startsWith("<%") || value.includes("${")) || typeof value === "object") {
|
|
9
9
|
return true;
|
|
10
10
|
}
|
|
11
11
|
return false;
|
|
@@ -13,10 +13,19 @@ export function isAdvanceMode(value) {
|
|
|
13
13
|
export function mergeProperties() {
|
|
14
14
|
var propertyList = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
15
15
|
var brickProperties = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
16
|
-
return propertyList === null || propertyList === void 0 ? void 0 : propertyList.map(item =>
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
return propertyList === null || propertyList === void 0 ? void 0 : propertyList.map(item => {
|
|
17
|
+
if (isAdvanceMode(brickProperties === null || brickProperties === void 0 ? void 0 : brickProperties[item.name])) {
|
|
18
|
+
return _objectSpread(_objectSpread({}, item), {}, {
|
|
19
|
+
mode: ItemModeType.Advanced,
|
|
20
|
+
value: yamlStringify(brickProperties === null || brickProperties === void 0 ? void 0 : brickProperties[item.name])
|
|
21
|
+
});
|
|
22
|
+
} else {
|
|
23
|
+
return _objectSpread(_objectSpread({}, item), {}, {
|
|
24
|
+
mode: ItemModeType.Normal,
|
|
25
|
+
value: brickProperties === null || brickProperties === void 0 ? void 0 : brickProperties[item.name]
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
});
|
|
20
29
|
}
|
|
21
30
|
export function yamlStringify(value) {
|
|
22
31
|
var indent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;
|
|
@@ -26,7 +35,7 @@ export function yamlStringify(value) {
|
|
|
26
35
|
skipInvalid: true,
|
|
27
36
|
noRefs: true,
|
|
28
37
|
noCompatMode: true
|
|
29
|
-
});
|
|
38
|
+
}).replace(/[\n\r]+$/, "");
|
|
30
39
|
}
|
|
31
40
|
export function yaml(value) {
|
|
32
41
|
return safeLoad(value, {
|
|
@@ -40,7 +49,7 @@ export function matchNoramlMenuValue(value) {
|
|
|
40
49
|
var reg = /<% APP\.getMenu\((.*)\) %>/;
|
|
41
50
|
return ((_value$match = value.match(reg)) === null || _value$match === void 0 ? void 0 : (_value$match$ = _value$match[1]) === null || _value$match$ === void 0 ? void 0 : _value$match$.replace(/'|"/g, "")) || value;
|
|
42
51
|
}
|
|
43
|
-
return value;
|
|
52
|
+
return yamlStringify(value);
|
|
44
53
|
}
|
|
45
54
|
function calcMenuValue(value) {
|
|
46
55
|
if (typeof value === "string") {
|
|
@@ -69,13 +78,16 @@ export function calculateValue() {
|
|
|
69
78
|
var v = brickProperties[item.name];
|
|
70
79
|
obj[item.name] = v;
|
|
71
80
|
if (v !== undefined) {
|
|
72
|
-
if (!supportBasicType.concat(supportMenuType).includes(item.type)
|
|
81
|
+
if (!supportBasicType.concat(supportMenuType).includes(item.type) ||
|
|
82
|
+
// 非已知类型
|
|
83
|
+
typeof v === "object" // 值为object
|
|
84
|
+
) {
|
|
73
85
|
obj[item.name] = yamlStringify(v);
|
|
74
86
|
}
|
|
75
87
|
if (supportMenuType.includes(item.type)) {
|
|
76
88
|
var selected = typeList.find(typeItem => typeItem.name === item.name);
|
|
77
89
|
if ((selected === null || selected === void 0 ? void 0 : selected.mode) === ItemModeType.Advanced) {
|
|
78
|
-
obj[item.name] = v;
|
|
90
|
+
obj[item.name] = yamlStringify(v);
|
|
79
91
|
} else {
|
|
80
92
|
obj[item.name] = matchNoramlMenuValue(v);
|
|
81
93
|
}
|
|
@@ -93,13 +105,18 @@ export function calculateValue() {
|
|
|
93
105
|
* 1. 当前属性的类型不是内置支持的类型
|
|
94
106
|
* 2. 当前属性虽然是支持的类型,但是当前切换到高级模式编辑
|
|
95
107
|
* 3. 不是构件本身申明的属性,为 html 共有的通用属性,目前统一放在 others 的编辑器中
|
|
108
|
+
* 4. 表达式也不需要解析成 JSON 模式
|
|
96
109
|
* @param field 字段值
|
|
97
110
|
* @param typeList 属性列表包含每个属性的类型和当前编辑模式
|
|
98
111
|
* @return boolean
|
|
99
112
|
*/
|
|
100
113
|
|
|
101
114
|
export function isUseYamlParse(field, typeList) {
|
|
102
|
-
if (typeof field.value !== "string")
|
|
115
|
+
if (typeof field.value !== "string") {
|
|
116
|
+
return false;
|
|
117
|
+
} else if (field.value.startsWith("<%") || field.value.includes("${")) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
103
120
|
if (field.key === OTHER_FORM_ITEM_FIELD) return true;
|
|
104
121
|
var find = typeList === null || typeList === void 0 ? void 0 : typeList.find(item => item.name === field.key);
|
|
105
122
|
if (find) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processor.js","names":["i18nText","ItemModeType","safeDump","JSON_SCHEMA","safeLoad","omit","isEmpty","groupBy","supportBasicType","supportMenuType","OTHER_FORM_ITEM_FIELD","defaultCommonProps","groupI18nMap","isAdvanceMode","value","startsWith","includes","mergeProperties","propertyList","brickProperties","map","item","name","mode","Advanced","Normal","yamlStringify","indent","schema","skipInvalid","noRefs","noCompatMode","yaml","json","matchNoramlMenuValue","reg","match","replace","calcMenuValue","calculateValue","typeList","othersValue","key","find","Object","entries","processValue","reduce","obj","v","undefined","concat","type","selected","typeItem","isUseYamlParse","field","isBasicType","isUseMenuParse","processFormValue","values","formData","groupByType","normals","filter","group","others","groupI18N","i18nData","extractCommonProps","sharedPropertyList"],"sources":["../../../src/visual-property-form/processor.ts"],"sourcesContent":["import { i18nText } from \"@next-core/brick-kit\";\nimport {\n PropertyType,\n UnionPropertyType,\n BrickProperties,\n ItemModeType,\n} from \"../interfaces\";\nimport { safeDump, JSON_SCHEMA, safeLoad } from \"js-yaml\";\nimport { omit, isEmpty, groupBy } from \"lodash\";\nimport {\n supportBasicType,\n supportMenuType,\n OTHER_FORM_ITEM_FIELD,\n defaultCommonProps,\n groupI18nMap,\n} from \"./constant\";\n\nexport function isAdvanceMode(value: unknown): boolean {\n if (\n typeof value === \"string\" &&\n (value.startsWith(\"<%\") || value.includes(\"${\"))\n ) {\n return true;\n }\n\n return false;\n}\n\nexport function mergeProperties(\n propertyList: PropertyType[] = [],\n brickProperties: BrickProperties = {}\n): UnionPropertyType[] {\n return propertyList?.map((item) => ({\n ...item,\n value: brickProperties?.[item.name],\n mode: isAdvanceMode(brickProperties?.[item.name])\n ? ItemModeType.Advanced\n : ItemModeType.Normal,\n }));\n}\n\nexport function yamlStringify(value: unknown, indent = 2): string {\n return safeDump(value, {\n indent,\n schema: JSON_SCHEMA,\n skipInvalid: true,\n noRefs: true,\n noCompatMode: true,\n });\n}\n\nexport function yaml(value: string): any {\n return safeLoad(value, { schema: JSON_SCHEMA, json: true });\n}\n\nexport function matchNoramlMenuValue(value: unknown): unknown {\n if (typeof value === \"string\") {\n const reg = /<% APP\\.getMenu\\((.*)\\) %>/;\n return value.match(reg)?.[1]?.replace(/'|\"/g, \"\") || value;\n }\n return value;\n}\n\nfunction calcMenuValue(value: string): string {\n if (typeof value === \"string\") {\n if (value.startsWith(\"<%\")) {\n return value;\n }\n return `<% APP.getMenu('${value}') %>`;\n }\n return value;\n}\n\nexport function calculateValue(\n propertyList: PropertyType[] = [],\n brickProperties: BrickProperties = {},\n typeList: UnionPropertyType[] = []\n): Record<string, any> {\n const othersValue: Record<string, any> = {};\n for (const [key, value] of Object.entries(brickProperties)) {\n const find = propertyList.find((item) => item.name === key);\n if (!find) {\n othersValue[key] = value;\n }\n }\n\n const processValue = propertyList.reduce((obj: any, item) => {\n const v = brickProperties[item.name];\n obj[item.name] = v;\n if (v !== undefined) {\n if (\n !supportBasicType.concat(supportMenuType).includes(item.type as string)\n ) {\n obj[item.name] = yamlStringify(v);\n }\n\n if (supportMenuType.includes(item.type as string)) {\n const selected = typeList.find(\n (typeItem) => typeItem.name === item.name\n );\n if (selected?.mode === ItemModeType.Advanced) {\n obj[item.name] = v;\n } else {\n obj[item.name] = matchNoramlMenuValue(v);\n }\n }\n }\n return obj;\n }, {});\n\n return {\n ...processValue,\n [OTHER_FORM_ITEM_FIELD]: isEmpty(othersValue)\n ? \"\"\n : yamlStringify(othersValue),\n };\n}\n\n/**\n * @description 判断是否用使用 yaml 把用户输入解析成 JSON 的模式,当前只有以下情况下会进行解析,其他情况不对数据进行处理\n * 1. 当前属性的类型不是内置支持的类型\n * 2. 当前属性虽然是支持的类型,但是当前切换到高级模式编辑\n * 3. 不是构件本身申明的属性,为 html 共有的通用属性,目前统一放在 others 的编辑器中\n * @param field 字段值\n * @param typeList 属性列表包含每个属性的类型和当前编辑模式\n * @return boolean\n */\n\nexport function isUseYamlParse(\n field: { key: string; value: any },\n typeList: UnionPropertyType[]\n): boolean {\n if (typeof field.value !== \"string\") return false;\n\n if (field.key === OTHER_FORM_ITEM_FIELD) return true;\n\n const find = typeList?.find((item) => item.name === field.key);\n\n if (find) {\n if (\n supportMenuType.includes(find.type as string) &&\n find.mode !== ItemModeType.Advanced\n )\n return false;\n\n const isBasicType = supportBasicType.includes(find.type as string);\n\n if (isBasicType && find.mode === ItemModeType.Advanced) return true;\n\n if (!isBasicType) return true;\n }\n\n return false;\n}\n\nexport function isUseMenuParse(\n field: { key: string; value: any },\n typeList: UnionPropertyType[]\n): boolean {\n const item = typeList.find((item) => item.name === field.key);\n if (supportMenuType.includes(item?.type as string)) {\n return true;\n }\n return false;\n}\n\nexport function processFormValue(\n values = {},\n typeList: UnionPropertyType[]\n): Record<string, any> {\n const formData: Record<string, any> = {};\n for (const [key, value] of Object.entries(values)) {\n if (isUseYamlParse({ key, value }, typeList)) {\n formData[key] = yaml(value as any);\n } else if (isUseMenuParse({ key, value }, typeList)) {\n formData[key] = calcMenuValue(value as string);\n } else {\n formData[key] = value;\n }\n }\n\n return {\n ...omit(formData, OTHER_FORM_ITEM_FIELD),\n ...(isEmpty(formData[OTHER_FORM_ITEM_FIELD])\n ? {}\n : formData[OTHER_FORM_ITEM_FIELD]),\n };\n}\n\nexport function groupByType(\n typeList: UnionPropertyType[] = []\n): Array<[string, UnionPropertyType[]]> {\n const normals = typeList.filter((item) => item.group !== \"other\");\n const others = typeList.filter((item) => item.group === \"other\");\n\n return Object.entries(\n groupBy(normals.concat(others), (item) => {\n const group = item.group || \"basic\";\n const groupI18N: Record<string, any> = {\n ...groupI18nMap,\n ...item.groupI18N,\n };\n const i18nData = groupI18N && groupI18N[group];\n if (i18nData) {\n return i18nText(i18nData);\n }\n\n return group;\n })\n );\n}\n\nexport function extractCommonProps(\n typeList: PropertyType[],\n sharedPropertyList?: PropertyType[]\n): PropertyType[] {\n if (isEmpty(typeList)) return [];\n\n if (sharedPropertyList) {\n return sharedPropertyList.concat(typeList);\n }\n\n return defaultCommonProps.concat(typeList);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"processor.js","names":["i18nText","ItemModeType","safeDump","JSON_SCHEMA","safeLoad","omit","isEmpty","groupBy","supportBasicType","supportMenuType","OTHER_FORM_ITEM_FIELD","defaultCommonProps","groupI18nMap","isAdvanceMode","value","startsWith","includes","mergeProperties","propertyList","brickProperties","map","item","name","mode","Advanced","yamlStringify","Normal","indent","schema","skipInvalid","noRefs","noCompatMode","replace","yaml","json","matchNoramlMenuValue","reg","match","calcMenuValue","calculateValue","typeList","othersValue","key","find","Object","entries","processValue","reduce","obj","v","undefined","concat","type","selected","typeItem","isUseYamlParse","field","isBasicType","isUseMenuParse","processFormValue","values","formData","groupByType","normals","filter","group","others","groupI18N","i18nData","extractCommonProps","sharedPropertyList"],"sources":["../../../src/visual-property-form/processor.ts"],"sourcesContent":["import { i18nText } from \"@next-core/brick-kit\";\nimport {\n PropertyType,\n UnionPropertyType,\n BrickProperties,\n ItemModeType,\n} from \"../interfaces\";\nimport { safeDump, JSON_SCHEMA, safeLoad } from \"js-yaml\";\nimport { omit, isEmpty, groupBy } from \"lodash\";\nimport {\n supportBasicType,\n supportMenuType,\n OTHER_FORM_ITEM_FIELD,\n defaultCommonProps,\n groupI18nMap,\n} from \"./constant\";\n\nexport function isAdvanceMode(value: unknown): boolean {\n if (\n (typeof value === \"string\" &&\n (value.startsWith(\"<%\") || value.includes(\"${\"))) ||\n typeof value === \"object\"\n ) {\n return true;\n }\n\n return false;\n}\n\nexport function mergeProperties(\n propertyList: PropertyType[] = [],\n brickProperties: BrickProperties = {}\n): UnionPropertyType[] {\n return propertyList?.map((item) => {\n if (isAdvanceMode(brickProperties?.[item.name])) {\n return {\n ...item,\n mode: ItemModeType.Advanced,\n value: yamlStringify(brickProperties?.[item.name]),\n };\n } else {\n return {\n ...item,\n mode: ItemModeType.Normal,\n value: brickProperties?.[item.name],\n };\n }\n });\n}\n\nexport function yamlStringify(value: unknown, indent = 2): string {\n return safeDump(value, {\n indent,\n schema: JSON_SCHEMA,\n skipInvalid: true,\n noRefs: true,\n noCompatMode: true,\n }).replace(/[\\n\\r]+$/, \"\");\n}\n\nexport function yaml(value: string): any {\n return safeLoad(value, { schema: JSON_SCHEMA, json: true });\n}\n\nexport function matchNoramlMenuValue(value: unknown): unknown {\n if (typeof value === \"string\") {\n const reg = /<% APP\\.getMenu\\((.*)\\) %>/;\n return value.match(reg)?.[1]?.replace(/'|\"/g, \"\") || value;\n }\n return yamlStringify(value);\n}\n\nfunction calcMenuValue(value: string): string {\n if (typeof value === \"string\") {\n if (value.startsWith(\"<%\")) {\n return value;\n }\n return `<% APP.getMenu('${value}') %>`;\n }\n return value;\n}\n\nexport function calculateValue(\n propertyList: PropertyType[] = [],\n brickProperties: BrickProperties = {},\n typeList: UnionPropertyType[] = []\n): Record<string, any> {\n const othersValue: Record<string, any> = {};\n for (const [key, value] of Object.entries(brickProperties)) {\n const find = propertyList.find((item) => item.name === key);\n if (!find) {\n othersValue[key] = value;\n }\n }\n\n const processValue = propertyList.reduce((obj: any, item) => {\n const v = brickProperties[item.name];\n obj[item.name] = v;\n if (v !== undefined) {\n if (\n !supportBasicType\n .concat(supportMenuType)\n .includes(item.type as string) || // 非已知类型\n typeof v === \"object\" // 值为object\n ) {\n obj[item.name] = yamlStringify(v);\n }\n\n if (supportMenuType.includes(item.type as string)) {\n const selected = typeList.find(\n (typeItem) => typeItem.name === item.name\n );\n if (selected?.mode === ItemModeType.Advanced) {\n obj[item.name] = yamlStringify(v);\n } else {\n obj[item.name] = matchNoramlMenuValue(v);\n }\n }\n }\n return obj;\n }, {});\n\n return {\n ...processValue,\n [OTHER_FORM_ITEM_FIELD]: isEmpty(othersValue)\n ? \"\"\n : yamlStringify(othersValue),\n };\n}\n\n/**\n * @description 判断是否用使用 yaml 把用户输入解析成 JSON 的模式,当前只有以下情况下会进行解析,其他情况不对数据进行处理\n * 1. 当前属性的类型不是内置支持的类型\n * 2. 当前属性虽然是支持的类型,但是当前切换到高级模式编辑\n * 3. 不是构件本身申明的属性,为 html 共有的通用属性,目前统一放在 others 的编辑器中\n * 4. 表达式也不需要解析成 JSON 模式\n * @param field 字段值\n * @param typeList 属性列表包含每个属性的类型和当前编辑模式\n * @return boolean\n */\n\nexport function isUseYamlParse(\n field: { key: string; value: any },\n typeList: UnionPropertyType[]\n): boolean {\n if (typeof field.value !== \"string\") {\n return false;\n } else if (field.value.startsWith(\"<%\") || field.value.includes(\"${\")) {\n return false;\n }\n\n if (field.key === OTHER_FORM_ITEM_FIELD) return true;\n\n const find = typeList?.find((item) => item.name === field.key);\n\n if (find) {\n if (\n supportMenuType.includes(find.type as string) &&\n find.mode !== ItemModeType.Advanced\n )\n return false;\n\n const isBasicType = supportBasicType.includes(find.type as string);\n\n if (isBasicType && find.mode === ItemModeType.Advanced) return true;\n\n if (!isBasicType) return true;\n }\n\n return false;\n}\n\nexport function isUseMenuParse(\n field: { key: string; value: any },\n typeList: UnionPropertyType[]\n): boolean {\n const item = typeList.find((item) => item.name === field.key);\n if (supportMenuType.includes(item?.type as string)) {\n return true;\n }\n return false;\n}\n\nexport function processFormValue(\n values = {},\n typeList: UnionPropertyType[]\n): Record<string, any> {\n const formData: Record<string, any> = {};\n for (const [key, value] of Object.entries(values)) {\n if (isUseYamlParse({ key, value }, typeList)) {\n formData[key] = yaml(value as any);\n } else if (isUseMenuParse({ key, value }, typeList)) {\n formData[key] = calcMenuValue(value as string);\n } else {\n formData[key] = value;\n }\n }\n\n return {\n ...omit(formData, OTHER_FORM_ITEM_FIELD),\n ...(isEmpty(formData[OTHER_FORM_ITEM_FIELD])\n ? {}\n : formData[OTHER_FORM_ITEM_FIELD]),\n };\n}\n\nexport function groupByType(\n typeList: UnionPropertyType[] = []\n): Array<[string, UnionPropertyType[]]> {\n const normals = typeList.filter((item) => item.group !== \"other\");\n const others = typeList.filter((item) => item.group === \"other\");\n\n return Object.entries(\n groupBy(normals.concat(others), (item) => {\n const group = item.group || \"basic\";\n const groupI18N: Record<string, any> = {\n ...groupI18nMap,\n ...item.groupI18N,\n };\n const i18nData = groupI18N && groupI18N[group];\n if (i18nData) {\n return i18nText(i18nData);\n }\n\n return group;\n })\n );\n}\n\nexport function extractCommonProps(\n typeList: PropertyType[],\n sharedPropertyList?: PropertyType[]\n): PropertyType[] {\n if (isEmpty(typeList)) return [];\n\n if (sharedPropertyList) {\n return sharedPropertyList.concat(typeList);\n }\n\n return defaultCommonProps.concat(typeList);\n}\n"],"mappings":"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"}
|
|
@@ -28,6 +28,7 @@ export interface UnionPropertyType extends PropertyType {
|
|
|
28
28
|
value?: any;
|
|
29
29
|
jsonSchema?: Record<string, any>;
|
|
30
30
|
schemaRef?: string;
|
|
31
|
+
modeValueMap?: Record<string, any>;
|
|
31
32
|
}
|
|
32
33
|
export declare type BrickProperties = Record<string, any>;
|
|
33
34
|
export interface visualFormUtils extends Partial<FormInstance> {
|
|
@@ -2,7 +2,7 @@ import React from "react";
|
|
|
2
2
|
import { EmptyProps } from "antd/lib/empty";
|
|
3
3
|
import { MenuIcon } from "@next-core/brick-types";
|
|
4
4
|
import { FormProps } from "antd/lib/form";
|
|
5
|
-
import { PropertyType, BrickProperties, visualFormUtils } from "../interfaces";
|
|
5
|
+
import { PropertyType, BrickProperties, visualFormUtils, UnionPropertyType } from "../interfaces";
|
|
6
6
|
export declare type CustomColumn = {
|
|
7
7
|
dataIndex: string;
|
|
8
8
|
title: string;
|
|
@@ -43,5 +43,6 @@ export interface VisualPropertyFormProps {
|
|
|
43
43
|
hiddenPropsCategory?: boolean;
|
|
44
44
|
childMountPointList?: string[];
|
|
45
45
|
}
|
|
46
|
+
export declare function typeMatched(actualValue: any, selectedValue: UnionPropertyType): boolean;
|
|
46
47
|
export declare function LegacyVisualPropertyForm(props: VisualPropertyFormProps, ref: React.Ref<visualFormUtils>): React.ReactElement;
|
|
47
48
|
export declare const VisualPropertyForm: React.ForwardRefExoticComponent<VisualPropertyFormProps & React.RefAttributes<visualFormUtils>>;
|
|
@@ -10,6 +10,7 @@ export declare function calculateValue(propertyList?: PropertyType[], brickPrope
|
|
|
10
10
|
* 1. 当前属性的类型不是内置支持的类型
|
|
11
11
|
* 2. 当前属性虽然是支持的类型,但是当前切换到高级模式编辑
|
|
12
12
|
* 3. 不是构件本身申明的属性,为 html 共有的通用属性,目前统一放在 others 的编辑器中
|
|
13
|
+
* 4. 表达式也不需要解析成 JSON 模式
|
|
13
14
|
* @param field 字段值
|
|
14
15
|
* @param typeList 属性列表包含每个属性的类型和当前编辑模式
|
|
15
16
|
* @return boolean
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-libs/visual-builder",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.1",
|
|
4
4
|
"description": "> TODO: description",
|
|
5
5
|
"homepage": "https://github.com/easyops-cn/next-libs/tree/master/libs/visual-builder",
|
|
6
6
|
"license": "GPL-3.0",
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
"@types/react-color": "^3.0.6",
|
|
36
36
|
"react-color": "^2.19.3"
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "2b5be5f780a4c3fed974d62553f2385624207e9d"
|
|
39
39
|
}
|