@luck-design-biz/luckda 1.0.1 → 1.0.2-2
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/LICENSE +21 -21
- package/README.md +40 -40
- package/es/components/LDActions/index.less +70 -68
- package/es/components/LdAutoForm/index.js +2 -1
- package/es/components/LdCard/index.js +154 -67
- package/es/components/LdFormList/index.js +20 -6
- package/es/components/LdGrid/index.js +4 -4
- package/es/components/LdGridForm/index.js +40 -24
- package/es/components/LdGridForm/index.less +7 -7
- package/es/components/LdTree/index.js +14 -8
- package/es/components/LdTree/index.less +42 -40
- package/es/helper/action.js +6 -6
- package/es/helper/form.js +14 -14
- package/es/helper/index.less +7 -7
- package/es/helper/ldBuilder.js +1 -1
- package/es/locales/zh-CN.js +13 -4
- package/es/lowcode/constants/api-url.js +87 -87
- package/es/lowcode/constants/index.js +1 -1
- package/es/lowcode/engine/meta/cardlist.props.default.json +27 -6
- package/es/lowcode/engine/meta/cardlist.props.json +254 -72
- package/es/lowcode/engine/meta/components-list.json +12 -108
- package/es/lowcode/engine/meta/dialog.props.default.json +4 -2
- package/es/lowcode/engine/meta/dialog.props.json +74 -18
- package/es/lowcode/engine/meta/drawer.props.default.json +15 -4
- package/es/lowcode/engine/meta/drawer.props.json +144 -24
- package/es/lowcode/engine/meta/form.props.default.json +14 -3
- package/es/lowcode/engine/meta/form.props.json +49 -9
- package/es/lowcode/engine/meta/grouptree.props.default.json +16 -0
- package/es/lowcode/engine/meta/grouptree.props.json +83 -0
- package/es/lowcode/engine/meta/iframe.props.default.json +1 -1
- package/es/lowcode/engine/meta/iframe.props.json +3 -4
- package/es/lowcode/engine/meta/image.props.default.json +3 -2
- package/es/lowcode/engine/meta/image.props.json +51 -16
- package/es/lowcode/engine/meta/imex.props.json +1 -1
- package/es/lowcode/engine/meta/js-editor/auto-complete.json +49 -31
- package/es/lowcode/engine/meta/link.props.default.json +1 -1
- package/es/lowcode/engine/meta/link.props.json +9 -9
- package/es/lowcode/engine/meta/table.props.json +1 -1
- package/es/lowcode/engine/meta/tabs.props.default.json +1 -1
- package/es/lowcode/engine/meta/tabs.props.json +1 -1
- package/es/lowcode/engine/meta/tree.props.json +2 -2
- package/es/lowcode/engine/provider/ContextProvider/index.js +50 -46
- package/es/lowcode/engine/provider/ContextProvider/usePageDataStore.js +82 -2
- package/es/lowcode/engine/tools/dataProcess.js +76 -76
- package/es/lowcode/engine/tools/helper.js +21 -0
- package/es/lowcode/engine/tools/useCanvasRender.js +13 -1
- package/es/lowcode/painter/Components.js +8 -3
- package/es/lowcode/painter/Design.js +1 -0
- package/es/lowcode/painter/DesignOperator.js +25 -15
- package/es/lowcode/painter/DesignToolbar.js +78 -47
- package/es/lowcode/painter/Ribbon.js +14 -1
- package/es/lowcode/painter/components/ActionBindModal.js +3 -7
- package/es/lowcode/painter/components/AdvancePanel.js +11 -4
- package/es/lowcode/painter/components/Collapse.js +26 -26
- package/es/lowcode/painter/components/ColorInput.js +24 -24
- package/es/lowcode/painter/components/DragDrop/DragDropContext.js +144 -37
- package/es/lowcode/painter/components/DragDrop/DragDropWrapper.js +29 -6
- package/es/lowcode/painter/components/DragDrop/Overlay.js +5 -2
- package/es/lowcode/painter/components/DragDrop/TreeDragDropWrapper.js +7 -4
- package/es/lowcode/painter/components/ListEditor.js +24 -24
- package/es/lowcode/painter/components/NumberInput.js +29 -29
- package/es/lowcode/painter/components/PanelItem.js +24 -24
- package/es/lowcode/painter/components/PopConfirm.js +8 -8
- package/es/lowcode/painter/components/PopForm.js +27 -27
- package/es/lowcode/painter/components/RuleInput.js +30 -30
- package/es/lowcode/painter/components/SortBox.js +22 -22
- package/es/lowcode/painter/components/code-editor/BaseEditor.js +38 -33
- package/es/lowcode/painter/components/code-editor/CssEditor.js +25 -25
- package/es/lowcode/painter/components/code-editor/FullScreenEditor.js +23 -23
- package/es/lowcode/painter/components/code-editor/JSEditor.js +20 -20
- package/es/lowcode/painter/components/code-editor/JsonEditor.js +25 -25
- package/es/lowcode/painter/components/field-setting/FieldAttrs.js +2 -2
- package/es/lowcode/painter/components/field-setting/SettingUI.js +30 -2
- package/es/lowcode/painter/components/field-setting/index.js +26 -12
- package/es/lowcode/painter/expect.js +27 -0
- package/es/lowcode/painter/panel-section/ActionsEditor/ActionEditor.js +20 -2
- package/es/lowcode/painter/panel-section/ActionsEditor/index.js +18 -3
- package/es/lowcode/painter/panel-section/ComplexPop.js +1 -1
- package/es/lowcode/painter/panel-section/DataSetSelector.js +14 -3
- package/es/lowcode/painter/panel-section/FieldState.js +11 -2
- package/es/lowcode/painter/panel-section/FieldsSetting.js +2 -2
- package/es/lowcode/painter/panel-section/GroupClassSelector.js +55 -0
- package/es/lowcode/painter/panel-section/Icon.js +23 -23
- package/es/lowcode/painter/panel-section/IconSelector.js +16 -16
- package/es/lowcode/painter/panel-section/LayoutRatio.js +21 -21
- package/es/lowcode/painter/panel-section/PageVars.js +1 -1
- package/es/lowcode/painter/panel-section/StylePanel/BackGround.js +2 -2
- package/es/lowcode/painter/panel-section/StylePanel/Border.js +2 -2
- package/es/lowcode/painter/panel-section/StylePanel/BorderRadius.js +2 -2
- package/es/lowcode/painter/panel-section/StylePanel/BorderRadiusSelector.js +2 -2
- package/es/lowcode/painter/panel-section/StylePanel/BorderSelector.js +2 -2
- package/es/lowcode/painter/panel-section/StylePanel/Display.js +2 -2
- package/es/lowcode/painter/panel-section/StylePanel/Font.js +2 -2
- package/es/lowcode/painter/panel-section/StylePanel/FontEditor.js +2 -2
- package/es/lowcode/painter/panel-section/StylePanel/GapSelector.js +2 -2
- package/es/lowcode/painter/panel-section/StylePanel/HighLightPanel.js +2 -2
- package/es/lowcode/painter/panel-section/StylePanel/HighLigthtSpan.js +2 -2
- package/es/lowcode/painter/panel-section/StylePanel/HightLightSvg.js +2 -2
- package/es/lowcode/painter/panel-section/StylePanel/MainPanel.js +10 -2
- package/es/lowcode/painter/panel-section/StylePanel/Margin.js +2 -2
- package/es/lowcode/painter/panel-section/StylePanel/Opacity.js +2 -2
- package/es/lowcode/painter/panel-section/StylePanel/Padding.js +2 -2
- package/es/lowcode/painter/panel-section/StylePanel/Pointer.js +2 -2
- package/es/lowcode/painter/panel-section/StylePanel/Shadow.js +2 -2
- package/es/lowcode/painter/panel-section/StylePanel/Size.js +2 -2
- package/es/lowcode/painter/panel-section/StylePanel/StyleContext.js +2 -2
- package/es/lowcode/painter/panel-section/StylePanel/StyleRow.js +2 -2
- package/es/lowcode/painter/panel-section/StylePanel/WidthHeight.js +2 -2
- package/es/lowcode/painter/panel-section/StylePanel/index.js +15 -15
- package/es/lowcode/painter/panel-section/TabItems.js +1 -1
- package/es/lowcode/painter/panel-section/TableTopFilter.js +3 -3
- package/es/lowcode/painter/panel-section/TableZebra.js +5 -1
- package/es/lowcode/painter/panel-section/TextContent.js +10 -2
- package/es/lowcode/painter/style/action-bind-modal.less +104 -102
- package/es/lowcode/painter/style/actions-editor.less +15 -15
- package/es/lowcode/painter/style/border-editor.less +36 -36
- package/es/lowcode/painter/style/border-radius-selector.less +42 -42
- package/es/lowcode/painter/style/border-selector.less +39 -39
- package/es/lowcode/painter/style/button-type.less +5 -5
- package/es/lowcode/painter/style/collapse.less +28 -28
- package/es/lowcode/painter/style/color-input.less +19 -19
- package/es/lowcode/painter/style/components.less +91 -91
- package/es/lowcode/painter/style/design.less +179 -160
- package/es/lowcode/painter/style/display.less +17 -17
- package/es/lowcode/painter/style/dragdrop.less +56 -10
- package/es/lowcode/painter/style/fields-setting.less +25 -25
- package/es/lowcode/painter/style/font-editor.less +9 -9
- package/es/lowcode/painter/style/fullscreen-editor.less +17 -17
- package/es/lowcode/painter/style/icon-selector.less +22 -22
- package/es/lowcode/painter/style/icon.less +10 -10
- package/es/lowcode/painter/style/impexp.less +7 -7
- package/es/lowcode/painter/style/index.less +6 -6
- package/es/lowcode/painter/style/layout-ratio.less +51 -51
- package/es/lowcode/painter/style/list-editor.less +97 -95
- package/es/lowcode/painter/style/number-input.less +19 -17
- package/es/lowcode/painter/style/outline.less +30 -28
- package/es/lowcode/painter/style/page-layout-display.less +27 -27
- package/es/lowcode/painter/style/page-vars.less +25 -25
- package/es/lowcode/painter/style/panel-attrs.less +47 -43
- package/es/lowcode/painter/style/panel-item.less +54 -54
- package/es/lowcode/painter/style/panel.less +100 -98
- package/es/lowcode/painter/style/pop-confirm.less +17 -17
- package/es/lowcode/painter/style/pop-form.less +19 -19
- package/es/lowcode/painter/style/radio.less +24 -24
- package/es/lowcode/painter/style/ribbon.less +7 -5
- package/es/lowcode/painter/style/rule-input.less +12 -12
- package/es/lowcode/painter/style/split-display.less +18 -18
- package/es/lowcode/painter/style/style-panel.less +37 -37
- package/es/lowcode/painter/style/tabitems.less +90 -90
- package/es/lowcode/painter/svg/code.svg +3 -0
- package/es/lowcode/painter/svg/expect.svg +9 -0
- package/es/lowcode/view/lc-components/Box/index.js +4 -4
- package/es/lowcode/view/lc-components/Box/index.less +14 -14
- package/es/lowcode/view/lc-components/Box/meta.json +40 -40
- package/es/lowcode/view/lc-components/Button/index.js +33 -33
- package/es/lowcode/view/lc-components/Button/meta.json +127 -127
- package/es/lowcode/view/lc-components/Button/style.less +2 -2
- package/es/lowcode/view/lc-components/CardList/index.js +481 -12
- package/es/lowcode/view/lc-components/CardList/meta.json +335 -153
- package/es/lowcode/view/lc-components/Dialog/FunctionDesign.js +14 -6
- package/es/lowcode/view/lc-components/Dialog/index.js +28 -18
- package/es/lowcode/view/lc-components/Dialog/index.less +12 -8
- package/es/lowcode/view/lc-components/Dialog/meta.json +204 -150
- package/es/lowcode/view/lc-components/Drawer/FunctionDesign.js +51 -8
- package/es/lowcode/view/lc-components/Drawer/index.js +149 -34
- package/es/lowcode/view/lc-components/Drawer/index.less +13 -10
- package/es/lowcode/view/lc-components/Drawer/meta.json +242 -131
- package/es/lowcode/view/lc-components/FieldColor/meta.json +157 -157
- package/es/lowcode/view/lc-components/FieldComplex/meta.json +140 -140
- package/es/lowcode/view/lc-components/FieldDate/meta.json +141 -141
- package/es/lowcode/view/lc-components/FieldDict/meta.json +138 -138
- package/es/lowcode/view/lc-components/FieldEditor/meta.json +138 -138
- package/es/lowcode/view/lc-components/FieldGroup/meta.json +167 -167
- package/es/lowcode/view/lc-components/FieldNumber/meta.json +143 -143
- package/es/lowcode/view/lc-components/FieldRadio/meta.json +115 -115
- package/es/lowcode/view/lc-components/FieldRegion/meta.json +121 -121
- package/es/lowcode/view/lc-components/FieldSelect/meta.json +152 -152
- package/es/lowcode/view/lc-components/FieldString/meta.json +152 -152
- package/es/lowcode/view/lc-components/FieldSwitch/meta.json +125 -125
- package/es/lowcode/view/lc-components/FieldTextarea/meta.json +143 -143
- package/es/lowcode/view/lc-components/FieldUpload/meta.json +165 -165
- package/es/lowcode/view/lc-components/FieldUser/meta.json +176 -176
- package/es/lowcode/view/lc-components/FieldYear/meta.json +129 -129
- package/es/lowcode/view/lc-components/Form/FunctionDesign.js +2 -1
- package/es/lowcode/view/lc-components/Form/index.js +65 -48
- package/es/lowcode/view/lc-components/Form/meta.json +645 -609
- package/es/lowcode/view/lc-components/GroupTree/FunctionDesign.js +10 -0
- package/es/lowcode/view/lc-components/GroupTree/FunctionLive.js +10 -0
- package/es/lowcode/view/lc-components/GroupTree/FunctionPreview.js +10 -0
- package/es/lowcode/view/lc-components/GroupTree/index.js +212 -0
- package/es/lowcode/view/lc-components/GroupTree/index.less +12 -0
- package/es/lowcode/view/lc-components/GroupTree/meta.json +83 -0
- package/es/lowcode/view/lc-components/Iframe/index.js +57 -7
- package/es/lowcode/view/lc-components/Iframe/meta.json +31 -32
- package/es/lowcode/view/lc-components/ImEx/index.js +25 -25
- package/es/lowcode/view/lc-components/ImEx/index.less +7 -7
- package/es/lowcode/view/lc-components/ImEx/meta.json +134 -134
- package/es/lowcode/view/lc-components/Image/index.js +82 -6
- package/es/lowcode/view/lc-components/Image/index.less +27 -0
- package/es/lowcode/view/lc-components/Image/meta.json +149 -114
- package/es/lowcode/view/lc-components/JSX/RuntimeComp.js +4 -4
- package/es/lowcode/view/lc-components/JSX/meta.json +28 -28
- package/es/lowcode/view/lc-components/Layout/index.js +16 -16
- package/es/lowcode/view/lc-components/Layout/index.less +5 -5
- package/es/lowcode/view/lc-components/Layout/meta.json +107 -107
- package/es/lowcode/view/lc-components/Link/index.js +53 -5
- package/es/lowcode/view/lc-components/Link/index.less +15 -0
- package/es/lowcode/view/lc-components/Link/meta.json +112 -112
- package/es/lowcode/view/lc-components/Page/meta.json +61 -61
- package/es/lowcode/view/lc-components/PageContent/meta.json +9 -9
- package/es/lowcode/view/lc-components/PageFooter/meta.json +9 -9
- package/es/lowcode/view/lc-components/PageHeader/meta.json +9 -9
- package/es/lowcode/view/lc-components/PageLayout/meta.json +59 -59
- package/es/lowcode/view/lc-components/Section/index.less +7 -7
- package/es/lowcode/view/lc-components/Section/meta.json +108 -108
- package/es/lowcode/view/lc-components/Split/meta.json +53 -53
- package/es/lowcode/view/lc-components/Table/index.js +152 -153
- package/es/lowcode/view/lc-components/Table/meta.json +450 -450
- package/es/lowcode/view/lc-components/Tabs/FunctionDesign.js +40 -4
- package/es/lowcode/view/lc-components/Tabs/index.js +24 -24
- package/es/lowcode/view/lc-components/Tabs/meta.json +113 -113
- package/es/lowcode/view/lc-components/Text/meta.json +56 -56
- package/es/lowcode/view/lc-components/Tree/index.js +117 -115
- package/es/lowcode/view/lc-components/Tree/index.less +4 -4
- package/es/lowcode/view/lc-components/Tree/meta.json +357 -357
- package/es/lowcode/view/style/canvas.less +5 -5
- package/es/lowcode/view/style/loading.less +98 -98
- package/es/lowcode/view/style/page.less +7 -7
- package/es/upload/FilesWall/index.js +13 -13
- package/es/upload/FilesWall/index.less +74 -74
- package/es/upload/Form/index.less +7 -7
- package/es/upload/FormItem/index.js +15 -15
- package/es/utils/form.js +21 -21
- package/es/utils/grid.js +3 -3
- package/lib/components/LDActions/index.less +70 -68
- package/lib/components/LdAutoForm/index.js +2 -1
- package/lib/components/LdCard/index.js +153 -66
- package/lib/components/LdFormList/index.js +19 -5
- package/lib/components/LdGrid/index.js +4 -4
- package/lib/components/LdGridForm/index.js +40 -24
- package/lib/components/LdGridForm/index.less +7 -7
- package/lib/components/LdTree/index.js +14 -8
- package/lib/components/LdTree/index.less +42 -40
- package/lib/helper/action.js +6 -6
- package/lib/helper/form.js +14 -14
- package/lib/helper/index.less +7 -7
- package/lib/helper/ldBuilder.js +2 -2
- package/lib/locales/zh-CN.js +13 -4
- package/lib/lowcode/constants/api-url.js +87 -87
- package/lib/lowcode/constants/index.js +1 -1
- package/lib/lowcode/engine/meta/cardlist.props.default.json +27 -6
- package/lib/lowcode/engine/meta/cardlist.props.json +254 -72
- package/lib/lowcode/engine/meta/components-list.json +12 -108
- package/lib/lowcode/engine/meta/dialog.props.default.json +4 -2
- package/lib/lowcode/engine/meta/dialog.props.json +74 -18
- package/lib/lowcode/engine/meta/drawer.props.default.json +15 -4
- package/lib/lowcode/engine/meta/drawer.props.json +144 -24
- package/lib/lowcode/engine/meta/form.props.default.json +14 -3
- package/lib/lowcode/engine/meta/form.props.json +49 -9
- package/lib/lowcode/engine/meta/grouptree.props.default.json +16 -0
- package/lib/lowcode/engine/meta/grouptree.props.json +83 -0
- package/lib/lowcode/engine/meta/iframe.props.default.json +1 -1
- package/lib/lowcode/engine/meta/iframe.props.json +3 -4
- package/lib/lowcode/engine/meta/image.props.default.json +3 -2
- package/lib/lowcode/engine/meta/image.props.json +51 -16
- package/lib/lowcode/engine/meta/imex.props.json +1 -1
- package/lib/lowcode/engine/meta/js-editor/auto-complete.json +49 -31
- package/lib/lowcode/engine/meta/link.props.default.json +1 -1
- package/lib/lowcode/engine/meta/link.props.json +9 -9
- package/lib/lowcode/engine/meta/table.props.json +1 -1
- package/lib/lowcode/engine/meta/tabs.props.default.json +1 -1
- package/lib/lowcode/engine/meta/tabs.props.json +1 -1
- package/lib/lowcode/engine/meta/tree.props.json +2 -2
- package/lib/lowcode/engine/provider/ContextProvider/index.js +50 -46
- package/lib/lowcode/engine/provider/ContextProvider/usePageDataStore.js +83 -3
- package/lib/lowcode/engine/tools/dataProcess.js +76 -76
- package/lib/lowcode/engine/tools/helper.js +22 -0
- package/lib/lowcode/engine/tools/useCanvasRender.js +13 -1
- package/lib/lowcode/painter/Components.js +8 -3
- package/lib/lowcode/painter/Design.js +1 -0
- package/lib/lowcode/painter/DesignOperator.js +25 -15
- package/lib/lowcode/painter/DesignToolbar.js +78 -47
- package/lib/lowcode/painter/Ribbon.js +14 -1
- package/lib/lowcode/painter/components/ActionBindModal.js +3 -7
- package/lib/lowcode/painter/components/AdvancePanel.js +10 -3
- package/lib/lowcode/painter/components/Collapse.js +26 -26
- package/lib/lowcode/painter/components/ColorInput.js +24 -24
- package/lib/lowcode/painter/components/DragDrop/DragDropContext.js +142 -35
- package/lib/lowcode/painter/components/DragDrop/DragDropWrapper.js +27 -4
- package/lib/lowcode/painter/components/DragDrop/Overlay.js +5 -2
- package/lib/lowcode/painter/components/DragDrop/TreeDragDropWrapper.js +7 -4
- package/lib/lowcode/painter/components/ListEditor.js +24 -24
- package/lib/lowcode/painter/components/NumberInput.js +29 -29
- package/lib/lowcode/painter/components/PanelItem.js +24 -24
- package/lib/lowcode/painter/components/PopConfirm.js +8 -8
- package/lib/lowcode/painter/components/PopForm.js +27 -27
- package/lib/lowcode/painter/components/RuleInput.js +30 -30
- package/lib/lowcode/painter/components/SortBox.js +22 -22
- package/lib/lowcode/painter/components/code-editor/BaseEditor.js +38 -33
- package/lib/lowcode/painter/components/code-editor/CssEditor.js +25 -25
- package/lib/lowcode/painter/components/code-editor/FullScreenEditor.js +23 -23
- package/lib/lowcode/painter/components/code-editor/JSEditor.js +20 -20
- package/lib/lowcode/painter/components/code-editor/JsonEditor.js +25 -25
- package/lib/lowcode/painter/components/field-setting/FieldAttrs.js +2 -2
- package/lib/lowcode/painter/components/field-setting/SettingUI.js +29 -1
- package/lib/lowcode/painter/components/field-setting/index.js +26 -12
- package/lib/lowcode/painter/expect.js +34 -0
- package/lib/lowcode/painter/panel-section/ActionsEditor/ActionEditor.js +19 -1
- package/lib/lowcode/painter/panel-section/ActionsEditor/index.js +18 -3
- package/lib/lowcode/painter/panel-section/ComplexPop.js +1 -1
- package/lib/lowcode/painter/panel-section/DataSetSelector.js +14 -3
- package/lib/lowcode/painter/panel-section/FieldState.js +11 -2
- package/lib/lowcode/painter/panel-section/FieldsSetting.js +2 -2
- package/lib/lowcode/painter/panel-section/GroupClassSelector.js +63 -0
- package/lib/lowcode/painter/panel-section/Icon.js +23 -23
- package/lib/lowcode/painter/panel-section/IconSelector.js +16 -16
- package/lib/lowcode/painter/panel-section/LayoutRatio.js +21 -21
- package/lib/lowcode/painter/panel-section/PageVars.js +1 -1
- package/lib/lowcode/painter/panel-section/StylePanel/BackGround.js +2 -2
- package/lib/lowcode/painter/panel-section/StylePanel/Border.js +2 -2
- package/lib/lowcode/painter/panel-section/StylePanel/BorderRadius.js +2 -2
- package/lib/lowcode/painter/panel-section/StylePanel/BorderRadiusSelector.js +2 -2
- package/lib/lowcode/painter/panel-section/StylePanel/BorderSelector.js +2 -2
- package/lib/lowcode/painter/panel-section/StylePanel/Display.js +2 -2
- package/lib/lowcode/painter/panel-section/StylePanel/Font.js +2 -2
- package/lib/lowcode/painter/panel-section/StylePanel/FontEditor.js +2 -2
- package/lib/lowcode/painter/panel-section/StylePanel/GapSelector.js +2 -2
- package/lib/lowcode/painter/panel-section/StylePanel/HighLightPanel.js +2 -2
- package/lib/lowcode/painter/panel-section/StylePanel/HighLigthtSpan.js +2 -2
- package/lib/lowcode/painter/panel-section/StylePanel/HightLightSvg.js +2 -2
- package/lib/lowcode/painter/panel-section/StylePanel/MainPanel.js +10 -2
- package/lib/lowcode/painter/panel-section/StylePanel/Margin.js +2 -2
- package/lib/lowcode/painter/panel-section/StylePanel/Opacity.js +2 -2
- package/lib/lowcode/painter/panel-section/StylePanel/Padding.js +2 -2
- package/lib/lowcode/painter/panel-section/StylePanel/Pointer.js +2 -2
- package/lib/lowcode/painter/panel-section/StylePanel/Shadow.js +2 -2
- package/lib/lowcode/painter/panel-section/StylePanel/Size.js +2 -2
- package/lib/lowcode/painter/panel-section/StylePanel/StyleContext.js +2 -2
- package/lib/lowcode/painter/panel-section/StylePanel/StyleRow.js +2 -2
- package/lib/lowcode/painter/panel-section/StylePanel/WidthHeight.js +2 -2
- package/lib/lowcode/painter/panel-section/StylePanel/index.js +15 -15
- package/lib/lowcode/painter/panel-section/TabItems.js +1 -1
- package/lib/lowcode/painter/panel-section/TableTopFilter.js +3 -3
- package/lib/lowcode/painter/panel-section/TableZebra.js +5 -1
- package/lib/lowcode/painter/panel-section/TextContent.js +9 -1
- package/lib/lowcode/painter/style/action-bind-modal.less +104 -102
- package/lib/lowcode/painter/style/actions-editor.less +15 -15
- package/lib/lowcode/painter/style/border-editor.less +36 -36
- package/lib/lowcode/painter/style/border-radius-selector.less +42 -42
- package/lib/lowcode/painter/style/border-selector.less +39 -39
- package/lib/lowcode/painter/style/button-type.less +5 -5
- package/lib/lowcode/painter/style/collapse.less +28 -28
- package/lib/lowcode/painter/style/color-input.less +19 -19
- package/lib/lowcode/painter/style/components.less +91 -91
- package/lib/lowcode/painter/style/design.less +179 -160
- package/lib/lowcode/painter/style/display.less +17 -17
- package/lib/lowcode/painter/style/dragdrop.less +56 -10
- package/lib/lowcode/painter/style/fields-setting.less +25 -25
- package/lib/lowcode/painter/style/font-editor.less +9 -9
- package/lib/lowcode/painter/style/fullscreen-editor.less +17 -17
- package/lib/lowcode/painter/style/icon-selector.less +22 -22
- package/lib/lowcode/painter/style/icon.less +10 -10
- package/lib/lowcode/painter/style/impexp.less +7 -7
- package/lib/lowcode/painter/style/index.less +6 -6
- package/lib/lowcode/painter/style/layout-ratio.less +51 -51
- package/lib/lowcode/painter/style/list-editor.less +97 -95
- package/lib/lowcode/painter/style/number-input.less +19 -17
- package/lib/lowcode/painter/style/outline.less +30 -28
- package/lib/lowcode/painter/style/page-layout-display.less +27 -27
- package/lib/lowcode/painter/style/page-vars.less +25 -25
- package/lib/lowcode/painter/style/panel-attrs.less +47 -43
- package/lib/lowcode/painter/style/panel-item.less +54 -54
- package/lib/lowcode/painter/style/panel.less +100 -98
- package/lib/lowcode/painter/style/pop-confirm.less +17 -17
- package/lib/lowcode/painter/style/pop-form.less +19 -19
- package/lib/lowcode/painter/style/radio.less +24 -24
- package/lib/lowcode/painter/style/ribbon.less +7 -5
- package/lib/lowcode/painter/style/rule-input.less +12 -12
- package/lib/lowcode/painter/style/split-display.less +18 -18
- package/lib/lowcode/painter/style/style-panel.less +37 -37
- package/lib/lowcode/painter/style/tabitems.less +90 -90
- package/lib/lowcode/painter/svg/code.svg +3 -0
- package/lib/lowcode/painter/svg/expect.svg +9 -0
- package/lib/lowcode/view/lc-components/Box/index.js +4 -4
- package/lib/lowcode/view/lc-components/Box/index.less +14 -14
- package/lib/lowcode/view/lc-components/Box/meta.json +40 -40
- package/lib/lowcode/view/lc-components/Button/index.js +33 -33
- package/lib/lowcode/view/lc-components/Button/meta.json +127 -127
- package/lib/lowcode/view/lc-components/Button/style.less +2 -2
- package/lib/lowcode/view/lc-components/CardList/index.js +480 -11
- package/lib/lowcode/view/lc-components/CardList/meta.json +335 -153
- package/lib/lowcode/view/lc-components/Dialog/FunctionDesign.js +13 -5
- package/lib/lowcode/view/lc-components/Dialog/index.js +28 -18
- package/lib/lowcode/view/lc-components/Dialog/index.less +12 -8
- package/lib/lowcode/view/lc-components/Dialog/meta.json +204 -150
- package/lib/lowcode/view/lc-components/Drawer/FunctionDesign.js +52 -8
- package/lib/lowcode/view/lc-components/Drawer/index.js +148 -33
- package/lib/lowcode/view/lc-components/Drawer/index.less +13 -10
- package/lib/lowcode/view/lc-components/Drawer/meta.json +242 -131
- package/lib/lowcode/view/lc-components/FieldColor/meta.json +157 -157
- package/lib/lowcode/view/lc-components/FieldComplex/meta.json +140 -140
- package/lib/lowcode/view/lc-components/FieldDate/meta.json +141 -141
- package/lib/lowcode/view/lc-components/FieldDict/meta.json +138 -138
- package/lib/lowcode/view/lc-components/FieldEditor/meta.json +138 -138
- package/lib/lowcode/view/lc-components/FieldGroup/meta.json +167 -167
- package/lib/lowcode/view/lc-components/FieldNumber/meta.json +143 -143
- package/lib/lowcode/view/lc-components/FieldRadio/meta.json +115 -115
- package/lib/lowcode/view/lc-components/FieldRegion/meta.json +121 -121
- package/lib/lowcode/view/lc-components/FieldSelect/meta.json +152 -152
- package/lib/lowcode/view/lc-components/FieldString/meta.json +152 -152
- package/lib/lowcode/view/lc-components/FieldSwitch/meta.json +125 -125
- package/lib/lowcode/view/lc-components/FieldTextarea/meta.json +143 -143
- package/lib/lowcode/view/lc-components/FieldUpload/meta.json +165 -165
- package/lib/lowcode/view/lc-components/FieldUser/meta.json +176 -176
- package/lib/lowcode/view/lc-components/FieldYear/meta.json +129 -129
- package/lib/lowcode/view/lc-components/Form/FunctionDesign.js +2 -1
- package/lib/lowcode/view/lc-components/Form/index.js +64 -47
- package/lib/lowcode/view/lc-components/Form/meta.json +645 -609
- package/lib/lowcode/view/lc-components/GroupTree/FunctionDesign.js +17 -0
- package/lib/lowcode/view/lc-components/GroupTree/FunctionLive.js +17 -0
- package/lib/lowcode/view/lc-components/GroupTree/FunctionPreview.js +17 -0
- package/lib/lowcode/view/lc-components/GroupTree/index.js +220 -0
- package/lib/lowcode/view/lc-components/GroupTree/index.less +12 -0
- package/lib/lowcode/view/lc-components/GroupTree/meta.json +83 -0
- package/lib/lowcode/view/lc-components/Iframe/index.js +55 -5
- package/lib/lowcode/view/lc-components/Iframe/meta.json +31 -32
- package/lib/lowcode/view/lc-components/ImEx/index.js +25 -25
- package/lib/lowcode/view/lc-components/ImEx/index.less +7 -7
- package/lib/lowcode/view/lc-components/ImEx/meta.json +134 -134
- package/lib/lowcode/view/lc-components/Image/index.js +80 -4
- package/lib/lowcode/view/lc-components/Image/index.less +27 -0
- package/lib/lowcode/view/lc-components/Image/meta.json +149 -114
- package/lib/lowcode/view/lc-components/JSX/RuntimeComp.js +4 -4
- package/lib/lowcode/view/lc-components/JSX/meta.json +28 -28
- package/lib/lowcode/view/lc-components/Layout/index.js +16 -16
- package/lib/lowcode/view/lc-components/Layout/index.less +5 -5
- package/lib/lowcode/view/lc-components/Layout/meta.json +107 -107
- package/lib/lowcode/view/lc-components/Link/index.js +52 -4
- package/lib/lowcode/view/lc-components/Link/index.less +15 -0
- package/lib/lowcode/view/lc-components/Link/meta.json +112 -112
- package/lib/lowcode/view/lc-components/Page/meta.json +61 -61
- package/lib/lowcode/view/lc-components/PageContent/meta.json +9 -9
- package/lib/lowcode/view/lc-components/PageFooter/meta.json +9 -9
- package/lib/lowcode/view/lc-components/PageHeader/meta.json +9 -9
- package/lib/lowcode/view/lc-components/PageLayout/meta.json +59 -59
- package/lib/lowcode/view/lc-components/Section/index.less +7 -7
- package/lib/lowcode/view/lc-components/Section/meta.json +108 -108
- package/lib/lowcode/view/lc-components/Split/meta.json +53 -53
- package/lib/lowcode/view/lc-components/Table/index.js +152 -153
- package/lib/lowcode/view/lc-components/Table/meta.json +450 -450
- package/lib/lowcode/view/lc-components/Tabs/FunctionDesign.js +38 -2
- package/lib/lowcode/view/lc-components/Tabs/index.js +24 -24
- package/lib/lowcode/view/lc-components/Tabs/meta.json +113 -113
- package/lib/lowcode/view/lc-components/Text/meta.json +56 -56
- package/lib/lowcode/view/lc-components/Tree/index.js +116 -114
- package/lib/lowcode/view/lc-components/Tree/index.less +4 -4
- package/lib/lowcode/view/lc-components/Tree/meta.json +357 -357
- package/lib/lowcode/view/style/canvas.less +5 -5
- package/lib/lowcode/view/style/loading.less +98 -98
- package/lib/lowcode/view/style/page.less +7 -7
- package/lib/upload/FilesWall/index.js +13 -13
- package/lib/upload/FilesWall/index.less +74 -74
- package/lib/upload/Form/index.less +7 -7
- package/lib/upload/FormItem/index.js +15 -15
- package/lib/utils/form.js +21 -21
- package/lib/utils/grid.js +2 -2
- package/lowcode.js +1 -1
- package/package.json +176 -175
- package/upload.js +1 -1
- package/utils.js +1 -1
- package/es/lowcode/painter/style/treedragdrop.less +0 -19
- package/es/lowcode/view/lc-components/Form/index.less +0 -5
- package/lib/lowcode/painter/style/treedragdrop.less +0 -19
- package/lib/lowcode/view/lc-components/Form/index.less +0 -5
|
@@ -5,10 +5,10 @@ import _typeof from "@babel/runtime/helpers/esm/typeof";
|
|
|
5
5
|
import * as LZString from 'lz-string';
|
|
6
6
|
import { LC_BUILDIN_UNIT_KEY } from "../../constants";
|
|
7
7
|
|
|
8
|
-
/**
|
|
9
|
-
* 数据压缩
|
|
10
|
-
* @param {JSON} data
|
|
11
|
-
* @returns 加密后的字符串
|
|
8
|
+
/**
|
|
9
|
+
* 数据压缩
|
|
10
|
+
* @param {JSON} data
|
|
11
|
+
* @returns 加密后的字符串
|
|
12
12
|
*/
|
|
13
13
|
export function compress(data) {
|
|
14
14
|
// 将对象转换为JSON字符串
|
|
@@ -17,10 +17,10 @@ export function compress(data) {
|
|
|
17
17
|
return LZString.compressToBase64(jsonString);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
/**
|
|
21
|
-
* 数据解压
|
|
22
|
-
* @param {string} compressedData
|
|
23
|
-
* @returns {json}
|
|
20
|
+
/**
|
|
21
|
+
* 数据解压
|
|
22
|
+
* @param {string} compressedData
|
|
23
|
+
* @returns {json}
|
|
24
24
|
*/
|
|
25
25
|
export function decompress(compressedData) {
|
|
26
26
|
// 使用LZ-String解压数据
|
|
@@ -29,13 +29,13 @@ export function decompress(compressedData) {
|
|
|
29
29
|
return JSON.parse(jsonString);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
/**
|
|
33
|
-
* 查找指定ID的节点及其父节点。
|
|
34
|
-
*
|
|
35
|
-
* @param {string} id - 要查找的节点ID。
|
|
36
|
-
* @param {Object} current - 当前遍历的JSON对象。
|
|
37
|
-
* @param {Object|null} parent - 当前节点的父节点。
|
|
38
|
-
* @returns {{node: Object|null, parent: Object|null}} 查找结果,包含节点和其父节点。
|
|
32
|
+
/**
|
|
33
|
+
* 查找指定ID的节点及其父节点。
|
|
34
|
+
*
|
|
35
|
+
* @param {string} id - 要查找的节点ID。
|
|
36
|
+
* @param {Object} current - 当前遍历的JSON对象。
|
|
37
|
+
* @param {Object|null} parent - 当前节点的父节点。
|
|
38
|
+
* @returns {{node: Object|null, parent: Object|null}} 查找结果,包含节点和其父节点。
|
|
39
39
|
*/
|
|
40
40
|
export function findNodeAndParent(id, current) {
|
|
41
41
|
var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
|
|
@@ -69,13 +69,13 @@ export function findNodeAndParent(id, current) {
|
|
|
69
69
|
};
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
/**
|
|
73
|
-
* 对指定的JSON结构进行节点的添加、修改或删除操作。
|
|
74
|
-
*
|
|
75
|
-
* @param {Object} json - 要操作的JSON对象。
|
|
76
|
-
* @param {string|null} path - 要操作的节点路径,使用'/'分隔。
|
|
77
|
-
* @param {string} id - 操作节点的唯一标识符。
|
|
78
|
-
* @param {Object|null} data - 要添加或修改的数据。如果为null,表示删除操作。
|
|
72
|
+
/**
|
|
73
|
+
* 对指定的JSON结构进行节点的添加、修改或删除操作。
|
|
74
|
+
*
|
|
75
|
+
* @param {Object} json - 要操作的JSON对象。
|
|
76
|
+
* @param {string|null} path - 要操作的节点路径,使用'/'分隔。
|
|
77
|
+
* @param {string} id - 操作节点的唯一标识符。
|
|
78
|
+
* @param {Object|null} data - 要添加或修改的数据。如果为null,表示删除操作。
|
|
79
79
|
*/
|
|
80
80
|
function process(json, path, id, data) {
|
|
81
81
|
if (!json) {
|
|
@@ -141,25 +141,25 @@ function process(json, path, id, data) {
|
|
|
141
141
|
}
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
-
/**
|
|
145
|
-
* 对指定的JSON结构进行节点的添加操作。
|
|
146
|
-
*
|
|
147
|
-
* @param {Object} json - 要操作的JSON对象。
|
|
148
|
-
* @param {string} parentId - 父节点的唯一标识符。
|
|
149
|
-
* @param {string} id - 操作节点的唯一标识符。
|
|
150
|
-
* @param {Object|null} data - 要添加或修改的数据。如果为null,表示删除操作。
|
|
144
|
+
/**
|
|
145
|
+
* 对指定的JSON结构进行节点的添加操作。
|
|
146
|
+
*
|
|
147
|
+
* @param {Object} json - 要操作的JSON对象。
|
|
148
|
+
* @param {string} parentId - 父节点的唯一标识符。
|
|
149
|
+
* @param {string} id - 操作节点的唯一标识符。
|
|
150
|
+
* @param {Object|null} data - 要添加或修改的数据。如果为null,表示删除操作。
|
|
151
151
|
*/
|
|
152
152
|
export function add(json, parentId, id, data) {
|
|
153
153
|
process(json, getPathById(json, parentId), id, data);
|
|
154
154
|
}
|
|
155
155
|
|
|
156
|
-
/**
|
|
157
|
-
* 移动指定的节点到另一个节点的指定位置。
|
|
158
|
-
*
|
|
159
|
-
* @param {Object} json - 要操作的JSON对象。
|
|
160
|
-
* @param {string} sid - 被移动的节点id
|
|
161
|
-
* @param {string} tid - 目标节点id
|
|
162
|
-
* @param {string} action - 'left': 往节点前面插入,'right':往节点后面插,'inside':往节点子节点插
|
|
156
|
+
/**
|
|
157
|
+
* 移动指定的节点到另一个节点的指定位置。
|
|
158
|
+
*
|
|
159
|
+
* @param {Object} json - 要操作的JSON对象。
|
|
160
|
+
* @param {string} sid - 被移动的节点id
|
|
161
|
+
* @param {string} tid - 目标节点id
|
|
162
|
+
* @param {string} action - 'left': 往节点前面插入,'right':往节点后面插,'inside':往节点子节点插
|
|
163
163
|
*/
|
|
164
164
|
export function move(json, sid, tid, action) {
|
|
165
165
|
// 验证节点存在性
|
|
@@ -215,34 +215,34 @@ export function move(json, sid, tid, action) {
|
|
|
215
215
|
}
|
|
216
216
|
}
|
|
217
217
|
|
|
218
|
-
/**
|
|
219
|
-
* 对指定的JSON结构进行节点的修改操作。
|
|
220
|
-
*
|
|
221
|
-
* @param {Object} json - 要操作的JSON对象。
|
|
222
|
-
* @param {string} id - 操作节点的唯一标识符。
|
|
223
|
-
* @param {Object|null} data - 要添加或修改的数据。如果为null,表示删除操作。
|
|
218
|
+
/**
|
|
219
|
+
* 对指定的JSON结构进行节点的修改操作。
|
|
220
|
+
*
|
|
221
|
+
* @param {Object} json - 要操作的JSON对象。
|
|
222
|
+
* @param {string} id - 操作节点的唯一标识符。
|
|
223
|
+
* @param {Object|null} data - 要添加或修改的数据。如果为null,表示删除操作。
|
|
224
224
|
*/
|
|
225
225
|
export function modifyById(json, id, data) {
|
|
226
226
|
process(json, null, id, data);
|
|
227
227
|
}
|
|
228
228
|
|
|
229
|
-
/**
|
|
230
|
-
* 删除指定id的节点。
|
|
231
|
-
*
|
|
232
|
-
* @param {Object} json - JSON对象。
|
|
233
|
-
* @param {string} id - 要删除的节点ID。
|
|
229
|
+
/**
|
|
230
|
+
* 删除指定id的节点。
|
|
231
|
+
*
|
|
232
|
+
* @param {Object} json - JSON对象。
|
|
233
|
+
* @param {string} id - 要删除的节点ID。
|
|
234
234
|
*/
|
|
235
235
|
export function deleteById(json, id) {
|
|
236
236
|
process(json, null, id);
|
|
237
237
|
}
|
|
238
238
|
|
|
239
|
-
/**
|
|
240
|
-
* 根据ID在给定的JSON结构中查找节点的路径。
|
|
241
|
-
*
|
|
242
|
-
* @param {Object} json - 要搜索的JSON对象。
|
|
243
|
-
* @param {string} id - 要查找的节点ID。
|
|
244
|
-
* @param {string} currentPath - 当前递归到的路径,用于构建返回的路径字符串。
|
|
245
|
-
* @returns {string|null} 如果找到节点,返回节点的路径;否则返回null。
|
|
239
|
+
/**
|
|
240
|
+
* 根据ID在给定的JSON结构中查找节点的路径。
|
|
241
|
+
*
|
|
242
|
+
* @param {Object} json - 要搜索的JSON对象。
|
|
243
|
+
* @param {string} id - 要查找的节点ID。
|
|
244
|
+
* @param {string} currentPath - 当前递归到的路径,用于构建返回的路径字符串。
|
|
245
|
+
* @returns {string|null} 如果找到节点,返回节点的路径;否则返回null。
|
|
246
246
|
*/
|
|
247
247
|
export function getPathById(json, id) {
|
|
248
248
|
var currentPath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
|
|
@@ -262,28 +262,28 @@ export function getPathById(json, id) {
|
|
|
262
262
|
return null;
|
|
263
263
|
}
|
|
264
264
|
|
|
265
|
-
/**
|
|
266
|
-
* 在给定的JSON结构中搜索具有特定id的节点,并返回包含该节点及其所有父节点的props属性的路径数组。
|
|
267
|
-
*
|
|
268
|
-
* @param {Object} data - 待搜索的JSON对象,它代表了一个复杂的树状结构,每个节点都可能有props和children属性。
|
|
269
|
-
* @param {string} targetId - 需要找到的目标节点的id。
|
|
270
|
-
* @returns {Array<Object>} 一个包含目标节点及其所有父节点的props属性的数组。如果未找到目标节点,则返回空数组。
|
|
271
|
-
*
|
|
272
|
-
* @example
|
|
273
|
-
* const data = {
|
|
274
|
-
* props: {
|
|
275
|
-
* id: 'page_root',
|
|
276
|
-
* type: 'Page',
|
|
277
|
-
* name: '页面',
|
|
278
|
-
* hasHeder: true,
|
|
279
|
-
* hasFooter: true,
|
|
280
|
-
* },
|
|
281
|
-
* // ...其他节点
|
|
282
|
-
* };
|
|
283
|
-
*
|
|
284
|
-
* const path = getPathNodesById(data, 'form_jknbjkun');
|
|
285
|
-
* console.log(path);
|
|
286
|
-
* // 输出目标节点及其所有父节点的props属性的数组
|
|
265
|
+
/**
|
|
266
|
+
* 在给定的JSON结构中搜索具有特定id的节点,并返回包含该节点及其所有父节点的props属性的路径数组。
|
|
267
|
+
*
|
|
268
|
+
* @param {Object} data - 待搜索的JSON对象,它代表了一个复杂的树状结构,每个节点都可能有props和children属性。
|
|
269
|
+
* @param {string} targetId - 需要找到的目标节点的id。
|
|
270
|
+
* @returns {Array<Object>} 一个包含目标节点及其所有父节点的props属性的数组。如果未找到目标节点,则返回空数组。
|
|
271
|
+
*
|
|
272
|
+
* @example
|
|
273
|
+
* const data = {
|
|
274
|
+
* props: {
|
|
275
|
+
* id: 'page_root',
|
|
276
|
+
* type: 'Page',
|
|
277
|
+
* name: '页面',
|
|
278
|
+
* hasHeder: true,
|
|
279
|
+
* hasFooter: true,
|
|
280
|
+
* },
|
|
281
|
+
* // ...其他节点
|
|
282
|
+
* };
|
|
283
|
+
*
|
|
284
|
+
* const path = getPathNodesById(data, 'form_jknbjkun');
|
|
285
|
+
* console.log(path);
|
|
286
|
+
* // 输出目标节点及其所有父节点的props属性的数组
|
|
287
287
|
*/
|
|
288
288
|
export function getPathNodesById(data, targetId) {
|
|
289
289
|
// 初始化结果数组
|
|
@@ -241,4 +241,25 @@ export function loadScript(path) {
|
|
|
241
241
|
ref: script,
|
|
242
242
|
status: script.getAttribute('data-status') || 'ready'
|
|
243
243
|
};
|
|
244
|
+
}
|
|
245
|
+
export function findFirstLeafNode(node) {
|
|
246
|
+
if (!node.children || node.children.length === 0) {
|
|
247
|
+
return node;
|
|
248
|
+
}
|
|
249
|
+
var _iterator2 = _createForOfIteratorHelper(node.children),
|
|
250
|
+
_step2;
|
|
251
|
+
try {
|
|
252
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
253
|
+
var child = _step2.value;
|
|
254
|
+
var leaf = findFirstLeafNode(child);
|
|
255
|
+
if (leaf) {
|
|
256
|
+
return leaf;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
} catch (err) {
|
|
260
|
+
_iterator2.e(err);
|
|
261
|
+
} finally {
|
|
262
|
+
_iterator2.f();
|
|
263
|
+
}
|
|
264
|
+
return null;
|
|
244
265
|
}
|
|
@@ -7,6 +7,7 @@ var _excluded = ["props", "children"],
|
|
|
7
7
|
import React, { useRef } from 'react';
|
|
8
8
|
import { dynamic } from 'umi';
|
|
9
9
|
import { useMemoizedFn, useCreation } from 'ahooks';
|
|
10
|
+
import { Skeleton } from 'luck-design/antd';
|
|
10
11
|
import { upperFirst, isNil } from 'lodash';
|
|
11
12
|
import { useContext } from "../provider/ContextProvider";
|
|
12
13
|
import { LC_BUILDIN_UNIT_KEY_LIST, RUNTIME } from "../../constants";
|
|
@@ -55,7 +56,18 @@ export default function useCanvasRender(data, deps) {
|
|
|
55
56
|
return _loader.apply(this, arguments);
|
|
56
57
|
}
|
|
57
58
|
return loader;
|
|
58
|
-
}()
|
|
59
|
+
}(),
|
|
60
|
+
loading: function loading() {
|
|
61
|
+
return /*#__PURE__*/React.createElement(Skeleton, {
|
|
62
|
+
active: true,
|
|
63
|
+
title: {
|
|
64
|
+
width: '70%'
|
|
65
|
+
},
|
|
66
|
+
paragraph: {
|
|
67
|
+
rows: 7
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
59
71
|
});
|
|
60
72
|
}
|
|
61
73
|
var renderable = true;
|
|
@@ -10,6 +10,7 @@ import { useDraggable } from '@dnd-kit/core';
|
|
|
10
10
|
import styles from "./style/components.less";
|
|
11
11
|
import data from "../engine/meta/components-list.json";
|
|
12
12
|
import { Action } from "./components/DragDrop/DragDropContext";
|
|
13
|
+
import Expect from "./expect";
|
|
13
14
|
var TabPane = Tabs.TabPane;
|
|
14
15
|
var Search = Input.Search;
|
|
15
16
|
var BaseCom = function BaseCom(_ref) {
|
|
@@ -87,8 +88,8 @@ var CompItem = function CompItem(_ref2) {
|
|
|
87
88
|
}, /*#__PURE__*/React.createElement("span", null, item.name)));
|
|
88
89
|
};
|
|
89
90
|
|
|
90
|
-
/**
|
|
91
|
-
* 组件清单
|
|
91
|
+
/**
|
|
92
|
+
* 组件清单
|
|
92
93
|
*/
|
|
93
94
|
var Components = function Components(_ref3) {
|
|
94
95
|
var _ref3$dataset = _ref3.dataset,
|
|
@@ -125,6 +126,10 @@ var Components = function Components(_ref3) {
|
|
|
125
126
|
label: '自定义组件'
|
|
126
127
|
}),
|
|
127
128
|
key: "dataset"
|
|
128
|
-
},
|
|
129
|
+
}, /*#__PURE__*/React.createElement(Expect, {
|
|
130
|
+
style: {
|
|
131
|
+
paddingTop: '80px'
|
|
132
|
+
}
|
|
133
|
+
}))));
|
|
129
134
|
};
|
|
130
135
|
export default Components;
|
|
@@ -68,6 +68,7 @@ var Design = function Design() {
|
|
|
68
68
|
locale: locale,
|
|
69
69
|
onLangChange: handleLangChange
|
|
70
70
|
}), /*#__PURE__*/React.createElement("div", {
|
|
71
|
+
id: "design-workspace",
|
|
71
72
|
className: styles['lc-painter-design-workspace']
|
|
72
73
|
}, /*#__PURE__*/React.createElement(DesignOperator, {
|
|
73
74
|
canvas: simulatorRef
|
|
@@ -4,6 +4,7 @@ import { last, initial } from 'lodash';
|
|
|
4
4
|
import { useEventListener, useSetState, useMemoizedFn, useCreation, useSize, useLatest, useKeyPress } from 'ahooks';
|
|
5
5
|
import { Icon, Dropdown, message } from 'luck-design/antd';
|
|
6
6
|
import { reverse, isString, isNil } from 'lodash';
|
|
7
|
+
import classNames from 'classnames';
|
|
7
8
|
import { suid } from '@luck-design-biz/base/utils';
|
|
8
9
|
import { useContext, addNode, deleteNode } from "../engine/provider/ContextProvider";
|
|
9
10
|
import { LC_BUILDIN_UNIT_KEY, LC_COMPONENT_UNIT_KEY, LC_COMPONENT_UNIT, LC_FORMITEM_UNIT, CONTAINER_UNITS } from "../constants";
|
|
@@ -25,7 +26,7 @@ var getOperatorStyle = function getOperatorStyle(canvas, cellNode) {
|
|
|
25
26
|
};
|
|
26
27
|
};
|
|
27
28
|
var DesignOperator = function DesignOperator(_ref) {
|
|
28
|
-
var
|
|
29
|
+
var _getElement2;
|
|
29
30
|
var canvas = _ref.canvas;
|
|
30
31
|
var context = useContext();
|
|
31
32
|
var size = useSize(canvas);
|
|
@@ -69,7 +70,9 @@ var DesignOperator = function DesignOperator(_ref) {
|
|
|
69
70
|
context.$publisher(context.topics.COMPONENT_APPEND, {
|
|
70
71
|
id: _id
|
|
71
72
|
});
|
|
72
|
-
|
|
73
|
+
setTimeout(function () {
|
|
74
|
+
handleSelect(_id);
|
|
75
|
+
});
|
|
73
76
|
}
|
|
74
77
|
}).watch();
|
|
75
78
|
var json = require("../engine/meta/".concat(data.component.toLowerCase(), ".props.default.json"));
|
|
@@ -110,6 +113,15 @@ var DesignOperator = function DesignOperator(_ref) {
|
|
|
110
113
|
}))
|
|
111
114
|
};
|
|
112
115
|
}, [operatorId.selector]);
|
|
116
|
+
var activeDomPosition = useCreation(function () {
|
|
117
|
+
var _getElement;
|
|
118
|
+
if (!operatorId.selector && !operatorId.selectorTarget) return null;
|
|
119
|
+
var targetTop = (_getElement = getElement(isNil(operatorId.selectorTarget) ? operatorId.selector : operatorId.selectorTarget.element)) === null || _getElement === void 0 ? void 0 : _getElement.getBoundingClientRect().top;
|
|
120
|
+
var delat = targetTop - canvas.current.getBoundingClientRect().top;
|
|
121
|
+
return {
|
|
122
|
+
top: delat > 24 ? -24 : 0
|
|
123
|
+
};
|
|
124
|
+
}, [operatorId.selector, operatorId.selectorTarget]);
|
|
113
125
|
var lastDetectorName = useCreation(function () {
|
|
114
126
|
var _last;
|
|
115
127
|
return operatorId.detector && isString(operatorId.detector) ? (_last = last(context.componentMap.get(operatorId.detector).api.getLevelNodes())) === null || _last === void 0 ? void 0 : _last.name : void 0;
|
|
@@ -211,9 +223,11 @@ var DesignOperator = function DesignOperator(_ref) {
|
|
|
211
223
|
}).watch();
|
|
212
224
|
var hcid = context.$subscriber(context.topics.COMPONENT_HOVER).on(function (payload) {
|
|
213
225
|
if (payload.target) setOperatorId({
|
|
214
|
-
detector: payload.target
|
|
226
|
+
detector: payload.target,
|
|
227
|
+
detectorSide: payload.side
|
|
215
228
|
});else setOperatorId({
|
|
216
|
-
detector: null
|
|
229
|
+
detector: null,
|
|
230
|
+
detectorSide: null
|
|
217
231
|
});
|
|
218
232
|
}).watch();
|
|
219
233
|
var acid = context.$subscriber(context.topics.COMPONENT_ACTIVE).on(function (payload) {
|
|
@@ -224,14 +238,16 @@ var DesignOperator = function DesignOperator(_ref) {
|
|
|
224
238
|
selector: payload.target,
|
|
225
239
|
selectorTarget: null,
|
|
226
240
|
deletable: !node || node.props.buildIn !== true,
|
|
227
|
-
detector: null
|
|
241
|
+
detector: null,
|
|
242
|
+
detectorSide: null
|
|
228
243
|
});
|
|
229
244
|
} else {
|
|
230
245
|
setOperatorId({
|
|
231
246
|
selector: payload.target.id,
|
|
232
247
|
selectorTarget: payload.target,
|
|
233
248
|
deletable: false,
|
|
234
|
-
detector: null
|
|
249
|
+
detector: null,
|
|
250
|
+
detectorSide: null
|
|
235
251
|
});
|
|
236
252
|
}
|
|
237
253
|
} else {
|
|
@@ -286,12 +302,12 @@ var DesignOperator = function DesignOperator(_ref) {
|
|
|
286
302
|
}, [operatorId.selector]);
|
|
287
303
|
return /*#__PURE__*/React.createElement(React.Fragment, null, operatorId.detector && /*#__PURE__*/React.createElement("div", {
|
|
288
304
|
id: "lc-detector",
|
|
289
|
-
className: styles['lc-painter-design-detector'],
|
|
305
|
+
className: classNames(styles['lc-painter-design-detector'], styles["sider-".concat(operatorId.detectorSide)]),
|
|
290
306
|
style: getOperatorStyle(canvas.current, getElement(operatorId.detector))
|
|
291
307
|
}, /*#__PURE__*/React.createElement("span", {
|
|
292
308
|
className: styles['lc-painter-design-detector-name'],
|
|
293
309
|
style: {
|
|
294
|
-
top: ((
|
|
310
|
+
top: ((_getElement2 = getElement(operatorId.detector)) === null || _getElement2 === void 0 ? void 0 : _getElement2.offsetTop) < 23 ? 0 : '-23px'
|
|
295
311
|
}
|
|
296
312
|
}, lastDetectorName ? "".concat(lastDetectorName, "(").concat(operatorId.detector, ")") : null)), operatorId.selector && /*#__PURE__*/React.createElement("div", {
|
|
297
313
|
id: "lc-selector",
|
|
@@ -300,13 +316,7 @@ var DesignOperator = function DesignOperator(_ref) {
|
|
|
300
316
|
style: getOperatorStyle(canvas.current, getElement(isNil(operatorId.selectorTarget) ? operatorId.selector : operatorId.selectorTarget.element))
|
|
301
317
|
}, acticeProps && /*#__PURE__*/React.createElement("div", {
|
|
302
318
|
className: styles['lc-borders-actions'],
|
|
303
|
-
style:
|
|
304
|
-
top: 0
|
|
305
|
-
} : ((_getElement2 = getElement(isNil(operatorId.selectorTarget) ? operatorId.selector : operatorId.selectorTarget.element)) === null || _getElement2 === void 0 ? void 0 : _getElement2.offsetTop) < 23 ? {
|
|
306
|
-
bottom: '-23px'
|
|
307
|
-
} : {
|
|
308
|
-
top: '-23px'
|
|
309
|
-
}
|
|
319
|
+
style: activeDomPosition
|
|
310
320
|
}, /*#__PURE__*/React.createElement(Dropdown, {
|
|
311
321
|
overlay: acticeProps.menu,
|
|
312
322
|
placement: "bottomLeft"
|
|
@@ -19,6 +19,19 @@ import { LC_BUILDIN_UNIT_KEY, COOKIE_VIRTUAL_ACCOUNT_KEY } from "../constants";
|
|
|
19
19
|
import styles from "./style/design.less";
|
|
20
20
|
import { fetchClearCache, fetchUpdatePageData, fetchSearchUser } from "../constants/api-url";
|
|
21
21
|
import { getLDMetaAttr } from "../engine/tools/helper";
|
|
22
|
+
import TipIcon from "./components/TipIcon";
|
|
23
|
+
var CodeSvg = function CodeSvg() {
|
|
24
|
+
return /*#__PURE__*/React.createElement("svg", {
|
|
25
|
+
width: "18",
|
|
26
|
+
height: "18",
|
|
27
|
+
viewBox: "0 0 18 18",
|
|
28
|
+
fill: "none",
|
|
29
|
+
xmlns: "http://www.w3.org/2000/svg"
|
|
30
|
+
}, /*#__PURE__*/React.createElement("path", {
|
|
31
|
+
d: "M2.4749 9.0916L5.45264 6.20703L5.45439 5.93457V4.69707L0.91748 9.0916L5.45439 13.4844V12.2469L5.45264 11.9744L2.4749 9.0916ZM15.2067 9.00723L12.229 6.12441L12.2272 5.85195V4.61445L16.7642 9.00723L12.2272 13.4018V12.1625L12.229 11.89L15.2067 9.00723ZM8.12451 15.0295H6.76045L9.55713 2.80566H10.9212L8.12451 15.0295Z",
|
|
32
|
+
fill: "currentColor"
|
|
33
|
+
}));
|
|
34
|
+
};
|
|
22
35
|
var DesignToolbar = function DesignToolbar(_ref) {
|
|
23
36
|
var locale = _ref.locale,
|
|
24
37
|
onLangChange = _ref.onLangChange;
|
|
@@ -225,9 +238,16 @@ var DesignToolbar = function DesignToolbar(_ref) {
|
|
|
225
238
|
}, /*#__PURE__*/React.createElement(Icon, {
|
|
226
239
|
type: "laptop"
|
|
227
240
|
})), /*#__PURE__*/React.createElement("span", {
|
|
228
|
-
className: classNames(styles['toolbar-item'], _defineProperty({}, styles.actived, activedTarget === 'mobile'))
|
|
241
|
+
className: classNames(styles['toolbar-item'], _defineProperty({}, styles.actived, activedTarget === 'mobile'))
|
|
242
|
+
// onClick={() => setActivedTarget('mobile')}
|
|
243
|
+
,
|
|
229
244
|
onClick: function onClick() {
|
|
230
|
-
|
|
245
|
+
Modal.info({
|
|
246
|
+
title: formatMessage({
|
|
247
|
+
id: 'luckda.lowcode.not.mobile',
|
|
248
|
+
label: '此功能暂未开放'
|
|
249
|
+
})
|
|
250
|
+
});
|
|
231
251
|
}
|
|
232
252
|
}, /*#__PURE__*/React.createElement(Icon, {
|
|
233
253
|
type: "mobile"
|
|
@@ -265,9 +285,10 @@ var DesignToolbar = function DesignToolbar(_ref) {
|
|
|
265
285
|
}), /*#__PURE__*/React.createElement("span", {
|
|
266
286
|
style: {
|
|
267
287
|
width: 'auto',
|
|
268
|
-
fontSize: 12
|
|
288
|
+
fontSize: 12,
|
|
289
|
+
cursor: 'pointer'
|
|
269
290
|
},
|
|
270
|
-
className: styles
|
|
291
|
+
className: styles.hoverPrimary,
|
|
271
292
|
onClick: function onClick() {
|
|
272
293
|
context.$publisher(context.topics.COMPONENT_ACTIVE, {
|
|
273
294
|
target: LC_BUILDIN_UNIT_KEY.PAGE_ROOT
|
|
@@ -281,7 +302,7 @@ var DesignToolbar = function DesignToolbar(_ref) {
|
|
|
281
302
|
}), /*#__PURE__*/React.createElement(Button, {
|
|
282
303
|
size: "small",
|
|
283
304
|
style: {
|
|
284
|
-
fontSize:
|
|
305
|
+
fontSize: 14,
|
|
285
306
|
margin: '0 4px 0 2px'
|
|
286
307
|
},
|
|
287
308
|
disabled: clearCacheLoading,
|
|
@@ -289,65 +310,75 @@ var DesignToolbar = function DesignToolbar(_ref) {
|
|
|
289
310
|
}, formatMessage({
|
|
290
311
|
id: 'luckda.lowcode.design.toolbar.clear',
|
|
291
312
|
label: '清除缓存'
|
|
292
|
-
})), /*#__PURE__*/React.createElement(
|
|
293
|
-
|
|
313
|
+
})), /*#__PURE__*/React.createElement(TipIcon, {
|
|
314
|
+
title: formatMessage({
|
|
315
|
+
id: 'luckda.lowcode.design.toolbar.debug',
|
|
316
|
+
label: '调试'
|
|
317
|
+
}),
|
|
318
|
+
type: "bug",
|
|
294
319
|
style: {
|
|
295
320
|
fontSize: 12,
|
|
296
|
-
margin: '0
|
|
321
|
+
margin: '0 8px 0 6px'
|
|
297
322
|
},
|
|
298
|
-
|
|
323
|
+
className: styles.hoverPrimary,
|
|
299
324
|
onClick: /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {
|
|
300
325
|
return _regeneratorRuntime().wrap(function _callee3$(_context3) {
|
|
301
326
|
while (1) switch (_context3.prev = _context3.next) {
|
|
302
327
|
case 0:
|
|
328
|
+
if (updatePageDataLoading) {
|
|
329
|
+
_context3.next = 6;
|
|
330
|
+
break;
|
|
331
|
+
}
|
|
303
332
|
if (!getNeedPrompt()) {
|
|
304
|
-
_context3.next =
|
|
333
|
+
_context3.next = 4;
|
|
305
334
|
break;
|
|
306
335
|
}
|
|
307
|
-
_context3.next =
|
|
336
|
+
_context3.next = 4;
|
|
308
337
|
return handleSave();
|
|
309
|
-
case
|
|
338
|
+
case 4:
|
|
310
339
|
context.$publisher(context.topics.COMPONENT_ACTIVE, null);
|
|
311
340
|
setShowPreview(true);
|
|
312
|
-
case
|
|
341
|
+
case 6:
|
|
313
342
|
case "end":
|
|
314
343
|
return _context3.stop();
|
|
315
344
|
}
|
|
316
345
|
}, _callee3);
|
|
317
346
|
}))
|
|
318
|
-
},
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
type: "primary",
|
|
326
|
-
disabled: updatePageDataLoading,
|
|
327
|
-
style: {
|
|
328
|
-
fontSize: 12,
|
|
329
|
-
padding: '0 7px 0 0',
|
|
330
|
-
marginLeft: 2
|
|
331
|
-
}
|
|
332
|
-
}, /*#__PURE__*/React.createElement("div", {
|
|
347
|
+
}), /*#__PURE__*/React.createElement(TipIcon, {
|
|
348
|
+
title: formatMessage({
|
|
349
|
+
id: 'luckda.lowcode.design.toolbar.code',
|
|
350
|
+
label: 'Schema面板'
|
|
351
|
+
}),
|
|
352
|
+
component: CodeSvg,
|
|
353
|
+
className: styles.hoverPrimary,
|
|
333
354
|
style: {
|
|
334
|
-
|
|
335
|
-
|
|
355
|
+
fontSize: 14,
|
|
356
|
+
margin: '0 8px 0 6px'
|
|
336
357
|
},
|
|
337
|
-
onClick:
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
358
|
+
onClick: /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {
|
|
359
|
+
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
360
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
361
|
+
case 0:
|
|
362
|
+
if (!updatePageDataLoading) setShow(true);
|
|
363
|
+
case 1:
|
|
364
|
+
case "end":
|
|
365
|
+
return _context4.stop();
|
|
366
|
+
}
|
|
367
|
+
}, _callee4);
|
|
368
|
+
}))
|
|
369
|
+
}), /*#__PURE__*/React.createElement(TipIcon, {
|
|
370
|
+
title: formatMessage({
|
|
371
|
+
id: 'luckda.lowcode.design.toolbar.save',
|
|
372
|
+
label: '保存'
|
|
373
|
+
}),
|
|
374
|
+
type: "save",
|
|
375
|
+
className: styles.hoverPrimary,
|
|
342
376
|
style: {
|
|
343
|
-
|
|
377
|
+
fontSize: 14,
|
|
378
|
+
margin: '0 11px 0 5px'
|
|
344
379
|
},
|
|
345
|
-
onClick:
|
|
346
|
-
|
|
347
|
-
}
|
|
348
|
-
}, /*#__PURE__*/React.createElement(Icon, {
|
|
349
|
-
type: "eye"
|
|
350
|
-
})))), /*#__PURE__*/React.createElement(Modal, {
|
|
380
|
+
onClick: handleSave
|
|
381
|
+
})), /*#__PURE__*/React.createElement(Modal, {
|
|
351
382
|
visible: show,
|
|
352
383
|
width: 1024,
|
|
353
384
|
getContainer: function getContainer() {
|
|
@@ -401,10 +432,10 @@ var DesignToolbar = function DesignToolbar(_ref) {
|
|
|
401
432
|
setUserId(void 0);
|
|
402
433
|
}
|
|
403
434
|
}
|
|
404
|
-
}, userOptions.map(function (
|
|
405
|
-
var key =
|
|
406
|
-
label =
|
|
407
|
-
rest = _objectWithoutProperties(
|
|
435
|
+
}, userOptions.map(function (_ref7) {
|
|
436
|
+
var key = _ref7.key,
|
|
437
|
+
label = _ref7.label,
|
|
438
|
+
rest = _objectWithoutProperties(_ref7, _excluded);
|
|
408
439
|
return /*#__PURE__*/React.createElement(Select.Option, _extends({
|
|
409
440
|
key: key,
|
|
410
441
|
value: key
|
|
@@ -418,7 +449,7 @@ var DesignToolbar = function DesignToolbar(_ref) {
|
|
|
418
449
|
},
|
|
419
450
|
bodyStyle: {
|
|
420
451
|
height: 'calc(100% - 54px)',
|
|
421
|
-
backgroundColor: '
|
|
452
|
+
backgroundColor: 'var(--ant-component-background,#F0F2F5)'
|
|
422
453
|
},
|
|
423
454
|
visible: showPreview,
|
|
424
455
|
destroyOnClose: true,
|
|
@@ -8,6 +8,7 @@ import Outline from "./Outline";
|
|
|
8
8
|
import Components from "./Components";
|
|
9
9
|
import I18n from "./I18n";
|
|
10
10
|
import { formatMessage } from '@luck-design-biz/base/utils';
|
|
11
|
+
import Expect from "./expect";
|
|
11
12
|
import styles from "./style/ribbon.less";
|
|
12
13
|
var _WIDTH_ = 48;
|
|
13
14
|
var _DRAWER_PROPS = {
|
|
@@ -68,6 +69,10 @@ var Ribbon = function Ribbon() {
|
|
|
68
69
|
})
|
|
69
70
|
}, /*#__PURE__*/React.createElement(Icon, {
|
|
70
71
|
type: "apartment",
|
|
72
|
+
style: {
|
|
73
|
+
color: (drawer === null || drawer === void 0 ? void 0 : drawer.key) === _DRAWER_OUTLINE_.key && '#1d79f2',
|
|
74
|
+
fontSize: 20
|
|
75
|
+
},
|
|
71
76
|
onClick: function onClick() {
|
|
72
77
|
return setDrawer((drawer === null || drawer === void 0 ? void 0 : drawer.key) === _DRAWER_OUTLINE_.key ? null : _DRAWER_OUTLINE_);
|
|
73
78
|
}
|
|
@@ -79,6 +84,10 @@ var Ribbon = function Ribbon() {
|
|
|
79
84
|
})
|
|
80
85
|
}, /*#__PURE__*/React.createElement(Icon, {
|
|
81
86
|
type: "appstore",
|
|
87
|
+
style: {
|
|
88
|
+
color: (drawer === null || drawer === void 0 ? void 0 : drawer.key) === _DRAWER_COMPONENTS_.key && '#1d79f2',
|
|
89
|
+
fontSize: 20
|
|
90
|
+
},
|
|
82
91
|
onClick: function onClick() {
|
|
83
92
|
return setDrawer((drawer === null || drawer === void 0 ? void 0 : drawer.key) === _DRAWER_COMPONENTS_.key ? null : _DRAWER_COMPONENTS_);
|
|
84
93
|
}
|
|
@@ -90,6 +99,10 @@ var Ribbon = function Ribbon() {
|
|
|
90
99
|
})
|
|
91
100
|
}, /*#__PURE__*/React.createElement(Icon, {
|
|
92
101
|
type: "global",
|
|
102
|
+
style: {
|
|
103
|
+
color: (drawer === null || drawer === void 0 ? void 0 : drawer.key) === _DRAWER_I18N_.key && '#1d79f2',
|
|
104
|
+
fontSize: 20
|
|
105
|
+
},
|
|
93
106
|
onClick: function onClick() {
|
|
94
107
|
return setDrawer((drawer === null || drawer === void 0 ? void 0 : drawer.key) === _DRAWER_I18N_.key ? null : _DRAWER_I18N_);
|
|
95
108
|
}
|
|
@@ -137,6 +150,6 @@ var Ribbon = function Ribbon() {
|
|
|
137
150
|
style: _objectSpread(_objectSpread({}, _DRAWER_PROPS.style), {}, {
|
|
138
151
|
display: (drawer === null || drawer === void 0 ? void 0 : drawer.key) === _DRAWER_I18N_.key ? 'block' : 'none'
|
|
139
152
|
})
|
|
140
|
-
}), /*#__PURE__*/React.createElement(
|
|
153
|
+
}), /*#__PURE__*/React.createElement(Expect, null)));
|
|
141
154
|
};
|
|
142
155
|
export default Ribbon;
|