const PINNED_MERMAID_SHAPES: &[&str] = &[
"anchor",
"bang",
"block_arrow",
"bolt",
"bow-rect",
"bow-tie-rectangle",
"brace",
"brace-l",
"brace-r",
"braces",
"browser",
"bucket",
"card",
"choice",
"circ",
"circle",
"classBox",
"cloud",
"collapsedGroup",
"collate",
"com-link",
"comment",
"composite",
"console",
"cross-circ",
"crossed-circle",
"curv-trap",
"curved-trapezoid",
"cyl",
"cylinder",
"das",
"data-store",
"database",
"datastore",
"db",
"dbl-circ",
"decision",
"defaultMindmapNode",
"delay",
"diam",
"diamond",
"directory",
"disk",
"display",
"div-proc",
"div-rect",
"divided-process",
"divided-rectangle",
"doc",
"docs",
"document",
"documents",
"double-circle",
"doublecircle",
"erBox",
"event",
"extract",
"f-circ",
"filled-circle",
"flag",
"flip-tri",
"flipped-triangle",
"folder",
"fork",
"forkJoin",
"fr-circ",
"fr-rect",
"framed-circle",
"framed-rectangle",
"h-cyl",
"half-rounded-rectangle",
"hex",
"hexagon",
"horizontal-cylinder",
"hourglass",
"icon",
"iconCircle",
"iconRounded",
"iconSquare",
"imageSquare",
"in-out",
"internal-storage",
"inv-trapezoid",
"inv_trapezoid",
"join",
"junction",
"kanbanItem",
"labelRect",
"lean-l",
"lean-left",
"lean-r",
"lean-right",
"lean_left",
"lean_right",
"lightning-bolt",
"lin-cyl",
"lin-doc",
"lin-proc",
"lin-rect",
"lined-cylinder",
"lined-document",
"lined-process",
"lined-rectangle",
"loop-limit",
"manual",
"manual-file",
"manual-input",
"mindmapCircle",
"notch-pent",
"notch-rect",
"notched-pentagon",
"notched-rectangle",
"note",
"odd",
"out-in",
"paper-tape",
"person",
"pill",
"prepare",
"priority",
"proc",
"process",
"processes",
"procs",
"question",
"rect",
"rectWithTitle",
"rect_left_inv_arrow",
"rectangle",
"requirementBox",
"rounded",
"roundedRect",
"shaded-process",
"sl-rect",
"sloped-rectangle",
"sm-circ",
"small-circle",
"squareRect",
"st-doc",
"st-rect",
"stacked-document",
"stacked-rectangle",
"stadium",
"start",
"state",
"stateEnd",
"stateStart",
"stop",
"stored-data",
"subproc",
"subprocess",
"subroutine",
"summary",
"tag-doc",
"tag-proc",
"tag-rect",
"tagged-document",
"tagged-process",
"tagged-rectangle",
"terminal",
"text",
"trap-b",
"trap-t",
"trapezoid",
"trapezoid-bottom",
"trapezoid-top",
"tri",
"triangle",
"usecaseActor",
"usecaseActorAwesome",
"usecaseActorHollow",
"usecaseActorIcon",
"usecaseBusiness",
"usecaseEllipse",
"usecaseJsonTable",
"win-pane",
"window-pane",
];
pub(crate) fn is_valid_pinned_shape(shape: &str) -> bool {
PINNED_MERMAID_SHAPES.binary_search(&shape).is_ok()
}
pub(crate) fn public_pinned_shape_names() -> impl Iterator<Item = &'static str> {
PINNED_MERMAID_SHAPES
.iter()
.copied()
.filter(|shape| is_public_shape_name(shape))
}
pub(crate) fn pinned_shape_names() -> impl Iterator<Item = &'static str> {
PINNED_MERMAID_SHAPES.iter().copied()
}
fn is_public_shape_name(shape: &str) -> bool {
shape == shape.to_lowercase() && !shape.contains('_')
}