@logicflow/extension 2.2.0 → 2.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -0
- package/dist/index.css +1 -1
- package/dist/index.min.js +1 -1
- package/dist/index.min.js.map +1 -1
- package/es/NodeResize/node/RectResize.d.ts +0 -6
- package/es/NodeResize/node/RectResize.js +2 -11
- package/es/bpmn-elements-adapter/json2xml.d.ts +2 -1
- package/es/bpmn-elements-adapter/json2xml.js +18 -4
- package/es/bpmn-elements-adapter/xml2json.js +2 -7
- package/es/components/control/index.d.ts +1 -0
- package/es/components/control/index.js +24 -11
- package/es/components/mini-map/index.js +1 -1
- package/es/dynamic-group/model.d.ts +2 -1
- package/es/dynamic-group/model.js +28 -11
- package/es/dynamic-group/node.js +1 -0
- package/es/index.css +1 -1
- package/es/index.d.ts +1 -0
- package/es/index.js +2 -0
- package/es/insert-node-in-polyline/index.js +11 -35
- package/es/materials/curved-edge/index.js +49 -21
- package/es/materials/group/GroupNode.d.ts +0 -6
- package/es/materials/group/GroupNode.js +1 -6
- package/es/pool/LaneModel.d.ts +90 -0
- package/es/pool/LaneModel.js +252 -0
- package/es/pool/LaneView.d.ts +40 -0
- package/es/pool/LaneView.js +202 -0
- package/es/pool/PoolModel.d.ts +120 -0
- package/es/pool/PoolModel.js +586 -0
- package/es/pool/PoolView.d.ts +17 -0
- package/es/pool/PoolView.js +76 -0
- package/es/pool/constant.d.ts +15 -0
- package/es/pool/constant.js +17 -0
- package/es/pool/index.d.ts +89 -0
- package/es/pool/index.js +524 -0
- package/es/pool/utils.d.ts +19 -0
- package/es/pool/utils.js +33 -0
- package/es/style/index.css +1 -1
- package/es/style/raw.d.ts +1 -1
- package/es/style/raw.js +1 -1
- package/es/tools/label/LabelOverlay.js +3 -3
- package/es/tools/label/mediumEditor.d.ts +1 -1
- package/es/tools/label/mediumEditor.js +89 -52
- package/es/tools/snapshot/index.d.ts +7 -3
- package/es/tools/snapshot/index.js +72 -77
- package/lib/NodeResize/node/RectResize.d.ts +0 -6
- package/lib/NodeResize/node/RectResize.js +1 -10
- package/lib/bpmn-elements-adapter/json2xml.d.ts +2 -1
- package/lib/bpmn-elements-adapter/json2xml.js +19 -4
- package/lib/bpmn-elements-adapter/xml2json.js +2 -7
- package/lib/components/control/index.d.ts +1 -0
- package/lib/components/control/index.js +24 -11
- package/lib/components/mini-map/index.js +1 -1
- package/lib/dynamic-group/model.d.ts +2 -1
- package/lib/dynamic-group/model.js +28 -11
- package/lib/dynamic-group/node.js +1 -0
- package/lib/index.css +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -0
- package/lib/insert-node-in-polyline/index.js +10 -34
- package/lib/materials/curved-edge/index.js +49 -21
- package/lib/materials/group/GroupNode.d.ts +0 -6
- package/lib/materials/group/GroupNode.js +1 -6
- package/lib/pool/LaneModel.d.ts +90 -0
- package/lib/pool/LaneModel.js +255 -0
- package/lib/pool/LaneView.d.ts +40 -0
- package/lib/pool/LaneView.js +205 -0
- package/lib/pool/PoolModel.d.ts +120 -0
- package/lib/pool/PoolModel.js +589 -0
- package/lib/pool/PoolView.d.ts +17 -0
- package/lib/pool/PoolView.js +79 -0
- package/lib/pool/constant.d.ts +15 -0
- package/lib/pool/constant.js +20 -0
- package/lib/pool/index.d.ts +89 -0
- package/lib/pool/index.js +527 -0
- package/lib/pool/utils.d.ts +19 -0
- package/lib/pool/utils.js +38 -0
- package/lib/style/index.css +1 -1
- package/lib/style/raw.d.ts +1 -1
- package/lib/style/raw.js +1 -1
- package/lib/tools/label/LabelOverlay.js +2 -2
- package/lib/tools/label/mediumEditor.d.ts +1 -1
- package/lib/tools/label/mediumEditor.js +91 -53
- package/lib/tools/snapshot/index.d.ts +7 -3
- package/lib/tools/snapshot/index.js +72 -77
- package/package.json +10 -7
- package/.turbo/turbo-build.log +0 -38
- package/CHANGELOG.md +0 -1766
- package/__test__/bpmn-adapter.test.js +0 -227
- package/es/materials/curved-edge/__test__/curved-edge.test.d.ts +0 -1
- package/es/materials/curved-edge/__test__/curved-edge.test.js +0 -18
- package/jest.config.js +0 -198
- package/lib/materials/curved-edge/__test__/curved-edge.test.d.ts +0 -1
- package/lib/materials/curved-edge/__test__/curved-edge.test.js +0 -20
- package/rollup.config.js +0 -52
- package/src/NodeResize/BasicShape/Ellipse.tsx +0 -22
- package/src/NodeResize/BasicShape/Polygon.tsx +0 -24
- package/src/NodeResize/BasicShape/Rect.tsx +0 -44
- package/src/NodeResize/control/Control.tsx +0 -537
- package/src/NodeResize/control/ControlGroup.tsx +0 -76
- package/src/NodeResize/control/Util.ts +0 -206
- package/src/NodeResize/index.ts +0 -26
- package/src/NodeResize/node/DiamondResize.tsx +0 -149
- package/src/NodeResize/node/EllipseResize.tsx +0 -140
- package/src/NodeResize/node/HtmlResize.tsx +0 -125
- package/src/NodeResize/node/RectResize.tsx +0 -146
- package/src/NodeResize/node/index.ts +0 -4
- package/src/bpmn/constant.ts +0 -56
- package/src/bpmn/events/EndEvent.ts +0 -73
- package/src/bpmn/events/StartEvent.ts +0 -52
- package/src/bpmn/events/index.ts +0 -2
- package/src/bpmn/flow/SequenceFlow.ts +0 -25
- package/src/bpmn/flow/index.ts +0 -1
- package/src/bpmn/gateways/ExclusiveGateway.ts +0 -71
- package/src/bpmn/gateways/index.ts +0 -1
- package/src/bpmn/getBpmnId.ts +0 -31
- package/src/bpmn/index.ts +0 -60
- package/src/bpmn/tasks/ServiceTask.ts +0 -63
- package/src/bpmn/tasks/UserTask.ts +0 -64
- package/src/bpmn/tasks/index.ts +0 -2
- package/src/bpmn-adapter/bpmnIds.ts +0 -31
- package/src/bpmn-adapter/index.ts +0 -835
- package/src/bpmn-adapter/json2xml.ts +0 -127
- package/src/bpmn-adapter/xml2json.ts +0 -544
- package/src/bpmn-elements/README.md +0 -223
- package/src/bpmn-elements/__tests__/definition.test.js +0 -72
- package/src/bpmn-elements/index.d.ts +0 -26
- package/src/bpmn-elements/index.ts +0 -107
- package/src/bpmn-elements/presets/Event/EndEventFactory.ts +0 -114
- package/src/bpmn-elements/presets/Event/IntermediateCatchEvent.ts +0 -108
- package/src/bpmn-elements/presets/Event/IntermediateThrowEvent.ts +0 -109
- package/src/bpmn-elements/presets/Event/StartEventFactory.ts +0 -114
- package/src/bpmn-elements/presets/Event/boundaryEventFactory.ts +0 -117
- package/src/bpmn-elements/presets/Event/index.ts +0 -14
- package/src/bpmn-elements/presets/Flow/flow.d.ts +0 -6
- package/src/bpmn-elements/presets/Flow/index.ts +0 -8
- package/src/bpmn-elements/presets/Flow/manhattan.ts +0 -691
- package/src/bpmn-elements/presets/Flow/sequenceFlow.ts +0 -65
- package/src/bpmn-elements/presets/Gateway/gateway.ts +0 -107
- package/src/bpmn-elements/presets/Gateway/index.ts +0 -23
- package/src/bpmn-elements/presets/Pool/Lane.ts +0 -211
- package/src/bpmn-elements/presets/Pool/Pool.ts +0 -284
- package/src/bpmn-elements/presets/Pool/index.ts +0 -89
- package/src/bpmn-elements/presets/Task/index.ts +0 -122
- package/src/bpmn-elements/presets/Task/subProcess.ts +0 -189
- package/src/bpmn-elements/presets/Task/task.ts +0 -193
- package/src/bpmn-elements/presets/icons.ts +0 -155
- package/src/bpmn-elements/utils.ts +0 -52
- package/src/bpmn-elements-adapter/README.md +0 -293
- package/src/bpmn-elements-adapter/__tests__/adapter_in.test.js +0 -528
- package/src/bpmn-elements-adapter/__tests__/adapter_out.test.js +0 -569
- package/src/bpmn-elements-adapter/constant.ts +0 -76
- package/src/bpmn-elements-adapter/index.ts +0 -1134
- package/src/bpmn-elements-adapter/json2xml.ts +0 -91
- package/src/bpmn-elements-adapter/xml2json.ts +0 -548
- package/src/components/context-menu/index.ts +0 -253
- package/src/components/control/index.ts +0 -141
- package/src/components/dnd-panel/index.ts +0 -137
- package/src/components/highlight/index.ts +0 -227
- package/src/components/menu/index.ts +0 -748
- package/src/components/mini-map/index.ts +0 -686
- package/src/components/selection-select/index.ts +0 -387
- package/src/dynamic-group/index.ts +0 -775
- package/src/dynamic-group/model.ts +0 -562
- package/src/dynamic-group/node.ts +0 -288
- package/src/dynamic-group/utils.ts +0 -46
- package/src/index.less +0 -1
- package/src/index.ts +0 -45
- package/src/insert-node-in-polyline/edge.ts +0 -175
- package/src/insert-node-in-polyline/index.ts +0 -187
- package/src/materials/curved-edge/__test__/curved-edge.test.ts +0 -46
- package/src/materials/curved-edge/index.ts +0 -185
- package/src/materials/group/GroupNode.ts +0 -442
- package/src/materials/group/index.ts +0 -542
- package/src/materials/node-selection/index.ts +0 -380
- package/src/mindmap/fakerRoot.ts +0 -19
- package/src/mindmap/index.ts +0 -328
- package/src/mindmap/markContent.ts +0 -81
- package/src/mindmap/markContentOption.ts +0 -81
- package/src/mindmap/markEntity.ts +0 -82
- package/src/mindmap/markRoot.ts +0 -83
- package/src/mindmap/theme.ts +0 -11
- package/src/rect-label-node/RectLabelNodeView.ts +0 -33
- package/src/rect-label-node/index.ts +0 -15
- package/src/style/index.less +0 -342
- package/src/style/raw.ts +0 -295
- package/src/tools/auto-layout/index.ts +0 -282
- package/src/tools/flow-path/index.ts +0 -233
- package/src/tools/label/Label.tsx +0 -357
- package/src/tools/label/LabelModel.ts +0 -83
- package/src/tools/label/LabelOverlay.tsx +0 -158
- package/src/tools/label/algorithm.ts +0 -42
- package/src/tools/label/index.ts +0 -479
- package/src/tools/label/mediumEditor.ts +0 -94
- package/src/tools/label/utils.ts +0 -395
- package/src/tools/proximity-connect/index.ts +0 -435
- package/src/tools/snapshot/README.md +0 -145
- package/src/tools/snapshot/index.ts +0 -718
- package/src/tools/snapshot/utils.ts +0 -163
- package/src/turbo-adapter/index.ts +0 -212
- package/stats.html +0 -4842
- package/tsconfig.json +0 -18
|
@@ -51,6 +51,7 @@ export declare class DynamicGroupNodeModel extends RectNodeModel<IGroupNodePrope
|
|
|
51
51
|
isRestrict: boolean;
|
|
52
52
|
autoResize: boolean;
|
|
53
53
|
collapsible: boolean;
|
|
54
|
+
staticTextPosition: boolean;
|
|
54
55
|
expandWidth: number;
|
|
55
56
|
expandHeight: number;
|
|
56
57
|
collapsedWidth: number;
|
|
@@ -81,6 +82,7 @@ export declare class DynamicGroupNodeModel extends RectNodeModel<IGroupNodePrope
|
|
|
81
82
|
* @param collapse {boolean} true -> 折叠;false -> 展开
|
|
82
83
|
*/
|
|
83
84
|
toggleCollapse(collapse?: boolean): void;
|
|
85
|
+
setTextPosition(): void;
|
|
84
86
|
private collapse;
|
|
85
87
|
private expand;
|
|
86
88
|
createVirtualEdge(edgeConfig: EdgeConfig): void;
|
|
@@ -131,7 +133,6 @@ export declare class DynamicGroupNodeModel extends RectNodeModel<IGroupNodePrope
|
|
|
131
133
|
/**
|
|
132
134
|
* 重写 Group 节点的 Resize Outline
|
|
133
135
|
*/
|
|
134
|
-
getResizeOutlineStyle(): LogicFlow.CommonTheme;
|
|
135
136
|
getAnchorStyle(): LogicFlow.AnchorTheme;
|
|
136
137
|
/**
|
|
137
138
|
* 设置分组节点 drop 区域的样式
|
|
@@ -78,6 +78,8 @@ var DynamicGroupNodeModel = /** @class */ (function (_super) {
|
|
|
78
78
|
_this.autoResize = false;
|
|
79
79
|
// 分组节点是否可以折叠
|
|
80
80
|
_this.collapsible = true;
|
|
81
|
+
// 是否使用自定义文本位置
|
|
82
|
+
_this.staticTextPosition = true;
|
|
81
83
|
// 当前组是否收起状态
|
|
82
84
|
_this.isCollapsed = false;
|
|
83
85
|
// 当前分组是否在可添加状态 - 实时状态
|
|
@@ -112,6 +114,7 @@ var DynamicGroupNodeModel = /** @class */ (function (_super) {
|
|
|
112
114
|
this.autoResize = autoResize !== null && autoResize !== void 0 ? autoResize : false;
|
|
113
115
|
this.collapsible = collapsible !== null && collapsible !== void 0 ? collapsible : true;
|
|
114
116
|
this.autoToFront = autoToFront !== null && autoToFront !== void 0 ? autoToFront : false;
|
|
117
|
+
this.setTextPosition();
|
|
115
118
|
// 禁用掉 Group 节点的文本编辑能力
|
|
116
119
|
this.text.editable = false;
|
|
117
120
|
this.text.draggable = false;
|
|
@@ -249,29 +252,43 @@ var DynamicGroupNodeModel = /** @class */ (function (_super) {
|
|
|
249
252
|
// step 3
|
|
250
253
|
this.collapseEdge(nextCollapseState, allRelatedEdges);
|
|
251
254
|
};
|
|
255
|
+
DynamicGroupNodeModel.prototype.setTextPosition = function () {
|
|
256
|
+
var _a = this, x = _a.x, y = _a.y, staticTextPosition = _a.staticTextPosition, text = _a.text, isCollapsed = _a.isCollapsed, width = _a.width, height = _a.height, collapsedWidth = _a.collapsedWidth, collapsedHeight = _a.collapsedHeight;
|
|
257
|
+
if (staticTextPosition) {
|
|
258
|
+
text.x = x;
|
|
259
|
+
text.y = isCollapsed ? y : y - height / 2 + 15;
|
|
260
|
+
return;
|
|
261
|
+
}
|
|
262
|
+
text.x = isCollapsed
|
|
263
|
+
? x - width / 2 + collapsedWidth / 2
|
|
264
|
+
: x + width / 2 - collapsedWidth / 2;
|
|
265
|
+
text.y = isCollapsed
|
|
266
|
+
? y - height / 2 + collapsedHeight / 2
|
|
267
|
+
: y + height / 2 - collapsedHeight / 2;
|
|
268
|
+
};
|
|
252
269
|
// 折叠操作
|
|
253
270
|
DynamicGroupNodeModel.prototype.collapse = function () {
|
|
254
|
-
var _a = this, x = _a.x, y = _a.y,
|
|
271
|
+
var _a = this, x = _a.x, y = _a.y, width = _a.width, height = _a.height, collapsedWidth = _a.collapsedWidth, collapsedHeight = _a.collapsedHeight;
|
|
255
272
|
this.x = x - width / 2 + collapsedWidth / 2;
|
|
256
273
|
this.y = y - height / 2 + collapsedHeight / 2;
|
|
257
|
-
this.text.x = text.x - width / 2 + collapsedWidth / 2;
|
|
258
|
-
this.text.y = text.y - height / 2 + collapsedHeight / 2;
|
|
259
274
|
// 记录折叠前的节点大小,并将其记录到 expandWidth 中
|
|
260
275
|
this.expandWidth = width;
|
|
261
276
|
this.expandHeight = height;
|
|
262
277
|
this.width = collapsedWidth;
|
|
263
278
|
this.height = collapsedHeight;
|
|
279
|
+
// 设置文本位置
|
|
280
|
+
this.setTextPosition();
|
|
264
281
|
};
|
|
265
282
|
// 展开操作
|
|
266
283
|
DynamicGroupNodeModel.prototype.expand = function () {
|
|
267
|
-
var _a = this, x = _a.x, y = _a.y,
|
|
284
|
+
var _a = this, x = _a.x, y = _a.y, expandWidth = _a.expandWidth, expandHeight = _a.expandHeight, collapsedWidth = _a.collapsedWidth, collapsedHeight = _a.collapsedHeight;
|
|
268
285
|
this.width = expandWidth;
|
|
269
286
|
this.height = expandHeight;
|
|
270
287
|
// 重新计算节点及文本的坐标
|
|
271
288
|
this.x = x + this.width / 2 - collapsedWidth / 2;
|
|
272
289
|
this.y = y + this.height / 2 - collapsedHeight / 2;
|
|
273
|
-
|
|
274
|
-
this.
|
|
290
|
+
// 设置文本位置
|
|
291
|
+
this.setTextPosition();
|
|
275
292
|
};
|
|
276
293
|
DynamicGroupNodeModel.prototype.createVirtualEdge = function (edgeConfig) {
|
|
277
294
|
edgeConfig.pointsList = undefined;
|
|
@@ -413,11 +430,11 @@ var DynamicGroupNodeModel = /** @class */ (function (_super) {
|
|
|
413
430
|
/**
|
|
414
431
|
* 重写 Group 节点的 Resize Outline
|
|
415
432
|
*/
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
}
|
|
433
|
+
// getResizeOutlineStyle(): LogicFlow.CommonTheme {
|
|
434
|
+
// const style = super.getResizeOutlineStyle()
|
|
435
|
+
// // style.stroke = 'none'
|
|
436
|
+
// return style
|
|
437
|
+
// }
|
|
421
438
|
// TODO: 是否是设置 group 节点没有锚点,而不是设置成透明???
|
|
422
439
|
DynamicGroupNodeModel.prototype.getAnchorStyle = function () {
|
|
423
440
|
var style = _super.prototype.getAnchorStyle.call(this);
|
|
@@ -95,6 +95,7 @@ var DynamicGroupNode = /** @class */ (function (_super) {
|
|
|
95
95
|
var newPoint = (0, utils_1.rotatePointAroundCenter)(point, center_1, radian);
|
|
96
96
|
child.moveTo(newPoint.x, newPoint.y);
|
|
97
97
|
child.rotate = model.rotate;
|
|
98
|
+
console.log('childInfo', child);
|
|
98
99
|
}
|
|
99
100
|
});
|
|
100
101
|
}
|
package/lib/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
.medium-editor-anchor-preview,.medium-editor-toolbar{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:16px;z-index:2000}@-webkit-keyframes medium-editor-image-loading{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes medium-editor-image-loading{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes medium-editor-pop-upwards{0%{opacity:0;-webkit-transform:matrix(.97,0,0,1,0,12);transform:matrix(.97,0,0,1,0,12)}20%{opacity:.7;-webkit-transform:matrix(.99,0,0,1,0,2);transform:matrix(.99,0,0,1,0,2)}40%{opacity:1;-webkit-transform:matrix(1,0,0,1,0,-1);transform:matrix(1,0,0,1,0,-1)}to{-webkit-transform:matrix(1,0,0,1,0,0);transform:matrix(1,0,0,1,0,0)}}@keyframes medium-editor-pop-upwards{0%{opacity:0;-webkit-transform:matrix(.97,0,0,1,0,12);transform:matrix(.97,0,0,1,0,12)}20%{opacity:.7;-webkit-transform:matrix(.99,0,0,1,0,2);transform:matrix(.99,0,0,1,0,2)}40%{opacity:1;-webkit-transform:matrix(1,0,0,1,0,-1);transform:matrix(1,0,0,1,0,-1)}to{-webkit-transform:matrix(1,0,0,1,0,0);transform:matrix(1,0,0,1,0,0)}}.medium-editor-anchor-preview{word-wrap:break-word;left:0;line-height:1.4;max-width:280px;position:absolute;text-align:center;top:0;visibility:hidden;word-break:break-all}.medium-editor-anchor-preview a{color:#fff;display:inline-block;margin:5px 5px 10px}.medium-editor-placeholder-relative:after,.medium-editor-placeholder:after{content:attr(data-placeholder)!important;font-style:italic;margin:inherit;padding:inherit;white-space:pre}.medium-editor-anchor-preview-active{visibility:visible}.medium-editor-dragover{background:#ddd}.medium-editor-image-loading{-webkit-animation:medium-editor-image-loading 1s ease-in-out infinite;animation:medium-editor-image-loading 1s ease-in-out infinite;background-color:#333;border-radius:100%;display:inline-block;height:40px;width:40px}.medium-editor-placeholder{position:relative}.medium-editor-placeholder:after{left:0;position:absolute;top:0}.medium-editor-placeholder-relative,.medium-editor-placeholder-relative:after{position:relative}.medium-toolbar-arrow-over:before,.medium-toolbar-arrow-under:after{border-style:solid;content:"";display:block;height:0;left:50%;margin-left:-8px;position:absolute;width:0}.medium-toolbar-arrow-under:after{border-width:8px 8px 0}.medium-toolbar-arrow-over:before{border-width:0 8px 8px;top:-8px}.medium-editor-toolbar{left:0;position:absolute;top:0;visibility:hidden}.medium-editor-toolbar ul{margin:0;padding:0}.medium-editor-toolbar li{float:left;list-style:none;margin:0;padding:0}.medium-editor-toolbar li button{cursor:pointer;display:block;font-size:14px;line-height:1.33;margin:0;padding:15px;text-decoration:none}.medium-editor-toolbar li button:focus{outline:0}.medium-editor-toolbar li .medium-editor-action-underline{text-decoration:underline}.medium-editor-toolbar li .medium-editor-action-pre{font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px;font-weight:100;padding:15px 0}.medium-editor-toolbar-active{visibility:visible}.medium-editor-sticky-toolbar{position:fixed;top:1px}.medium-editor-relative-toolbar{position:relative}.medium-editor-toolbar-active.medium-editor-stalker-toolbar{-webkit-animation:medium-editor-pop-upwards .16s linear forwards;animation:medium-editor-pop-upwards .16s linear forwards}.medium-editor-action-bold{font-weight:bolder}.medium-editor-action-italic{font-style:italic}.medium-editor-toolbar-form{display:none}.medium-editor-toolbar-form a,.medium-editor-toolbar-form input{font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.medium-editor-toolbar-form .medium-editor-toolbar-form-row{line-height:14px;margin-left:5px;padding-bottom:5px}.medium-editor-toolbar-form .medium-editor-toolbar-input,.medium-editor-toolbar-form label{border:none;box-sizing:border-box;display:inline-block;font-size:14px;margin:0;padding:6px;width:316px}.medium-editor-toolbar-form .medium-editor-toolbar-input:focus,.medium-editor-toolbar-form label:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;box-shadow:none;outline:0}.medium-editor-toolbar-form a{display:inline-block;font-size:24px;font-weight:bolder;margin:0 10px;text-decoration:none}.medium-editor-toolbar-form-active{display:block}.medium-editor-toolbar-actions:after{clear:both;content:"";display:table}.medium-editor-element{word-wrap:break-word;min-height:30px}.medium-editor-element img{max-width:100%}.medium-editor-element sub{vertical-align:sub}.medium-editor-element sup{vertical-align:super}.medium-editor-hidden{display:none}.medium-toolbar-arrow-under:after{border-color:#000 transparent transparent;top:40px}.medium-toolbar-arrow-over:before{border-color:transparent transparent #000}.medium-editor-toolbar{background-color:#000;border:none;border-radius:50px}.medium-editor-toolbar li button{background-color:transparent;border:none;box-sizing:border-box;color:#ccc;height:40px;min-width:40px;padding:5px 12px;-webkit-transition:background-color .2s ease-in,color .2s ease-in;transition:background-color .2s ease-in,color .2s ease-in}.medium-editor-toolbar li .medium-editor-button-active,.medium-editor-toolbar li button:hover{background-color:#000;color:#a2d7c7}.medium-editor-toolbar li .medium-editor-button-first{border-bottom-left-radius:50px;border-top-left-radius:50px;padding-left:24px}.medium-editor-toolbar li .medium-editor-button-last{border-bottom-right-radius:50px;border-right:none;border-top-right-radius:50px;padding-right:24px}.medium-editor-toolbar-form{background:#000;border-radius:50px;color:#ccc;overflow:hidden}.medium-editor-toolbar-form .medium-editor-toolbar-input{background:#000;box-sizing:border-box;color:#ccc;height:40px;padding-left:16px;width:220px}.medium-editor-toolbar-form .medium-editor-toolbar-input::-webkit-input-placeholder{color:#f8f5f3;color:hsla(24,26%,96%,.8)}.medium-editor-toolbar-form .medium-editor-toolbar-input:-moz-placeholder,.medium-editor-toolbar-form .medium-editor-toolbar-input::-moz-placeholder{color:#f8f5f3;color:hsla(24,26%,96%,.8)}.medium-editor-toolbar-form .medium-editor-toolbar-input:-ms-input-placeholder{color:#f8f5f3;color:hsla(24,26%,96%,.8)}.medium-editor-toolbar-form a{color:#ccc;-webkit-transform:translateY(2px);transform:translateY(2px)}.medium-editor-toolbar-form .medium-editor-toolbar-close{margin-right:16px}.medium-editor-toolbar-anchor-preview{background:#000;border-radius:50px;padding:5px 12px}.medium-editor-anchor-preview a{color:#ccc;text-decoration:none}.medium-editor-toolbar-actions button,.medium-editor-toolbar-actions li{border-radius:50px}.picker_wrapper.no_alpha .picker_alpha{display:none}.picker_wrapper.no_editor .picker_editor{opacity:0;position:absolute;z-index:-1}.picker_wrapper.no_cancel .picker_cancel{display:none}.layout_default.picker_wrapper{align-items:stretch;display:flex;flex-flow:row wrap;font-size:10px;justify-content:space-between;padding:.5em;width:25em}.layout_default.picker_wrapper button,.layout_default.picker_wrapper input{font-size:1rem}.layout_default.picker_wrapper>*{margin:.5em}.layout_default.picker_wrapper:before{content:"";display:block;height:0;order:1;width:100%}.layout_default .picker_selector,.layout_default .picker_slider{padding:1em}.layout_default .picker_hue{width:100%}.layout_default .picker_sl{flex:1 1 auto}.layout_default .picker_sl:before{content:"";display:block;padding-bottom:100%}.layout_default .picker_editor{order:1;width:6.5rem}.layout_default .picker_editor input{height:100%;width:100%}.layout_default .picker_sample{flex:1 1 auto;order:1}.layout_default .picker_cancel,.layout_default .picker_done{order:1}.picker_wrapper{background:#f2f2f2;box-shadow:0 0 0 1px silver;box-sizing:border-box;color:#444;cursor:default;font-family:sans-serif;pointer-events:auto}.picker_wrapper:focus{outline:none}.picker_wrapper button,.picker_wrapper input{border:none;box-shadow:0 0 0 1px silver;box-sizing:border-box;outline:none}.picker_wrapper button:active,.picker_wrapper button:focus,.picker_wrapper input:active,.picker_wrapper input:focus{box-shadow:0 0 2px 1px #1e90ff}.picker_wrapper button{background-color:#f5f5f5;background-image:linear-gradient(0deg,#dcdcdc,transparent);cursor:pointer;padding:.4em .6em}.picker_wrapper button:active{background-image:linear-gradient(0deg,transparent,#dcdcdc)}.picker_wrapper button:hover{background-color:#fff}.picker_selector{background:currentColor;border:2px solid #fff;border-radius:100%;box-shadow:0 0 3px 1px #67b9ff;cursor:pointer;display:block;position:absolute;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:1}.picker_slider .picker_selector{border-radius:2px}.picker_hue{background-image:linear-gradient(90deg,red,#ff0,lime,cyan,blue,#f0f,red)}.picker_hue,.picker_sl{box-shadow:0 0 0 1px silver;position:relative}.picker_sl{background-image:linear-gradient(180deg,#fff,hsla(0,0%,100%,0) 50%),linear-gradient(0deg,#000,transparent 50%),linear-gradient(90deg,grey,hsla(0,0%,50%,0))}.picker_alpha,.picker_sample{background:linear-gradient(45deg,#d3d3d3 25%,transparent 0,transparent 75%,#d3d3d3 0) 0 0/2em 2em,linear-gradient(45deg,#d3d3d3 25%,#fff 0,#fff 75%,#d3d3d3 0) 1em 1em/2em 2em;box-shadow:0 0 0 1px silver;position:relative}.picker_alpha .picker_selector,.picker_sample .picker_selector{background:none}.picker_editor input{font-family:monospace;padding:.2em .4em}.picker_sample:before{background:currentColor;content:"";display:block;height:100%;position:absolute;width:100%}.picker_arrow{position:absolute;z-index:-1}.picker_wrapper.popup{margin:1.5em;position:absolute;z-index:2}.picker_wrapper.popup,.picker_wrapper.popup .picker_arrow:after,.picker_wrapper.popup .picker_arrow:before{background:#f2f2f2;box-shadow:0 0 10px 1px rgba(0,0,0,.4)}.picker_wrapper.popup .picker_arrow{height:3em;margin:0;width:3em}.picker_wrapper.popup .picker_arrow:after,.picker_wrapper.popup .picker_arrow:before{content:"";display:block;left:0;position:absolute;top:0;z-index:-99}.picker_wrapper.popup .picker_arrow:before{height:100%;-webkit-transform:skew(45deg);transform:skew(45deg);-webkit-transform-origin:0 100%;transform-origin:0 100%;width:100%}.picker_wrapper.popup .picker_arrow:after{box-shadow:none;height:150%;width:150%}.popup.popup_top{bottom:100%;left:0}.popup.popup_top .picker_arrow{bottom:0;left:0;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.popup.popup_bottom{left:0;top:100%}.popup.popup_bottom .picker_arrow{left:0;top:0;-webkit-transform:rotate(90deg) scaleY(-1);transform:rotate(90deg) scaleY(-1)}.popup.popup_left{right:100%;top:0}.popup.popup_left .picker_arrow{right:0;top:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}.popup.popup_right{left:100%;top:0}.popup.popup_right .picker_arrow{left:0;top:0}.lf-label-overlay{height:0;overflow:visible;width:0}.lf-label-overlay .lf-label-editor{background:#fff;border-radius:5px;padding:4px}.lf-label-overlay .lf-label-editor-container{align-items:center;display:flex;justify-content:center;overflow:visible;position:absolute;text-align:center}.lf-label-overlay .lf-label-editor-container p{margin:0}.lf-label-overlay .lf-label-editor-dragging{cursor:move}.lf-label-overlay .lf-label-editor-editing{cursor:text;outline:2px solid #275dc5}.lf-label-overlay .lf-label-editor-hover{outline:2px dashed #acacac}.lf-label-overlay .lf-label-editor-clip{overflow:hidden;text-overflow:clip;white-space:nowrap;width:100px}.lf-label-overlay .lf-label-editor-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100px}.lf-label-overlay .lf-label-editor-wrap{overflow-wrap:break-word;white-space:normal}.lf-label-overlay .lf-label-editor-nowrap{overflow:visible;white-space:nowrap}.lf-control{background:hsla(0,0%,100%,.8);border-radius:5px;box-shadow:0 1px 4px rgba(0,0,0,.3);display:flex;margin:5px;padding:0 15px;position:absolute;right:10px;top:0}.lf-control-item{align-items:center;cursor:pointer;display:flex;flex-direction:column;justify-content:center;padding:5px 10px}.lf-control-item:hover{background:#efefef}.lf-control-item.disabled{filter:opacity(.5);pointer-events:none}.lf-control-item.disabled:hover{background:#fff}.lf-control-item.disabled i{pointer-events:none}.lf-control-item i{background-size:cover;display:inline-block;height:20px;vertical-align:middle;width:20px}.lf-control-text{font-size:12px;margin-top:5px}.lf-control-zoomOut{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAFMElEQVR4Xu3dsQ3CQBBFQei/KEoDXQG2xAv9h3yDnb0nh7xffgQIXAq82RAgcC0gEK+DwI2AQDwPAgLxBgg0AV+Q5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCAhk5NDWbAICaW6mRgQEMnJoazYBgTQ3UyMCAhk5tDWbgECam6kRAYGMHNqaTUAgzc3UiIBARg5tzSYgkOZmakRAICOHtmYTEEhzMzUiIJCRQ1uzCQikuZkaERDIyKGt2QQE0txMjQgIZOTQ1mwCAmlupkYEBDJyaGs2AYE0N1MjAgIZObQ1m4BAmpupEQGBjBzamk1AIM3N1IiAQEYObc0mIJDmZmpEQCAjh7ZmExBIczM1IiCQkUNbswkIpLmZGhEQyMihrdkEBNLcTI0ICGTk0NZsAgJpbqZGBAQycmhrNgGBNDdTIwICGTm0NZuAQJqbqREBgYwc2ppNQCDNzdSIgEBGDm3NJiCQ5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCAhk5NDWbAICaW6mRgQEMnJoazYBgTQ3UyMCAhk5tDWbgECam6kRAYGMHNqaTUAgzc3UiIBARg5tzSYgkOZmakRAICOHtmYTEEhzMzUiIJCRQ1uzCQikuZkaERDIyKGt2QQE0txMjQgIZOTQ1mwCAmlupkYEBDJyaGs2AYE0N1MjAgIZObQ1m4BAmpupEQGBjBzamk3gBPJpo6YIPF/gBPJ9/po2JNAEBNLcTI0ICGTk0NZsAgJpbqZGBAQycmhrNgGBNDdTIwICGTm0NZuAQJqbqREBgYwc2ppNQCDNzdSIgEBGDm3NJiCQ5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCAhk5NDWbAICaW6mRgQEMnJoazYBgTQ3UyMCAhk5tDWbgECam6kRAYGMHNqaTUAgzc3UiIBARg5tzSYgkOZmakRAICOHtmYTEEhzMzUiIJCRQ1uzCQikuZkaETiB+AOdkWNb83+BE4gfAQIXAgLxNAjcCAjE8yAgEG+AQBPwBWlupkYEBDJyaGs2AYE0N1MjAgIZObQ1m4BAmpupEQGBjBzamk1AIM3N1IiAQEYObc0mIJDmZmpEQCAjh7ZmExBIczM1IiCQkUNbswkIpLmZGhEQyMihrdkEBNLcTI0ICGTk0NZsAgJpbqZGBAQycmhrNgGBNDdTIwICGTm0NZuAQJqbqREBgYwc2ppNQCDNzdSIgEBGDm3NJiCQ5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCAhk5NDWbAICaW6mRgQEMnJoazYBgTQ3UyMCAhk5tDWbgECam6kRAYGMHNqaTUAgzc3UiIBARg5tzSYgkOZmakRAICOHtmYTEEhzMzUiIJCRQ1uzCQikuZkaERDIyKGt2QQE0txMjQgIZOTQ1mwCAmlupkYEBDJyaGs2AYE0N1MjAgIZObQ1m4BAmpupEQGBjBzamk1AIM3N1IiAQEYObc0mIJDmZmpEQCAjh7ZmExBIczM1IiCQkUNbswkIpLmZGhEQyMihrdkEBNLcTI0ICGTk0NZsAgJpbqZGBAQycmhrNgGBNDdTIwICGTm0NZuAQJqbqREBgYwc2ppNQCDNzdSIgEBGDm3NJiCQ5mZqREAgI4e2ZhMQSHMzNSIgkJFDW7MJCKS5mRoREMjIoa3ZBATS3EyNCPwAiAUiJ9hUCCUAAAAASUVORK5CYII=")}.lf-control-zoomIn{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAGr0lEQVR4Xu3dsW3cABQEUaoIN+F6DDfpJlSFm1ARMi53JAywwse7nHP8s5iYb49faeDP8zy/SuAXWK93+P2F5zzyHwNvrKQGBJLq3MME0m4gkNbnnCaQdgKBtD7nNIG0Ewik9TmnCaSdQCCtzzlNIO0EAml9zmkCaScQSOtzThNIO4FAWp9zmkDaCQTS+pzTBNJOIJDW55wmkHYCgbQ+5zSBtBMIpPU5pwmknUAgrc85TSDtBAJpfc5pAmknEEjrc04TSDuBQFqfc5pA2gkE0vqc0wTSTiCQ1uecJpB2AoG0Puc0gbQTCKT1OacJpJ1AIK3POU0g7QQCaX3OaQJpJxBI63NOE0g7gUBan3OaQNoJBNL6nNME0k4gkNbnnCaQdgKBtD7nNIG0Ewik9TmnCaSdQCCtzzlNIO0EAml9zmkCaScQSOtzThNIO4FAWp9zmkDaCQTS+pzTBNJOIJDW55wmkHYCgbQ+5zSBtBMIpPU5pwmknUAgrc85TSDtBAJpfc5pAmknEEjrc04TSDuBQFqfc5pA2gkE0vqc0wTSTiCQ1uecJpB2AoG0Puc0gbQTCKT1OacJpJ1AIK3POU0g7QQCaX3OaQJpJxBI63NOE0g7gUBan3OaQNoJBNL6nNME0k4gkNbnnCaQdgKBtD7nNIG0Ewik9TmnCaSdQCCtzzlNIO0EAml9zmkCaScQSOtzThNIO4FAWp9zmkDaCQTS+pzTBNJOIJDW55wmkHYCgbQ+5zSBtBMIpPU5pwmknUAgrc85TSDtBAJpfc5pAmknEEjrc04TSDuBQFqfc5pA2gkE0vqc0wTSTiCQ1uecJpB2AoG0Puc0gbQTCKT1OacJpJ1AIK3POU0g7QQCaX3OaQJpJxBI63NOE0g7gUBan3OaQNoJBNL6nNME0k4gkNbnnCaQdgKBtD7nNIG0Ewik9TmnCaSdQCCtzzlNIO0EAml9zmkCaScQSOtzThNIO4FAWp9zmkDaCQTS+pzTBNJOIJDW55z2CuR9/hZ3XuDn8zw/xud8PM/zd/wOZ/7+FcjnmWscwkBsQCCxULhbBgRya0/XxAYEEguFu2VAILf2dE1sQCCxULhbBgRya0/XxAYEEguFu2VAILf2dE1sQCCxULhbBgRya0/XxAYEEguFu2VAILf2dE1sQCCxULhbBgRya0/XxAYEEguFu2VAILf2dE1sQCCxULhbBgRya0/XxAYEEguFu2VAILf2dE1sQCCxULhbBgRya0/XxAYEEguFu2VAILf2dE1sQCCxULhbBgRya0/XxAYEEguFu2VAILf2dE1sQCCxULhbBgRya0/XxAYEEguFu2XgFYgP6HSb+oBO5/JbkF6B+HUGfIKtc/ktSAJpZxBI63NOE0g7gUBan3OaQNoJBNL6nNME0k4gkNbnnCaQdgKBtD7nNIG0Ewik9TmnCaSdQCCtzzlNIO0EAml9zmkCaScQSOtzThNIO4FAWp9zmkDaCQTS+pzTBNJOIJDW55wmkHYCgbQ+5zSBtBMIpPU5pwmknUAgrc85TSDtBAJpfc5pAmknEEjrc04TSDuBQFqfc5pA2gkE0vqc0wTSTiCQ1uecJpB2AoG0Puc0gbQTCKT1OacJpJ1AIK3POU0g7QQCaX3OaQJpJxBI63NOE0g7gUBan3OaQNoJBNL6nNME0k4gkNbnnCaQdgKBtD7nNIG0Ewik9TmnCaSdQCCtzzlNIO0EAml9zmkCaScQSOtzThNIO4FAWp9zmkDaCQTS+pzTBNJOIJDW55wmkHYCgbQ+5zSBtBMIpPU5pwmknUAgrc85TSDtBAJpfc5pAmknEEjrc04TSDuBQFqfc5pA2gkE0vqc0wTSTiCQ1uecJpB2AoG0Puc0gbQTCKT1OacJpJ1AIK3POU0g7QQCaX3OaQJpJxBI63NOE0g7gUBan3OaQNoJBNL6nNME0k4gkNbnnCaQdgKBtD7nNIG0Ewik9TmnCaSdQCCtzzlNIO0EAml9zmkCaScQSOtzThNIO4FAWp9zmkDaCQTS+pzTBNJOIJDW55wmkHYCgbQ+5zSBtBMIpPU5pwmknUAgrc85TSDtBAJpfc5pAmknEEjrc04TSDuBQFqfc5pA2gkE0vqc0wTSTiCQ1uecJpB2AoG0Puc0gbQTCKT1OacJpJ1AIK3POU0g7QQCaX3OaQJpJxBI63NOE0g7gUBan3OaQNoJBNL6nNME0k4gkNbnnCaQdgKBtD7nNIG0Ewik9TmnCaSdQCCtzzlNIO0EAml9zmkCaScQSOtzThNIO4FAWp9z2j95TXI4rwKcnQAAAABJRU5ErkJggg==")}.lf-control-fit{background-image:url("data:image/png;base64,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")}.lf-control-undo{background-image:url("data:image/png;base64,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")}.lf-control-redo{background-image:url("data:image/png;base64,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")}.lf-menu{background:#fff;border:1px solid #efefee;border-radius:3px;display:none;margin:0 0 0 10px;padding:10px 0;position:absolute;width:150px;z-index:999}.lf-menu>li{cursor:pointer;font-size:12px;line-height:18px;list-style:none;padding:3px 12px;position:relative;transition:all .12s ease-in-out}.lf-menu-item{align-items:center;display:flex;gap:4px;justify-content:flex-start;list-style:none}.lf-menu-item:hover{background:#f3f3f3}.lf-menu-item__disabled{color:#aaa;cursor:not-allowed!important;opacity:.88;pointer-events:inherit!important}.lf-menu-item__disabled:hover{background:#fff}.lf-dndpanel{background:hsla(0,0%,100%,.8);border-radius:5px;box-shadow:0 1px 4px rgba(0,0,0,.3);margin:5px;padding:15px 5px;position:absolute;z-index:999}.lf-dnd-item{font-size:14px;margin-top:5px;text-align:center}.lf-dnd-item.disabled>div{color:#a8abb2;cursor:not-allowed}.lf-dnd-shape{background-position:50%;background-repeat:no-repeat;cursor:grab;height:36px;margin:0 auto;opacity:.99;width:36px}.lf-selection-select{border:2px dashed #ff8c00;position:absolute}.lf-mini-map{background:#eaedf2;border:1px solid #93a3b4;overflow:hidden;padding:28px 8px 8px;position:absolute}.lf-mini-map .lf-graph{height:100%!important;width:100%!important}.lf-mini-map-graph{overflow:hidden;position:relative}.lf-minimap-viewport{background-color:rgba(48,48,48,.2);cursor:grab;left:0;position:absolute;top:0}.lf-mini-map-header{background-color:#a6a6a6;background-image:linear-gradient(180deg,#b2b2b2,#9b9b9b);border-bottom:1px solid #999;border-top:1px solid #999;border-color:#bfbfbf #999 #666;border-style:solid;border-width:1px;height:18px;left:0;line-height:18px;padding:0 10px;position:absolute;right:0;text-shadow:0 1px 0 hsla(0,0%,100%,.33);top:0}.lf-mini-map-close{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACL0lEQVRoQ+1YT2vUQBT/vS+Smc3u0ZtfwA+hUKEttIIVbMEWrGAL3UItqKCCCipooS3Ynu29ePfqLcnO5Nov0NsrWbc0myxtJpNmGZw9LZk37/3+vCTzQnD8R47jhycwbQe9A94BSwV8C1kKaL3dO2AtoWWC/8+BMJB9ItwHcM6MX0mqtm1EzOU7Y8bvJFV9k3zGDnSFPAVw76oIb8ZavzIpehnbE+Ilg/J7/8Za3THJVYfAHwB3x4owXsSpemNSuCs6zwEu7rl9AmEgt4hQspkIa5FS76uQCKV8RoxSLDP6pi1p7EAGsCvEBkA7ZbC0EuvBp+tI9IR4yqBSDIE3Iq13qwiQj6lFYEgikOsgvC4VJDyJlfo6CUg3kI9BmLBG67EevDUFn8XXJpBt7km5yox3xcIMfpRo/SN/PZRygRhj17J1JqwmSn2oA96awL926iwD/LEIgJjmo3RwMCQadGaZePh/3H5ejrT+XBd8IwSGJKRcAuPLhHZ6mIkMxlFpjbEUp+qbDfjGCGSJQiEWCfS9CiAmLCZK7VWJvSnG6h4oJu8FnTkm3r+uKDHNReng8CZgVdcbJTBqpxkwfk4EQJiJlTquCq5KnCeQV8npFnL6Jnb6Mer0i8zpo4TThzmnj9OjGXardDBrZqDZbmMmdnukdH6oL3xWOTG1vNh6oxn7AYB2PqtUOWC1GdP4Ya5N8I0ONG0Dv6znHZiW8t6BaSvvHfAONKSAf4w2JGTtNBey0xBAkjSEzwAAAABJRU5ErkJggg==");background-size:contain;cursor:pointer;height:18px;position:absolute;right:2px;top:0;width:18px}.lf-mini-map-no-header{padding-top:8px}.lf-mini-map-no-close-icon .lf-mini-map-close,.lf-mini-map-no-header .lf-mini-map-header{display:none}.lf-resize-control-0{cursor:nw-resize}.lf-resize-control-1{cursor:ne-resize}.lf-resize-control-2{cursor:se-resize}.lf-resize-control-3{cursor:sw-resize}.lf-inner-context{display:none;flex-flow:column wrap;height:90px;position:absolute}.lf-context-item{box-sizing:content-box;height:20px;margin:0 2px 2px 0;padding:2px 3px;width:20px}.lf-context-item:hover{background:rgba(201,217,216,.5)}.lf-context-img{cursor:pointer;height:20px;width:20px}.lf-mindmap_addIcon{margin-top:10px}
|
|
1
|
+
.medium-editor-anchor-preview,.medium-editor-toolbar{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:16px;z-index:2000}@-webkit-keyframes medium-editor-image-loading{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes medium-editor-image-loading{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes medium-editor-pop-upwards{0%{opacity:0;-webkit-transform:matrix(.97,0,0,1,0,12);transform:matrix(.97,0,0,1,0,12)}20%{opacity:.7;-webkit-transform:matrix(.99,0,0,1,0,2);transform:matrix(.99,0,0,1,0,2)}40%{opacity:1;-webkit-transform:matrix(1,0,0,1,0,-1);transform:matrix(1,0,0,1,0,-1)}to{-webkit-transform:matrix(1,0,0,1,0,0);transform:matrix(1,0,0,1,0,0)}}@keyframes medium-editor-pop-upwards{0%{opacity:0;-webkit-transform:matrix(.97,0,0,1,0,12);transform:matrix(.97,0,0,1,0,12)}20%{opacity:.7;-webkit-transform:matrix(.99,0,0,1,0,2);transform:matrix(.99,0,0,1,0,2)}40%{opacity:1;-webkit-transform:matrix(1,0,0,1,0,-1);transform:matrix(1,0,0,1,0,-1)}to{-webkit-transform:matrix(1,0,0,1,0,0);transform:matrix(1,0,0,1,0,0)}}.medium-editor-anchor-preview{word-wrap:break-word;left:0;line-height:1.4;max-width:280px;position:absolute;text-align:center;top:0;visibility:hidden;word-break:break-all}.medium-editor-anchor-preview a{color:#fff;display:inline-block;margin:5px 5px 10px}.medium-editor-placeholder-relative:after,.medium-editor-placeholder:after{content:attr(data-placeholder)!important;font-style:italic;margin:inherit;padding:inherit;white-space:pre}.medium-editor-anchor-preview-active{visibility:visible}.medium-editor-dragover{background:#ddd}.medium-editor-image-loading{-webkit-animation:medium-editor-image-loading 1s ease-in-out infinite;animation:medium-editor-image-loading 1s ease-in-out infinite;background-color:#333;border-radius:100%;display:inline-block;height:40px;width:40px}.medium-editor-placeholder{position:relative}.medium-editor-placeholder:after{left:0;position:absolute;top:0}.medium-editor-placeholder-relative,.medium-editor-placeholder-relative:after{position:relative}.medium-toolbar-arrow-over:before,.medium-toolbar-arrow-under:after{border-style:solid;content:"";display:block;height:0;left:50%;margin-left:-8px;position:absolute;width:0}.medium-toolbar-arrow-under:after{border-width:8px 8px 0}.medium-toolbar-arrow-over:before{border-width:0 8px 8px;top:-8px}.medium-editor-toolbar{left:0;position:absolute;top:0;visibility:hidden}.medium-editor-toolbar ul{margin:0;padding:0}.medium-editor-toolbar li{float:left;list-style:none;margin:0;padding:0}.medium-editor-toolbar li button{cursor:pointer;display:block;font-size:14px;line-height:1.33;margin:0;padding:15px;text-decoration:none}.medium-editor-toolbar li button:focus{outline:0}.medium-editor-toolbar li .medium-editor-action-underline{text-decoration:underline}.medium-editor-toolbar li .medium-editor-action-pre{font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px;font-weight:100;padding:15px 0}.medium-editor-toolbar-active{visibility:visible}.medium-editor-sticky-toolbar{position:fixed;top:1px}.medium-editor-relative-toolbar{position:relative}.medium-editor-toolbar-active.medium-editor-stalker-toolbar{-webkit-animation:medium-editor-pop-upwards .16s linear forwards;animation:medium-editor-pop-upwards .16s linear forwards}.medium-editor-action-bold{font-weight:bolder}.medium-editor-action-italic{font-style:italic}.medium-editor-toolbar-form{display:none}.medium-editor-toolbar-form a,.medium-editor-toolbar-form input{font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.medium-editor-toolbar-form .medium-editor-toolbar-form-row{line-height:14px;margin-left:5px;padding-bottom:5px}.medium-editor-toolbar-form .medium-editor-toolbar-input,.medium-editor-toolbar-form label{border:none;box-sizing:border-box;display:inline-block;font-size:14px;margin:0;padding:6px;width:316px}.medium-editor-toolbar-form .medium-editor-toolbar-input:focus,.medium-editor-toolbar-form label:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;box-shadow:none;outline:0}.medium-editor-toolbar-form a{display:inline-block;font-size:24px;font-weight:bolder;margin:0 10px;text-decoration:none}.medium-editor-toolbar-form-active{display:block}.medium-editor-toolbar-actions:after{clear:both;content:"";display:table}.medium-editor-element{word-wrap:break-word;min-height:30px}.medium-editor-element img{max-width:100%}.medium-editor-element sub{vertical-align:sub}.medium-editor-element sup{vertical-align:super}.medium-editor-hidden{display:none}.medium-toolbar-arrow-under:after{border-color:#000 transparent transparent;top:40px}.medium-toolbar-arrow-over:before{border-color:transparent transparent #000}.medium-editor-toolbar{background-color:#000;border:none;border-radius:50px}.medium-editor-toolbar li button{background-color:transparent;border:none;box-sizing:border-box;color:#ccc;height:40px;min-width:40px;padding:5px 12px;-webkit-transition:background-color .2s ease-in,color .2s ease-in;transition:background-color .2s ease-in,color .2s ease-in}.medium-editor-toolbar li .medium-editor-button-active,.medium-editor-toolbar li button:hover{background-color:#000;color:#a2d7c7}.medium-editor-toolbar li .medium-editor-button-first{border-bottom-left-radius:50px;border-top-left-radius:50px;padding-left:24px}.medium-editor-toolbar li .medium-editor-button-last{border-bottom-right-radius:50px;border-right:none;border-top-right-radius:50px;padding-right:24px}.medium-editor-toolbar-form{background:#000;border-radius:50px;color:#ccc;overflow:hidden}.medium-editor-toolbar-form .medium-editor-toolbar-input{background:#000;box-sizing:border-box;color:#ccc;height:40px;padding-left:16px;width:220px}.medium-editor-toolbar-form .medium-editor-toolbar-input::-webkit-input-placeholder{color:#f8f5f3;color:hsla(24,26%,96%,.8)}.medium-editor-toolbar-form .medium-editor-toolbar-input:-moz-placeholder,.medium-editor-toolbar-form .medium-editor-toolbar-input::-moz-placeholder{color:#f8f5f3;color:hsla(24,26%,96%,.8)}.medium-editor-toolbar-form .medium-editor-toolbar-input:-ms-input-placeholder{color:#f8f5f3;color:hsla(24,26%,96%,.8)}.medium-editor-toolbar-form a{color:#ccc;-webkit-transform:translateY(2px);transform:translateY(2px)}.medium-editor-toolbar-form .medium-editor-toolbar-close{margin-right:16px}.medium-editor-toolbar-anchor-preview{background:#000;border-radius:50px;padding:5px 12px}.medium-editor-anchor-preview a{color:#ccc;text-decoration:none}.medium-editor-toolbar-actions button,.medium-editor-toolbar-actions li{border-radius:50px}.picker_wrapper.no_alpha .picker_alpha{display:none}.picker_wrapper.no_editor .picker_editor{opacity:0;position:absolute;z-index:-1}.picker_wrapper.no_cancel .picker_cancel{display:none}.layout_default.picker_wrapper{align-items:stretch;display:flex;flex-flow:row wrap;font-size:10px;justify-content:space-between;padding:.5em;width:25em}.layout_default.picker_wrapper button,.layout_default.picker_wrapper input{font-size:1rem}.layout_default.picker_wrapper>*{margin:.5em}.layout_default.picker_wrapper:before{content:"";display:block;height:0;order:1;width:100%}.layout_default .picker_selector,.layout_default .picker_slider{padding:1em}.layout_default .picker_hue{width:100%}.layout_default .picker_sl{flex:1 1 auto}.layout_default .picker_sl:before{content:"";display:block;padding-bottom:100%}.layout_default .picker_editor{order:1;width:6.5rem}.layout_default .picker_editor input{height:100%;width:100%}.layout_default .picker_sample{flex:1 1 auto;order:1}.layout_default .picker_cancel,.layout_default .picker_done{order:1}.picker_wrapper{background:#f2f2f2;box-shadow:0 0 0 1px silver;box-sizing:border-box;color:#444;cursor:default;font-family:sans-serif;pointer-events:auto}.picker_wrapper:focus{outline:none}.picker_wrapper button,.picker_wrapper input{border:none;box-shadow:0 0 0 1px silver;box-sizing:border-box;outline:none}.picker_wrapper button:active,.picker_wrapper button:focus,.picker_wrapper input:active,.picker_wrapper input:focus{box-shadow:0 0 2px 1px #1e90ff}.picker_wrapper button{background-color:#f5f5f5;background-image:linear-gradient(0deg,#dcdcdc,transparent);cursor:pointer;padding:.4em .6em}.picker_wrapper button:active{background-image:linear-gradient(0deg,transparent,#dcdcdc)}.picker_wrapper button:hover{background-color:#fff}.picker_selector{background:currentColor;border:2px solid #fff;border-radius:100%;box-shadow:0 0 3px 1px #67b9ff;cursor:pointer;display:block;position:absolute;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:1}.picker_slider .picker_selector{border-radius:2px}.picker_hue{background-image:linear-gradient(90deg,red,#ff0,lime,cyan,blue,#f0f,red)}.picker_hue,.picker_sl{box-shadow:0 0 0 1px silver;position:relative}.picker_sl{background-image:linear-gradient(180deg,#fff,hsla(0,0%,100%,0) 50%),linear-gradient(0deg,#000,transparent 50%),linear-gradient(90deg,grey,hsla(0,0%,50%,0))}.picker_alpha,.picker_sample{background:linear-gradient(45deg,#d3d3d3 25%,transparent 0,transparent 75%,#d3d3d3 0) 0 0/2em 2em,linear-gradient(45deg,#d3d3d3 25%,#fff 0,#fff 75%,#d3d3d3 0) 1em 1em/2em 2em;box-shadow:0 0 0 1px silver;position:relative}.picker_alpha .picker_selector,.picker_sample .picker_selector{background:none}.picker_editor input{font-family:monospace;padding:.2em .4em}.picker_sample:before{background:currentColor;content:"";display:block;height:100%;position:absolute;width:100%}.picker_arrow{position:absolute;z-index:-1}.picker_wrapper.popup{margin:1.5em;position:absolute;z-index:2}.picker_wrapper.popup,.picker_wrapper.popup .picker_arrow:after,.picker_wrapper.popup .picker_arrow:before{background:#f2f2f2;box-shadow:0 0 10px 1px rgba(0,0,0,.4)}.picker_wrapper.popup .picker_arrow{height:3em;margin:0;width:3em}.picker_wrapper.popup .picker_arrow:after,.picker_wrapper.popup .picker_arrow:before{content:"";display:block;left:0;position:absolute;top:0;z-index:-99}.picker_wrapper.popup .picker_arrow:before{height:100%;-webkit-transform:skew(45deg);transform:skew(45deg);-webkit-transform-origin:0 100%;transform-origin:0 100%;width:100%}.picker_wrapper.popup .picker_arrow:after{box-shadow:none;height:150%;width:150%}.popup.popup_top{bottom:100%;left:0}.popup.popup_top .picker_arrow{bottom:0;left:0;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.popup.popup_bottom{left:0;top:100%}.popup.popup_bottom .picker_arrow{left:0;top:0;-webkit-transform:rotate(90deg) scaleY(-1);transform:rotate(90deg) scaleY(-1)}.popup.popup_left{right:100%;top:0}.popup.popup_left .picker_arrow{right:0;top:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}.popup.popup_right{left:100%;top:0}.popup.popup_right .picker_arrow{left:0;top:0}.lf-label-overlay{height:0;overflow:visible;width:0}.lf-label-overlay .lf-label-editor{background:#fff;border-radius:5px;padding:4px}.lf-label-overlay .lf-label-editor-container{align-items:center;display:flex;justify-content:center;overflow:visible;position:absolute;text-align:center}.lf-label-overlay .lf-label-editor-container p{margin:0}.lf-label-overlay .lf-label-editor-dragging{cursor:move}.lf-label-overlay .lf-label-editor-editing{cursor:text;outline:2px solid #275dc5}.lf-label-overlay .lf-label-editor-hover{outline:2px dashed #acacac}.lf-label-overlay .lf-label-editor-clip{overflow:hidden;text-overflow:clip;white-space:nowrap;width:100px}.lf-label-overlay .lf-label-editor-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100px}.lf-label-overlay .lf-label-editor-wrap{overflow-wrap:break-word;white-space:normal}.lf-label-overlay .lf-label-editor-nowrap{overflow:visible;white-space:nowrap}.lf-control{background:hsla(0,0%,100%,.8);border-radius:8px;box-shadow:0 0 8px hsla(0,0%,85%,.7);display:flex;flex-wrap:nowrap;margin:5px;max-width:none;overflow:auto hidden;padding:4px 6px;position:absolute;right:10px;top:0;transition:all 3s ease;white-space:nowrap}.lf-control-dark{background:#33353a;color:#fff}.lf-control-item{align-items:center;border-radius:8px;cursor:pointer;display:flex;flex:0 0 auto;flex-direction:column;justify-content:center;margin:0 4px;padding:6px;transition:all .3s ease-in-out}.lf-control-item:hover{background:#efefef}.lf-control-item-colorful,.lf-control-item-default{color:#474747}.lf-control-item-colorful:hover,.lf-control-item-dark:hover,.lf-control-item-default:hover{background:#dadfea48}.lf-control-item.disabled{filter:opacity(.5);pointer-events:none}.lf-control-item.disabled:hover{background:#fff}.lf-control-item.disabled i{pointer-events:none}.lf-control-item i{background-size:cover;display:inline-block;height:20px;vertical-align:middle;width:20px}.lf-control-text{font-size:12px;margin-top:5px}.lf-control-zoomOut{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHdpZHRoPSIxNS4yNDIiIGhlaWdodD0iMTUuMTI2Ij48cGF0aCBkPSJtMTEuOTIzIDEyLjQ1OCAyLjI0MyAyLjMxcS4wMzQuMDM1LjA3NS4wNjMuMDQuMDI4LjA4Ni4wNDguMDQ1LjAyLjA5NC4wMy4wNDguMDEuMDk4LjAxMi4wNSAwIC4wOTgtLjAwOC4wNS0uMDA4LjA5NS0uMDI2LjA0Ny0uMDE4LjA4OS0uMDQ0LjA0MS0uMDI2LjA3Ny0uMDZ0LjA2NS0uMDc0cS4wMjgtLjA0LjA0OC0uMDg0LjAyLS4wNDUuMDMtLjA5My4wMTEtLjA0Ny4wMTMtLjA5NiAwLS4wNS0uMDA4LS4wOTctLjAwOS0uMDQ4LS4wMjctLjA5NC0uMDE4LS4wNDUtLjA0NC0uMDg3LS4wMjctLjA0LS4wNjEtLjA3NmwtMi4yNDQtMi4zMXEtLjAzNC0uMDM1LS4wNzUtLjA2My0uMDQtLjAyOC0uMDg2LS4wNDgtLjA0NS0uMDItLjA5My0uMDMtLjA0OS0uMDExLS4wOTgtLjAxMi0uMDUtLjAwMS0uMDk5LjAwNy0uMDQ5LjAwOS0uMDk1LjAyNi0uMDQ2LjAxOC0uMDg4LjA0NC0uMDQyLjAyNi0uMDc4LjA2dC0uMDY0LjA3NHEtLjAyOS4wNC0uMDQ5LjA4NS0uMDIuMDQ0LS4wMy4wOTItLjAxMS4wNDgtLjAxMi4wOTctLjAwMS4wNDguMDA3LjA5Ny4wMS4wNDguMDI3LjA5My4wMTguMDQ2LjA0NS4wODcuMDI2LjA0MS4wNi4wNzdaIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiM0NzQ3NDciLz48ZWxsaXBzZSBjeD0iNy4xOTMiIGN5PSI3LjA5MSIgcng9IjYuNjkzIiByeT0iNi41OTEiIHN0cm9rZT0iIzQ3NDc0NyIvPjxwYXRoIGQ9Ik00Ljc4MSA3Ljc1Nmg1LjEzNnEuMDUgMCAuMDk3LS4wMS4wNDktLjAxLjA5NC0uMDI4LjA0Ni0uMDE5LjA4Ny0uMDQ2LjA0LS4wMjguMDc1LS4wNjMuMDM1LS4wMzQuMDYzLS4wNzUuMDI3LS4wNDEuMDQ2LS4wODcuMDE5LS4wNDUuMDI4LS4wOTMuMDEtLjA0OS4wMS0uMDk4IDAtLjA1LS4wMS0uMDk4dC0uMDI4LS4wOTNxLS4wMi0uMDQ2LS4wNDYtLjA4Ny0uMDI4LS4wNC0uMDYzLS4wNzUtLjAzNC0uMDM1LS4wNzUtLjA2My0uMDQxLS4wMjctLjA4Ny0uMDQ2LS4wNDUtLjAxOS0uMDk0LS4wMjgtLjA0OC0uMDEtLjA5Ny0uMDFINC43OHEtLjA1IDAtLjA5Ny4wMS0uMDQ5LjAxLS4wOTQuMDI4LS4wNDYuMDE5LS4wODcuMDQ2LS4wNC4wMjgtLjA3NS4wNjMtLjAzNS4wMzQtLjA2My4wNzUtLjAyNy4wNDEtLjA0Ni4wODctLjAxOS4wNDUtLjAyOC4wOTMtLjAxLjA0OS0uMDEuMDk4IDAgLjA1LjAxLjA5OHQuMDI4LjA5M3EuMDIuMDQ2LjA0Ni4wODcuMDI4LjA0LjA2My4wNzUuMDM0LjAzNS4wNzUuMDYzLjA0MS4wMjcuMDg3LjA0Ni4wNDUuMDE5LjA5NC4wMjguMDQ4LjAxLjA5Ny4wMVoiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZmlsbD0iIzQ3NDc0NyIvPjwvc3ZnPg==")}.lf-control-zoomIn{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHdpZHRoPSIxNS4wMzgiIGhlaWdodD0iMTUuNDAxIj48cGF0aCBkPSJtMTEuODY1IDEyLjg4MyAyLjA5NyAyLjE2di0uMDAxcS4wMzUuMDM1LjA3NS4wNjMuMDQuMDI4LjA4Ni4wNDguMDQ2LjAyLjA5NC4wMy4wNDkuMDExLjA5OC4wMTIuMDUuMDAxLjA5OS0uMDA3LjA0OS0uMDA5LjA5NS0uMDI2LjA0Ni0uMDE4LjA4OC0uMDQ0LjA0Mi0uMDI2LjA3OC0uMDYuMDM1LS4wMzQuMDY0LS4wNzQuMDI4LS4wNC4wNDgtLjA4NS4wMi0uMDQ0LjAzMS0uMDkyLjAxLS4wNDguMDEyLS4wOTcgMC0uMDQ4LS4wMDgtLjA5Ny0uMDA4LS4wNDgtLjAyNi0uMDkzLS4wMTgtLjA0Ni0uMDQ1LS4wODctLjAyNy0uMDQxLS4wNi0uMDc3bC0yLjA5OC0yLjE1OXEtLjAzNC0uMDM1LS4wNzUtLjA2My0uMDQtLjAyOC0uMDg2LS4wNDgtLjA0NS0uMDItLjA5NC0uMDMtLjA0OC0uMDEtLjA5OC0uMDEyLS4wNS0uMDAxLS4wOTguMDA3LS4wNS4wMDktLjA5NS4wMjctLjA0Ny4wMTctLjA4OC4wNDMtLjA0Mi4wMjctLjA3OC4wNi0uMDM2LjAzNC0uMDY0LjA3NC0uMDI5LjA0LS4wNDkuMDg1LS4wMi4wNDUtLjAzLjA5Mi0uMDExLjA0OC0uMDEyLjA5Ny0uMDAyLjA0OS4wMDcuMDk3LjAwOS4wNDguMDI3LjA5My4wMTguMDQ2LjA0NC4wODcuMDI3LjA0MS4wNjEuMDc3WiIgZmlsbC1ydWxlPSJldmVub2RkIiBmaWxsPSIjNDc0NzQ3Ii8+PGVsbGlwc2UgY3g9IjcuMjQxIiBjeT0iNy4yMiIgcng9IjYuNzQxIiByeT0iNi43MiIgc3Ryb2tlPSIjNDc0NzQ3Ii8+PHBhdGggZD0iTTYuNzQgMy43cTAtLjA1LjAxLS4wOTh0LjAyOS0uMDkzcS4wMTktLjA0Ni4wNDYtLjA4Ny4wMjctLjA0LjA2Mi0uMDc1LjAzNS0uMDM1LjA3Ni0uMDYzLjA0LS4wMjcuMDg2LS4wNDYuMDQ2LS4wMTkuMDk0LS4wMjguMDQ5LS4wMS4wOTgtLjAxdC4wOTcuMDFxLjA0OS4wMS4wOTQuMDI4LjA0Ni4wMTkuMDg2LjA0Ni4wNDEuMDI4LjA3Ni4wNjMuMDM1LjAzNC4wNjIuMDc1LjAyOC4wNDEuMDQ3LjA4Ny4wMTguMDQ1LjAyOC4wOTMuMDEuMDQ5LjAxLjA5OHYzLjAyaDMuMDNxLjA1IDAgLjA5OC4wMXQuMDk0LjAyOHEuMDQ1LjAxOS4wODYuMDQ2LjA0MS4wMjguMDc2LjA2My4wMzUuMDM0LjA2Mi4wNzUuMDI4LjA0MS4wNDYuMDg3LjAyLjA0NS4wMjkuMDkzLjAxLjA0OS4wMS4wOTggMCAuMDUtLjAxLjA5OHQtLjAyOS4wOTNxLS4wMTguMDQ2LS4wNDYuMDg3LS4wMjcuMDQtLjA2Mi4wNzUtLjAzNS4wMzUtLjA3Ni4wNjMtLjA0LjAyNy0uMDg2LjA0Ni0uMDQ2LjAxOS0uMDk0LjAyOC0uMDQ4LjAxLS4wOTcuMDFINy43NHYzLjAycTAgLjA1LS4wMS4wOTh0LS4wMjguMDkzcS0uMDIuMDQ2LS4wNDcuMDg3LS4wMjcuMDQtLjA2Mi4wNzUtLjAzNS4wMzUtLjA3Ni4wNjMtLjA0LjAyNy0uMDg2LjA0Ni0uMDQ1LjAxOS0uMDk0LjAyOC0uMDQ4LjAxLS4wOTcuMDEtLjA1IDAtLjA5OC0uMDF0LS4wOTQtLjAyOHEtLjA0NS0uMDE5LS4wODYtLjA0Ni0uMDQtLjAyOC0uMDc2LS4wNjMtLjAzNS0uMDM0LS4wNjItLjA3NS0uMDI3LS4wNDEtLjA0Ni0uMDg3LS4wMTktLjA0NS0uMDI5LS4wOTMtLjAxLS4wNDktLjAxLS4wOThWNy43MkgzLjcxcS0uMDUgMC0uMDk4LS4wMXQtLjA5My0uMDI4cS0uMDQ2LS4wMTktLjA4Ny0uMDQ2LS4wNC0uMDI4LS4wNzYtLjA2My0uMDM0LS4wMzQtLjA2Mi0uMDc1LS4wMjctLjA0MS0uMDQ2LS4wODctLjAxOS0uMDQ1LS4wMjgtLjA5My0uMDEtLjA0OS0uMDEtLjA5OCAwLS4wNS4wMS0uMDk4dC4wMjgtLjA5M3EuMDE5LS4wNDYuMDQ2LS4wODcuMDI4LS4wNC4wNjItLjA3NS4wMzUtLjAzNS4wNzYtLjA2My4wNDEtLjAyNy4wODctLjA0Ni4wNDUtLjAxOS4wOTMtLjAyOC4wNDktLjAxLjA5OC0uMDFoMy4wM1YzLjdaIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiM0NzQ3NDciLz48L3N2Zz4=")}.lf-control-fit{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHdpZHRoPSIxNi40MDciIGhlaWdodD0iMTYuMzYiPjxyZWN0IHg9IjIuMTg1IiB5PSIyLjE4MiIgd2lkdGg9IjEyLjAzNyIgaGVpZ2h0PSIxMS45OTciIHJ4PSIzLjUiIHN0cm9rZT0iIzQ3NDc0NyIvPjxyZWN0IHg9Ii41IiB5PSIuNSIgd2lkdGg9IjE1LjQwNyIgaGVpZ2h0PSIxNS4zNiIgcng9IjAiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNLjUgMGgzLjg1MnEuMDUgMCAuMDk3LjAxLjA0OS4wMS4wOTQuMDI4LjA0Ni4wMTkuMDg3LjA0Ni4wNC4wMjguMDc1LjA2Mi4wMzUuMDM1LjA2My4wNzYuMDI3LjA0MS4wNDYuMDg3LjAxOS4wNDUuMDI4LjA5My4wMS4wNDkuMDEuMDk4IDAgLjA1LS4wMS4wOThUNC44MTQuNjlxLS4wMi4wNDYtLjA0Ni4wODctLjAyOC4wNC0uMDYzLjA3Ni0uMDM0LjAzNC0uMDc1LjA2Mi0uMDQxLjAyNy0uMDg3LjA0NlE0LjQ5OC45OCA0LjQ1Ljk5IDQuNDAxIDEgNC4zNTIgMUguNVEuNDUgMSAuNDAyLjk5VC4zMS45NjJRLjI2My45NDMuMjIyLjkxNi4xODIuODg4LjE0Ni44NTQuMTEyLjgxOS4wODQuNzc4LjA1Ny43MzcuMDM4LjY5LjAyLjY0Ni4wMS41OTggMCAuNTQ5IDAgLjUgMCAuNDUuMDEuNDAyVC4wMzguMzFRLjA1Ny4yNjMuMDg0LjIyMi4xMTIuMTgyLjE0Ni4xNDYuMTgxLjExMi4yMjIuMDg0LjI2My4wNTcuMzEuMDM4LjM1NC4wMi40MDIuMDEuNDUxIDAgLjUgMFptMTEuNTU2IDBoNC4zNTF2NC4zNHEwIC4wNS0uMDEuMDk4LS4wMDkuMDQ4LS4wMjguMDkzLS4wMTguMDQ2LS4wNDYuMDg3LS4wMjcuMDQtLjA2Mi4wNzYtLjAzNS4wMzQtLjA3Ni4wNjItLjA0LjAyNy0uMDg2LjA0Ni0uMDQ2LjAxOS0uMDk0LjAyOC0uMDQ4LjAxLS4wOTguMDEtLjA0OSAwLS4wOTctLjAxdC0uMDk0LS4wMjhxLS4wNDUtLjAxOS0uMDg2LS4wNDYtLjA0MS0uMDI4LS4wNzYtLjA2Mi0uMDM1LS4wMzUtLjA2Mi0uMDc2LS4wMjgtLjA0MS0uMDQ3LS4wODctLjAxOC0uMDQ1LS4wMjgtLjA5My0uMDEtLjA0OS0uMDEtLjA5OFYuNWguNVYxaC0zLjg1MXEtLjA1IDAtLjA5OC0uMDF0LS4wOTQtLjAyOHEtLjA0NS0uMDE5LS4wODYtLjA0Ni0uMDQxLS4wMjgtLjA3Ni0uMDYyLS4wMzUtLjAzNS0uMDYyLS4wNzYtLjAyOC0uMDQxLS4wNDYtLjA4Ny0uMDItLjA0NS0uMDI5LS4wOTMtLjAxLS4wNDktLjAxLS4wOTggMC0uMDUuMDEtLjA5OHQuMDI5LS4wOTNxLjAxOC0uMDQ2LjA0Ni0uMDg3LjAyNy0uMDQuMDYyLS4wNzYuMDM1LS4wMzQuMDc2LS4wNjIuMDQtLjAyNy4wODYtLjA0Ni4wNDYtLjAxOS4wOTQtLjAyOC4wNDgtLjAxLjA5OC0uMDFabTQuMzUxIDEyLjAydjQuMzRoLTQuMzUxcS0uMDUgMC0uMDk4LS4wMXQtLjA5NC0uMDI4cS0uMDQ1LS4wMTktLjA4Ni0uMDQ2LS4wNDEtLjAyOC0uMDc2LS4wNjItLjAzNS0uMDM1LS4wNjItLjA3Ni0uMDI4LS4wNDEtLjA0Ni0uMDg3LS4wMi0uMDQ1LS4wMjktLjA5My0uMDEtLjA0OS0uMDEtLjA5OCAwLS4wNS4wMS0uMDk4dC4wMjktLjA5M3EuMDE4LS4wNDYuMDQ2LS4wODcuMDI3LS4wNC4wNjItLjA3Ni4wMzUtLjAzNC4wNzYtLjA2Mi4wNC0uMDI3LjA4Ni0uMDQ2LjA0Ni0uMDE5LjA5NC0uMDI4LjA0OC0uMDEuMDk4LS4wMWgzLjg1MXYuNWgtLjV2LTMuODRxMC0uMDUuMDEtLjA5OHQuMDI4LS4wOTNxLjAyLS4wNDYuMDQ3LS4wODcuMDI3LS4wNC4wNjItLjA3Ni4wMzUtLjAzNC4wNzYtLjA2Mi4wNC0uMDI3LjA4Ni0uMDQ2LjA0Ni0uMDE5LjA5NC0uMDI4LjA0OC0uMDEuMDk3LS4wMS4wNSAwIC4wOTguMDF0LjA5NC4wMjhxLjA0NS4wMTkuMDg2LjA0Ni4wNDEuMDI4LjA3Ni4wNjIuMDM1LjAzNS4wNjIuMDc2LjAyOC4wNDEuMDQ2LjA4Ny4wMi4wNDUuMDI5LjA5My4wMS4wNDkuMDEuMDk4Wk00LjM1MiAxNi4zNkgwdi00LjM0cTAtLjA1LjAxLS4wOTh0LjAyOC0uMDkzcS4wMTktLjA0Ni4wNDYtLjA4Ny4wMjgtLjA0LjA2Mi0uMDc2LjAzNS0uMDM0LjA3Ni0uMDYyLjA0MS0uMDI3LjA4Ny0uMDQ2LjA0NS0uMDE5LjA5My0uMDI4LjA0OS0uMDEuMDk4LS4wMS4wNSAwIC4wOTguMDF0LjA5My4wMjhxLjA0Ni4wMTkuMDg3LjA0Ni4wNC4wMjguMDc2LjA2Mi4wMzQuMDM1LjA2Mi4wNzYuMDI3LjA0MS4wNDYuMDg3LjAxOS4wNDUuMDI4LjA5My4wMS4wNDkuMDEuMDk4djMuODRILjV2LS41aDMuODUycS4wNSAwIC4wOTcuMDEuMDQ5LjAxLjA5NC4wMjguMDQ2LjAxOS4wODcuMDQ2LjA0LjAyOC4wNzUuMDYyLjAzNS4wMzUuMDYzLjA3Ni4wMjcuMDQxLjA0Ni4wODcuMDE5LjA0NS4wMjguMDkzLjAxLjA0OS4wMS4wOTggMCAuMDUtLjAxLjA5OHQtLjAyOC4wOTNxLS4wMi4wNDYtLjA0Ni4wODctLjAyOC4wNC0uMDYzLjA3Ni0uMDM0LjAzNC0uMDc1LjA2Mi0uMDQxLjAyNy0uMDg3LjA0Ni0uMDQ1LjAxOS0uMDk0LjAyOC0uMDQ4LjAxLS4wOTcuMDFaTTAgNC4zNFYwaDQuMzUycS4wNSAwIC4wOTcuMDEuMDQ5LjAxLjA5NC4wMjguMDQ2LjAxOS4wODcuMDQ2LjA0LjAyOC4wNzUuMDYyLjAzNS4wMzUuMDYzLjA3Ni4wMjcuMDQxLjA0Ni4wODcuMDE5LjA0NS4wMjguMDkzLjAxLjA0OS4wMS4wOTggMCAuMDUtLjAxLjA5OFQ0LjgxNC42OXEtLjAyLjA0Ni0uMDQ2LjA4Ny0uMDI4LjA0LS4wNjMuMDc2LS4wMzQuMDM0LS4wNzUuMDYyLS4wNDEuMDI3LS4wODcuMDQ2UTQuNDk4Ljk4IDQuNDUuOTkgNC40MDEgMSA0LjM1MiAxSC41Vi41SDF2My44NHEwIC4wNS0uMDEuMDk4dC0uMDI4LjA5M3EtLjAxOS4wNDYtLjA0Ni4wODctLjAyOC4wNC0uMDYyLjA3Ni0uMDM1LjAzNC0uMDc2LjA2Mi0uMDQxLjAyNy0uMDg3LjA0Ni0uMDQ1LjAxOS0uMDkzLjAyOC0uMDQ5LjAxLS4wOTguMDEtLjA1IDAtLjA5OC0uMDFULjMxIDQuODAycS0uMDQ2LS4wMTktLjA4Ny0uMDQ2LS4wNC0uMDI4LS4wNzYtLjA2Mi0uMDM0LS4wMzUtLjA2Mi0uMDc2LS4wMjctLjA0MS0uMDQ2LS4wODdRLjAyIDQuNDg2LjAxIDQuNDM4IDAgNC4zODkgMCA0LjM0WiIgZmlsbD0iIzQ3NDc0NyIvPjwvc3ZnPg==")}.lf-control-undo{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHdpZHRoPSIxNC4zNTciIGhlaWdodD0iMTUuMDgiPjxwYXRoIGQ9Ik0xMy4zNTggMTMuNjJ2Ljk2cTAgLjA1LjAxLjA5OHQuMDI4LjA5M3EuMDE5LjA0Ni4wNDYuMDg3LjAyNy4wNC4wNjIuMDc1LjAzNS4wMzUuMDc2LjA2My4wNDEuMDI3LjA4Ni4wNDYuMDQ2LjAxOS4wOTQuMDI4LjA0OS4wMS4wOTguMDF0LjA5Ny0uMDFxLjA0OS0uMDEuMDk0LS4wMjguMDQ2LS4wMTkuMDg2LS4wNDYuMDQxLS4wMjguMDc2LS4wNjMuMDM1LS4wMzQuMDYyLS4wNzUuMDI4LS4wNDEuMDQ3LS4wODcuMDE4LS4wNDUuMDI4LS4wOTMuMDEtLjA0OS4wMS0uMDk4di0uOTZxMC0zLjUyLTIuNDktNi4wMS0yLjQ5LTIuNDktNi4wMS0yLjQ5SDQuNTQ5cS0uMDUgMC0uMDk3LjAxLS4wNDkuMDEtLjA5NC4wMjgtLjA0Ni4wMTktLjA4Ny4wNDYtLjA0LjAyOC0uMDc1LjA2My0uMDM1LjAzNC0uMDYzLjA3NS0uMDI3LjA0MS0uMDQ2LjA4Ny0uMDE5LjA0NS0uMDI4LjA5My0uMDEuMDQ5LS4wMS4wOTggMCAuMDUuMDEuMDk4dC4wMjguMDkzcS4wMi4wNDYuMDQ2LjA4Ny4wMjguMDQuMDYzLjA3NS4wMzQuMDM1LjA3NS4wNjMuMDQxLjAyNy4wODcuMDQ2LjA0NS4wMTkuMDk0LjAyOC4wNDguMDEuMDk3LjAxaDEuMzA5cTMuMTA2IDAgNS4zMDMgMi4xOTcgMi4xOTcgMi4xOTYgMi4xOTcgNS4zMDNaIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiM0NzQ3NDciLz48cGF0aCBkPSJNNS44NzYuODQycS4wNjYtLjA3LjEtLjE1OC4wMzYtLjA4OS4wMzYtLjE4NCAwLS4wNS0uMDEtLjA5OFQ1Ljk3NC4zMVE1Ljk1NS4yNjMgNS45MjguMjIyIDUuOS4xODIgNS44NjYuMTQ3IDUuODMuMTEyIDUuNzkuMDg0IDUuNzQ5LjA1NyA1LjcwMy4wMzggNS42NTguMDIgNS42MS4wMSA1LjU2IDAgNS41MTIgMHEtLjEwMyAwLS4xOTguMDQxLS4wOTUuMDQxLS4xNjYuMTE3TDAgNS42M2w1LjE2IDUuMTQzcS4wNy4wNy4xNjEuMTA4LjA5Mi4wMzguMTkxLjAzOC4wNSAwIC4wOTgtLjAxdC4wOTMtLjAyOHEuMDQ2LS4wMTkuMDg3LS4wNDYuMDQtLjAyOC4wNzYtLjA2My4wMzQtLjAzNC4wNjItLjA3NS4wMjctLjA0MS4wNDYtLjA4Ny4wMTktLjA0NS4wMjgtLjA5My4wMS0uMDQ5LjAxLS4wOTggMC0uMS0uMDM4LS4xOTJ0LS4xMDktLjE2MmwtNC40Ny00LjQ1N0w1Ljg3NS44NDNaIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiM0NzQ3NDciLz48L3N2Zz4=")}.lf-control-redo{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHdpZHRoPSIxNS4yMTgiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik0xIDEzLjk1NVYxNS41cTAgLjA1LS4wMS4wOTh0LS4wMjguMDkzcS0uMDE5LjA0Ni0uMDQ2LjA4Ny0uMDI4LjA0LS4wNjIuMDc1LS4wMzUuMDM1LS4wNzYuMDYzLS4wNDEuMDI3LS4wODcuMDQ2LS4wNDUuMDE5LS4wOTMuMDI4US41NDkgMTYgLjUgMTZxLS4wNSAwLS4wOTctLjAxLS4wNDktLjAxLS4wOTQtLjAyOC0uMDQ2LS4wMTktLjA4Ny0uMDQ2LS4wNC0uMDI4LS4wNzUtLjA2My0uMDM1LS4wMzQtLjA2My0uMDc1LS4wMjctLjA0MS0uMDQ2LS4wODctLjAxOS0uMDQ1LS4wMjgtLjA5M1EwIDE1LjU0OSAwIDE1LjV2LTEuNTQ1cTAtMy41MjEgMi40OS02LjAxIDIuNDktMi40OSA2LjAxLTIuNDloMS45MTdxLjA1IDAgLjA5Ny4wMS4wNDkuMDA5LjA5NC4wMjguMDQ2LjAxOS4wODcuMDQ2LjA0LjAyNy4wNzUuMDYyLjAzNS4wMzUuMDYzLjA3Ni4wMjcuMDQuMDQ2LjA4Ni4wMTkuMDQ2LjAyOC4wOTQuMDEuMDQ4LjAxLjA5OCAwIC4wNDktLjAxLjA5N3QtLjAyOC4wOTRxLS4wMTkuMDQ1LS4wNDYuMDg2LS4wMjguMDQxLS4wNjMuMDc2LS4wMzQuMDM1LS4wNzUuMDYyLS4wNDEuMDI4LS4wODcuMDQ2LS4wNDUuMDItLjA5NC4wMjktLjA0OC4wMS0uMDk3LjAxSDguNXEtMy4xMDcgMC01LjMwMyAyLjE5NlExIDEwLjg0OCAxIDEzLjk1NVoiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZmlsbD0iIzQ3NDc0NyIvPjxwYXRoIGQ9Ik05LjAyNy44NDJxLS4wNjUtLjA3LS4xLS4xNThROC44OS41OTUgOC44OS41cTAtLjA1LjAxLS4wOThUOC45MjkuMzFxLjAyLS4wNDYuMDQ2LS4wODcuMDI4LS4wNC4wNjMtLjA3NS4wMzQtLjAzNS4wNzUtLjA2My4wNDEtLjAyNy4wODctLjA0Ni4wNDUtLjAxOS4wOTQtLjAyOFE5LjM0MiAwIDkuMzkgMHEuMTA0IDAgLjE5OC4wNDEuMDk1LjA0MS4xNjYuMTE3bDUuNDYyIDUuODA4LTUuNDczIDUuNDU2cS0uMDcuMDctLjE2Mi4xMDgtLjA5Mi4wMzgtLjE5LjAzOC0uMDUgMC0uMDk4LS4wMS0uMDQ5LS4wMS0uMDk0LS4wMjgtLjA0Ni0uMDE5LS4wODctLjA0Ni0uMDQtLjAyOC0uMDc1LS4wNjItLjAzNS0uMDM1LS4wNjMtLjA3Ni0uMDI3LS4wNDEtLjA0Ni0uMDg3LS4wMTktLjA0NS0uMDI4LS4wOTMtLjAxLS4wNDktLjAxLS4wOTggMC0uMS4wMzgtLjE5MS4wMzktLjA5My4xMS0uMTYzbDQuNzg1LTQuNzdMOS4wMjcuODQyWiIgZmlsbC1ydWxlPSJldmVub2RkIiBmaWxsPSIjNDc0NzQ3Ii8+PC9zdmc+")}.lf-menu{background:#fff;border:1px solid #efefee;border-radius:8px;display:none;margin:0 0 0 10px;padding:6px;position:absolute;width:150px;z-index:999}.lf-menu-dark{background:#33353a;color:#fff}.lf-menu>li{cursor:pointer;font-size:12px;line-height:14px;list-style:none;padding:6px;position:relative;transition:all .12s ease-in-out}.lf-menu-item{align-items:center;border-radius:6px;display:flex;gap:4px;justify-content:flex-start;list-style:none}.lf-menu-item:hover{background:#f3f3f3}.lf-menu-item__disabled{color:#aaa;cursor:not-allowed!important;opacity:.88;pointer-events:inherit!important}.lf-menu-item__disabled:hover{background:#fff}.lf-dndpanel{background:hsla(0,0%,100%,.8);border-radius:8px;box-shadow:0 0 4px 1px hsla(0,0%,85%,.5);margin:5px;padding:10px 4px;position:absolute;z-index:999}.lf-dnd-item{font-size:14px;margin-top:5px;padding:6px;text-align:center}.lf-dnd-item.disabled>div{color:#a8abb2;cursor:not-allowed}.lf-dnd-shape{background-position:50%;background-repeat:no-repeat;background-size:contain;border-radius:8px;cursor:grab;height:36px;margin:0 auto;opacity:.99;width:36px}.lf-selection-select{border:2px dashed #ffab03;position:absolute}.lf-mini-map{background:#fefefe;border-radius:8px;box-shadow:0 0 10px 1px hsla(0,0%,72%,.5);overflow:hidden;padding:28px 8px 8px;position:absolute}.lf-mini-map .lf-graph{height:100%!important;width:100%!important}.lf-mini-map-graph{border-radius:8px;overflow:hidden;position:relative}.lf-minimap-viewport{background-color:hsla(0,0%,85%,.5);border-radius:2px;cursor:grab;left:0;position:absolute;top:0}.lf-mini-map-header{left:0;line-height:18px;margin:4px 6px;position:absolute;right:0;top:0}.lf-mini-map-close{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACL0lEQVRoQ+1YT2vUQBT/vS+Smc3u0ZtfwA+hUKEttIIVbMEWrGAL3UItqKCCCipooS3Ynu29ePfqLcnO5Nov0NsrWbc0myxtJpNmGZw9LZk37/3+vCTzQnD8R47jhycwbQe9A94BSwV8C1kKaL3dO2AtoWWC/8+BMJB9ItwHcM6MX0mqtm1EzOU7Y8bvJFV9k3zGDnSFPAVw76oIb8ZavzIpehnbE+Ilg/J7/8Za3THJVYfAHwB3x4owXsSpemNSuCs6zwEu7rl9AmEgt4hQspkIa5FS76uQCKV8RoxSLDP6pi1p7EAGsCvEBkA7ZbC0EuvBp+tI9IR4yqBSDIE3Iq13qwiQj6lFYEgikOsgvC4VJDyJlfo6CUg3kI9BmLBG67EevDUFn8XXJpBt7km5yox3xcIMfpRo/SN/PZRygRhj17J1JqwmSn2oA96awL926iwD/LEIgJjmo3RwMCQadGaZePh/3H5ejrT+XBd8IwSGJKRcAuPLhHZ6mIkMxlFpjbEUp+qbDfjGCGSJQiEWCfS9CiAmLCZK7VWJvSnG6h4oJu8FnTkm3r+uKDHNReng8CZgVdcbJTBqpxkwfk4EQJiJlTquCq5KnCeQV8npFnL6Jnb6Mer0i8zpo4TThzmnj9OjGXardDBrZqDZbmMmdnukdH6oL3xWOTG1vNh6oxn7AYB2PqtUOWC1GdP4Ya5N8I0ONG0Dv6znHZiW8t6BaSvvHfAONKSAf4w2JGTtNBey0xBAkjSEzwAAAABJRU5ErkJggg==");background-size:contain;color:#474747a0;cursor:pointer;height:18px;position:absolute;right:2px;top:6px;width:18px}.lf-mini-map-close:hover{color:#474747}.lf-mini-map-no-header{padding-top:8px}.lf-mini-map-no-close-icon .lf-mini-map-close,.lf-mini-map-no-header .lf-mini-map-header{display:none}.lf-resize-control-0{cursor:nw-resize}.lf-resize-control-1{cursor:ne-resize}.lf-resize-control-2{cursor:se-resize}.lf-resize-control-3{cursor:sw-resize}.lf-inner-context{display:none;flex-flow:column wrap;height:90px;position:absolute}.lf-context-item{box-sizing:content-box;height:20px;margin:0 2px 2px 0;padding:2px 3px;width:20px}.lf-context-item:hover{background:rgba(201,217,216,.5)}.lf-context-img{cursor:pointer;height:20px;width:20px}.lf-mindmap_addIcon{margin-top:10px}
|
package/lib/index.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export * from './bpmn-elements-adapter';
|
|
|
5
5
|
export * from './bpmn-adapter/xml2json';
|
|
6
6
|
export * from './bpmn-adapter/json2xml';
|
|
7
7
|
export * from './turbo-adapter';
|
|
8
|
+
export * from './pool';
|
|
8
9
|
export * from './dynamic-group';
|
|
9
10
|
export * from './insert-node-in-polyline';
|
|
10
11
|
export * from './tools/label';
|
package/lib/index.js
CHANGED
|
@@ -23,6 +23,8 @@ __exportStar(require("./bpmn-adapter/xml2json"), exports);
|
|
|
23
23
|
__exportStar(require("./bpmn-adapter/json2xml"), exports);
|
|
24
24
|
// Adapter
|
|
25
25
|
__exportStar(require("./turbo-adapter"), exports);
|
|
26
|
+
// 泳道相关
|
|
27
|
+
__exportStar(require("./pool"), exports);
|
|
26
28
|
// 新版 Group
|
|
27
29
|
__exportStar(require("./dynamic-group"), exports);
|
|
28
30
|
// 折线上动态插入节点
|
|
@@ -1,29 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
3
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
4
|
-
if (!m) return o;
|
|
5
|
-
var i = m.call(o), r, ar = [], e;
|
|
6
|
-
try {
|
|
7
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
8
|
-
}
|
|
9
|
-
catch (error) { e = { error: error }; }
|
|
10
|
-
finally {
|
|
11
|
-
try {
|
|
12
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
13
|
-
}
|
|
14
|
-
finally { if (e) throw e.error; }
|
|
15
|
-
}
|
|
16
|
-
return ar;
|
|
17
|
-
};
|
|
18
|
-
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
19
|
-
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
20
|
-
if (ar || !(i in from)) {
|
|
21
|
-
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
22
|
-
ar[i] = from[i];
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
26
|
-
};
|
|
27
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
3
|
exports.InsertNodeInPolyline = void 0;
|
|
29
4
|
var core_1 = require("@logicflow/core");
|
|
@@ -116,28 +91,29 @@ var InsertNodeInPolyline = /** @class */ (function () {
|
|
|
116
91
|
var _b = edges[i], sourceNodeId = _b.sourceNodeId, targetNodeId = _b.targetNodeId, id = _b.id, type = _b.type, pointsList = _b.pointsList, sourceAnchorId = _b.sourceAnchorId, targetAnchorId = _b.targetAnchorId;
|
|
117
92
|
// fix https://github.com/didi/LogicFlow/issues/996
|
|
118
93
|
var startPoint = (0, lodash_es_1.cloneDeep)(pointsList[0]);
|
|
119
|
-
var endPoint = (0, lodash_es_1.cloneDeep)(crossPoints.startCrossPoint);
|
|
120
94
|
this._lf.deleteEdge(id);
|
|
121
95
|
var checkResult = this.checkRuleBeforeInsetNode(sourceNodeId, targetNodeId, sourceAnchorId, targetAnchorId, nodeData);
|
|
96
|
+
// 基于插入节点的进入交点计算出最近的“进入锚点”,用于重连原边的前半段
|
|
97
|
+
var entryAnchorInfo = (0, core_1.getClosestAnchor)(crossPoints.startCrossPoint, nodeModel);
|
|
98
|
+
var entryAnchor = entryAnchorInfo.anchor;
|
|
99
|
+
// 构造第一条边:原 source → 插入节点(终点为进入锚点)
|
|
122
100
|
this._lf.addEdge({
|
|
123
101
|
type: type,
|
|
124
102
|
sourceNodeId: sourceNodeId,
|
|
125
103
|
targetNodeId: nodeData.id,
|
|
126
104
|
startPoint: startPoint,
|
|
127
|
-
endPoint:
|
|
128
|
-
pointsList: __spreadArray(__spreadArray([], __read(pointsList.slice(0, crossIndex)), false), [
|
|
129
|
-
crossPoints.startCrossPoint,
|
|
130
|
-
], false),
|
|
105
|
+
endPoint: entryAnchor,
|
|
131
106
|
});
|
|
107
|
+
// 基于插入节点的离开交点计算出最近的“离开锚点”,用于重连原边的后半段
|
|
108
|
+
var exitAnchorInfo = (0, core_1.getClosestAnchor)(crossPoints.endCrossPoint, nodeModel);
|
|
109
|
+
var exitAnchor = exitAnchorInfo.anchor;
|
|
110
|
+
// 构造第二条边:插入节点 → 原 target(起点为离开锚点)
|
|
132
111
|
this._lf.addEdge({
|
|
133
112
|
type: type,
|
|
134
113
|
sourceNodeId: nodeData.id,
|
|
135
114
|
targetNodeId: targetNodeId,
|
|
136
|
-
startPoint: (0, lodash_es_1.cloneDeep)(
|
|
115
|
+
startPoint: (0, lodash_es_1.cloneDeep)(exitAnchor),
|
|
137
116
|
endPoint: (0, lodash_es_1.cloneDeep)(pointsList[pointsList.length - 1]),
|
|
138
|
-
pointsList: __spreadArray([
|
|
139
|
-
crossPoints.endCrossPoint
|
|
140
|
-
], __read(pointsList.slice(crossIndex)), false),
|
|
141
117
|
});
|
|
142
118
|
if (!checkResult.isPass) {
|
|
143
119
|
this._lf.graphModel.eventCenter.emit(core_1.EventType.CONNECTION_NOT_ALLOWED, {
|
|
@@ -44,6 +44,9 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
44
44
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
45
|
exports.getCurvedEdgePath = exports.CurvedEdgeModel = exports.CurvedEdge = void 0;
|
|
46
46
|
var core_1 = require("@logicflow/core");
|
|
47
|
+
// 方向组合到圆弧象限的映射。
|
|
48
|
+
// key 由进入方向(dir1)和离开方向(dir2)拼接,例如 'tr' 表示从上(t)到右(r)的拐角。
|
|
49
|
+
// 通过该映射确定在拐点处应该绘制的圆弧象限,用于计算中间控制点。
|
|
47
50
|
var directionMap = {
|
|
48
51
|
tr: 'tl',
|
|
49
52
|
lb: 'tl',
|
|
@@ -54,13 +57,17 @@ var directionMap = {
|
|
|
54
57
|
bl: 'br',
|
|
55
58
|
rt: 'br',
|
|
56
59
|
};
|
|
60
|
+
// 过滤折线中的共线中间点,减少不必要的顶点
|
|
57
61
|
function pointFilter(points) {
|
|
62
|
+
// 原地修改传入的数组
|
|
58
63
|
var all = points;
|
|
64
|
+
// 从第二个点开始,检查三点是否共线
|
|
59
65
|
var i = 1;
|
|
60
66
|
while (i < all.length - 1) {
|
|
61
67
|
var _a = __read(all[i - 1], 2), x = _a[0], y = _a[1];
|
|
62
68
|
var _b = __read(all[i], 2), x1 = _b[0], y1 = _b[1];
|
|
63
69
|
var _c = __read(all[i + 1], 2), x2 = _c[0], y2 = _c[1];
|
|
70
|
+
// 如果三点在同一条水平或垂直直线上,删除中间点
|
|
64
71
|
if ((x === x1 && x1 === x2) || (y === y1 && y1 === y2)) {
|
|
65
72
|
all.splice(i, 1);
|
|
66
73
|
}
|
|
@@ -68,6 +75,7 @@ function pointFilter(points) {
|
|
|
68
75
|
i++;
|
|
69
76
|
}
|
|
70
77
|
}
|
|
78
|
+
// 返回精简后的点集
|
|
71
79
|
return all;
|
|
72
80
|
}
|
|
73
81
|
function getMidPoints(cur, key, orientation, radius) {
|
|
@@ -122,34 +130,54 @@ function getMidPoints(cur, key, orientation, radius) {
|
|
|
122
130
|
return [];
|
|
123
131
|
}
|
|
124
132
|
}
|
|
125
|
-
|
|
133
|
+
/**
|
|
134
|
+
* 生成局部路径片段(包含圆角)
|
|
135
|
+
* - 输入为上一个顶点、当前拐点、下一个顶点,计算方向组合并选择圆弧象限
|
|
136
|
+
* - 将圆角半径限制在相邻两段长度的一半以内,避免过度弯曲
|
|
137
|
+
* @param prevPoint 上一个顶点
|
|
138
|
+
* @param cornerPoint 当前拐点(圆角所在拐点)
|
|
139
|
+
* @param nextPoint 下一个顶点
|
|
140
|
+
* @param cornerRadius 圆角半径上限
|
|
141
|
+
* @returns 局部 path 字符串(包含 L/Q 操作)
|
|
142
|
+
*/
|
|
143
|
+
function getPartialPath(prevPoint, cornerPoint, nextPoint, cornerRadius) {
|
|
126
144
|
var _a;
|
|
127
|
-
|
|
128
|
-
var
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
145
|
+
// 轴对齐容差(像素),用于消除微小误差
|
|
146
|
+
var epsilon = 1;
|
|
147
|
+
var resolveDir = function (a, b) {
|
|
148
|
+
var dx = b[0] - a[0];
|
|
149
|
+
var dy = b[1] - a[1];
|
|
150
|
+
var adx = Math.abs(dx);
|
|
151
|
+
var ady = Math.abs(dy);
|
|
152
|
+
if (ady <= epsilon && adx > epsilon) {
|
|
153
|
+
return dx < 0 ? 'l' : 'r';
|
|
154
|
+
}
|
|
155
|
+
if (adx <= epsilon && ady > epsilon) {
|
|
156
|
+
return dy < 0 ? 't' : 'b';
|
|
157
|
+
}
|
|
158
|
+
if (adx <= epsilon && ady <= epsilon) {
|
|
159
|
+
return '';
|
|
160
|
+
}
|
|
161
|
+
// 非严格对齐时,选择更接近的轴
|
|
162
|
+
return adx < ady ? (dx < 0 ? 'l' : 'r') : dy < 0 ? 't' : 'b';
|
|
163
|
+
};
|
|
164
|
+
var dir1 = resolveDir(prevPoint, cornerPoint);
|
|
165
|
+
var dir2 = resolveDir(cornerPoint, nextPoint);
|
|
166
|
+
var r = Math.min(Math.hypot(cornerPoint[0] - prevPoint[0], cornerPoint[1] - prevPoint[1]) /
|
|
167
|
+
2, Math.hypot(nextPoint[0] - cornerPoint[0], nextPoint[1] - cornerPoint[1]) /
|
|
168
|
+
2, cornerRadius) || (1 / 5) * cornerRadius;
|
|
142
169
|
var key = "".concat(dir1).concat(dir2);
|
|
143
170
|
var orientation = directionMap[key] || '-';
|
|
144
|
-
var path =
|
|
171
|
+
var path = '';
|
|
145
172
|
if (orientation === '-') {
|
|
146
|
-
|
|
173
|
+
// 仅移动到当前拐点,由下一次迭代决定如何从拐点继续(直线或圆角)
|
|
174
|
+
path += "L ".concat(cornerPoint[0], " ").concat(cornerPoint[1]);
|
|
147
175
|
}
|
|
148
176
|
else {
|
|
149
|
-
var _b = __read(getMidPoints(
|
|
177
|
+
var _b = __read(getMidPoints(cornerPoint, key, orientation, r), 2), mid1 = _b[0], mid2 = _b[1];
|
|
150
178
|
if (mid1 && mid2) {
|
|
151
|
-
path += "L ".concat(mid1[0], " ").concat(mid1[1], " Q ").concat(
|
|
152
|
-
_a = __read(mid2, 2),
|
|
179
|
+
path += "L ".concat(mid1[0], " ").concat(mid1[1], " Q ").concat(cornerPoint[0], " ").concat(cornerPoint[1], " ").concat(mid2[0], " ").concat(mid2[1]);
|
|
180
|
+
_a = __read(mid2, 2), cornerPoint[0] = _a[0], cornerPoint[1] = _a[1];
|
|
153
181
|
}
|
|
154
182
|
}
|
|
155
183
|
return path;
|
|
@@ -35,12 +35,6 @@ export declare class GroupNodeModel extends RectResizeModel {
|
|
|
35
35
|
*/
|
|
36
36
|
childrenLastFoldStatus: Record<string, boolean>;
|
|
37
37
|
initNodeData(data: any): void;
|
|
38
|
-
getResizeOutlineStyle(): {
|
|
39
|
-
fill: string;
|
|
40
|
-
stroke: string;
|
|
41
|
-
strokeWidth: number;
|
|
42
|
-
strokeDasharray: string;
|
|
43
|
-
};
|
|
44
38
|
/**
|
|
45
39
|
* 折叠分组
|
|
46
40
|
* 1. 折叠分组的宽高
|
|
@@ -107,11 +107,6 @@ var GroupNodeModel = /** @class */ (function (_super) {
|
|
|
107
107
|
});
|
|
108
108
|
// this.foldGroup(this.isFolded);
|
|
109
109
|
};
|
|
110
|
-
GroupNodeModel.prototype.getResizeOutlineStyle = function () {
|
|
111
|
-
var style = _super.prototype.getResizeOutlineStyle.call(this);
|
|
112
|
-
style.stroke = 'none';
|
|
113
|
-
return style;
|
|
114
|
-
};
|
|
115
110
|
/**
|
|
116
111
|
* 折叠分组
|
|
117
112
|
* 1. 折叠分组的宽高
|
|
@@ -417,7 +412,7 @@ var GroupNode = /** @class */ (function (_super) {
|
|
|
417
412
|
x: model.x - model.width / 2 + 5,
|
|
418
413
|
y: model.y - model.height / 2 + 5,
|
|
419
414
|
onClick: function () {
|
|
420
|
-
;
|
|
415
|
+
console.log('fold click');
|
|
421
416
|
model.foldGroup(!model.properties.isFolded);
|
|
422
417
|
},
|
|
423
418
|
}),
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 基于DynamicGroup重新实现的泳道节点组件
|
|
3
|
+
* 继承DynamicGroupNodeModel和DynamicGroupNode,提供泳道特定功能
|
|
4
|
+
*/
|
|
5
|
+
import LogicFlow from '@logicflow/core';
|
|
6
|
+
import { DynamicGroupNodeModel } from '../dynamic-group';
|
|
7
|
+
export declare class LaneModel extends DynamicGroupNodeModel {
|
|
8
|
+
readonly isLane: boolean;
|
|
9
|
+
defaultZIndex: number;
|
|
10
|
+
initNodeData(data: LogicFlow.NodeConfig): void;
|
|
11
|
+
setAttributes(): void;
|
|
12
|
+
setZIndex(zIndex: number): void;
|
|
13
|
+
/**
|
|
14
|
+
* 重写折叠方法 - 泳道不支持折叠
|
|
15
|
+
*/
|
|
16
|
+
toggleCollapse(): void;
|
|
17
|
+
/**
|
|
18
|
+
* 获取所属泳池ID
|
|
19
|
+
*/
|
|
20
|
+
getPoolId(): string | null;
|
|
21
|
+
/**
|
|
22
|
+
* 获取所属泳池模型
|
|
23
|
+
*/
|
|
24
|
+
getPoolModel(): any;
|
|
25
|
+
/**
|
|
26
|
+
* 动态修改泳道属性
|
|
27
|
+
*/
|
|
28
|
+
changeAttribute({ width, height, x, y }: any): void;
|
|
29
|
+
/**
|
|
30
|
+
* 重写获取数据方法,添加泳道特定属性
|
|
31
|
+
*/
|
|
32
|
+
getData(): LogicFlow.NodeData;
|
|
33
|
+
/**
|
|
34
|
+
* 重写 isAllowAppendIn,禁止 Lane 嵌套
|
|
35
|
+
*/
|
|
36
|
+
isAllowAppendIn(nodeData: LogicFlow.NodeData): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* 获取需要移动的节点
|
|
39
|
+
* @param groupModel
|
|
40
|
+
*/
|
|
41
|
+
getNodesInGroup(groupModel: DynamicGroupNodeModel): string[];
|
|
42
|
+
getNodeStyle(): {
|
|
43
|
+
[x: string]: unknown;
|
|
44
|
+
fill?: string | undefined;
|
|
45
|
+
stroke?: string | undefined;
|
|
46
|
+
strokeWidth?: number | undefined;
|
|
47
|
+
radius?: number | undefined;
|
|
48
|
+
rx?: number | undefined;
|
|
49
|
+
ry?: number | undefined;
|
|
50
|
+
width?: number | undefined;
|
|
51
|
+
height?: number | undefined;
|
|
52
|
+
path?: string | undefined;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* 获取文本样式
|
|
56
|
+
*/
|
|
57
|
+
getTextStyle(): {
|
|
58
|
+
[x: string]: unknown;
|
|
59
|
+
fill?: string | undefined;
|
|
60
|
+
stroke?: string | undefined;
|
|
61
|
+
strokeWidth?: number | undefined;
|
|
62
|
+
radius?: number | undefined;
|
|
63
|
+
rx?: number | undefined;
|
|
64
|
+
ry?: number | undefined;
|
|
65
|
+
width?: number | undefined;
|
|
66
|
+
height?: number | undefined;
|
|
67
|
+
path?: string | undefined;
|
|
68
|
+
overflowMode?: "default" | "autoWrap" | "ellipsis" | undefined;
|
|
69
|
+
textWidth?: number | undefined; /**
|
|
70
|
+
* 获取子泳道
|
|
71
|
+
*/
|
|
72
|
+
background?: LogicFlow.CommonTheme | undefined;
|
|
73
|
+
wrapPadding?: string | undefined;
|
|
74
|
+
color?: string | undefined;
|
|
75
|
+
fontSize: number;
|
|
76
|
+
lineHeight?: number | undefined;
|
|
77
|
+
textAnchor?: "middle" | "start" | "end" | undefined;
|
|
78
|
+
dominantBaseline?: "middle" | "central" | "auto" | "text-bottom" | "alphabetic" | "ideographic" | "mathematical" | "hanging" | "text-top" | undefined;
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* 获取子泳道
|
|
82
|
+
*/
|
|
83
|
+
getSubNodes(): any[];
|
|
84
|
+
/**
|
|
85
|
+
* 初始化文本位置 - 根据布局方向设置文本位置
|
|
86
|
+
*/
|
|
87
|
+
updateTextPosition(): void;
|
|
88
|
+
}
|
|
89
|
+
declare const _default: null;
|
|
90
|
+
export default _default;
|