@01.software/sdk 0.4.3-dev.1774339118317 → 0.4.3-dev.1774340903661
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/dist/ui/flow.cjs +124 -86
- package/dist/ui/flow.cjs.map +1 -1
- package/dist/ui/flow.js +126 -93
- package/dist/ui/flow.js.map +1 -1
- package/package.json +3 -3
package/dist/ui/flow.cjs
CHANGED
|
@@ -82,8 +82,6 @@ __export(Flow_exports, {
|
|
|
82
82
|
useFlowData: () => useFlowData
|
|
83
83
|
});
|
|
84
84
|
module.exports = __toCommonJS(Flow_exports);
|
|
85
|
-
var import_react4 = __toESM(require("react"), 1);
|
|
86
|
-
var import_react5 = require("@xyflow/react");
|
|
87
85
|
|
|
88
86
|
// src/ui/Flow/types.ts
|
|
89
87
|
function isDynamicNode(node) {
|
|
@@ -477,7 +475,15 @@ function clearTemplateCache() {
|
|
|
477
475
|
componentCache.clear();
|
|
478
476
|
}
|
|
479
477
|
|
|
480
|
-
// src/ui/Flow/
|
|
478
|
+
// src/ui/Flow/FlowRenderer.tsx
|
|
479
|
+
var import_react9 = __toESM(require("react"), 1);
|
|
480
|
+
var import_react10 = require("@xyflow/react");
|
|
481
|
+
|
|
482
|
+
// src/ui/Flow/node-types-factory.tsx
|
|
483
|
+
var import_react5 = __toESM(require("react"), 1);
|
|
484
|
+
|
|
485
|
+
// src/ui/Flow/node-renderers.tsx
|
|
486
|
+
var import_react4 = __toESM(require("react"), 1);
|
|
481
487
|
function sanitizeUrl(url) {
|
|
482
488
|
if (!url) return url;
|
|
483
489
|
try {
|
|
@@ -488,11 +494,6 @@ function sanitizeUrl(url) {
|
|
|
488
494
|
return void 0;
|
|
489
495
|
}
|
|
490
496
|
}
|
|
491
|
-
function toMarkerType(value) {
|
|
492
|
-
if (value === "arrow") return import_react5.MarkerType.Arrow;
|
|
493
|
-
if (value === "arrowclosed") return import_react5.MarkerType.ArrowClosed;
|
|
494
|
-
return void 0;
|
|
495
|
-
}
|
|
496
497
|
function renderFieldValue(key, val, fieldDef) {
|
|
497
498
|
if (val == null || val === "") return null;
|
|
498
499
|
const fieldType = fieldDef == null ? void 0 : fieldDef.fieldType;
|
|
@@ -644,13 +645,15 @@ function DefaultFrameNode({ data }) {
|
|
|
644
645
|
)
|
|
645
646
|
);
|
|
646
647
|
}
|
|
648
|
+
|
|
649
|
+
// src/ui/Flow/node-types-factory.tsx
|
|
647
650
|
function createNodeTypes(nodeRenderers, nodeTypeDefsMap, frameRenderer, nodeWrapper, renderNode) {
|
|
648
651
|
const types = {};
|
|
649
652
|
types.dynamic = ((props) => {
|
|
650
653
|
const d = props.data;
|
|
651
654
|
const typeDef = nodeTypeDefsMap == null ? void 0 : nodeTypeDefsMap.get(d.nodeTypeSlug);
|
|
652
655
|
const CustomRenderer = nodeRenderers == null ? void 0 : nodeRenderers[d.nodeTypeSlug];
|
|
653
|
-
const defaultRender = typeDef ? /* @__PURE__ */
|
|
656
|
+
const defaultRender = typeDef ? /* @__PURE__ */ import_react5.default.createElement(
|
|
654
657
|
EnhancedDynamicNode,
|
|
655
658
|
{
|
|
656
659
|
data: d,
|
|
@@ -658,7 +661,7 @@ function createNodeTypes(nodeRenderers, nodeTypeDefsMap, frameRenderer, nodeWrap
|
|
|
658
661
|
width: props.width,
|
|
659
662
|
height: props.height
|
|
660
663
|
}
|
|
661
|
-
) : /* @__PURE__ */
|
|
664
|
+
) : /* @__PURE__ */ import_react5.default.createElement(DefaultDynamicNode, __spreadValues({}, props));
|
|
662
665
|
const slotProps = {
|
|
663
666
|
id: props.id,
|
|
664
667
|
nodeTypeSlug: d.nodeTypeSlug,
|
|
@@ -670,14 +673,14 @@ function createNodeTypes(nodeRenderers, nodeTypeDefsMap, frameRenderer, nodeWrap
|
|
|
670
673
|
height: props.height,
|
|
671
674
|
defaultRender
|
|
672
675
|
};
|
|
673
|
-
let content = CustomRenderer ? /* @__PURE__ */
|
|
676
|
+
let content = CustomRenderer ? /* @__PURE__ */ import_react5.default.createElement(CustomRenderer, __spreadValues({}, slotProps)) : defaultRender;
|
|
674
677
|
if (renderNode) {
|
|
675
678
|
const result = renderNode(slotProps, content);
|
|
676
679
|
if (result !== null) content = result;
|
|
677
680
|
}
|
|
678
681
|
if (nodeWrapper) {
|
|
679
682
|
const Wrapper = nodeWrapper;
|
|
680
|
-
content = /* @__PURE__ */
|
|
683
|
+
content = /* @__PURE__ */ import_react5.default.createElement(
|
|
681
684
|
Wrapper,
|
|
682
685
|
{
|
|
683
686
|
id: props.id,
|
|
@@ -694,7 +697,7 @@ function createNodeTypes(nodeRenderers, nodeTypeDefsMap, frameRenderer, nodeWrap
|
|
|
694
697
|
types.frame = frameRenderer ? ((props) => {
|
|
695
698
|
const d = props.data;
|
|
696
699
|
const Renderer = frameRenderer;
|
|
697
|
-
return /* @__PURE__ */
|
|
700
|
+
return /* @__PURE__ */ import_react5.default.createElement(
|
|
698
701
|
Renderer,
|
|
699
702
|
{
|
|
700
703
|
id: props.id,
|
|
@@ -718,7 +721,7 @@ function createEdgeTypes(edgeRenderers, edgeTypeDefsMap) {
|
|
|
718
721
|
types[slug] = ((props) => {
|
|
719
722
|
var _a;
|
|
720
723
|
const def = edgeTypeDefsMap == null ? void 0 : edgeTypeDefsMap.get(slug);
|
|
721
|
-
return /* @__PURE__ */
|
|
724
|
+
return /* @__PURE__ */ import_react5.default.createElement(
|
|
722
725
|
Renderer,
|
|
723
726
|
{
|
|
724
727
|
id: props.id,
|
|
@@ -735,6 +738,57 @@ function createEdgeTypes(edgeRenderers, edgeTypeDefsMap) {
|
|
|
735
738
|
}
|
|
736
739
|
return types;
|
|
737
740
|
}
|
|
741
|
+
|
|
742
|
+
// src/ui/Flow/edge-styles.ts
|
|
743
|
+
var import_react6 = require("@xyflow/react");
|
|
744
|
+
function toMarkerType(value) {
|
|
745
|
+
if (value === "arrow") return import_react6.MarkerType.Arrow;
|
|
746
|
+
if (value === "arrowclosed") return import_react6.MarkerType.ArrowClosed;
|
|
747
|
+
return void 0;
|
|
748
|
+
}
|
|
749
|
+
var EDGE_TYPE_MAP = {
|
|
750
|
+
step: "step",
|
|
751
|
+
smoothstep: "smoothstep",
|
|
752
|
+
bezier: "default",
|
|
753
|
+
default: "default"
|
|
754
|
+
};
|
|
755
|
+
function applyEdgeStyles(edges, edgeTypeDefsMap) {
|
|
756
|
+
if (!(edgeTypeDefsMap == null ? void 0 : edgeTypeDefsMap.size)) return edges;
|
|
757
|
+
return edges.map((edge) => {
|
|
758
|
+
var _a;
|
|
759
|
+
const slug = edge.edgeTypeSlug;
|
|
760
|
+
if (!slug) return edge;
|
|
761
|
+
const def = edgeTypeDefsMap.get(slug);
|
|
762
|
+
if (!def) return edge;
|
|
763
|
+
const styled = __spreadValues({}, edge);
|
|
764
|
+
if (!styled.type && def.lineStyle) {
|
|
765
|
+
styled.type = (_a = EDGE_TYPE_MAP[def.lineStyle]) != null ? _a : "default";
|
|
766
|
+
}
|
|
767
|
+
styled.style = __spreadValues(__spreadValues(__spreadValues({}, def.color ? { stroke: def.color } : void 0), def.strokeWidth ? { strokeWidth: def.strokeWidth } : void 0), edge.style);
|
|
768
|
+
if (styled.animated == null && def.animated) styled.animated = true;
|
|
769
|
+
if (!styled.markerStart) {
|
|
770
|
+
const startType = toMarkerType(def.markerStart);
|
|
771
|
+
if (startType) {
|
|
772
|
+
styled.markerStart = __spreadValues({
|
|
773
|
+
type: startType
|
|
774
|
+
}, def.color ? { color: def.color } : void 0);
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
if (!styled.markerEnd) {
|
|
778
|
+
const endType = toMarkerType(def.markerEnd);
|
|
779
|
+
if (endType) {
|
|
780
|
+
styled.markerEnd = __spreadValues({
|
|
781
|
+
type: endType
|
|
782
|
+
}, def.color ? { color: def.color } : void 0);
|
|
783
|
+
}
|
|
784
|
+
}
|
|
785
|
+
return styled;
|
|
786
|
+
});
|
|
787
|
+
}
|
|
788
|
+
|
|
789
|
+
// src/ui/Flow/focus-handler.tsx
|
|
790
|
+
var import_react7 = __toESM(require("react"), 1);
|
|
791
|
+
var import_react8 = require("@xyflow/react");
|
|
738
792
|
function clampViewport(vp, cw, ch, extent) {
|
|
739
793
|
const left = -vp.x / vp.zoom;
|
|
740
794
|
const right = (cw - vp.x) / vp.zoom;
|
|
@@ -757,18 +811,19 @@ function FocusHandler({
|
|
|
757
811
|
responsive,
|
|
758
812
|
extent,
|
|
759
813
|
clampBounds,
|
|
760
|
-
minZoomProp
|
|
814
|
+
minZoomProp,
|
|
815
|
+
onInitialFit
|
|
761
816
|
}) {
|
|
762
|
-
const { setViewport } = (0,
|
|
763
|
-
const store = (0,
|
|
764
|
-
const containerRef =
|
|
817
|
+
const { setViewport } = (0, import_react8.useReactFlow)();
|
|
818
|
+
const store = (0, import_react8.useStoreApi)();
|
|
819
|
+
const containerRef = import_react7.default.useRef(null);
|
|
765
820
|
const boundsKey = `${bounds.x},${bounds.y},${bounds.width},${bounds.height}`;
|
|
766
|
-
const boundsRef =
|
|
821
|
+
const boundsRef = import_react7.default.useRef(bounds);
|
|
767
822
|
boundsRef.current = bounds;
|
|
768
|
-
const [containerSize, setContainerSize] =
|
|
769
|
-
const prevBoundsKeyRef =
|
|
770
|
-
const prevSizeRef =
|
|
771
|
-
|
|
823
|
+
const [containerSize, setContainerSize] = import_react7.default.useState({ w: 0, h: 0 });
|
|
824
|
+
const prevBoundsKeyRef = import_react7.default.useRef(null);
|
|
825
|
+
const prevSizeRef = import_react7.default.useRef({ w: 0, h: 0 });
|
|
826
|
+
import_react7.default.useEffect(() => {
|
|
772
827
|
const el = containerRef.current;
|
|
773
828
|
if (!el) return;
|
|
774
829
|
const observer = new ResizeObserver((entries) => {
|
|
@@ -780,7 +835,7 @@ function FocusHandler({
|
|
|
780
835
|
observer.observe(el);
|
|
781
836
|
return () => observer.disconnect();
|
|
782
837
|
}, []);
|
|
783
|
-
|
|
838
|
+
import_react7.default.useEffect(() => {
|
|
784
839
|
if (containerSize.w === 0 || containerSize.h === 0) return;
|
|
785
840
|
const prevKey = prevBoundsKeyRef.current;
|
|
786
841
|
const prevSize = prevSizeRef.current;
|
|
@@ -813,10 +868,15 @@ function FocusHandler({
|
|
|
813
868
|
store.getState().setMinZoom(minZoomProp != null ? minZoomProp : 0.5);
|
|
814
869
|
}
|
|
815
870
|
let vp = { x, y, zoom };
|
|
816
|
-
if (
|
|
817
|
-
|
|
871
|
+
if (isInitial || isBoundsChange) {
|
|
872
|
+
setViewport(vp, { duration: isInitial ? 0 : duration });
|
|
873
|
+
onInitialFit == null ? void 0 : onInitialFit();
|
|
874
|
+
} else {
|
|
875
|
+
if (extent) {
|
|
876
|
+
vp = clampViewport(vp, containerSize.w, containerSize.h, extent);
|
|
877
|
+
}
|
|
878
|
+
setViewport(vp, { duration });
|
|
818
879
|
}
|
|
819
|
-
setViewport(vp, { duration });
|
|
820
880
|
}, [
|
|
821
881
|
boundsKey,
|
|
822
882
|
padding,
|
|
@@ -829,9 +889,10 @@ function FocusHandler({
|
|
|
829
889
|
setViewport,
|
|
830
890
|
clampBounds,
|
|
831
891
|
minZoomProp,
|
|
832
|
-
store
|
|
892
|
+
store,
|
|
893
|
+
onInitialFit
|
|
833
894
|
]);
|
|
834
|
-
return /* @__PURE__ */
|
|
895
|
+
return /* @__PURE__ */ import_react7.default.createElement(
|
|
835
896
|
"div",
|
|
836
897
|
{
|
|
837
898
|
ref: containerRef,
|
|
@@ -844,45 +905,8 @@ function FocusHandler({
|
|
|
844
905
|
}
|
|
845
906
|
);
|
|
846
907
|
}
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
smoothstep: "smoothstep",
|
|
850
|
-
bezier: "default",
|
|
851
|
-
default: "default"
|
|
852
|
-
};
|
|
853
|
-
function applyEdgeStyles(edges, edgeTypeDefsMap) {
|
|
854
|
-
if (!(edgeTypeDefsMap == null ? void 0 : edgeTypeDefsMap.size)) return edges;
|
|
855
|
-
return edges.map((edge) => {
|
|
856
|
-
var _a;
|
|
857
|
-
const slug = edge.edgeTypeSlug;
|
|
858
|
-
if (!slug) return edge;
|
|
859
|
-
const def = edgeTypeDefsMap.get(slug);
|
|
860
|
-
if (!def) return edge;
|
|
861
|
-
const styled = __spreadValues({}, edge);
|
|
862
|
-
if (!styled.type && def.lineStyle) {
|
|
863
|
-
styled.type = (_a = EDGE_TYPE_MAP[def.lineStyle]) != null ? _a : "default";
|
|
864
|
-
}
|
|
865
|
-
styled.style = __spreadValues(__spreadValues(__spreadValues({}, def.color ? { stroke: def.color } : void 0), def.strokeWidth ? { strokeWidth: def.strokeWidth } : void 0), edge.style);
|
|
866
|
-
if (styled.animated == null && def.animated) styled.animated = true;
|
|
867
|
-
if (!styled.markerStart) {
|
|
868
|
-
const startType = toMarkerType(def.markerStart);
|
|
869
|
-
if (startType) {
|
|
870
|
-
styled.markerStart = __spreadValues({
|
|
871
|
-
type: startType
|
|
872
|
-
}, def.color ? { color: def.color } : void 0);
|
|
873
|
-
}
|
|
874
|
-
}
|
|
875
|
-
if (!styled.markerEnd) {
|
|
876
|
-
const endType = toMarkerType(def.markerEnd);
|
|
877
|
-
if (endType) {
|
|
878
|
-
styled.markerEnd = __spreadValues({
|
|
879
|
-
type: endType
|
|
880
|
-
}, def.color ? { color: def.color } : void 0);
|
|
881
|
-
}
|
|
882
|
-
}
|
|
883
|
-
return styled;
|
|
884
|
-
});
|
|
885
|
-
}
|
|
908
|
+
|
|
909
|
+
// src/ui/Flow/FlowRenderer.tsx
|
|
886
910
|
function FlowRenderer({
|
|
887
911
|
data,
|
|
888
912
|
className,
|
|
@@ -920,15 +944,15 @@ function FlowRenderer({
|
|
|
920
944
|
maxZoom: maxZoomProp
|
|
921
945
|
}) {
|
|
922
946
|
var _a;
|
|
923
|
-
const nodeTypeDefsMap =
|
|
947
|
+
const nodeTypeDefsMap = import_react9.default.useMemo(() => {
|
|
924
948
|
if (!(nodeTypeDefs == null ? void 0 : nodeTypeDefs.length)) return void 0;
|
|
925
949
|
return new Map(nodeTypeDefs.map((d) => [d.slug, d]));
|
|
926
950
|
}, [nodeTypeDefs]);
|
|
927
|
-
const edgeTypeDefsMap =
|
|
951
|
+
const edgeTypeDefsMap = import_react9.default.useMemo(() => {
|
|
928
952
|
if (!(edgeTypeDefs == null ? void 0 : edgeTypeDefs.length)) return void 0;
|
|
929
953
|
return new Map(edgeTypeDefs.map((d) => [d.slug, d]));
|
|
930
954
|
}, [edgeTypeDefs]);
|
|
931
|
-
const nodeTypes =
|
|
955
|
+
const nodeTypes = import_react9.default.useMemo(
|
|
932
956
|
() => createNodeTypes(
|
|
933
957
|
nodeRenderers,
|
|
934
958
|
nodeTypeDefsMap,
|
|
@@ -938,15 +962,15 @@ function FlowRenderer({
|
|
|
938
962
|
),
|
|
939
963
|
[nodeRenderers, nodeTypeDefsMap, frameRenderer, nodeWrapper, renderNode]
|
|
940
964
|
);
|
|
941
|
-
const customEdgeTypes =
|
|
965
|
+
const customEdgeTypes = import_react9.default.useMemo(
|
|
942
966
|
() => createEdgeTypes(edgeRenderers, edgeTypeDefsMap),
|
|
943
967
|
[edgeRenderers, edgeTypeDefsMap]
|
|
944
968
|
);
|
|
945
|
-
const mergedCSS =
|
|
969
|
+
const mergedCSS = import_react9.default.useMemo(() => {
|
|
946
970
|
if (!(nodeTypeDefs == null ? void 0 : nodeTypeDefs.length)) return "";
|
|
947
971
|
return nodeTypeDefs.filter((d) => d.customCSS).map((d) => d.customCSS).join("\n");
|
|
948
972
|
}, [nodeTypeDefs]);
|
|
949
|
-
const styledEdges =
|
|
973
|
+
const styledEdges = import_react9.default.useMemo(() => {
|
|
950
974
|
var _a2;
|
|
951
975
|
let edges = applyEdgeStyles((_a2 = data == null ? void 0 : data.edges) != null ? _a2 : [], edgeTypeDefsMap);
|
|
952
976
|
if (edgeRenderers) {
|
|
@@ -960,7 +984,7 @@ function FlowRenderer({
|
|
|
960
984
|
}
|
|
961
985
|
return edges;
|
|
962
986
|
}, [data == null ? void 0 : data.edges, edgeTypeDefsMap, edgeRenderers]);
|
|
963
|
-
const translateExtent =
|
|
987
|
+
const translateExtent = import_react9.default.useMemo(() => {
|
|
964
988
|
if (translateExtentProp) return translateExtentProp;
|
|
965
989
|
const es = clampBounds != null ? clampBounds : bounds;
|
|
966
990
|
if (!es) return void 0;
|
|
@@ -970,9 +994,22 @@ function FlowRenderer({
|
|
|
970
994
|
[es.x + es.width * (1 + ep), es.y + es.height * (1 + ep)]
|
|
971
995
|
];
|
|
972
996
|
}, [translateExtentProp, clampBounds, bounds, focusPadding]);
|
|
997
|
+
const boundsKey = bounds ? `${bounds.x},${bounds.y},${bounds.width},${bounds.height}` : "";
|
|
998
|
+
const extentReadyRef = import_react9.default.useRef(false);
|
|
999
|
+
const prevBoundsKeyRef = import_react9.default.useRef(boundsKey);
|
|
1000
|
+
if (prevBoundsKeyRef.current !== boundsKey) {
|
|
1001
|
+
prevBoundsKeyRef.current = boundsKey;
|
|
1002
|
+
extentReadyRef.current = false;
|
|
1003
|
+
}
|
|
1004
|
+
const [, rerender] = import_react9.default.useReducer((x) => x + 1, 0);
|
|
1005
|
+
const handleInitialFit = import_react9.default.useCallback(() => {
|
|
1006
|
+
extentReadyRef.current = true;
|
|
1007
|
+
rerender();
|
|
1008
|
+
}, []);
|
|
1009
|
+
const activeExtent = !bounds || extentReadyRef.current ? translateExtent : void 0;
|
|
973
1010
|
if (!data) return null;
|
|
974
1011
|
const resolvedDefaultViewport = defaultViewportProp != null ? defaultViewportProp : !fitView && data.viewport ? data.viewport : void 0;
|
|
975
|
-
return /* @__PURE__ */
|
|
1012
|
+
return /* @__PURE__ */ import_react9.default.createElement(import_react10.ReactFlowProvider, null, /* @__PURE__ */ import_react9.default.createElement(
|
|
976
1013
|
"div",
|
|
977
1014
|
{
|
|
978
1015
|
className,
|
|
@@ -982,8 +1019,8 @@ function FlowRenderer({
|
|
|
982
1019
|
background: "transparent"
|
|
983
1020
|
}, style)
|
|
984
1021
|
},
|
|
985
|
-
/* @__PURE__ */
|
|
986
|
-
|
|
1022
|
+
/* @__PURE__ */ import_react9.default.createElement(
|
|
1023
|
+
import_react10.ReactFlow,
|
|
987
1024
|
{
|
|
988
1025
|
nodes: (_a = data.nodes) != null ? _a : [],
|
|
989
1026
|
edges: styledEdges,
|
|
@@ -991,7 +1028,7 @@ function FlowRenderer({
|
|
|
991
1028
|
edgeTypes: customEdgeTypes,
|
|
992
1029
|
defaultViewport: resolvedDefaultViewport,
|
|
993
1030
|
fitView: bounds ? false : fitView,
|
|
994
|
-
translateExtent,
|
|
1031
|
+
translateExtent: activeExtent,
|
|
995
1032
|
onNodeClick,
|
|
996
1033
|
onNodeDoubleClick,
|
|
997
1034
|
onNodeContextMenu,
|
|
@@ -1012,16 +1049,16 @@ function FlowRenderer({
|
|
|
1012
1049
|
maxZoom: maxZoomProp,
|
|
1013
1050
|
proOptions: { hideAttribution: true }
|
|
1014
1051
|
},
|
|
1015
|
-
mergedCSS && /* @__PURE__ */
|
|
1016
|
-
background && /* @__PURE__ */
|
|
1017
|
-
controls && /* @__PURE__ */
|
|
1018
|
-
minimap && /* @__PURE__ */
|
|
1019
|
-
|
|
1052
|
+
mergedCSS && /* @__PURE__ */ import_react9.default.createElement("style", { dangerouslySetInnerHTML: { __html: mergedCSS } }),
|
|
1053
|
+
background && /* @__PURE__ */ import_react9.default.createElement(import_react10.Background, null),
|
|
1054
|
+
controls && /* @__PURE__ */ import_react9.default.createElement(import_react10.Controls, null),
|
|
1055
|
+
minimap && /* @__PURE__ */ import_react9.default.createElement(
|
|
1056
|
+
import_react10.MiniMap,
|
|
1020
1057
|
{
|
|
1021
1058
|
nodeColor: minimapNodeColor
|
|
1022
1059
|
}
|
|
1023
1060
|
),
|
|
1024
|
-
bounds && /* @__PURE__ */
|
|
1061
|
+
bounds && /* @__PURE__ */ import_react9.default.createElement(
|
|
1025
1062
|
FocusHandler,
|
|
1026
1063
|
{
|
|
1027
1064
|
bounds,
|
|
@@ -1031,7 +1068,8 @@ function FlowRenderer({
|
|
|
1031
1068
|
responsive: responsiveFit != null ? responsiveFit : true,
|
|
1032
1069
|
extent: translateExtent,
|
|
1033
1070
|
clampBounds,
|
|
1034
|
-
minZoomProp
|
|
1071
|
+
minZoomProp,
|
|
1072
|
+
onInitialFit: handleInitialFit
|
|
1035
1073
|
}
|
|
1036
1074
|
),
|
|
1037
1075
|
children
|