1.1.165 • Published 2 years ago

@whalecloud/magic-box-lite v1.1.165

Weekly downloads
168
License
MIT
Repository
-
Last release
2 years ago

MagicBox Decorator - 魔方装修工具

MagicBox(魔方) 是装修工具的名称,也是核心组件的名称。

1.Usage

yarn add @whalecloud/magic-box
  • 设计态使用 Designer 组件
  • 预览态使用 Previewer 组件

Designer & Previewer 是两个巨型 React 组件,所有功能都封装在组件内部,所有必备的参数和定制都通过 props 传递进来。

2. Screen Shots

3. Architecture

3.1 Grid Layout

设计器整体采用行列布局,也就是 Row( MRow 类) 和 Column( MCol 类) 模型,此设计参考了 Bootstrap 的栅格布局模型。

MRow 表示一行,MCol 表示一列,MRow 中只能放置 MCol。虽然组件没有约束一行中最多放多少列,但是建议参考 Bootstrap 的思路,最多放 12 列。

MCol 内部可以放真正的业务组件,也可以继续放置 MRow,可以形成无限嵌套。

3.2 Data Driven & UI isolation

Designer 和 Renderer 都基于数据驱动模式工作,整体是一份巨大的 JSON 数据。

数据中只记录组件类型和数据,不记录组件具体的展示逻辑,UI 展示逻辑由不同类型的 Render 具体负责,在对页面布局要求不高的场景下,PC、手机端、Pad 可以共用一份数据。

数据格式示例:

{
    index: 0,
    id: 'df019a54-e3fb-40f8-b916-d2cde8325475',
    pid: -1,
    childNodes: [
        {
            type: 'MRow',
            id: '9c40cfe6-c6ff-418f-8ae6-5e1818189172',
            title: 'MRow',
            pid: 'df019a54-e3fb-40f8-b916-d2cde8325475',
            index: 0,
            childNodes: [
                {
                    type: 'MCol',
                    id: '9d027c88-ad6d-43c3-850e-ab8bae6b8ab4',
                    title: 'MCol',
                    pid: '9c40cfe6-c6ff-418f-8ae6-5e1818189172',
                    index: 0,
                    childNodes: [
                        {
                            type: 'GalaryTemplate4',
                            id: '80c970f7-5f30-4f72-b6a9-455399ac2aea',
                            title: '4 Images',
                            pid: '9d027c88-ad6d-43c3-850e-ab8bae6b8ab4',
                            index: 0,
                        },
                    ],
                },
            ],
        }
...

3.3. Directory Structure

document updating...

3.4. Core Components

核心组件只有2个:

  • MagicBox: 是整个设计器和渲染器的核心,MagicBox 在逻辑上可以看成超级 DIV,它在 DIV 的基础上增加了拖拽布局和渲染功能。重要:因为 react-dnd 目前只能支持函数式组件,所以这里只能写成函数形式。MagicBox 在 designer 模式和 renderer 模式下具有不同的外观和功能。MagicBox 切分成2个内部组件分别实现设计器和渲染器功能 DesignerBox 和 RendererBox。在 designer 模式下,具有拖拽布局功能。在 renderer 模式下纯展现,其功能退化成一层空的容器 div,不再具有拖拽交互功能。
  • DropZone: 封装放置区域逻辑,当把对象拖动到 DropZone 并放开鼠标时,会触发 drop 动作。 MagicBox 和 DropZone 基于 react-dnd 进行了再次封装,它们是内部核心机制,设计器的外部调用方不需要关心这两个类的实现细节,只要关注暴露的参数即可,下是 MagicBox 的核心参数:
id,
pid,
index,
nodeData,
children,
onHover,
onDrop,
componentMap,
acceptTypes = ['MagicBox', 'MRow'], //盒子内部可以接受的类型只有 MagicBox 和 MRow,MagicBox 默认可以接受自己,形成无限嵌套。
isValidDest = false,
canDrag = true,
isLeaf = false,
isSelected = false,
innerDirection = 'vertical',
1.1.100

2 years ago

1.1.107

2 years ago

1.1.106

2 years ago

1.1.105

2 years ago

1.1.104

2 years ago

1.1.103

2 years ago

1.1.102

2 years ago

1.1.101

2 years ago

1.1.122

2 years ago

1.1.121

2 years ago

1.1.120

2 years ago

1.1.129

2 years ago

1.1.99

2 years ago

1.1.128

2 years ago

1.1.127

2 years ago

1.1.126

2 years ago

1.1.125

2 years ago

1.1.124

2 years ago

1.1.123

2 years ago

1.1.109

2 years ago

1.1.111

2 years ago

1.1.119

2 years ago

1.1.118

2 years ago

1.1.117

2 years ago

1.1.116

2 years ago

1.1.115

2 years ago

1.1.114

2 years ago

1.1.113

2 years ago

1.1.112

2 years ago

1.1.70

2 years ago

1.1.74

2 years ago

1.1.73

2 years ago

1.1.72

2 years ago

1.1.71

2 years ago

1.1.78

2 years ago

1.1.77

2 years ago

1.1.76

2 years ago

1.1.75

2 years ago

1.1.79

2 years ago

1.1.81

2 years ago

1.1.80

2 years ago

1.1.83

2 years ago

1.1.82

2 years ago

1.1.52

2 years ago

1.1.51

2 years ago

1.1.50

2 years ago

1.1.56

2 years ago

1.1.55

2 years ago

1.1.53

2 years ago

1.1.59

2 years ago

1.1.58

2 years ago

1.1.57

2 years ago

1.1.63

2 years ago

1.1.62

2 years ago

1.1.61

2 years ago

1.1.60

2 years ago

1.1.67

2 years ago

1.1.66

2 years ago

1.1.65

2 years ago

1.1.64

2 years ago

1.1.69

2 years ago

1.1.68

2 years ago

1.1.34

2 years ago

1.1.38

2 years ago

1.1.37

2 years ago

1.1.35

2 years ago

1.1.39

2 years ago

1.1.41

2 years ago

1.1.40

2 years ago

1.1.45

2 years ago

1.1.44

2 years ago

1.1.43

2 years ago

1.1.42

2 years ago

1.1.49

2 years ago

1.1.48

2 years ago

1.1.47

2 years ago

1.1.46

2 years ago

1.1.144

2 years ago

1.1.143

2 years ago

1.1.142

2 years ago

1.1.141

2 years ago

1.1.140

2 years ago

1.1.149

2 years ago

1.1.148

2 years ago

1.1.147

2 years ago

1.1.146

2 years ago

1.1.145

2 years ago

1.1.133

2 years ago

1.1.132

2 years ago

1.1.131

2 years ago

1.1.130

2 years ago

1.1.139

2 years ago

1.1.138

2 years ago

1.1.137

2 years ago

1.1.136

2 years ago

1.1.135

2 years ago

1.1.134

2 years ago

1.1.165

2 years ago

1.1.164

2 years ago

1.1.163

2 years ago

1.1.162

2 years ago

1.1.161

2 years ago

1.1.160

2 years ago

1.1.155

2 years ago

1.1.154

2 years ago

1.1.153

2 years ago

1.1.152

2 years ago

1.1.151

2 years ago

1.1.150

2 years ago

1.1.159

2 years ago

1.1.158

2 years ago

1.1.156

2 years ago

0.0.1

2 years ago

0.0.3

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

1.2.2

2 years ago

1.0.305

2 years ago

1.0.304

2 years ago

1.0.307

2 years ago

1.0.306

2 years ago

1.0.301

2 years ago

1.0.300

2 years ago

1.0.303

2 years ago

1.0.302

2 years ago

1.0.321

2 years ago

1.0.320

2 years ago

1.0.323

2 years ago

1.0.322

2 years ago

1.0.319

2 years ago

1.0.310

2 years ago

1.0.316

2 years ago

1.0.315

2 years ago

1.0.318

2 years ago

1.0.317

2 years ago

1.0.312

2 years ago

1.0.311

2 years ago

1.0.314

2 years ago

1.0.313

2 years ago

1.0.309

2 years ago

1.0.308

2 years ago

1.0.297

2 years ago

1.0.296

2 years ago

1.0.299

2 years ago

1.0.298

2 years ago

1.0.293

2 years ago

1.0.292

2 years ago

1.0.295

2 years ago

1.0.294

2 years ago

1.0.291

2 years ago

1.0.290

2 years ago

1.0.385

2 years ago

1.0.384

2 years ago

1.0.387

2 years ago

1.1.28

2 years ago

1.0.386

2 years ago

1.0.381

2 years ago

1.0.380

2 years ago

1.0.383

2 years ago

1.0.382

2 years ago

1.0.389

2 years ago

1.0.388

2 years ago

1.1.30

2 years ago

1.1.32

2 years ago

1.1.31

2 years ago

1.0.374

2 years ago

1.0.373

2 years ago

1.0.376

2 years ago

1.0.375

2 years ago

1.0.370

2 years ago

1.0.372

2 years ago

1.0.371

2 years ago

1.0.378

2 years ago

1.0.377

2 years ago

1.0.286

2 years ago

1.0.285

2 years ago

1.0.288

2 years ago

1.0.287

2 years ago

1.0.282

2 years ago

1.0.281

2 years ago

1.0.284

2 years ago

1.0.283

2 years ago

1.1.9

2 years ago

1.1.8

2 years ago

1.1.7

2 years ago

1.1.6

2 years ago

1.1.5

2 years ago

1.1.4

2 years ago

1.0.289

2 years ago

1.1.3

2 years ago

1.1.2

2 years ago

1.1.12

2 years ago

1.1.10

2 years ago

1.0.280

2 years ago

1.1.16

2 years ago

1.1.14

2 years ago

1.1.13

2 years ago

1.0.396

2 years ago

1.0.275

2 years ago

1.1.19

2 years ago

1.0.395

2 years ago

1.0.274

2 years ago

1.1.18

2 years ago

1.0.277

2 years ago

1.1.17

2 years ago

1.0.276

2 years ago

1.0.392

2 years ago

1.0.391

2 years ago

1.0.394

2 years ago

1.0.273

3 years ago

1.0.393

2 years ago

1.0.279

2 years ago

1.0.278

2 years ago

1.1.22

2 years ago

1.1.21

2 years ago

1.0.390

2 years ago

1.1.20

2 years ago

1.1.27

2 years ago

1.1.26

2 years ago

1.1.25

2 years ago

1.1.24

2 years ago

1.0.369

2 years ago

1.0.269

3 years ago

1.0.271

3 years ago

1.0.270

3 years ago

1.0.272

3 years ago

1.0.264

3 years ago

1.0.263

3 years ago

1.0.266

3 years ago

1.0.265

3 years ago

1.0.262

3 years ago

1.0.261

3 years ago

1.0.268

3 years ago

1.0.267

3 years ago

1.0.260

3 years ago

1.0.259

3 years ago

1.0.258

3 years ago

1.0.257

3 years ago

1.0.256

3 years ago

1.0.255

3 years ago

1.0.253

3 years ago

1.0.252

3 years ago

1.0.254

3 years ago

1.0.251

3 years ago

1.0.250

3 years ago

1.0.249

3 years ago

1.0.248

3 years ago

1.0.244

3 years ago

1.0.246

3 years ago

1.0.245

3 years ago

1.0.247

3 years ago

1.0.242

3 years ago

1.0.241

3 years ago

1.0.243

3 years ago

1.0.240

3 years ago

1.0.239

3 years ago

1.0.238

3 years ago

1.0.235

3 years ago

1.0.237

3 years ago

1.0.236

3 years ago

1.0.228

3 years ago

1.0.227

3 years ago

1.0.229

3 years ago

1.0.226

3 years ago

1.0.231

3 years ago

1.0.230

3 years ago

1.0.233

3 years ago

1.0.232

3 years ago

1.0.234

3 years ago

1.0.224

3 years ago

1.0.223

3 years ago

1.0.225

3 years ago

1.0.220

3 years ago

1.0.221

3 years ago

1.0.219

3 years ago

1.0.217

3 years ago

1.0.216

3 years ago

1.0.218

3 years ago

1.0.211

3 years ago

1.0.210

3 years ago

1.0.213

3 years ago

1.0.212

3 years ago

1.0.215

3 years ago

1.0.214

3 years ago

1.0.206

3 years ago

1.0.205

3 years ago

1.0.208

3 years ago

1.0.207

3 years ago

1.0.204

3 years ago

1.0.203

3 years ago

1.0.209

3 years ago

1.0.200

3 years ago

1.0.202

3 years ago

1.0.201

3 years ago

1.0.198

3 years ago

1.0.197

3 years ago

1.0.199

3 years ago

1.0.194

3 years ago

1.0.193

3 years ago

1.0.196

3 years ago

1.0.195

3 years ago

1.0.190

3 years ago

1.0.192

3 years ago

1.0.191

3 years ago

1.0.187

3 years ago

1.0.186

3 years ago

1.0.189

3 years ago

1.0.188

3 years ago

1.0.183

3 years ago

1.0.182

3 years ago

1.0.185

3 years ago

1.0.184

3 years ago

1.0.181

3 years ago

1.0.180

3 years ago

1.0.176

3 years ago

1.0.175

3 years ago

1.0.178

3 years ago

1.0.177

3 years ago

1.0.179

3 years ago

1.0.172

3 years ago

1.0.174

3 years ago

1.0.173

3 years ago

1.0.171

3 years ago

1.0.170

3 years ago

1.0.169

3 years ago

1.0.168

3 years ago

1.0.167

3 years ago

1.0.166

3 years ago

1.0.165

3 years ago

1.0.164

3 years ago

1.0.161

3 years ago

1.0.160

3 years ago

1.0.163

3 years ago

1.0.162

3 years ago

1.0.156

3 years ago

1.0.158

3 years ago

1.0.157

3 years ago

1.0.159

3 years ago

1.0.154

3 years ago

1.0.153

3 years ago

1.0.155

3 years ago

1.0.152

3 years ago

1.0.151

3 years ago

1.0.149

3 years ago

1.0.150

3 years ago

1.0.148

3 years ago

1.0.143

3 years ago

1.0.145

3 years ago

1.0.144

3 years ago

1.0.147

3 years ago

1.0.146

3 years ago

1.0.142

3 years ago

1.0.141

3 years ago

1.0.140

3 years ago

1.0.121

3 years ago

1.0.120

3 years ago

1.0.123

3 years ago

1.0.122

3 years ago

1.0.129

3 years ago

1.0.128

3 years ago

1.0.125

3 years ago

1.0.124

3 years ago

1.0.127

3 years ago

1.0.126

3 years ago

1.0.132

3 years ago

1.0.110

3 years ago

1.0.131

3 years ago

1.0.134

3 years ago

1.0.112

3 years ago

1.0.133

3 years ago

1.0.111

3 years ago

1.0.130

3 years ago

1.0.118

3 years ago

1.0.139

3 years ago

1.0.117

3 years ago

1.0.119

3 years ago

1.0.136

3 years ago

1.0.114

3 years ago

1.0.135

3 years ago

1.0.113

3 years ago

1.0.138

3 years ago

1.0.137

3 years ago

1.0.115

3 years ago

1.0.109

3 years ago

1.0.108

3 years ago

1.0.107

3 years ago

1.0.106

3 years ago

1.0.103

3 years ago

1.0.105

3 years ago

1.0.102

3 years ago

1.0.101

3 years ago