• Split up an MDX files into headers for easy use in multiple parts of documentation or in multiple files, with some added perks.

    Currently, this breaks on any header such that a file like

    # First Component

    Something

    ## Second Component

    ```md
    # Second header description
    This second component does stuff
    ```

    becomes essentially

    {
    "first-component": {
    full: [<h1>First Component</h1>,<p>Something</p>],
    body: [<p>Something</p>],
    md: "",
    },
    "second-component": {
    full: [<h1>Second Component</h1>,<p>Other</p>],
    body: [<code>....</code>],
    md: "# Second header description\nThis second component does stuff",
    },
    }

    Although actually they'll be functions at those locations that also have those properties, but is () => full at invocation. Note how it picks up md code blocks as raw text, suitable for story descriptions.

    Then you can use it like

    import mdx from "./some.mdx";
    const mdxObject = segmentMdx(mdx);
    // define FirstComponent...
    FirstComponent.parameters = {
    docs: {
    page: mdxObject['first-component'],
    }
    };
    // define SecondComponent...
    SecondComponent.parameters = {
    docs: {
    story: {
    description: mdxObject['second-component'].md,
    }
    }
    };

    And if you needed to combine them you could do something like

    docs: {
    page: () => [
    ...mdxObject["first-component"].full,
    ...mdxObject["second-component"].full,
    ]
    }

    Or, in an mdx file like so (real example):

    import { Meta } from "@storybook/addon-docs";
    import readme from "../../README.md";
    import { segmentMdx } from "orphic-cypress";

    <Meta title="MockRequests/Overview" />

    <>{segmentMdx(readme)["intercepting-api-requests"].full}</>

    <-- more markdown -->
    # Further afield

    Uses a dead simple FIFO cache of size 50 just to avoid thinking about memory consumption issues.

    Parameters

    • mdx: Mdx
    • Optional force: boolean

      force skipping the cache

    Returns HeaderKeyedMdxSegment