@webiny/app-admin 6.4.0-beta.2 → 6.4.0-beta.3

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 (36) hide show
  1. package/base/Base/DefaultFieldRenderers.js +4 -0
  2. package/base/Base/DefaultFieldRenderers.js.map +1 -1
  3. package/base/Base/FieldRenderers/LexicalRenderer.d.ts +12 -0
  4. package/base/Base/FieldRenderers/LexicalRenderer.js +48 -0
  5. package/base/Base/FieldRenderers/LexicalRenderer.js.map +1 -0
  6. package/base/Base.js +2 -1
  7. package/base/Base.js.map +1 -1
  8. package/base/providers/UiProviders.js +6 -2
  9. package/base/providers/UiProviders.js.map +1 -1
  10. package/components/LexicalEditor/DefaultLexicalEditorConfig.d.ts +2 -0
  11. package/components/LexicalEditor/DefaultLexicalEditorConfig.js +81 -0
  12. package/components/LexicalEditor/DefaultLexicalEditorConfig.js.map +1 -0
  13. package/components/LexicalEditor/TypographyDropDown.d.ts +8 -0
  14. package/components/LexicalEditor/TypographyDropDown.js +60 -0
  15. package/components/LexicalEditor/TypographyDropDown.js.map +1 -0
  16. package/exports/admin/ui/lexical.d.ts +1 -0
  17. package/exports/admin/ui/lexical.js +1 -0
  18. package/exports/admin/ui.d.ts +0 -1
  19. package/exports/admin/ui.js +0 -1
  20. package/features/fileUrlFormatter/abstractions.d.ts +6 -0
  21. package/features/fileUrlFormatter/abstractions.js +5 -0
  22. package/features/fileUrlFormatter/abstractions.js.map +1 -0
  23. package/features/formModel/demo/FieldRenderersDemoPresenter.js +6 -1
  24. package/features/formModel/demo/FieldRenderersDemoPresenter.js.map +1 -1
  25. package/features/formModel/feature.js +2 -1
  26. package/features/formModel/feature.js.map +1 -1
  27. package/features/formModel/fieldTypes/LexicalFieldType.d.ts +19 -0
  28. package/features/formModel/fieldTypes/LexicalFieldType.js +23 -0
  29. package/features/formModel/fieldTypes/LexicalFieldType.js.map +1 -0
  30. package/features/formModel/fieldTypes/index.d.ts +1 -0
  31. package/features/formModel/fieldTypes/index.js +1 -0
  32. package/features/formModel/renderers.d.ts +1 -0
  33. package/features/formModel/renderers.js +1 -0
  34. package/index.d.ts +1 -0
  35. package/index.js +1 -0
  36. package/package.json +22 -20
@@ -23,6 +23,7 @@ import { FilePickerRenderer } from "./FieldRenderers/FilePickerRenderer.js";
23
23
  import { FileUrlPickerRenderer } from "./FieldRenderers/FileUrlPickerRenderer.js";
24
24
  import { MultiFilePickerRenderer } from "./FieldRenderers/MultiFilePickerRenderer.js";
25
25
  import { CodeEditorRenderer } from "./FieldRenderers/CodeEditorRenderer.js";
26
+ import { LexicalRenderer } from "./FieldRenderers/LexicalRenderer.js";
26
27
  const DefaultFieldRenderers = ()=>/*#__PURE__*/ react.createElement(AdminConfig, null, /*#__PURE__*/ react.createElement(AdminConfig.Form.FieldRenderer, {
27
28
  name: "textInput",
28
29
  component: InputRenderer
@@ -92,6 +93,9 @@ const DefaultFieldRenderers = ()=>/*#__PURE__*/ react.createElement(AdminConfig,
92
93
  }), /*#__PURE__*/ react.createElement(AdminConfig.Form.FieldRenderer, {
93
94
  name: "codeEditor",
94
95
  component: CodeEditorRenderer
96
+ }), /*#__PURE__*/ react.createElement(AdminConfig.Form.FieldRenderer, {
97
+ name: "lexical",
98
+ component: LexicalRenderer
95
99
  }));
96
100
  export { DefaultFieldRenderers };
97
101
 
@@ -1 +1 @@
1
- {"version":3,"file":"base/Base/DefaultFieldRenderers.js","sources":["../../../src/base/Base/DefaultFieldRenderers.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig } from \"~/config/AdminConfig.js\";\nimport { InputRenderer } from \"~/base/Base/FieldRenderers/InputRenderer.js\";\nimport { SelectRenderer } from \"~/base/Base/FieldRenderers/SelectRenderer.js\";\nimport { ObjectRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js\";\nimport { ObjectAccordionMultipleRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js\";\nimport { DynamicZoneRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.js\";\nimport { PassthroughRenderer } from \"~/base/Base/FieldRenderers/PassthroughRenderer.js\";\nimport { TextareaRenderer } from \"~/base/Base/FieldRenderers/TextareaRenderer.js\";\nimport { SwitchRenderer } from \"~/base/Base/FieldRenderers/SwitchRenderer.js\";\nimport { NumberInputRenderer } from \"~/base/Base/FieldRenderers/NumberInputRenderer.js\";\nimport { NumberInputsRenderer } from \"~/base/Base/FieldRenderers/NumberInputsRenderer.js\";\nimport { TextInputsRenderer } from \"~/base/Base/FieldRenderers/TextInputsRenderer.js\";\nimport { TextareasRenderer } from \"~/base/Base/FieldRenderers/TextareasRenderer.js\";\nimport { TagsRenderer } from \"~/base/Base/FieldRenderers/TagsRenderer.js\";\nimport { RadioButtonsRenderer } from \"~/base/Base/FieldRenderers/RadioButtonsRenderer.js\";\nimport { CheckboxesRenderer } from \"~/base/Base/FieldRenderers/CheckboxesRenderer.js\";\nimport { DateTimeRenderer } from \"~/base/Base/FieldRenderers/DateTimeRenderer.js\";\nimport { DateTimeInputsRenderer } from \"~/base/Base/FieldRenderers/DateTimeInputsRenderer.js\";\nimport { HiddenRenderer } from \"~/base/Base/FieldRenderers/HiddenRenderer.js\";\nimport { KeyValueTagsRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/KeyValueTagsRenderer.js\";\nimport { FilePickerRenderer } from \"~/base/Base/FieldRenderers/FilePickerRenderer.js\";\nimport { FileUrlPickerRenderer } from \"~/base/Base/FieldRenderers/FileUrlPickerRenderer.js\";\nimport { MultiFilePickerRenderer } from \"~/base/Base/FieldRenderers/MultiFilePickerRenderer.js\";\nimport { CodeEditorRenderer } from \"~/base/Base/FieldRenderers/CodeEditorRenderer.js\";\n\nexport const DefaultFieldRenderers = () => {\n return (\n <AdminConfig>\n <AdminConfig.Form.FieldRenderer name={\"textInput\"} component={InputRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"textarea\"} component={TextareaRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"dropdown\"} component={SelectRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"objectAccordionSingle\"}\n component={ObjectRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"objectAccordionMultiple\"}\n component={ObjectAccordionMultipleRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"dynamicZone\"} component={DynamicZoneRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"passthrough\"} component={PassthroughRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"switch\"} component={SwitchRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"numberInput\"} component={NumberInputRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"numberInputs\"}\n component={NumberInputsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"textInputs\"} component={TextInputsRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"textareas\"} component={TextareasRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"tags\"} component={TagsRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"radioButtons\"}\n component={RadioButtonsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"checkboxes\"} component={CheckboxesRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"dateTimeInput\"} component={DateTimeRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"dateTimeInputs\"}\n component={DateTimeInputsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"hidden\"} component={HiddenRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"keyValueTags\"}\n component={KeyValueTagsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"filePicker\"} component={FilePickerRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"multiFilePicker\"}\n component={MultiFilePickerRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"fileUrlPicker\"}\n component={FileUrlPickerRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"codeEditor\"} component={CodeEditorRenderer} />\n </AdminConfig>\n );\n};\n"],"names":["DefaultFieldRenderers","AdminConfig","InputRenderer","TextareaRenderer","SelectRenderer","ObjectRenderer","ObjectAccordionMultipleRenderer","DynamicZoneRenderer","PassthroughRenderer","SwitchRenderer","NumberInputRenderer","NumberInputsRenderer","TextInputsRenderer","TextareasRenderer","TagsRenderer","RadioButtonsRenderer","CheckboxesRenderer","DateTimeRenderer","DateTimeInputsRenderer","HiddenRenderer","KeyValueTagsRenderer","FilePickerRenderer","MultiFilePickerRenderer","FileUrlPickerRenderer","CodeEditorRenderer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AA0BO,MAAMA,wBAAwB,IAC1B,WAAP,GACI,oBAACC,aAAWA,MAAAA,WAAAA,GACR,oBAACA,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAa,WAAWC;sBAC9D,oBAACD,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAY,WAAWE;sBAC7D,oBAACF,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAY,WAAWG;sBAC7D,oBAACH,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWI;sBAEf,oBAACJ,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWK;sBAEf,oBAACL,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAe,WAAWM;sBAChE,oBAACN,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAe,WAAWO;sBAChE,oBAACP,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAU,WAAWQ;sBAC3D,oBAACR,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAe,WAAWS;sBAChE,oBAACT,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWU;sBAEf,oBAACV,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAc,WAAWW;sBAC/D,oBAACX,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAa,WAAWY;sBAC9D,oBAACZ,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAQ,WAAWa;sBACzD,oBAACb,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWc;sBAEf,oBAACd,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAc,WAAWe;sBAC/D,oBAACf,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAiB,WAAWgB;sBAClE,oBAAChB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWiB;sBAEf,oBAACjB,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAU,WAAWkB;sBAC3D,oBAAClB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWmB;sBAEf,oBAACnB,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAc,WAAWoB;sBAC/D,oBAACpB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWqB;sBAEf,oBAACrB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWsB;sBAEf,oBAACtB,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAc,WAAWuB"}
1
+ {"version":3,"file":"base/Base/DefaultFieldRenderers.js","sources":["../../../src/base/Base/DefaultFieldRenderers.tsx"],"sourcesContent":["import React from \"react\";\nimport { AdminConfig } from \"~/config/AdminConfig.js\";\nimport { InputRenderer } from \"~/base/Base/FieldRenderers/InputRenderer.js\";\nimport { SelectRenderer } from \"~/base/Base/FieldRenderers/SelectRenderer.js\";\nimport { ObjectRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js\";\nimport { ObjectAccordionMultipleRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/ObjectAccordionMultipleRenderer.js\";\nimport { DynamicZoneRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/DynamicZoneRenderer.js\";\nimport { PassthroughRenderer } from \"~/base/Base/FieldRenderers/PassthroughRenderer.js\";\nimport { TextareaRenderer } from \"~/base/Base/FieldRenderers/TextareaRenderer.js\";\nimport { SwitchRenderer } from \"~/base/Base/FieldRenderers/SwitchRenderer.js\";\nimport { NumberInputRenderer } from \"~/base/Base/FieldRenderers/NumberInputRenderer.js\";\nimport { NumberInputsRenderer } from \"~/base/Base/FieldRenderers/NumberInputsRenderer.js\";\nimport { TextInputsRenderer } from \"~/base/Base/FieldRenderers/TextInputsRenderer.js\";\nimport { TextareasRenderer } from \"~/base/Base/FieldRenderers/TextareasRenderer.js\";\nimport { TagsRenderer } from \"~/base/Base/FieldRenderers/TagsRenderer.js\";\nimport { RadioButtonsRenderer } from \"~/base/Base/FieldRenderers/RadioButtonsRenderer.js\";\nimport { CheckboxesRenderer } from \"~/base/Base/FieldRenderers/CheckboxesRenderer.js\";\nimport { DateTimeRenderer } from \"~/base/Base/FieldRenderers/DateTimeRenderer.js\";\nimport { DateTimeInputsRenderer } from \"~/base/Base/FieldRenderers/DateTimeInputsRenderer.js\";\nimport { HiddenRenderer } from \"~/base/Base/FieldRenderers/HiddenRenderer.js\";\nimport { KeyValueTagsRenderer } from \"~/base/Base/FieldRenderers/ObjectRenderer/KeyValueTagsRenderer.js\";\nimport { FilePickerRenderer } from \"~/base/Base/FieldRenderers/FilePickerRenderer.js\";\nimport { FileUrlPickerRenderer } from \"~/base/Base/FieldRenderers/FileUrlPickerRenderer.js\";\nimport { MultiFilePickerRenderer } from \"~/base/Base/FieldRenderers/MultiFilePickerRenderer.js\";\nimport { CodeEditorRenderer } from \"~/base/Base/FieldRenderers/CodeEditorRenderer.js\";\nimport { LexicalRenderer } from \"~/base/Base/FieldRenderers/LexicalRenderer.js\";\n\nexport const DefaultFieldRenderers = () => {\n return (\n <AdminConfig>\n <AdminConfig.Form.FieldRenderer name={\"textInput\"} component={InputRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"textarea\"} component={TextareaRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"dropdown\"} component={SelectRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"objectAccordionSingle\"}\n component={ObjectRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"objectAccordionMultiple\"}\n component={ObjectAccordionMultipleRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"dynamicZone\"} component={DynamicZoneRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"passthrough\"} component={PassthroughRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"switch\"} component={SwitchRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"numberInput\"} component={NumberInputRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"numberInputs\"}\n component={NumberInputsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"textInputs\"} component={TextInputsRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"textareas\"} component={TextareasRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"tags\"} component={TagsRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"radioButtons\"}\n component={RadioButtonsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"checkboxes\"} component={CheckboxesRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"dateTimeInput\"} component={DateTimeRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"dateTimeInputs\"}\n component={DateTimeInputsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"hidden\"} component={HiddenRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"keyValueTags\"}\n component={KeyValueTagsRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"filePicker\"} component={FilePickerRenderer} />\n <AdminConfig.Form.FieldRenderer\n name={\"multiFilePicker\"}\n component={MultiFilePickerRenderer}\n />\n <AdminConfig.Form.FieldRenderer\n name={\"fileUrlPicker\"}\n component={FileUrlPickerRenderer}\n />\n <AdminConfig.Form.FieldRenderer name={\"codeEditor\"} component={CodeEditorRenderer} />\n <AdminConfig.Form.FieldRenderer name={\"lexical\"} component={LexicalRenderer} />\n </AdminConfig>\n );\n};\n"],"names":["DefaultFieldRenderers","AdminConfig","InputRenderer","TextareaRenderer","SelectRenderer","ObjectRenderer","ObjectAccordionMultipleRenderer","DynamicZoneRenderer","PassthroughRenderer","SwitchRenderer","NumberInputRenderer","NumberInputsRenderer","TextInputsRenderer","TextareasRenderer","TagsRenderer","RadioButtonsRenderer","CheckboxesRenderer","DateTimeRenderer","DateTimeInputsRenderer","HiddenRenderer","KeyValueTagsRenderer","FilePickerRenderer","MultiFilePickerRenderer","FileUrlPickerRenderer","CodeEditorRenderer","LexicalRenderer"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA2BO,MAAMA,wBAAwB,IAC1B,WAAP,GACI,oBAACC,aAAWA,MAAAA,WAAAA,GACR,oBAACA,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAa,WAAWC;sBAC9D,oBAACD,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAY,WAAWE;sBAC7D,oBAACF,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAY,WAAWG;sBAC7D,oBAACH,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWI;sBAEf,oBAACJ,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWK;sBAEf,oBAACL,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAe,WAAWM;sBAChE,oBAACN,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAe,WAAWO;sBAChE,oBAACP,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAU,WAAWQ;sBAC3D,oBAACR,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAe,WAAWS;sBAChE,oBAACT,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWU;sBAEf,oBAACV,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAc,WAAWW;sBAC/D,oBAACX,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAa,WAAWY;sBAC9D,oBAACZ,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAQ,WAAWa;sBACzD,oBAACb,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWc;sBAEf,oBAACd,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAc,WAAWe;sBAC/D,oBAACf,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAiB,WAAWgB;sBAClE,oBAAChB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWiB;sBAEf,oBAACjB,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAU,WAAWkB;sBAC3D,oBAAClB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWmB;sBAEf,oBAACnB,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAc,WAAWoB;sBAC/D,oBAACpB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWqB;sBAEf,oBAACrB,YAAY,IAAI,CAAC,aAAa;QAC3B,MAAM;QACN,WAAWsB;sBAEf,oBAACtB,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAc,WAAWuB;sBAC/D,oBAACvB,YAAY,IAAI,CAAC,aAAa;QAAC,MAAM;QAAW,WAAWwB"}
@@ -0,0 +1,12 @@
1
+ import React from "react";
2
+ declare module "../../../features/formModel/abstractions.js" {
3
+ interface IFieldRendererRegistry {
4
+ lexical: {
5
+ fieldType: "lexical";
6
+ settings: undefined;
7
+ };
8
+ }
9
+ }
10
+ export declare const LexicalRenderer: React.ComponentType<{
11
+ field: import("../../..").IFieldVM;
12
+ }>;
@@ -0,0 +1,48 @@
1
+ import react from "react";
2
+ import { StaticToolbar } from "@webiny/lexical-editor";
3
+ import { createFieldRenderer } from "../../../features/formModel/createFieldRenderer.js";
4
+ import { LexicalEditor } from "../../../components/LexicalEditor/LexicalEditor.js";
5
+ import { FormComponentDescription, FormComponentLabel, FormComponentNote } from "@webiny/admin-ui";
6
+ const placeholderStyles = {
7
+ position: "absolute",
8
+ top: 40,
9
+ left: 25
10
+ };
11
+ const contentEditableStyles = {
12
+ minHeight: 200,
13
+ display: "block",
14
+ padding: 10
15
+ };
16
+ const styles = {
17
+ backgroundColor: "#fff",
18
+ border: "1px solid #e1e1e1",
19
+ padding: "10px 14px",
20
+ minHeight: 200,
21
+ maxHeight: 350
22
+ };
23
+ const LexicalRenderer = createFieldRenderer(({ field })=>{
24
+ const value = field.value;
25
+ const toolbar = /*#__PURE__*/ react.createElement(StaticToolbar, null);
26
+ return /*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(FormComponentLabel, {
27
+ text: field.label,
28
+ hint: field.help,
29
+ disabled: field.disabled
30
+ }), /*#__PURE__*/ react.createElement(FormComponentDescription, {
31
+ text: field.description,
32
+ disabled: field.disabled
33
+ }), /*#__PURE__*/ react.createElement(LexicalEditor, {
34
+ placeholder: field.placeholder || "Enter your text here...",
35
+ staticToolbar: toolbar,
36
+ placeholderStyles: placeholderStyles,
37
+ contentEditableStyles: contentEditableStyles,
38
+ styles: styles,
39
+ value: value,
40
+ onChange: (value)=>field.onChange(value)
41
+ }), field.note ? /*#__PURE__*/ react.createElement(FormComponentNote, {
42
+ text: field.note,
43
+ disabled: field.disabled
44
+ }) : null);
45
+ });
46
+ export { LexicalRenderer };
47
+
48
+ //# sourceMappingURL=LexicalRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base/Base/FieldRenderers/LexicalRenderer.js","sources":["../../../../src/base/Base/FieldRenderers/LexicalRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { StaticToolbar } from \"@webiny/lexical-editor\";\nimport { createFieldRenderer } from \"~/features/formModel/createFieldRenderer.js\";\nimport { LexicalEditor } from \"~/components/LexicalEditor/LexicalEditor.js\";\nimport type { RichTextValueWithHtml } from \"~/components/LexicalEditor/lexicalValueWithHtml.js\";\nimport { FormComponentLabel } from \"@webiny/admin-ui\";\nimport { FormComponentDescription } from \"@webiny/admin-ui\";\nimport { FormComponentNote } from \"@webiny/admin-ui\";\n\ndeclare module \"../../../features/formModel/abstractions.js\" {\n interface IFieldRendererRegistry {\n lexical: {\n fieldType: \"lexical\";\n settings: undefined;\n };\n }\n}\n\nconst placeholderStyles: React.CSSProperties = { position: \"absolute\", top: 40, left: 25 };\n\nconst contentEditableStyles: React.CSSProperties = {\n minHeight: 200,\n display: \"block\",\n padding: 10\n};\n\nconst styles: React.CSSProperties = {\n backgroundColor: \"#fff\",\n border: \"1px solid #e1e1e1\",\n padding: \"10px 14px\",\n minHeight: 200,\n maxHeight: 350\n};\n\nexport const LexicalRenderer = createFieldRenderer<\"lexical\">(({ field }) => {\n const value = field.value as RichTextValueWithHtml | undefined;\n const toolbar = <StaticToolbar />;\n\n return (\n <>\n <FormComponentLabel text={field.label} hint={field.help} disabled={field.disabled} />\n <FormComponentDescription text={field.description} disabled={field.disabled} />\n <LexicalEditor\n placeholder={field.placeholder || \"Enter your text here...\"}\n staticToolbar={toolbar}\n placeholderStyles={placeholderStyles}\n contentEditableStyles={contentEditableStyles}\n styles={styles}\n value={value}\n onChange={value => field.onChange(value)}\n />\n {field.note ? <FormComponentNote text={field.note} disabled={field.disabled} /> : null}\n </>\n );\n});\n"],"names":["placeholderStyles","contentEditableStyles","styles","LexicalRenderer","createFieldRenderer","field","value","toolbar","StaticToolbar","FormComponentLabel","FormComponentDescription","LexicalEditor","FormComponentNote"],"mappings":";;;;;AAkBA,MAAMA,oBAAyC;IAAE,UAAU;IAAY,KAAK;IAAI,MAAM;AAAG;AAEzF,MAAMC,wBAA6C;IAC/C,WAAW;IACX,SAAS;IACT,SAAS;AACb;AAEA,MAAMC,SAA8B;IAChC,iBAAiB;IACjB,QAAQ;IACR,SAAS;IACT,WAAW;IACX,WAAW;AACf;AAEO,MAAMC,kBAAkBC,oBAA+B,CAAC,EAAEC,KAAK,EAAE;IACpE,MAAMC,QAAQD,MAAM,KAAK;IACzB,MAAME,UAAU,WAAVA,GAAU,oBAACC,eAAaA;IAE9B,OAAO,WAAP,GACI,wDACI,oBAACC,oBAAkBA;QAAC,MAAMJ,MAAM,KAAK;QAAE,MAAMA,MAAM,IAAI;QAAE,UAAUA,MAAM,QAAQ;sBACjF,oBAACK,0BAAwBA;QAAC,MAAML,MAAM,WAAW;QAAE,UAAUA,MAAM,QAAQ;sBAC3E,oBAACM,eAAaA;QACV,aAAaN,MAAM,WAAW,IAAI;QAClC,eAAeE;QACf,mBAAmBP;QACnB,uBAAuBC;QACvB,QAAQC;QACR,OAAOI;QACP,UAAUA,CAAAA,QAASD,MAAM,QAAQ,CAACC;QAErCD,MAAM,IAAI,GAAG,WAAH,GAAG,oBAACO,mBAAiBA;QAAC,MAAMP,MAAM,IAAI;QAAE,UAAUA,MAAM,QAAQ;SAAO;AAG9F"}
package/base/Base.js CHANGED
@@ -6,7 +6,8 @@ import { UserMenu } from "./Base/UserMenu.js";
6
6
  import { LexicalPreset } from "./Base/LexicalPreset.js";
7
7
  import { DefaultFieldRenderers } from "./Base/DefaultFieldRenderers.js";
8
8
  import { DefaultLayoutRenderers } from "./Base/DefaultLayoutRenderers.js";
9
- const BaseExtension = ()=>/*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(Tenant, null), /*#__PURE__*/ react.createElement(Menus, null), /*#__PURE__*/ react.createElement(UserMenu, null), /*#__PURE__*/ react.createElement(RoutesConfig, null), /*#__PURE__*/ react.createElement(LexicalPreset, null), /*#__PURE__*/ react.createElement(DefaultFieldRenderers, null), /*#__PURE__*/ react.createElement(DefaultLayoutRenderers, null));
9
+ import { DefaultLexicalEditorConfig } from "../components/LexicalEditor/DefaultLexicalEditorConfig.js";
10
+ const BaseExtension = ()=>/*#__PURE__*/ react.createElement(react.Fragment, null, /*#__PURE__*/ react.createElement(Tenant, null), /*#__PURE__*/ react.createElement(Menus, null), /*#__PURE__*/ react.createElement(UserMenu, null), /*#__PURE__*/ react.createElement(RoutesConfig, null), /*#__PURE__*/ react.createElement(LexicalPreset, null), /*#__PURE__*/ react.createElement(DefaultFieldRenderers, null), /*#__PURE__*/ react.createElement(DefaultLayoutRenderers, null), /*#__PURE__*/ react.createElement(DefaultLexicalEditorConfig, null));
10
11
  const Base = /*#__PURE__*/ memo(BaseExtension);
11
12
  export { Base };
12
13
 
package/base/Base.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"base/Base.js","sources":["../../src/base/Base.tsx"],"sourcesContent":["import React, { memo } from \"react\";\nimport { Menus } from \"./Base/Menus.js\";\nimport { RoutesConfig } from \"./Base/RoutesConfig.js\";\nimport { Tenant } from \"./Base/Tenant.js\";\nimport { UserMenu } from \"./Base/UserMenu.js\";\nimport { LexicalPreset } from \"./Base/LexicalPreset.js\";\nimport { DefaultFieldRenderers } from \"./Base/DefaultFieldRenderers.js\";\nimport { DefaultLayoutRenderers } from \"./Base/DefaultLayoutRenderers.js\";\n\nconst BaseExtension = () => {\n return (\n <>\n <Tenant />\n <Menus />\n <UserMenu />\n <RoutesConfig />\n <LexicalPreset />\n <DefaultFieldRenderers />\n <DefaultLayoutRenderers />\n </>\n );\n};\n\nexport const Base = memo(BaseExtension);\n"],"names":["BaseExtension","Tenant","Menus","UserMenu","RoutesConfig","LexicalPreset","DefaultFieldRenderers","DefaultLayoutRenderers","Base","memo"],"mappings":";;;;;;;;AASA,MAAMA,gBAAgB,IACX,WAAP,GACI,wDACI,oBAACC,QAAMA,OAAAA,WAAAA,GACP,oBAACC,OAAKA,OAAAA,WAAAA,GACN,oBAACC,UAAQA,OAAAA,WAAAA,GACT,oBAACC,cAAYA,OAAAA,WAAAA,GACb,oBAACC,eAAaA,OAAAA,WAAAA,GACd,oBAACC,uBAAqBA,OAAAA,WAAAA,GACtB,oBAACC,wBAAsBA;AAK5B,MAAMC,OAAO,WAAHA,GAAGC,KAAKT"}
1
+ {"version":3,"file":"base/Base.js","sources":["../../src/base/Base.tsx"],"sourcesContent":["import React, { memo } from \"react\";\nimport { Menus } from \"./Base/Menus.js\";\nimport { RoutesConfig } from \"./Base/RoutesConfig.js\";\nimport { Tenant } from \"./Base/Tenant.js\";\nimport { UserMenu } from \"./Base/UserMenu.js\";\nimport { LexicalPreset } from \"./Base/LexicalPreset.js\";\nimport { DefaultFieldRenderers } from \"./Base/DefaultFieldRenderers.js\";\nimport { DefaultLayoutRenderers } from \"./Base/DefaultLayoutRenderers.js\";\nimport { DefaultLexicalEditorConfig } from \"~/components/LexicalEditor/DefaultLexicalEditorConfig.js\";\n\nconst BaseExtension = () => {\n return (\n <>\n <Tenant />\n <Menus />\n <UserMenu />\n <RoutesConfig />\n <LexicalPreset />\n <DefaultFieldRenderers />\n <DefaultLayoutRenderers />\n <DefaultLexicalEditorConfig />\n </>\n );\n};\n\nexport const Base = memo(BaseExtension);\n"],"names":["BaseExtension","Tenant","Menus","UserMenu","RoutesConfig","LexicalPreset","DefaultFieldRenderers","DefaultLayoutRenderers","DefaultLexicalEditorConfig","Base","memo"],"mappings":";;;;;;;;;AAUA,MAAMA,gBAAgB,IACX,WAAP,GACI,wDACI,oBAACC,QAAMA,OAAAA,WAAAA,GACP,oBAACC,OAAKA,OAAAA,WAAAA,GACN,oBAACC,UAAQA,OAAAA,WAAAA,GACT,oBAACC,cAAYA,OAAAA,WAAAA,GACb,oBAACC,eAAaA,OAAAA,WAAAA,GACd,oBAACC,uBAAqBA,OAAAA,WAAAA,GACtB,oBAACC,wBAAsBA,OAAAA,WAAAA,GACvB,oBAACC,4BAA0BA;AAKhC,MAAMC,OAAO,WAAHA,GAAGC,KAAKV"}
@@ -1,7 +1,8 @@
1
1
  import react from "react";
2
- import { SimpleLink, createProvider } from "@webiny/app";
2
+ import { SimpleLink, createProvider, useContainer } from "@webiny/app";
3
3
  import { AdminUiProvider } from "@webiny/admin-ui";
4
4
  import { compiler } from "markdown-to-jsx/react";
5
+ import { FileUrlFormatter } from "../../features/fileUrlFormatter/abstractions.js";
5
6
  const options = {
6
7
  overrides: {
7
8
  a: {
@@ -15,9 +16,12 @@ const options = {
15
16
  };
16
17
  const markdownCompiler = (markdown)=>compiler(markdown, options);
17
18
  const createUiProviders = ()=>createProvider((Component)=>function({ children }) {
19
+ const container = useContainer();
20
+ const fileUrlFormatter = container.resolve(FileUrlFormatter);
18
21
  return /*#__PURE__*/ react.createElement(AdminUiProvider, {
19
22
  linkComponent: SimpleLink,
20
- markdownCompiler: markdownCompiler
23
+ markdownCompiler: markdownCompiler,
24
+ fileUrlFormatter: fileUrlFormatter
21
25
  }, /*#__PURE__*/ react.createElement(Component, null, children));
22
26
  });
23
27
  export { createUiProviders };
@@ -1 +1 @@
1
- {"version":3,"file":"base/providers/UiProviders.js","sources":["../../../src/base/providers/UiProviders.tsx"],"sourcesContent":["import React from \"react\";\nimport { createProvider, SimpleLink } from \"@webiny/app\";\nimport { AdminUiProvider } from \"@webiny/admin-ui\";\nimport { compiler } from \"markdown-to-jsx/react\";\n\nconst options = {\n overrides: {\n a: {\n component: ({ children, ...props }: any) => (\n <a {...props} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n </a>\n )\n }\n }\n};\n\nconst markdownCompiler = (markdown: string) => {\n return compiler(markdown, options);\n};\n\ninterface UiProvidersProps {\n children: React.ReactNode;\n}\n\nexport const createUiProviders = () => {\n return createProvider(Component => {\n return function UiProviders({ children }: UiProvidersProps) {\n return (\n <AdminUiProvider linkComponent={SimpleLink} markdownCompiler={markdownCompiler}>\n <Component>{children}</Component>\n </AdminUiProvider>\n );\n };\n });\n};\n"],"names":["options","children","props","markdownCompiler","markdown","compiler","createUiProviders","createProvider","Component","AdminUiProvider","SimpleLink"],"mappings":";;;;AAKA,MAAMA,UAAU;IACZ,WAAW;QACP,GAAG;YACC,WAAW,CAAC,EAAEC,QAAQ,EAAE,GAAGC,OAAY,iBACnC,oBAAC;oBAAG,GAAGA,KAAK;oBAAE,QAAO;oBAAS,KAAI;mBAC7BD;QAGb;IACJ;AACJ;AAEA,MAAME,mBAAmB,CAACC,WACfC,SAASD,UAAUJ;AAOvB,MAAMM,oBAAoB,IACtBC,eAAeC,CAAAA,YACX,SAAqB,EAAEP,QAAQ,EAAoB;YACtD,OAAO,WAAP,GACI,oBAACQ,iBAAeA;gBAAC,eAAeC;gBAAY,kBAAkBP;6BAC1D,oBAACK,WAAAA,MAAWP;QAGxB"}
1
+ {"version":3,"file":"base/providers/UiProviders.js","sources":["../../../src/base/providers/UiProviders.tsx"],"sourcesContent":["import React from \"react\";\nimport { createProvider, SimpleLink, useContainer } from \"@webiny/app\";\nimport { AdminUiProvider } from \"@webiny/admin-ui\";\nimport { compiler } from \"markdown-to-jsx/react\";\nimport { FileUrlFormatter } from \"~/features/fileUrlFormatter/abstractions.js\";\n\nconst options = {\n overrides: {\n a: {\n component: ({ children, ...props }: any) => (\n <a {...props} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n </a>\n )\n }\n }\n};\n\nconst markdownCompiler = (markdown: string) => {\n return compiler(markdown, options);\n};\n\ninterface UiProvidersProps {\n children: React.ReactNode;\n}\n\nexport const createUiProviders = () => {\n return createProvider(Component => {\n return function UiProviders({ children }: UiProvidersProps) {\n const container = useContainer();\n const fileUrlFormatter = container.resolve(FileUrlFormatter);\n\n return (\n <AdminUiProvider\n linkComponent={SimpleLink}\n markdownCompiler={markdownCompiler}\n fileUrlFormatter={fileUrlFormatter}\n >\n <Component>{children}</Component>\n </AdminUiProvider>\n );\n };\n });\n};\n"],"names":["options","children","props","markdownCompiler","markdown","compiler","createUiProviders","createProvider","Component","container","useContainer","fileUrlFormatter","FileUrlFormatter","AdminUiProvider","SimpleLink"],"mappings":";;;;;AAMA,MAAMA,UAAU;IACZ,WAAW;QACP,GAAG;YACC,WAAW,CAAC,EAAEC,QAAQ,EAAE,GAAGC,OAAY,iBACnC,oBAAC;oBAAG,GAAGA,KAAK;oBAAE,QAAO;oBAAS,KAAI;mBAC7BD;QAGb;IACJ;AACJ;AAEA,MAAME,mBAAmB,CAACC,WACfC,SAASD,UAAUJ;AAOvB,MAAMM,oBAAoB,IACtBC,eAAeC,CAAAA,YACX,SAAqB,EAAEP,QAAQ,EAAoB;YACtD,MAAMQ,YAAYC;YAClB,MAAMC,mBAAmBF,UAAU,OAAO,CAACG;YAE3C,OAAO,WAAP,GACI,oBAACC,iBAAeA;gBACZ,eAAeC;gBACf,kBAAkBX;gBAClB,kBAAkBQ;6BAElB,oBAACH,WAAAA,MAAWP;QAGxB"}
@@ -0,0 +1,2 @@
1
+ import React from "react";
2
+ export declare const DefaultLexicalEditorConfig: () => React.JSX.Element;
@@ -0,0 +1,81 @@
1
+ import react from "react";
2
+ import { BoldAction, BulletListAction, CodeHighlightAction, CodeHighlightPlugin, Divider, FontColorAction, FontColorPlugin, ImageAction, ImagesPlugin, ItalicAction, LexicalEditorConfig, LinkAction, LinkPlugin, ListPlugin, NumberedListAction, QuoteAction, QuotePlugin, TextAlignmentAction, TypographyAction, TypographyPlugin, UnderlineAction } from "@webiny/lexical-editor";
3
+ import { TypographyDropDown } from "./TypographyDropDown.js";
4
+ const { ToolbarElement: ToolbarElement, Plugin: Plugin } = LexicalEditorConfig;
5
+ const DefaultLexicalEditorConfig = ()=>/*#__PURE__*/ react.createElement(LexicalEditorConfig, {
6
+ priority: "primary"
7
+ }, /*#__PURE__*/ react.createElement(ToolbarElement, {
8
+ name: "fontColor",
9
+ element: /*#__PURE__*/ react.createElement(FontColorAction, null)
10
+ }), /*#__PURE__*/ react.createElement(ToolbarElement, {
11
+ name: "typography",
12
+ element: /*#__PURE__*/ react.createElement(TypographyAction, null)
13
+ }), /*#__PURE__*/ react.createElement(ToolbarElement, {
14
+ name: "textAlignment",
15
+ element: /*#__PURE__*/ react.createElement(TextAlignmentAction, null)
16
+ }), /*#__PURE__*/ react.createElement(ToolbarElement, {
17
+ name: "divider1",
18
+ element: /*#__PURE__*/ react.createElement(Divider, null)
19
+ }), /*#__PURE__*/ react.createElement(ToolbarElement, {
20
+ name: "boldAction",
21
+ element: /*#__PURE__*/ react.createElement(BoldAction, null)
22
+ }), /*#__PURE__*/ react.createElement(ToolbarElement, {
23
+ name: "italic",
24
+ element: /*#__PURE__*/ react.createElement(ItalicAction, null)
25
+ }), /*#__PURE__*/ react.createElement(ToolbarElement, {
26
+ name: "underline",
27
+ element: /*#__PURE__*/ react.createElement(UnderlineAction, null)
28
+ }), /*#__PURE__*/ react.createElement(ToolbarElement, {
29
+ name: "codeHighlight",
30
+ element: /*#__PURE__*/ react.createElement(CodeHighlightAction, null)
31
+ }), /*#__PURE__*/ react.createElement(ToolbarElement, {
32
+ name: "divider2",
33
+ element: /*#__PURE__*/ react.createElement(Divider, null)
34
+ }), /*#__PURE__*/ react.createElement(ToolbarElement, {
35
+ name: "numberedList",
36
+ element: /*#__PURE__*/ react.createElement(NumberedListAction, null)
37
+ }), /*#__PURE__*/ react.createElement(ToolbarElement, {
38
+ name: "bulletList",
39
+ element: /*#__PURE__*/ react.createElement(BulletListAction, null)
40
+ }), /*#__PURE__*/ react.createElement(ToolbarElement, {
41
+ name: "divider",
42
+ element: /*#__PURE__*/ react.createElement(Divider, null)
43
+ }), /*#__PURE__*/ react.createElement(ToolbarElement, {
44
+ name: "image",
45
+ element: /*#__PURE__*/ react.createElement(ImageAction, null)
46
+ }), /*#__PURE__*/ react.createElement(ToolbarElement, {
47
+ name: "divider3",
48
+ element: /*#__PURE__*/ react.createElement(Divider, null)
49
+ }), /*#__PURE__*/ react.createElement(ToolbarElement, {
50
+ name: "link",
51
+ element: /*#__PURE__*/ react.createElement(LinkAction, null)
52
+ }), /*#__PURE__*/ react.createElement(ToolbarElement, {
53
+ name: "quote",
54
+ element: /*#__PURE__*/ react.createElement(QuoteAction, null)
55
+ }), /*#__PURE__*/ react.createElement(Plugin, {
56
+ name: "fontColor",
57
+ element: /*#__PURE__*/ react.createElement(FontColorPlugin, null)
58
+ }), /*#__PURE__*/ react.createElement(Plugin, {
59
+ name: "list",
60
+ element: /*#__PURE__*/ react.createElement(ListPlugin, null)
61
+ }), /*#__PURE__*/ react.createElement(Plugin, {
62
+ name: "codeHighlight",
63
+ element: /*#__PURE__*/ react.createElement(CodeHighlightPlugin, null)
64
+ }), /*#__PURE__*/ react.createElement(Plugin, {
65
+ name: "typography",
66
+ element: /*#__PURE__*/ react.createElement(TypographyPlugin, null)
67
+ }), /*#__PURE__*/ react.createElement(Plugin, {
68
+ name: "link",
69
+ element: /*#__PURE__*/ react.createElement(LinkPlugin, null)
70
+ }), /*#__PURE__*/ react.createElement(Plugin, {
71
+ name: "images",
72
+ element: /*#__PURE__*/ react.createElement(ImagesPlugin, null)
73
+ }), /*#__PURE__*/ react.createElement(Plugin, {
74
+ name: "quote",
75
+ element: /*#__PURE__*/ react.createElement(QuotePlugin, null)
76
+ }), /*#__PURE__*/ react.createElement(TypographyAction.TypographyDropDown, {
77
+ element: /*#__PURE__*/ react.createElement(TypographyDropDown, null)
78
+ }));
79
+ export { DefaultLexicalEditorConfig };
80
+
81
+ //# sourceMappingURL=DefaultLexicalEditorConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components/LexicalEditor/DefaultLexicalEditorConfig.js","sources":["../../../src/components/LexicalEditor/DefaultLexicalEditorConfig.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n TypographyAction,\n LexicalEditorConfig,\n FontColorAction,\n Divider,\n BoldAction,\n ItalicAction,\n UnderlineAction,\n CodeHighlightAction,\n NumberedListAction,\n BulletListAction,\n ImageAction,\n LinkAction,\n QuoteAction,\n ImagesPlugin,\n QuotePlugin,\n CodeHighlightPlugin,\n LinkPlugin,\n ListPlugin,\n TypographyPlugin,\n FontColorPlugin,\n TextAlignmentAction\n} from \"@webiny/lexical-editor\";\nimport { TypographyDropDown } from \"./TypographyDropDown.js\";\n\nconst { ToolbarElement, Plugin } = LexicalEditorConfig;\n\nexport const DefaultLexicalEditorConfig = () => {\n return (\n <LexicalEditorConfig priority={\"primary\"}>\n <ToolbarElement name=\"fontColor\" element={<FontColorAction />} />\n <ToolbarElement name=\"typography\" element={<TypographyAction />} />\n <ToolbarElement name=\"textAlignment\" element={<TextAlignmentAction />} />\n <ToolbarElement name=\"divider1\" element={<Divider />} />\n <ToolbarElement name=\"boldAction\" element={<BoldAction />} />\n <ToolbarElement name=\"italic\" element={<ItalicAction />} />\n <ToolbarElement name=\"underline\" element={<UnderlineAction />} />\n <ToolbarElement name=\"codeHighlight\" element={<CodeHighlightAction />} />\n <ToolbarElement name=\"divider2\" element={<Divider />} />\n <ToolbarElement name=\"numberedList\" element={<NumberedListAction />} />\n <ToolbarElement name=\"bulletList\" element={<BulletListAction />} />\n <ToolbarElement name=\"divider\" element={<Divider />} />\n <ToolbarElement name=\"image\" element={<ImageAction />} />\n <ToolbarElement name=\"divider3\" element={<Divider />} />\n <ToolbarElement name=\"link\" element={<LinkAction />} />\n <ToolbarElement name=\"quote\" element={<QuoteAction />} />\n <Plugin name={\"fontColor\"} element={<FontColorPlugin />} />\n <Plugin name={\"list\"} element={<ListPlugin />} />\n <Plugin name={\"codeHighlight\"} element={<CodeHighlightPlugin />} />\n <Plugin name={\"typography\"} element={<TypographyPlugin />} />\n <Plugin name={\"link\"} element={<LinkPlugin />} />\n <Plugin name={\"images\"} element={<ImagesPlugin />} />\n <Plugin name={\"quote\"} element={<QuotePlugin />} />\n <TypographyAction.TypographyDropDown element={<TypographyDropDown />} />\n </LexicalEditorConfig>\n );\n};\n"],"names":["ToolbarElement","Plugin","LexicalEditorConfig","DefaultLexicalEditorConfig","FontColorAction","TypographyAction","TextAlignmentAction","Divider","BoldAction","ItalicAction","UnderlineAction","CodeHighlightAction","NumberedListAction","BulletListAction","ImageAction","LinkAction","QuoteAction","FontColorPlugin","ListPlugin","CodeHighlightPlugin","TypographyPlugin","LinkPlugin","ImagesPlugin","QuotePlugin","TypographyDropDown"],"mappings":";;;AA0BA,MAAM,EAAEA,gBAAAA,cAAc,EAAEC,QAAAA,MAAM,EAAE,GAAGC;AAE5B,MAAMC,6BAA6B,IAC/B,WAAP,GACI,oBAACD,qBAAmBA;QAAC,UAAU;qBAC3B,oBAACF,gBAAcA;QAAC,MAAK;QAAY,uBAAS,oBAACI,iBAAeA;sBAC1D,oBAACJ,gBAAcA;QAAC,MAAK;QAAa,uBAAS,oBAACK,kBAAgBA;sBAC5D,oBAACL,gBAAcA;QAAC,MAAK;QAAgB,uBAAS,oBAACM,qBAAmBA;sBAClE,oBAACN,gBAAcA;QAAC,MAAK;QAAW,uBAAS,oBAACO,SAAOA;sBACjD,oBAACP,gBAAcA;QAAC,MAAK;QAAa,uBAAS,oBAACQ,YAAUA;sBACtD,oBAACR,gBAAcA;QAAC,MAAK;QAAS,uBAAS,oBAACS,cAAYA;sBACpD,oBAACT,gBAAcA;QAAC,MAAK;QAAY,uBAAS,oBAACU,iBAAeA;sBAC1D,oBAACV,gBAAcA;QAAC,MAAK;QAAgB,uBAAS,oBAACW,qBAAmBA;sBAClE,oBAACX,gBAAcA;QAAC,MAAK;QAAW,uBAAS,oBAACO,SAAOA;sBACjD,oBAACP,gBAAcA;QAAC,MAAK;QAAe,uBAAS,oBAACY,oBAAkBA;sBAChE,oBAACZ,gBAAcA;QAAC,MAAK;QAAa,uBAAS,oBAACa,kBAAgBA;sBAC5D,oBAACb,gBAAcA;QAAC,MAAK;QAAU,uBAAS,oBAACO,SAAOA;sBAChD,oBAACP,gBAAcA;QAAC,MAAK;QAAQ,uBAAS,oBAACc,aAAWA;sBAClD,oBAACd,gBAAcA;QAAC,MAAK;QAAW,uBAAS,oBAACO,SAAOA;sBACjD,oBAACP,gBAAcA;QAAC,MAAK;QAAO,uBAAS,oBAACe,YAAUA;sBAChD,oBAACf,gBAAcA;QAAC,MAAK;QAAQ,uBAAS,oBAACgB,aAAWA;sBAClD,oBAACf,QAAMA;QAAC,MAAM;QAAa,uBAAS,oBAACgB,iBAAeA;sBACpD,oBAAChB,QAAMA;QAAC,MAAM;QAAQ,uBAAS,oBAACiB,YAAUA;sBAC1C,oBAACjB,QAAMA;QAAC,MAAM;QAAiB,uBAAS,oBAACkB,qBAAmBA;sBAC5D,oBAAClB,QAAMA;QAAC,MAAM;QAAc,uBAAS,oBAACmB,kBAAgBA;sBACtD,oBAACnB,QAAMA;QAAC,MAAM;QAAQ,uBAAS,oBAACoB,YAAUA;sBAC1C,oBAACpB,QAAMA;QAAC,MAAM;QAAU,uBAAS,oBAACqB,cAAYA;sBAC9C,oBAACrB,QAAMA;QAAC,MAAM;QAAS,uBAAS,oBAACsB,aAAWA;sBAC5C,oBAAClB,iBAAiB,kBAAkB;QAAC,uBAAS,oBAACmB,oBAAkBA"}
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ export type TypographyStyle = {
3
+ id: string;
4
+ label: string;
5
+ tag: string;
6
+ className: string;
7
+ };
8
+ export declare const TypographyDropDown: () => React.JSX.Element;
@@ -0,0 +1,60 @@
1
+ import react, { useEffect, useState } from "react";
2
+ import { $getNearestNodeOfType } from "@lexical/utils";
3
+ import { DropDown, DropDownItem, useCurrentElement, useCurrentSelection, useTypographyAction } from "@webiny/lexical-editor";
4
+ import { $isHeadingNode, $isListNode, $isParagraphNode, $isQuoteNode, ListNode } from "@webiny/lexical-nodes";
5
+ import { useAdminConfig } from "../../config/AdminConfig.js";
6
+ const TypographyDropDown = ()=>{
7
+ const { value, applyTypography } = useTypographyAction();
8
+ const { lexicalTheme } = useAdminConfig();
9
+ const [styles, setStyles] = useState([]);
10
+ const { element } = useCurrentElement();
11
+ const { rangeSelection } = useCurrentSelection();
12
+ const getAllTextStyles = ()=>{
13
+ const headingsStyles = lexicalTheme.typography.headings || [];
14
+ const paragraphStyles = lexicalTheme.typography.paragraphs || [];
15
+ return [
16
+ ...headingsStyles,
17
+ ...paragraphStyles
18
+ ];
19
+ };
20
+ const getListStyles = (tag)=>{
21
+ const listStyles = lexicalTheme.typography.lists?.filter((x)=>x.tag === tag) || [];
22
+ if (listStyles.length > 0) return listStyles;
23
+ const fallbackTag = "ul" === tag ? "ol" : "ul";
24
+ return lexicalTheme.typography.lists?.filter((x)=>x.tag === fallbackTag) || [];
25
+ };
26
+ useEffect(()=>{
27
+ if (!element || !rangeSelection) return;
28
+ if ($isParagraphNode(element) || $isHeadingNode(element)) setStyles(getAllTextStyles());
29
+ else if ($isListNode(element)) {
30
+ let type;
31
+ try {
32
+ const anchorNode = rangeSelection.anchor.getNode();
33
+ const parentList = $getNearestNodeOfType(anchorNode, ListNode);
34
+ if (parentList) type = parentList.getListType();
35
+ } catch {
36
+ type = element.getListType();
37
+ }
38
+ "bullet" === type ? setStyles(getListStyles("ul")) : setStyles(getListStyles("ol"));
39
+ } else $isQuoteNode(element) ? setStyles(lexicalTheme.typography.quotes || []) : setStyles([]);
40
+ }, [
41
+ element
42
+ ]);
43
+ return /*#__PURE__*/ react.createElement(react.Fragment, null, styles?.length ? /*#__PURE__*/ react.createElement(DropDown, {
44
+ buttonClassName: "toolbar-item typography-dropdown",
45
+ buttonAriaLabel: "Typography formatting options",
46
+ buttonLabel: value?.label || "Typography",
47
+ stopCloseOnClickSelf: true,
48
+ disabled: false,
49
+ showScroll: true
50
+ }, styles?.map((option)=>/*#__PURE__*/ react.createElement(DropDownItem, {
51
+ className: `item typography-item ${value?.id === option.id ? "active dropdown-item-active" : ""}`,
52
+ onClick: ()=>applyTypography(option),
53
+ key: option.id
54
+ }, /*#__PURE__*/ react.createElement("span", {
55
+ className: "text"
56
+ }, option.label)))) : null);
57
+ };
58
+ export { TypographyDropDown };
59
+
60
+ //# sourceMappingURL=TypographyDropDown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components/LexicalEditor/TypographyDropDown.js","sources":["../../../src/components/LexicalEditor/TypographyDropDown.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { $getNearestNodeOfType } from \"@lexical/utils\";\nimport {\n DropDown,\n DropDownItem,\n useCurrentSelection,\n useCurrentElement,\n useTypographyAction\n} from \"@webiny/lexical-editor\";\nimport {\n $isHeadingNode,\n $isParagraphNode,\n $isQuoteNode,\n $isListNode,\n ListNode\n} from \"@webiny/lexical-nodes\";\nimport { useAdminConfig } from \"~/config/AdminConfig.js\";\n\nexport type TypographyStyle = {\n id: string;\n label: string;\n tag: string;\n className: string;\n};\n\nexport const TypographyDropDown = () => {\n const { value, applyTypography } = useTypographyAction();\n const { lexicalTheme } = useAdminConfig();\n\n const [styles, setStyles] = useState<TypographyStyle[]>([]);\n const { element } = useCurrentElement();\n const { rangeSelection } = useCurrentSelection();\n\n const getAllTextStyles = (): TypographyStyle[] => {\n const headingsStyles = lexicalTheme.typography.headings || [];\n const paragraphStyles = lexicalTheme.typography.paragraphs || [];\n\n return [...headingsStyles, ...paragraphStyles];\n };\n\n const getListStyles = (tag: string): TypographyStyle[] => {\n const listStyles = lexicalTheme.typography.lists?.filter(x => x.tag === tag) || [];\n if (listStyles.length > 0) {\n return listStyles;\n }\n\n const fallbackTag = tag === \"ul\" ? \"ol\" : \"ul\";\n return lexicalTheme.typography.lists?.filter(x => x.tag === fallbackTag) || [];\n };\n\n useEffect(() => {\n if (!element || !rangeSelection) {\n return;\n }\n\n if ($isParagraphNode(element) || $isHeadingNode(element)) {\n setStyles(getAllTextStyles());\n } else if ($isListNode(element)) {\n let type;\n try {\n const anchorNode = rangeSelection.anchor.getNode();\n const parentList = $getNearestNodeOfType<ListNode>(anchorNode, ListNode);\n if (parentList) {\n type = parentList.getListType();\n }\n } catch {\n type = element.getListType();\n }\n\n if (type === \"bullet\") {\n setStyles(getListStyles(\"ul\"));\n } else {\n setStyles(getListStyles(\"ol\"));\n }\n } else if ($isQuoteNode(element)) {\n setStyles(lexicalTheme.typography.quotes || []);\n } else {\n setStyles([]);\n }\n }, [element]);\n\n return (\n <>\n {!!styles?.length ? (\n <DropDown\n buttonClassName=\"toolbar-item typography-dropdown\"\n buttonAriaLabel={\"Typography formatting options\"}\n buttonLabel={value?.label || \"Typography\"}\n stopCloseOnClickSelf={true}\n disabled={false}\n showScroll={true}\n >\n {styles?.map(option => (\n <DropDownItem\n className={`item typography-item ${\n value?.id === option.id ? \"active dropdown-item-active\" : \"\"\n }`}\n onClick={() => applyTypography(option)}\n key={option.id}\n >\n <span className=\"text\">{option.label}</span>\n </DropDownItem>\n ))}\n </DropDown>\n ) : null}\n </>\n );\n};\n"],"names":["TypographyDropDown","value","applyTypography","useTypographyAction","lexicalTheme","useAdminConfig","styles","setStyles","useState","element","useCurrentElement","rangeSelection","useCurrentSelection","getAllTextStyles","headingsStyles","paragraphStyles","getListStyles","tag","listStyles","x","fallbackTag","useEffect","$isParagraphNode","$isHeadingNode","$isListNode","type","anchorNode","parentList","$getNearestNodeOfType","ListNode","$isQuoteNode","DropDown","option","DropDownItem"],"mappings":";;;;;AAyBO,MAAMA,qBAAqB;IAC9B,MAAM,EAAEC,KAAK,EAAEC,eAAe,EAAE,GAAGC;IACnC,MAAM,EAAEC,YAAY,EAAE,GAAGC;IAEzB,MAAM,CAACC,QAAQC,UAAU,GAAGC,SAA4B,EAAE;IAC1D,MAAM,EAAEC,OAAO,EAAE,GAAGC;IACpB,MAAM,EAAEC,cAAc,EAAE,GAAGC;IAE3B,MAAMC,mBAAmB;QACrB,MAAMC,iBAAiBV,aAAa,UAAU,CAAC,QAAQ,IAAI,EAAE;QAC7D,MAAMW,kBAAkBX,aAAa,UAAU,CAAC,UAAU,IAAI,EAAE;QAEhE,OAAO;eAAIU;eAAmBC;SAAgB;IAClD;IAEA,MAAMC,gBAAgB,CAACC;QACnB,MAAMC,aAAad,aAAa,UAAU,CAAC,KAAK,EAAE,OAAOe,CAAAA,IAAKA,EAAE,GAAG,KAAKF,QAAQ,EAAE;QAClF,IAAIC,WAAW,MAAM,GAAG,GACpB,OAAOA;QAGX,MAAME,cAAcH,AAAQ,SAARA,MAAe,OAAO;QAC1C,OAAOb,aAAa,UAAU,CAAC,KAAK,EAAE,OAAOe,CAAAA,IAAKA,EAAE,GAAG,KAAKC,gBAAgB,EAAE;IAClF;IAEAC,UAAU;QACN,IAAI,CAACZ,WAAW,CAACE,gBACb;QAGJ,IAAIW,iBAAiBb,YAAYc,eAAed,UAC5CF,UAAUM;aACP,IAAIW,YAAYf,UAAU;YAC7B,IAAIgB;YACJ,IAAI;gBACA,MAAMC,aAAaf,eAAe,MAAM,CAAC,OAAO;gBAChD,MAAMgB,aAAaC,sBAAgCF,YAAYG;gBAC/D,IAAIF,YACAF,OAAOE,WAAW,WAAW;YAErC,EAAE,OAAM;gBACJF,OAAOhB,QAAQ,WAAW;YAC9B;YAEa,aAATgB,OACAlB,UAAUS,cAAc,SAExBT,UAAUS,cAAc;QAEhC,OAAWc,aAAarB,WACpBF,UAAUH,aAAa,UAAU,CAAC,MAAM,IAAI,EAAE,IAE9CG,UAAU,EAAE;IAEpB,GAAG;QAACE;KAAQ;IAEZ,OAAO,WAAP,GACI,0CACK,AAAEH,QAAQ,SAAS,WAAT,GACP,oBAACyB,UAAQA;QACL,iBAAgB;QAChB,iBAAiB;QACjB,aAAa9B,OAAO,SAAS;QAC7B,sBAAsB;QACtB,UAAU;QACV,YAAY;OAEXK,QAAQ,IAAI0B,CAAAA,SAAAA,WAAAA,GACT,oBAACC,cAAYA;YACT,WAAW,CAAC,qBAAqB,EAC7BhC,OAAO,OAAO+B,OAAO,EAAE,GAAG,gCAAgC,IAC5D;YACF,SAAS,IAAM9B,gBAAgB8B;YAC/B,KAAKA,OAAO,EAAE;yBAEd,oBAAC;YAAK,WAAU;WAAQA,OAAO,KAAK,OAIhD;AAGhB"}
@@ -0,0 +1 @@
1
+ export { LexicalEditor } from "../../../components/LexicalEditor/LexicalEditor.js";
@@ -0,0 +1 @@
1
+ export { LexicalEditor } from "../../../components/LexicalEditor/LexicalEditor.js";
@@ -4,5 +4,4 @@ export { useHotkeys } from "../../hooks/useHotkeys.js";
4
4
  export { useDialogs } from "../../components/Dialogs/useDialogs.js";
5
5
  export { Logo } from "../../base/ui/Logo.js";
6
6
  export { TenantSelector } from "../../base/ui/TenantSelector.js";
7
- export { LexicalEditor } from "../../components/LexicalEditor/LexicalEditor.js";
8
7
  export { AdminLayout } from "../../components/AdminLayout.js";
@@ -3,5 +3,4 @@ export { useHotkeys } from "../../hooks/useHotkeys.js";
3
3
  export { useDialogs } from "../../components/Dialogs/useDialogs.js";
4
4
  export { Logo } from "../../base/ui/Logo.js";
5
5
  export { TenantSelector } from "../../base/ui/TenantSelector.js";
6
- export { LexicalEditor } from "../../components/LexicalEditor/LexicalEditor.js";
7
6
  export { AdminLayout } from "../../components/AdminLayout.js";
@@ -0,0 +1,6 @@
1
+ import type { FileUrlFormatter as IFileUrlFormatter, FileUrlParams } from "@webiny/admin-ui";
2
+ export declare const FileUrlFormatter: import("@webiny/di").Abstraction<IFileUrlFormatter>;
3
+ export declare namespace FileUrlFormatter {
4
+ type Interface = IFileUrlFormatter;
5
+ type Params = FileUrlParams;
6
+ }
@@ -0,0 +1,5 @@
1
+ import { createAbstraction } from "@webiny/feature/admin";
2
+ const FileUrlFormatter = createAbstraction("FileUrlFormatter");
3
+ export { FileUrlFormatter };
4
+
5
+ //# sourceMappingURL=abstractions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/fileUrlFormatter/abstractions.js","sources":["../../../src/features/fileUrlFormatter/abstractions.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/admin\";\nimport type { FileUrlFormatter as IFileUrlFormatter, FileUrlParams } from \"@webiny/admin-ui\";\n\nexport const FileUrlFormatter = createAbstraction<IFileUrlFormatter>(\"FileUrlFormatter\");\n\nexport namespace FileUrlFormatter {\n export type Interface = IFileUrlFormatter;\n export type Params = FileUrlParams;\n}\n"],"names":["FileUrlFormatter","createAbstraction"],"mappings":";AAGO,MAAMA,mBAAmBC,kBAAqC"}
@@ -187,7 +187,8 @@ class FieldRenderersDemoPresenter {
187
187
  }));
188
188
  }),
189
189
  fileImage: fields.file().label("Image (full metadata)").description("Stores the full file object (id, name, size, src, etc.)"),
190
- fileUrl: fields.fileUrl().label("Image URL").description("Stores only the file URL as a string")
190
+ fileUrl: fields.fileUrl().label("Image URL").description("Stores only the file URL as a string"),
191
+ richText: fields.lexical().label("Rich Text").description("Lexical rich text editor")
191
192
  }),
192
193
  layout: (layout)=>[
193
194
  layout.tabs("mainTabs").tab("text", (tab)=>{
@@ -258,6 +259,10 @@ class FieldRenderersDemoPresenter {
258
259
  tab.label("Files").layout((l)=>[
259
260
  l.row("fileImage", "fileUrl")
260
261
  ]);
262
+ }).tab("lexical", (tab)=>{
263
+ tab.label("Lexical").layout((l)=>[
264
+ l.row("richText")
265
+ ]);
261
266
  })
262
267
  ]
263
268
  });
@@ -1 +1 @@
1
- {"version":3,"file":"features/formModel/demo/FieldRenderersDemoPresenter.js","sources":["../../../../src/features/formModel/demo/FieldRenderersDemoPresenter.ts"],"sourcesContent":["import { makeAutoObservable, toJS } from \"mobx\";\nimport type { IFormModel, IFormModelFactory, IFormVM, IFormError } from \"../abstractions.js\";\n\nexport interface FieldRenderersDemoVM {\n form: IFormVM;\n data: Record<string, unknown>;\n lastSubmitted: Record<string, unknown> | null;\n isSubmitting: boolean;\n formErrors: IFormError[];\n}\n\nexport class FieldRenderersDemoPresenter {\n private form: IFormModel;\n private lastSubmitted: Record<string, unknown> | null = null;\n private isSubmitting = false;\n\n constructor(formFactory: IFormModelFactory) {\n this.form = formFactory.create({\n fields: fields => ({\n // --- Text ---\n textInput: fields\n .text()\n .label(\"Text Input\")\n .placeholder(\"Type here...\")\n .required(\"Text input is required\")\n .description(\"Standard text input\")\n .help(\"Enter any text value\")\n .note(\"Max 255 characters\"),\n textInputs: fields\n .text()\n .list()\n .label(\"Text Inputs\")\n .renderer(\"textInputs\", { addItemLabel: \"Add text\" })\n .description(\"Add multiple text values\")\n .help(\"Each value is stored separately\")\n .note(\"Press Enter to add quickly\"),\n tags: fields\n .text()\n .list()\n .label(\"Tags\")\n .renderer(\"tags\")\n .placeholder(\"Add values\")\n .defaultValue([])\n .description(\"Comma-separated tags\")\n .help(\"Type and press Enter to add a tag\")\n .note(\"Duplicates are ignored\"),\n textarea: fields\n .text()\n .label(\"Textarea\")\n .renderer(\"textarea\", { rows: 4 })\n .description(\"Multi-line text area\")\n .help(\"Supports plain text only\")\n .note(\"Resizable vertically\"),\n textareas: fields\n .text()\n .list()\n .label(\"Descriptions\")\n .renderer(\"textareas\", { addItemLabel: \"Add description\" })\n .description(\"Multiple long text values\")\n .help(\"Each textarea is independent\")\n .note(\"Click add to append a new block\"),\n\n // --- Number ---\n numberInput: fields\n .number()\n .label(\"Number\")\n .placeholder(\"0\")\n .required(\"Number is required\")\n .description(\"Single numeric value\")\n .help(\"Accepts integers and decimals\")\n .note(\"Use dot as decimal separator\"),\n numberInputs: fields\n .number()\n .list()\n .label(\"Number Inputs\")\n .renderer(\"numberInputs\", { addItemLabel: \"Add number\" })\n .description(\"Multiple numeric values\")\n .help(\"Each input accepts a number\")\n .note(\"Empty values are stored as empty strings\"),\n numberOptions: fields\n .number()\n .list()\n .label(\"Number Options\")\n .options([\n { label: \"Tier 1\", value: 100 },\n { label: \"Tier 2\", value: 200 }\n ])\n .description(\"Multiple numeric values\")\n .help(\"Each input accepts a number\")\n .note(\"Empty values are stored as empty strings\"),\n\n // --- Boolean ---\n boolSwitch: fields\n .boolean()\n .label(\"Boolean Switch\")\n .description(\"Toggle on/off\")\n .help(\"Click to toggle state\")\n .note(\"Default is unchecked\"),\n\n // --- Predefined Values ---\n dropdown: fields\n .text()\n .label(\"Dropdown\")\n .placeholder(\"Pick one\")\n .required(\"Dropdown selection is required\")\n .description(\"Single-select dropdown\")\n .help(\"Choose exactly one option\")\n .note(\"Required for form submission\")\n .options([\n { label: \"Option A\", value: \"a\" },\n { label: \"Option B\", value: \"b\" },\n { label: \"Option C\", value: \"c\" }\n ]),\n radioButtons: fields\n .text()\n .label(\"Radio Buttons\")\n .options([\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" }\n ])\n .renderer(\"radioButtons\")\n .description(\"Pick a size variant\")\n .help(\"Only one option can be selected\")\n .note(\"Selection is mutually exclusive\"),\n checkboxes: fields\n .text()\n .list()\n .label(\"Checkboxes\")\n .options([\n { label: \"Read\", value: \"read\" },\n { label: \"Write\", value: \"write\" },\n { label: \"Admin\", value: \"admin\" }\n ])\n .renderer(\"checkboxes\")\n .description(\"Multi-select permissions\")\n .help(\"Check all that apply\")\n .note(\"At least one is recommended\"),\n\n // --- Date/Time ---\n dateOnly: fields\n .datetime()\n .required()\n .dateOnly()\n .label(\"Date Only\")\n .description(\"Pick a calendar date\")\n .note(\"Value: YYYY-MM-DD\"),\n timeOnly: fields\n .datetime()\n .required()\n .timeOnly()\n .label(\"Time Only\")\n .description(\"Time without a date\")\n .note(\"24-hour format\"),\n dateTime: fields\n .datetime()\n .required()\n .withoutTimezone()\n .label(\"Date & Time\")\n .description(\"Date with time of day\")\n .note(\"Seconds default to :00\"),\n dateTimeTz: fields\n .datetime()\n .required()\n .withTimezone()\n .label(\"Date Time + Timezone\")\n .description(\"Full date, time, and timezone\")\n .note(\"Timezone defaults to your local zone\"),\n monthOnly: fields\n .datetime()\n .required()\n .monthOnly()\n .label(\"Month\")\n .description(\"Pick a month and year\")\n .note(\"Value: YYYY-MM\"),\n weekOnly: fields\n .datetime()\n .required()\n .weekOnly({ startsOn: 1 })\n .label(\"Week\")\n .description(\"Pick an ISO week\")\n .note(\"Value: YYYY-Www\"),\n yearOnly: fields\n .datetime()\n .required()\n .yearOnly({ range: [2020, 2035] })\n .label(\"Year\")\n .description(\"Pick a year\")\n .note(\"Value: number\"),\n dateRange: fields\n .datetime()\n .required()\n .dateRange()\n .label(\"Date Range\")\n .description(\"Pick a start and end date\")\n .note(\"Value: { from, to }\"),\n multipleDates: fields\n .datetime()\n .required()\n .multipleDates()\n .label(\"Multiple Dates\")\n .description(\"Select multiple dates\")\n .note(\"Value: string[]\"),\n multipleMonths: fields\n .datetime()\n .required()\n .multipleMonths()\n .label(\"Multiple Months\")\n .description(\"Select multiple months\")\n .note(\"Value: string[]\"),\n multipleYears: fields\n .datetime()\n .required()\n .multipleYears({ range: [2020, 2035] })\n .label(\"Multiple Years\")\n .description(\"Select multiple years\")\n .note(\"Value: number[]\"),\n dateTimeList: fields\n .datetime()\n .required()\n .withTimezone()\n .list()\n .label(\"Dates with TZ (multi)\")\n .description(\"Multiple date entries\")\n .note(\"Each date is independent\"),\n\n // --- Hidden ---\n hiddenField: fields\n .text()\n .hidden()\n .defaultValue(\"secret-value\")\n .description(\"Not visible in the UI\")\n .help(\"Carried in form data silently\")\n .note(\"Value is preset\"),\n\n // --- Key-Value Tags ---\n metaTags: fields\n .object()\n .list()\n .label(\"Meta Tags\")\n .description(\"Add SEO tags\")\n .renderer(\"keyValueTags\", { addItemLabel: \"Add tag\" })\n .fields(f => ({\n name: f.text().placeholder(\"Name\"),\n content: f.text().placeholder(\"Content\")\n })),\n\n // --- Conditional Visibility / Disabled ---\n enableFeature: fields\n .boolean()\n .label(\"Enable Feature\")\n .description(\"Toggle this to show or hide the feature fields below\"),\n featureName: fields\n .text()\n .label(\"Feature Name\")\n .placeholder(\"Name your feature...\")\n .rules([\n {\n type: \"condition\",\n target: \"enableFeature\",\n operator: \"isFalsy\",\n value: null,\n action: \"hide\"\n }\n ]),\n featureMode: fields\n .text()\n .label(\"Feature Mode\")\n .options([\n { label: \"Simple\", value: \"simple\" },\n { label: \"Advanced\", value: \"advanced\" }\n ])\n .rules([\n {\n type: \"condition\",\n target: \"enableFeature\",\n operator: \"isFalsy\",\n value: null,\n action: \"hide\"\n }\n ]),\n advancedConfig: fields\n .text()\n .label(\"Advanced Config\")\n .placeholder(\"JSON config...\")\n .renderer(\"textarea\", { rows: 3 })\n .description(\"Only editable in advanced mode\")\n .rules([\n {\n type: \"condition\",\n target: \"enableFeature\",\n operator: \"isFalsy\",\n value: null,\n action: \"hide\"\n },\n {\n type: \"condition\",\n target: \"featureMode\",\n operator: \"neq\",\n value: \"advanced\",\n action: \"disable\"\n }\n ]),\n\n // --- Dynamic Zone (single template) ---\n contentBlock: fields\n .object()\n .label(\"Content Block\")\n .template(\"hero\", t => {\n t.label(\"Hero Banner\")\n .icon({\n type: \"icon\",\n name: \"fab/behance-square\"\n })\n .fields(f => ({\n heading: f.text().label(\"Heading\").required(\"Required\"),\n image: f.text().label(\"Image URL\")\n }));\n })\n .template(\"text\", t => {\n t.label(\"Rich Text\")\n .icon({\n type: \"icon\",\n name: \"fab/behance-square\"\n })\n .fields(f => ({\n body: f.text().label(\"Body\").renderer(\"textarea\")\n }));\n }),\n\n // --- Dynamic Zone (multi-value template list) ---\n sections: fields\n .object()\n .list()\n .label(\"Page Sections\")\n .renderer(\"dynamicZone\", { container: false })\n .template(\"hero\", t => {\n t.label(\"Hero Banner\")\n .icon({\n type: \"icon\",\n name: \"fab/behance-square\"\n })\n .fields(f => ({\n heading: f.text().label(\"Heading\"),\n subheading: f.text().label(\"Subheading\"),\n uuid: f\n .text()\n .label(\"UUID\")\n .defaultValue(() => Date.now())\n .cloneValue(value => `${value}/${Date.now()}`)\n }));\n })\n .template(\"cta\", t => {\n t.label(\"Call To Action\")\n .icon({\n type: \"icon\",\n name: \"fab/behance-square\"\n })\n .fields(f => ({\n label: f.text().label(\"Button Label\"),\n url: f.text().label(\"URL\")\n }));\n }),\n\n // --- Files ---\n fileImage: fields\n .file()\n .label(\"Image (full metadata)\")\n .description(\"Stores the full file object (id, name, size, src, etc.)\"),\n fileUrl: fields\n .fileUrl()\n .label(\"Image URL\")\n .description(\"Stores only the file URL as a string\")\n }),\n layout: layout => [\n layout\n .tabs(\"mainTabs\")\n .tab(\"text\", tab => {\n tab.label(\"Text\").layout(l => [\n l.row(\"textInput\"),\n l.row(\"textInputs\"),\n l.row(\"tags\"),\n l.row(\"textarea\"),\n l.row(\"textareas\"),\n l.row(\"metaTags\")\n ]);\n })\n .tab(\"numbers\", tab => {\n tab.label(\"Numbers & Boolean\").layout(l => [\n l.row(\"numberInput\"),\n l.row(\"numberInputs\"),\n l.row(\"numberOptions\"),\n l.separator(),\n l.row(\"boolSwitch\")\n ]);\n })\n .tab(\"selects\", tab => {\n tab.label(\"Selects\").layout(l => [\n l.row(\"dropdown\", \"radioButtons\"),\n l.row(\"checkboxes\")\n ]);\n })\n .tab(\"datetime\", tab => {\n tab.label(\"Date / Time\").layout(l => [\n l.row(\"dateOnly\", \"timeOnly\"),\n l.row(\"dateTime\"),\n l.row(\"dateTimeTz\"),\n l.separator(),\n l.row(\"monthOnly\", \"weekOnly\"),\n l.row(\"yearOnly\"),\n l.separator(),\n l.row(\"dateRange\"),\n l.row(\"multipleDates\"),\n l.row(\"multipleMonths\", \"multipleYears\"),\n l.separator(),\n l.row(\"dateTimeList\")\n ]);\n })\n .tab(\"rules\", tab => {\n tab.label(\"Rules\").layout(l => [\n l.row(\"enableFeature\"),\n l.row(\"featureName\", \"featureMode\"),\n l.row(\"advancedConfig\")\n ]);\n })\n .tab(\"dynamic\", tab => {\n tab.label(\"Dynamic Zones\").layout(l => [\n l.object(\"contentBlock\", {\n hero: inner => [inner.row(\"heading\"), inner.row(\"image\")],\n text: inner => [inner.row(\"body\")]\n }),\n l.object(\"sections\", {\n hero: inner => [\n inner.row(\"heading\", \"subheading\"),\n inner.row(\"uuid\")\n ],\n cta: inner => [inner.row(\"label\", \"url\")]\n })\n ]);\n })\n .tab(\"files\", tab => {\n tab.label(\"Files\").layout(l => [l.row(\"fileImage\", \"fileUrl\")]);\n })\n ]\n });\n\n makeAutoObservable(this);\n }\n\n get vm(): FieldRenderersDemoVM {\n return {\n form: this.form.vm,\n data: toJS(this.form.getData()),\n lastSubmitted: this.lastSubmitted,\n isSubmitting: this.isSubmitting,\n formErrors: this.form.errors\n };\n }\n\n focusField(path: string): void {\n this.form.focusField(path);\n }\n\n async submit(): Promise<void> {\n this.isSubmitting = true;\n try {\n const result = await this.form.submit<Record<string, unknown>>();\n if (result !== false) {\n this.lastSubmitted = toJS(result);\n }\n } finally {\n this.isSubmitting = false;\n }\n }\n\n reset(): void {\n this.form.reset();\n this.lastSubmitted = null;\n }\n}\n"],"names":["FieldRenderersDemoPresenter","formFactory","fields","f","t","Date","value","layout","tab","l","inner","makeAutoObservable","toJS","path","result"],"mappings":"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"}
1
+ {"version":3,"file":"features/formModel/demo/FieldRenderersDemoPresenter.js","sources":["../../../../src/features/formModel/demo/FieldRenderersDemoPresenter.ts"],"sourcesContent":["import { makeAutoObservable, toJS } from \"mobx\";\nimport type { IFormModel, IFormModelFactory, IFormVM, IFormError } from \"../abstractions.js\";\n\nexport interface FieldRenderersDemoVM {\n form: IFormVM;\n data: Record<string, unknown>;\n lastSubmitted: Record<string, unknown> | null;\n isSubmitting: boolean;\n formErrors: IFormError[];\n}\n\nexport class FieldRenderersDemoPresenter {\n private form: IFormModel;\n private lastSubmitted: Record<string, unknown> | null = null;\n private isSubmitting = false;\n\n constructor(formFactory: IFormModelFactory) {\n this.form = formFactory.create({\n fields: fields => ({\n // --- Text ---\n textInput: fields\n .text()\n .label(\"Text Input\")\n .placeholder(\"Type here...\")\n .required(\"Text input is required\")\n .description(\"Standard text input\")\n .help(\"Enter any text value\")\n .note(\"Max 255 characters\"),\n textInputs: fields\n .text()\n .list()\n .label(\"Text Inputs\")\n .renderer(\"textInputs\", { addItemLabel: \"Add text\" })\n .description(\"Add multiple text values\")\n .help(\"Each value is stored separately\")\n .note(\"Press Enter to add quickly\"),\n tags: fields\n .text()\n .list()\n .label(\"Tags\")\n .renderer(\"tags\")\n .placeholder(\"Add values\")\n .defaultValue([])\n .description(\"Comma-separated tags\")\n .help(\"Type and press Enter to add a tag\")\n .note(\"Duplicates are ignored\"),\n textarea: fields\n .text()\n .label(\"Textarea\")\n .renderer(\"textarea\", { rows: 4 })\n .description(\"Multi-line text area\")\n .help(\"Supports plain text only\")\n .note(\"Resizable vertically\"),\n textareas: fields\n .text()\n .list()\n .label(\"Descriptions\")\n .renderer(\"textareas\", { addItemLabel: \"Add description\" })\n .description(\"Multiple long text values\")\n .help(\"Each textarea is independent\")\n .note(\"Click add to append a new block\"),\n\n // --- Number ---\n numberInput: fields\n .number()\n .label(\"Number\")\n .placeholder(\"0\")\n .required(\"Number is required\")\n .description(\"Single numeric value\")\n .help(\"Accepts integers and decimals\")\n .note(\"Use dot as decimal separator\"),\n numberInputs: fields\n .number()\n .list()\n .label(\"Number Inputs\")\n .renderer(\"numberInputs\", { addItemLabel: \"Add number\" })\n .description(\"Multiple numeric values\")\n .help(\"Each input accepts a number\")\n .note(\"Empty values are stored as empty strings\"),\n numberOptions: fields\n .number()\n .list()\n .label(\"Number Options\")\n .options([\n { label: \"Tier 1\", value: 100 },\n { label: \"Tier 2\", value: 200 }\n ])\n .description(\"Multiple numeric values\")\n .help(\"Each input accepts a number\")\n .note(\"Empty values are stored as empty strings\"),\n\n // --- Boolean ---\n boolSwitch: fields\n .boolean()\n .label(\"Boolean Switch\")\n .description(\"Toggle on/off\")\n .help(\"Click to toggle state\")\n .note(\"Default is unchecked\"),\n\n // --- Predefined Values ---\n dropdown: fields\n .text()\n .label(\"Dropdown\")\n .placeholder(\"Pick one\")\n .required(\"Dropdown selection is required\")\n .description(\"Single-select dropdown\")\n .help(\"Choose exactly one option\")\n .note(\"Required for form submission\")\n .options([\n { label: \"Option A\", value: \"a\" },\n { label: \"Option B\", value: \"b\" },\n { label: \"Option C\", value: \"c\" }\n ]),\n radioButtons: fields\n .text()\n .label(\"Radio Buttons\")\n .options([\n { label: \"Small\", value: \"sm\" },\n { label: \"Medium\", value: \"md\" },\n { label: \"Large\", value: \"lg\" }\n ])\n .renderer(\"radioButtons\")\n .description(\"Pick a size variant\")\n .help(\"Only one option can be selected\")\n .note(\"Selection is mutually exclusive\"),\n checkboxes: fields\n .text()\n .list()\n .label(\"Checkboxes\")\n .options([\n { label: \"Read\", value: \"read\" },\n { label: \"Write\", value: \"write\" },\n { label: \"Admin\", value: \"admin\" }\n ])\n .renderer(\"checkboxes\")\n .description(\"Multi-select permissions\")\n .help(\"Check all that apply\")\n .note(\"At least one is recommended\"),\n\n // --- Date/Time ---\n dateOnly: fields\n .datetime()\n .required()\n .dateOnly()\n .label(\"Date Only\")\n .description(\"Pick a calendar date\")\n .note(\"Value: YYYY-MM-DD\"),\n timeOnly: fields\n .datetime()\n .required()\n .timeOnly()\n .label(\"Time Only\")\n .description(\"Time without a date\")\n .note(\"24-hour format\"),\n dateTime: fields\n .datetime()\n .required()\n .withoutTimezone()\n .label(\"Date & Time\")\n .description(\"Date with time of day\")\n .note(\"Seconds default to :00\"),\n dateTimeTz: fields\n .datetime()\n .required()\n .withTimezone()\n .label(\"Date Time + Timezone\")\n .description(\"Full date, time, and timezone\")\n .note(\"Timezone defaults to your local zone\"),\n monthOnly: fields\n .datetime()\n .required()\n .monthOnly()\n .label(\"Month\")\n .description(\"Pick a month and year\")\n .note(\"Value: YYYY-MM\"),\n weekOnly: fields\n .datetime()\n .required()\n .weekOnly({ startsOn: 1 })\n .label(\"Week\")\n .description(\"Pick an ISO week\")\n .note(\"Value: YYYY-Www\"),\n yearOnly: fields\n .datetime()\n .required()\n .yearOnly({ range: [2020, 2035] })\n .label(\"Year\")\n .description(\"Pick a year\")\n .note(\"Value: number\"),\n dateRange: fields\n .datetime()\n .required()\n .dateRange()\n .label(\"Date Range\")\n .description(\"Pick a start and end date\")\n .note(\"Value: { from, to }\"),\n multipleDates: fields\n .datetime()\n .required()\n .multipleDates()\n .label(\"Multiple Dates\")\n .description(\"Select multiple dates\")\n .note(\"Value: string[]\"),\n multipleMonths: fields\n .datetime()\n .required()\n .multipleMonths()\n .label(\"Multiple Months\")\n .description(\"Select multiple months\")\n .note(\"Value: string[]\"),\n multipleYears: fields\n .datetime()\n .required()\n .multipleYears({ range: [2020, 2035] })\n .label(\"Multiple Years\")\n .description(\"Select multiple years\")\n .note(\"Value: number[]\"),\n dateTimeList: fields\n .datetime()\n .required()\n .withTimezone()\n .list()\n .label(\"Dates with TZ (multi)\")\n .description(\"Multiple date entries\")\n .note(\"Each date is independent\"),\n\n // --- Hidden ---\n hiddenField: fields\n .text()\n .hidden()\n .defaultValue(\"secret-value\")\n .description(\"Not visible in the UI\")\n .help(\"Carried in form data silently\")\n .note(\"Value is preset\"),\n\n // --- Key-Value Tags ---\n metaTags: fields\n .object()\n .list()\n .label(\"Meta Tags\")\n .description(\"Add SEO tags\")\n .renderer(\"keyValueTags\", { addItemLabel: \"Add tag\" })\n .fields(f => ({\n name: f.text().placeholder(\"Name\"),\n content: f.text().placeholder(\"Content\")\n })),\n\n // --- Conditional Visibility / Disabled ---\n enableFeature: fields\n .boolean()\n .label(\"Enable Feature\")\n .description(\"Toggle this to show or hide the feature fields below\"),\n featureName: fields\n .text()\n .label(\"Feature Name\")\n .placeholder(\"Name your feature...\")\n .rules([\n {\n type: \"condition\",\n target: \"enableFeature\",\n operator: \"isFalsy\",\n value: null,\n action: \"hide\"\n }\n ]),\n featureMode: fields\n .text()\n .label(\"Feature Mode\")\n .options([\n { label: \"Simple\", value: \"simple\" },\n { label: \"Advanced\", value: \"advanced\" }\n ])\n .rules([\n {\n type: \"condition\",\n target: \"enableFeature\",\n operator: \"isFalsy\",\n value: null,\n action: \"hide\"\n }\n ]),\n advancedConfig: fields\n .text()\n .label(\"Advanced Config\")\n .placeholder(\"JSON config...\")\n .renderer(\"textarea\", { rows: 3 })\n .description(\"Only editable in advanced mode\")\n .rules([\n {\n type: \"condition\",\n target: \"enableFeature\",\n operator: \"isFalsy\",\n value: null,\n action: \"hide\"\n },\n {\n type: \"condition\",\n target: \"featureMode\",\n operator: \"neq\",\n value: \"advanced\",\n action: \"disable\"\n }\n ]),\n\n // --- Dynamic Zone (single template) ---\n contentBlock: fields\n .object()\n .label(\"Content Block\")\n .template(\"hero\", t => {\n t.label(\"Hero Banner\")\n .icon({\n type: \"icon\",\n name: \"fab/behance-square\"\n })\n .fields(f => ({\n heading: f.text().label(\"Heading\").required(\"Required\"),\n image: f.text().label(\"Image URL\")\n }));\n })\n .template(\"text\", t => {\n t.label(\"Rich Text\")\n .icon({\n type: \"icon\",\n name: \"fab/behance-square\"\n })\n .fields(f => ({\n body: f.text().label(\"Body\").renderer(\"textarea\")\n }));\n }),\n\n // --- Dynamic Zone (multi-value template list) ---\n sections: fields\n .object()\n .list()\n .label(\"Page Sections\")\n .renderer(\"dynamicZone\", { container: false })\n .template(\"hero\", t => {\n t.label(\"Hero Banner\")\n .icon({\n type: \"icon\",\n name: \"fab/behance-square\"\n })\n .fields(f => ({\n heading: f.text().label(\"Heading\"),\n subheading: f.text().label(\"Subheading\"),\n uuid: f\n .text()\n .label(\"UUID\")\n .defaultValue(() => Date.now())\n .cloneValue(value => `${value}/${Date.now()}`)\n }));\n })\n .template(\"cta\", t => {\n t.label(\"Call To Action\")\n .icon({\n type: \"icon\",\n name: \"fab/behance-square\"\n })\n .fields(f => ({\n label: f.text().label(\"Button Label\"),\n url: f.text().label(\"URL\")\n }));\n }),\n\n // --- Files ---\n fileImage: fields\n .file()\n .label(\"Image (full metadata)\")\n .description(\"Stores the full file object (id, name, size, src, etc.)\"),\n fileUrl: fields\n .fileUrl()\n .label(\"Image URL\")\n .description(\"Stores only the file URL as a string\"),\n\n // --- Lexical ---\n richText: fields\n .lexical()\n .label(\"Rich Text\")\n .description(\"Lexical rich text editor\")\n }),\n layout: layout => [\n layout\n .tabs(\"mainTabs\")\n .tab(\"text\", tab => {\n tab.label(\"Text\").layout(l => [\n l.row(\"textInput\"),\n l.row(\"textInputs\"),\n l.row(\"tags\"),\n l.row(\"textarea\"),\n l.row(\"textareas\"),\n l.row(\"metaTags\")\n ]);\n })\n .tab(\"numbers\", tab => {\n tab.label(\"Numbers & Boolean\").layout(l => [\n l.row(\"numberInput\"),\n l.row(\"numberInputs\"),\n l.row(\"numberOptions\"),\n l.separator(),\n l.row(\"boolSwitch\")\n ]);\n })\n .tab(\"selects\", tab => {\n tab.label(\"Selects\").layout(l => [\n l.row(\"dropdown\", \"radioButtons\"),\n l.row(\"checkboxes\")\n ]);\n })\n .tab(\"datetime\", tab => {\n tab.label(\"Date / Time\").layout(l => [\n l.row(\"dateOnly\", \"timeOnly\"),\n l.row(\"dateTime\"),\n l.row(\"dateTimeTz\"),\n l.separator(),\n l.row(\"monthOnly\", \"weekOnly\"),\n l.row(\"yearOnly\"),\n l.separator(),\n l.row(\"dateRange\"),\n l.row(\"multipleDates\"),\n l.row(\"multipleMonths\", \"multipleYears\"),\n l.separator(),\n l.row(\"dateTimeList\")\n ]);\n })\n .tab(\"rules\", tab => {\n tab.label(\"Rules\").layout(l => [\n l.row(\"enableFeature\"),\n l.row(\"featureName\", \"featureMode\"),\n l.row(\"advancedConfig\")\n ]);\n })\n .tab(\"dynamic\", tab => {\n tab.label(\"Dynamic Zones\").layout(l => [\n l.object(\"contentBlock\", {\n hero: inner => [inner.row(\"heading\"), inner.row(\"image\")],\n text: inner => [inner.row(\"body\")]\n }),\n l.object(\"sections\", {\n hero: inner => [\n inner.row(\"heading\", \"subheading\"),\n inner.row(\"uuid\")\n ],\n cta: inner => [inner.row(\"label\", \"url\")]\n })\n ]);\n })\n .tab(\"files\", tab => {\n tab.label(\"Files\").layout(l => [l.row(\"fileImage\", \"fileUrl\")]);\n })\n .tab(\"lexical\", tab => {\n tab.label(\"Lexical\").layout(l => [l.row(\"richText\")]);\n })\n ]\n });\n\n makeAutoObservable(this);\n }\n\n get vm(): FieldRenderersDemoVM {\n return {\n form: this.form.vm,\n data: toJS(this.form.getData()),\n lastSubmitted: this.lastSubmitted,\n isSubmitting: this.isSubmitting,\n formErrors: this.form.errors\n };\n }\n\n focusField(path: string): void {\n this.form.focusField(path);\n }\n\n async submit(): Promise<void> {\n this.isSubmitting = true;\n try {\n const result = await this.form.submit<Record<string, unknown>>();\n if (result !== false) {\n this.lastSubmitted = toJS(result);\n }\n } finally {\n this.isSubmitting = false;\n }\n }\n\n reset(): void {\n this.form.reset();\n this.lastSubmitted = null;\n }\n}\n"],"names":["FieldRenderersDemoPresenter","formFactory","fields","f","t","Date","value","layout","tab","l","inner","makeAutoObservable","toJS","path","result"],"mappings":"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"}
@@ -3,7 +3,7 @@ import { FormModelFactory } from "./abstractions.js";
3
3
  import { FormModelFactory as external_FormModelFactory_js_FormModelFactory } from "./FormModelFactory.js";
4
4
  import { ConditionRuleEvaluator } from "./ConditionRuleEvaluator.js";
5
5
  import { FieldBuilderRegistry } from "./FieldBuilderRegistry.js";
6
- import { BooleanFieldType, DateTimeFieldType, FileFieldType, FileUrlFieldType, NumberFieldType, ObjectFieldType, TextFieldType } from "./fieldTypes/index.js";
6
+ import { BooleanFieldType, DateTimeFieldType, FileFieldType, FileUrlFieldType, LexicalFieldType, NumberFieldType, ObjectFieldType, TextFieldType } from "./fieldTypes/index.js";
7
7
  const FormModelFeature = createFeature({
8
8
  name: "FormModel",
9
9
  register (container) {
@@ -14,6 +14,7 @@ const FormModelFeature = createFeature({
14
14
  container.register(FileFieldType);
15
15
  container.register(FileUrlFieldType);
16
16
  container.register(ObjectFieldType);
17
+ container.register(LexicalFieldType);
17
18
  container.register(FieldBuilderRegistry).inSingletonScope();
18
19
  container.register(ConditionRuleEvaluator).inSingletonScope();
19
20
  container.register(external_FormModelFactory_js_FormModelFactory).inSingletonScope();
@@ -1 +1 @@
1
- {"version":3,"file":"features/formModel/feature.js","sources":["../../../src/features/formModel/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { FormModelFactory as Abstraction } from \"./abstractions.js\";\nimport { FormModelFactory } from \"./FormModelFactory.js\";\nimport { ConditionRuleEvaluator } from \"./ConditionRuleEvaluator.js\";\nimport { FieldBuilderRegistry } from \"./FieldBuilderRegistry.js\";\nimport {\n TextFieldType,\n NumberFieldType,\n BooleanFieldType,\n DateTimeFieldType,\n FileFieldType,\n FileUrlFieldType,\n ObjectFieldType\n} from \"./fieldTypes/index.js\";\n\nexport const FormModelFeature = createFeature({\n name: \"FormModel\",\n register(container) {\n container.register(TextFieldType);\n container.register(NumberFieldType);\n container.register(BooleanFieldType);\n container.register(DateTimeFieldType);\n container.register(FileFieldType);\n container.register(FileUrlFieldType);\n container.register(ObjectFieldType);\n\n container.register(FieldBuilderRegistry).inSingletonScope();\n container.register(ConditionRuleEvaluator).inSingletonScope();\n container.register(FormModelFactory).inSingletonScope();\n },\n resolve(container) {\n return {\n formModelFactory: container.resolve(Abstraction)\n };\n }\n});\n"],"names":["FormModelFeature","createFeature","container","TextFieldType","NumberFieldType","BooleanFieldType","DateTimeFieldType","FileFieldType","FileUrlFieldType","ObjectFieldType","FieldBuilderRegistry","ConditionRuleEvaluator","FormModelFactory","Abstraction"],"mappings":";;;;;;AAeO,MAAMA,mBAAmBC,cAAc;IAC1C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE;QACnBF,UAAU,QAAQ,CAACG;QACnBH,UAAU,QAAQ,CAACI;QACnBJ,UAAU,QAAQ,CAACK;QACnBL,UAAU,QAAQ,CAACM;QACnBN,UAAU,QAAQ,CAACO;QAEnBP,UAAU,QAAQ,CAACQ,sBAAsB,gBAAgB;QACzDR,UAAU,QAAQ,CAACS,wBAAwB,gBAAgB;QAC3DT,UAAU,QAAQ,CAACU,+CAAkB,gBAAgB;IACzD;IACA,SAAQV,SAAS;QACb,OAAO;YACH,kBAAkBA,UAAU,OAAO,CAACW;QACxC;IACJ;AACJ"}
1
+ {"version":3,"file":"features/formModel/feature.js","sources":["../../../src/features/formModel/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/admin\";\nimport { FormModelFactory as Abstraction } from \"./abstractions.js\";\nimport { FormModelFactory } from \"./FormModelFactory.js\";\nimport { ConditionRuleEvaluator } from \"./ConditionRuleEvaluator.js\";\nimport { FieldBuilderRegistry } from \"./FieldBuilderRegistry.js\";\nimport {\n TextFieldType,\n NumberFieldType,\n BooleanFieldType,\n DateTimeFieldType,\n FileFieldType,\n FileUrlFieldType,\n ObjectFieldType,\n LexicalFieldType\n} from \"./fieldTypes/index.js\";\n\nexport const FormModelFeature = createFeature({\n name: \"FormModel\",\n register(container) {\n container.register(TextFieldType);\n container.register(NumberFieldType);\n container.register(BooleanFieldType);\n container.register(DateTimeFieldType);\n container.register(FileFieldType);\n container.register(FileUrlFieldType);\n container.register(ObjectFieldType);\n container.register(LexicalFieldType);\n\n container.register(FieldBuilderRegistry).inSingletonScope();\n container.register(ConditionRuleEvaluator).inSingletonScope();\n container.register(FormModelFactory).inSingletonScope();\n },\n resolve(container) {\n return {\n formModelFactory: container.resolve(Abstraction)\n };\n }\n});\n"],"names":["FormModelFeature","createFeature","container","TextFieldType","NumberFieldType","BooleanFieldType","DateTimeFieldType","FileFieldType","FileUrlFieldType","ObjectFieldType","LexicalFieldType","FieldBuilderRegistry","ConditionRuleEvaluator","FormModelFactory","Abstraction"],"mappings":";;;;;;AAgBO,MAAMA,mBAAmBC,cAAc;IAC1C,MAAM;IACN,UAASC,SAAS;QACdA,UAAU,QAAQ,CAACC;QACnBD,UAAU,QAAQ,CAACE;QACnBF,UAAU,QAAQ,CAACG;QACnBH,UAAU,QAAQ,CAACI;QACnBJ,UAAU,QAAQ,CAACK;QACnBL,UAAU,QAAQ,CAACM;QACnBN,UAAU,QAAQ,CAACO;QACnBP,UAAU,QAAQ,CAACQ;QAEnBR,UAAU,QAAQ,CAACS,sBAAsB,gBAAgB;QACzDT,UAAU,QAAQ,CAACU,wBAAwB,gBAAgB;QAC3DV,UAAU,QAAQ,CAACW,+CAAkB,gBAAgB;IACzD;IACA,SAAQX,SAAS;QACb,OAAO;YACH,kBAAkBA,UAAU,OAAO,CAACY;QACxC;IACJ;AACJ"}
@@ -0,0 +1,19 @@
1
+ import { type IFieldTypeFactory } from "../abstractions.js";
2
+ import { FieldBuilder } from "../FieldBuilder.js";
3
+ import type { RichTextValueWithHtml } from "../../../components/LexicalEditor/lexicalValueWithHtml.js";
4
+ export declare class LexicalFieldBuilder extends FieldBuilder<"lexical"> {
5
+ constructor();
6
+ }
7
+ declare class LexicalFieldTypeFactory implements IFieldTypeFactory {
8
+ readonly type = "lexical";
9
+ create(_registry: any): LexicalFieldBuilder;
10
+ }
11
+ export declare const LexicalFieldType: typeof LexicalFieldTypeFactory & {
12
+ __abstraction: import("@webiny/di").Abstraction<IFieldTypeFactory>;
13
+ };
14
+ declare module "../abstractions.js" {
15
+ interface IFieldBuilderRegistry {
16
+ lexical(): IFieldBuilder<"lexical", false, RichTextValueWithHtml | null>;
17
+ }
18
+ }
19
+ export {};
@@ -0,0 +1,23 @@
1
+ import { FieldType } from "../abstractions.js";
2
+ import { FieldBuilder } from "../FieldBuilder.js";
3
+ class LexicalFieldBuilder extends FieldBuilder {
4
+ constructor(){
5
+ super("lexical");
6
+ this._config.renderer = "lexical";
7
+ }
8
+ }
9
+ class LexicalFieldTypeFactory {
10
+ create(_registry) {
11
+ return new LexicalFieldBuilder();
12
+ }
13
+ constructor(){
14
+ this.type = "lexical";
15
+ }
16
+ }
17
+ const LexicalFieldType = FieldType.createImplementation({
18
+ implementation: LexicalFieldTypeFactory,
19
+ dependencies: []
20
+ });
21
+ export { LexicalFieldBuilder, LexicalFieldType };
22
+
23
+ //# sourceMappingURL=LexicalFieldType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"features/formModel/fieldTypes/LexicalFieldType.js","sources":["../../../../src/features/formModel/fieldTypes/LexicalFieldType.ts"],"sourcesContent":["import { FieldType, type IFieldTypeFactory, type IFieldBuilder } from \"../abstractions.js\";\nimport { FieldBuilder } from \"../FieldBuilder.js\";\nimport type { RichTextValueWithHtml } from \"~/components/LexicalEditor/lexicalValueWithHtml.js\";\n\nexport class LexicalFieldBuilder extends FieldBuilder<\"lexical\"> {\n constructor() {\n super(\"lexical\");\n this._config.renderer = \"lexical\";\n }\n}\n\nclass LexicalFieldTypeFactory implements IFieldTypeFactory {\n readonly type = \"lexical\";\n create(_registry: any) {\n return new LexicalFieldBuilder();\n }\n}\n\nexport const LexicalFieldType = FieldType.createImplementation({\n implementation: LexicalFieldTypeFactory,\n dependencies: []\n});\n\ndeclare module \"../abstractions.js\" {\n interface IFieldBuilderRegistry {\n lexical(): IFieldBuilder<\"lexical\", false, RichTextValueWithHtml | null>;\n }\n}\n"],"names":["LexicalFieldBuilder","FieldBuilder","LexicalFieldTypeFactory","_registry","LexicalFieldType","FieldType"],"mappings":";;AAIO,MAAMA,4BAA4BC;IACrC,aAAc;QACV,KAAK,CAAC;QACN,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG;IAC5B;AACJ;AAEA,MAAMC;IAEF,OAAOC,SAAc,EAAE;QACnB,OAAO,IAAIH;IACf;;aAHS,IAAI,GAAG;;AAIpB;AAEO,MAAMI,mBAAmBC,UAAU,oBAAoB,CAAC;IAC3D,gBAAgBH;IAChB,cAAc,EAAE;AACpB"}
@@ -5,3 +5,4 @@ export { DateTimeFieldType, DateTimeFieldBuilder } from "./DateTimeFieldType.js"
5
5
  export { FileFieldType, FileFieldBuilder } from "./FileFieldType.js";
6
6
  export { FileUrlFieldType, FileUrlFieldBuilder } from "./FileUrlFieldType.js";
7
7
  export { ObjectFieldType, ObjectFieldBuilder } from "./ObjectFieldType.js";
8
+ export { LexicalFieldType, LexicalFieldBuilder } from "./LexicalFieldType.js";
@@ -5,3 +5,4 @@ export { DateTimeFieldBuilder, DateTimeFieldType } from "./DateTimeFieldType.js"
5
5
  export { FileFieldBuilder, FileFieldType } from "./FileFieldType.js";
6
6
  export { FileUrlFieldBuilder, FileUrlFieldType } from "./FileUrlFieldType.js";
7
7
  export { ObjectFieldBuilder, ObjectFieldType } from "./ObjectFieldType.js";
8
+ export { LexicalFieldBuilder, LexicalFieldType } from "./LexicalFieldType.js";
@@ -18,3 +18,4 @@ import "../../base/Base/FieldRenderers/DateTimeInputsRenderer.js";
18
18
  import "../../base/Base/FieldRenderers/HiddenRenderer.js";
19
19
  import "../../base/Base/FieldRenderers/FilePickerRenderer.js";
20
20
  import "../../base/Base/FieldRenderers/CodeEditorRenderer.js";
21
+ import "../../base/Base/FieldRenderers/LexicalRenderer.js";
@@ -18,3 +18,4 @@ import "../../base/Base/FieldRenderers/DateTimeInputsRenderer.js";
18
18
  import "../../base/Base/FieldRenderers/HiddenRenderer.js";
19
19
  import "../../base/Base/FieldRenderers/FilePickerRenderer.js";
20
20
  import "../../base/Base/FieldRenderers/CodeEditorRenderer.js";
21
+ import "../../base/Base/FieldRenderers/LexicalRenderer.js";
package/index.d.ts CHANGED
@@ -46,6 +46,7 @@ import "./features/formModel/fieldTypes/DateTimeFieldType.js";
46
46
  import "./features/formModel/fieldTypes/FileFieldType.js";
47
47
  import "./features/formModel/fieldTypes/FileUrlFieldType.js";
48
48
  import "./features/formModel/fieldTypes/ObjectFieldType.js";
49
+ import "./features/formModel/fieldTypes/LexicalFieldType.js";
49
50
  export { FormModelFactory } from "./features/formModel/abstractions.js";
50
51
  export type { FormModel } from "./features/formModel/abstractions.js";
51
52
  export type { IFieldRendererRegistry, FieldRendererName, FieldRendererSettings, IFormModelFactory, IFormModelConfig, ILayoutBuilder, ILayoutNodeBuilder, IRowBuilder, ISeparatorBuilder, ITabsBuilder, IElementBuilder, IObjectBuilder, IFieldBuilder, IOptionsFieldBuilder, IFieldBuilderRegistry, IFormModel, IField, FieldTypeMap, IFieldConfig, IFieldVM, IFieldValidation, IFormVM, IFormError, IValueOption, IRowNode, IRowNodeVM, LayoutNode, LayoutNodeVM, LayoutPosition, IPositionedLayoutNode, ILayoutNodeHandle, ILayoutModifier, IFormModifier, BeforeChangeCallback, AfterChangeCallback, AfterSetValueCallback } from "./features/formModel/abstractions.js";
package/index.js CHANGED
@@ -4,6 +4,7 @@ import "./features/formModel/fieldTypes/BooleanFieldType.js";
4
4
  import "./features/formModel/fieldTypes/NumberFieldType.js";
5
5
  import "./features/formModel/fieldTypes/TextFieldType.js";
6
6
  import "./features/formModel/renderers.js";
7
+ import "./features/formModel/fieldTypes/LexicalFieldType.js";
7
8
  import "./features/formModel/fieldTypes/ObjectFieldType.js";
8
9
  import "./features/formModel/fieldTypes/FileUrlFieldType.js";
9
10
  export * from "@webiny/app";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webiny/app-admin",
3
- "version": "6.4.0-beta.2",
3
+ "version": "6.4.0-beta.3",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": "./index.js",
@@ -21,26 +21,28 @@
21
21
  "@emotion/styled": "11.14.1",
22
22
  "@fortawesome/fontawesome-svg-core": "7.2.0",
23
23
  "@fortawesome/react-fontawesome": "3.3.1",
24
- "@iconify/json": "2.2.474",
24
+ "@iconify/json": "2.2.476",
25
+ "@lexical/utils": "0.44.0",
25
26
  "@svgr/webpack": "8.1.0",
26
27
  "@types/react": "18.3.28",
27
- "@webiny/admin-ui": "6.4.0-beta.2",
28
- "@webiny/app": "6.4.0-beta.2",
28
+ "@webiny/admin-ui": "6.4.0-beta.3",
29
+ "@webiny/app": "6.4.0-beta.3",
29
30
  "@webiny/di": "1.0.1",
30
- "@webiny/feature": "6.4.0-beta.2",
31
- "@webiny/form": "6.4.0-beta.2",
32
- "@webiny/icons": "6.4.0-beta.2",
33
- "@webiny/lexical-converter": "6.4.0-beta.2",
34
- "@webiny/lexical-editor": "6.4.0-beta.2",
35
- "@webiny/lexical-theme": "6.4.0-beta.2",
36
- "@webiny/plugins": "6.4.0-beta.2",
37
- "@webiny/react-composition": "6.4.0-beta.2",
38
- "@webiny/react-properties": "6.4.0-beta.2",
39
- "@webiny/sdk": "6.4.0-beta.2",
40
- "@webiny/telemetry": "6.4.0-beta.2",
41
- "@webiny/utils": "6.4.0-beta.2",
42
- "@webiny/validation": "6.4.0-beta.2",
43
- "@webiny/wcp": "6.4.0-beta.2",
31
+ "@webiny/feature": "6.4.0-beta.3",
32
+ "@webiny/form": "6.4.0-beta.3",
33
+ "@webiny/icons": "6.4.0-beta.3",
34
+ "@webiny/lexical-converter": "6.4.0-beta.3",
35
+ "@webiny/lexical-editor": "6.4.0-beta.3",
36
+ "@webiny/lexical-nodes": "6.4.0-beta.3",
37
+ "@webiny/lexical-theme": "6.4.0-beta.3",
38
+ "@webiny/plugins": "6.4.0-beta.3",
39
+ "@webiny/react-composition": "6.4.0-beta.3",
40
+ "@webiny/react-properties": "6.4.0-beta.3",
41
+ "@webiny/sdk": "6.4.0-beta.3",
42
+ "@webiny/telemetry": "6.4.0-beta.3",
43
+ "@webiny/utils": "6.4.0-beta.3",
44
+ "@webiny/validation": "6.4.0-beta.3",
45
+ "@webiny/wcp": "6.4.0-beta.3",
44
46
  "apollo-cache": "1.3.5",
45
47
  "apollo-client": "2.6.10",
46
48
  "apollo-link": "1.2.14",
@@ -79,7 +81,7 @@
79
81
  "@types/react-transition-group": "4.4.12",
80
82
  "@types/store": "2.0.5",
81
83
  "@types/tinycolor2": "1.4.6",
82
- "@webiny/build-tools": "6.4.0-beta.2",
84
+ "@webiny/build-tools": "6.4.0-beta.3",
83
85
  "rimraf": "6.1.3",
84
86
  "typescript": "6.0.3",
85
87
  "vitest": "4.1.6"
@@ -105,5 +107,5 @@
105
107
  ]
106
108
  }
107
109
  },
108
- "gitHead": "872f9f50baa1ff6915a5f338216f84bf0b6dfd24"
110
+ "gitHead": "2e58681d4344024bfb60e6180338e2f154ec87f0"
109
111
  }