@webiny/app-admin 6.4.0-beta.2 → 6.4.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/base/Base/DefaultFieldRenderers.js +4 -0
- package/base/Base/DefaultFieldRenderers.js.map +1 -1
- package/base/Base/FieldRenderers/LexicalRenderer.d.ts +12 -0
- package/base/Base/FieldRenderers/LexicalRenderer.js +48 -0
- package/base/Base/FieldRenderers/LexicalRenderer.js.map +1 -0
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js +1 -1
- package/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js.map +1 -1
- package/base/Base.js +2 -1
- package/base/Base.js.map +1 -1
- package/base/providers/UiProviders.js +6 -2
- package/base/providers/UiProviders.js.map +1 -1
- package/base/ui/FileManager.d.ts +15 -14
- package/base/ui/FileManager.js +5 -2
- package/base/ui/FileManager.js.map +1 -1
- package/components/LexicalEditor/DefaultLexicalEditorConfig.d.ts +2 -0
- package/components/LexicalEditor/DefaultLexicalEditorConfig.js +81 -0
- package/components/LexicalEditor/DefaultLexicalEditorConfig.js.map +1 -0
- package/components/LexicalEditor/TypographyDropDown.d.ts +8 -0
- package/components/LexicalEditor/TypographyDropDown.js +60 -0
- package/components/LexicalEditor/TypographyDropDown.js.map +1 -0
- package/config/AdminConfig/Menu/MenuItem.d.ts +1 -0
- package/config/AdminConfig/Menu/MenuItem.js +2 -1
- package/config/AdminConfig/Menu/MenuItem.js.map +1 -1
- package/config/AdminConfig/Menu/MenuLink.d.ts +1 -0
- package/config/AdminConfig/Menu/MenuLink.js +2 -1
- package/config/AdminConfig/Menu/MenuLink.js.map +1 -1
- package/config/AdminConfig/Menu.d.ts +2 -0
- package/config/AdminConfig.d.ts +2 -0
- package/config/AdminConfig.js +1 -0
- package/config/AdminConfig.js.map +1 -1
- package/exports/admin/ui/file-manager.d.ts +3 -0
- package/exports/admin/ui/file-manager.js +2 -0
- package/exports/admin/ui/lexical.d.ts +1 -0
- package/exports/admin/ui/lexical.js +1 -0
- package/exports/admin/ui.d.ts +0 -1
- package/exports/admin/ui.js +0 -1
- package/features/fileUrlFormatter/abstractions.d.ts +6 -0
- package/features/fileUrlFormatter/abstractions.js +5 -0
- package/features/fileUrlFormatter/abstractions.js.map +1 -0
- package/features/formModel/FormModel.js +2 -2
- package/features/formModel/FormModel.js.map +1 -1
- package/features/formModel/FormModel.test.js +3 -1
- package/features/formModel/FormModel.test.js.map +1 -1
- package/features/formModel/demo/FieldRenderersDemoPresenter.js +6 -1
- package/features/formModel/demo/FieldRenderersDemoPresenter.js.map +1 -1
- package/features/formModel/feature.js +2 -1
- package/features/formModel/feature.js.map +1 -1
- package/features/formModel/fieldTypes/LexicalFieldType.d.ts +19 -0
- package/features/formModel/fieldTypes/LexicalFieldType.js +23 -0
- package/features/formModel/fieldTypes/LexicalFieldType.js.map +1 -0
- package/features/formModel/fieldTypes/index.d.ts +1 -0
- package/features/formModel/fieldTypes/index.js +1 -0
- package/features/formModel/renderers.d.ts +1 -0
- package/features/formModel/renderers.js +1 -0
- package/features/newsletter/NewsletterSubscriptionService.d.ts +13 -0
- package/features/newsletter/NewsletterSubscriptionService.js +36 -0
- package/features/newsletter/NewsletterSubscriptionService.js.map +1 -0
- package/features/newsletter/abstractions.d.ts +11 -0
- package/features/newsletter/abstractions.js +5 -0
- package/features/newsletter/abstractions.js.map +1 -0
- package/features/newsletter/index.d.ts +1 -0
- package/features/newsletter/index.js +1 -0
- package/index.d.ts +2 -1
- package/index.js +2 -1
- package/package.json +31 -27
- package/presentation/installation/components/SystemInstaller/steps/FinishSetup/handleRestartInstallation.d.ts +1 -0
- package/presentation/installation/components/SystemInstaller/steps/FinishSetup/handleRestartInstallation.js +6 -0
- package/presentation/installation/components/SystemInstaller/steps/FinishSetup/handleRestartInstallation.js.map +1 -0
- package/presentation/installation/components/SystemInstaller/steps/FinishSetup/handleStartUsing.d.ts +2 -0
- package/presentation/installation/components/SystemInstaller/steps/FinishSetup/handleStartUsing.js +27 -0
- package/presentation/installation/components/SystemInstaller/steps/FinishSetup/handleStartUsing.js.map +1 -0
- package/presentation/installation/components/SystemInstaller/steps/FinishSetup.js +4 -4
- package/presentation/installation/components/SystemInstaller/steps/FinishSetup.js.map +1 -1
- package/presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.d.ts +3 -1
- package/presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.js +9 -3
- package/presentation/installation/presenters/SystemInstaller/SystemInstallerPresenter.js.map +1 -1
- package/presentation/installation/presenters/SystemInstaller/feature.js +2 -0
- package/presentation/installation/presenters/SystemInstaller/feature.js.map +1 -1
- package/presentation/listPresenter/ListPresenter.d.ts +1 -0
- package/presentation/listPresenter/ListPresenter.js +8 -2
- package/presentation/listPresenter/ListPresenter.js.map +1 -1
- package/presentation/listPresenter/feature.js +1 -1
- package/presentation/listPresenter/feature.js.map +1 -1
|
@@ -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":"
|
|
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"}
|
|
@@ -7,7 +7,7 @@ const ObjectRenderer = createObjectFieldRenderer(({ field })=>/*#__PURE__*/ reac
|
|
|
7
7
|
variant: "container"
|
|
8
8
|
}, /*#__PURE__*/ react.createElement(Accordion.Item, {
|
|
9
9
|
title: field.label,
|
|
10
|
-
defaultOpen: true,
|
|
10
|
+
defaultOpen: field.rendererSettings?.open ?? true,
|
|
11
11
|
className: "pl-sm"
|
|
12
12
|
}, /*#__PURE__*/ react.createElement(NestedLayout, {
|
|
13
13
|
layout: field.layout
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js","sources":["../../../../../src/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { Accordion } from \"@webiny/admin-ui\";\nimport { createObjectFieldRenderer } from \"~/features/formModel/createFieldRenderer.js\";\nimport { NestedLayout } from \"./ObjectFieldComponents.js\";\n\ndeclare module \"../../../../features/formModel/abstractions.js\" {\n interface IFieldRendererRegistry {\n objectAccordionSingle: {\n fieldType: \"object\";\n settings?: {\n open?: boolean;\n };\n };\n }\n}\n\nexport const ObjectRenderer = createObjectFieldRenderer<\"objectAccordionSingle\">(({ field }) => {\n return (\n <Accordion background={\"base\"} variant={\"container\"}>\n <Accordion.Item
|
|
1
|
+
{"version":3,"file":"base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.js","sources":["../../../../../src/base/Base/FieldRenderers/ObjectRenderer/ObjectRenderer.tsx"],"sourcesContent":["import React from \"react\";\nimport { Accordion } from \"@webiny/admin-ui\";\nimport { createObjectFieldRenderer } from \"~/features/formModel/createFieldRenderer.js\";\nimport { NestedLayout } from \"./ObjectFieldComponents.js\";\n\ndeclare module \"../../../../features/formModel/abstractions.js\" {\n interface IFieldRendererRegistry {\n objectAccordionSingle: {\n fieldType: \"object\";\n settings?: {\n open?: boolean;\n };\n };\n }\n}\n\nexport const ObjectRenderer = createObjectFieldRenderer<\"objectAccordionSingle\">(({ field }) => {\n return (\n <Accordion background={\"base\"} variant={\"container\"}>\n <Accordion.Item\n title={field.label}\n defaultOpen={field.rendererSettings?.open ?? true}\n className={\"pl-sm\"}\n >\n <NestedLayout layout={field.layout} />\n </Accordion.Item>\n </Accordion>\n );\n});\n"],"names":["ObjectRenderer","createObjectFieldRenderer","field","Accordion","NestedLayout"],"mappings":";;;;AAgBO,MAAMA,iBAAiBC,0BAAmD,CAAC,EAAEC,KAAK,EAAE,GAChF,WAAP,GACI,oBAACC,WAASA;QAAC,YAAY;QAAQ,SAAS;qBACpC,oBAACA,UAAU,IAAI;QACX,OAAOD,MAAM,KAAK;QAClB,aAAaA,MAAM,gBAAgB,EAAE,QAAQ;QAC7C,WAAW;qBAEX,oBAACE,cAAYA;QAAC,QAAQF,MAAM,MAAM"}
|
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
|
-
|
|
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":"
|
|
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
|
|
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"}
|
package/base/ui/FileManager.d.ts
CHANGED
|
@@ -51,24 +51,25 @@ export type FileManagerProps = {
|
|
|
51
51
|
} & MultipleProps;
|
|
52
52
|
type DistributiveOmit<T, K extends keyof T> = T extends unknown ? Omit<T, K> : never;
|
|
53
53
|
export type FileManagerRendererProps = DistributiveOmit<FileManagerProps, "render">;
|
|
54
|
-
export declare const
|
|
55
|
-
|
|
56
|
-
originalName: string;
|
|
57
|
-
displayName: string;
|
|
58
|
-
} & {
|
|
59
|
-
original: ((props: FileManagerRendererProps) => React.JSX.Element | null) & {
|
|
54
|
+
export declare const FileManager: (({ render, onChange, ...rest }: FileManagerProps) => React.JSX.Element) & {
|
|
55
|
+
Renderer: ((props: FileManagerRendererProps) => React.JSX.Element | null) & {
|
|
60
56
|
original: (props: FileManagerRendererProps) => React.JSX.Element | null;
|
|
61
57
|
originalName: string;
|
|
62
58
|
displayName: string;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
59
|
+
} & {
|
|
60
|
+
original: ((props: FileManagerRendererProps) => React.JSX.Element | null) & {
|
|
61
|
+
original: (props: FileManagerRendererProps) => React.JSX.Element | null;
|
|
62
|
+
originalName: string;
|
|
63
|
+
displayName: string;
|
|
64
|
+
};
|
|
69
65
|
originalName: string;
|
|
70
66
|
displayName: string;
|
|
71
|
-
}
|
|
67
|
+
} & {
|
|
68
|
+
createDecorator: (decorator: import("@webiny/react-composition").ComponentDecorator<((props: FileManagerRendererProps) => React.JSX.Element | null) & {
|
|
69
|
+
original: (props: FileManagerRendererProps) => React.JSX.Element | null;
|
|
70
|
+
originalName: string;
|
|
71
|
+
displayName: string;
|
|
72
|
+
}>) => (props: unknown) => React.JSX.Element;
|
|
73
|
+
};
|
|
72
74
|
};
|
|
73
|
-
export declare const FileManager: ({ render, onChange, ...rest }: FileManagerProps) => React.JSX.Element;
|
|
74
75
|
export {};
|
package/base/ui/FileManager.js
CHANGED
|
@@ -2,7 +2,7 @@ import react, { useCallback, useEffect, useRef, useState } from "react";
|
|
|
2
2
|
import { Portal } from "@webiny/admin-ui";
|
|
3
3
|
import { createVoidComponent, makeDecoratable } from "@webiny/react-composition";
|
|
4
4
|
const FileManagerRenderer = makeDecoratable("FileManagerRenderer", createVoidComponent());
|
|
5
|
-
const
|
|
5
|
+
const BaseFileManager = ({ render, onChange, ...rest })=>{
|
|
6
6
|
const [isFileManagerVisible, setFileManagerVisible] = useState(rest.show);
|
|
7
7
|
const onChangeRef = useRef(onChange);
|
|
8
8
|
useEffect(()=>{
|
|
@@ -39,6 +39,9 @@ const FileManager = ({ render, onChange, ...rest })=>{
|
|
|
39
39
|
};
|
|
40
40
|
return /*#__PURE__*/ react.createElement(react.Fragment, null, renderFileManager(), renderContent());
|
|
41
41
|
};
|
|
42
|
-
|
|
42
|
+
const FileManager = Object.assign(BaseFileManager, {
|
|
43
|
+
Renderer: FileManagerRenderer
|
|
44
|
+
});
|
|
45
|
+
export { FileManager };
|
|
43
46
|
|
|
44
47
|
//# sourceMappingURL=FileManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base/ui/FileManager.js","sources":["../../../src/base/ui/FileManager.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { Portal } from \"@webiny/admin-ui\";\nimport { createVoidComponent, makeDecoratable } from \"@webiny/react-composition\";\n\nexport interface FileManagerOnChange<T> {\n (value: T): void;\n}\n\n/**\n * Represents a file object managed by the File Manager.\n */\nexport interface FileManagerFileItem {\n // Required - every DAM must provide these\n id: string;\n src: string;\n name: string;\n type: string; // MIME type\n size: number; // bytes\n // Required for images (apps depend on these for Next.js Image, etc.)\n width?: number;\n height?: number;\n // DAM-specific metadata\n [key: string]: any;\n}\n\nexport type FileManagerRenderPropParams<TValue> = {\n showFileManager: (onChange?: FileManagerOnChange<TValue>) => void;\n};\n\ninterface SingleFileRenderProp {\n (params: FileManagerRenderPropParams<FileManagerFileItem>): React.ReactNode;\n}\n\ninterface MultiFileRenderProp {\n (params: FileManagerRenderPropParams<FileManagerFileItem[]>): React.ReactNode;\n}\n\nexport type MultipleProps =\n | {\n multiple?: never;\n multipleMaxCount?: never;\n multipleMaxSize?: never;\n onChange?: FileManagerOnChange<FileManagerFileItem>;\n render?: SingleFileRenderProp;\n }\n | {\n multiple: true;\n multipleMaxCount?: number;\n multipleMaxSize?: number | string;\n onChange?: FileManagerOnChange<FileManagerFileItem[]>;\n render?: MultiFileRenderProp;\n };\n\nexport type FileManagerProps = {\n accept?: string[];\n images?: boolean;\n maxSize?: number | string;\n onClose?: () => void;\n onUploadCompletion?: (files: FileManagerFileItem[]) => void;\n own?: boolean;\n scope?: string;\n tags?: string[];\n show?: boolean;\n overlay?: boolean;\n} & MultipleProps;\n\n// This jewel was taken from https://davidgomes.com/pick-omit-over-union-types-in-typescript/. Massive thanks, David!\ntype DistributiveOmit<T, K extends keyof T> = T extends unknown ? Omit<T, K> : never;\n\nexport type FileManagerRendererProps = DistributiveOmit<FileManagerProps, \"render\">;\n\
|
|
1
|
+
{"version":3,"file":"base/ui/FileManager.js","sources":["../../../src/base/ui/FileManager.tsx"],"sourcesContent":["import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { Portal } from \"@webiny/admin-ui\";\nimport { createVoidComponent, makeDecoratable } from \"@webiny/react-composition\";\n\nexport interface FileManagerOnChange<T> {\n (value: T): void;\n}\n\n/**\n * Represents a file object managed by the File Manager.\n */\nexport interface FileManagerFileItem {\n // Required - every DAM must provide these\n id: string;\n src: string;\n name: string;\n type: string; // MIME type\n size: number; // bytes\n // Required for images (apps depend on these for Next.js Image, etc.)\n width?: number;\n height?: number;\n // DAM-specific metadata\n [key: string]: any;\n}\n\nexport type FileManagerRenderPropParams<TValue> = {\n showFileManager: (onChange?: FileManagerOnChange<TValue>) => void;\n};\n\ninterface SingleFileRenderProp {\n (params: FileManagerRenderPropParams<FileManagerFileItem>): React.ReactNode;\n}\n\ninterface MultiFileRenderProp {\n (params: FileManagerRenderPropParams<FileManagerFileItem[]>): React.ReactNode;\n}\n\nexport type MultipleProps =\n | {\n multiple?: never;\n multipleMaxCount?: never;\n multipleMaxSize?: never;\n onChange?: FileManagerOnChange<FileManagerFileItem>;\n render?: SingleFileRenderProp;\n }\n | {\n multiple: true;\n multipleMaxCount?: number;\n multipleMaxSize?: number | string;\n onChange?: FileManagerOnChange<FileManagerFileItem[]>;\n render?: MultiFileRenderProp;\n };\n\nexport type FileManagerProps = {\n accept?: string[];\n images?: boolean;\n maxSize?: number | string;\n onClose?: () => void;\n onUploadCompletion?: (files: FileManagerFileItem[]) => void;\n own?: boolean;\n scope?: string;\n tags?: string[];\n show?: boolean;\n overlay?: boolean;\n} & MultipleProps;\n\n// This jewel was taken from https://davidgomes.com/pick-omit-over-union-types-in-typescript/. Massive thanks, David!\ntype DistributiveOmit<T, K extends keyof T> = T extends unknown ? Omit<T, K> : never;\n\nexport type FileManagerRendererProps = DistributiveOmit<FileManagerProps, \"render\">;\n\nconst FileManagerRenderer = makeDecoratable(\n \"FileManagerRenderer\",\n createVoidComponent<FileManagerRendererProps>()\n);\n\ntype ShowFileManagerProps =\n | FileManagerOnChange<FileManagerFileItem>\n | FileManagerOnChange<FileManagerFileItem[]>\n | undefined;\n\nconst BaseFileManager = ({ render, onChange, ...rest }: FileManagerProps) => {\n const [isFileManagerVisible, setFileManagerVisible] = useState(rest.show);\n const onChangeRef = useRef(onChange);\n\n useEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n\n const handleShowFileManager = useCallback((newOnChange: ShowFileManagerProps) => {\n if (typeof newOnChange === \"function\") {\n onChangeRef.current = newOnChange;\n }\n setFileManagerVisible(true);\n }, []);\n\n const handleCloseFileManager = useCallback(() => {\n setFileManagerVisible(false);\n }, []);\n\n const renderFileManager = () => {\n if (!isFileManagerVisible) {\n return null;\n }\n\n // Render as overlay\n if (rest.overlay) {\n return (\n <Portal>\n {/*@ts-expect-error*/}\n <FileManagerRenderer\n onClose={handleCloseFileManager}\n onChange={onChangeRef.current}\n {...rest}\n />\n </Portal>\n );\n }\n\n // Render inline\n return (\n // @ts-expect-error\n <FileManagerRenderer\n onClose={handleCloseFileManager}\n onChange={onChangeRef.current}\n {...rest}\n />\n );\n };\n\n const renderContent = () => {\n const renderProps = { showFileManager: handleShowFileManager };\n\n if (render) {\n return render(renderProps);\n }\n\n return null;\n };\n\n return (\n <>\n {renderFileManager()}\n {renderContent()}\n </>\n );\n};\n\nexport const FileManager = Object.assign(BaseFileManager, { Renderer: FileManagerRenderer });\n"],"names":["FileManagerRenderer","makeDecoratable","createVoidComponent","BaseFileManager","render","onChange","rest","isFileManagerVisible","setFileManagerVisible","useState","onChangeRef","useRef","useEffect","handleShowFileManager","useCallback","newOnChange","handleCloseFileManager","renderFileManager","Portal","renderContent","renderProps","FileManager","Object"],"mappings":";;;AAuEA,MAAMA,sBAAsBC,gBACxB,uBACAC;AAQJ,MAAMC,kBAAkB,CAAC,EAAEC,MAAM,EAAEC,QAAQ,EAAE,GAAGC,MAAwB;IACpE,MAAM,CAACC,sBAAsBC,sBAAsB,GAAGC,SAASH,KAAK,IAAI;IACxE,MAAMI,cAAcC,OAAON;IAE3BO,UAAU;QACNF,YAAY,OAAO,GAAGL;IAC1B,GAAG;QAACA;KAAS;IAEb,MAAMQ,wBAAwBC,YAAY,CAACC;QACvC,IAAI,AAAuB,cAAvB,OAAOA,aACPL,YAAY,OAAO,GAAGK;QAE1BP,sBAAsB;IAC1B,GAAG,EAAE;IAEL,MAAMQ,yBAAyBF,YAAY;QACvCN,sBAAsB;IAC1B,GAAG,EAAE;IAEL,MAAMS,oBAAoB;QACtB,IAAI,CAACV,sBACD,OAAO;QAIX,IAAID,KAAK,OAAO,EACZ,OAAO,WAAP,GACI,oBAACY,QAAMA,MAAAA,WAAAA,GAEH,oBAAClB,qBAAmBA;YAChB,SAASgB;YACT,UAAUN,YAAY,OAAO;YAC5B,GAAGJ,IAAI;;QAOxB,O,cAEI,oBAACN,qBAAmBA;YAChB,SAASgB;YACT,UAAUN,YAAY,OAAO;YAC5B,GAAGJ,IAAI;;IAGpB;IAEA,MAAMa,gBAAgB;QAClB,MAAMC,cAAc;YAAE,iBAAiBP;QAAsB;QAE7D,IAAIT,QACA,OAAOA,OAAOgB;QAGlB,OAAO;IACX;IAEA,OAAO,WAAP,GACI,0CACKH,qBACAE;AAGb;AAEO,MAAME,cAAcC,OAAO,MAAM,CAACnB,iBAAiB;IAAE,UAAUH;AAAoB"}
|
|
@@ -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,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"}
|
|
@@ -39,5 +39,6 @@ declare const MenuItem: ((props: SidebarMenuItemButtonProps) => React.JSX.Elemen
|
|
|
39
39
|
displayName: string;
|
|
40
40
|
}>) => (props: unknown) => React.JSX.Element;
|
|
41
41
|
};
|
|
42
|
+
Badge: ({ text }: import("@webiny/admin-ui/Sidebar/components/items/SidebarMenuItemBadge").SidebarMenuItemBadgeProps) => React.JSX.Element;
|
|
42
43
|
};
|
|
43
44
|
export { MenuItem };
|
|
@@ -5,7 +5,8 @@ const MenuLinkBase = (props)=>/*#__PURE__*/ react.createElement(Sidebar.Item, pr
|
|
|
5
5
|
const DecoratableMenuItem = makeDecoratable("MenuItem", MenuLinkBase);
|
|
6
6
|
const MenuItem = Object.assign(DecoratableMenuItem, {
|
|
7
7
|
Action: Sidebar.Item.Action,
|
|
8
|
-
Icon: Sidebar.Item.Icon
|
|
8
|
+
Icon: Sidebar.Item.Icon,
|
|
9
|
+
Badge: Sidebar.Item.Badge
|
|
9
10
|
});
|
|
10
11
|
export { MenuItem };
|
|
11
12
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config/AdminConfig/Menu/MenuItem.js","sources":["../../../../src/config/AdminConfig/Menu/MenuItem.tsx"],"sourcesContent":["import React from \"react\";\nimport { makeDecoratable } from \"@webiny/react-composition\";\nimport { Sidebar } from \"@webiny/admin-ui\";\nimport { type SidebarMenuItemButtonProps } from \"@webiny/admin-ui/Sidebar/components/items/SidebarMenuItem.js\";\n\nconst MenuLinkBase = (props: SidebarMenuItemButtonProps) => {\n return <Sidebar.Item {...props} />;\n};\n\nconst DecoratableMenuItem = makeDecoratable(\"MenuItem\", MenuLinkBase);\n\nconst MenuItem = Object.assign(DecoratableMenuItem, {\n Action: Sidebar.Item.Action,\n Icon: Sidebar.Item.Icon\n});\n\nexport { MenuItem };\n"],"names":["MenuLinkBase","props","Sidebar","DecoratableMenuItem","makeDecoratable","MenuItem","Object"],"mappings":";;;AAKA,MAAMA,eAAe,CAACC,QACX,WAAP,GAAO,oBAACC,QAAQ,IAAI,EAAKD;AAG7B,MAAME,sBAAsBC,gBAAgB,YAAYJ;AAExD,MAAMK,WAAWC,OAAO,MAAM,CAACH,qBAAqB;IAChD,QAAQD,QAAQ,IAAI,CAAC,MAAM;IAC3B,MAAMA,QAAQ,IAAI,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"config/AdminConfig/Menu/MenuItem.js","sources":["../../../../src/config/AdminConfig/Menu/MenuItem.tsx"],"sourcesContent":["import React from \"react\";\nimport { makeDecoratable } from \"@webiny/react-composition\";\nimport { Sidebar } from \"@webiny/admin-ui\";\nimport { type SidebarMenuItemButtonProps } from \"@webiny/admin-ui/Sidebar/components/items/SidebarMenuItem.js\";\n\nconst MenuLinkBase = (props: SidebarMenuItemButtonProps) => {\n return <Sidebar.Item {...props} />;\n};\n\nconst DecoratableMenuItem = makeDecoratable(\"MenuItem\", MenuLinkBase);\n\nconst MenuItem = Object.assign(DecoratableMenuItem, {\n Action: Sidebar.Item.Action,\n Icon: Sidebar.Item.Icon,\n Badge: Sidebar.Item.Badge\n});\n\nexport { MenuItem };\n"],"names":["MenuLinkBase","props","Sidebar","DecoratableMenuItem","makeDecoratable","MenuItem","Object"],"mappings":";;;AAKA,MAAMA,eAAe,CAACC,QACX,WAAP,GAAO,oBAACC,QAAQ,IAAI,EAAKD;AAG7B,MAAME,sBAAsBC,gBAAgB,YAAYJ;AAExD,MAAMK,WAAWC,OAAO,MAAM,CAACH,qBAAqB;IAChD,QAAQD,QAAQ,IAAI,CAAC,MAAM;IAC3B,MAAMA,QAAQ,IAAI,CAAC,IAAI;IACvB,OAAOA,QAAQ,IAAI,CAAC,KAAK;AAC7B"}
|
|
@@ -39,5 +39,6 @@ declare const MenuLink: ((props: SidebarMenuItemLinkProps) => React.JSX.Element
|
|
|
39
39
|
displayName: string;
|
|
40
40
|
}>) => (props: unknown) => React.JSX.Element;
|
|
41
41
|
};
|
|
42
|
+
Badge: ({ text }: import("@webiny/admin-ui/Sidebar/components/items/SidebarMenuItemBadge").SidebarMenuItemBadgeProps) => React.JSX.Element;
|
|
42
43
|
};
|
|
43
44
|
export { MenuLink };
|
|
@@ -14,7 +14,8 @@ const MenuLinkBase = (props)=>{
|
|
|
14
14
|
const DecoratableMenuLink = makeDecoratable("MenuLink", MenuLinkBase);
|
|
15
15
|
const MenuLink = Object.assign(DecoratableMenuLink, {
|
|
16
16
|
Action: Sidebar.Link.Action,
|
|
17
|
-
Icon: Sidebar.Link.Icon
|
|
17
|
+
Icon: Sidebar.Link.Icon,
|
|
18
|
+
Badge: Sidebar.Link.Badge
|
|
18
19
|
});
|
|
19
20
|
export { MenuLink };
|
|
20
21
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config/AdminConfig/Menu/MenuLink.js","sources":["../../../../src/config/AdminConfig/Menu/MenuLink.tsx"],"sourcesContent":["import React from \"react\";\nimport { makeDecoratable } from \"@webiny/react-composition\";\nimport { Sidebar } from \"@webiny/admin-ui\";\nimport { type SidebarMenuItemLinkProps } from \"@webiny/admin-ui/Sidebar/components/items/SidebarMenuLink.js\";\nimport { useRoute } from \"@webiny/app\";\n\nconst MenuLinkBase = (props: SidebarMenuItemLinkProps) => {\n const { route } = useRoute();\n\n if (!route) {\n return null;\n }\n\n const active = route.pathname === props.to.split(\"?\")[0];\n\n return <Sidebar.Link {...props} active={active} />;\n};\n\nconst DecoratableMenuLink = makeDecoratable(\"MenuLink\", MenuLinkBase);\n\nconst MenuLink = Object.assign(DecoratableMenuLink, {\n Action: Sidebar.Link.Action,\n Icon: Sidebar.Link.Icon\n});\n\nexport { MenuLink };\n"],"names":["MenuLinkBase","props","route","useRoute","active","Sidebar","DecoratableMenuLink","makeDecoratable","MenuLink","Object"],"mappings":";;;;AAMA,MAAMA,eAAe,CAACC;IAClB,MAAM,EAAEC,KAAK,EAAE,GAAGC;IAElB,IAAI,CAACD,OACD,OAAO;IAGX,MAAME,SAASF,MAAM,QAAQ,KAAKD,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;IAExD,OAAO,WAAP,GAAO,oBAACI,QAAQ,IAAI;QAAE,GAAGJ,KAAK;QAAE,QAAQG;;AAC5C;AAEA,MAAME,sBAAsBC,gBAAgB,YAAYP;AAExD,MAAMQ,WAAWC,OAAO,MAAM,CAACH,qBAAqB;IAChD,QAAQD,QAAQ,IAAI,CAAC,MAAM;IAC3B,MAAMA,QAAQ,IAAI,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"config/AdminConfig/Menu/MenuLink.js","sources":["../../../../src/config/AdminConfig/Menu/MenuLink.tsx"],"sourcesContent":["import React from \"react\";\nimport { makeDecoratable } from \"@webiny/react-composition\";\nimport { Sidebar } from \"@webiny/admin-ui\";\nimport { type SidebarMenuItemLinkProps } from \"@webiny/admin-ui/Sidebar/components/items/SidebarMenuLink.js\";\nimport { useRoute } from \"@webiny/app\";\n\nconst MenuLinkBase = (props: SidebarMenuItemLinkProps) => {\n const { route } = useRoute();\n\n if (!route) {\n return null;\n }\n\n const active = route.pathname === props.to.split(\"?\")[0];\n\n return <Sidebar.Link {...props} active={active} />;\n};\n\nconst DecoratableMenuLink = makeDecoratable(\"MenuLink\", MenuLinkBase);\n\nconst MenuLink = Object.assign(DecoratableMenuLink, {\n Action: Sidebar.Link.Action,\n Icon: Sidebar.Link.Icon,\n Badge: Sidebar.Link.Badge\n});\n\nexport { MenuLink };\n"],"names":["MenuLinkBase","props","route","useRoute","active","Sidebar","DecoratableMenuLink","makeDecoratable","MenuLink","Object"],"mappings":";;;;AAMA,MAAMA,eAAe,CAACC;IAClB,MAAM,EAAEC,KAAK,EAAE,GAAGC;IAElB,IAAI,CAACD,OACD,OAAO;IAGX,MAAME,SAASF,MAAM,QAAQ,KAAKD,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;IAExD,OAAO,WAAP,GAAO,oBAACI,QAAQ,IAAI;QAAE,GAAGJ,KAAK;QAAE,QAAQG;;AAC5C;AAEA,MAAME,sBAAsBC,gBAAgB,YAAYP;AAExD,MAAMQ,WAAWC,OAAO,MAAM,CAACH,qBAAqB;IAChD,QAAQD,QAAQ,IAAI,CAAC,MAAM;IAC3B,MAAMA,QAAQ,IAAI,CAAC,IAAI;IACvB,OAAOA,QAAQ,IAAI,CAAC,KAAK;AAC7B"}
|
|
@@ -70,6 +70,7 @@ export declare const Menu: (({ name, parent, hideIfEmpty, tags, element, remove,
|
|
|
70
70
|
displayName: string;
|
|
71
71
|
}>) => (props: unknown) => React.JSX.Element;
|
|
72
72
|
};
|
|
73
|
+
Badge: ({ text }: import("@webiny/admin-ui/Sidebar/components/items/SidebarMenuItemBadge.js").SidebarMenuItemBadgeProps) => React.JSX.Element;
|
|
73
74
|
};
|
|
74
75
|
Link: ((props: import("@webiny/admin-ui/Sidebar/components/items/SidebarMenuItem.js").SidebarMenuItemLinkProps) => React.JSX.Element | null) & {
|
|
75
76
|
original: (props: import("@webiny/admin-ui/Sidebar/components/items/SidebarMenuItem.js").SidebarMenuItemLinkProps) => React.JSX.Element | null;
|
|
@@ -110,6 +111,7 @@ export declare const Menu: (({ name, parent, hideIfEmpty, tags, element, remove,
|
|
|
110
111
|
displayName: string;
|
|
111
112
|
}>) => (props: unknown) => React.JSX.Element;
|
|
112
113
|
};
|
|
114
|
+
Badge: ({ text }: import("@webiny/admin-ui/Sidebar/components/items/SidebarMenuItemBadge.js").SidebarMenuItemBadgeProps) => React.JSX.Element;
|
|
113
115
|
};
|
|
114
116
|
Group: ((props: import("@webiny/admin-ui/Sidebar/components/items/SidebarMenuItem.js").SidebarMenuItemGroupProps) => React.JSX.Element) & {
|
|
115
117
|
original: (props: import("@webiny/admin-ui/Sidebar/components/items/SidebarMenuItem.js").SidebarMenuItemGroupProps) => React.JSX.Element;
|
package/config/AdminConfig.d.ts
CHANGED
|
@@ -102,6 +102,7 @@ export declare const AdminConfig: (({ children }: PrivateProps) => React.JSX.Ele
|
|
|
102
102
|
displayName: string;
|
|
103
103
|
}>) => (props: unknown) => React.JSX.Element;
|
|
104
104
|
};
|
|
105
|
+
Badge: ({ text }: import("@webiny/admin-ui/Sidebar/components/items/SidebarMenuItemBadge.js").SidebarMenuItemBadgeProps) => React.JSX.Element;
|
|
105
106
|
};
|
|
106
107
|
Link: ((props: import("@webiny/admin-ui/Sidebar/components/items/SidebarMenuItem.js").SidebarMenuItemLinkProps) => React.JSX.Element | null) & {
|
|
107
108
|
original: (props: import("@webiny/admin-ui/Sidebar/components/items/SidebarMenuItem.js").SidebarMenuItemLinkProps) => React.JSX.Element | null;
|
|
@@ -142,6 +143,7 @@ export declare const AdminConfig: (({ children }: PrivateProps) => React.JSX.Ele
|
|
|
142
143
|
displayName: string;
|
|
143
144
|
}>) => (props: unknown) => React.JSX.Element;
|
|
144
145
|
};
|
|
146
|
+
Badge: ({ text }: import("@webiny/admin-ui/Sidebar/components/items/SidebarMenuItemBadge.js").SidebarMenuItemBadgeProps) => React.JSX.Element;
|
|
145
147
|
};
|
|
146
148
|
Group: ((props: import("@webiny/admin-ui/Sidebar/components/items/SidebarMenuItem.js").SidebarMenuItemGroupProps) => React.JSX.Element) & {
|
|
147
149
|
original: (props: import("@webiny/admin-ui/Sidebar/components/items/SidebarMenuItem.js").SidebarMenuItemGroupProps) => React.JSX.Element;
|