idyll-langidyll
DocsTutorialsGalleryEditor
menu

Overview

  • Introduction
  • Getting started
  • Markup syntax
  • HTML tags
  • Options and styles
  • Plugin system
  • Multipage template

Interactivity

  • Built-in components
  • Using components from npm
  • Make your own component
  • Scrolling and Refs

Publishing

  • Deploying to the web
  • Embedding Idyll

Useful Links

  • Github
  • Chat
  • Twitter
  • Support Us

Embedding Idyll in an existing web page

The following instructions assume you are working in a JavaScript environment that supports importing components from npm. If you prefer to embed Idyll using a script tag, see idyll-embed.

The Idyll runtime is available as a React component, allowing you to embed interactive Idyll content anywhere on the web.

To do this, you must first install the dependencies:

$ npm i --save idyll-document idyll-components

then, add it to your page. If you are already using React, you can include this as a standard component:

import IdyllDocument from 'idyll-document';
import * as components from 'idyll-components';

// An example functional component
({ idyllMarkup }) => {
  return (
    <IdyllDocument
      markup={ idyllMarkup }
      components={ components }
      datasets={ {} } />;
  )
}

If not, you'll also need to install react and react-dom:

$ npm i --save react react-dom

and can embed it like this:

import React from 'react';
import ReactDOM from 'react-dom';
import IdyllDocument from 'idyll-document';
import * as components from 'idyll-components';

// You must provide idyllMarkup
// and the container element (a DOM node).
ReactDOM.render(
  <IdyllDocument
    markup={ idyllMarkup }
    components={ components }
    datasets={ {} } />,
  containerElement
)

To add additional components:

import IdyllDocument from 'idyll-document';
import * as components from 'idyll-components';
import IdyllVegalite from 'idyll-vega-lite';

const availableComponents = {
   ...components,
   IdyllVegaLite: IdyllVegaLite
}

// An example functional component
({ idyllMarkup }) => {
  return (
    <IdyllDocument
      markup={ idyllMarkup }
      components={ availableComponents }
      datasets={ {} } />;
  )
}

The IdyllDocument component accepts the following options:

<IdyllDocument
    ast={ast} /* optional, if you want to pass in a precompiled abstract syntax tree instead of markup */
    components={components} /* Map of components that may be referenced in markup */
    context={context} /* Add custom context hooks (see https://idyll-lang.org/docs/advanced-configuration) for more info */
    datasets={datasets} /* Map of datasets that may be referenced in markup */
    layout={layout} /* Which layout to use? e.g. "blog", "centered" */
    markup={markup} /* String of Idyll markup. Must provide either this OR ast */
    theme={theme} /* Which theme to use? e.g. "github" */
/>