/**
* The `eox-storytelling` element enables the creation of interactive, multimedia-rich stories using Markdown and custom sections. It supports advanced features such as slot-based content, remote Markdown loading, and custom initialization logic via events.
*
* ## Usage
* Place `` in your application and pass Markdown content via the `markdown` property, slot, or a remote URL using the `markdown-url` property. The component automatically renders the story, including custom sections such as maps, images, and videos, using extended Markdown syntax and HTML comments for configuration.
*
* ## Features
* - **Markdown Rendering:** Supports standard and extended Markdown syntax for rich story content.
* - **Slot Content:** Accepts Markdown via slot for flexible content injection.
* - **Remote Markdown:** Loads Markdown from external URLs for dynamic stories.
* - **Custom Sections:** Add maps, images, videos, and more using HTML comment configuration.
* - **Events:** Emits events such as `init` for custom initialization logic (e.g., map projection setup).
*
* ## Custom Markdown Extensions
* In order to add custom functionality to the Markdown rendering, include HTML comments with a specific syntax: ``. Here are some of the supported extensions:
* - **Section Configuration:** Define sections with attributes like `as`, `id`, `class`, `style`, and more.
* - **Hero Section:** Create a full-screen hero section using `#` (Header 1) with additional attributes for images or videos.
* - **Navigation Control:** Use the `nav` attribute to control the visibility of the navigation menu.
* - **Custom Attributes:** Use HTML comments to define attributes for sections, such as `as`, `class`, `style`, and more.
*
* Read the [Markdown with Tour story](./?path=/story/elements-eox-storytelling--markdown-tour) for a comprehensive guide on using Markdown extensions.
*
* @element eox-storytelling
*/
export class EOxStoryTelling extends LitElement {
static get properties(): {
markdown: {
attribute: string;
type: StringConstructor;
};
markdownURL: {
attribute: string;
type: StringConstructor;
};
nav: {
state: boolean;
attribute: boolean;
type: ArrayConstructor;
};
showNav: {
attribute: string;
type: BooleanConstructor;
};
showEditor: {
attribute: string;
type: StringConstructor;
};
showHeroScrollIndicator: {
attribute: string;
type: BooleanConstructor;
};
showMapLoadingIndicator: {
attribute: string;
type: BooleanConstructor;
};
noShadow: {
attribute: string;
type: BooleanConstructor;
};
disableAutosave: {
attribute: string;
type: BooleanConstructor;
};
unstyled: {
type: BooleanConstructor;
};
addCustomSectionIndex: {
type: NumberConstructor;
state: boolean;
};
selectedCustomElement: {
type: ObjectConstructor;
state: boolean;
};
};
/**
* @type {String} - Markdown Content
*/
markdown: string;
/**
* @type {String} - Markdown Content URL
*/
markdownURL: string;
/**
* Render the element without additional styles
*
* @type {Boolean}
*/
unstyled: boolean;
/**
* Renders the element without a shadow root
*
* @type {Boolean}
*/
noShadow: boolean;
/**
* Disable auto save
*
* @deprecated Will be removed in the next major version
* @type {Boolean}
*/
disableAutosave: boolean;
/**
* Enable or disable editor
*
* @deprecated Will be removed in the next major version
* @type {String | "closed" | undefined}
*/
showEditor: string | "closed" | undefined;
/**
* Enable or disable navigation
*
* @type {Boolean}
*/
showNav: boolean;
/**
* Enable or disable hero scroll indicator
*
* @type {Boolean}
*/
showHeroScrollIndicator: boolean;
/**
* Enable or disable map loading indicator by default
*
* @type {Boolean}
*/
showMapLoadingIndicator: boolean;
/**
* List of items in navigation
*
* @type {Array