@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.
Files changed (27) hide show
  1. package/dist/cjs/interfaces/brick-visualization.js.map +1 -1
  2. package/dist/cjs/visual-property-form/VisualPropertyForm.js +88 -26
  3. package/dist/cjs/visual-property-form/VisualPropertyForm.js.map +1 -1
  4. package/dist/cjs/visual-property-form/components/CodeEditor/CodeEditorFormItem.js +5 -2
  5. package/dist/cjs/visual-property-form/components/CodeEditor/CodeEditorFormItem.js.map +1 -1
  6. package/dist/cjs/visual-property-form/components/ListEditor/ListEditor.js +6 -0
  7. package/dist/cjs/visual-property-form/components/ListEditor/ListEditor.js.map +1 -1
  8. package/dist/cjs/visual-property-form/components/MenuEditor/MenuEditorItem.js +1 -1
  9. package/dist/cjs/visual-property-form/components/MenuEditor/MenuEditorItem.js.map +1 -1
  10. package/dist/cjs/visual-property-form/processor.js +29 -11
  11. package/dist/cjs/visual-property-form/processor.js.map +1 -1
  12. package/dist/esm/interfaces/brick-visualization.js.map +1 -1
  13. package/dist/esm/visual-property-form/VisualPropertyForm.js +87 -29
  14. package/dist/esm/visual-property-form/VisualPropertyForm.js.map +1 -1
  15. package/dist/esm/visual-property-form/VisualPropertyForm.module.css +15 -4
  16. package/dist/esm/visual-property-form/components/CodeEditor/CodeEditorFormItem.js +5 -2
  17. package/dist/esm/visual-property-form/components/CodeEditor/CodeEditorFormItem.js.map +1 -1
  18. package/dist/esm/visual-property-form/components/ListEditor/ListEditor.js +6 -1
  19. package/dist/esm/visual-property-form/components/ListEditor/ListEditor.js.map +1 -1
  20. package/dist/esm/visual-property-form/components/MenuEditor/MenuEditorItem.js +1 -1
  21. package/dist/esm/visual-property-form/components/MenuEditor/MenuEditorItem.js.map +1 -1
  22. package/dist/esm/visual-property-form/processor.js +27 -10
  23. package/dist/esm/visual-property-form/processor.js.map +1 -1
  24. package/dist/types/interfaces/brick-visualization.d.ts +1 -0
  25. package/dist/types/visual-property-form/VisualPropertyForm.d.ts +2 -1
  26. package/dist/types/visual-property-form/processor.d.ts +1 -0
  27. 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: 5,
46
+ minLines: 3,
45
47
  maxLines: 12,
46
48
  printMargin: false,
47
- showLineNumbers: false,
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={5}\n maxLines={12}\n printMargin={false}\n showLineNumbers={false}\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,GAAG,EAAET,KAAK,CAACC,IAAK;IAChB,IAAI,EAAED,KAAK,CAACC,IAAK;IACjB,KAAK,EAAED,KAAK,CAACE,KAAM;IACnB,KAAK,EAAE,CACL;MAAEW,QAAQ,EAAEb,KAAK,CAACa,QAAQ;MAAEC,OAAO,8BAAQd,KAAK,CAACC,IAAI;IAAG,CAAC,EACzD;MAAEc,SAAS,EAAEN;IAAY,CAAC;EAC1B,gBAEF,oBAAC,cAAc;IACb,OAAO,EAAE,CAAE;IACX,QAAQ,EAAE,CAAE;IACZ,QAAQ,EAAE,EAAG;IACb,WAAW,EAAE,KAAM;IACnB,eAAe,EAAE,KAAM;IACvB,cAAc,EAAE,IAAK;IACrB,gBAAgB,EAAE,IAAK;IACvB,KAAK,EAAC,UAAU;IAChB,wBAAwB,EAAE,IAAK;IAC/B,UAAU,EAAEH;EAAe,GACvBH,IAAI,EACQ,CACR;AAEhB"}
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":"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"}
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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"}
@@ -53,7 +53,7 @@ export function MenuEditorItem(props) {
53
53
  })), /*#__PURE__*/React.createElement("div", {
54
54
  style: {
55
55
  fontSize: "18px",
56
- marginTop: "10px",
56
+ marginBottom: "8px",
57
57
  marginLeft: "10px",
58
58
  cursor: "pointer",
59
59
  display: "inline-block"
@@ -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","marginTop","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 marginTop: \"10px\",\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,SAAS,EAAE,MAAM;MACjBC,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"}
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 => _objectSpread(_objectSpread({}, item), {}, {
17
- value: brickProperties === null || brickProperties === void 0 ? void 0 : brickProperties[item.name],
18
- mode: isAdvanceMode(brickProperties === null || brickProperties === void 0 ? void 0 : brickProperties[item.name]) ? ItemModeType.Advanced : ItemModeType.Normal
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") return false;
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.4.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": "a5b412b0a787e64e2296661e413780e60ca44478"
38
+ "gitHead": "2b5be5f780a4c3fed974d62553f2385624207e9d"
39
39
  }