oasis-editor 0.0.21 → 0.0.23
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/{OasisEditorApp-D-O4XHvu.js → OasisEditorApp-DsrdPjCM.js} +6 -3
- package/dist/assets/{importDocxWorker-D4P4_drI.js → importDocxWorker-DcrboJNQ.js} +1 -1
- package/dist/{index-BmpiQ2A0.js → index-Cok7gHa_.js} +1465 -83
- package/dist/layoutProjection/presetGeometry/catalog.d.ts +2 -0
- package/dist/layoutProjection/presetGeometry/dispatcher.d.ts +3 -0
- package/dist/layoutProjection/presetGeometry/families.d.ts +37 -0
- package/dist/layoutProjection/presetGeometry/primitives.d.ts +13 -0
- package/dist/layoutProjection/presetGeometry/types.d.ts +20 -0
- package/dist/layoutProjection/presetGeometry.d.ts +3 -24
- package/dist/oasis-editor.css +1 -1
- package/dist/oasis-editor.js +1 -1
- package/dist/oasis-editor.umd.cjs +4 -4
- package/package.json +1 -1
|
@@ -2438,7 +2438,7 @@ function OasisEditorAppLazy(props = {}) {
|
|
|
2438
2438
|
onCleanup(() => {
|
|
2439
2439
|
cancelled = true;
|
|
2440
2440
|
});
|
|
2441
|
-
import("./OasisEditorApp-
|
|
2441
|
+
import("./OasisEditorApp-DsrdPjCM.js").then((m) => {
|
|
2442
2442
|
cancelled = true;
|
|
2443
2443
|
setProgress(1);
|
|
2444
2444
|
setTimeout(() => setApp(() => m.OasisEditorApp), 180);
|
|
@@ -14805,52 +14805,199 @@ function drawTable(ctx, table, tableSegment, state, originX, originY, contentWid
|
|
|
14805
14805
|
});
|
|
14806
14806
|
}
|
|
14807
14807
|
}
|
|
14808
|
-
const
|
|
14809
|
-
|
|
14810
|
-
|
|
14811
|
-
|
|
14812
|
-
|
|
14813
|
-
|
|
14814
|
-
|
|
14815
|
-
|
|
14816
|
-
|
|
14817
|
-
|
|
14818
|
-
|
|
14819
|
-
|
|
14820
|
-
|
|
14821
|
-
|
|
14822
|
-
|
|
14823
|
-
|
|
14824
|
-
|
|
14825
|
-
|
|
14826
|
-
|
|
14827
|
-
|
|
14828
|
-
|
|
14829
|
-
|
|
14830
|
-
|
|
14831
|
-
|
|
14832
|
-
|
|
14833
|
-
|
|
14834
|
-
|
|
14835
|
-
|
|
14836
|
-
|
|
14837
|
-
|
|
14838
|
-
|
|
14839
|
-
|
|
14840
|
-
|
|
14841
|
-
|
|
14842
|
-
|
|
14843
|
-
|
|
14844
|
-
|
|
14845
|
-
|
|
14846
|
-
|
|
14847
|
-
|
|
14848
|
-
|
|
14849
|
-
|
|
14850
|
-
|
|
14851
|
-
|
|
14852
|
-
|
|
14808
|
+
const SUPPORTED_PRESET_GEOMETRIES = /* @__PURE__ */ new Set([
|
|
14809
|
+
"accentBorderCallout1",
|
|
14810
|
+
"accentBorderCallout2",
|
|
14811
|
+
"accentBorderCallout3",
|
|
14812
|
+
"accentCallout1",
|
|
14813
|
+
"accentCallout2",
|
|
14814
|
+
"accentCallout3",
|
|
14815
|
+
"actionButtonBackPrevious",
|
|
14816
|
+
"actionButtonBeginning",
|
|
14817
|
+
"actionButtonBlank",
|
|
14818
|
+
"actionButtonDocument",
|
|
14819
|
+
"actionButtonEnd",
|
|
14820
|
+
"actionButtonForwardNext",
|
|
14821
|
+
"actionButtonHelp",
|
|
14822
|
+
"actionButtonHome",
|
|
14823
|
+
"actionButtonInformation",
|
|
14824
|
+
"actionButtonMovie",
|
|
14825
|
+
"actionButtonReturn",
|
|
14826
|
+
"actionButtonSound",
|
|
14827
|
+
"arc",
|
|
14828
|
+
"bentArrow",
|
|
14829
|
+
"bentConnector2",
|
|
14830
|
+
"bentConnector3",
|
|
14831
|
+
"bentConnector4",
|
|
14832
|
+
"bentConnector5",
|
|
14833
|
+
"bentUpArrow",
|
|
14834
|
+
"bevel",
|
|
14835
|
+
"blockArc",
|
|
14836
|
+
"borderCallout1",
|
|
14837
|
+
"borderCallout2",
|
|
14838
|
+
"borderCallout3",
|
|
14839
|
+
"bracePair",
|
|
14840
|
+
"bracketPair",
|
|
14841
|
+
"callout1",
|
|
14842
|
+
"callout2",
|
|
14843
|
+
"callout3",
|
|
14844
|
+
"can",
|
|
14845
|
+
"chartPlus",
|
|
14846
|
+
"chartStar",
|
|
14847
|
+
"chartX",
|
|
14848
|
+
"chevron",
|
|
14849
|
+
"chord",
|
|
14850
|
+
"circularArrow",
|
|
14851
|
+
"cloud",
|
|
14852
|
+
"cloudCallout",
|
|
14853
|
+
"corner",
|
|
14854
|
+
"cornerTabs",
|
|
14855
|
+
"cube",
|
|
14856
|
+
"curvedConnector2",
|
|
14857
|
+
"curvedConnector3",
|
|
14858
|
+
"curvedConnector4",
|
|
14859
|
+
"curvedConnector5",
|
|
14860
|
+
"curvedDownArrow",
|
|
14861
|
+
"curvedLeftArrow",
|
|
14862
|
+
"curvedRightArrow",
|
|
14863
|
+
"curvedUpArrow",
|
|
14864
|
+
"decagon",
|
|
14865
|
+
"diagStripe",
|
|
14866
|
+
"diamond",
|
|
14867
|
+
"dodecagon",
|
|
14868
|
+
"donut",
|
|
14869
|
+
"doubleWave",
|
|
14870
|
+
"downArrow",
|
|
14871
|
+
"downArrowCallout",
|
|
14872
|
+
"ellipse",
|
|
14873
|
+
"ellipseRibbon",
|
|
14874
|
+
"ellipseRibbon2",
|
|
14875
|
+
"flowChartAlternateProcess",
|
|
14876
|
+
"flowChartCollate",
|
|
14877
|
+
"flowChartConnector",
|
|
14878
|
+
"flowChartDecision",
|
|
14879
|
+
"flowChartDelay",
|
|
14880
|
+
"flowChartDisplay",
|
|
14881
|
+
"flowChartDocument",
|
|
14882
|
+
"flowChartExtract",
|
|
14883
|
+
"flowChartInputOutput",
|
|
14884
|
+
"flowChartInternalStorage",
|
|
14885
|
+
"flowChartMagneticDisk",
|
|
14886
|
+
"flowChartMagneticDrum",
|
|
14887
|
+
"flowChartMagneticTape",
|
|
14888
|
+
"flowChartManualInput",
|
|
14889
|
+
"flowChartManualOperation",
|
|
14890
|
+
"flowChartMerge",
|
|
14891
|
+
"flowChartMultidocument",
|
|
14892
|
+
"flowChartOfflineStorage",
|
|
14893
|
+
"flowChartOffpageConnector",
|
|
14894
|
+
"flowChartOnlineStorage",
|
|
14895
|
+
"flowChartOr",
|
|
14896
|
+
"flowChartPredefinedProcess",
|
|
14897
|
+
"flowChartPreparation",
|
|
14898
|
+
"flowChartProcess",
|
|
14899
|
+
"flowChartPunchedCard",
|
|
14900
|
+
"flowChartPunchedTape",
|
|
14901
|
+
"flowChartSort",
|
|
14902
|
+
"flowChartSummingJunction",
|
|
14903
|
+
"flowChartTerminator",
|
|
14904
|
+
"foldedCorner",
|
|
14905
|
+
"frame",
|
|
14906
|
+
"funnel",
|
|
14907
|
+
"gear6",
|
|
14908
|
+
"gear9",
|
|
14909
|
+
"halfFrame",
|
|
14910
|
+
"heart",
|
|
14911
|
+
"heptagon",
|
|
14912
|
+
"hexagon",
|
|
14913
|
+
"homePlate",
|
|
14914
|
+
"horizontalScroll",
|
|
14915
|
+
"irregularSeal1",
|
|
14916
|
+
"irregularSeal2",
|
|
14917
|
+
"leftArrow",
|
|
14918
|
+
"leftArrowCallout",
|
|
14919
|
+
"leftBrace",
|
|
14920
|
+
"leftBracket",
|
|
14921
|
+
"leftCircularArrow",
|
|
14922
|
+
"leftRightArrow",
|
|
14923
|
+
"leftRightArrowCallout",
|
|
14924
|
+
"leftRightCircularArrow",
|
|
14925
|
+
"leftRightRibbon",
|
|
14926
|
+
"leftRightUpArrow",
|
|
14927
|
+
"leftUpArrow",
|
|
14928
|
+
"lightningBolt",
|
|
14929
|
+
"line",
|
|
14930
|
+
"lineInv",
|
|
14931
|
+
"mathDivide",
|
|
14932
|
+
"mathEqual",
|
|
14933
|
+
"mathMinus",
|
|
14934
|
+
"mathMultiply",
|
|
14935
|
+
"mathNotEqual",
|
|
14936
|
+
"mathPlus",
|
|
14937
|
+
"moon",
|
|
14938
|
+
"nonIsoscelesTrapezoid",
|
|
14939
|
+
"noSmoking",
|
|
14940
|
+
"notchedRightArrow",
|
|
14941
|
+
"octagon",
|
|
14942
|
+
"parallelogram",
|
|
14943
|
+
"pentagon",
|
|
14944
|
+
"pie",
|
|
14945
|
+
"pieWedge",
|
|
14946
|
+
"plaque",
|
|
14947
|
+
"plaqueTabs",
|
|
14948
|
+
"plus",
|
|
14949
|
+
"quadArrow",
|
|
14950
|
+
"quadArrowCallout",
|
|
14951
|
+
"rect",
|
|
14952
|
+
"ribbon",
|
|
14953
|
+
"ribbon2",
|
|
14954
|
+
"rightArrow",
|
|
14955
|
+
"rightArrowCallout",
|
|
14956
|
+
"rightBrace",
|
|
14957
|
+
"rightBracket",
|
|
14958
|
+
"round1Rect",
|
|
14959
|
+
"round2DiagRect",
|
|
14960
|
+
"round2SameRect",
|
|
14961
|
+
"roundRect",
|
|
14962
|
+
"rtTriangle",
|
|
14963
|
+
"smileyFace",
|
|
14964
|
+
"snip1Rect",
|
|
14965
|
+
"snip2DiagRect",
|
|
14966
|
+
"snip2SameRect",
|
|
14967
|
+
"snipRoundRect",
|
|
14968
|
+
"squareTabs",
|
|
14969
|
+
"star10",
|
|
14970
|
+
"star12",
|
|
14971
|
+
"star16",
|
|
14972
|
+
"star24",
|
|
14973
|
+
"star32",
|
|
14974
|
+
"star4",
|
|
14975
|
+
"star5",
|
|
14976
|
+
"star6",
|
|
14977
|
+
"star7",
|
|
14978
|
+
"star8",
|
|
14979
|
+
"straightConnector1",
|
|
14980
|
+
"stripedRightArrow",
|
|
14981
|
+
"sun",
|
|
14982
|
+
"swooshArrow",
|
|
14983
|
+
"teardrop",
|
|
14984
|
+
"trapezoid",
|
|
14985
|
+
"triangle",
|
|
14986
|
+
"upArrow",
|
|
14987
|
+
"upArrowCallout",
|
|
14988
|
+
"upDownArrow",
|
|
14989
|
+
"upDownArrowCallout",
|
|
14990
|
+
"uturnArrow",
|
|
14991
|
+
"verticalScroll",
|
|
14992
|
+
"wave",
|
|
14993
|
+
"wedgeEllipseCallout",
|
|
14994
|
+
"wedgeRectCallout",
|
|
14995
|
+
"wedgeRoundRectCallout"
|
|
14996
|
+
]);
|
|
14997
|
+
function isPresetGeometrySupported(preset) {
|
|
14998
|
+
return Boolean(preset && SUPPORTED_PRESET_GEOMETRIES.has(preset));
|
|
14853
14999
|
}
|
|
15000
|
+
const KAPPA = 0.5522847498307936;
|
|
14854
15001
|
function polygon(points) {
|
|
14855
15002
|
const segments = [];
|
|
14856
15003
|
points.forEach(([px, py], index) => {
|
|
@@ -14861,6 +15008,14 @@ function polygon(points) {
|
|
|
14861
15008
|
segments.push({ type: "close" });
|
|
14862
15009
|
return segments;
|
|
14863
15010
|
}
|
|
15011
|
+
function rectSegments(x, y, width, height) {
|
|
15012
|
+
return polygon([
|
|
15013
|
+
[x, y],
|
|
15014
|
+
[x + width, y],
|
|
15015
|
+
[x + width, y + height],
|
|
15016
|
+
[x, y + height]
|
|
15017
|
+
]);
|
|
15018
|
+
}
|
|
14864
15019
|
function ellipseSegments(cx, cy, rx, ry) {
|
|
14865
15020
|
const ox = rx * KAPPA;
|
|
14866
15021
|
const oy = ry * KAPPA;
|
|
@@ -14905,6 +15060,50 @@ function ellipseSegments(cx, cy, rx, ry) {
|
|
|
14905
15060
|
{ type: "close" }
|
|
14906
15061
|
];
|
|
14907
15062
|
}
|
|
15063
|
+
function pointOnEllipse(cx, cy, rx, ry, degrees) {
|
|
15064
|
+
const radians = degrees * Math.PI / 180;
|
|
15065
|
+
return [cx + Math.cos(radians) * rx, cy + Math.sin(radians) * ry];
|
|
15066
|
+
}
|
|
15067
|
+
function arcSegments(cx, cy, rx, ry, start, end) {
|
|
15068
|
+
const steps = Math.max(4, Math.ceil(Math.abs(end - start) / 30));
|
|
15069
|
+
const points = Array.from(
|
|
15070
|
+
{ length: steps + 1 },
|
|
15071
|
+
(_, index) => pointOnEllipse(cx, cy, rx, ry, start + (end - start) * index / steps)
|
|
15072
|
+
);
|
|
15073
|
+
return points.map(
|
|
15074
|
+
([px, py], index) => index === 0 ? { type: "move", x: px, y: py } : { type: "line", x: px, y: py }
|
|
15075
|
+
);
|
|
15076
|
+
}
|
|
15077
|
+
function pieSegments(cx, cy, rx, ry, start, end) {
|
|
15078
|
+
return [
|
|
15079
|
+
{ type: "move", x: cx, y: cy },
|
|
15080
|
+
...arcSegments(cx, cy, rx, ry, start, end).slice(1),
|
|
15081
|
+
{ type: "close" }
|
|
15082
|
+
];
|
|
15083
|
+
}
|
|
15084
|
+
function regularPolygon(cx, cy, rx, ry, sides, startDegrees) {
|
|
15085
|
+
const points = Array.from(
|
|
15086
|
+
{ length: sides },
|
|
15087
|
+
(_, index) => pointOnEllipse(cx, cy, rx, ry, startDegrees + 360 * index / sides)
|
|
15088
|
+
);
|
|
15089
|
+
return polygon(points);
|
|
15090
|
+
}
|
|
15091
|
+
function starPointCount(preset) {
|
|
15092
|
+
return Number.parseInt(preset.replace("star", ""), 10);
|
|
15093
|
+
}
|
|
15094
|
+
function starSegments(cx, cy, rx, ry, points, innerRatio = 0.45) {
|
|
15095
|
+
const vertices = Array.from({ length: points * 2 }, (_, index) => {
|
|
15096
|
+
const radius = index % 2 === 0 ? 1 : innerRatio;
|
|
15097
|
+
return pointOnEllipse(
|
|
15098
|
+
cx,
|
|
15099
|
+
cy,
|
|
15100
|
+
rx * radius,
|
|
15101
|
+
ry * radius,
|
|
15102
|
+
-90 + 180 * index / points
|
|
15103
|
+
);
|
|
15104
|
+
});
|
|
15105
|
+
return polygon(vertices);
|
|
15106
|
+
}
|
|
14908
15107
|
function roundRectSegments(x, y, width, height, radius) {
|
|
14909
15108
|
const r = Math.min(radius, width / 2, height / 2);
|
|
14910
15109
|
const right = x + width;
|
|
@@ -14947,6 +15146,1163 @@ function roundRectSegments(x, y, width, height, radius) {
|
|
|
14947
15146
|
{ type: "close" }
|
|
14948
15147
|
];
|
|
14949
15148
|
}
|
|
15149
|
+
function mixedRectSegments(x, y, width, height, tl, tr, br, bl) {
|
|
15150
|
+
return snipRoundRectLikeSegments(x, y, width, height, {
|
|
15151
|
+
tlRound: tl,
|
|
15152
|
+
trRound: tr,
|
|
15153
|
+
brRound: br,
|
|
15154
|
+
blRound: bl
|
|
15155
|
+
});
|
|
15156
|
+
}
|
|
15157
|
+
function snipRoundRectSegments(x, y, width, height) {
|
|
15158
|
+
return snipRoundRectLikeSegments(x, y, width, height, {
|
|
15159
|
+
tlSnip: true,
|
|
15160
|
+
brRound: true
|
|
15161
|
+
});
|
|
15162
|
+
}
|
|
15163
|
+
function snipRectSegments(x, y, width, height, tl, tr, br, bl) {
|
|
15164
|
+
return snipRoundRectLikeSegments(x, y, width, height, {
|
|
15165
|
+
tlSnip: tl,
|
|
15166
|
+
trSnip: tr,
|
|
15167
|
+
brSnip: br,
|
|
15168
|
+
blSnip: bl
|
|
15169
|
+
});
|
|
15170
|
+
}
|
|
15171
|
+
function snipRoundRectLikeSegments(x, y, width, height, corners) {
|
|
15172
|
+
const r = Math.min(width, height) * 0.16;
|
|
15173
|
+
const right = x + width;
|
|
15174
|
+
const bottom = y + height;
|
|
15175
|
+
const points = [
|
|
15176
|
+
[x + (corners.tlSnip || corners.tlRound ? r : 0), y],
|
|
15177
|
+
[right - (corners.trSnip || corners.trRound ? r : 0), y],
|
|
15178
|
+
[right, y + (corners.trSnip || corners.trRound ? r : 0)],
|
|
15179
|
+
[right, bottom - (corners.brSnip || corners.brRound ? r : 0)],
|
|
15180
|
+
[right - (corners.brSnip || corners.brRound ? r : 0), bottom],
|
|
15181
|
+
[x + (corners.blSnip || corners.blRound ? r : 0), bottom],
|
|
15182
|
+
[x, bottom - (corners.blSnip || corners.blRound ? r : 0)],
|
|
15183
|
+
[x, y + (corners.tlSnip || corners.tlRound ? r : 0)]
|
|
15184
|
+
];
|
|
15185
|
+
return polygon(points);
|
|
15186
|
+
}
|
|
15187
|
+
function arrowSegments(key, x, y, width, height) {
|
|
15188
|
+
const right = x + width;
|
|
15189
|
+
const bottom = y + height;
|
|
15190
|
+
const cx = x + width / 2;
|
|
15191
|
+
const cy = y + height / 2;
|
|
15192
|
+
if (key === "upDownArrow")
|
|
15193
|
+
return polygon([
|
|
15194
|
+
[cx, y],
|
|
15195
|
+
[right, y + height * 0.28],
|
|
15196
|
+
[x + width * 0.62, y + height * 0.28],
|
|
15197
|
+
[x + width * 0.62, y + height * 0.72],
|
|
15198
|
+
[right, y + height * 0.72],
|
|
15199
|
+
[cx, bottom],
|
|
15200
|
+
[x, y + height * 0.72],
|
|
15201
|
+
[x + width * 0.38, y + height * 0.72],
|
|
15202
|
+
[x + width * 0.38, y + height * 0.28],
|
|
15203
|
+
[x, y + height * 0.28]
|
|
15204
|
+
]);
|
|
15205
|
+
if (key === "leftRightArrow" || key === "leftRightUpArrow")
|
|
15206
|
+
return polygon([
|
|
15207
|
+
[x, cy],
|
|
15208
|
+
[x + width * 0.24, y],
|
|
15209
|
+
[x + width * 0.24, y + height * 0.32],
|
|
15210
|
+
[x + width * 0.76, y + height * 0.32],
|
|
15211
|
+
[x + width * 0.76, y],
|
|
15212
|
+
[right, cy],
|
|
15213
|
+
[x + width * 0.76, bottom],
|
|
15214
|
+
[x + width * 0.76, y + height * 0.68],
|
|
15215
|
+
[x + width * 0.24, y + height * 0.68],
|
|
15216
|
+
[x + width * 0.24, bottom]
|
|
15217
|
+
]);
|
|
15218
|
+
if (key === "quadArrow")
|
|
15219
|
+
return starSegments(cx, cy, width * 0.5, height * 0.5, 4, 0.38);
|
|
15220
|
+
if (key === "leftArrow" || key === "leftCircularArrow")
|
|
15221
|
+
return polygon([
|
|
15222
|
+
[x, cy],
|
|
15223
|
+
[x + width * 0.38, y],
|
|
15224
|
+
[x + width * 0.38, y + height * 0.28],
|
|
15225
|
+
[right, y + height * 0.28],
|
|
15226
|
+
[right, y + height * 0.72],
|
|
15227
|
+
[x + width * 0.38, y + height * 0.72],
|
|
15228
|
+
[x + width * 0.38, bottom]
|
|
15229
|
+
]);
|
|
15230
|
+
if (key === "upArrow" || key === "bentUpArrow" || key === "curvedUpArrow")
|
|
15231
|
+
return polygon([
|
|
15232
|
+
[cx, y],
|
|
15233
|
+
[right, y + height * 0.38],
|
|
15234
|
+
[x + width * 0.68, y + height * 0.38],
|
|
15235
|
+
[x + width * 0.68, bottom],
|
|
15236
|
+
[x + width * 0.32, bottom],
|
|
15237
|
+
[x + width * 0.32, y + height * 0.38],
|
|
15238
|
+
[x, y + height * 0.38]
|
|
15239
|
+
]);
|
|
15240
|
+
if (key === "downArrow" || key === "curvedDownArrow")
|
|
15241
|
+
return polygon([
|
|
15242
|
+
[x + width * 0.32, y],
|
|
15243
|
+
[x + width * 0.68, y],
|
|
15244
|
+
[x + width * 0.68, y + height * 0.62],
|
|
15245
|
+
[right, y + height * 0.62],
|
|
15246
|
+
[cx, bottom],
|
|
15247
|
+
[x, y + height * 0.62],
|
|
15248
|
+
[x + width * 0.32, y + height * 0.62]
|
|
15249
|
+
]);
|
|
15250
|
+
if (key === "circularArrow" || key === "leftRightCircularArrow")
|
|
15251
|
+
return blockArcSegments(cx, cy, width / 2, height / 2);
|
|
15252
|
+
if (key === "uturnArrow")
|
|
15253
|
+
return polygon([
|
|
15254
|
+
[x + width * 0.2, bottom],
|
|
15255
|
+
[x + width * 0.2, y + height * 0.35],
|
|
15256
|
+
[x + width * 0.62, y + height * 0.35],
|
|
15257
|
+
[x + width * 0.62, y],
|
|
15258
|
+
[right, y + height * 0.5],
|
|
15259
|
+
[x + width * 0.62, bottom],
|
|
15260
|
+
[x + width * 0.62, y + height * 0.65],
|
|
15261
|
+
[x + width * 0.38, y + height * 0.65],
|
|
15262
|
+
[x + width * 0.38, bottom]
|
|
15263
|
+
]);
|
|
15264
|
+
if (key === "notchedRightArrow")
|
|
15265
|
+
return polygon([
|
|
15266
|
+
[x, y],
|
|
15267
|
+
[right - width * 0.28, y],
|
|
15268
|
+
[right, cy],
|
|
15269
|
+
[right - width * 0.28, bottom],
|
|
15270
|
+
[x, bottom],
|
|
15271
|
+
[x + width * 0.18, cy]
|
|
15272
|
+
]);
|
|
15273
|
+
if (key === "stripedRightArrow")
|
|
15274
|
+
return polygon([
|
|
15275
|
+
[x + width * 0.16, y],
|
|
15276
|
+
[right - width * 0.28, y],
|
|
15277
|
+
[right, cy],
|
|
15278
|
+
[right - width * 0.28, bottom],
|
|
15279
|
+
[x + width * 0.16, bottom],
|
|
15280
|
+
[x + width * 0.34, cy]
|
|
15281
|
+
]);
|
|
15282
|
+
return polygon([
|
|
15283
|
+
[x, y + height * 0.28],
|
|
15284
|
+
[right - width * 0.38, y + height * 0.28],
|
|
15285
|
+
[right - width * 0.38, y],
|
|
15286
|
+
[right, cy],
|
|
15287
|
+
[right - width * 0.38, bottom],
|
|
15288
|
+
[right - width * 0.38, y + height * 0.72],
|
|
15289
|
+
[x, y + height * 0.72]
|
|
15290
|
+
]);
|
|
15291
|
+
}
|
|
15292
|
+
function calloutSegments(key, x, y, width, height) {
|
|
15293
|
+
if (key.startsWith("wedgeEllipse")) {
|
|
15294
|
+
return [
|
|
15295
|
+
...ellipseSegments(
|
|
15296
|
+
x + width / 2,
|
|
15297
|
+
y + height / 2,
|
|
15298
|
+
width / 2,
|
|
15299
|
+
height * 0.42
|
|
15300
|
+
),
|
|
15301
|
+
{ type: "move", x: x + width * 0.55, y: y + height * 0.82 },
|
|
15302
|
+
{ type: "line", x: x + width * 0.24, y: y + height },
|
|
15303
|
+
{ type: "line", x: x + width * 0.45, y: y + height * 0.75 }
|
|
15304
|
+
];
|
|
15305
|
+
}
|
|
15306
|
+
const r = key.startsWith("wedgeRound") ? Math.min(width, height) * 0.08 : 0;
|
|
15307
|
+
const body = r > 0 ? roundRectSegments(x, y, width, height * 0.82, r) : rectSegments(x, y, width, height * 0.82);
|
|
15308
|
+
return [
|
|
15309
|
+
...body,
|
|
15310
|
+
{ type: "move", x: x + width * 0.58, y: y + height * 0.82 },
|
|
15311
|
+
{ type: "line", x: x + width * 0.26, y: y + height },
|
|
15312
|
+
{ type: "line", x: x + width * 0.44, y: y + height * 0.82 },
|
|
15313
|
+
{ type: "close" }
|
|
15314
|
+
];
|
|
15315
|
+
}
|
|
15316
|
+
function connectorSegments(key, x, y, width, height) {
|
|
15317
|
+
const right = x + width;
|
|
15318
|
+
const bottom = y + height;
|
|
15319
|
+
if (key.startsWith("curved")) {
|
|
15320
|
+
return [
|
|
15321
|
+
{ type: "move", x, y },
|
|
15322
|
+
{
|
|
15323
|
+
type: "cubic",
|
|
15324
|
+
x1: x + width * 0.7,
|
|
15325
|
+
y1: y,
|
|
15326
|
+
x2: x + width * 0.3,
|
|
15327
|
+
y2: bottom,
|
|
15328
|
+
x: right,
|
|
15329
|
+
y: bottom
|
|
15330
|
+
}
|
|
15331
|
+
];
|
|
15332
|
+
}
|
|
15333
|
+
if (key === "bentConnector2")
|
|
15334
|
+
return [
|
|
15335
|
+
{ type: "move", x, y },
|
|
15336
|
+
{ type: "line", x: right, y: bottom }
|
|
15337
|
+
];
|
|
15338
|
+
if (key === "bentConnector3")
|
|
15339
|
+
return [
|
|
15340
|
+
{ type: "move", x, y },
|
|
15341
|
+
{ type: "line", x: right, y },
|
|
15342
|
+
{ type: "line", x: right, y: bottom }
|
|
15343
|
+
];
|
|
15344
|
+
if (key === "bentConnector4")
|
|
15345
|
+
return [
|
|
15346
|
+
{ type: "move", x, y },
|
|
15347
|
+
{ type: "line", x: x + width * 0.5, y },
|
|
15348
|
+
{ type: "line", x: x + width * 0.5, y: bottom },
|
|
15349
|
+
{ type: "line", x: right, y: bottom }
|
|
15350
|
+
];
|
|
15351
|
+
if (key === "bentConnector5")
|
|
15352
|
+
return [
|
|
15353
|
+
{ type: "move", x, y },
|
|
15354
|
+
{ type: "line", x: x + width * 0.34, y },
|
|
15355
|
+
{ type: "line", x: x + width * 0.34, y: bottom },
|
|
15356
|
+
{ type: "line", x: x + width * 0.66, y: bottom },
|
|
15357
|
+
{ type: "line", x: x + width * 0.66, y },
|
|
15358
|
+
{ type: "line", x: right, y }
|
|
15359
|
+
];
|
|
15360
|
+
return [
|
|
15361
|
+
{ type: "move", x, y },
|
|
15362
|
+
{ type: "line", x: right, y: bottom }
|
|
15363
|
+
];
|
|
15364
|
+
}
|
|
15365
|
+
function flowChartSegments(key, x, y, width, height, resolvePreset) {
|
|
15366
|
+
if (key.includes("Decision"))
|
|
15367
|
+
return resolvePreset("diamond", x, y, width, height);
|
|
15368
|
+
if (key.includes("Connector") || key.includes("SummingJunction") || key.includes("Or")) {
|
|
15369
|
+
return ellipseSegments(
|
|
15370
|
+
x + width / 2,
|
|
15371
|
+
y + height / 2,
|
|
15372
|
+
width / 2,
|
|
15373
|
+
height / 2
|
|
15374
|
+
);
|
|
15375
|
+
}
|
|
15376
|
+
if (key.includes("Terminator")) {
|
|
15377
|
+
return roundRectSegments(
|
|
15378
|
+
x,
|
|
15379
|
+
y,
|
|
15380
|
+
width,
|
|
15381
|
+
height,
|
|
15382
|
+
Math.min(width, height) * 0.28
|
|
15383
|
+
);
|
|
15384
|
+
}
|
|
15385
|
+
if (key.includes("Delay")) {
|
|
15386
|
+
return [
|
|
15387
|
+
...rectSegments(x, y, width * 0.65, height).slice(0, -1),
|
|
15388
|
+
...arcSegments(
|
|
15389
|
+
x + width * 0.65,
|
|
15390
|
+
y + height / 2,
|
|
15391
|
+
width * 0.35,
|
|
15392
|
+
height / 2,
|
|
15393
|
+
-90,
|
|
15394
|
+
90
|
|
15395
|
+
),
|
|
15396
|
+
{ type: "close" }
|
|
15397
|
+
];
|
|
15398
|
+
}
|
|
15399
|
+
if (key.includes("Document")) return waveBottomRect(x, y, width, height);
|
|
15400
|
+
if (key.includes("Data") || key.includes("InputOutput") || key.includes("ManualInput")) {
|
|
15401
|
+
return resolvePreset("parallelogram", x, y, width, height);
|
|
15402
|
+
}
|
|
15403
|
+
if (key.includes("Preparation")) {
|
|
15404
|
+
return resolvePreset("hexagon", x, y, width, height);
|
|
15405
|
+
}
|
|
15406
|
+
if (key.includes("OffpageConnector")) {
|
|
15407
|
+
return resolvePreset("homePlate", x, y, width, height);
|
|
15408
|
+
}
|
|
15409
|
+
if (key.includes("PunchedCard")) {
|
|
15410
|
+
return snipRectSegments(x, y, width, height, true, false, false, false);
|
|
15411
|
+
}
|
|
15412
|
+
if (key.includes("Magnetic")) return canSegments(x, y, width, height);
|
|
15413
|
+
if (key.includes("Collate")) {
|
|
15414
|
+
return polygon([
|
|
15415
|
+
[x, y],
|
|
15416
|
+
[x + width, y],
|
|
15417
|
+
[x, y + height],
|
|
15418
|
+
[x + width, y + height]
|
|
15419
|
+
]);
|
|
15420
|
+
}
|
|
15421
|
+
if (key.includes("Sort"))
|
|
15422
|
+
return resolvePreset("diamond", x, y, width, height);
|
|
15423
|
+
return rectSegments(x, y, width, height);
|
|
15424
|
+
}
|
|
15425
|
+
function actionButtonSegments(key, x, y, width, height, resolvePreset) {
|
|
15426
|
+
const base = roundRectSegments(
|
|
15427
|
+
x,
|
|
15428
|
+
y,
|
|
15429
|
+
width,
|
|
15430
|
+
height,
|
|
15431
|
+
Math.min(width, height) * 0.08
|
|
15432
|
+
);
|
|
15433
|
+
if (key === "actionButtonBlank") return base;
|
|
15434
|
+
return [...base, ...symbolSegments(key, x, y, width, height, resolvePreset)];
|
|
15435
|
+
}
|
|
15436
|
+
function symbolSegments(key, x, y, width, height, resolvePreset) {
|
|
15437
|
+
const cx = x + width / 2;
|
|
15438
|
+
const cy = y + height / 2;
|
|
15439
|
+
if (key.includes("Home"))
|
|
15440
|
+
return polygon([
|
|
15441
|
+
[cx, y + height * 0.25],
|
|
15442
|
+
[x + width * 0.72, cy],
|
|
15443
|
+
[x + width * 0.72, y + height * 0.75],
|
|
15444
|
+
[x + width * 0.28, y + height * 0.75],
|
|
15445
|
+
[x + width * 0.28, cy]
|
|
15446
|
+
]);
|
|
15447
|
+
if (key.includes("Help")) {
|
|
15448
|
+
return ellipseSegments(cx, cy, width * 0.12, height * 0.12);
|
|
15449
|
+
}
|
|
15450
|
+
if (key.includes("Information")) {
|
|
15451
|
+
return rectSegments(
|
|
15452
|
+
cx - width * 0.04,
|
|
15453
|
+
y + height * 0.34,
|
|
15454
|
+
width * 0.08,
|
|
15455
|
+
height * 0.38
|
|
15456
|
+
);
|
|
15457
|
+
}
|
|
15458
|
+
if (key.includes("Sound"))
|
|
15459
|
+
return polygon([
|
|
15460
|
+
[x + width * 0.3, cy],
|
|
15461
|
+
[x + width * 0.45, y + height * 0.35],
|
|
15462
|
+
[x + width * 0.45, y + height * 0.65]
|
|
15463
|
+
]);
|
|
15464
|
+
if (key.includes("Back") || key.includes("Beginning") || key.includes("Return")) {
|
|
15465
|
+
return resolvePreset(
|
|
15466
|
+
"leftArrow",
|
|
15467
|
+
x + width * 0.28,
|
|
15468
|
+
y + height * 0.3,
|
|
15469
|
+
width * 0.45,
|
|
15470
|
+
height * 0.4
|
|
15471
|
+
);
|
|
15472
|
+
}
|
|
15473
|
+
return resolvePreset(
|
|
15474
|
+
"rightArrow",
|
|
15475
|
+
x + width * 0.28,
|
|
15476
|
+
y + height * 0.3,
|
|
15477
|
+
width * 0.45,
|
|
15478
|
+
height * 0.4
|
|
15479
|
+
);
|
|
15480
|
+
}
|
|
15481
|
+
function blockArcSegments(cx, cy, rx, ry) {
|
|
15482
|
+
const outer = arcSegments(cx, cy, rx, ry, -45, 250);
|
|
15483
|
+
const inner = arcSegments(cx, cy, rx * 0.58, ry * 0.58, 250, -45).reverse();
|
|
15484
|
+
return [...outer, ...inner.slice(1), { type: "close" }];
|
|
15485
|
+
}
|
|
15486
|
+
function plusSegments(x, y, width, height) {
|
|
15487
|
+
return polygon([
|
|
15488
|
+
[x + width * 0.38, y],
|
|
15489
|
+
[x + width * 0.62, y],
|
|
15490
|
+
[x + width * 0.62, y + height * 0.38],
|
|
15491
|
+
[x + width, y + height * 0.38],
|
|
15492
|
+
[x + width, y + height * 0.62],
|
|
15493
|
+
[x + width * 0.62, y + height * 0.62],
|
|
15494
|
+
[x + width * 0.62, y + height],
|
|
15495
|
+
[x + width * 0.38, y + height],
|
|
15496
|
+
[x + width * 0.38, y + height * 0.62],
|
|
15497
|
+
[x, y + height * 0.62],
|
|
15498
|
+
[x, y + height * 0.38],
|
|
15499
|
+
[x + width * 0.38, y + height * 0.38]
|
|
15500
|
+
]);
|
|
15501
|
+
}
|
|
15502
|
+
function xSegments(x, y, width, height) {
|
|
15503
|
+
return polygon([
|
|
15504
|
+
[x + width * 0.18, y],
|
|
15505
|
+
[x + width * 0.5, y + height * 0.32],
|
|
15506
|
+
[x + width * 0.82, y],
|
|
15507
|
+
[x + width, y + height * 0.18],
|
|
15508
|
+
[x + width * 0.68, y + height * 0.5],
|
|
15509
|
+
[x + width, y + height * 0.82],
|
|
15510
|
+
[x + width * 0.82, y + height],
|
|
15511
|
+
[x + width * 0.5, y + height * 0.68],
|
|
15512
|
+
[x + width * 0.18, y + height],
|
|
15513
|
+
[x, y + height * 0.82],
|
|
15514
|
+
[x + width * 0.32, y + height * 0.5],
|
|
15515
|
+
[x, y + height * 0.18]
|
|
15516
|
+
]);
|
|
15517
|
+
}
|
|
15518
|
+
function mathDivideSegments(x, y, width, height) {
|
|
15519
|
+
return [
|
|
15520
|
+
...ellipseSegments(
|
|
15521
|
+
x + width / 2,
|
|
15522
|
+
y + height * 0.22,
|
|
15523
|
+
width * 0.07,
|
|
15524
|
+
height * 0.07
|
|
15525
|
+
),
|
|
15526
|
+
...rectSegments(
|
|
15527
|
+
x + width * 0.18,
|
|
15528
|
+
y + height * 0.46,
|
|
15529
|
+
width * 0.64,
|
|
15530
|
+
height * 0.08
|
|
15531
|
+
),
|
|
15532
|
+
...ellipseSegments(
|
|
15533
|
+
x + width / 2,
|
|
15534
|
+
y + height * 0.78,
|
|
15535
|
+
width * 0.07,
|
|
15536
|
+
height * 0.07
|
|
15537
|
+
)
|
|
15538
|
+
];
|
|
15539
|
+
}
|
|
15540
|
+
function mathEqualSegments(x, y, width, height) {
|
|
15541
|
+
return [
|
|
15542
|
+
...rectSegments(x, y + height * 0.3, width, height * 0.12),
|
|
15543
|
+
...rectSegments(x, y + height * 0.58, width, height * 0.12)
|
|
15544
|
+
];
|
|
15545
|
+
}
|
|
15546
|
+
function mathNotEqualSegments(x, y, width, height) {
|
|
15547
|
+
return [
|
|
15548
|
+
...mathEqualSegments(x, y, width, height),
|
|
15549
|
+
...polygon([
|
|
15550
|
+
[x + width * 0.62, y],
|
|
15551
|
+
[x + width * 0.74, y],
|
|
15552
|
+
[x + width * 0.38, y + height],
|
|
15553
|
+
[x + width * 0.26, y + height]
|
|
15554
|
+
])
|
|
15555
|
+
];
|
|
15556
|
+
}
|
|
15557
|
+
function heartSegments(x, y, width, height) {
|
|
15558
|
+
const cx = x + width / 2;
|
|
15559
|
+
return [
|
|
15560
|
+
{ type: "move", x: cx, y: y + height * 0.9 },
|
|
15561
|
+
{
|
|
15562
|
+
type: "cubic",
|
|
15563
|
+
x1: x - width * 0.12,
|
|
15564
|
+
y1: y + height * 0.45,
|
|
15565
|
+
x2: x + width * 0.08,
|
|
15566
|
+
y2: y,
|
|
15567
|
+
x: cx,
|
|
15568
|
+
y: y + height * 0.28
|
|
15569
|
+
},
|
|
15570
|
+
{
|
|
15571
|
+
type: "cubic",
|
|
15572
|
+
x1: x + width * 0.92,
|
|
15573
|
+
y1: y,
|
|
15574
|
+
x2: x + width * 1.12,
|
|
15575
|
+
y2: y + height * 0.45,
|
|
15576
|
+
x: cx,
|
|
15577
|
+
y: y + height * 0.9
|
|
15578
|
+
},
|
|
15579
|
+
{ type: "close" }
|
|
15580
|
+
];
|
|
15581
|
+
}
|
|
15582
|
+
function cloudSegments(x, y, width, height) {
|
|
15583
|
+
return [
|
|
15584
|
+
...ellipseSegments(
|
|
15585
|
+
x + width * 0.28,
|
|
15586
|
+
y + height * 0.58,
|
|
15587
|
+
width * 0.24,
|
|
15588
|
+
height * 0.23
|
|
15589
|
+
),
|
|
15590
|
+
...ellipseSegments(
|
|
15591
|
+
x + width * 0.48,
|
|
15592
|
+
y + height * 0.42,
|
|
15593
|
+
width * 0.28,
|
|
15594
|
+
height * 0.28
|
|
15595
|
+
),
|
|
15596
|
+
...ellipseSegments(
|
|
15597
|
+
x + width * 0.7,
|
|
15598
|
+
y + height * 0.58,
|
|
15599
|
+
width * 0.25,
|
|
15600
|
+
height * 0.24
|
|
15601
|
+
)
|
|
15602
|
+
];
|
|
15603
|
+
}
|
|
15604
|
+
function moonSegments(x, y, width, height) {
|
|
15605
|
+
return [
|
|
15606
|
+
{ type: "move", x: x + width * 0.68, y },
|
|
15607
|
+
{
|
|
15608
|
+
type: "cubic",
|
|
15609
|
+
x1: x + width * 0.22,
|
|
15610
|
+
y1: y + height * 0.06,
|
|
15611
|
+
x2: x + width * 0.18,
|
|
15612
|
+
y2: y + height * 0.94,
|
|
15613
|
+
x: x + width * 0.68,
|
|
15614
|
+
y: y + height
|
|
15615
|
+
},
|
|
15616
|
+
{
|
|
15617
|
+
type: "cubic",
|
|
15618
|
+
x1: x + width * 0.42,
|
|
15619
|
+
y1: y + height * 0.72,
|
|
15620
|
+
x2: x + width * 0.42,
|
|
15621
|
+
y2: y + height * 0.28,
|
|
15622
|
+
x: x + width * 0.68,
|
|
15623
|
+
y
|
|
15624
|
+
},
|
|
15625
|
+
{ type: "close" }
|
|
15626
|
+
];
|
|
15627
|
+
}
|
|
15628
|
+
function smileySegments(x, y, width, height) {
|
|
15629
|
+
return [
|
|
15630
|
+
...ellipseSegments(x + width / 2, y + height / 2, width / 2, height / 2),
|
|
15631
|
+
...ellipseSegments(
|
|
15632
|
+
x + width * 0.35,
|
|
15633
|
+
y + height * 0.38,
|
|
15634
|
+
width * 0.05,
|
|
15635
|
+
height * 0.05
|
|
15636
|
+
),
|
|
15637
|
+
...ellipseSegments(
|
|
15638
|
+
x + width * 0.65,
|
|
15639
|
+
y + height * 0.38,
|
|
15640
|
+
width * 0.05,
|
|
15641
|
+
height * 0.05
|
|
15642
|
+
),
|
|
15643
|
+
...arcSegments(
|
|
15644
|
+
x + width / 2,
|
|
15645
|
+
y + height * 0.52,
|
|
15646
|
+
width * 0.24,
|
|
15647
|
+
height * 0.18,
|
|
15648
|
+
20,
|
|
15649
|
+
160
|
|
15650
|
+
)
|
|
15651
|
+
];
|
|
15652
|
+
}
|
|
15653
|
+
function teardropSegments(x, y, width, height) {
|
|
15654
|
+
return [
|
|
15655
|
+
{ type: "move", x: x + width * 0.55, y },
|
|
15656
|
+
{
|
|
15657
|
+
type: "cubic",
|
|
15658
|
+
x1: x + width,
|
|
15659
|
+
y1: y + height * 0.22,
|
|
15660
|
+
x2: x + width * 0.95,
|
|
15661
|
+
y2: y + height,
|
|
15662
|
+
x: x + width * 0.35,
|
|
15663
|
+
y: y + height
|
|
15664
|
+
},
|
|
15665
|
+
{
|
|
15666
|
+
type: "cubic",
|
|
15667
|
+
x1: x - width * 0.1,
|
|
15668
|
+
y1: y + height * 0.66,
|
|
15669
|
+
x2: x + width * 0.16,
|
|
15670
|
+
y2: y + height * 0.12,
|
|
15671
|
+
x: x + width * 0.55,
|
|
15672
|
+
y
|
|
15673
|
+
},
|
|
15674
|
+
{ type: "close" }
|
|
15675
|
+
];
|
|
15676
|
+
}
|
|
15677
|
+
function noSmokingSegments(x, y, width, height) {
|
|
15678
|
+
return [
|
|
15679
|
+
...ellipseSegments(x + width / 2, y + height / 2, width / 2, height / 2),
|
|
15680
|
+
...polygon([
|
|
15681
|
+
[x + width * 0.18, y + height * 0.1],
|
|
15682
|
+
[x + width * 0.28, y],
|
|
15683
|
+
[x + width * 0.82, y + height * 0.9],
|
|
15684
|
+
[x + width * 0.72, y + height]
|
|
15685
|
+
])
|
|
15686
|
+
];
|
|
15687
|
+
}
|
|
15688
|
+
function donutSegments(cx, cy, rx, ry) {
|
|
15689
|
+
return [
|
|
15690
|
+
...ellipseSegments(cx, cy, rx, ry),
|
|
15691
|
+
...ellipseSegments(cx, cy, rx * 0.52, ry * 0.52)
|
|
15692
|
+
];
|
|
15693
|
+
}
|
|
15694
|
+
function canSegments(x, y, width, height) {
|
|
15695
|
+
return [
|
|
15696
|
+
...rectSegments(x, y + height * 0.14, width, height * 0.72),
|
|
15697
|
+
...ellipseSegments(
|
|
15698
|
+
x + width / 2,
|
|
15699
|
+
y + height * 0.14,
|
|
15700
|
+
width / 2,
|
|
15701
|
+
height * 0.14
|
|
15702
|
+
),
|
|
15703
|
+
...arcSegments(
|
|
15704
|
+
x + width / 2,
|
|
15705
|
+
y + height * 0.86,
|
|
15706
|
+
width / 2,
|
|
15707
|
+
height * 0.14,
|
|
15708
|
+
0,
|
|
15709
|
+
180
|
|
15710
|
+
)
|
|
15711
|
+
];
|
|
15712
|
+
}
|
|
15713
|
+
function cubeSegments(x, y, width, height) {
|
|
15714
|
+
return polygon([
|
|
15715
|
+
[x + width * 0.22, y],
|
|
15716
|
+
[x + width, y],
|
|
15717
|
+
[x + width, y + height * 0.78],
|
|
15718
|
+
[x + width * 0.78, y + height],
|
|
15719
|
+
[x, y + height],
|
|
15720
|
+
[x, y + height * 0.22]
|
|
15721
|
+
]);
|
|
15722
|
+
}
|
|
15723
|
+
function bevelSegments(x, y, width, height) {
|
|
15724
|
+
const inset = Math.min(width, height) * 0.16;
|
|
15725
|
+
return polygon([
|
|
15726
|
+
[x + inset, y],
|
|
15727
|
+
[x + width - inset, y],
|
|
15728
|
+
[x + width, y + inset],
|
|
15729
|
+
[x + width, y + height - inset],
|
|
15730
|
+
[x + width - inset, y + height],
|
|
15731
|
+
[x + inset, y + height],
|
|
15732
|
+
[x, y + height - inset],
|
|
15733
|
+
[x, y + inset]
|
|
15734
|
+
]);
|
|
15735
|
+
}
|
|
15736
|
+
function foldedCornerSegments(x, y, width, height) {
|
|
15737
|
+
return polygon([
|
|
15738
|
+
[x, y],
|
|
15739
|
+
[x + width * 0.78, y],
|
|
15740
|
+
[x + width, y + height * 0.22],
|
|
15741
|
+
[x + width, y + height],
|
|
15742
|
+
[x, y + height]
|
|
15743
|
+
]);
|
|
15744
|
+
}
|
|
15745
|
+
function frameSegments(x, y, width, height) {
|
|
15746
|
+
return [
|
|
15747
|
+
...rectSegments(x, y, width, height),
|
|
15748
|
+
...rectSegments(
|
|
15749
|
+
x + width * 0.18,
|
|
15750
|
+
y + height * 0.18,
|
|
15751
|
+
width * 0.64,
|
|
15752
|
+
height * 0.64
|
|
15753
|
+
)
|
|
15754
|
+
];
|
|
15755
|
+
}
|
|
15756
|
+
function halfFrameSegments(x, y, width, height) {
|
|
15757
|
+
return polygon([
|
|
15758
|
+
[x, y],
|
|
15759
|
+
[x + width, y],
|
|
15760
|
+
[x + width, y + height * 0.22],
|
|
15761
|
+
[x + width * 0.22, y + height * 0.22],
|
|
15762
|
+
[x + width * 0.22, y + height],
|
|
15763
|
+
[x, y + height]
|
|
15764
|
+
]);
|
|
15765
|
+
}
|
|
15766
|
+
function cornerSegments(x, y, width, height) {
|
|
15767
|
+
return polygon([
|
|
15768
|
+
[x, y],
|
|
15769
|
+
[x + width, y],
|
|
15770
|
+
[x + width, y + height * 0.22],
|
|
15771
|
+
[x + width * 0.22, y + height * 0.22],
|
|
15772
|
+
[x + width * 0.22, y + height],
|
|
15773
|
+
[x, y + height]
|
|
15774
|
+
]);
|
|
15775
|
+
}
|
|
15776
|
+
function plaqueSegments(x, y, width, height) {
|
|
15777
|
+
return polygon([
|
|
15778
|
+
[x + width * 0.18, y],
|
|
15779
|
+
[x + width * 0.82, y],
|
|
15780
|
+
[x + width, y + height * 0.18],
|
|
15781
|
+
[x + width, y + height * 0.82],
|
|
15782
|
+
[x + width * 0.82, y + height],
|
|
15783
|
+
[x + width * 0.18, y + height],
|
|
15784
|
+
[x, y + height * 0.82],
|
|
15785
|
+
[x, y + height * 0.18]
|
|
15786
|
+
]);
|
|
15787
|
+
}
|
|
15788
|
+
function tabbedRectSegments(key, x, y, width, height) {
|
|
15789
|
+
const tab = Math.min(width, height) * 0.18;
|
|
15790
|
+
if (key === "cornerTabs")
|
|
15791
|
+
return polygon([
|
|
15792
|
+
[x, y + tab],
|
|
15793
|
+
[x + tab, y + tab],
|
|
15794
|
+
[x + tab, y],
|
|
15795
|
+
[x + width - tab, y],
|
|
15796
|
+
[x + width - tab, y + tab],
|
|
15797
|
+
[x + width, y + tab],
|
|
15798
|
+
[x + width, y + height - tab],
|
|
15799
|
+
[x + width - tab, y + height - tab],
|
|
15800
|
+
[x + width - tab, y + height],
|
|
15801
|
+
[x + tab, y + height],
|
|
15802
|
+
[x + tab, y + height - tab],
|
|
15803
|
+
[x, y + height - tab]
|
|
15804
|
+
]);
|
|
15805
|
+
if (key === "plaqueTabs")
|
|
15806
|
+
return polygon([
|
|
15807
|
+
[x, y + tab],
|
|
15808
|
+
[x + width * 0.35, y + tab],
|
|
15809
|
+
[x + width * 0.35, y],
|
|
15810
|
+
[x + width * 0.65, y],
|
|
15811
|
+
[x + width * 0.65, y + tab],
|
|
15812
|
+
[x + width, y + tab],
|
|
15813
|
+
[x + width, y + height - tab],
|
|
15814
|
+
[x + width * 0.65, y + height - tab],
|
|
15815
|
+
[x + width * 0.65, y + height],
|
|
15816
|
+
[x + width * 0.35, y + height],
|
|
15817
|
+
[x + width * 0.35, y + height - tab],
|
|
15818
|
+
[x, y + height - tab]
|
|
15819
|
+
]);
|
|
15820
|
+
return polygon([
|
|
15821
|
+
[x + tab, y],
|
|
15822
|
+
[x + width - tab, y],
|
|
15823
|
+
[x + width - tab, y + tab],
|
|
15824
|
+
[x + width, y + tab],
|
|
15825
|
+
[x + width, y + height - tab],
|
|
15826
|
+
[x + width - tab, y + height - tab],
|
|
15827
|
+
[x + width - tab, y + height],
|
|
15828
|
+
[x + tab, y + height],
|
|
15829
|
+
[x + tab, y + height - tab],
|
|
15830
|
+
[x, y + height - tab],
|
|
15831
|
+
[x, y + tab],
|
|
15832
|
+
[x + tab, y + tab]
|
|
15833
|
+
]);
|
|
15834
|
+
}
|
|
15835
|
+
function braceSegments(key, x, y, width, height) {
|
|
15836
|
+
if (key === "rightBrace")
|
|
15837
|
+
return [
|
|
15838
|
+
{ type: "move", x, y },
|
|
15839
|
+
{
|
|
15840
|
+
type: "cubic",
|
|
15841
|
+
x1: x + width,
|
|
15842
|
+
y1: y,
|
|
15843
|
+
x2: x,
|
|
15844
|
+
y2: y + height * 0.5,
|
|
15845
|
+
x: x + width,
|
|
15846
|
+
y: y + height * 0.5
|
|
15847
|
+
},
|
|
15848
|
+
{
|
|
15849
|
+
type: "cubic",
|
|
15850
|
+
x1: x,
|
|
15851
|
+
y1: y + height * 0.5,
|
|
15852
|
+
x2: x + width,
|
|
15853
|
+
y2: y + height,
|
|
15854
|
+
x,
|
|
15855
|
+
y: y + height
|
|
15856
|
+
}
|
|
15857
|
+
];
|
|
15858
|
+
if (key === "bracePair")
|
|
15859
|
+
return [
|
|
15860
|
+
...braceSegments("leftBrace", x, y, width * 0.45, height),
|
|
15861
|
+
...braceSegments("rightBrace", x + width * 0.55, y, width * 0.45, height)
|
|
15862
|
+
];
|
|
15863
|
+
return [
|
|
15864
|
+
{ type: "move", x: x + width, y },
|
|
15865
|
+
{
|
|
15866
|
+
type: "cubic",
|
|
15867
|
+
x1: x,
|
|
15868
|
+
y1: y,
|
|
15869
|
+
x2: x + width,
|
|
15870
|
+
y2: y + height * 0.5,
|
|
15871
|
+
x,
|
|
15872
|
+
y: y + height * 0.5
|
|
15873
|
+
},
|
|
15874
|
+
{
|
|
15875
|
+
type: "cubic",
|
|
15876
|
+
x1: x + width,
|
|
15877
|
+
y1: y + height * 0.5,
|
|
15878
|
+
x2: x,
|
|
15879
|
+
y2: y + height,
|
|
15880
|
+
x: x + width,
|
|
15881
|
+
y: y + height
|
|
15882
|
+
}
|
|
15883
|
+
];
|
|
15884
|
+
}
|
|
15885
|
+
function bracketSegments(key, x, y, width, height) {
|
|
15886
|
+
if (key === "rightBracket")
|
|
15887
|
+
return [
|
|
15888
|
+
{ type: "move", x, y },
|
|
15889
|
+
{ type: "line", x: x + width, y },
|
|
15890
|
+
{ type: "line", x: x + width, y: y + height },
|
|
15891
|
+
{ type: "line", x, y: y + height }
|
|
15892
|
+
];
|
|
15893
|
+
if (key === "bracketPair")
|
|
15894
|
+
return [
|
|
15895
|
+
...bracketSegments("leftBracket", x, y, width * 0.45, height),
|
|
15896
|
+
...bracketSegments(
|
|
15897
|
+
"rightBracket",
|
|
15898
|
+
x + width * 0.55,
|
|
15899
|
+
y,
|
|
15900
|
+
width * 0.45,
|
|
15901
|
+
height
|
|
15902
|
+
)
|
|
15903
|
+
];
|
|
15904
|
+
return [
|
|
15905
|
+
{ type: "move", x: x + width, y },
|
|
15906
|
+
{ type: "line", x, y },
|
|
15907
|
+
{ type: "line", x, y: y + height },
|
|
15908
|
+
{ type: "line", x: x + width, y: y + height }
|
|
15909
|
+
];
|
|
15910
|
+
}
|
|
15911
|
+
function ribbonSegments(key, x, y, width, height) {
|
|
15912
|
+
const mid = y + height * 0.5;
|
|
15913
|
+
if (key.includes("Ellipse"))
|
|
15914
|
+
return [
|
|
15915
|
+
...ellipseSegments(x + width / 2, mid, width * 0.42, height * 0.28),
|
|
15916
|
+
...polygon([
|
|
15917
|
+
[x, mid],
|
|
15918
|
+
[x + width * 0.18, y + height * 0.3],
|
|
15919
|
+
[x + width * 0.18, y + height * 0.7]
|
|
15920
|
+
]),
|
|
15921
|
+
...polygon([
|
|
15922
|
+
[x + width, mid],
|
|
15923
|
+
[x + width * 0.82, y + height * 0.3],
|
|
15924
|
+
[x + width * 0.82, y + height * 0.7]
|
|
15925
|
+
])
|
|
15926
|
+
];
|
|
15927
|
+
return polygon([
|
|
15928
|
+
[x, y + height * 0.25],
|
|
15929
|
+
[x + width, y + height * 0.25],
|
|
15930
|
+
[x + width * 0.82, mid],
|
|
15931
|
+
[x + width, y + height * 0.75],
|
|
15932
|
+
[x, y + height * 0.75],
|
|
15933
|
+
[x + width * 0.18, mid]
|
|
15934
|
+
]);
|
|
15935
|
+
}
|
|
15936
|
+
function scrollSegments(key, x, y, width, height) {
|
|
15937
|
+
if (key === "horizontalScroll")
|
|
15938
|
+
return [
|
|
15939
|
+
...rectSegments(
|
|
15940
|
+
x + width * 0.1,
|
|
15941
|
+
y + height * 0.2,
|
|
15942
|
+
width * 0.8,
|
|
15943
|
+
height * 0.6
|
|
15944
|
+
),
|
|
15945
|
+
...ellipseSegments(
|
|
15946
|
+
x + width * 0.1,
|
|
15947
|
+
y + height * 0.5,
|
|
15948
|
+
width * 0.1,
|
|
15949
|
+
height * 0.3
|
|
15950
|
+
),
|
|
15951
|
+
...ellipseSegments(
|
|
15952
|
+
x + width * 0.9,
|
|
15953
|
+
y + height * 0.5,
|
|
15954
|
+
width * 0.1,
|
|
15955
|
+
height * 0.3
|
|
15956
|
+
)
|
|
15957
|
+
];
|
|
15958
|
+
return [
|
|
15959
|
+
...rectSegments(
|
|
15960
|
+
x + width * 0.2,
|
|
15961
|
+
y + height * 0.1,
|
|
15962
|
+
width * 0.6,
|
|
15963
|
+
height * 0.8
|
|
15964
|
+
),
|
|
15965
|
+
...ellipseSegments(
|
|
15966
|
+
x + width * 0.5,
|
|
15967
|
+
y + height * 0.1,
|
|
15968
|
+
width * 0.3,
|
|
15969
|
+
height * 0.1
|
|
15970
|
+
),
|
|
15971
|
+
...ellipseSegments(
|
|
15972
|
+
x + width * 0.5,
|
|
15973
|
+
y + height * 0.9,
|
|
15974
|
+
width * 0.3,
|
|
15975
|
+
height * 0.1
|
|
15976
|
+
)
|
|
15977
|
+
];
|
|
15978
|
+
}
|
|
15979
|
+
function waveSegments(key, x, y, width, height) {
|
|
15980
|
+
const first = [
|
|
15981
|
+
{ type: "move", x, y: y + height * 0.5 },
|
|
15982
|
+
{
|
|
15983
|
+
type: "cubic",
|
|
15984
|
+
x1: x + width * 0.25,
|
|
15985
|
+
y1: y,
|
|
15986
|
+
x2: x + width * 0.25,
|
|
15987
|
+
y2: y + height,
|
|
15988
|
+
x: x + width * 0.5,
|
|
15989
|
+
y: y + height * 0.5
|
|
15990
|
+
},
|
|
15991
|
+
{
|
|
15992
|
+
type: "cubic",
|
|
15993
|
+
x1: x + width * 0.75,
|
|
15994
|
+
y1: y,
|
|
15995
|
+
x2: x + width * 0.75,
|
|
15996
|
+
y2: y + height,
|
|
15997
|
+
x: x + width,
|
|
15998
|
+
y: y + height * 0.5
|
|
15999
|
+
}
|
|
16000
|
+
];
|
|
16001
|
+
return key === "doubleWave" ? [
|
|
16002
|
+
...first,
|
|
16003
|
+
...first.map(
|
|
16004
|
+
(segment) => "y" in segment ? { ...segment, y: segment.y + height * 0.18 } : segment
|
|
16005
|
+
)
|
|
16006
|
+
] : first;
|
|
16007
|
+
}
|
|
16008
|
+
function waveBottomRect(x, y, width, height) {
|
|
16009
|
+
return [
|
|
16010
|
+
{ type: "move", x, y },
|
|
16011
|
+
{ type: "line", x: x + width, y },
|
|
16012
|
+
{ type: "line", x: x + width, y: y + height * 0.82 },
|
|
16013
|
+
{
|
|
16014
|
+
type: "cubic",
|
|
16015
|
+
x1: x + width * 0.75,
|
|
16016
|
+
y1: y + height,
|
|
16017
|
+
x2: x + width * 0.25,
|
|
16018
|
+
y2: y + height * 0.64,
|
|
16019
|
+
x,
|
|
16020
|
+
y: y + height * 0.82
|
|
16021
|
+
},
|
|
16022
|
+
{ type: "close" }
|
|
16023
|
+
];
|
|
16024
|
+
}
|
|
16025
|
+
function resolvePresetPathSegments(preset, x, y, width, height) {
|
|
16026
|
+
const right = x + width;
|
|
16027
|
+
const bottom = y + height;
|
|
16028
|
+
const cx = x + width / 2;
|
|
16029
|
+
const cy = y + height / 2;
|
|
16030
|
+
if (/Connector\d$/.test(preset) || preset === "straightConnector1") {
|
|
16031
|
+
return connectorSegments(preset, x, y, width, height);
|
|
16032
|
+
}
|
|
16033
|
+
if (/Callout\d$/.test(preset) || /Callout$/.test(preset)) {
|
|
16034
|
+
return calloutSegments(preset, x, y, width, height);
|
|
16035
|
+
}
|
|
16036
|
+
if (/Arrow/.test(preset) || preset === "swooshArrow") {
|
|
16037
|
+
return arrowSegments(preset, x, y, width, height);
|
|
16038
|
+
}
|
|
16039
|
+
if (/^star\d+$/.test(preset)) {
|
|
16040
|
+
return starSegments(
|
|
16041
|
+
cx,
|
|
16042
|
+
cy,
|
|
16043
|
+
width * 0.48,
|
|
16044
|
+
height * 0.48,
|
|
16045
|
+
starPointCount(preset)
|
|
16046
|
+
);
|
|
16047
|
+
}
|
|
16048
|
+
if (/^flowChart/.test(preset)) {
|
|
16049
|
+
return flowChartSegments(
|
|
16050
|
+
preset,
|
|
16051
|
+
x,
|
|
16052
|
+
y,
|
|
16053
|
+
width,
|
|
16054
|
+
height,
|
|
16055
|
+
resolvePresetPathSegments
|
|
16056
|
+
);
|
|
16057
|
+
}
|
|
16058
|
+
if (/^actionButton/.test(preset)) {
|
|
16059
|
+
return actionButtonSegments(
|
|
16060
|
+
preset,
|
|
16061
|
+
x,
|
|
16062
|
+
y,
|
|
16063
|
+
width,
|
|
16064
|
+
height,
|
|
16065
|
+
resolvePresetPathSegments
|
|
16066
|
+
);
|
|
16067
|
+
}
|
|
16068
|
+
switch (preset) {
|
|
16069
|
+
case "line":
|
|
16070
|
+
return [
|
|
16071
|
+
{ type: "move", x, y },
|
|
16072
|
+
{ type: "line", x: right, y: bottom }
|
|
16073
|
+
];
|
|
16074
|
+
case "lineInv":
|
|
16075
|
+
return [
|
|
16076
|
+
{ type: "move", x, y: bottom },
|
|
16077
|
+
{ type: "line", x: right, y }
|
|
16078
|
+
];
|
|
16079
|
+
case "arc":
|
|
16080
|
+
return arcSegments(cx, cy, width / 2, height / 2, 200, 340);
|
|
16081
|
+
case "blockArc":
|
|
16082
|
+
return blockArcSegments(cx, cy, width / 2, height / 2);
|
|
16083
|
+
case "chord":
|
|
16084
|
+
return [
|
|
16085
|
+
...arcSegments(cx, cy, width / 2, height / 2, 210, 330),
|
|
16086
|
+
{ type: "close" }
|
|
16087
|
+
];
|
|
16088
|
+
case "pie":
|
|
16089
|
+
return pieSegments(cx, cy, width / 2, height / 2, -90, 45);
|
|
16090
|
+
case "pieWedge":
|
|
16091
|
+
return pieSegments(cx, cy, width / 2, height / 2, -35, 55);
|
|
16092
|
+
case "roundRect":
|
|
16093
|
+
return roundRectSegments(
|
|
16094
|
+
x,
|
|
16095
|
+
y,
|
|
16096
|
+
width,
|
|
16097
|
+
height,
|
|
16098
|
+
Math.min(width, height) * 0.12
|
|
16099
|
+
);
|
|
16100
|
+
case "round1Rect":
|
|
16101
|
+
return mixedRectSegments(x, y, width, height, true, false, false, false);
|
|
16102
|
+
case "round2SameRect":
|
|
16103
|
+
return mixedRectSegments(x, y, width, height, true, false, true, false);
|
|
16104
|
+
case "round2DiagRect":
|
|
16105
|
+
return mixedRectSegments(x, y, width, height, true, false, false, true);
|
|
16106
|
+
case "snipRoundRect":
|
|
16107
|
+
return snipRoundRectSegments(x, y, width, height);
|
|
16108
|
+
case "snip1Rect":
|
|
16109
|
+
return snipRectSegments(x, y, width, height, true, false, false, false);
|
|
16110
|
+
case "snip2SameRect":
|
|
16111
|
+
return snipRectSegments(x, y, width, height, true, true, false, false);
|
|
16112
|
+
case "snip2DiagRect":
|
|
16113
|
+
return snipRectSegments(x, y, width, height, true, false, true, false);
|
|
16114
|
+
case "ellipse":
|
|
16115
|
+
return ellipseSegments(cx, cy, width / 2, height / 2);
|
|
16116
|
+
case "triangle":
|
|
16117
|
+
return polygon([
|
|
16118
|
+
[cx, y],
|
|
16119
|
+
[right, bottom],
|
|
16120
|
+
[x, bottom]
|
|
16121
|
+
]);
|
|
16122
|
+
case "rtTriangle":
|
|
16123
|
+
return polygon([
|
|
16124
|
+
[x, y],
|
|
16125
|
+
[x, bottom],
|
|
16126
|
+
[right, bottom]
|
|
16127
|
+
]);
|
|
16128
|
+
case "diamond":
|
|
16129
|
+
return polygon([
|
|
16130
|
+
[cx, y],
|
|
16131
|
+
[right, cy],
|
|
16132
|
+
[cx, bottom],
|
|
16133
|
+
[x, cy]
|
|
16134
|
+
]);
|
|
16135
|
+
case "parallelogram":
|
|
16136
|
+
return polygon([
|
|
16137
|
+
[x + width * 0.22, y],
|
|
16138
|
+
[right, y],
|
|
16139
|
+
[right - width * 0.22, bottom],
|
|
16140
|
+
[x, bottom]
|
|
16141
|
+
]);
|
|
16142
|
+
case "trapezoid":
|
|
16143
|
+
return polygon([
|
|
16144
|
+
[x + width * 0.2, y],
|
|
16145
|
+
[right - width * 0.2, y],
|
|
16146
|
+
[right, bottom],
|
|
16147
|
+
[x, bottom]
|
|
16148
|
+
]);
|
|
16149
|
+
case "nonIsoscelesTrapezoid":
|
|
16150
|
+
return polygon([
|
|
16151
|
+
[x + width * 0.08, y],
|
|
16152
|
+
[right - width * 0.28, y],
|
|
16153
|
+
[right, bottom],
|
|
16154
|
+
[x, bottom]
|
|
16155
|
+
]);
|
|
16156
|
+
case "pentagon":
|
|
16157
|
+
return regularPolygon(cx, cy, width * 0.48, height * 0.48, 5, -90);
|
|
16158
|
+
case "hexagon":
|
|
16159
|
+
return regularPolygon(cx, cy, width * 0.48, height * 0.48, 6, 0);
|
|
16160
|
+
case "heptagon":
|
|
16161
|
+
return regularPolygon(cx, cy, width * 0.48, height * 0.48, 7, -90);
|
|
16162
|
+
case "octagon":
|
|
16163
|
+
return regularPolygon(cx, cy, width * 0.48, height * 0.48, 8, 22.5);
|
|
16164
|
+
case "decagon":
|
|
16165
|
+
return regularPolygon(cx, cy, width * 0.48, height * 0.48, 10, -90);
|
|
16166
|
+
case "dodecagon":
|
|
16167
|
+
return regularPolygon(cx, cy, width * 0.48, height * 0.48, 12, -90);
|
|
16168
|
+
case "homePlate":
|
|
16169
|
+
return polygon([
|
|
16170
|
+
[x, y],
|
|
16171
|
+
[right - width * 0.22, y],
|
|
16172
|
+
[right, cy],
|
|
16173
|
+
[right - width * 0.22, bottom],
|
|
16174
|
+
[x, bottom]
|
|
16175
|
+
]);
|
|
16176
|
+
case "chevron":
|
|
16177
|
+
return polygon([
|
|
16178
|
+
[x, y],
|
|
16179
|
+
[right - width * 0.28, y],
|
|
16180
|
+
[right, cy],
|
|
16181
|
+
[right - width * 0.28, bottom],
|
|
16182
|
+
[x, bottom],
|
|
16183
|
+
[x + width * 0.28, cy]
|
|
16184
|
+
]);
|
|
16185
|
+
case "heart":
|
|
16186
|
+
return heartSegments(x, y, width, height);
|
|
16187
|
+
case "cloud":
|
|
16188
|
+
return cloudSegments(x, y, width, height);
|
|
16189
|
+
case "sun":
|
|
16190
|
+
return starSegments(cx, cy, width * 0.48, height * 0.48, 16, 0.72);
|
|
16191
|
+
case "moon":
|
|
16192
|
+
return moonSegments(x, y, width, height);
|
|
16193
|
+
case "smileyFace":
|
|
16194
|
+
return smileySegments(x, y, width, height);
|
|
16195
|
+
case "lightningBolt":
|
|
16196
|
+
return polygon([
|
|
16197
|
+
[x + width * 0.58, y],
|
|
16198
|
+
[x + width * 0.28, y + height * 0.44],
|
|
16199
|
+
[x + width * 0.48, y + height * 0.44],
|
|
16200
|
+
[x + width * 0.36, bottom],
|
|
16201
|
+
[x + width * 0.74, y + height * 0.36],
|
|
16202
|
+
[x + width * 0.52, y + height * 0.36]
|
|
16203
|
+
]);
|
|
16204
|
+
case "teardrop":
|
|
16205
|
+
return teardropSegments(x, y, width, height);
|
|
16206
|
+
case "noSmoking":
|
|
16207
|
+
return noSmokingSegments(x, y, width, height);
|
|
16208
|
+
case "donut":
|
|
16209
|
+
return donutSegments(cx, cy, width / 2, height / 2);
|
|
16210
|
+
case "can":
|
|
16211
|
+
return canSegments(x, y, width, height);
|
|
16212
|
+
case "cube":
|
|
16213
|
+
return cubeSegments(x, y, width, height);
|
|
16214
|
+
case "bevel":
|
|
16215
|
+
return bevelSegments(x, y, width, height);
|
|
16216
|
+
case "foldedCorner":
|
|
16217
|
+
return foldedCornerSegments(x, y, width, height);
|
|
16218
|
+
case "frame":
|
|
16219
|
+
return frameSegments(x, y, width, height);
|
|
16220
|
+
case "halfFrame":
|
|
16221
|
+
return halfFrameSegments(x, y, width, height);
|
|
16222
|
+
case "corner":
|
|
16223
|
+
return cornerSegments(x, y, width, height);
|
|
16224
|
+
case "diagStripe":
|
|
16225
|
+
return polygon([
|
|
16226
|
+
[x + width * 0.25, y],
|
|
16227
|
+
[right, y],
|
|
16228
|
+
[right - width * 0.25, bottom],
|
|
16229
|
+
[x, bottom]
|
|
16230
|
+
]);
|
|
16231
|
+
case "plaque":
|
|
16232
|
+
return plaqueSegments(x, y, width, height);
|
|
16233
|
+
case "plaqueTabs":
|
|
16234
|
+
case "squareTabs":
|
|
16235
|
+
case "cornerTabs":
|
|
16236
|
+
return tabbedRectSegments(preset, x, y, width, height);
|
|
16237
|
+
case "irregularSeal1":
|
|
16238
|
+
return starSegments(cx, cy, width * 0.48, height * 0.48, 18, 0.78);
|
|
16239
|
+
case "irregularSeal2":
|
|
16240
|
+
return starSegments(cx, cy, width * 0.48, height * 0.48, 14, 0.68);
|
|
16241
|
+
case "gear6":
|
|
16242
|
+
return starSegments(cx, cy, width * 0.48, height * 0.48, 12, 0.76);
|
|
16243
|
+
case "gear9":
|
|
16244
|
+
return starSegments(cx, cy, width * 0.48, height * 0.48, 18, 0.76);
|
|
16245
|
+
case "funnel":
|
|
16246
|
+
return polygon([
|
|
16247
|
+
[x, y],
|
|
16248
|
+
[right, y],
|
|
16249
|
+
[x + width * 0.6, y + height * 0.56],
|
|
16250
|
+
[x + width * 0.6, bottom],
|
|
16251
|
+
[x + width * 0.4, bottom],
|
|
16252
|
+
[x + width * 0.4, y + height * 0.56]
|
|
16253
|
+
]);
|
|
16254
|
+
case "leftBrace":
|
|
16255
|
+
case "rightBrace":
|
|
16256
|
+
case "bracePair":
|
|
16257
|
+
return braceSegments(preset, x, y, width, height);
|
|
16258
|
+
case "leftBracket":
|
|
16259
|
+
case "rightBracket":
|
|
16260
|
+
case "bracketPair":
|
|
16261
|
+
return bracketSegments(preset, x, y, width, height);
|
|
16262
|
+
case "mathPlus":
|
|
16263
|
+
return plusSegments(x, y, width, height);
|
|
16264
|
+
case "mathMinus":
|
|
16265
|
+
return polygon([
|
|
16266
|
+
[x, y + height * 0.42],
|
|
16267
|
+
[right, y + height * 0.42],
|
|
16268
|
+
[right, y + height * 0.58],
|
|
16269
|
+
[x, y + height * 0.58]
|
|
16270
|
+
]);
|
|
16271
|
+
case "mathMultiply":
|
|
16272
|
+
return xSegments(x, y, width, height);
|
|
16273
|
+
case "mathDivide":
|
|
16274
|
+
return mathDivideSegments(x, y, width, height);
|
|
16275
|
+
case "mathEqual":
|
|
16276
|
+
return mathEqualSegments(x, y, width, height);
|
|
16277
|
+
case "mathNotEqual":
|
|
16278
|
+
return mathNotEqualSegments(x, y, width, height);
|
|
16279
|
+
case "chartPlus":
|
|
16280
|
+
return plusSegments(x, y, width, height);
|
|
16281
|
+
case "chartX":
|
|
16282
|
+
return xSegments(x, y, width, height);
|
|
16283
|
+
case "chartStar":
|
|
16284
|
+
return starSegments(cx, cy, width * 0.48, height * 0.48, 5);
|
|
16285
|
+
case "ribbon":
|
|
16286
|
+
case "ribbon2":
|
|
16287
|
+
case "ellipseRibbon":
|
|
16288
|
+
case "ellipseRibbon2":
|
|
16289
|
+
case "leftRightRibbon":
|
|
16290
|
+
return ribbonSegments(preset, x, y, width, height);
|
|
16291
|
+
case "verticalScroll":
|
|
16292
|
+
case "horizontalScroll":
|
|
16293
|
+
return scrollSegments(preset, x, y, width, height);
|
|
16294
|
+
case "wave":
|
|
16295
|
+
case "doubleWave":
|
|
16296
|
+
return waveSegments(preset, x, y, width, height);
|
|
16297
|
+
case "rect":
|
|
16298
|
+
default:
|
|
16299
|
+
return rectSegments(x, y, width, height);
|
|
16300
|
+
}
|
|
16301
|
+
}
|
|
16302
|
+
function getPresetPathSegments(preset, x, y, width, height) {
|
|
16303
|
+
const key = isPresetGeometrySupported(preset) ? preset : "rect";
|
|
16304
|
+
return resolvePresetPathSegments(key, x, y, width, height);
|
|
16305
|
+
}
|
|
14950
16306
|
function buildPresetPath(preset, x, y, width, height) {
|
|
14951
16307
|
const path = new Path2D();
|
|
14952
16308
|
for (const segment of getPresetPathSegments(preset, x, y, width, height)) {
|
|
@@ -32066,10 +33422,6 @@ async function parseTextBox(drawing, parseNestedBlocks) {
|
|
|
32066
33422
|
if (!wsp) {
|
|
32067
33423
|
return void 0;
|
|
32068
33424
|
}
|
|
32069
|
-
const txbxContent = findElementDeep(wsp, "txbxContent");
|
|
32070
|
-
if (!txbxContent) {
|
|
32071
|
-
return void 0;
|
|
32072
|
-
}
|
|
32073
33425
|
const container = findDrawingContainer(drawing);
|
|
32074
33426
|
const drawingBox = (container == null ? void 0 : container.element) ?? drawing;
|
|
32075
33427
|
const extent = findElementDeep(drawingBox, "extent");
|
|
@@ -32079,7 +33431,8 @@ async function parseTextBox(drawing, parseNestedBlocks) {
|
|
|
32079
33431
|
const name = docPr ? getAttributeValue(docPr, "name") : null;
|
|
32080
33432
|
const alt = docPr ? getAttributeValue(docPr, "descr") ?? getAttributeValue(docPr, "title") : null;
|
|
32081
33433
|
const floating = (container == null ? void 0 : container.kind) === "anchor" ? parseFloatingLayout(container.element) : void 0;
|
|
32082
|
-
const
|
|
33434
|
+
const txbxContent = findElementDeep(wsp, "txbxContent");
|
|
33435
|
+
const blocks = txbxContent && parseNestedBlocks ? await parseNestedBlocks(txbxContent) : [];
|
|
32083
33436
|
const shape = parseTextBoxShape(wsp);
|
|
32084
33437
|
const body = parseTextBoxBody(wsp);
|
|
32085
33438
|
const rotation = parseTextBoxRotation(wsp);
|
|
@@ -34437,7 +35790,7 @@ function importDocxInWorker(buffer, options = {}) {
|
|
|
34437
35790
|
const worker = new Worker(
|
|
34438
35791
|
new URL(
|
|
34439
35792
|
/* @vite-ignore */
|
|
34440
|
-
"" + new URL("assets/importDocxWorker-
|
|
35793
|
+
"" + new URL("assets/importDocxWorker-DcrboJNQ.js", import.meta.url).href,
|
|
34441
35794
|
import.meta.url
|
|
34442
35795
|
),
|
|
34443
35796
|
{
|
|
@@ -35144,7 +36497,14 @@ function ResizeHandlesOverlay(props) {
|
|
|
35144
36497
|
})();
|
|
35145
36498
|
}
|
|
35146
36499
|
delegateEvents(["mousedown"]);
|
|
35147
|
-
var _tmpl$$m = /* @__PURE__ */ template(`<div data-testid=editor-editor-shell><div class=oasis-editor-editor data-testid=editor-editor><div class=oasis-editor-editor-scroll-content data-testid=editor-editor-scroll-content><textarea aria-label="Editor input"autocomplete=off autocapitalize=off class=oasis-editor-input data-testid=editor-input value style=pointer-events:none></textarea><input data-testid=editor-import-docx-input type=file style=display:none><input accept="image/png, image/jpeg, image/gif"data-testid=editor-insert-image-input type=file style=display:none></div></div><div class=oasis-editor-statusbar data-testid=editor-statusbar><span class=oasis-editor-statusbar-item data-testid=editor-statusbar-word-count></span><span class=oasis-editor-statusbar-item data-testid=editor-statusbar-character-count></span><span class=oasis-editor-statusbar-item></span><span class=oasis-editor-statusbar-item
|
|
36500
|
+
var _tmpl$$m = /* @__PURE__ */ template(`<div data-testid=editor-editor-shell><div class=oasis-editor-editor data-testid=editor-editor><div class=oasis-editor-editor-scroll-content data-testid=editor-editor-scroll-content><textarea aria-label="Editor input"autocomplete=off autocapitalize=off class=oasis-editor-input data-testid=editor-input value style=pointer-events:none></textarea><input data-testid=editor-import-docx-input type=file style=display:none><input accept="image/png, image/jpeg, image/gif"data-testid=editor-insert-image-input type=file style=display:none></div></div><div class=oasis-editor-statusbar data-testid=editor-statusbar><span class=oasis-editor-statusbar-item data-testid=editor-statusbar-word-count></span><span class=oasis-editor-statusbar-item data-testid=editor-statusbar-character-count></span><span class=oasis-editor-statusbar-item></span><div class=oasis-editor-statusbar-zoom data-testid=editor-statusbar-zoom-control><button type=button class=oasis-editor-zoom-button>−</button><input class=oasis-editor-zoom-slider type=range min=50 max=200 step=10><button type=button class=oasis-editor-zoom-button>+</button><span class="oasis-editor-statusbar-item oasis-editor-zoom-value"data-testid=editor-statusbar-zoom>%`), _tmpl$2$g = /* @__PURE__ */ template(`<div class=oasis-editor-import-overlay data-testid=editor-import-overlay role=status aria-live=polite><div class=oasis-editor-import-card><div class=oasis-editor-import-title></div><div class=oasis-editor-import-phase data-testid=editor-import-phase></div><div class=oasis-editor-import-progress-track><div class=oasis-editor-import-progress-bar data-testid=editor-import-progress-bar></div></div><div class=oasis-editor-import-progress-label>`), _tmpl$3$a = /* @__PURE__ */ template(`<span class=oasis-editor-import-done-icon>`), _tmpl$4$8 = /* @__PURE__ */ template(`<span class=oasis-editor-import-error-icon>`), _tmpl$5$7 = /* @__PURE__ */ template(`<span>`);
|
|
36501
|
+
const ZOOM_MIN = 50;
|
|
36502
|
+
const ZOOM_MAX = 200;
|
|
36503
|
+
const ZOOM_STEP = 10;
|
|
36504
|
+
function clampZoom(value) {
|
|
36505
|
+
if (!Number.isFinite(value)) return 100;
|
|
36506
|
+
return Math.min(ZOOM_MAX, Math.max(ZOOM_MIN, Math.round(value)));
|
|
36507
|
+
}
|
|
35148
36508
|
function OasisEditorEditor(props) {
|
|
35149
36509
|
const layout = () => props.layout ?? {};
|
|
35150
36510
|
const overlays = () => props.overlays;
|
|
@@ -35179,6 +36539,10 @@ function OasisEditorEditor(props) {
|
|
|
35179
36539
|
const documentForStats = createMemo(() => props.state().document);
|
|
35180
36540
|
const characterCount = createMemo(() => getDocumentCharacterCount(documentForStats()));
|
|
35181
36541
|
const wordCount = createMemo(() => getDocumentWordCount(documentForStats()));
|
|
36542
|
+
const [zoomPercent, setZoomPercent] = createSignal(100);
|
|
36543
|
+
const adjustZoom = (delta) => {
|
|
36544
|
+
setZoomPercent((current) => clampZoom(current + delta));
|
|
36545
|
+
};
|
|
35182
36546
|
const statusDocumentLayout = createMemo(() => {
|
|
35183
36547
|
var _a, _b, _c, _d;
|
|
35184
36548
|
return projectDocumentLayout(documentForStats(), void 0, (_b = (_a = layout()).measuredBlockHeights) == null ? void 0 : _b.call(_a), (_d = (_c = layout()).measuredParagraphLayouts) == null ? void 0 : _d.call(_c));
|
|
@@ -35232,7 +36596,7 @@ function OasisEditorEditor(props) {
|
|
|
35232
36596
|
queueMicrotask(recomputeViewportPageIndex);
|
|
35233
36597
|
});
|
|
35234
36598
|
return (() => {
|
|
35235
|
-
var _el$ = _tmpl$$m(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$5.nextSibling, _el$7 = _el$2.nextSibling, _el$8 = _el$7.firstChild, _el$9 = _el$8.nextSibling, _el$0 = _el$9.nextSibling, _el$1 = _el$0.nextSibling, _el$10 = _el$1.firstChild;
|
|
36599
|
+
var _el$ = _tmpl$$m(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$5.nextSibling, _el$7 = _el$2.nextSibling, _el$8 = _el$7.firstChild, _el$9 = _el$8.nextSibling, _el$0 = _el$9.nextSibling, _el$1 = _el$0.nextSibling, _el$10 = _el$1.firstChild, _el$11 = _el$10.nextSibling, _el$12 = _el$11.nextSibling, _el$13 = _el$12.nextSibling, _el$14 = _el$13.firstChild;
|
|
35236
36600
|
insert(_el$, createComponent(Show, {
|
|
35237
36601
|
get when() {
|
|
35238
36602
|
return memo(() => !!layout().showHorizontalRuler)() && overlays().toolbarHost;
|
|
@@ -35488,44 +36852,47 @@ function OasisEditorEditor(props) {
|
|
|
35488
36852
|
const isDone = progress().phase === "done";
|
|
35489
36853
|
const isError = progress().phase === "error";
|
|
35490
36854
|
return (() => {
|
|
35491
|
-
var _el$
|
|
35492
|
-
_el$
|
|
35493
|
-
_el$
|
|
35494
|
-
setAttribute(_el$
|
|
35495
|
-
insert(_el$
|
|
36855
|
+
var _el$15 = _tmpl$2$g(), _el$16 = _el$15.firstChild, _el$17 = _el$16.firstChild, _el$18 = _el$17.nextSibling, _el$19 = _el$18.nextSibling, _el$20 = _el$19.firstChild, _el$21 = _el$19.nextSibling;
|
|
36856
|
+
_el$15.classList.toggle("oasis-editor-import-overlay-done", !!isDone);
|
|
36857
|
+
_el$15.classList.toggle("oasis-editor-import-overlay-error", !!isError);
|
|
36858
|
+
setAttribute(_el$15, "aria-busy", !isDone && !isError);
|
|
36859
|
+
insert(_el$16, createComponent(OasisBrandMark, {
|
|
35496
36860
|
height: 40,
|
|
35497
36861
|
"class": "oasis-editor-loading-mark"
|
|
35498
|
-
}), _el$
|
|
35499
|
-
insert(_el$
|
|
35500
|
-
insert(_el$
|
|
35501
|
-
_el$
|
|
35502
|
-
_el$
|
|
35503
|
-
insert(_el$
|
|
35504
|
-
var _el$
|
|
35505
|
-
insert(_el$
|
|
35506
|
-
return _el$
|
|
36862
|
+
}), _el$17);
|
|
36863
|
+
insert(_el$17, () => t("import.overlay.title"));
|
|
36864
|
+
insert(_el$18, () => t(`import.phase.${progress().phase}`));
|
|
36865
|
+
_el$20.classList.toggle("oasis-editor-import-progress-bar-done", !!isDone);
|
|
36866
|
+
_el$20.classList.toggle("oasis-editor-import-progress-bar-error", !!isError);
|
|
36867
|
+
insert(_el$21, isDone ? (() => {
|
|
36868
|
+
var _el$22 = _tmpl$3$a();
|
|
36869
|
+
insert(_el$22, () => t("import.phase.done"));
|
|
36870
|
+
return _el$22;
|
|
35507
36871
|
})() : isError ? (() => {
|
|
35508
|
-
var _el$
|
|
35509
|
-
insert(_el$
|
|
35510
|
-
return _el$
|
|
36872
|
+
var _el$23 = _tmpl$4$8();
|
|
36873
|
+
insert(_el$23, () => t("import.phase.error"));
|
|
36874
|
+
return _el$23;
|
|
35511
36875
|
})() : [memo(() => Math.round(progress().progress)), "%"]);
|
|
35512
36876
|
createRenderEffect((_p$) => {
|
|
35513
|
-
var _v$
|
|
35514
|
-
_v$
|
|
35515
|
-
_v$
|
|
36877
|
+
var _v$13 = !!(progress().phase === "applying-editor-state" || progress().phase === "stabilizing-layout"), _v$14 = `${progress().progress}%`;
|
|
36878
|
+
_v$13 !== _p$.e && _el$20.classList.toggle("oasis-editor-import-progress-bar-indeterminate", _p$.e = _v$13);
|
|
36879
|
+
_v$14 !== _p$.t && setStyleProperty(_el$20, "width", _p$.t = _v$14);
|
|
35516
36880
|
return _p$;
|
|
35517
36881
|
}, {
|
|
35518
36882
|
e: void 0,
|
|
35519
36883
|
t: void 0
|
|
35520
36884
|
});
|
|
35521
|
-
return _el$
|
|
36885
|
+
return _el$15;
|
|
35522
36886
|
})();
|
|
35523
36887
|
}
|
|
35524
36888
|
}), _el$7);
|
|
35525
36889
|
insert(_el$8, () => t("status.words", [wordCount()]));
|
|
35526
36890
|
insert(_el$9, () => t("status.characters", [characterCount()]));
|
|
35527
36891
|
insert(_el$0, () => t("status.page", [currentPage(), totalPages()]));
|
|
35528
|
-
|
|
36892
|
+
_el$10.$$click = () => adjustZoom(-ZOOM_STEP);
|
|
36893
|
+
_el$11.$$input = (event) => setZoomPercent(clampZoom(event.currentTarget.valueAsNumber));
|
|
36894
|
+
_el$12.$$click = () => adjustZoom(ZOOM_STEP);
|
|
36895
|
+
insert(_el$13, zoomPercent, _el$14);
|
|
35529
36896
|
insert(_el$7, createComponent(Show, {
|
|
35530
36897
|
get when() {
|
|
35531
36898
|
return overlays().persistenceStatus;
|
|
@@ -35538,17 +36905,17 @@ function OasisEditorEditor(props) {
|
|
|
35538
36905
|
return createComponent(Show, {
|
|
35539
36906
|
when: key,
|
|
35540
36907
|
get children() {
|
|
35541
|
-
var _el$
|
|
35542
|
-
insert(_el$
|
|
35543
|
-
createRenderEffect(() => className(_el$
|
|
35544
|
-
return _el$
|
|
36908
|
+
var _el$24 = _tmpl$5$7();
|
|
36909
|
+
insert(_el$24, () => t(key));
|
|
36910
|
+
createRenderEffect(() => className(_el$24, `oasis-editor-statusbar-item oasis-editor-persistence-status oasis-editor-status-${status.replace("...", "ing").replace(".", "")}`));
|
|
36911
|
+
return _el$24;
|
|
35545
36912
|
}
|
|
35546
36913
|
});
|
|
35547
36914
|
})();
|
|
35548
36915
|
}
|
|
35549
36916
|
}), null);
|
|
35550
36917
|
createRenderEffect((_p$) => {
|
|
35551
|
-
var _v$ = `oasis-editor-editor-shell${layout().class ? ` ${layout().class}` : ""}`, _v$2 = shellStyle(), _v$3 = layout().readOnly, _v$4 = `${overlays().inputBox().left}px`, _v$5 = `${overlays().inputBox().top}px`, _v$6 = `${overlays().inputBox().height}px`, _v$7 = importFileAccept();
|
|
36918
|
+
var _v$ = `oasis-editor-editor-shell${layout().class ? ` ${layout().class}` : ""}`, _v$2 = shellStyle(), _v$3 = layout().readOnly, _v$4 = `${overlays().inputBox().left}px`, _v$5 = `${overlays().inputBox().top}px`, _v$6 = `${overlays().inputBox().height}px`, _v$7 = importFileAccept(), _v$8 = t("status.zoom"), _v$9 = `${t("status.zoom")} -`, _v$0 = zoomPercent() <= ZOOM_MIN, _v$1 = t("status.zoom"), _v$10 = `${zoomPercent()}%`, _v$11 = `${t("status.zoom")} +`, _v$12 = zoomPercent() >= ZOOM_MAX;
|
|
35552
36919
|
_v$ !== _p$.e && className(_el$, _p$.e = _v$);
|
|
35553
36920
|
_p$.t = style(_el$, _v$2, _p$.t);
|
|
35554
36921
|
_v$3 !== _p$.a && (_el$4.readOnly = _p$.a = _v$3);
|
|
@@ -35556,6 +36923,13 @@ function OasisEditorEditor(props) {
|
|
|
35556
36923
|
_v$5 !== _p$.i && setStyleProperty(_el$4, "top", _p$.i = _v$5);
|
|
35557
36924
|
_v$6 !== _p$.n && setStyleProperty(_el$4, "height", _p$.n = _v$6);
|
|
35558
36925
|
_v$7 !== _p$.s && setAttribute(_el$5, "accept", _p$.s = _v$7);
|
|
36926
|
+
_v$8 !== _p$.h && setAttribute(_el$1, "aria-label", _p$.h = _v$8);
|
|
36927
|
+
_v$9 !== _p$.r && setAttribute(_el$10, "aria-label", _p$.r = _v$9);
|
|
36928
|
+
_v$0 !== _p$.d && (_el$10.disabled = _p$.d = _v$0);
|
|
36929
|
+
_v$1 !== _p$.l && setAttribute(_el$11, "aria-label", _p$.l = _v$1);
|
|
36930
|
+
_v$10 !== _p$.u && setAttribute(_el$11, "aria-valuetext", _p$.u = _v$10);
|
|
36931
|
+
_v$11 !== _p$.c && setAttribute(_el$12, "aria-label", _p$.c = _v$11);
|
|
36932
|
+
_v$12 !== _p$.w && (_el$12.disabled = _p$.w = _v$12);
|
|
35559
36933
|
return _p$;
|
|
35560
36934
|
}, {
|
|
35561
36935
|
e: void 0,
|
|
@@ -35564,12 +36938,20 @@ function OasisEditorEditor(props) {
|
|
|
35564
36938
|
o: void 0,
|
|
35565
36939
|
i: void 0,
|
|
35566
36940
|
n: void 0,
|
|
35567
|
-
s: void 0
|
|
36941
|
+
s: void 0,
|
|
36942
|
+
h: void 0,
|
|
36943
|
+
r: void 0,
|
|
36944
|
+
d: void 0,
|
|
36945
|
+
l: void 0,
|
|
36946
|
+
u: void 0,
|
|
36947
|
+
c: void 0,
|
|
36948
|
+
w: void 0
|
|
35568
36949
|
});
|
|
36950
|
+
createRenderEffect(() => _el$11.value = zoomPercent());
|
|
35569
36951
|
return _el$;
|
|
35570
36952
|
})();
|
|
35571
36953
|
}
|
|
35572
|
-
delegateEvents(["mousedown", "contextmenu", "input", "keydown"]);
|
|
36954
|
+
delegateEvents(["mousedown", "contextmenu", "input", "keydown", "click"]);
|
|
35573
36955
|
var _tmpl$$l = /* @__PURE__ */ template(`<button>`);
|
|
35574
36956
|
function FloatingActionButton(props) {
|
|
35575
36957
|
const [local, others] = splitProps(props, ["type", "icon", "label", "active", "class", "classList"]);
|