{
  "version": "experimental",
  "tags": [
    {
      "name": "pb-component-docs",
      "path": "./src/docs/pb-component-docs.js",
      "description": "An API viewer for webcomponents based on the JSON format produced\nby web-component-analyzer.",
      "attributes": [
        {
          "name": "file",
          "description": "Path to the JSON file generated by web-components-analyzer",
          "type": "string"
        },
        {
          "name": "demo",
          "description": "Path to the JSON file mapping component names to available demo files",
          "type": "string"
        }
      ],
      "properties": [
        {
          "name": "file",
          "attribute": "file",
          "description": "Path to the JSON file generated by web-components-analyzer",
          "type": "string"
        },
        {
          "name": "demo",
          "attribute": "demo",
          "description": "Path to the JSON file mapping component names to available demo files",
          "type": "string"
        },
        {
          "name": "view",
          "type": "PbComponentView"
        }
      ],
      "slots": [
        {
          "name": "logo",
          "description": "HTML to show as logo on top of the drawer"
        }
      ]
    },
    {
      "name": "pb-component-view",
      "path": "./src/docs/pb-component-view.js",
      "description": "Core viewer showing the element documentation and demos.",
      "attributes": [
        {
          "name": "default-title",
          "type": "string",
          "default": "\"Webcomponents API\""
        }
      ],
      "properties": [
        {
          "name": "defaultTitle",
          "attribute": "default-title",
          "type": "string",
          "default": "\"Webcomponents API\""
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-header-background-color",
          "description": "Background color of the header"
        },
        {
          "name": "--pb-header-color",
          "description": "Color of header text"
        }
      ]
    },
    {
      "name": "pb-components-list",
      "path": "./src/docs/pb-components-list.js",
      "description": "Displays a list of components to view.",
      "attributes": [
        {
          "name": "json",
          "type": "object"
        },
        {
          "name": "with-demo",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "json",
          "attribute": "json",
          "type": "object"
        },
        {
          "name": "withDemo",
          "attribute": "with-demo",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-api-component",
          "description": "if a component name is clicked"
        }
      ]
    },
    {
      "name": "pb-demo-snippet",
      "path": "./src/docs/pb-demo-snippet.js",
      "description": "Viewer for demo code.",
      "attributes": [
        {
          "name": "title",
          "type": "string",
          "default": "\"TEI Publisher Webcomponents Example\""
        },
        {
          "name": "code",
          "type": "string",
          "default": "\"Loading ...\""
        }
      ],
      "properties": [
        {
          "name": "title",
          "attribute": "title",
          "type": "string",
          "default": "\"TEI Publisher Webcomponents Example\""
        },
        {
          "name": "code",
          "attribute": "code",
          "type": "string",
          "default": "\"Loading ...\""
        }
      ]
    },
    {
      "name": "dts-client",
      "path": "./src/dts-client.js",
      "description": "A client for the Distributed Text Services (DTS) protocol. This defines an API\nfor working with collections of text.",
      "attributes": [
        {
          "name": "baseUri",
          "type": "string"
        },
        {
          "name": "data",
          "type": "object"
        },
        {
          "name": "page",
          "type": "number"
        },
        {
          "name": "perPage",
          "type": "number"
        },
        {
          "name": "collection",
          "type": "string",
          "default": "\"default\""
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "baseUri",
          "attribute": "baseUri",
          "type": "string"
        },
        {
          "name": "data",
          "attribute": "data",
          "type": "object"
        },
        {
          "name": "page",
          "attribute": "page",
          "type": "number"
        },
        {
          "name": "perPage",
          "attribute": "perPage",
          "type": "number"
        },
        {
          "name": "collection",
          "attribute": "collection",
          "type": "string",
          "default": "\"default\""
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-start-update",
          "description": "Fired before the element updates its content"
        },
        {
          "name": "pb-results-received",
          "description": "Fired when results are received from the server"
        },
        {
          "name": "pb-end-update",
          "description": "Fired after the element has finished updating its content"
        },
        {
          "name": "dts-endpoint",
          "description": "When received sets the endpoint to the one passed in from the event"
        },
        {
          "name": "pb-load",
          "description": "When received triggers the refresh accorting to the selected page"
        }
      ],
      "slots": [
        {
          "name": "toolbar",
          "description": "toolbar area"
        },
        {
          "name": "pagination",
          "description": "pagination area"
        }
      ],
      "cssParts": [
        {
          "name": "parent-link",
          "description": "Link to parent collection"
        },
        {
          "name": "collection-title",
          "description": "Collection title"
        },
        {
          "name": "title",
          "description": "Member title"
        },
        {
          "name": "author",
          "description": "Author"
        },
        {
          "name": "license",
          "description": "License information"
        },
        {
          "name": "link",
          "description": "Links"
        }
      ]
    },
    {
      "name": "dts-select-endpoint",
      "path": "./src/dts-select-endpoint.js",
      "description": "A dropdown to select a DTS endpoint from a configured list.\nThe list may either be given as a JSON-formatted string within the\n`endpoints` property or it can be loaded from a JSON file whose path\nis specified via the `load` property.\n\nThe JSON should contain an array of objects, each having an `url` and\n`title` property.",
      "attributes": [
        {
          "name": "endpoint",
          "description": "The currently selected endpoint. Will be set from URL parameter if present.",
          "type": "string"
        },
        {
          "name": "auto",
          "description": "Set to true to automatically select the first endpoint",
          "type": "boolean"
        },
        {
          "name": "endpoints",
          "description": "Array of endpoints to select from, each being an object with\nproperties `url` and `title`.",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "label",
          "type": "string",
          "default": "\"dts.endpoint\""
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "endpoint",
          "attribute": "endpoint",
          "description": "The currently selected endpoint. Will be set from URL parameter if present.",
          "type": "string"
        },
        {
          "name": "auto",
          "attribute": "auto",
          "description": "Set to true to automatically select the first endpoint",
          "type": "boolean"
        },
        {
          "name": "endpoints",
          "attribute": "endpoints",
          "description": "Array of endpoints to select from, each being an object with\nproperties `url` and `title`.",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "label",
          "attribute": "label",
          "type": "string",
          "default": "\"dts.endpoint\""
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "dts-endpoint",
          "description": "Sets the endpoint"
        }
      ]
    },
    {
      "name": "pb-ajax",
      "path": "./src/pb-ajax.js",
      "description": "Triggers an action on the server and shows a dialog\nupon completion. Used for the \"recompile ODD\" and other\nactions.\n\nThe parameters sent to the server-side script will be copied\nfrom the `pb-view` to which this component subscribes, see pb-update event.",
      "attributes": [
        {
          "name": "url",
          "description": "the URL to send a request to",
          "type": "string"
        },
        {
          "name": "title",
          "description": "Title of link that triggers the request",
          "type": "string"
        },
        {
          "name": "event",
          "description": "If set, emits an event with the given name to the channel\nthis component is subscribed to.",
          "type": "string"
        },
        {
          "name": "method",
          "description": "HTTP method to use, e.g. 'get', 'post', 'delete' ...",
          "type": "string",
          "default": "\"get\""
        },
        {
          "name": "confirm",
          "description": "If set, display a confirmation dialog with the message text given in\nthis property. The user may cancel the action.",
          "type": "string"
        },
        {
          "name": "quiet",
          "description": "Set to not show the server's response",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "url",
          "attribute": "url",
          "description": "the URL to send a request to",
          "type": "string"
        },
        {
          "name": "title",
          "attribute": "title",
          "description": "Title of link that triggers the request",
          "type": "string"
        },
        {
          "name": "event",
          "attribute": "event",
          "description": "If set, emits an event with the given name to the channel\nthis component is subscribed to.",
          "type": "string"
        },
        {
          "name": "method",
          "attribute": "method",
          "description": "HTTP method to use, e.g. 'get', 'post', 'delete' ...",
          "type": "string",
          "default": "\"get\""
        },
        {
          "name": "confirm",
          "attribute": "confirm",
          "description": "If set, display a confirmation dialog with the message text given in\nthis property. The user may cancel the action.",
          "type": "string"
        },
        {
          "name": "quiet",
          "attribute": "quiet",
          "description": "Set to not show the server's response",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-start-update",
          "description": "Fired before the element updates its content"
        },
        {
          "name": "pb-end-update",
          "description": "Fired after the element has finished updating its content"
        },
        {
          "name": "pb-update",
          "description": "When received, copies request parameters from the event"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "unnamed slot for link content"
        },
        {
          "name": "title",
          "description": "dialog title"
        }
      ]
    },
    {
      "name": "pb-authority-lookup",
      "path": "./src/pb-authority-lookup.js",
      "description": "Performs authority lookups via configurable connectors.",
      "attributes": [
        {
          "name": "stopwords",
          "description": "A list of comma-separated stopwords which should be excluded\nwhen searching for other occurrences of an authority in the\nHTML text",
          "type": "string"
        },
        {
          "name": "auto",
          "description": "Automatically start a lookup when the query parameter is set on initialization.",
          "type": "boolean"
        },
        {
          "name": "query",
          "description": "The query string to be sent to the authority",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "type",
          "description": "The authority type to use. Should correspond to a name defined for one of the connectors.",
          "type": "string"
        },
        {
          "name": "sort-by-label",
          "description": "Enable to alphabetically reorder authority search results by label.\nOtherwise results are shown as returned by the authority.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "no-occurrences",
          "description": "Do not show occurrences count, which would be fetched from the server.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "group",
          "description": "A list of space- or comma-separated group names, whose members will be\nallowed to add or edit entries in the local register (if enabled).",
          "type": "string",
          "default": "\"\\\"tei\\\"\""
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "stopwords",
          "attribute": "stopwords",
          "description": "A list of comma-separated stopwords which should be excluded\nwhen searching for other occurrences of an authority in the\nHTML text",
          "type": "string"
        },
        {
          "name": "autoLookup",
          "attribute": "auto",
          "description": "Automatically start a lookup when the query parameter is set on initialization.",
          "type": "boolean"
        },
        {
          "name": "query",
          "attribute": "query",
          "description": "The query string to be sent to the authority",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "type",
          "attribute": "type",
          "description": "The authority type to use. Should correspond to a name defined for one of the connectors.",
          "type": "string"
        },
        {
          "name": "sortByLabel",
          "attribute": "sort-by-label",
          "description": "Enable to alphabetically reorder authority search results by label.\nOtherwise results are shown as returned by the authority.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "noOccurrences",
          "attribute": "no-occurrences",
          "description": "Do not show occurrences count, which would be fetched from the server.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "group",
          "attribute": "group",
          "description": "A list of space- or comma-separated group names, whose members will be\nallowed to add or edit entries in the local register (if enabled).",
          "type": "string",
          "default": "\"\\\"tei\\\"\""
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-authority-select",
          "description": "Fired when user selects an entry from the list"
        },
        {
          "name": "pb-authority-edit-entity",
          "description": "Fired when user clicks the edit button next to an entry"
        },
        {
          "name": "pb-authority-new-entity",
          "description": "Fired when user clicks the add new entity button"
        },
        {
          "name": "pb-authority-lookup",
          "description": "When received, starts a lookup using the passed in query string and\nauthority type"
        }
      ]
    },
    {
      "name": "pb-autocomplete",
      "path": "./src/pb-autocomplete.js",
      "description": "Provides an input with attached autocomplete. The autocomplete suggestions can be read\neither from a static list or a remote endpoint to which the current user input is sent.",
      "attributes": [
        {
          "name": "name",
          "description": "Name of the form field which will be submitted",
          "type": "string"
        },
        {
          "name": "value",
          "description": "Value of the form field which will be submitted",
          "type": "string"
        },
        {
          "name": "source",
          "description": "Optional URL to query for suggestions. If relative, it is interpreted\nrelative to the endpoint defined on a surrounding `pb-page`.\n\nUpon autocomplete, the current input by the user will be sent with a query parameter\n`query`. The name/values of form controls nested within `pb-autocomplete` will also be\nappended to the request as parameters. This allows the server side code to distinguish\ndifferent states.",
          "type": "string"
        },
        {
          "name": "icon",
          "description": "An icon to display next to the input.",
          "type": "string"
        },
        {
          "name": "placeholder",
          "description": "Placeholder to display if field is empty",
          "type": "string",
          "default": "\"search.placeholder\""
        },
        {
          "name": "suggestions",
          "description": "A static list of suggestions. Use instead of `source`. May either be a flat array of strings,\nor an array containing objects of the form `{\"text\": \"\", \"value\": \"\"}, in which case \"value\" denotes\nthe value to be used when the enclosing form is submitted, and \"text\" is the label to be displayed.",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "preload",
          "description": "If set, the entire list of possible suggestions will be preloaded upon initialization of the\ncomponent.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "substring",
          "description": "By default suggestions are filtered by prefix, i.e. only suggestions starting with the prefix\ntyped by the user are shown. Set this property to true to search for the user-provided string\nanywhere within the suggestion text.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "name",
          "attribute": "name",
          "description": "Name of the form field which will be submitted",
          "type": "string"
        },
        {
          "name": "value",
          "attribute": "value",
          "description": "Value of the form field which will be submitted",
          "type": "string"
        },
        {
          "name": "source",
          "attribute": "source",
          "description": "Optional URL to query for suggestions. If relative, it is interpreted\nrelative to the endpoint defined on a surrounding `pb-page`.\n\nUpon autocomplete, the current input by the user will be sent with a query parameter\n`query`. The name/values of form controls nested within `pb-autocomplete` will also be\nappended to the request as parameters. This allows the server side code to distinguish\ndifferent states.",
          "type": "string"
        },
        {
          "name": "icon",
          "attribute": "icon",
          "description": "An icon to display next to the input.",
          "type": "string"
        },
        {
          "name": "placeholder",
          "attribute": "placeholder",
          "description": "Placeholder to display if field is empty",
          "type": "string",
          "default": "\"search.placeholder\""
        },
        {
          "name": "suggestions",
          "attribute": "suggestions",
          "description": "A static list of suggestions. Use instead of `source`. May either be a flat array of strings,\nor an array containing objects of the form `{\"text\": \"\", \"value\": \"\"}, in which case \"value\" denotes\nthe value to be used when the enclosing form is submitted, and \"text\" is the label to be displayed.",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "lastSelected"
        },
        {
          "name": "preload",
          "attribute": "preload",
          "description": "If set, the entire list of possible suggestions will be preloaded upon initialization of the\ncomponent.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "substring",
          "attribute": "substring",
          "description": "By default suggestions are filtered by prefix, i.e. only suggestions starting with the prefix\ntyped by the user are shown. Set this property to true to search for the user-provided string\nanywhere within the suggestion text.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "default unnamed slot"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-search-label-color",
          "description": "Color of the label and underline"
        },
        {
          "name": "--pb-search-input-color",
          "description": "Text color for input field"
        },
        {
          "name": "--pb-search-focus-color",
          "description": "Color for label and underline if input has focus"
        },
        {
          "name": "--pb-search-suggestions-color",
          "description": "Color for the labels shown in the suggestions dropdown"
        },
        {
          "name": "--pb-search-suggestions-background",
          "description": "Background for the suggestions dropdown"
        }
      ]
    },
    {
      "name": "pb-blacklab-highlight",
      "path": "./src/pb-blacklab-highlight.js",
      "description": "This component queries the blacklab API of TEI-Publisher for a list of text matches\nin a given document. The query is given as a CQL querystring (see pattern property).\n\n**Note**: There's no demo for this component yet as it would need a blacklab instance.\n\nThe component displays 2 navigation buttons to jump to previous / next match and\na display of the current index and total number of matches.\n\nWhen navigating and the requested match is not on the current page a pb-refresh is dispatched\nto load the correct page. Once the page has dispatch pb-update this component will refresh and trigger\nloading of matches from the API.\n\nHighlighting is accomplished by marking the matched text with the following CSS classes:\n- kwic-start - for the start of the match\n- kwic-end - for the end of the match (might be on the same node as 'kwic-start'\n- kwic-current - to set a different highlight color for the current match\n\nWhen navigating the browser URL will be updated to allow bookmarks for a certain match.\n\nNote: this component does no caching of query results yet. In case of heavier use the data can be taken\nfrom localStorage ('pb-kwic-results') as usually pb-kwic-results has been visited by the user before. For\nstability reasons this was not done in this version.\n\n\nWhen data are present highlights are processed.",
      "attributes": [
        {
          "name": "current",
          "description": "one-based index of the current highlight",
          "type": "number"
        },
        {
          "name": "view",
          "description": "the id of the view for which highlights shall be displayed",
          "type": "string"
        },
        {
          "name": "pattern",
          "description": "CQL search pattern send to the Blacklab API",
          "type": "string"
        },
        {
          "name": "match",
          "description": "optional match parameter on the URL. If present page will display appropriate hit",
          "type": "string"
        },
        {
          "name": "docid",
          "description": "the document id",
          "type": "string"
        },
        {
          "name": "hits",
          "description": "holds the results of querying the 'api/blacklab/doc' endpoint",
          "type": "array"
        },
        {
          "name": "kwicData",
          "description": "contains full response after successful loading",
          "type": "object"
        },
        {
          "name": "matchParam",
          "description": "optional: may hold id of match element to be highlighted",
          "type": "string"
        },
        {
          "name": "pageId",
          "description": "the pageId to display",
          "type": "string"
        },
        {
          "name": "per-document",
          "description": "how many hits shall be loaded. Defaults to 100. This value is passed to the blacklab API",
          "type": "number"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "current",
          "attribute": "current",
          "description": "one-based index of the current highlight",
          "type": "number"
        },
        {
          "name": "view",
          "attribute": "view",
          "description": "the id of the view for which highlights shall be displayed",
          "type": "string"
        },
        {
          "name": "pattern",
          "attribute": "pattern",
          "description": "CQL search pattern send to the Blacklab API",
          "type": "string"
        },
        {
          "name": "match",
          "attribute": "match",
          "description": "optional match parameter on the URL. If present page will display appropriate hit",
          "type": "string"
        },
        {
          "name": "docid",
          "attribute": "docid",
          "description": "the document id",
          "type": "string"
        },
        {
          "name": "hits",
          "attribute": "hits",
          "description": "holds the results of querying the 'api/blacklab/doc' endpoint",
          "type": "array"
        },
        {
          "name": "kwicData",
          "attribute": "kwicData",
          "description": "contains full response after successful loading",
          "type": "object"
        },
        {
          "name": "matchParam",
          "attribute": "matchParam",
          "description": "optional: may hold id of match element to be highlighted",
          "type": "string"
        },
        {
          "name": "pageId",
          "attribute": "pageId",
          "description": "the pageId to display",
          "type": "string"
        },
        {
          "name": "perDocument",
          "attribute": "per-document",
          "description": "how many hits shall be loaded. Defaults to 100. This value is passed to the blacklab API",
          "type": "number"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ]
    },
    {
      "name": "pb-blacklab-results",
      "path": "./src/pb-blacklab-results.js",
      "description": "This component talks to the blacklab API of TEI-Publisher to\nload KWIC results from a remote Blacklab instance. It displays\na list of documents that match the query given by `pattern`.\n\n**Note**: There's no demo for this component yet as it would need a blacklab instance.\n\nFor each document a list of hits (matches) is displayed each showing the hit\nin context of the text.\n\nDocument Id and hits are links that can be used to open the document\nand navigate through the hits with the help of pb-view and pb-blacklab-highlight\ncomponents.",
      "attributes": [
        {
          "name": "per-page",
          "description": "how many hits per page. will be passed down to pb-paginate",
          "type": "number"
        },
        {
          "name": "pattern",
          "description": "must be a valid CQL query as a string",
          "type": "string"
        },
        {
          "name": "target",
          "description": "target for links",
          "type": "string"
        },
        {
          "name": "data",
          "description": "results from a kwic search",
          "type": "object",
          "default": "{\"documents\":[]}"
        },
        {
          "name": "documents",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "first",
          "description": "first document number to be displayed",
          "type": "number",
          "default": "1"
        },
        {
          "name": "doc",
          "description": "document id",
          "type": "string"
        },
        {
          "name": "sort",
          "description": "sort order of query results",
          "type": "string"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "perPage",
          "attribute": "per-page",
          "description": "how many hits per page. will be passed down to pb-paginate",
          "type": "number"
        },
        {
          "name": "pattern",
          "attribute": "pattern",
          "description": "must be a valid CQL query as a string",
          "type": "string"
        },
        {
          "name": "target",
          "attribute": "target",
          "description": "target for links",
          "type": "string"
        },
        {
          "name": "data",
          "attribute": "data",
          "description": "results from a kwic search",
          "type": "object",
          "default": "{\"documents\":[]}"
        },
        {
          "name": "documents",
          "attribute": "documents",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "first",
          "attribute": "first",
          "description": "first document number to be displayed",
          "type": "number",
          "default": "1"
        },
        {
          "name": "doc",
          "attribute": "doc",
          "description": "document id",
          "type": "string"
        },
        {
          "name": "sort",
          "attribute": "sort",
          "description": "sort order of query results",
          "type": "string"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "cssParts": [
        {
          "name": "paginator",
          "description": "the pb-paginate component"
        },
        {
          "name": "label",
          "description": "the pb-paginate label"
        }
      ]
    },
    {
      "name": "pb-browse-docs",
      "path": "./src/pb-browse-docs.js",
      "description": "Component to browse through a collection of documents with sorting, filtering and facets.",
      "attributes": [
        {
          "name": "collection",
          "type": "string"
        },
        {
          "name": "facets",
          "type": "object"
        },
        {
          "name": "login",
          "description": "Id of the pb-login element to connect to",
          "type": "string"
        },
        {
          "name": "group",
          "description": "If set, requires the logged in user to be member of\nthe given group.",
          "type": "string"
        },
        {
          "name": "subforms",
          "type": "string"
        },
        {
          "name": "sort-options",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "sortLabel",
          "type": "string",
          "default": "\"browse.sort\""
        },
        {
          "name": "sort-by",
          "type": "string",
          "default": "\"default\""
        },
        {
          "name": "filter",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "filter-options",
          "type": "array",
          "default": "[{\"label\":\"Title\",\"value\":\"title\"}]"
        },
        {
          "name": "filterByLabel",
          "type": "string",
          "default": "\"browse.filter\""
        },
        {
          "name": "filterPlaceholderLabel",
          "type": "string",
          "default": "\"browse.filterPlaceholder\""
        },
        {
          "name": "filter-by",
          "type": "string",
          "default": "\"title\""
        },
        {
          "name": "static",
          "description": "If set, rewrite URLs to load pages as static HTML files,\nso no TEI Publisher instance is required",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "url",
          "description": "The URL for the AJAX request. If a relative URL is passed, it will be resolved\nagainst the current API endpoint.",
          "type": "string"
        },
        {
          "name": "expand",
          "description": "If set to true, the `url` property will be interpreted as a template string\ncontaining placeholders for parameters in `{parameter-name}`. The placeholders\nwill be replaced by the actual parameters when building the final URL. Each parameter\nused in the URL template will be removed from the request parameter list.",
          "type": "boolean"
        },
        {
          "name": "src",
          "description": "ID of the pb-document this element is connected to. The document path to\nload will be taken from the pb-document.",
          "type": "string"
        },
        {
          "name": "container",
          "description": "The container element into which the results returned by\nthe AJAX request will be loaded.",
          "type": "string"
        },
        {
          "name": "fix-links",
          "description": "If set, relative links (img, a) will be made absolute.",
          "type": "boolean"
        },
        {
          "name": "start",
          "description": "Start offset to use for showing paginated content.",
          "type": "number"
        },
        {
          "name": "use-language",
          "description": "If set, a parameter \"language\" will be added to the parameter list.\nAlso, a refresh will be triggered if a `pb-i18n-update` event is received,\ne.g. due to the user selecting a different interface language.\n\nAlso requires `requireLanguage` to be set on the surrounding `pb-page`.\nSee there for more information.",
          "type": "boolean"
        },
        {
          "name": "userParams",
          "description": "Additional, user-defined parameters to be sent with the request.",
          "type": "object"
        },
        {
          "name": "plain",
          "description": "Do not add internal parameters like 'start' or 'language' to the URL\nbut leave it untouched.",
          "type": "boolean"
        },
        {
          "name": "auto",
          "description": "Should content be loaded immediately when the component is initialized?",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "loadOnce",
          "description": "Only load content once, not every time a `pb-load` event is received.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "history",
          "description": "Indicates if the parameters of the request made should be saved to the browser\nhistory and URL. Default: false.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "event",
          "description": "The event which will trigger a new request to be sent. Default is 'pb-load'.",
          "type": "string",
          "default": "\"pb-load\""
        },
        {
          "name": "no-credentials",
          "description": "Indicates whether or not cross-site Access-Control requests should be made.\nDefault is false.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "silent",
          "description": "If set, silently ignore errors when sending the request.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "collection",
          "attribute": "collection",
          "type": "string"
        },
        {
          "name": "facets",
          "attribute": "facets",
          "type": "object"
        },
        {
          "name": "login",
          "attribute": "login",
          "description": "Id of the pb-login element to connect to",
          "type": "string"
        },
        {
          "name": "group",
          "attribute": "group",
          "description": "If set, requires the logged in user to be member of\nthe given group.",
          "type": "string"
        },
        {
          "name": "subforms",
          "attribute": "subforms",
          "type": "string"
        },
        {
          "name": "sortOptions",
          "attribute": "sort-options",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "sortLabel",
          "attribute": "sortLabel",
          "type": "string",
          "default": "\"browse.sort\""
        },
        {
          "name": "sortBy",
          "attribute": "sort-by",
          "type": "string",
          "default": "\"default\""
        },
        {
          "name": "filter",
          "attribute": "filter",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "filterOptions",
          "attribute": "filter-options",
          "type": "array",
          "default": "[{\"label\":\"Title\",\"value\":\"title\"}]"
        },
        {
          "name": "filterByLabel",
          "attribute": "filterByLabel",
          "type": "string",
          "default": "\"browse.filter\""
        },
        {
          "name": "filterPlaceholderLabel",
          "attribute": "filterPlaceholderLabel",
          "type": "string",
          "default": "\"browse.filterPlaceholder\""
        },
        {
          "name": "filterBy",
          "attribute": "filter-by",
          "type": "string",
          "default": "\"title\""
        },
        {
          "name": "static",
          "attribute": "static",
          "description": "If set, rewrite URLs to load pages as static HTML files,\nso no TEI Publisher instance is required",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "url",
          "attribute": "url",
          "description": "The URL for the AJAX request. If a relative URL is passed, it will be resolved\nagainst the current API endpoint.",
          "type": "string"
        },
        {
          "name": "expand",
          "attribute": "expand",
          "description": "If set to true, the `url` property will be interpreted as a template string\ncontaining placeholders for parameters in `{parameter-name}`. The placeholders\nwill be replaced by the actual parameters when building the final URL. Each parameter\nused in the URL template will be removed from the request parameter list.",
          "type": "boolean"
        },
        {
          "name": "src",
          "attribute": "src",
          "description": "ID of the pb-document this element is connected to. The document path to\nload will be taken from the pb-document.",
          "type": "string"
        },
        {
          "name": "container",
          "attribute": "container",
          "description": "The container element into which the results returned by\nthe AJAX request will be loaded.",
          "type": "string"
        },
        {
          "name": "fixLinks",
          "attribute": "fix-links",
          "description": "If set, relative links (img, a) will be made absolute.",
          "type": "boolean"
        },
        {
          "name": "start",
          "attribute": "start",
          "description": "Start offset to use for showing paginated content.",
          "type": "number"
        },
        {
          "name": "useLanguage",
          "attribute": "use-language",
          "description": "If set, a parameter \"language\" will be added to the parameter list.\nAlso, a refresh will be triggered if a `pb-i18n-update` event is received,\ne.g. due to the user selecting a different interface language.\n\nAlso requires `requireLanguage` to be set on the surrounding `pb-page`.\nSee there for more information.",
          "type": "boolean"
        },
        {
          "name": "userParams",
          "attribute": "userParams",
          "description": "Additional, user-defined parameters to be sent with the request.",
          "type": "object"
        },
        {
          "name": "plain",
          "attribute": "plain",
          "description": "Do not add internal parameters like 'start' or 'language' to the URL\nbut leave it untouched.",
          "type": "boolean"
        },
        {
          "name": "auto",
          "attribute": "auto",
          "description": "Should content be loaded immediately when the component is initialized?",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "loadOnce",
          "attribute": "loadOnce",
          "description": "Only load content once, not every time a `pb-load` event is received.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "history",
          "attribute": "history",
          "description": "Indicates if the parameters of the request made should be saved to the browser\nhistory and URL. Default: false.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "event",
          "attribute": "event",
          "description": "The event which will trigger a new request to be sent. Default is 'pb-load'.",
          "type": "string",
          "default": "\"pb-load\""
        },
        {
          "name": "loaded",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "language"
        },
        {
          "name": "noCredentials",
          "attribute": "no-credentials",
          "description": "Indicates whether or not cross-site Access-Control requests should be made.\nDefault is false.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "silent",
          "attribute": "silent",
          "description": "If set, silently ignore errors when sending the request.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-collection",
          "description": "Sent to inform e.g. pb-upload about current collection"
        },
        {
          "name": "pb-search-resubmit",
          "description": "When received, set facet values as received from the event"
        },
        {
          "name": "pb-login",
          "description": "When received, refresh the view if the user changed"
        },
        {
          "name": "pb-start-update",
          "description": "Fired before the element updates its content"
        },
        {
          "name": "pb-end-update",
          "description": "Fired after the element has finished updating its content"
        },
        {
          "name": "pb-results-received",
          "description": "Fired when the component received content from the server"
        },
        {
          "name": "pb-toggle",
          "description": "When received, changes the state of the feature"
        }
      ],
      "slots": [
        {
          "name": "toolbar",
          "description": "toolbar area"
        },
        {
          "name": "",
          "description": "unnamed default slot"
        },
        {
          "name": "footer",
          "description": "footer area"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-search-suggestions-background",
          "description": "Background for the autocomplete suggestions for the filter field"
        },
        {
          "name": "--pb-search-suggestions-color",
          "description": "Text color for the autocomplete suggestion for the filter field"
        },
        {
          "name": "--pb-search-label-color",
          "description": "Determines the color of small label above the sort by/filter by/filter fields"
        },
        {
          "name": "--pb-search-input-color",
          "description": "Determines the color of the text in the sort by/filter by/filter fields"
        },
        {
          "name": "--pb-search-focus-color",
          "description": "Color of the field labels and underline when in focus"
        },
        {
          "name": "--pb-browse-toolbar-justify-content",
          "description": "How to justify the browse toolbar content, following flexbox justify-content property e.g. center, space-evenly, start..."
        }
      ],
      "cssParts": [
        {
          "name": "delete-button",
          "description": "the delete button"
        },
        {
          "name": "sort-dropdown",
          "description": "dropdown for sorting"
        },
        {
          "name": "filter-dropdown",
          "description": "dropdown for filtering"
        },
        {
          "name": "filter-input",
          "description": "input for filtering"
        }
      ]
    },
    {
      "name": "pb-browse",
      "path": "./src/pb-browse.js",
      "description": "Extends PbLoad to support browsing collections.\n\nThis is a reduced version of `pb-browse-docs`, which differs\nfrom a plain `pb-load` only in that it scans the returned\ncollection listing for links to subcollections and keeps\ntrack of the current collection.\n\nAll UI elements present in `pb-browse-docs` have been removed.",
      "attributes": [
        {
          "name": "collection",
          "description": "The collection currently being browsed (if any)",
          "type": "string"
        },
        {
          "name": "static",
          "description": "If set, rewrite URLs to load pages as static HTML files,\nso no TEI Publisher instance is required",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "url",
          "description": "The URL for the AJAX request. If a relative URL is passed, it will be resolved\nagainst the current API endpoint.",
          "type": "string"
        },
        {
          "name": "expand",
          "description": "If set to true, the `url` property will be interpreted as a template string\ncontaining placeholders for parameters in `{parameter-name}`. The placeholders\nwill be replaced by the actual parameters when building the final URL. Each parameter\nused in the URL template will be removed from the request parameter list.",
          "type": "boolean"
        },
        {
          "name": "src",
          "description": "ID of the pb-document this element is connected to. The document path to\nload will be taken from the pb-document.",
          "type": "string"
        },
        {
          "name": "container",
          "description": "The container element into which the results returned by\nthe AJAX request will be loaded.",
          "type": "string"
        },
        {
          "name": "fix-links",
          "description": "If set, relative links (img, a) will be made absolute.",
          "type": "boolean"
        },
        {
          "name": "start",
          "description": "Start offset to use for showing paginated content.",
          "type": "number"
        },
        {
          "name": "use-language",
          "description": "If set, a parameter \"language\" will be added to the parameter list.\nAlso, a refresh will be triggered if a `pb-i18n-update` event is received,\ne.g. due to the user selecting a different interface language.\n\nAlso requires `requireLanguage` to be set on the surrounding `pb-page`.\nSee there for more information.",
          "type": "boolean"
        },
        {
          "name": "userParams",
          "description": "Additional, user-defined parameters to be sent with the request.",
          "type": "object"
        },
        {
          "name": "plain",
          "description": "Do not add internal parameters like 'start' or 'language' to the URL\nbut leave it untouched.",
          "type": "boolean"
        },
        {
          "name": "auto",
          "description": "Should content be loaded immediately when the component is initialized?",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "loadOnce",
          "description": "Only load content once, not every time a `pb-load` event is received.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "history",
          "description": "Indicates if the parameters of the request made should be saved to the browser\nhistory and URL. Default: false.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "event",
          "description": "The event which will trigger a new request to be sent. Default is 'pb-load'.",
          "type": "string",
          "default": "\"pb-load\""
        },
        {
          "name": "no-credentials",
          "description": "Indicates whether or not cross-site Access-Control requests should be made.\nDefault is false.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "silent",
          "description": "If set, silently ignore errors when sending the request.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "collection",
          "attribute": "collection",
          "description": "The collection currently being browsed (if any)",
          "type": "string"
        },
        {
          "name": "static",
          "attribute": "static",
          "description": "If set, rewrite URLs to load pages as static HTML files,\nso no TEI Publisher instance is required",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "url",
          "attribute": "url",
          "description": "The URL for the AJAX request. If a relative URL is passed, it will be resolved\nagainst the current API endpoint.",
          "type": "string"
        },
        {
          "name": "expand",
          "attribute": "expand",
          "description": "If set to true, the `url` property will be interpreted as a template string\ncontaining placeholders for parameters in `{parameter-name}`. The placeholders\nwill be replaced by the actual parameters when building the final URL. Each parameter\nused in the URL template will be removed from the request parameter list.",
          "type": "boolean"
        },
        {
          "name": "src",
          "attribute": "src",
          "description": "ID of the pb-document this element is connected to. The document path to\nload will be taken from the pb-document.",
          "type": "string"
        },
        {
          "name": "container",
          "attribute": "container",
          "description": "The container element into which the results returned by\nthe AJAX request will be loaded.",
          "type": "string"
        },
        {
          "name": "fixLinks",
          "attribute": "fix-links",
          "description": "If set, relative links (img, a) will be made absolute.",
          "type": "boolean"
        },
        {
          "name": "start",
          "attribute": "start",
          "description": "Start offset to use for showing paginated content.",
          "type": "number"
        },
        {
          "name": "useLanguage",
          "attribute": "use-language",
          "description": "If set, a parameter \"language\" will be added to the parameter list.\nAlso, a refresh will be triggered if a `pb-i18n-update` event is received,\ne.g. due to the user selecting a different interface language.\n\nAlso requires `requireLanguage` to be set on the surrounding `pb-page`.\nSee there for more information.",
          "type": "boolean"
        },
        {
          "name": "userParams",
          "attribute": "userParams",
          "description": "Additional, user-defined parameters to be sent with the request.",
          "type": "object"
        },
        {
          "name": "plain",
          "attribute": "plain",
          "description": "Do not add internal parameters like 'start' or 'language' to the URL\nbut leave it untouched.",
          "type": "boolean"
        },
        {
          "name": "auto",
          "attribute": "auto",
          "description": "Should content be loaded immediately when the component is initialized?",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "loadOnce",
          "attribute": "loadOnce",
          "description": "Only load content once, not every time a `pb-load` event is received.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "history",
          "attribute": "history",
          "description": "Indicates if the parameters of the request made should be saved to the browser\nhistory and URL. Default: false.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "event",
          "attribute": "event",
          "description": "The event which will trigger a new request to be sent. Default is 'pb-load'.",
          "type": "string",
          "default": "\"pb-load\""
        },
        {
          "name": "loaded",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "language"
        },
        {
          "name": "noCredentials",
          "attribute": "no-credentials",
          "description": "Indicates whether or not cross-site Access-Control requests should be made.\nDefault is false.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "silent",
          "attribute": "silent",
          "description": "If set, silently ignore errors when sending the request.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-start-update",
          "description": "Fired before the element updates its content"
        },
        {
          "name": "pb-end-update",
          "description": "Fired after the element has finished updating its content"
        },
        {
          "name": "pb-results-received",
          "description": "Fired when the component received content from the server"
        },
        {
          "name": "pb-toggle",
          "description": "When received, changes the state of the feature"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "default unnamed slot for content"
        }
      ]
    },
    {
      "name": "pb-clipboard",
      "path": "./src/pb-clipboard.js",
      "description": "A component with a button which copies the contained content to the clipboard.\nUse for the typical 'quote this content as' hints on a webpage.",
      "attributes": [
        {
          "name": "label",
          "description": "Label to display above the text to be copied",
          "type": "string",
          "default": "\"clipboard.label\""
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "label",
          "attribute": "label",
          "description": "Label to display above the text to be copied",
          "type": "string",
          "default": "\"clipboard.label\""
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "slots": [
        {
          "name": "content",
          "description": "contains the actual content to copy to the clipboard"
        }
      ]
    },
    {
      "name": "pb-code-editor",
      "path": "./src/pb-code-editor.js",
      "description": "A code editor based on codemirror 6. Provides a wrapper around\n[@jinntec/jinn-codemirror](https://github.com/JinnElements/jinn-codemirror),\nmainly for backwards compatibility.",
      "attributes": [
        {
          "name": "code",
          "description": "the code as a string",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "mode",
          "description": "the language mode e.g. 'javascript' or 'xquery'.",
          "type": "string",
          "default": "\"xml\""
        },
        {
          "name": "placeholder",
          "description": "placeholder if code is empty",
          "type": "string",
          "default": "\"odd.editor.model.empty\""
        },
        {
          "name": "tabSize",
          "description": "tab indent size",
          "type": "number",
          "default": "2"
        },
        {
          "name": "label",
          "description": "label for the editor",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "linter",
          "default": "\"\""
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "code",
          "attribute": "code",
          "description": "the code as a string",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "mode",
          "attribute": "mode",
          "description": "the language mode e.g. 'javascript' or 'xquery'.",
          "type": "string",
          "default": "\"xml\""
        },
        {
          "name": "placeholder",
          "attribute": "placeholder",
          "description": "placeholder if code is empty",
          "type": "string",
          "default": "\"odd.editor.model.empty\""
        },
        {
          "name": "tabSize",
          "attribute": "tabSize",
          "description": "tab indent size",
          "type": "number",
          "default": "2"
        },
        {
          "name": "label",
          "attribute": "label",
          "description": "label for the editor",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "linter",
          "attribute": "linter",
          "default": "\"\""
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "code-changed"
        }
      ],
      "deprecated": true,
      "deprecatedMessage": "directly use `jinn-codemirror`/`jinn-xml-editor`/`jinn-epidoc-editor` instead, which are\nincluded in the `pb-code-editor` bundle."
    },
    {
      "name": "pb-code-highlight",
      "path": "./src/pb-code-highlight.js",
      "description": "Highlight a code snippet. The snippet may either be passed in a template child\nelement, which could contain HTML or text. If no template child is present, the\ncomponent will take any text content contained in it and highlight it. One can also\npass the code to be highlighted in the `code` property.",
      "attributes": [
        {
          "name": "code",
          "description": "The code to be highlighted as a string. If not set,\nthis will be populated from either a template child element\nor the element's text content.\nThe value of the property can be changed programmatically from JavaScript.",
          "type": "string"
        },
        {
          "name": "language",
          "description": "The language to be used for syntax highlighting.",
          "type": "string",
          "default": "\"xml\""
        },
        {
          "name": "theme",
          "description": "Highlighting theme to use: 'coy', 'dark', 'funky', 'okaida', 'solarizedlight',\n'tomorrow', 'twilight' or 'default'.",
          "type": "string",
          "default": "\"default\""
        },
        {
          "name": "line-numbers",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "code",
          "attribute": "code",
          "description": "The code to be highlighted as a string. If not set,\nthis will be populated from either a template child element\nor the element's text content.\nThe value of the property can be changed programmatically from JavaScript.",
          "type": "string"
        },
        {
          "name": "language",
          "attribute": "language",
          "description": "The language to be used for syntax highlighting.",
          "type": "string",
          "default": "\"xml\""
        },
        {
          "name": "theme",
          "attribute": "theme",
          "description": "Highlighting theme to use: 'coy', 'dark', 'funky', 'okaida', 'solarizedlight',\n'tomorrow', 'twilight' or 'default'.",
          "type": "string",
          "default": "\"default\""
        },
        {
          "name": "lineNumbers",
          "attribute": "line-numbers",
          "type": "boolean",
          "default": "false"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-code-highlight-white-space",
          "description": "configures line wrapping",
          "default": "\"pre\""
        },
        {
          "name": "--pb-code-highlight-theme",
          "description": "configures the default theme to be used",
          "default": "\"default\""
        }
      ]
    },
    {
      "name": "pb-codepen",
      "path": "./src/pb-codepen.js",
      "description": "Embed a codepen project to show live code. Used for some documentation examples.",
      "attributes": [
        {
          "name": "user",
          "description": "The user which created the codepen",
          "type": "string"
        },
        {
          "name": "hash",
          "description": "Identifies the pen",
          "type": "string"
        },
        {
          "name": "preview",
          "description": "If set, the codepen will not load before being\nclicked by the user",
          "type": "boolean"
        },
        {
          "name": "editable",
          "description": "Make the codepen editable (requires paid account)",
          "type": "boolean"
        },
        {
          "name": "height",
          "description": "Height of the iframe in pixel",
          "type": "number",
          "default": "256"
        },
        {
          "name": "theme",
          "description": "Either 'dark' or 'light'",
          "type": "string",
          "default": "\"light\""
        }
      ],
      "properties": [
        {
          "name": "user",
          "attribute": "user",
          "description": "The user which created the codepen",
          "type": "string"
        },
        {
          "name": "hash",
          "attribute": "hash",
          "description": "Identifies the pen",
          "type": "string"
        },
        {
          "name": "preview",
          "attribute": "preview",
          "description": "If set, the codepen will not load before being\nclicked by the user",
          "type": "boolean"
        },
        {
          "name": "editable",
          "attribute": "editable",
          "description": "Make the codepen editable (requires paid account)",
          "type": "boolean"
        },
        {
          "name": "height",
          "attribute": "height",
          "description": "Height of the iframe in pixel",
          "type": "number",
          "default": "256"
        },
        {
          "name": "theme",
          "attribute": "theme",
          "description": "Either 'dark' or 'light'",
          "type": "string",
          "default": "\"light\""
        }
      ]
    },
    {
      "name": "pb-collapse",
      "path": "./src/pb-collapse.js",
      "description": "A collapsible block: in collapsed state it only shows a header and expands if clicked.\nThe header should go into slot `collapse-trigger`, the content into `collapse-content`.\nExample:\n\n```html\n<pb-collapse>\n  <div slot=\"collapse-trigger\">\n      Metadata\n  </div>\n  <pb-view slot=\"collapse-content\" src=\"document1\" subscribe=\"transcription\" xpath=\"//teiHeader\"></pb-view>\n</pb-collapse>\n```\n\nBy adding a CSS 'icon-right' to a `pb-collapse` the icon can be placed on the right side\n```\n<pb-collapse class='icon-right'>\n```",
      "attributes": [
        {
          "name": "no-animation",
          "description": "Whether to disable animations.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "opened",
          "description": "Whether currently expanded.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "toggles",
          "description": "By default, an open collapse is closed if another pb-collapse is expanded on the same event channel.\nSet to true to keep multiple pb-collapse open at the same time.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "horizontal",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "noAnimation",
          "attribute": "no-animation",
          "description": "Whether to disable animations.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "opened",
          "attribute": "opened",
          "description": "Whether currently expanded.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "expandIcon",
          "type": "string",
          "default": "\"icons:expand-more\""
        },
        {
          "name": "collapseIcon",
          "type": "string",
          "default": "\"icons:expand-less\""
        },
        {
          "name": "noIcons",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "toggles",
          "attribute": "toggles",
          "description": "By default, an open collapse is closed if another pb-collapse is expanded on the same event channel.\nSet to true to keep multiple pb-collapse open at the same time.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-collapse-open",
          "description": "Fires opening the collapsed section"
        }
      ],
      "slots": [
        {
          "name": "collapse-trigger",
          "description": "trigger toggling collapsed content on/off"
        },
        {
          "name": "collapse-content",
          "description": "content to be collapsed"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-collapse-icon-padding",
          "description": "padding left or right of the \"caret\" icon left to the collapsible item",
          "default": "\".5rem\""
        },
        {
          "name": "--pb-collapse-icon-size",
          "description": "size of the \"caret\" icon left to the collapsible item",
          "default": "\".75rem\""
        },
        {
          "name": "--pb-collapse-icon-image",
          "description": "image of the \"caret\" icon left to the collapsible item"
        }
      ]
    },
    {
      "name": "pb-combo-box",
      "path": "./src/pb-combo-box.js",
      "description": "Provides a combo box, i.e. a combination of an input with a dropdown.\nItems to select from may be obtained from a remote data source.\n\nThe form control to be used (either a select or input) should be passed\nin the content of the element. If no control is provided, a simple `<input>`\nwill be created.",
      "attributes": [
        {
          "name": "source",
          "description": "A remote data source to use. The component will pass the text entered by the user\nin parameter `query`. It expects a JSON array of objects with each object describing\none item:\n\n```json\n{\n \"text\": \"Text to show as label\",\n \"value\": \"value-to-use\"\n}\n```",
          "type": "string"
        },
        {
          "name": "close-after-select",
          "description": "Automatically close the dropdown once the user made a selection",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "preload",
          "description": "Preload all items from the remote data source at startup\nMust be of type string because tom-select supports setting\nthat property to \"focus\" (load data on focus)",
          "type": "string",
          "default": "false"
        },
        {
          "name": "on-blur",
          "description": "Name of the event to be emitted when the user leaves the form control",
          "type": "string",
          "default": "\"pb-combo-box-blur\""
        },
        {
          "name": "on-change",
          "description": "Name of the event to be emitted when the value of the form control has changed",
          "type": "string",
          "default": "\"pb-combo-box-change\""
        },
        {
          "name": "placeholder",
          "description": "The placeholder text to display in the control. May contain text or an i18n key to be\ntranslated automatically.",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "value",
          "type": "string | string[] | null"
        },
        {
          "name": "renderItem",
          "description": "Set a javascript function to be called whenever an item\nneeds to be rendered. The function will be passed the data\nobject of the current item as argument.",
          "type": "Function"
        },
        {
          "name": "theme",
          "type": "string",
          "default": "\"default\""
        },
        {
          "name": "source",
          "attribute": "source",
          "description": "A remote data source to use. The component will pass the text entered by the user\nin parameter `query`. It expects a JSON array of objects with each object describing\none item:\n\n```json\n{\n \"text\": \"Text to show as label\",\n \"value\": \"value-to-use\"\n}\n```",
          "type": "string"
        },
        {
          "name": "closeAfterSelect",
          "attribute": "close-after-select",
          "description": "Automatically close the dropdown once the user made a selection",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "preload",
          "attribute": "preload",
          "description": "Preload all items from the remote data source at startup\nMust be of type string because tom-select supports setting\nthat property to \"focus\" (load data on focus)",
          "type": "string",
          "default": "false"
        },
        {
          "name": "renderFunction",
          "type": "object",
          "default": "\"renderDefault\""
        },
        {
          "name": "onBlur",
          "attribute": "on-blur",
          "description": "Name of the event to be emitted when the user leaves the form control",
          "type": "string",
          "default": "\"pb-combo-box-blur\""
        },
        {
          "name": "onChange",
          "attribute": "on-change",
          "description": "Name of the event to be emitted when the value of the form control has changed",
          "type": "string",
          "default": "\"pb-combo-box-change\""
        },
        {
          "name": "placeholder",
          "attribute": "placeholder",
          "description": "The placeholder text to display in the control. May contain text or an i18n key to be\ntranslated automatically.",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ]
    },
    {
      "name": "pb-custom-form",
      "path": "./src/pb-custom-form.js",
      "description": "A custom form element which loads the actual form from a server-side script using AJAX.\nEmits `pb-search-resubmit` and `pb-submit` events, signalling the receiver that it should\nrefresh.\n\nThe component is currently used to implement the additional search facets on the start and\nsearch result page. It can also be combined with `pb-split-list` to contain an additional form\nwith options.",
      "attributes": [
        {
          "name": "auto-submit",
          "description": "Register event handlers on all descendant elements matching the given CSS selector and submit the form\nautomatically if any of those changes. For button-like controls,\na submit is triggered on click, for text input on keyUp, and for\nall other form components on change.",
          "type": "string"
        },
        {
          "name": "url",
          "description": "The URL for the AJAX request. If a relative URL is passed, it will be resolved\nagainst the current API endpoint.",
          "type": "string"
        },
        {
          "name": "expand",
          "description": "If set to true, the `url` property will be interpreted as a template string\ncontaining placeholders for parameters in `{parameter-name}`. The placeholders\nwill be replaced by the actual parameters when building the final URL. Each parameter\nused in the URL template will be removed from the request parameter list.",
          "type": "boolean"
        },
        {
          "name": "src",
          "description": "ID of the pb-document this element is connected to. The document path to\nload will be taken from the pb-document.",
          "type": "string"
        },
        {
          "name": "container",
          "description": "The container element into which the results returned by\nthe AJAX request will be loaded.",
          "type": "string"
        },
        {
          "name": "fix-links",
          "description": "If set, relative links (img, a) will be made absolute.",
          "type": "boolean"
        },
        {
          "name": "start",
          "description": "Start offset to use for showing paginated content.",
          "type": "number"
        },
        {
          "name": "use-language",
          "description": "If set, a parameter \"language\" will be added to the parameter list.\nAlso, a refresh will be triggered if a `pb-i18n-update` event is received,\ne.g. due to the user selecting a different interface language.\n\nAlso requires `requireLanguage` to be set on the surrounding `pb-page`.\nSee there for more information.",
          "type": "boolean"
        },
        {
          "name": "userParams",
          "description": "Additional, user-defined parameters to be sent with the request.",
          "type": "object"
        },
        {
          "name": "plain",
          "description": "Do not add internal parameters like 'start' or 'language' to the URL\nbut leave it untouched.",
          "type": "boolean"
        },
        {
          "name": "auto",
          "description": "Should content be loaded immediately when the component is initialized?",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "loadOnce",
          "description": "Only load content once, not every time a `pb-load` event is received.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "history",
          "description": "Indicates if the parameters of the request made should be saved to the browser\nhistory and URL. Default: false.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "event",
          "description": "The event which will trigger a new request to be sent. Default is 'pb-load'.",
          "type": "string",
          "default": "\"pb-load\""
        },
        {
          "name": "no-credentials",
          "description": "Indicates whether or not cross-site Access-Control requests should be made.\nDefault is false.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "silent",
          "description": "If set, silently ignore errors when sending the request.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "autoSubmit",
          "attribute": "auto-submit",
          "description": "Register event handlers on all descendant elements matching the given CSS selector and submit the form\nautomatically if any of those changes. For button-like controls,\na submit is triggered on click, for text input on keyUp, and for\nall other form components on change.",
          "type": "string"
        },
        {
          "name": "url",
          "attribute": "url",
          "description": "The URL for the AJAX request. If a relative URL is passed, it will be resolved\nagainst the current API endpoint.",
          "type": "string"
        },
        {
          "name": "expand",
          "attribute": "expand",
          "description": "If set to true, the `url` property will be interpreted as a template string\ncontaining placeholders for parameters in `{parameter-name}`. The placeholders\nwill be replaced by the actual parameters when building the final URL. Each parameter\nused in the URL template will be removed from the request parameter list.",
          "type": "boolean"
        },
        {
          "name": "src",
          "attribute": "src",
          "description": "ID of the pb-document this element is connected to. The document path to\nload will be taken from the pb-document.",
          "type": "string"
        },
        {
          "name": "container",
          "attribute": "container",
          "description": "The container element into which the results returned by\nthe AJAX request will be loaded.",
          "type": "string"
        },
        {
          "name": "fixLinks",
          "attribute": "fix-links",
          "description": "If set, relative links (img, a) will be made absolute.",
          "type": "boolean"
        },
        {
          "name": "start",
          "attribute": "start",
          "description": "Start offset to use for showing paginated content.",
          "type": "number"
        },
        {
          "name": "useLanguage",
          "attribute": "use-language",
          "description": "If set, a parameter \"language\" will be added to the parameter list.\nAlso, a refresh will be triggered if a `pb-i18n-update` event is received,\ne.g. due to the user selecting a different interface language.\n\nAlso requires `requireLanguage` to be set on the surrounding `pb-page`.\nSee there for more information.",
          "type": "boolean"
        },
        {
          "name": "userParams",
          "attribute": "userParams",
          "description": "Additional, user-defined parameters to be sent with the request.",
          "type": "object"
        },
        {
          "name": "plain",
          "attribute": "plain",
          "description": "Do not add internal parameters like 'start' or 'language' to the URL\nbut leave it untouched.",
          "type": "boolean"
        },
        {
          "name": "auto",
          "attribute": "auto",
          "description": "Should content be loaded immediately when the component is initialized?",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "loadOnce",
          "attribute": "loadOnce",
          "description": "Only load content once, not every time a `pb-load` event is received.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "history",
          "attribute": "history",
          "description": "Indicates if the parameters of the request made should be saved to the browser\nhistory and URL. Default: false.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "event",
          "attribute": "event",
          "description": "The event which will trigger a new request to be sent. Default is 'pb-load'.",
          "type": "string",
          "default": "\"pb-load\""
        },
        {
          "name": "loaded",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "language"
        },
        {
          "name": "noCredentials",
          "attribute": "no-credentials",
          "description": "Indicates whether or not cross-site Access-Control requests should be made.\nDefault is false.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "silent",
          "attribute": "silent",
          "description": "If set, silently ignore errors when sending the request.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-custom-form-loaded",
          "description": "Fired before the element updates its content"
        },
        {
          "name": "pb-search-resubmit",
          "description": "Fired when the form is submitted"
        },
        {
          "name": "pb-submit",
          "description": "Fired when the form is submitted"
        },
        {
          "name": "pb-start-update",
          "description": "Fired before the element updates its content"
        },
        {
          "name": "pb-end-update",
          "description": "Fired after the element has finished updating its content"
        },
        {
          "name": "pb-results-received",
          "description": "Fired when the component received content from the server"
        },
        {
          "name": "pb-toggle",
          "description": "When received, changes the state of the feature"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "default unnamed slot for content"
        }
      ]
    },
    {
      "name": "pb-dialog",
      "path": "./src/pb-dialog.js",
      "description": "A simple dialog component using the HTML5 <dialog> element.\n\nAny button with the attribute `rel=\"prev\"` will close the dialog when clicked.",
      "attributes": [
        {
          "name": "open",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "modal",
          "type": "boolean",
          "default": "true"
        },
        {
          "name": "title",
          "type": "string"
        },
        {
          "name": "message",
          "type": "string"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "open",
          "attribute": "open",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "modal",
          "attribute": "modal",
          "type": "boolean",
          "default": "true"
        },
        {
          "name": "title",
          "attribute": "title",
          "type": "string"
        },
        {
          "name": "message",
          "attribute": "message",
          "type": "string"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-dialog-opened",
          "description": "Fired when the dialog is opened"
        },
        {
          "name": "pb-dialog-closed",
          "description": "Fired when the dialog is closed"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "Content of the dialog"
        },
        {
          "name": "title",
          "description": "Title of the dialog"
        }
      ]
    },
    {
      "name": "pb-document",
      "path": "./src/pb-document.js",
      "description": "Represents a Publisher document. It has no visual presentation but holds meta-data\nabout the document to be used by other components like `pb-view`. Every `pb-view`\nreferences a `pb-document`.\n`pb-document` requires an id attribute to allow other components to access it.",
      "attributes": [
        {
          "name": "odd",
          "description": "The odd file which should be used to render this document by default. Might be\noverwritten in a `pb-view`. The odd should be specified by its name without path\nor the `.odd` suffix.",
          "type": "string"
        },
        {
          "name": "view",
          "description": "The default view to be used for displaying this document. Can be either `page`, `div` or `simple`.\nMight be overwritten in a `pb-view`.\n\nValue | Displayed content\n------|------------------\n`page` | content is displayed page by page as determined by tei:pb\n`div` | content is displayed by divisions\n`single` | do not paginate but display entire content at once",
          "type": "string"
        },
        {
          "name": "source-view",
          "type": "string"
        },
        {
          "name": "path",
          "description": "The path to the document to be loaded. Should be relative to `root`.",
          "type": "string"
        },
        {
          "name": "root-path",
          "description": "The root collection which will be used to resolve relative paths\nspecified in `path`.",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "disable-history",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "odd",
          "attribute": "odd",
          "description": "The odd file which should be used to render this document by default. Might be\noverwritten in a `pb-view`. The odd should be specified by its name without path\nor the `.odd` suffix.",
          "type": "string"
        },
        {
          "name": "view",
          "attribute": "view",
          "description": "The default view to be used for displaying this document. Can be either `page`, `div` or `simple`.\nMight be overwritten in a `pb-view`.\n\nValue | Displayed content\n------|------------------\n`page` | content is displayed page by page as determined by tei:pb\n`div` | content is displayed by divisions\n`single` | do not paginate but display entire content at once",
          "type": "string"
        },
        {
          "name": "sourceView",
          "attribute": "source-view",
          "type": "string"
        },
        {
          "name": "path",
          "attribute": "path",
          "description": "The path to the document to be loaded. Should be relative to `root`.",
          "type": "string"
        },
        {
          "name": "rootPath",
          "attribute": "root-path",
          "description": "The root collection which will be used to resolve relative paths\nspecified in `path`.",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "disableHistory",
          "attribute": "disable-history",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-document",
          "description": "Fires update event"
        }
      ]
    },
    {
      "name": "pb-download",
      "path": "./src/pb-download.js",
      "description": "Generate a link to download a resource. Optionally shows a dialog during the download.\nThis component is mainly used for creating the links for downloading PDFs, epubs etc.",
      "attributes": [
        {
          "name": "src",
          "description": "optional id reference to a pb-document. If `url` is not specified,\na correct download URL is constructed using the given document path and parameters.\nOtherwise `url` will be used as main URL.",
          "type": "string"
        },
        {
          "name": "url",
          "description": "the base URL to construct the link from. If specified, only the ODD and optional parameters\nwill be appended to the URL.",
          "type": "string"
        },
        {
          "name": "odd",
          "description": "extra odd parameter to be added. This will correspond to the ODD used by the document, if given.",
          "type": "string"
        },
        {
          "name": "dialog",
          "description": "id of dialog component to show when downloading. A paper-dialog component with this id must\nexist.",
          "type": "string"
        },
        {
          "name": "title",
          "description": "title to show in the dialog while download is in progress",
          "type": "string"
        },
        {
          "name": "params",
          "description": "extra params to be added",
          "type": "string"
        },
        {
          "name": "source",
          "description": "add a special parameter 'source=yes' if true. For PDF this will result\nin generated source code to be displayed",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "type",
          "description": "optional suffix to append to the constructed URL. Use for getting a PDF, epub or similar.",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "src",
          "attribute": "src",
          "description": "optional id reference to a pb-document. If `url` is not specified,\na correct download URL is constructed using the given document path and parameters.\nOtherwise `url` will be used as main URL.",
          "type": "string"
        },
        {
          "name": "url",
          "attribute": "url",
          "description": "the base URL to construct the link from. If specified, only the ODD and optional parameters\nwill be appended to the URL.",
          "type": "string"
        },
        {
          "name": "odd",
          "attribute": "odd",
          "description": "extra odd parameter to be added. This will correspond to the ODD used by the document, if given.",
          "type": "string"
        },
        {
          "name": "dialog",
          "attribute": "dialog",
          "description": "id of dialog component to show when downloading. A paper-dialog component with this id must\nexist.",
          "type": "string"
        },
        {
          "name": "title",
          "attribute": "title",
          "description": "title to show in the dialog while download is in progress",
          "type": "string"
        },
        {
          "name": "params",
          "attribute": "params",
          "description": "extra params to be added",
          "type": "string"
        },
        {
          "name": "source",
          "attribute": "source",
          "description": "add a special parameter 'source=yes' if true. For PDF this will result\nin generated source code to be displayed",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "type",
          "attribute": "type",
          "description": "optional suffix to append to the constructed URL. Use for getting a PDF, epub or similar.",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-document",
          "description": "When received, updates the odd to the one passed from the event"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "unnamed default slot for link text"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-download-color",
          "description": "Color of the download title label"
        },
        {
          "name": "--pb-download-text-decoration",
          "description": "Extra effects for the download title label"
        }
      ]
    },
    {
      "name": "pb-drawer",
      "path": "./src/pb-drawer.js",
      "description": "A drawer component used e.g. for table-of-contents.",
      "attributes": [
        {
          "name": "toggle",
          "description": "optional id reference to a component that allows opening/closing the drawer.\nIf `maxWidth` is set and the viewport width is larger, the toggle's display\nstyle will be set to 'none'.",
          "type": "string"
        },
        {
          "name": "max-width",
          "description": "Defines a breakpoint width: if the viewport width is below the width given in\nthis property, the drawer is turned into an overlay, which only reveals if the\ntoggle is activated.",
          "type": "string"
        },
        {
          "name": "opened",
          "description": "Boolean reflecting the opened/closed state of the drawer",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "position",
          "description": "Determines the position at which the drawer will appear in overlay mode.\nShould be either 'left' or 'right'.",
          "type": "string",
          "default": "\"left\""
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "toggle",
          "attribute": "toggle",
          "description": "optional id reference to a component that allows opening/closing the drawer.\nIf `maxWidth` is set and the viewport width is larger, the toggle's display\nstyle will be set to 'none'.",
          "type": "string"
        },
        {
          "name": "maxWidth",
          "attribute": "max-width",
          "description": "Defines a breakpoint width: if the viewport width is below the width given in\nthis property, the drawer is turned into an overlay, which only reveals if the\ntoggle is activated.",
          "type": "string"
        },
        {
          "name": "opened",
          "attribute": "opened",
          "description": "Boolean reflecting the opened/closed state of the drawer",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "position",
          "attribute": "position",
          "description": "Determines the position at which the drawer will appear in overlay mode.\nShould be either 'left' or 'right'.",
          "type": "string",
          "default": "\"left\""
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-load",
          "description": "Fires a load request when opened"
        },
        {
          "name": "pb-refresh",
          "description": "When received, closes the drawer"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "unnamed default slot for the content"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-drawer-width",
          "description": "width of the drawer",
          "default": "\"448px\""
        },
        {
          "name": "--pb-drawer-transition",
          "description": "transition to use for sliding in",
          "default": "\".5s\""
        }
      ],
      "cssParts": [
        {
          "name": "content",
          "description": "the inner div wrapping around the drawer content"
        }
      ]
    },
    {
      "name": "pb-edit-app",
      "path": "./src/pb-edit-app.js",
      "description": "Editor component for the App Generator. Allows to edit all settings for an application.",
      "attributes": [
        {
          "name": "error",
          "type": "string"
        },
        {
          "name": "url",
          "type": "string"
        },
        {
          "name": "templates",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "odds",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "error",
          "attribute": "error",
          "type": "string"
        },
        {
          "name": "url",
          "attribute": "url",
          "type": "string"
        },
        {
          "name": "templates",
          "attribute": "templates",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "odds",
          "attribute": "odds",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-start-update",
          "description": "Fired before the element updates its content"
        },
        {
          "name": "pb-end-update",
          "description": "Fired after the element has finished updating its content"
        }
      ]
    },
    {
      "name": "pb-edit-xml",
      "path": "./src/pb-edit-xml.js",
      "description": "Open eXide to edit a given source document.",
      "attributes": [
        {
          "name": "path",
          "description": "expects a context-absolute path to the document to edit e.g. '/db/apps/tei-publisher/mytext.xml'",
          "type": "string"
        },
        {
          "name": "src",
          "description": "optional id reference to a pb-document",
          "type": "string"
        },
        {
          "name": "title",
          "description": "HTML title to be used",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "path",
          "attribute": "path",
          "description": "expects a context-absolute path to the document to edit e.g. '/db/apps/tei-publisher/mytext.xml'",
          "type": "string"
        },
        {
          "name": "src",
          "attribute": "src",
          "description": "optional id reference to a pb-document",
          "type": "string"
        },
        {
          "name": "title",
          "attribute": "title",
          "description": "HTML title to be used",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "unnamed default slot for the link text"
        }
      ]
    },
    {
      "name": "pb-facs-link",
      "path": "./src/pb-facs-link.js",
      "attributes": [
        {
          "name": "facs",
          "description": "URL pointing to the facsimile image to load",
          "type": "string"
        },
        {
          "name": "coordinates",
          "description": "An array of coordinates describing a rectangle to highlight",
          "type": "array"
        },
        {
          "name": "emit-on-load",
          "description": "If set, trigger a `pb-show-annotation` event as soon as the element is initialized.\nUse this to make `pb-facsimile` or `pb-svg` switch to the given image/coordinates upon\nload.",
          "type": "boolean"
        },
        {
          "name": "trigger",
          "description": "Type of event which should trigger the facsimile to display.\nEither 'click' or 'mouseover' (default).",
          "type": "string",
          "default": "\"mouseover\""
        },
        {
          "name": "label",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "order",
          "type": "number",
          "default": "\"POSITIVE_INFINITY\""
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string",
          "default": "\"pb-facsimile,pb-image-strip,pb-tify\""
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "facs",
          "attribute": "facs",
          "description": "URL pointing to the facsimile image to load",
          "type": "string"
        },
        {
          "name": "coordinates",
          "attribute": "coordinates",
          "description": "An array of coordinates describing a rectangle to highlight",
          "type": "array"
        },
        {
          "name": "emitOnLoad",
          "attribute": "emit-on-load",
          "description": "If set, trigger a `pb-show-annotation` event as soon as the element is initialized.\nUse this to make `pb-facsimile` or `pb-svg` switch to the given image/coordinates upon\nload.",
          "type": "boolean"
        },
        {
          "name": "trigger",
          "attribute": "trigger",
          "description": "Type of event which should trigger the facsimile to display.\nEither 'click' or 'mouseover' (default).",
          "type": "string",
          "default": "\"mouseover\""
        },
        {
          "name": "label",
          "attribute": "label",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "order",
          "attribute": "order",
          "type": "number",
          "default": "\"POSITIVE_INFINITY\""
        },
        {
          "name": "default",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string",
          "default": "\"pb-facsimile,pb-image-strip,pb-tify\""
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-show-annotation",
          "description": "Fires when mouse hovers over a pb-facs-link, passing image reference and coordinates that pb-facsimile reacts to"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "unnamed default slot for link text"
        }
      ]
    },
    {
      "name": "pb-facsimile",
      "path": "./src/pb-facsimile.js",
      "description": "View zoomable images using a IIIF server.",
      "attributes": [
        {
          "name": "show-sequence-control",
          "description": "If true then the 'previous\" and 'next' button is displayed switch between images.",
          "type": "boolean"
        },
        {
          "name": "facsimiles",
          "description": "Array of facsimiles",
          "type": "array"
        },
        {
          "name": "base-uri",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "cors",
          "description": "CORS (Cross-Origin Resource Sharing) policy - wraps the OSD Viewer option -\nonly sensible values are 'anonymous' (default) or 'use-credentials'.",
          "type": "string",
          "default": "\"anonymous\""
        },
        {
          "name": "type",
          "description": "Type of the source of the image to display: either 'iiif' or 'image'\n(for simple image links not served via IIIF).",
          "type": "string",
          "default": "\"iiif\""
        },
        {
          "name": "visibility-ratio",
          "description": "The percentage ( as a number from 0 to 1 ) of the source image\nwhich must be kept within the viewport.\nIf the image is dragged beyond that limit, it will 'bounce'\nback until the minimum visibility ratio is achieved.\nSetting this to 0 and wrapHorizontal ( or wrapVertical )\nto true will provide the effect of an infinitely scrolling viewport.",
          "type": "number",
          "default": "1"
        },
        {
          "name": "default-zoom-level",
          "description": "Default zoom between: set to 0 to adjust to viewer size.",
          "type": "number",
          "default": "0"
        },
        {
          "name": "show-home-control",
          "description": "If true then the 'Go home' button is displayed to go back to the original zoom and pan.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "show-navigator",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "show-navigation-control",
          "description": "Set to false to prevent the appearance of the default navigation controls.\nNote that if set to false, the customs buttons set by the options\nzoomInButton, zoomOutButton etc, are rendered inactive.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "show-full-page-control",
          "description": "If true then the 'Toggle full page' button is displayed to switch between full page and normal mode.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "show-rotation-control",
          "description": "If true then the rotate left/right controls will be displayed\nas part of the standard controls. This is also subject to the\nbrowser support for rotate (e.g. viewer.drawer.canRotate()).",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "show-download-control",
          "description": "if true shows a 'download' button",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "contrain-during-pan",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "reference-strip",
          "description": "If set, thumbnails of all images are shown in a reference strip at the\nbottom of the viewer.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "reference-strip-size-ratio",
          "description": "Size ratio for the reference strip thumbnails. 0.2 by default.",
          "type": "number",
          "default": "0.2"
        },
        {
          "name": "prefix-url",
          "description": "Path pointing to the location of openseadragon user interface images.",
          "type": "string",
          "default": "\"../images/openseadragon/\""
        },
        {
          "name": "loaded",
          "description": "Will be true if images were loaded for display, false if there are no images\nto show.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "showSequenceMode",
          "attribute": "show-sequence-control",
          "description": "If true then the 'previous\" and 'next' button is displayed switch between images.",
          "type": "boolean"
        },
        {
          "name": "facsimiles",
          "attribute": "facsimiles",
          "description": "Array of facsimiles",
          "type": "array"
        },
        {
          "name": "baseUri",
          "attribute": "base-uri",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "crossOriginPolicy",
          "attribute": "cors",
          "description": "CORS (Cross-Origin Resource Sharing) policy - wraps the OSD Viewer option -\nonly sensible values are 'anonymous' (default) or 'use-credentials'.",
          "type": "string",
          "default": "\"anonymous\""
        },
        {
          "name": "type",
          "attribute": "type",
          "description": "Type of the source of the image to display: either 'iiif' or 'image'\n(for simple image links not served via IIIF).",
          "type": "string",
          "default": "\"iiif\""
        },
        {
          "name": "visibilityRatio",
          "attribute": "visibility-ratio",
          "description": "The percentage ( as a number from 0 to 1 ) of the source image\nwhich must be kept within the viewport.\nIf the image is dragged beyond that limit, it will 'bounce'\nback until the minimum visibility ratio is achieved.\nSetting this to 0 and wrapHorizontal ( or wrapVertical )\nto true will provide the effect of an infinitely scrolling viewport.",
          "type": "number",
          "default": "1"
        },
        {
          "name": "defaultZoomLevel",
          "attribute": "default-zoom-level",
          "description": "Default zoom between: set to 0 to adjust to viewer size.",
          "type": "number",
          "default": "0"
        },
        {
          "name": "sequenceMode",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "showHomeControl",
          "attribute": "show-home-control",
          "description": "If true then the 'Go home' button is displayed to go back to the original zoom and pan.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "showNavigator",
          "attribute": "show-navigator",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "showNavigationControl",
          "attribute": "show-navigation-control",
          "description": "Set to false to prevent the appearance of the default navigation controls.\nNote that if set to false, the customs buttons set by the options\nzoomInButton, zoomOutButton etc, are rendered inactive.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "showFullPageControl",
          "attribute": "show-full-page-control",
          "description": "If true then the 'Toggle full page' button is displayed to switch between full page and normal mode.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "showRotationControl",
          "attribute": "show-rotation-control",
          "description": "If true then the rotate left/right controls will be displayed\nas part of the standard controls. This is also subject to the\nbrowser support for rotate (e.g. viewer.drawer.canRotate()).",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "showDownloadButton",
          "attribute": "show-download-control",
          "description": "if true shows a 'download' button",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "constrainDuringPan",
          "attribute": "contrain-during-pan",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "referenceStrip",
          "attribute": "reference-strip",
          "description": "If set, thumbnails of all images are shown in a reference strip at the\nbottom of the viewer.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "referenceStripSizeRatio",
          "attribute": "reference-strip-size-ratio",
          "description": "Size ratio for the reference strip thumbnails. 0.2 by default.",
          "type": "number",
          "default": "0.2"
        },
        {
          "name": "prefixUrl",
          "attribute": "prefix-url",
          "description": "Path pointing to the location of openseadragon user interface images.",
          "type": "string",
          "default": "\"../images/openseadragon/\""
        },
        {
          "name": "loaded",
          "attribute": "loaded",
          "description": "Will be true if images were loaded for display, false if there are no images\nto show.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-start-update",
          "description": "When received, resets the facsimile viewer"
        },
        {
          "name": "pb-load-facsimile",
          "description": "When received, adds an image to the current image sequence. Emitted by\n`pb-facs-link`. The event detail should contain an object with the properties `url`, `order` and `element`,\nwhere `url` is the relative or absolute URL to the image, `order` is an integer specifying the position at which\nthe image should be inserted in the list, and `element` points to the `pb-facs-link` element triggering the event."
        },
        {
          "name": "pb-show-annotation",
          "description": "When received, sets up the viewer to select a particular image and highlight coordinates"
        },
        {
          "name": "pb-facsimile-status",
          "description": "Indicates the status of loading an image into the viewer. The status is indicated\nby the `status` property in event.detail as follows: `loading` - image was requested; `loaded` - image is displayed;\n`fail` - image could not be loaded."
        }
      ],
      "slots": [
        {
          "name": "before",
          "description": "use for content which should be shown above the facsimile viewer"
        },
        {
          "name": "after",
          "description": "use for content which should be shown below the facsimile viewer"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-facsimile-height=auto",
          "description": "Max. height of the image viewer"
        },
        {
          "name": "--pb-facsimile-border",
          "description": "Style for the annotation highlight border"
        }
      ],
      "cssParts": [
        {
          "name": "image",
          "description": "exposes the inner div hosting the image viewer"
        }
      ]
    },
    {
      "name": "pb-formula",
      "path": "./src/pb-formula.js",
      "description": "Represents a mathematical formula, either in TeX notation or MathML. The element itself\ndoes not do any typesetting. Instead you must call the global `typesetMath(rootNode)` function and\npass it the root context which should be searched for `pb-notation` elements. The function will\nthen do the actual typesetting. The reason for this is that formulas need to be typeset synchronously, i.e. one\nafter the other.\n\nThe component detects automatically if the formula to typeset is in TeX notation or MathML.",
      "attributes": [
        {
          "name": "menu",
          "description": "Option: if set, enable the MathJax context menu. This affects **all** formulas\nin the context (the page or pb-view), not just the current component!",
          "type": "boolean"
        },
        {
          "name": "loaded",
          "description": "Will be set once the element has been typeset.",
          "type": "boolean"
        },
        {
          "name": "source",
          "description": "Will contain the source notation once the element has been typeset.",
          "type": "string"
        },
        {
          "name": "display",
          "description": "TeX notation only: render the formula in display mode, i.e. as block level element.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "menu",
          "attribute": "menu",
          "description": "Option: if set, enable the MathJax context menu. This affects **all** formulas\nin the context (the page or pb-view), not just the current component!",
          "type": "boolean"
        },
        {
          "name": "loaded",
          "attribute": "loaded",
          "description": "Will be set once the element has been typeset.",
          "type": "boolean"
        },
        {
          "name": "source",
          "attribute": "source",
          "description": "Will contain the source notation once the element has been typeset.",
          "type": "string"
        },
        {
          "name": "display",
          "attribute": "display",
          "description": "TeX notation only: render the formula in display mode, i.e. as block level element.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "should contain math in TeX notation or MathML"
        }
      ]
    },
    {
      "name": "pb-geolocation",
      "path": "./src/pb-geolocation.js",
      "description": "Represents a geo location. Extends `pb-highlight`, but sends an additional `pb-geolocation` event\non mouseover.\n\nFor `pb-leaflet-map` to show markers for `pb-geolocation` elements, make sure that map subscribes to the channel\ninto which `pb-geolocation`s emit and that map is loaded before the emitting component, e.g. `pb-view`, by specifying\n`wait-for` property.",
      "attributes": [
        {
          "name": "longitude",
          "type": "number"
        },
        {
          "name": "latitude",
          "type": "number"
        },
        {
          "name": "label",
          "description": "Optional label for the place, e.g. to display a marker",
          "type": "string"
        },
        {
          "name": "event",
          "description": "Name of the event which triggers a pb-geolocation event, e.g. 'click'.\nDefault is 'mouseover'.",
          "type": "string",
          "default": "\"mouseover\""
        },
        {
          "name": "auto",
          "description": "If set, add location to a map automatically upon load by\nemitting an event. If not set, locations are only added when\nthe configured event is triggered.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "zoom",
          "description": "Zoom level to use for the map if it centers on the location.",
          "type": "number"
        },
        {
          "name": "key",
          "description": "One or more keys (space or comma separated) to which this element is connected.",
          "type": "string"
        },
        {
          "name": "duration",
          "description": "If set to > 0, specifies a duration (in ms) after which\nthe highlighting will be removed again",
          "type": "number",
          "default": "0"
        },
        {
          "name": "scroll",
          "description": "Scroll this element into view when it receives a highlight event",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "highlight-self",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "trigger",
          "description": "Defines one or more actions (space separated) which should cause\nthe highlight to show. Default is `mouseenter`. If `click` is among the triggers, matching elements scroll into view.",
          "type": "\"click\" | \"mouseenter\"",
          "default": "\"mouseenter\""
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "longitude",
          "attribute": "longitude",
          "type": "number"
        },
        {
          "name": "latitude",
          "attribute": "latitude",
          "type": "number"
        },
        {
          "name": "label",
          "attribute": "label",
          "description": "Optional label for the place, e.g. to display a marker",
          "type": "string"
        },
        {
          "name": "popup",
          "type": "HTMLDivElement | null"
        },
        {
          "name": "event",
          "attribute": "event",
          "description": "Name of the event which triggers a pb-geolocation event, e.g. 'click'.\nDefault is 'mouseover'.",
          "type": "string",
          "default": "\"mouseover\""
        },
        {
          "name": "auto",
          "attribute": "auto",
          "description": "If set, add location to a map automatically upon load by\nemitting an event. If not set, locations are only added when\nthe configured event is triggered.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "zoom",
          "attribute": "zoom",
          "description": "Zoom level to use for the map if it centers on the location.",
          "type": "number"
        },
        {
          "name": "key",
          "attribute": "key",
          "description": "One or more keys (space or comma separated) to which this element is connected.",
          "type": "string"
        },
        {
          "name": "duration",
          "attribute": "duration",
          "description": "If set to > 0, specifies a duration (in ms) after which\nthe highlighting will be removed again",
          "type": "number",
          "default": "0"
        },
        {
          "name": "scroll",
          "attribute": "scroll",
          "description": "Scroll this element into view when it receives a highlight event",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "highlightSelf",
          "attribute": "highlight-self",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "trigger",
          "attribute": "trigger",
          "description": "Defines one or more actions (space separated) which should cause\nthe highlight to show. Default is `mouseenter`. If `click` is among the triggers, matching elements scroll into view.",
          "type": "\"click\" | \"mouseenter\"",
          "default": "\"mouseenter\""
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-geolocation",
          "description": "Sends geocoordinates"
        },
        {
          "name": "pb-highlight-off",
          "description": "Fires removal of all highlights that might have existed before"
        },
        {
          "name": "pb-highlight-on",
          "description": "Fires highlight event with a key passed to which other pb-highlight elements with the same key will react"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "default unnamed slot for content. May also contain an option `<template>` element for content to be shown in a popup"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-highlight-color",
          "description": "Background color to highlight an element"
        }
      ]
    },
    {
      "name": "pb-grid-action",
      "path": "./src/pb-grid-action.js",
      "description": "an action component to execute an 'add panel' or 'remove panel' action on a pb-grid.",
      "attributes": [
        {
          "name": "grid",
          "description": "reference to a pb-grid element",
          "type": "string"
        },
        {
          "name": "action",
          "description": "the type of action. Can be either `add` or `remove`\n\nDefaults to `add`",
          "type": "string",
          "default": "\"add\""
        },
        {
          "name": "initial",
          "type": "number",
          "default": "0"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "grid",
          "attribute": "grid",
          "description": "reference to a pb-grid element",
          "type": "string"
        },
        {
          "name": "action",
          "attribute": "action",
          "description": "the type of action. Can be either `add` or `remove`\n\nDefaults to `add`",
          "type": "string",
          "default": "\"add\""
        },
        {
          "name": "initial",
          "attribute": "initial",
          "type": "number",
          "default": "0"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "default unnamed slot for content"
        }
      ]
    },
    {
      "name": "pb-grid",
      "path": "./src/pb-grid.js",
      "description": "A component to create a column layout based upon CSS grid. It offers methods for dynamically changing\nthe layout by adding or removing panels at runtime.",
      "attributes": [
        {
          "name": "panels",
          "description": "an array of panel items to display when the component is loaded. It should contain a\nnumber for each panel to show, indicating the ordinal position of the template within the `<pb-panel>`\nto initialize. For example, if you have two templates in `<pb-panel>`: \"transcription\" and \"translation\",\nsetting `panels=\"[0, 1]\"` will show two columns, one with the transcription, the other with the translation.\n\nPassing in a browser parameter `panels` with a comma-separated list will set this property as well.",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "direction",
          "type": "string",
          "default": "\"ltr\""
        },
        {
          "name": "animated",
          "description": "CSS Selektor to choose elements to animate. If not specified all 'pb-view' elements will be animated by default.",
          "type": "string",
          "default": "\"pb-view\""
        },
        {
          "name": "animation",
          "description": "wether to animate the view when new page is loaded. Defaults to 'false' meaning that no\nanimation takes place.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "panels",
          "attribute": "panels",
          "description": "an array of panel items to display when the component is loaded. It should contain a\nnumber for each panel to show, indicating the ordinal position of the template within the `<pb-panel>`\nto initialize. For example, if you have two templates in `<pb-panel>`: \"transcription\" and \"translation\",\nsetting `panels=\"[0, 1]\"` will show two columns, one with the transcription, the other with the translation.\n\nPassing in a browser parameter `panels` with a comma-separated list will set this property as well.",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "direction",
          "attribute": "direction",
          "type": "string",
          "default": "\"ltr\""
        },
        {
          "name": "animated",
          "attribute": "animated",
          "description": "CSS Selektor to choose elements to animate. If not specified all 'pb-view' elements will be animated by default.",
          "type": "string",
          "default": "\"pb-view\""
        },
        {
          "name": "animation",
          "attribute": "animation",
          "description": "wether to animate the view when new page is loaded. Defaults to 'false' meaning that no\nanimation takes place.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-refresh",
          "description": "Fired after a new column has been added to allow connected components to refresh."
        },
        {
          "name": "pb-panel",
          "description": "When received, updates the list of panels to show"
        },
        {
          "name": "pb-zoom",
          "description": "When received, zoom in or out by changing font size of the content"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "default unnamed slot for the panel"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-grid-column-widths",
          "description": "Columns width specified according to the grid-template-columns property of the CSS Grid Layout"
        },
        {
          "name": "--pb-grid-column-gap",
          "description": "Width of the gap between columns"
        }
      ]
    },
    {
      "name": "pb-highlight",
      "path": "./src/pb-highlight.js",
      "description": "Link elements to each other: when a trigger action occurs on one element,\nthe others are highlighted by changing their background color. Which elements\nare linked is determined by the `key` property: elements with the same key\nare linked. Multiple keys (space or comma separated) may be specified; in that\ncase the emitted `pb-highlight-on` event passes an array of ids and receivers\nhighlight when any of their keys matches. The trigger action is configured via the `trigger` property and\nsends a `pb-highlight-on` event. Other elements with the same key react to this event.\n\n`pb-highlight` should be output for relevant elements via ODD processing model.",
      "attributes": [
        {
          "name": "key",
          "description": "One or more keys (space or comma separated) to which this element is connected.",
          "type": "string"
        },
        {
          "name": "duration",
          "description": "If set to > 0, specifies a duration (in ms) after which\nthe highlighting will be removed again",
          "type": "number",
          "default": "0"
        },
        {
          "name": "scroll",
          "description": "Scroll this element into view when it receives a highlight event",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "highlight-self",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "trigger",
          "description": "Defines one or more actions (space separated) which should cause\nthe highlight to show. Default is `mouseenter`. If `click` is among the triggers, matching elements scroll into view.",
          "type": "\"click\" | \"mouseenter\"",
          "default": "\"mouseenter\""
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "key",
          "attribute": "key",
          "description": "One or more keys (space or comma separated) to which this element is connected.",
          "type": "string"
        },
        {
          "name": "duration",
          "attribute": "duration",
          "description": "If set to > 0, specifies a duration (in ms) after which\nthe highlighting will be removed again",
          "type": "number",
          "default": "0"
        },
        {
          "name": "scroll",
          "attribute": "scroll",
          "description": "Scroll this element into view when it receives a highlight event",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "highlightSelf",
          "attribute": "highlight-self",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "trigger",
          "attribute": "trigger",
          "description": "Defines one or more actions (space separated) which should cause\nthe highlight to show. Default is `mouseenter`. If `click` is among the triggers, matching elements scroll into view.",
          "type": "\"click\" | \"mouseenter\"",
          "default": "\"mouseenter\""
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-highlight-off",
          "description": "Fires removal of all highlights that might have existed before"
        },
        {
          "name": "pb-highlight-on",
          "description": "Fires highlight event with a key passed to which other pb-highlight elements with the same key will react"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "default unnamed slot for highlight content"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-highlight-color",
          "description": "Background color to highlight an element"
        }
      ]
    },
    {
      "name": "pb-i18n",
      "path": "./src/pb-i18n.js",
      "description": "Insert translated text somewhere on an HTML page. If no translation is found,\ndisplay the contained content.",
      "attributes": [
        {
          "name": "options",
          "description": "Optional interpolation parameters to be passed to the\ntranslation function",
          "type": "object"
        },
        {
          "name": "key",
          "description": "The i18n key to use for looking up the translation.",
          "type": "string",
          "default": "\"missing-key\""
        }
      ],
      "properties": [
        {
          "name": "options",
          "attribute": "options",
          "description": "Optional interpolation parameters to be passed to the\ntranslation function",
          "type": "object"
        },
        {
          "name": "key",
          "attribute": "key",
          "description": "The i18n key to use for looking up the translation.",
          "type": "string",
          "default": "\"missing-key\""
        }
      ]
    },
    {
      "name": "pb-image-strip",
      "path": "./src/pb-image-strip.js",
      "attributes": [
        {
          "name": "base-uri",
          "type": "string"
        },
        {
          "name": "items",
          "description": "Array of image",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "image-height",
          "type": "number",
          "default": "80"
        },
        {
          "name": "image-width",
          "type": "number",
          "default": "64"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "baseUri",
          "attribute": "base-uri",
          "type": "string"
        },
        {
          "name": "items",
          "attribute": "items",
          "description": "Array of image",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "urls",
          "type": "Set<any>"
        },
        {
          "name": "imageHeight",
          "attribute": "image-height",
          "type": "number",
          "default": "80"
        },
        {
          "name": "imageWidth",
          "attribute": "image-width",
          "type": "number",
          "default": "64"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ]
    },
    {
      "name": "pb-lang",
      "path": "./src/pb-lang.js",
      "description": "A dropdown for switching the interface language.",
      "attributes": [
        {
          "name": "selected",
          "type": "string"
        },
        {
          "name": "label",
          "description": "The label for a language in the dropdown",
          "type": "string",
          "default": "\"language\""
        },
        {
          "name": "display",
          "description": "How should the selected value be displayed?\n\n- `text` - Display the text content of the selected option\n- other - Attribute name to use",
          "type": "string",
          "default": "\"value\""
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "selected",
          "attribute": "selected",
          "type": "string"
        },
        {
          "name": "label",
          "attribute": "label",
          "description": "The label for a language in the dropdown",
          "type": "string",
          "default": "\"language\""
        },
        {
          "name": "display",
          "attribute": "display",
          "description": "How should the selected value be displayed?\n\n- `text` - Display the text content of the selected option\n- other - Attribute name to use",
          "type": "string",
          "default": "\"value\""
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-i18n-language",
          "description": "Sends selected language"
        },
        {
          "name": "pb-i18n-update",
          "description": "When received, sets the selected language to the one received from the event"
        }
      ],
      "slots": [
        {
          "name": "select",
          "description": "Optional select element to use for language selection. If not provided, a default one will be created."
        },
        {
          "name": "",
          "description": "unnamed default slot for dropdown menu options"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-lang-input-color",
          "description": "Color of the text in the language field"
        }
      ]
    },
    {
      "name": "pb-leaflet-map",
      "path": "./src/pb-leaflet-map.js",
      "description": "A wrapper component for [leaflet](https://leafletjs.com/) displaying a map.\n\nThe map layers displayed can be configured via nested `pb-map-layer` (see docs) elements,\nicons via `pb-map-icon`.",
      "attributes": [
        {
          "name": "latitude",
          "type": "number",
          "default": "51.505"
        },
        {
          "name": "longitude",
          "type": "number",
          "default": "-0.09"
        },
        {
          "name": "zoom",
          "type": "number",
          "default": "15"
        },
        {
          "name": "crs",
          "type": "string",
          "default": "\"EPSG3857\""
        },
        {
          "name": "access-token",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "images-path",
          "type": "string",
          "default": "\"../images/leaflet/\""
        },
        {
          "name": "css-path",
          "type": "string",
          "default": "\"../css/leaflet\""
        },
        {
          "name": "toggle",
          "description": "If enabled, the map will remain invisible until an event is received from `pb-geolocation`.\nIn this case the map also offers a close button to hide it again.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "no-scroll",
          "description": "If enabled, the map will not automatically scroll to the coordinates received via `pb-geolocation`",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "cluster",
          "description": "If set, combine markers into clusters if they are located too close together\nto display as single markers",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "fit-markers",
          "description": "If set, the map will automatically zoom so it can fit all the markers",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "disable-clustering-at",
          "description": "Limits up to which zoom level markers are arranged into clusters.\nUsing a higher zoom level here will result in more markers to be shown.\n\nRequires `cluster` option to be enabled.",
          "type": "number"
        },
        {
          "name": "geo-coding",
          "description": "Enables geocoding: an additional control will allow users to search for a place.\nReverse geocoding is also possible: clicking on the map while pressing ctrl or cmd\nwill request information about the current location.\n\nIn both cases, a `pb-geocode` event will be emitted containing additional information\nabout the place in the event details (see demo).\n\nFor lookups the free OSM/Nominatim service is used.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "true"
        }
      ],
      "properties": [
        {
          "name": "map",
          "description": "The underlying leafletjs map. Can be used for custom scripts.\n\nWill be null until the component is fully loaded. Listen to `pb-ready` on the component to\nbe sure it has initialized."
        },
        {
          "name": "latitude",
          "attribute": "latitude",
          "type": "number",
          "default": "51.505"
        },
        {
          "name": "longitude",
          "attribute": "longitude",
          "type": "number",
          "default": "-0.09"
        },
        {
          "name": "zoom",
          "attribute": "zoom",
          "type": "number",
          "default": "15"
        },
        {
          "name": "crs",
          "attribute": "crs",
          "type": "string",
          "default": "\"EPSG3857\""
        },
        {
          "name": "accessToken",
          "attribute": "access-token",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "imagesPath",
          "attribute": "images-path",
          "type": "string",
          "default": "\"../images/leaflet/\""
        },
        {
          "name": "cssPath",
          "attribute": "css-path",
          "type": "string",
          "default": "\"../css/leaflet\""
        },
        {
          "name": "toggle",
          "attribute": "toggle",
          "description": "If enabled, the map will remain invisible until an event is received from `pb-geolocation`.\nIn this case the map also offers a close button to hide it again.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "noScroll",
          "attribute": "no-scroll",
          "description": "If enabled, the map will not automatically scroll to the coordinates received via `pb-geolocation`",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "cluster",
          "attribute": "cluster",
          "description": "If set, combine markers into clusters if they are located too close together\nto display as single markers",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "fitMarkers",
          "attribute": "fit-markers",
          "description": "If set, the map will automatically zoom so it can fit all the markers",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "disableClusteringAt",
          "attribute": "disable-clustering-at",
          "description": "Limits up to which zoom level markers are arranged into clusters.\nUsing a higher zoom level here will result in more markers to be shown.\n\nRequires `cluster` option to be enabled.",
          "type": "number"
        },
        {
          "name": "geoCoding",
          "attribute": "geo-coding",
          "description": "Enables geocoding: an additional control will allow users to search for a place.\nReverse geocoding is also possible: clicking on the map while pressing ctrl or cmd\nwill request information about the current location.\n\nIn both cases, a `pb-geocode` event will be emitted containing additional information\nabout the place in the event details (see demo).\n\nFor lookups the free OSM/Nominatim service is used.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "true"
        }
      ],
      "events": [
        {
          "name": "pb-leaflet-marker-click",
          "description": "Fires event to be processed by the map upon click"
        },
        {
          "name": "pb-update-map",
          "description": "When received, redraws the map to fit markers passed in with the event.\nEvent details should include an array of locations, see `pb-geolocation` event below."
        },
        {
          "name": "pb-update",
          "description": "When received, redraws the map to show markers for all pb-geolocation elements found in the content of the pb-view"
        },
        {
          "name": "pb-geolocation",
          "description": "When received, focuses the map on the geocoordinates passed in with the event.\nThe event details should include an object:\n```\n{\ncoordinates: {\n latitude: Number,\n longitude: Number\n},\nlabel: string - the label to show on mouseover,\nzoom: Number - fixed zoom level to zoom to,\nfitBounds: Boolean - if true, recompute current zoom level to show all markers\n}\n```"
        },
        {
          "name": "pb-geocode",
          "description": "emitted if geocoding is enabled and the user searches or selects a location from the map"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "may contain a series of `pb-map-layer` configurations"
        }
      ]
    },
    {
      "name": "pb-link",
      "path": "./src/pb-link.js",
      "description": "Create an internal link: clicking it will emit a `pb-refresh`event,\ncausing connected views to update and load the corresponding document fragment defined by the\nproperties.",
      "attributes": [
        {
          "name": "xml-id",
          "description": "Browse to an xml:id within the document",
          "type": "string"
        },
        {
          "name": "node-id",
          "description": "Browse to an eXist-internal node id, e.g. 3.5.6.1",
          "type": "string"
        },
        {
          "name": "hash",
          "type": "string"
        },
        {
          "name": "xpath",
          "type": "string"
        },
        {
          "name": "path",
          "description": "Browse to a different document",
          "type": "string"
        },
        {
          "name": "odd",
          "description": "Switch the ODD to use for display",
          "type": "string"
        },
        {
          "name": "view",
          "description": "Control the view mode, i.e. 'page', 'div', 'single'",
          "type": "string"
        },
        {
          "name": "history",
          "description": "Modify browser history: if set, clicking this\nelement will generate a new history entry in the browser's history.",
          "type": "boolean",
          "default": "true"
        },
        {
          "name": "params",
          "description": "Additional parameters to be passed in the event details.\nShould be specified as a JSON object.",
          "type": "object"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "xmlId",
          "attribute": "xml-id",
          "description": "Browse to an xml:id within the document",
          "type": "string"
        },
        {
          "name": "nodeId",
          "attribute": "node-id",
          "description": "Browse to an eXist-internal node id, e.g. 3.5.6.1",
          "type": "string"
        },
        {
          "name": "hash",
          "attribute": "hash",
          "type": "string"
        },
        {
          "name": "xpath",
          "attribute": "xpath",
          "type": "string"
        },
        {
          "name": "path",
          "attribute": "path",
          "description": "Browse to a different document",
          "type": "string"
        },
        {
          "name": "odd",
          "attribute": "odd",
          "description": "Switch the ODD to use for display",
          "type": "string"
        },
        {
          "name": "view",
          "attribute": "view",
          "description": "Control the view mode, i.e. 'page', 'div', 'single'",
          "type": "string"
        },
        {
          "name": "history",
          "attribute": "history",
          "description": "Modify browser history: if set, clicking this\nelement will generate a new history entry in the browser's history.",
          "type": "boolean",
          "default": "true"
        },
        {
          "name": "params",
          "attribute": "params",
          "description": "Additional parameters to be passed in the event details.\nShould be specified as a JSON object.",
          "type": "object"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-refresh",
          "description": "Fires when user clicks the link"
        },
        {
          "name": "pb-collapse-open"
        }
      ]
    },
    {
      "name": "pb-load",
      "path": "./src/pb-load.js",
      "description": "Dynamically load data by calling a server-side script, optionally triggered by an event.\nThis is used for e.g. the document list on the start page or the table\nof contents.",
      "attributes": [
        {
          "name": "url",
          "description": "The URL for the AJAX request. If a relative URL is passed, it will be resolved\nagainst the current API endpoint.",
          "type": "string"
        },
        {
          "name": "expand",
          "description": "If set to true, the `url` property will be interpreted as a template string\ncontaining placeholders for parameters in `{parameter-name}`. The placeholders\nwill be replaced by the actual parameters when building the final URL. Each parameter\nused in the URL template will be removed from the request parameter list.",
          "type": "boolean"
        },
        {
          "name": "src",
          "description": "ID of the pb-document this element is connected to. The document path to\nload will be taken from the pb-document.",
          "type": "string"
        },
        {
          "name": "container",
          "description": "The container element into which the results returned by\nthe AJAX request will be loaded.",
          "type": "string"
        },
        {
          "name": "fix-links",
          "description": "If set, relative links (img, a) will be made absolute.",
          "type": "boolean"
        },
        {
          "name": "start",
          "description": "Start offset to use for showing paginated content.",
          "type": "number"
        },
        {
          "name": "use-language",
          "description": "If set, a parameter \"language\" will be added to the parameter list.\nAlso, a refresh will be triggered if a `pb-i18n-update` event is received,\ne.g. due to the user selecting a different interface language.\n\nAlso requires `requireLanguage` to be set on the surrounding `pb-page`.\nSee there for more information.",
          "type": "boolean"
        },
        {
          "name": "userParams",
          "description": "Additional, user-defined parameters to be sent with the request.",
          "type": "object"
        },
        {
          "name": "plain",
          "description": "Do not add internal parameters like 'start' or 'language' to the URL\nbut leave it untouched.",
          "type": "boolean"
        },
        {
          "name": "auto",
          "description": "Should content be loaded immediately when the component is initialized?",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "loadOnce",
          "description": "Only load content once, not every time a `pb-load` event is received.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "history",
          "description": "Indicates if the parameters of the request made should be saved to the browser\nhistory and URL. Default: false.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "event",
          "description": "The event which will trigger a new request to be sent. Default is 'pb-load'.",
          "type": "string",
          "default": "\"pb-load\""
        },
        {
          "name": "no-credentials",
          "description": "Indicates whether or not cross-site Access-Control requests should be made.\nDefault is false.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "silent",
          "description": "If set, silently ignore errors when sending the request.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "url",
          "attribute": "url",
          "description": "The URL for the AJAX request. If a relative URL is passed, it will be resolved\nagainst the current API endpoint.",
          "type": "string"
        },
        {
          "name": "expand",
          "attribute": "expand",
          "description": "If set to true, the `url` property will be interpreted as a template string\ncontaining placeholders for parameters in `{parameter-name}`. The placeholders\nwill be replaced by the actual parameters when building the final URL. Each parameter\nused in the URL template will be removed from the request parameter list.",
          "type": "boolean"
        },
        {
          "name": "src",
          "attribute": "src",
          "description": "ID of the pb-document this element is connected to. The document path to\nload will be taken from the pb-document.",
          "type": "string"
        },
        {
          "name": "container",
          "attribute": "container",
          "description": "The container element into which the results returned by\nthe AJAX request will be loaded.",
          "type": "string"
        },
        {
          "name": "fixLinks",
          "attribute": "fix-links",
          "description": "If set, relative links (img, a) will be made absolute.",
          "type": "boolean"
        },
        {
          "name": "start",
          "attribute": "start",
          "description": "Start offset to use for showing paginated content.",
          "type": "number"
        },
        {
          "name": "useLanguage",
          "attribute": "use-language",
          "description": "If set, a parameter \"language\" will be added to the parameter list.\nAlso, a refresh will be triggered if a `pb-i18n-update` event is received,\ne.g. due to the user selecting a different interface language.\n\nAlso requires `requireLanguage` to be set on the surrounding `pb-page`.\nSee there for more information.",
          "type": "boolean"
        },
        {
          "name": "userParams",
          "attribute": "userParams",
          "description": "Additional, user-defined parameters to be sent with the request.",
          "type": "object"
        },
        {
          "name": "plain",
          "attribute": "plain",
          "description": "Do not add internal parameters like 'start' or 'language' to the URL\nbut leave it untouched.",
          "type": "boolean"
        },
        {
          "name": "auto",
          "attribute": "auto",
          "description": "Should content be loaded immediately when the component is initialized?",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "loadOnce",
          "attribute": "loadOnce",
          "description": "Only load content once, not every time a `pb-load` event is received.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "history",
          "attribute": "history",
          "description": "Indicates if the parameters of the request made should be saved to the browser\nhistory and URL. Default: false.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "event",
          "attribute": "event",
          "description": "The event which will trigger a new request to be sent. Default is 'pb-load'.",
          "type": "string",
          "default": "\"pb-load\""
        },
        {
          "name": "loaded",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "language"
        },
        {
          "name": "noCredentials",
          "attribute": "no-credentials",
          "description": "Indicates whether or not cross-site Access-Control requests should be made.\nDefault is false.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "silent",
          "attribute": "silent",
          "description": "If set, silently ignore errors when sending the request.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-start-update",
          "description": "Fired before the element updates its content"
        },
        {
          "name": "pb-end-update",
          "description": "Fired after the element has finished updating its content"
        },
        {
          "name": "pb-results-received",
          "description": "Fired when the component received content from the server"
        },
        {
          "name": "pb-toggle",
          "description": "When received, changes the state of the feature"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "default unnamed slot for content"
        }
      ]
    },
    {
      "name": "pb-login",
      "path": "./src/pb-login.js",
      "description": "Handles login/logout. Shows a link which opens a login dialog if clicked.\nIf a user is logged in, clicking the link will log him out instead.",
      "attributes": [
        {
          "name": "password",
          "type": "string"
        },
        {
          "name": "group",
          "description": "If set, only users being members of the specified group are\nallowed to log in.\nMultiple groups can be defined separating items by space and/or comma.",
          "type": "string"
        },
        {
          "name": "auto",
          "description": "If set to true, automatically show login dialog if user is not logged in",
          "type": "boolean"
        },
        {
          "name": "logged-in",
          "description": "True if user is currently logged in",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "login-label",
          "description": "Label to show if not logged in",
          "type": "string",
          "default": "\"login.login\""
        },
        {
          "name": "logout-label",
          "description": "Label to show before user name if logged in",
          "type": "string",
          "default": "\"login.as\""
        },
        {
          "name": "user",
          "description": "The currently logged in user.",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "groups",
          "description": "Array of groups the current user is a member of.",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "login-icon",
          "type": "string",
          "default": "\"account-circle\""
        },
        {
          "name": "logout-icon",
          "type": "string",
          "default": "\"supervisor-account\""
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "password",
          "attribute": "password",
          "type": "string"
        },
        {
          "name": "group",
          "attribute": "group",
          "description": "If set, only users being members of the specified group are\nallowed to log in.\nMultiple groups can be defined separating items by space and/or comma.",
          "type": "string"
        },
        {
          "name": "auto",
          "attribute": "auto",
          "description": "If set to true, automatically show login dialog if user is not logged in",
          "type": "boolean"
        },
        {
          "name": "loggedIn",
          "attribute": "logged-in",
          "description": "True if user is currently logged in",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "loginLabel",
          "attribute": "login-label",
          "description": "Label to show if not logged in",
          "type": "string",
          "default": "\"login.login\""
        },
        {
          "name": "logoutLabel",
          "attribute": "logout-label",
          "description": "Label to show before user name if logged in",
          "type": "string",
          "default": "\"login.as\""
        },
        {
          "name": "user",
          "attribute": "user",
          "description": "The currently logged in user.",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "groups",
          "attribute": "groups",
          "description": "Array of groups the current user is a member of.",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "loginIcon",
          "attribute": "login-icon",
          "type": "string",
          "default": "\"account-circle\""
        },
        {
          "name": "logoutIcon",
          "attribute": "logout-icon",
          "type": "string",
          "default": "\"supervisor-account\""
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-login",
          "description": "Sends results of checking user credentials"
        }
      ],
      "slots": [
        {
          "name": "information",
          "description": "Additional information to be presented on the login dialog"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-login-link-color",
          "description": "Color of the link text"
        }
      ],
      "cssParts": [
        {
          "name": "message-invalid",
          "description": "Block displayed if login is invalid"
        },
        {
          "name": "group-invalid",
          "description": "Text displayed if login is invalid concerning group"
        }
      ]
    },
    {
      "name": "pb-manage-odds",
      "path": "./src/pb-manage-odds.js",
      "description": "High-level component implementing the ODD management panel\non the start page.",
      "attributes": [
        {
          "name": "target",
          "type": "string"
        },
        {
          "name": "odds",
          "description": "array of ODD-files to be listed",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "target",
          "attribute": "target",
          "type": "string"
        },
        {
          "name": "odds",
          "attribute": "odds",
          "description": "array of ODD-files to be listed",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-start-update",
          "description": "Fired before the element updates its content"
        },
        {
          "name": "pb-end-update",
          "description": "Fired after the element has finished updating its content"
        },
        {
          "name": "pb-load",
          "description": "Sending the ODD to be used"
        },
        {
          "name": "pb-refresh-odds",
          "description": "When received, refresh the list of ODDs"
        }
      ]
    },
    {
      "name": "pb-map-icon",
      "path": "./src/pb-map-icon.js",
      "description": "Configure a map icon type to be used for markers.\nShould be nested inside `pb-leaflet-map`.",
      "attributes": [
        {
          "name": "icon-size",
          "description": "Size of the icon as comma-separated string, i.e. 'height, width'.",
          "type": "array"
        },
        {
          "name": "icon-anchor",
          "description": "Anchor position of the icon as comma-separated string, i.e. 'height, width'.",
          "type": "array"
        },
        {
          "name": "shadow-url",
          "description": "The URL to load the shadow icon from. Should be relative to the path set via the `imagesPath` property on `pb-leaflet-map`.",
          "type": "string"
        },
        {
          "name": "shadow-size",
          "description": "Size of the shadow icon as comma-separated string, i.e. 'height, width'.",
          "type": "array"
        },
        {
          "name": "shadow-anchor",
          "description": "Anchor position of the shadow icon as comma-separated string, i.e. 'height, width'.",
          "type": "array"
        },
        {
          "name": "popup-anchor",
          "description": "Anchor position of the popup as comma-separated string, i.e. 'height, width'.",
          "type": "array"
        },
        {
          "name": "name",
          "description": "Name of the icon. Set to 'active' to configure the icon used for\nplaces which were target of a previous `pb-geolocation` event (i.e. are currently 'active').",
          "type": "string",
          "default": "\"default\""
        },
        {
          "name": "icon-url",
          "description": "The URL to load the icon from. Should be relative to the path set via the `imagesPath` property on `pb-leaflet-map`.",
          "type": "string"
        }
      ],
      "properties": [
        {
          "name": "iconSize",
          "attribute": "icon-size",
          "description": "Size of the icon as comma-separated string, i.e. 'height, width'.",
          "type": "array"
        },
        {
          "name": "iconAnchor",
          "attribute": "icon-anchor",
          "description": "Anchor position of the icon as comma-separated string, i.e. 'height, width'.",
          "type": "array"
        },
        {
          "name": "shadowUrl",
          "attribute": "shadow-url",
          "description": "The URL to load the shadow icon from. Should be relative to the path set via the `imagesPath` property on `pb-leaflet-map`.",
          "type": "string"
        },
        {
          "name": "shadowSize",
          "attribute": "shadow-size",
          "description": "Size of the shadow icon as comma-separated string, i.e. 'height, width'.",
          "type": "array"
        },
        {
          "name": "shadowAnchor",
          "attribute": "shadow-anchor",
          "description": "Anchor position of the shadow icon as comma-separated string, i.e. 'height, width'.",
          "type": "array"
        },
        {
          "name": "popupAncor",
          "attribute": "popup-anchor",
          "description": "Anchor position of the popup as comma-separated string, i.e. 'height, width'.",
          "type": "array"
        },
        {
          "name": "options",
          "type": "object"
        },
        {
          "name": "name",
          "attribute": "name",
          "description": "Name of the icon. Set to 'active' to configure the icon used for\nplaces which were target of a previous `pb-geolocation` event (i.e. are currently 'active').",
          "type": "string",
          "default": "\"default\""
        },
        {
          "name": "type",
          "type": "string",
          "default": "\"image\""
        },
        {
          "name": "iconUrl",
          "attribute": "icon-url",
          "description": "The URL to load the icon from. Should be relative to the path set via the `imagesPath` property on `pb-leaflet-map`.",
          "type": "string"
        }
      ]
    },
    {
      "name": "pb-map-layer",
      "path": "./src/pb-map-layer.js",
      "description": "Configure a map layer. Should be nested inside `pb-leaflet-map`.",
      "attributes": [
        {
          "name": "base",
          "description": "Set to indicate that this is a base layer",
          "type": "boolean"
        },
        {
          "name": "show",
          "description": "Display the layer on the map upon initialization",
          "type": "boolean"
        },
        {
          "name": "label",
          "description": "A label for the layer to be shown in the layer control",
          "type": "string"
        },
        {
          "name": "attribution",
          "type": "string"
        },
        {
          "name": "min-zoom",
          "type": "number"
        },
        {
          "name": "max-zoom",
          "type": "number"
        },
        {
          "name": "zoom-offset",
          "type": "number"
        },
        {
          "name": "opacity",
          "type": "number"
        },
        {
          "name": "tileSize",
          "type": "number"
        },
        {
          "name": "id",
          "type": "string"
        },
        {
          "name": "access-token",
          "type": "string"
        },
        {
          "name": "type",
          "description": "Type of the layer: either 'tile' or 'geojson'",
          "type": "string",
          "default": "\"tile\""
        },
        {
          "name": "url",
          "description": "The URL (or URL template) to load layer data from",
          "type": "string"
        }
      ],
      "properties": [
        {
          "name": "base",
          "attribute": "base",
          "description": "Set to indicate that this is a base layer",
          "type": "boolean"
        },
        {
          "name": "show",
          "attribute": "show",
          "description": "Display the layer on the map upon initialization",
          "type": "boolean"
        },
        {
          "name": "label",
          "attribute": "label",
          "description": "A label for the layer to be shown in the layer control",
          "type": "string"
        },
        {
          "name": "attribution",
          "attribute": "attribution",
          "type": "string"
        },
        {
          "name": "minZoom",
          "attribute": "min-zoom",
          "type": "number"
        },
        {
          "name": "maxZoom",
          "attribute": "max-zoom",
          "type": "number"
        },
        {
          "name": "zoomOffset",
          "attribute": "zoom-offset",
          "type": "number"
        },
        {
          "name": "opacity",
          "attribute": "opacity",
          "type": "number"
        },
        {
          "name": "tileSize",
          "attribute": "tileSize",
          "type": "number"
        },
        {
          "name": "id",
          "attribute": "id",
          "type": "string"
        },
        {
          "name": "accessToken",
          "attribute": "access-token",
          "type": "string"
        },
        {
          "name": "options",
          "type": "object"
        },
        {
          "name": "type",
          "attribute": "type",
          "description": "Type of the layer: either 'tile' or 'geojson'",
          "type": "string",
          "default": "\"tile\""
        },
        {
          "name": "url",
          "attribute": "url",
          "description": "The URL (or URL template) to load layer data from",
          "type": "string"
        }
      ]
    },
    {
      "name": "pb-markdown",
      "path": "./src/pb-markdown.js",
      "description": "A component to render markdown. Content to render may either\n\n1. be specified via the `content` property\n2. included in the body of the element\n3. loaded from an external URL\n\nUsing option 2, if the markdown includes embedded HTML, make sure to wrap\nthe content into an `template` HTML element to prevent the browser from interpreting\nit.\n\nUsing option 3, you can either specify an absolute or relative URL. Relative URLs\nwill be interpreted relative to the endpoint set by `pb-page`.",
      "attributes": [
        {
          "name": "content",
          "description": "The markdown content to be rendered. If undefined,\nmarkdown will be taken from the content of the element\nor loaded from the specified URL.",
          "type": "string"
        },
        {
          "name": "url",
          "description": "An absolute or relative URL to load the markdown from.",
          "type": "string"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "content",
          "attribute": "content",
          "description": "The markdown content to be rendered. If undefined,\nmarkdown will be taken from the content of the element\nor loaded from the specified URL.",
          "type": "string"
        },
        {
          "name": "url",
          "attribute": "url",
          "description": "An absolute or relative URL to load the markdown from.",
          "type": "string"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ]
    },
    {
      "name": "pb-media-query",
      "path": "./src/pb-media-query.js",
      "description": "Show or hide contents depending on a media query. This is used to toggle the menubar and drawer.\nOn small displays, the menu will move into the drawer.",
      "attributes": [
        {
          "name": "query",
          "description": "Media query to be watched by the element.\n\nCan be modified at run time by setting a new value.",
          "type": "string",
          "default": "\"(max-width:460px)\""
        },
        {
          "name": "match",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "query",
          "attribute": "query",
          "description": "Media query to be watched by the element.\n\nCan be modified at run time by setting a new value.",
          "type": "string",
          "default": "\"(max-width:460px)\""
        },
        {
          "name": "match",
          "attribute": "match",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "changed"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "default unnamed slot"
        }
      ]
    },
    {
      "name": "pb-mei",
      "path": "./src/pb-mei.js",
      "description": "A viewer and player for MEI musical notation based on [Verovio](https://www.verovio.org/).\nSupports optional MIDI playback using [web-midi-player](https://midi.yvesgurcan.com/).\nBoth libraries are loaded dynamically when the component is used the first time.\n\nViewing options to be selected by the user can be defined via nested `pb-option` elements:\n\n```html\n<pb-mei id=\"viewer\" player url=\"http://www.marenzio.org/mei/M-06-5/M_06_5_01_S_io_parto_i_moro_e_pur_partir_conviene.mei\"\n        footer=\"none\">\n   <pb-option name=\"appXPath\" on=\"./rdg[contains(@label, 'original')]\" off=\"\">Original Clefs</pb-option>\n</pb-mei>\n```\n\nThe MEI document to display can either be given directly in the `data` property or loaded from an URL\nspecified in `url`.",
      "attributes": [
        {
          "name": "data",
          "description": "MEI data to display specified as a string. This should represent a complete\nMEI document.",
          "type": "string"
        },
        {
          "name": "url",
          "description": "URL of the MEI file to load. Will be used if no `data` property is present.\nA relative URL would be resolved relative to the TEI Publisher endpoint.",
          "type": "string"
        },
        {
          "name": "player",
          "description": "Set to enable MIDI player",
          "type": "boolean"
        },
        {
          "name": "footer",
          "description": "Control footer layout",
          "type": "\"auto\" | \"encoded\" | \"none\" | \"always\"",
          "default": "\"auto\""
        },
        {
          "name": "header",
          "description": "Control footer layout",
          "type": "\"auto\" | \"encoded\" | \"none\"",
          "default": "\"auto\""
        },
        {
          "name": "breaks",
          "description": "Define page and system breaks layout (default: \"auto\")",
          "type": "\"auto\" | \"none\" | \"line\" | \"encoded\" | \"smart\"",
          "default": "\"auto\""
        },
        {
          "name": "app-xpath",
          "description": "Set the XPath query for selecting <app> child elements, for example: \"./rdg[contains(@source, 'source-id')]\";\nby default the <lem> or the first <rdg> is selected",
          "type": "string"
        },
        {
          "name": "choice-xpath",
          "description": "Set the xPath query for selecting <choice> child elements, for example: \"./orig\"; by default the first child is selected",
          "type": "string"
        },
        {
          "name": "mdiv-xpath",
          "description": "Set the xPath query for selecting the <mdiv> to be rendered; only one <mdiv> can be rendered (default: \"\")",
          "type": "string"
        },
        {
          "name": "subst-xpath",
          "description": "Set the xPath query for selecting <subst> child elements, for example: \"./del\"; by default the first child is selected",
          "type": "string"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "data",
          "attribute": "data",
          "description": "MEI data to display specified as a string. This should represent a complete\nMEI document.",
          "type": "string"
        },
        {
          "name": "url",
          "attribute": "url",
          "description": "URL of the MEI file to load. Will be used if no `data` property is present.\nA relative URL would be resolved relative to the TEI Publisher endpoint.",
          "type": "string"
        },
        {
          "name": "player",
          "attribute": "player",
          "description": "Set to enable MIDI player",
          "type": "boolean"
        },
        {
          "name": "footer",
          "attribute": "footer",
          "description": "Control footer layout",
          "type": "\"auto\" | \"encoded\" | \"none\" | \"always\"",
          "default": "\"auto\""
        },
        {
          "name": "header",
          "attribute": "header",
          "description": "Control footer layout",
          "type": "\"auto\" | \"encoded\" | \"none\"",
          "default": "\"auto\""
        },
        {
          "name": "breaks",
          "attribute": "breaks",
          "description": "Define page and system breaks layout (default: \"auto\")",
          "type": "\"auto\" | \"none\" | \"line\" | \"encoded\" | \"smart\"",
          "default": "\"auto\""
        },
        {
          "name": "appXPath",
          "attribute": "app-xpath",
          "description": "Set the XPath query for selecting <app> child elements, for example: \"./rdg[contains(@source, 'source-id')]\";\nby default the <lem> or the first <rdg> is selected",
          "type": "string"
        },
        {
          "name": "choiceXPath",
          "attribute": "choice-xpath",
          "description": "Set the xPath query for selecting <choice> child elements, for example: \"./orig\"; by default the first child is selected",
          "type": "string"
        },
        {
          "name": "mdivXPath",
          "attribute": "mdiv-xpath",
          "description": "Set the xPath query for selecting the <mdiv> to be rendered; only one <mdiv> can be rendered (default: \"\")",
          "type": "string"
        },
        {
          "name": "substXPath",
          "attribute": "subst-xpath",
          "description": "Set the xPath query for selecting <subst> child elements, for example: \"./del\"; by default the first child is selected",
          "type": "string"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-mei-min-width",
          "description": "minimal width"
        }
      ],
      "cssParts": [
        {
          "name": "toolbar",
          "description": "toolbar with pagination and midi player controls"
        },
        {
          "name": "music",
          "description": "the music output area"
        }
      ]
    },
    {
      "name": "pb-message",
      "path": "./src/pb-message.js",
      "description": "Show a dialog with buttons. Used by ODD editor.",
      "attributes": [
        {
          "name": "title",
          "description": "the dialog box title",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "message",
          "description": "main message text to be shown on dialog.",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "type",
          "description": "type of message. Can be either 'message' or 'confirm'. In case of confirm the buttons 'yes' and 'no'\nwill be shown and the dialog becomes modal.",
          "type": "string",
          "default": "\"message\""
        },
        {
          "name": "open",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "title",
          "attribute": "title",
          "description": "the dialog box title",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "message",
          "attribute": "message",
          "description": "main message text to be shown on dialog.",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "type",
          "attribute": "type",
          "description": "type of message. Can be either 'message' or 'confirm'. In case of confirm the buttons 'yes' and 'no'\nwill be shown and the dialog becomes modal.",
          "type": "string",
          "default": "\"message\""
        },
        {
          "name": "open",
          "attribute": "open",
          "type": "boolean",
          "default": "false"
        }
      ]
    },
    {
      "name": "pb-navigation",
      "path": "./src/pb-navigation.js",
      "description": "Navigate backward/forward in a document. This component does not implement any functionality itself.\nIt just sends a `pb-navigate` event when clicked. You may also assign a shortcut key by setting property\n`keyboard`.\n\nIn addition to firing `pb-navigate`, the control renders a real `<a href>` pointing to the\ntarget fragment (`?id=` for a persistent xml:id, `?root=` as fallback) with `rel=\"next\"`/`rel=\"prev\"`.\nThis makes the next/previous page reachable by crawlers and no-JS clients, while interactive\nclicks are intercepted (`preventDefault`) so the SPA navigates in place without a reload.",
      "attributes": [
        {
          "name": "keyboard",
          "description": "Register a shortcut key, e.g. 'left' or 'shift+left'",
          "type": "string"
        },
        {
          "name": "rendition",
          "description": "Rendition of the navigation element if it's disabled\nPossible values:\n- hidden (default if not set; control is removed from the document layout)\n- invisible (controll is hidden, but keeped in the document layout)\n- visible (control is visible)",
          "type": "string"
        },
        {
          "name": "direction",
          "description": "The direction to navigate in, either `forward` or `backward`",
          "type": "string",
          "default": "\"forward\""
        },
        {
          "name": "hotkeys",
          "type": "object",
          "default": "{}"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "true"
        }
      ],
      "properties": [
        {
          "name": "keyboard",
          "attribute": "keyboard",
          "description": "Register a shortcut key, e.g. 'left' or 'shift+left'",
          "type": "string"
        },
        {
          "name": "rendition",
          "attribute": "rendition",
          "description": "Rendition of the navigation element if it's disabled\nPossible values:\n- hidden (default if not set; control is removed from the document layout)\n- invisible (controll is hidden, but keeped in the document layout)\n- visible (control is visible)",
          "type": "string"
        },
        {
          "name": "direction",
          "attribute": "direction",
          "description": "The direction to navigate in, either `forward` or `backward`",
          "type": "string",
          "default": "\"forward\""
        },
        {
          "name": "hotkeys",
          "attribute": "hotkeys",
          "type": "object",
          "default": "{}"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "true"
        }
      ],
      "events": [
        {
          "name": "pb-navigate",
          "description": "Fire event indicating that listening components should navigate in the given direction"
        },
        {
          "name": "pb-update",
          "description": "When received, updates the state of navigation buttons (disables when no forward/backward navigation possible)"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "default unnamed slot"
        }
      ]
    },
    {
      "name": "pb-observable",
      "path": "./src/pb-observable.js",
      "description": "An observable element, which will emit a signal `pb-visible` whenever\nit becomes visible on the viewport. Use it to determine the current position\nwithin a scrollable area.",
      "attributes": [
        {
          "name": "data",
          "description": "Payload data to be passed with the event",
          "type": "string"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "data",
          "attribute": "data",
          "description": "Payload data to be passed with the event",
          "type": "string"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-visible",
          "description": "fired when the element becomes visible on the viewport"
        }
      ]
    },
    {
      "name": "pb-odd-editor",
      "path": "./src/pb-odd-editor.js",
      "description": "ODD editor component",
      "attributes": [
        {
          "name": "ident",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "mode",
          "description": "ElementSpec mode. Can be ´add´, ´change´ or undefined.",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "models",
          "description": "Array of ´odd-model´ Elements",
          "type": "array"
        },
        {
          "name": "odd",
          "description": "the odd file being edited",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "elementSpecs",
          "description": "array of ´element-spec´ Elements of given odd file",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "source",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "title",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "title-short",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "description",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "namespace",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "root-path",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "loading",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "indentString",
          "type": "string",
          "default": "\"    \""
        },
        {
          "name": "output-prefix",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "output-root",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "currentSelection",
          "type": "object",
          "default": "{}"
        },
        {
          "name": "useNamespace",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "loggedIn",
          "type": "boolean",
          "default": "true"
        },
        {
          "name": "tabs",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "tabIndex",
          "type": "number",
          "default": "\"undefined\""
        },
        {
          "name": "hotkeys",
          "type": "object",
          "default": "{\"save\":\"ctrl+shift+s,command+shift+s\"}"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "ident",
          "attribute": "ident",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "mode",
          "attribute": "mode",
          "description": "ElementSpec mode. Can be ´add´, ´change´ or undefined.",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "models",
          "attribute": "models",
          "description": "Array of ´odd-model´ Elements",
          "type": "array"
        },
        {
          "name": "odd",
          "attribute": "odd",
          "description": "the odd file being edited",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "elementSpecs",
          "attribute": "elementSpecs",
          "description": "array of ´element-spec´ Elements of given odd file",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "source",
          "attribute": "source",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "title",
          "attribute": "title",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "titleShort",
          "attribute": "title-short",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "description",
          "attribute": "description",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "namespace",
          "attribute": "namespace",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "rootPath",
          "attribute": "root-path",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "loading",
          "attribute": "loading",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "indentString",
          "attribute": "indentString",
          "type": "string",
          "default": "\"    \""
        },
        {
          "name": "outputPrefix",
          "attribute": "output-prefix",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "outputRoot",
          "attribute": "output-root",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "currentSelection",
          "attribute": "currentSelection",
          "type": "object",
          "default": "{}"
        },
        {
          "name": "useNamespace",
          "attribute": "useNamespace",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "loggedIn",
          "attribute": "loggedIn",
          "type": "boolean",
          "default": "true"
        },
        {
          "name": "tabs",
          "attribute": "tabs",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "tabIndex",
          "attribute": "tabIndex",
          "type": "number",
          "default": "\"undefined\""
        },
        {
          "name": "selectedNavIndex",
          "type": "number",
          "default": "0"
        },
        {
          "name": "cssFile",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "hotkeys",
          "attribute": "hotkeys",
          "type": "object",
          "default": "{\"save\":\"ctrl+shift+s,command+shift+s\"}"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-login",
          "description": "When received, registers if user is logged in"
        },
        {
          "name": "pb-start-update"
        },
        {
          "name": "pb-end-update"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "default unnamed slot"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-heading-font-family",
          "description": "font family used for headings"
        },
        {
          "name": "--pb-heading-font-weight"
        },
        {
          "name": "--pb-heading-line-height"
        }
      ]
    },
    {
      "name": "pb-odd-elementspec-editor",
      "path": "./src/pb-odd-elementspec-editor.js",
      "description": "A wrapper for the popular codemirror code editor.",
      "attributes": [
        {
          "name": "endpoint",
          "type": "string"
        },
        {
          "name": "api-version",
          "type": "string"
        },
        {
          "name": "ident",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "mode",
          "description": "mode for an ´elementSpec` may be 'add', 'remove' or being undefined",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "models",
          "description": "array of ODD `model` elements",
          "type": "array",
          "default": "[]"
        }
      ],
      "properties": [
        {
          "name": "endpoint",
          "attribute": "endpoint",
          "type": "string"
        },
        {
          "name": "apiVersion",
          "attribute": "api-version",
          "type": "string"
        },
        {
          "name": "ident",
          "attribute": "ident",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "mode",
          "attribute": "mode",
          "description": "mode for an ´elementSpec` may be 'add', 'remove' or being undefined",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "models",
          "attribute": "models",
          "description": "array of ODD `model` elements",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "icon",
          "type": "string",
          "default": "\"expand-more\""
        }
      ],
      "events": [
        {
          "name": "element-spec-changed"
        },
        {
          "name": "element-spec-removed"
        },
        {
          "name": "odd-paste"
        },
        {
          "name": "current-changed"
        }
      ]
    },
    {
      "name": "pb-odd-model-editor",
      "path": "./src/pb-odd-model-editor.js",
      "description": "represents an odd model element for editing",
      "attributes": [
        {
          "name": "models",
          "type": "array"
        },
        {
          "name": "open",
          "type": "string"
        },
        {
          "name": "endpoint",
          "type": "string"
        },
        {
          "name": "api-version",
          "type": "string"
        },
        {
          "name": "behaviour",
          "description": "maps to ODD ´model` behaviour attribute",
          "type": "string",
          "default": "\"inline\""
        },
        {
          "name": "predicate",
          "description": "maps to ODD `model` predicate",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "type",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "template",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "output",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "css",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "mode",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "model",
          "type": "object",
          "default": "{}"
        },
        {
          "name": "parameters",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "renditions",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "desc",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "sourcerend",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "show",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "outputs",
          "type": "array",
          "default": "[\"\",\"web\",\"print\",\"epub\",\"fo\",\"latex\",\"plain\"]"
        },
        {
          "name": "behaviours",
          "type": "array",
          "default": "[\"alternate\",\"anchor\",\"block\",\"body\",\"break\",\"cell\",\"cit\",\"document\",\"figure\",\"graphic\",\"heading\",\"inline\",\"link\",\"list\",\"listItem\",\"metadata\",\"note\",\"omit\",\"paragraph\",\"pass-through\",\"row\",\"section\",\"table\",\"text\",\"title\",\"webcomponent\"]"
        },
        {
          "name": "icon",
          "type": "string",
          "default": "\"expand-more\""
        },
        {
          "name": "has-custom-behaviour",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "models",
          "attribute": "models",
          "type": "array"
        },
        {
          "name": "open",
          "attribute": "open",
          "type": "string"
        },
        {
          "name": "endpoint",
          "attribute": "endpoint",
          "type": "string"
        },
        {
          "name": "apiVersion",
          "attribute": "api-version",
          "type": "string"
        },
        {
          "name": "behaviour",
          "attribute": "behaviour",
          "description": "maps to ODD ´model` behaviour attribute",
          "type": "string",
          "default": "\"inline\""
        },
        {
          "name": "predicate",
          "attribute": "predicate",
          "description": "maps to ODD `model` predicate",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "type",
          "attribute": "type",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "template",
          "attribute": "template",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "output",
          "attribute": "output",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "css",
          "attribute": "css",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "mode",
          "attribute": "mode",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "model",
          "attribute": "model",
          "type": "object",
          "default": "{}"
        },
        {
          "name": "parameters",
          "attribute": "parameters",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "renditions",
          "attribute": "renditions",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "desc",
          "attribute": "desc",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "sourcerend",
          "attribute": "sourcerend",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "show",
          "attribute": "show",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "outputs",
          "attribute": "outputs",
          "type": "array",
          "default": "[\"\",\"web\",\"print\",\"epub\",\"fo\",\"latex\",\"plain\"]"
        },
        {
          "name": "parentModel",
          "type": "never[]",
          "default": "[]"
        },
        {
          "name": "behaviours",
          "attribute": "behaviours",
          "type": "array",
          "default": "[\"alternate\",\"anchor\",\"block\",\"body\",\"break\",\"cell\",\"cit\",\"document\",\"figure\",\"graphic\",\"heading\",\"inline\",\"link\",\"list\",\"listItem\",\"metadata\",\"note\",\"omit\",\"paragraph\",\"pass-through\",\"row\",\"section\",\"table\",\"text\",\"title\",\"webcomponent\"]"
        },
        {
          "name": "icon",
          "attribute": "icon",
          "type": "string",
          "default": "\"expand-more\""
        },
        {
          "name": "hasCustomBehaviour",
          "attribute": "has-custom-behaviour",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "model-changed"
        },
        {
          "name": "model-remove"
        },
        {
          "name": "model-move-down"
        },
        {
          "name": "model-move-up"
        },
        {
          "name": "current-changed"
        },
        {
          "name": "odd-copy"
        },
        {
          "name": "odd-paste"
        }
      ]
    },
    {
      "name": "pb-odd-parameter-editor",
      "path": "./src/pb-odd-parameter-editor.js",
      "description": "represents an odd parameter element for editing",
      "attributes": [
        {
          "name": "api-version",
          "type": "string"
        },
        {
          "name": "name",
          "description": "the parameter name",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "value",
          "description": "the parameter value",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "set",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "behaviour",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "parameters",
          "type": "object",
          "default": "{\"''\":[],\"alternate\":[\"default\",\"alternate\",\"persistent\"],\"anchor\":[\"content\",\"id\"],\"block\":[\"content\"],\"body\":[\"content\"],\"break\":[\"content\",\"type\",\"label\"],\"cell\":[\"content\"],\"cit\":[\"content\",\"source\"],\"document\":[\"content\"],\"figure\":[\"content\",\"title\"],\"graphic\":[\"content\",\"url\",\"width\",\"height\",\"scale\",\"title\"],\"heading\":[\"content\",\"level\"],\"inline\":[\"content\"],\"link\":[\"content\",\"uri\",\"target\"],\"list\":[\"content\",\"type\"],\"listItem\":[\"content\",\"n\"],\"metadata\":[\"content\"],\"note\":[\"content\",\"place\",\"label\"],\"omit\":[],\"paragraph\":[\"content\"],\"row\":[\"content\"],\"section\":[\"content\"],\"table\":[\"content\"],\"text\":[\"content\"],\"title\":[\"content\"],\"webcomponent\":[\"content\",\"name\"]}"
        },
        {
          "name": "endpoint",
          "type": "string",
          "default": "\"\""
        }
      ],
      "properties": [
        {
          "name": "apiVersion",
          "attribute": "api-version",
          "type": "string"
        },
        {
          "name": "name",
          "attribute": "name",
          "description": "the parameter name",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "value",
          "attribute": "value",
          "description": "the parameter value",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "setParam",
          "attribute": "set",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "behaviour",
          "attribute": "behaviour",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "currentParameters",
          "type": "never[]",
          "default": "[]"
        },
        {
          "name": "parameters",
          "attribute": "parameters",
          "type": "object",
          "default": "{\"''\":[],\"alternate\":[\"default\",\"alternate\",\"persistent\"],\"anchor\":[\"content\",\"id\"],\"block\":[\"content\"],\"body\":[\"content\"],\"break\":[\"content\",\"type\",\"label\"],\"cell\":[\"content\"],\"cit\":[\"content\",\"source\"],\"document\":[\"content\"],\"figure\":[\"content\",\"title\"],\"graphic\":[\"content\",\"url\",\"width\",\"height\",\"scale\",\"title\"],\"heading\":[\"content\",\"level\"],\"inline\":[\"content\"],\"link\":[\"content\",\"uri\",\"target\"],\"list\":[\"content\",\"type\"],\"listItem\":[\"content\",\"n\"],\"metadata\":[\"content\"],\"note\":[\"content\",\"place\",\"label\"],\"omit\":[],\"paragraph\":[\"content\"],\"row\":[\"content\"],\"section\":[\"content\"],\"table\":[\"content\"],\"text\":[\"content\"],\"title\":[\"content\"],\"webcomponent\":[\"content\",\"name\"]}"
        },
        {
          "name": "selected",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "endpoint",
          "attribute": "endpoint",
          "type": "string",
          "default": "\"\""
        }
      ],
      "events": [
        {
          "name": "parameter-connected"
        },
        {
          "name": "parameter-remove"
        },
        {
          "name": "parameter-changed"
        }
      ]
    },
    {
      "name": "pb-odd-rendition-editor",
      "path": "./src/pb-odd-rendition-editor.js",
      "description": "represents an odd parameter element for editing",
      "attributes": [
        {
          "name": "scopes",
          "type": "array",
          "default": "[\"\",\"before\",\"after\"]"
        },
        {
          "name": "css",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "scope",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "selected",
          "type": "string",
          "default": "\"\""
        }
      ],
      "properties": [
        {
          "name": "scopes",
          "attribute": "scopes",
          "type": "array",
          "default": "[\"\",\"before\",\"after\"]"
        },
        {
          "name": "css",
          "attribute": "css",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "scope",
          "attribute": "scope",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "selected",
          "attribute": "selected",
          "type": "string",
          "default": "\"\""
        }
      ],
      "events": [
        {
          "name": "rendition-connected"
        },
        {
          "name": "remove-rendition"
        },
        {
          "name": "rendition-changed"
        }
      ]
    },
    {
      "name": "pb-page",
      "path": "./src/pb-page.js",
      "description": "Configuration element which should wrap around other `pb-` elements.\nAmong other things, this element determines the TEI Publisher\ninstance to which all elements will talk (property `endpoint`), and\ninitializes the i18n language module.",
      "attributes": [
        {
          "name": "app-root",
          "description": "TEI Publisher internal: set to the root URL of the current app",
          "type": "string"
        },
        {
          "name": "template",
          "description": "TEI Publisher internal: set to the current page template.",
          "type": "string"
        },
        {
          "name": "locales",
          "description": "Optional URL pointing to a directory from which additional i18n\nlanguage files will be loaded. The URL should contain placeholders\nfor the language (`lng`) and the namespace (`ns`), e.g.\n\n`resources/i18n/{{ns}}_{{lng}}.json`\n\nor\n\n`resources/i18n/{{ns}}/{{lng}}.json`\n\nThe latter assumes custom language files in a subdirectory, the first\nexpects the namespace to be specified at the start of the file name.\n\nThe default namespace for custom language files is assumed to be `app`,\nbut you can define additional namespaces via `localeFallbackNS`.",
          "type": "string"
        },
        {
          "name": "language",
          "description": "Set a language for i18n (e.g. 'en' or 'de'). If not set, browser language\ndetection will be used.",
          "type": "string"
        },
        {
          "name": "locale-fallback-ns",
          "description": "Optional list of whitespace separated namespaces which should be searched\nfor translations. By default, only the namespace `common` is queried.\nIf the `locales` property is specified, an additional namespace `app` is added.\nYou can add more namespace here, e.g. `custom`, if you want to provide\ntranslations for custom apps or components.",
          "type": "string"
        },
        {
          "name": "unresolved",
          "description": "Will be set while the component is loading and unset when\nit is fully loaded. Use to avoid flash of unstyled content\nvia CSS: set `unresolved` on `pb-page` in the HTML and\nadd a CSS rule like:\n\n```css\npb-page[unresolved] {\n    display: none;\n}\n```",
          "type": "boolean",
          "default": "true"
        },
        {
          "name": "endpoint",
          "description": "The base URL of the TEI Publisher instance. All nested elements will\ntalk to this instance. By default it is set to the URL the\npage was loaded from.\n\nThe endpoint can be overwritten by providing an HTTP request parameter\n`_target` with an URL.",
          "type": "string",
          "default": "\".\""
        },
        {
          "name": "url-template",
          "description": "Can be used to define parameters which should be serialized in the\nURL path rather than as query parameters. Expects a url pattern\nrelative to the application root\n(supported patterns are documented in the\n[path-to-regexp](https://www.npmjs.com/package/path-to-regexp) library documentation).\n\nFor example, a pattern `:lang/texts/:path/:id?` would support URLs like\n`en/texts/text1/chapter1`. Whenever components change state – e.g. due to a navigation\nevent – the standard parameters `path`, `lang` and `id` would be serialized into the\nURL path pattern rather than query parameters.",
          "type": "string"
        },
        {
          "name": "url-ignore",
          "description": "A comma-separated list of parameter names which should not be reflected on the browser URL.\nUse this to exclude e.g. the default `odd` parameter of a pb-view to be shown in the\nbrowser URL.",
          "type": "string"
        },
        {
          "name": "url-path",
          "description": "Is the resource path part of the URL or should it be\nencoded as a parameter? TEI Publisher uses the\nURL path, but the webcomponent demos need to encode the resource path\nin a query parameter.",
          "type": "string",
          "default": "\"path\""
        },
        {
          "name": "id-hash",
          "description": "If enabled, a hash in the URL (e.g. documentation.xml#introduction) will\nbe interpreted as an xml:id to navigate to when talking to the server.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "api-version",
          "type": "string",
          "default": "\"undefined\""
        },
        {
          "name": "require-language",
          "description": "If set, the element will wait for a language being set by i18n before\nit sends a `pb-page-ready` event. Elements like `pb-view` will wait\nfor this event before displaying content.\n\nAlso, `pb-view` will pass the configured language to the server endpoint\nwhere it will be available to ODD processing models in variable\n`$parameters?language` and can thus be used to change output depending on\nthe user interface language.\n\nIf you would like `pb-view` to refresh automatically whenever the language\nsetting changes, specify property `useLanguage` on the corresponding `pb-view`.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "supported-languages",
          "description": "Comma-separated list of languages supported. If the detected language\nis not in this list, fall back to the configured fallback language.",
          "type": "array"
        },
        {
          "name": "fallback-language",
          "description": "The fallback language to use if the detected language is not supported.\nDefaults to 'en'.",
          "type": "string",
          "default": "\"en\""
        },
        {
          "name": "theme",
          "type": "string"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "appRoot",
          "attribute": "app-root",
          "description": "TEI Publisher internal: set to the root URL of the current app",
          "type": "string"
        },
        {
          "name": "template",
          "attribute": "template",
          "description": "TEI Publisher internal: set to the current page template.",
          "type": "string"
        },
        {
          "name": "locales",
          "attribute": "locales",
          "description": "Optional URL pointing to a directory from which additional i18n\nlanguage files will be loaded. The URL should contain placeholders\nfor the language (`lng`) and the namespace (`ns`), e.g.\n\n`resources/i18n/{{ns}}_{{lng}}.json`\n\nor\n\n`resources/i18n/{{ns}}/{{lng}}.json`\n\nThe latter assumes custom language files in a subdirectory, the first\nexpects the namespace to be specified at the start of the file name.\n\nThe default namespace for custom language files is assumed to be `app`,\nbut you can define additional namespaces via `localeFallbackNS`.",
          "type": "string"
        },
        {
          "name": "language",
          "attribute": "language",
          "description": "Set a language for i18n (e.g. 'en' or 'de'). If not set, browser language\ndetection will be used.",
          "type": "string"
        },
        {
          "name": "localeFallbackNs",
          "attribute": "locale-fallback-ns",
          "description": "Optional list of whitespace separated namespaces which should be searched\nfor translations. By default, only the namespace `common` is queried.\nIf the `locales` property is specified, an additional namespace `app` is added.\nYou can add more namespace here, e.g. `custom`, if you want to provide\ntranslations for custom apps or components.",
          "type": "string"
        },
        {
          "name": "stylesheet",
          "type": "CSSStyleSheet | null | undefined"
        },
        {
          "name": "unresolved",
          "attribute": "unresolved",
          "description": "Will be set while the component is loading and unset when\nit is fully loaded. Use to avoid flash of unstyled content\nvia CSS: set `unresolved` on `pb-page` in the HTML and\nadd a CSS rule like:\n\n```css\npb-page[unresolved] {\n    display: none;\n}\n```",
          "type": "boolean",
          "default": "true"
        },
        {
          "name": "endpoint",
          "attribute": "endpoint",
          "description": "The base URL of the TEI Publisher instance. All nested elements will\ntalk to this instance. By default it is set to the URL the\npage was loaded from.\n\nThe endpoint can be overwritten by providing an HTTP request parameter\n`_target` with an URL.",
          "type": "string",
          "default": "\".\""
        },
        {
          "name": "urlTemplate",
          "attribute": "url-template",
          "description": "Can be used to define parameters which should be serialized in the\nURL path rather than as query parameters. Expects a url pattern\nrelative to the application root\n(supported patterns are documented in the\n[path-to-regexp](https://www.npmjs.com/package/path-to-regexp) library documentation).\n\nFor example, a pattern `:lang/texts/:path/:id?` would support URLs like\n`en/texts/text1/chapter1`. Whenever components change state – e.g. due to a navigation\nevent – the standard parameters `path`, `lang` and `id` would be serialized into the\nURL path pattern rather than query parameters.",
          "type": "string"
        },
        {
          "name": "urlIgnore",
          "attribute": "url-ignore",
          "description": "A comma-separated list of parameter names which should not be reflected on the browser URL.\nUse this to exclude e.g. the default `odd` parameter of a pb-view to be shown in the\nbrowser URL.",
          "type": "string"
        },
        {
          "name": "urlPath",
          "attribute": "url-path",
          "description": "Is the resource path part of the URL or should it be\nencoded as a parameter? TEI Publisher uses the\nURL path, but the webcomponent demos need to encode the resource path\nin a query parameter.",
          "type": "string",
          "default": "\"path\""
        },
        {
          "name": "idHash",
          "attribute": "id-hash",
          "description": "If enabled, a hash in the URL (e.g. documentation.xml#introduction) will\nbe interpreted as an xml:id to navigate to when talking to the server.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "apiVersion",
          "attribute": "api-version",
          "type": "string",
          "default": "\"undefined\""
        },
        {
          "name": "requireLanguage",
          "attribute": "require-language",
          "description": "If set, the element will wait for a language being set by i18n before\nit sends a `pb-page-ready` event. Elements like `pb-view` will wait\nfor this event before displaying content.\n\nAlso, `pb-view` will pass the configured language to the server endpoint\nwhere it will be available to ODD processing models in variable\n`$parameters?language` and can thus be used to change output depending on\nthe user interface language.\n\nIf you would like `pb-view` to refresh automatically whenever the language\nsetting changes, specify property `useLanguage` on the corresponding `pb-view`.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "supportedLanguages",
          "attribute": "supported-languages",
          "description": "Comma-separated list of languages supported. If the detected language\nis not in this list, fall back to the configured fallback language.",
          "type": "array"
        },
        {
          "name": "fallbackLanguage",
          "attribute": "fallback-language",
          "description": "The fallback language to use if the detected language is not supported.\nDefaults to 'en'.",
          "type": "string",
          "default": "\"en\""
        },
        {
          "name": "theme",
          "attribute": "theme",
          "type": "string"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-page-ready",
          "description": "fired when the endpoint and language settings have been determined"
        },
        {
          "name": "pb-i18n-update",
          "description": "fired when the user selected a different display language"
        },
        {
          "name": "pb-i18n-language",
          "description": "when received, changes the language to the one passed in the event and proceeds to pb-i18-update"
        },
        {
          "name": "pb-toggle",
          "description": "when received, dispatch state changes to the elements on the page (see `pb-toggle-feature`, `pb-select-feature`)"
        },
        {
          "name": "pb-page-loaded"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "default unnamed slot for content"
        }
      ]
    },
    {
      "name": "pb-paginate",
      "path": "./src/pb-paginate.js",
      "description": "Display a pagination control from which the user can select a page to view\nfrom a multi-page collection of resources. To determine the number of pages,\n`pb-paginate` listens for the `pb-results-received` event emitted by `pb-load`.\nIf the user clicks on one of the page indicators, a `pb-load` event is emitted,\nwhich should cause the connected `pb-load` element to refresh.",
      "attributes": [
        {
          "name": "show-previous-next",
          "description": "show or hide (i.e. generate) previous and next buttons,\ndefault value is false, controls are not generated",
          "type": "boolean"
        },
        {
          "name": "total",
          "description": "total number of pages",
          "type": "number",
          "default": "0"
        },
        {
          "name": "start",
          "description": "start page",
          "type": "number",
          "default": "1"
        },
        {
          "name": "per-page",
          "description": "amount of entries per page",
          "type": "number",
          "default": "10"
        },
        {
          "name": "page",
          "description": "the current page",
          "type": "number",
          "default": "1"
        },
        {
          "name": "page-count",
          "description": "the amount of pages needed for all items,\ncalculated from total / perPage",
          "type": "number",
          "default": "10"
        },
        {
          "name": "range",
          "description": "the amount of page numbers shown within the component",
          "type": "number",
          "default": "5"
        },
        {
          "name": "pages",
          "description": "todo:",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "found-label",
          "description": "i18n key to use for looking up the message showing number of items in list\nor fixed label to display",
          "type": "string",
          "default": "\"browse.items\""
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "showPreviousNext",
          "attribute": "show-previous-next",
          "description": "show or hide (i.e. generate) previous and next buttons,\ndefault value is false, controls are not generated",
          "type": "boolean"
        },
        {
          "name": "total",
          "attribute": "total",
          "description": "total number of pages",
          "type": "number",
          "default": "0"
        },
        {
          "name": "start",
          "attribute": "start",
          "description": "start page",
          "type": "number",
          "default": "1"
        },
        {
          "name": "perPage",
          "attribute": "per-page",
          "description": "amount of entries per page",
          "type": "number",
          "default": "10"
        },
        {
          "name": "page",
          "attribute": "page",
          "description": "the current page",
          "type": "number",
          "default": "1"
        },
        {
          "name": "pageCount",
          "attribute": "page-count",
          "description": "the amount of pages needed for all items,\ncalculated from total / perPage",
          "type": "number",
          "default": "10"
        },
        {
          "name": "range",
          "attribute": "range",
          "description": "the amount of page numbers shown within the component",
          "type": "number",
          "default": "5"
        },
        {
          "name": "pages",
          "attribute": "pages",
          "description": "todo:",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "foundLabel",
          "attribute": "found-label",
          "description": "i18n key to use for looking up the message showing number of items in list\nor fixed label to display",
          "type": "string",
          "default": "\"browse.items\""
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-load",
          "description": "Fires when user selects new page to show"
        },
        {
          "name": "pb-paginate",
          "description": "Fires when user selects new page to show"
        },
        {
          "name": "pb-results-received",
          "description": "When received, recalculates page ranges to display according to the parameters received"
        }
      ],
      "cssParts": [
        {
          "name": "count",
          "description": "the span displaying the number of items"
        }
      ]
    },
    {
      "name": "pb-panel",
      "path": "./src/pb-panel.js",
      "description": "A container for different views. Only one view will be shown at a time.\nProvides a dropdown for the user to switch between views. Views are\nlazy loaded and should be provided as one or more `<template>` elements.\nEach `<template>` may have a title attribute to specify the title to be shown\nfor it in the dropdown.",
      "attributes": [
        {
          "name": "active",
          "description": "the index of the active view",
          "type": "number",
          "default": "0"
        },
        {
          "name": "label",
          "description": "the label displayed above the dropdown for selecting the view to show",
          "type": "string",
          "default": "\"View\""
        },
        {
          "name": "panels",
          "description": "a name for each available panel, to be displayed in the dropdown. If not set,\neach template will be checked for a title attribute, which will be taken as name.",
          "type": "array"
        },
        {
          "name": "draggable",
          "description": "if set, the panel can be dragged to another position in the grid. A button will\nbe added to the toolbar to allow dragging.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "active",
          "attribute": "active",
          "description": "the index of the active view",
          "type": "number",
          "default": "0"
        },
        {
          "name": "label",
          "attribute": "label",
          "description": "the label displayed above the dropdown for selecting the view to show",
          "type": "string",
          "default": "\"View\""
        },
        {
          "name": "panels",
          "attribute": "panels",
          "description": "a name for each available panel, to be displayed in the dropdown. If not set,\neach template will be checked for a title attribute, which will be taken as name.",
          "type": "array"
        },
        {
          "name": "position",
          "type": "number",
          "default": "-1"
        },
        {
          "name": "draggable",
          "attribute": "draggable",
          "description": "if set, the panel can be dragged to another position in the grid. A button will\nbe added to the toolbar to allow dragging.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-panel",
          "description": "Fired whenever the component switches to a different content panel. Used by `pb-grid` to update its state."
        },
        {
          "name": "pb-refresh",
          "description": "Fired after a new content panel is shown to allow connected components to refresh."
        },
        {
          "name": "pb-drop"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "unnamed default slot for content"
        },
        {
          "name": "toolbar",
          "description": "toolbar area"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-panel-max-height",
          "description": "The max height of the panel content. Set to enable scrolling."
        }
      ]
    },
    {
      "name": "pb-popover",
      "path": "./src/pb-popover.js",
      "description": "Show a popover. It may either\n\n1. be attached to another element on the page which serves as a trigger. For this the\n`for` property must be specified and should contain the ID of the trigger element.\nThe whole content of the `pb-popover` element will be shown in the popup.\n\n2. if no `for` property is specified, the `pb-popover` acts itself as the trigger. The trigger\ntext is either taken from a slot named `default` - or the default slot (i.e. the content of the element).\nThe content to show in the popup should be supplied in a slot named `alternate`. It is recommended to use an\nHTML `template` to specify the alternate, so it is ignored by the browser:\n\n```html\n<pb-popover theme=\"material\">\n     <span slot=\"default\">ipsum dolor sit amet</span>\n     <template slot=\"alternate\">\n         <p>At vero eos et <strong>accusam</strong> et justo duo dolores<br>\n         et ea rebum.</p>\n     </template>\n</pb-popover>\n```\n\nIf you would like popovers to contain nested popovers, choose approach 1 above and use `for`.\n\nIf property `persistent` is true, the popover will be shown\non click. Otherwise display a tooltip on mouseover.\n\n`pb-popover` uses the tippy.js library for the popup.\n\n## Styling\n\nWhen showing the popup, the popup content will either be added to the parent shadow DOM - if the `pb-popover`\nis located inside the shadow DOM of another element like `pb-view`; or the document body. This has an\neffect on where CSS styles can be defined: within a `pb-view`, only the styles specified inside the\nCSS attached to the ODD are applied.",
      "attributes": [
        {
          "name": "remote",
          "description": "An optional URL to asynchronously load the popover's content from. Content will\nbe loaded after the popover is displayed. The downloaded HTML content will replace the text set via the alternate slot.",
          "type": "String"
        },
        {
          "name": "persistent",
          "description": "If true, show the 'hand' cursor when hovering over the link; `trigger` will be set to 'click'\nunless defined otherwise; clicking anywhere on the page will close the popup.",
          "type": "Boolean",
          "default": "false"
        },
        {
          "name": "trigger",
          "description": "Defines one or more actions (space separated) which should cause\nthe popover to show. If property `persistent` is set, `trigger` will by default be set to `click`.",
          "type": "\"click\" | \"mouseenter\" | \"focus\" | \"focusin\""
        },
        {
          "name": "for",
          "description": "The id of a trigger element (e.g. a link) to which the popover will\nbe attached. If not set, the trigger is the pb-popover itself.",
          "type": "String"
        },
        {
          "name": "theme",
          "description": "The tippy theme to use.",
          "type": "\"material\" | \"light\" | \"translucent\" | \"light-border\""
        },
        {
          "name": "placement",
          "description": "Preferred placement of the popup.\nDefault is 'auto'.",
          "type": "\"auto\" | \"top\" | \"bottom\" | \"left\" | \"right\""
        },
        {
          "name": "touch",
          "type": "string"
        },
        {
          "name": "fallback-placement",
          "description": "Fallback placement if there is more space on another side.\nAccepts same values as `placement`. Separate by space if more than one.",
          "type": "String"
        },
        {
          "name": "popup-class",
          "description": "Additional class names which will be added to the popup element.\nUse this to apply a specific style to certain popovers, but not others.",
          "type": "String"
        },
        {
          "name": "stop-propagation",
          "description": "If you have nested pb-popover, set this property to\nonly show the innermost popover when triggered",
          "type": "Boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "remote",
          "attribute": "remote",
          "description": "An optional URL to asynchronously load the popover's content from. Content will\nbe loaded after the popover is displayed. The downloaded HTML content will replace the text set via the alternate slot.",
          "type": "String"
        },
        {
          "name": "alternate",
          "description": "Returns the root element of the alternate content currently shown in the popover.\nThis will be initialized from either the default slot or the slot with name 'alternate' (if present).\nThe returned element is always a `div` and can be modified."
        },
        {
          "name": "persistent",
          "attribute": "persistent",
          "description": "If true, show the 'hand' cursor when hovering over the link; `trigger` will be set to 'click'\nunless defined otherwise; clicking anywhere on the page will close the popup.",
          "type": "Boolean",
          "default": "false"
        },
        {
          "name": "trigger",
          "attribute": "trigger",
          "description": "Defines one or more actions (space separated) which should cause\nthe popover to show. If property `persistent` is set, `trigger` will by default be set to `click`.",
          "type": "\"click\" | \"mouseenter\" | \"focus\" | \"focusin\""
        },
        {
          "name": "for",
          "attribute": "for",
          "description": "The id of a trigger element (e.g. a link) to which the popover will\nbe attached. If not set, the trigger is the pb-popover itself.",
          "type": "String"
        },
        {
          "name": "theme",
          "attribute": "theme",
          "description": "The tippy theme to use.",
          "type": "\"material\" | \"light\" | \"translucent\" | \"light-border\""
        },
        {
          "name": "placement",
          "attribute": "placement",
          "description": "Preferred placement of the popup.\nDefault is 'auto'.",
          "type": "\"auto\" | \"top\" | \"bottom\" | \"left\" | \"right\""
        },
        {
          "name": "touch",
          "attribute": "touch",
          "type": "string"
        },
        {
          "name": "fallbackPlacement",
          "attribute": "fallback-placement",
          "description": "Fallback placement if there is more space on another side.\nAccepts same values as `placement`. Separate by space if more than one.",
          "type": "String"
        },
        {
          "name": "popupClass",
          "attribute": "popup-class",
          "description": "Additional class names which will be added to the popup element.\nUse this to apply a specific style to certain popovers, but not others.",
          "type": "String"
        },
        {
          "name": "stopPropagation",
          "attribute": "stop-propagation",
          "description": "If you have nested pb-popover, set this property to\nonly show the innermost popover when triggered",
          "type": "Boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "slots": [
        {
          "name": "default",
          "description": "the content to show for the trigger. If not specified, this will fall back to the unnamed slot."
        },
        {
          "name": "alternate",
          "description": "the content to show in the popup"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-popover-theme",
          "description": "popup theme to use. One of 'material', 'light', 'translucent' or 'light-border'",
          "default": "\"none\""
        },
        {
          "name": "--pb-popover-link-decoration",
          "description": "text decoration for the trigger",
          "default": "\"inherit\""
        },
        {
          "name": "--pb-popover-max-height",
          "description": "limit the maximum height of the popup",
          "default": "\"calc(100vh - 60px)\""
        },
        {
          "name": "--pb-popover-min-height",
          "description": "set the minimum height of the popup"
        },
        {
          "name": "--pb-popover-max-width",
          "description": "limit the max width of the popup"
        },
        {
          "name": "--pb-popover-min-width",
          "description": "set the minimum width of the popup"
        },
        {
          "name": "--pb-popover-color",
          "description": "Color of the popup text"
        },
        {
          "name": "--pb-popover-placement",
          "description": "Preferred popup placement, see property `placement`",
          "default": "\"auto\""
        },
        {
          "name": "--pb-popover-fallback-placement",
          "description": "Fallback placements separated by space"
        },
        {
          "name": "--pb-popover-trigger",
          "description": "define the trigger action, same as property `trigger`"
        },
        {
          "name": "--pb-popover-persistent",
          "description": "switch to persistent behaviour, see property `persistent`"
        }
      ],
      "cssParts": [
        {
          "name": "trigger",
          "description": "the inline element used as trigger"
        }
      ]
    },
    {
      "name": "pb-print-preview",
      "path": "./src/pb-print-preview.js",
      "description": "Generates a HTML print preview of a document using the [pagedjs](https://pagedjs.org/) polyfill\nto support CSS Paged Media.",
      "attributes": [
        {
          "name": "src",
          "description": "ID of the pb-document this element is connected to. The document path to\nload will be taken from the pb-document.",
          "type": "string"
        },
        {
          "name": "styles",
          "description": "Additional CSS stylesheets to be loaded. Relative URLs will be resolved\nrelative to the API endpoint.",
          "type": "string"
        },
        {
          "name": "url",
          "description": "The generated API URL from which the HTML content will be loaded.\nReadonly. This excludes the paged.js styles and scripts, so you can\nuse the URL with other tools.",
          "type": "string",
          "default": "\"about:blank\""
        },
        {
          "name": "raw",
          "description": "Set to disable the pagejs polyfill, i.e. show the HTML as delivered from the server.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "src",
          "attribute": "src",
          "description": "ID of the pb-document this element is connected to. The document path to\nload will be taken from the pb-document.",
          "type": "string"
        },
        {
          "name": "styles",
          "attribute": "styles",
          "description": "Additional CSS stylesheets to be loaded. Relative URLs will be resolved\nrelative to the API endpoint.",
          "type": "string"
        },
        {
          "name": "url",
          "attribute": "url",
          "description": "The generated API URL from which the HTML content will be loaded.\nReadonly. This excludes the paged.js styles and scripts, so you can\nuse the URL with other tools.",
          "type": "string",
          "default": "\"about:blank\""
        },
        {
          "name": "raw",
          "attribute": "raw",
          "description": "Set to disable the pagejs polyfill, i.e. show the HTML as delivered from the server.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ]
    },
    {
      "name": "pb-progress",
      "path": "./src/pb-progress.js",
      "description": "A progress bar which becomes active when signal `pb-start-update` is\nbeing sent and is deactivated on `pb-end-update`.\n\nUses a native `<progress>` element.",
      "attributes": [
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-start-update",
          "description": "When received, activates the progress bar"
        },
        {
          "name": "pb-end-update",
          "description": "When received, disables the progress bar"
        }
      ]
    },
    {
      "name": "pb-repeat",
      "path": "./src/pb-repeat.js",
      "description": "Simple component to create repeatable form elements. It expects\nan HTML template containing arbitrary HTML. For every repeated instance,\nthe template will be copied. All elements with a `name` attribute within the\ncopied template will be renamed to have an `[idx]` suffix denoting their position\nwithin the instance list.\n\nThe element stamps the instances into light DOM, so a form wrapping around it will see\nthe form controls. One can therefore use a normal form submit.",
      "attributes": [
        {
          "name": "initial",
          "description": "The initial number of (empty) instances to be shown\n(1 by default).",
          "type": "number",
          "default": "1"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "initial",
          "attribute": "initial",
          "description": "The initial number of (empty) instances to be shown\n(1 by default).",
          "type": "number",
          "default": "1"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ]
    },
    {
      "name": "pb-restricted",
      "path": "./src/pb-restricted.js",
      "description": "Show content if the user is logged in. Optionally requires the user\nto be member of a specific group. Listens for the `pb-login` event\ntriggered by `pb-login` to be notified of user changes.\n\nYou may specify fallback content to be shown if the user is not logged in\nwithin a slot named 'fallback'.",
      "attributes": [
        {
          "name": "login",
          "description": "Id of the pb-login element to connect to",
          "type": "string",
          "deprecatedMessage": "no longer used"
        },
        {
          "name": "group",
          "description": "If set, requires the logged in user to be member of\nthe given group.\nMultiple groups can be defined separating items by space and/or comma.",
          "type": "string"
        },
        {
          "name": "show",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "login",
          "attribute": "login",
          "description": "Id of the pb-login element to connect to",
          "type": "string",
          "deprecatedMessage": "no longer used"
        },
        {
          "name": "group",
          "attribute": "group",
          "description": "If set, requires the logged in user to be member of\nthe given group.\nMultiple groups can be defined separating items by space and/or comma.",
          "type": "string"
        },
        {
          "name": "show",
          "attribute": "show",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-login",
          "description": "When received, changes the state of the component according to the user info received"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "unnamed default slot"
        },
        {
          "name": "fallback",
          "description": "optional content to show if user is not logged in"
        }
      ]
    },
    {
      "name": "pb-search",
      "path": "./src/pb-search.js",
      "description": "Implements a basic search form, which can be extended with additional inputs.",
      "attributes": [
        {
          "name": "action",
          "type": "string"
        },
        {
          "name": "current-doc",
          "type": "string"
        },
        {
          "name": "subforms",
          "type": "string"
        },
        {
          "name": "source",
          "description": "Optional URL to query for suggestions. If relative, it is interpreted\nrelative to the endpoint defined on a surrounding `pb-page`.\n\nUpon autocomplete, the current input by the user will be sent with a query parameter\n`query`. The name/values of form controls nested within `pb-search` or subforms will also be\nappended to the request as parameters. This allows the server side code to distinguish\ndifferent states.",
          "type": "string"
        },
        {
          "name": "name",
          "type": "string",
          "default": "\"query\""
        },
        {
          "name": "value",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "redirect",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "submit-on-load",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "place-holder",
          "type": "string",
          "default": "\"search.placeholder\""
        },
        {
          "name": "disable-autocomplete",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "start",
          "type": "number",
          "default": "1"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "action",
          "attribute": "action",
          "type": "string"
        },
        {
          "name": "currentDoc",
          "attribute": "current-doc",
          "type": "string"
        },
        {
          "name": "subforms",
          "attribute": "subforms",
          "type": "string"
        },
        {
          "name": "source",
          "attribute": "source",
          "description": "Optional URL to query for suggestions. If relative, it is interpreted\nrelative to the endpoint defined on a surrounding `pb-page`.\n\nUpon autocomplete, the current input by the user will be sent with a query parameter\n`query`. The name/values of form controls nested within `pb-search` or subforms will also be\nappended to the request as parameters. This allows the server side code to distinguish\ndifferent states.",
          "type": "string"
        },
        {
          "name": "name",
          "attribute": "name",
          "type": "string",
          "default": "\"query\""
        },
        {
          "name": "value",
          "attribute": "value",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "redirect",
          "attribute": "redirect",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "submitOnLoad",
          "attribute": "submit-on-load",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "placeHolder",
          "attribute": "place-holder",
          "type": "string",
          "default": "\"search.placeholder\""
        },
        {
          "name": "disableAutocomplete",
          "attribute": "disable-autocomplete",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "start",
          "attribute": "start",
          "type": "number",
          "default": "1"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-load",
          "description": "Fired to perform the actual search with parameters passed to the request"
        },
        {
          "name": "pb-paginate",
          "description": "When received, triggers the search again with the new value of the start property"
        },
        {
          "name": "pb-search-resubmit",
          "description": "When received, triggers the search again"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "default unnamed slot"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-search-label-color",
          "description": "Color of the label and underline"
        },
        {
          "name": "--pb-search-input-color",
          "description": "Text color for input field"
        },
        {
          "name": "--pb-search-focus-color",
          "description": "Color for label and underline if input has focus"
        },
        {
          "name": "--pb-search-suggestions-color",
          "description": "Color for the labels shown in the suggestions dropdown"
        },
        {
          "name": "--pb-search-suggestions-background",
          "description": "Background for the suggestions dropdown"
        }
      ]
    },
    {
      "name": "pb-select-feature",
      "path": "./src/pb-select-feature.js",
      "description": "Similar to `pb-toggle-feature` but allows you to choose from a list of defined states instead of a simple\non/off toggle. Like `pb-toggle-feature` it can change state server-side as well as client-side.\n\nThe list of states is passed as a JSON array to property `items`:\n\n# Server-side\n\nProperties to be passed to the server are specified as follows:\n\n```javascript\n[\n     {\"name\": \"Diplomatic View\", \"properties\": {\"mode\": \"diplomatic\", \"view\": \"page\"}},\n     {\"name\": \"Normalized View\", \"properties\": {\"mode\": \"norm\", \"view\": \"single\"}}\n]\n```\n\nIf the `name` property references the path to a translated label, the translation will be used instead.\n# Client-side\n\n```javascript\n[\n     {\"name\": \"Diplomatic View\", \"selectors\": [{\"selector\": \".choice,.choice-alternate,br\", \"state\": false},{\"selector\": \".tei-foreign,pb-highlight,pb-popover\", \"command\": \"disable\"}]},\n     {\"name\": \"Normalized View\", \"selectors\": [{\"selector\": \".choice,.choice-alternate,br\", \"state\": true},{\"selector\": \".tei-foreign,pb-highlight,pb-popover\", \"command\": \"disable\"}]},\n     {\"name\": \"Plain Reading View\", \"selectors\": [{\"selector\": \".choice,.choice-alternate,br\", \"state\": true}, {\"selector\": \".tei-foreign,pb-highlight,pb-popover\", \"command\": \"disable\", \"state\": true}]}\n]\n```\n\nEach item in the `selectors` property above defines either a state or a command. *state* will simply add\na css class `.toggle` to the target element when true. If *command* is set to 'disable', it will entirely disable\nthe functionality of selected elements - provided that they are\npublisher components implementing the corresponding `command` method of `pb-mixin`.\n\nClient-side you may also pass an optional property `\"global\": true` to toggle the state of elements which reside\nin the surrounding HTML context below `pb-page` (means: elements which are not inside a `pb-view` or `pb-load`).",
      "attributes": [
        {
          "name": "name",
          "description": "The name of the feature (required). This will correspond to the name of the custom parameter\npassed to the ODD.",
          "type": "string"
        },
        {
          "name": "selected",
          "type": "number"
        },
        {
          "name": "items",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "label",
          "description": "The label to display on top of the drop down",
          "type": "string",
          "default": "\"document.selectFeature\""
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "name",
          "attribute": "name",
          "description": "The name of the feature (required). This will correspond to the name of the custom parameter\npassed to the ODD.",
          "type": "string"
        },
        {
          "name": "selected",
          "attribute": "selected",
          "type": "number"
        },
        {
          "name": "initializing",
          "type": "boolean",
          "default": "true"
        },
        {
          "name": "items",
          "attribute": "items",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "label",
          "attribute": "label",
          "description": "The label to display on top of the drop down",
          "type": "string",
          "default": "\"document.selectFeature\""
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-toggle",
          "description": "Fired when a feature is selected from the dropdown and sends the selected properties"
        },
        {
          "name": "pb-global-toggle"
        }
      ]
    },
    {
      "name": "pb-select-odd",
      "path": "./src/pb-select-odd.js",
      "description": "`pb-select-odd`: Switch between available ODDs.\nIt loads the list of ODDs from `components-odd.xql`.\nEmits a `pb-refresh` event to subscribed views.",
      "attributes": [
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "odd",
          "description": "Currently selected ODD. If this property is set, the component\nwill immediately load the list of ODDs from the server and select\nthe given ODD.",
          "type": "string"
        },
        {
          "name": "label",
          "description": "The label to show on top of the dropdown menu",
          "type": "string",
          "default": "\"document.selectODD\""
        },
        {
          "name": "odds",
          "description": "The ODDs to show.",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "name",
          "attribute": "name",
          "type": "string"
        },
        {
          "name": "odd",
          "attribute": "odd",
          "description": "Currently selected ODD. If this property is set, the component\nwill immediately load the list of ODDs from the server and select\nthe given ODD.",
          "type": "string"
        },
        {
          "name": "label",
          "attribute": "label",
          "description": "The label to show on top of the dropdown menu",
          "type": "string",
          "default": "\"document.selectODD\""
        },
        {
          "name": "odds",
          "attribute": "odds",
          "description": "The ODDs to show.",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-refresh",
          "description": "Fires a refresh event to subscribed views after a different ODD has been selected for display."
        },
        {
          "name": "pb-update",
          "description": "When received, resets the ODD selected to the one passed in the event"
        }
      ]
    },
    {
      "name": "pb-select-template",
      "path": "./src/pb-select-template.js",
      "description": "`pb-select-template`: Switch between available page templates.\nIt loads the list of templates from `components-list-templates.xql`.\nEmits a page reload on selection.",
      "attributes": [
        {
          "name": "template",
          "description": "Currently selected ODD. If this property is set, the component\nwill immediately load the list of ODDs from the server and select\nthe given ODD.",
          "type": "string"
        },
        {
          "name": "label",
          "description": "The label to show on top of the dropdown menu",
          "type": "string",
          "default": "\"document.selectTemplate\""
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "template",
          "attribute": "template",
          "description": "Currently selected ODD. If this property is set, the component\nwill immediately load the list of ODDs from the server and select\nthe given ODD.",
          "type": "string"
        },
        {
          "name": "label",
          "attribute": "label",
          "description": "The label to show on top of the dropdown menu",
          "type": "string",
          "default": "\"document.selectTemplate\""
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ]
    },
    {
      "name": "pb-select",
      "path": "./src/pb-select.js",
      "description": "Replacement for an HTML select element with additional features:\n\n1. item list can be loaded from remote endpoint via AJAX\n2. may contain additional nested form in the slot\n   named `subform`, whose values will be sent with the AJAX request",
      "attributes": [
        {
          "name": "label",
          "description": "Label to display above the select or inside if nothing is selected",
          "type": "string"
        },
        {
          "name": "name",
          "description": "name used when submitted inside a form",
          "type": "string"
        },
        {
          "name": "source",
          "description": "Optional URL to query for suggestions. If relative, it is interpreted\nrelative to the endpoint defined on a surrounding `pb-page`.",
          "type": "string"
        },
        {
          "name": "multi",
          "type": "boolean"
        },
        {
          "name": "value",
          "description": "Initial value to select. If not set, no item will be selected",
          "type": "string"
        },
        {
          "name": "values",
          "description": "If `multi` is set, specify initial values via this property\ninstead of using `value`",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "label",
          "attribute": "label",
          "description": "Label to display above the select or inside if nothing is selected",
          "type": "string"
        },
        {
          "name": "name",
          "attribute": "name",
          "description": "name used when submitted inside a form",
          "type": "string"
        },
        {
          "name": "source",
          "attribute": "source",
          "description": "Optional URL to query for suggestions. If relative, it is interpreted\nrelative to the endpoint defined on a surrounding `pb-page`.",
          "type": "string"
        },
        {
          "name": "multi",
          "attribute": "multi",
          "type": "boolean"
        },
        {
          "name": "value",
          "attribute": "value",
          "description": "Initial value to select. If not set, no item will be selected",
          "type": "string"
        },
        {
          "name": "values",
          "attribute": "values",
          "description": "If `multi` is set, specify initial values via this property\ninstead of using `value`",
          "type": "array",
          "default": "[]"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "change"
        }
      ],
      "slots": [
        {
          "name": "",
          "description": "a static list of paper-item to be shown as options. each paper-item should have a value attribute"
        },
        {
          "name": "subform",
          "description": "additional form controls"
        }
      ],
      "cssParts": [
        {
          "name": "label",
          "description": "the label shown above a multi-selection box (does not apply to single-selection)"
        }
      ]
    },
    {
      "name": "pb-split-list",
      "path": "./src/pb-split-list.js",
      "description": "Implements a list which is split into different categories\n(e.g. letters of the alphabet, countries ...).\nOnly one category is shown at a time unless the server reports\nno categories (e.g. if the number of items to display goes below\na defined threshold).\n\nThe server-side API endpoint should return a JSON object with two\nproperties:\n\n+ `categories`: an array of category descriptions: each item should\n be an object with two properties: `category` - containing the name of the category\n and `count` - containing a count of items available under this category.\n+ `items`: an array with the items to be shown for the currently selected\n category. Those may contain HTML markup.\n\nSample JSON object for pb-split-list\n```javascript\n{\n   \"items\": [\n       \"<span><a href='Abegg-Arter Carl?category=A&amp;view=correspondents&amp;search='>Abegg-Arter, Carl</a><span class='dates'> (1836–1912)</span></span>\",\n       \"<span><a href='Abegg Hans Heinrich?category=A&amp;view=correspondents&amp;search='>Abegg, Hans Heinrich</a><span class='dates'> (1805–1874)</span></span>\",\n       \"<span><a href='Abegg Jakob?category=A&amp;view=correspondents&amp;search='>Abegg, Jakob</a><span class='dates'> (1801–1871)</span></span>\",\n       \"<span><a href='Abys Raget?category=A&amp;view=correspondents&amp;search='>Abys, Raget</a><span class='dates'> (1790–1861)</span></span>\",\n       \"<span><a href='Aebli Johann Peter?category=A&amp;view=correspondents&amp;search='>Aebli, Johann Peter</a><span class='dates'> (1804–1879)</span></span>\",\n       \"<span><a href='Aepli Arnold Otto?category=A&amp;view=correspondents&amp;search='>Aepli, Arnold Otto</a><span class='dates'> (1816–1897)</span></span>\",\n       ...\n   ],\n   \"categories\": [\n       {\n           \"category\": \"A\",\n           \"count\": 22\n       },\n       {\n           \"category\": \"B\",\n           \"count\": 77\n       },\n       {\n           \"category\": \"C\",\n           \"count\": 19\n       },\n     ...\n   ]\n}\n```\n\nSample Usage\n```xml\n<pb-split-list url=\"api/people\" subforms=\"#options\" selected=\"A\" emit=\"transcription\" subscribe=\"transcription\"></pb-split-list>\n```\nSee https://www.briefedition.alfred-escher.ch/kontexte/personen/?category=A&search=&view=correspondents for a running sample. The source code of the webpage is here: https://github.com/stazh/briefedition-escher. Relevant files are:\n- [templates/index.html](https://github.com/stazh/briefedition-escher/blob/master/templates/index.html#L223) - usage of pb-timeline\n- [modules/custom-api.json](https://github.com/stazh/briefedition-escher/blob/master/modules/custom-api.json#L1098) - `/api/people` endpoint delivering required JSON object",
      "attributes": [
        {
          "name": "url",
          "description": "Server-side API endpoint to retrieve items from",
          "type": "string"
        },
        {
          "name": "selected",
          "description": "The initially selected category",
          "type": "string"
        },
        {
          "name": "subforms",
          "description": "A CSS selector pointing to one or more `pb-custom-form`\ninstances. The element will collect additional parameters\nfrom those forms and includes them in the request to the server",
          "type": "string"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "url",
          "attribute": "url",
          "description": "Server-side API endpoint to retrieve items from",
          "type": "string"
        },
        {
          "name": "selected",
          "attribute": "selected",
          "description": "The initially selected category",
          "type": "string"
        },
        {
          "name": "subforms",
          "attribute": "subforms",
          "description": "A CSS selector pointing to one or more `pb-custom-form`\ninstances. The element will collect additional parameters\nfrom those forms and includes them in the request to the server",
          "type": "string"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-submit",
          "description": "when received, submit a request to the server and refresh"
        },
        {
          "name": "pb-start-update",
          "description": "sent before the element sends the request to the server"
        },
        {
          "name": "pb-end-update",
          "description": "sent after new content has been received"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-categorized-list-columns",
          "description": "the number of columns to display (default: 2)"
        }
      ]
    },
    {
      "name": "pb-svg",
      "path": "./src/pb-svg.js",
      "description": "Show an SVG image with zoom and pan functionality. The image URL may\neither be specified via the `url` property or an `pb-show-annotation` event\nsent to this component. A relative URL will be resolved against the current API context.",
      "attributes": [
        {
          "name": "url",
          "description": "The URL to load the SVG from.",
          "type": "string"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "url",
          "attribute": "url",
          "description": "The URL to load the SVG from.",
          "type": "string"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-show-annotation",
          "description": "When received, loads the image from the URL passed in property `file`\nwithin the event"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-svg-height",
          "description": "Height of the SVG element"
        },
        {
          "name": "--pb-svg-width",
          "description": "Width of the SVG element"
        }
      ]
    },
    {
      "name": "pb-table-column",
      "path": "./src/pb-table-column.js",
      "description": "Defines a column within `pb-table-grid`.",
      "attributes": [
        {
          "name": "label",
          "description": "Column heading to display",
          "type": "string",
          "default": "\"no-label\""
        },
        {
          "name": "property",
          "description": "Name of the JSON property containing the data",
          "type": "string"
        },
        {
          "name": "sort",
          "description": "Should the column support sorting?",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "width",
          "description": "Optional fixed width of the column (e.g. '200px' or '30%')",
          "type": "string"
        }
      ],
      "properties": [
        {
          "name": "label",
          "attribute": "label",
          "description": "Column heading to display",
          "type": "string",
          "default": "\"no-label\""
        },
        {
          "name": "property",
          "attribute": "property",
          "description": "Name of the JSON property containing the data",
          "type": "string"
        },
        {
          "name": "sort",
          "attribute": "sort",
          "description": "Should the column support sorting?",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "width",
          "attribute": "width",
          "description": "Optional fixed width of the column (e.g. '200px' or '30%')",
          "type": "string"
        }
      ]
    },
    {
      "name": "pb-table-grid",
      "path": "./src/pb-table-grid.js",
      "description": "A table grid based on [gridjs](https://gridjs.io/), which loads its data from a server endpoint\nspecified in `source`. If `source` is a relative URI, it will be resolved relative to the\nTEI Publisher endpoint.\n\nThe JSON data returned by the endpoint should be an object with two properties:\n\n* `count`: the overall number of rows available on the server\n* `results`: an array containing each record as an object\n\nThe parameters send to the server are as follows:\n\n\nParameter | Description\n---------|----------\nlimit | number of records to return for each page\nstart | start offset from which to return records\norder | the id of the column to sort by\ndir | sort direction: either 'asc' or 'desc'\nsearch | an optional search string entered by the user\n\nTable columns are configured via nested `<pb-table-column>` elements:\n\n```html\n<pb-table-column label=\"Name\" property=\"name\" sort width=\"33%\"></pb-table-column>\n<pb-table-column label=\"Born\" property=\"birth\"></pb-table-column>\n<pb-table-column label=\"Died\" property=\"death\"></pb-table-column>\n```",
      "attributes": [
        {
          "name": "source",
          "description": "URI of the server-side endpoint to retrieve data from.\nRelative URIs are resolved relative to the configured TEI Publisher endpoint.",
          "type": "string"
        },
        {
          "name": "subforms",
          "type": "string"
        },
        {
          "name": "css-path",
          "description": "Path to the gridjs theme CSS files.",
          "type": "string",
          "default": "\"../css/gridjs\""
        },
        {
          "name": "resizable",
          "description": "If specified, columns (without a fixed width) will be resizable.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "search",
          "description": "If specified, enable server-side search.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "pagination-top",
          "description": "If specified, render the pagination controls above the table instead of below.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "per-page",
          "type": "number",
          "default": "10"
        },
        {
          "name": "height",
          "type": "string"
        },
        {
          "name": "visible-columns",
          "description": "Optional list of column ids/properties to show. If empty or undefined, all columns are visible.",
          "type": "array"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "source",
          "attribute": "source",
          "description": "URI of the server-side endpoint to retrieve data from.\nRelative URIs are resolved relative to the configured TEI Publisher endpoint.",
          "type": "string"
        },
        {
          "name": "subforms",
          "attribute": "subforms",
          "type": "string"
        },
        {
          "name": "cssPath",
          "attribute": "css-path",
          "description": "Path to the gridjs theme CSS files.",
          "type": "string",
          "default": "\"../css/gridjs\""
        },
        {
          "name": "resizable",
          "attribute": "resizable",
          "description": "If specified, columns (without a fixed width) will be resizable.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "search",
          "attribute": "search",
          "description": "If specified, enable server-side search.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "paginationTop",
          "attribute": "pagination-top",
          "description": "If specified, render the pagination controls above the table instead of below.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "perPage",
          "attribute": "per-page",
          "type": "number",
          "default": "10"
        },
        {
          "name": "height",
          "attribute": "height",
          "type": "string"
        },
        {
          "name": "fixedHeader",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "visibleColumns",
          "attribute": "visible-columns",
          "description": "Optional list of column ids/properties to show. If empty or undefined, all columns are visible.",
          "type": "array"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ]
    },
    {
      "name": "pb-tabs",
      "path": "./src/pb-tabs.js",
      "description": "Combines a row of tabs with associated content.",
      "attributes": [
        {
          "name": "selected",
          "type": "number",
          "default": "0"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "selected",
          "attribute": "selected",
          "type": "number",
          "default": "0"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-tab",
          "description": "fired if selected tab changes. Details contain number of\nselected tab in propery `selected`."
        }
      ],
      "slots": [
        {
          "name": "tab",
          "description": "tab area"
        },
        {
          "name": "page",
          "description": "page area"
        }
      ],
      "cssParts": [
        {
          "name": "pages",
          "description": "wrapper around the tab pages"
        }
      ]
    },
    {
      "name": "pb-tify",
      "path": "./src/pb-tify.js",
      "description": "Viewer for IIIF presentation manifests based on https://tify.rocks/.\nRequires a proper manifest listing the resources to show. `pb-facs-link`\ncan be used to navigate to a page.",
      "attributes": [
        {
          "name": "manifest",
          "description": "URL pointing to a IIIF presentation manifest. Relative paths\nare interpreted relative to the API endpoint.",
          "type": "string"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "manifest",
          "attribute": "manifest",
          "description": "URL pointing to a IIIF presentation manifest. Relative paths\nare interpreted relative to the API endpoint.",
          "type": "string"
        },
        {
          "name": "cssPath",
          "type": "string",
          "default": "\"../css/tify\""
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-refresh",
          "description": "fired if user navigates to another page within the viewer. Parameters to be passed\nwith the event will be copied from the `@id` URL declared in the `rendering` property of the canvas."
        },
        {
          "name": "pb-show-annotation",
          "description": "when received, opens the the manifest given in `file` and the page denoted by the\n`order` property in the event (see `pb-facs-link`). Page counts start at 1."
        }
      ]
    },
    {
      "name": "pb-timeline",
      "path": "./src/pb-timeline.js",
      "description": "A timeline component to display time series data in a bar chart like view.\n\nTime series data can be displayed in one of 6 different scales:\n\n- by decade (10Y)\n- by 5 years (5Y)\n- by years (Y)\n- by month (M)\n- by week (W)\n- by day (D)\n\nThe endpoint is expected to return a JSON object. Each property should either be a date or the special\nmarker `?`, which indicates undated resources.\nThe value associated with each entry\nshould either correspond to a count of resources or an object with properties `count` and `info`.\n`info` should be an array, containing HTML to be shown in a list within the tooltips.\nExpected JSON:\n```javascript\n{\n \"1852-01-14\": {\n     \"count\": 1,\n     \"info\": [\n       \"<a href='/briefe/B0977' part='tooltip-link'>Alfred Escher an Joseph Wolfgang von Deschwanden, Belvoir (Enge, Zürich), Mittwoch, 14. Januar 1852</a>\"\n    ]\n  },\n\"1874-01-25\": {\n   \"count\": 3,\n    \"info\": [\n        \"<a href='/briefe/B8140' part='tooltip-link'>Alfred Escher an Gustav von Mevissen, Zürich, Sonntag, 25. Januar 1874</a>\",\n        \"<a href='/briefe/B8139' part='tooltip-link'>Alfred Escher an Theodor Weishaupt, Zürich, Sonntag, 25. Januar 1874</a>\",\n        \"<a href='/briefe/B8143' part='tooltip-link'>Alfred Escher an Ludwig August Parcus, Zürich, Sonntag, 25. Januar 1874</a>\"\n    ]\n }\n}\n```\nSample Usage:\n```xml\n<pb-timeline url=\"api/timeline\" scopes=\"['D', 'M', 'Y', '5Y', '10Y']\"\n     resettable=\"\"\n     subscribe=\"docs\" emit=\"timeline\">\n  <span slot=\"label\">Angezeigter Zeitraum: </span>\n</pb-timeline>\n```\nSee https://www.briefedition.alfred-escher.ch/briefe/ for a running sample. The source code of the webpage is here: https://github.com/stazh/briefedition-escher. Relevant files are:\n- [templates/people.html](https://github.com/stazh/briefedition-escher/blob/master/templates/people.html#L91) - usage of pb-timeline\n- [modules/custom-api.json](https://github.com/stazh/briefedition-escher/blob/master/modules/custom-api.json#L1080) - `/api/timeline` endpoint delivering required JSON object",
      "attributes": [
        {
          "name": "start-date",
          "description": "start date for timeline to display",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "end-date",
          "description": "endDate for timeline to display",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "scope",
          "description": "The scope for the timeline. Must be one of the pre-defined scopes.\nIf not set, the component automatically tries to determine the best scope fitting the\ngiven time series.",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "scopes",
          "description": "The scopes to consider for automatic scoping.\n\nDefaults to [\"D\", \"W\", \"M\", \"Y\", \"5Y\", \"10Y\"]",
          "type": "array",
          "default": "[\"D\",\"W\",\"M\",\"Y\",\"5Y\",\"10Y\"]"
        },
        {
          "name": "max-interval",
          "type": "number",
          "default": "60"
        },
        {
          "name": "url",
          "description": "Endpoint to load timeline data from. Expects response to be an\nobject with key value pairs for (date, hits).\n\nWill be reloaded whenever 'start-date' or 'end-date' attributes change.",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "auto",
          "description": "If set, data will be retrieved automatically on first load.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "resettable",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "label"
        },
        {
          "name": "maxHeight",
          "type": "number",
          "default": "80"
        },
        {
          "name": "multiplier",
          "type": "number",
          "default": "0.75"
        },
        {
          "name": "mousedown",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "startDate",
          "attribute": "start-date",
          "description": "start date for timeline to display",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "endDate",
          "attribute": "end-date",
          "description": "endDate for timeline to display",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "scope",
          "attribute": "scope",
          "description": "The scope for the timeline. Must be one of the pre-defined scopes.\nIf not set, the component automatically tries to determine the best scope fitting the\ngiven time series.",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "scopes",
          "attribute": "scopes",
          "description": "The scopes to consider for automatic scoping.\n\nDefaults to [\"D\", \"W\", \"M\", \"Y\", \"5Y\", \"10Y\"]",
          "type": "array",
          "default": "[\"D\",\"W\",\"M\",\"Y\",\"5Y\",\"10Y\"]"
        },
        {
          "name": "maxInterval",
          "attribute": "max-interval",
          "type": "number",
          "default": "60"
        },
        {
          "name": "url",
          "attribute": "url",
          "description": "Endpoint to load timeline data from. Expects response to be an\nobject with key value pairs for (date, hits).\n\nWill be reloaded whenever 'start-date' or 'end-date' attributes change.",
          "type": "string",
          "default": "\"\""
        },
        {
          "name": "auto",
          "attribute": "auto",
          "description": "If set, data will be retrieved automatically on first load.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "resettable",
          "attribute": "resettable",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-timeline-date-changed",
          "description": "Triggered when user clicks on a single entry"
        },
        {
          "name": "pb-timeline-daterange-changed",
          "description": "Triggered when user selects a range of entries"
        },
        {
          "name": "pb-timeline-reset-selection",
          "description": "Requests that the timeline is reset to initial state"
        },
        {
          "name": "pb-timeline-loaded",
          "description": "Timeline was loaded"
        }
      ],
      "slots": [
        {
          "name": "label",
          "description": "Inserted before the label showing the currently displayed time range"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-timeline-height"
        },
        {
          "name": "--pb-timeline-padding"
        },
        {
          "name": "--pb-timeline-color-highlight"
        },
        {
          "name": "--pb-timeline-color-light"
        },
        {
          "name": "--pb-timeline-color-dark"
        },
        {
          "name": "--pb-timeline-color-selected"
        },
        {
          "name": "--pb-timeline-color-bin"
        },
        {
          "name": "--pb-timeline-title-font-size"
        },
        {
          "name": "--pb-timeline-tooltip-font-size"
        },
        {
          "name": "--pb-timeline-tooltip-min-width"
        },
        {
          "name": "--pb-timeline-tooltip-max-width"
        }
      ],
      "cssParts": [
        {
          "name": "label"
        },
        {
          "name": "tooltip"
        },
        {
          "name": "title"
        }
      ]
    },
    {
      "name": "pb-toggle-feature",
      "path": "./src/pb-toggle-feature.js",
      "description": "Enable or disable a particular display feature by setting a predefined or custom parameter.\nToggling display features can be done server-side or client-side.\n\nIt is important that `pb-toggle-feature` emits and subscribes to the same channel as the target `pb-view`.\n\n# Server side toggling\n\nYou may set the following view parameters which correspond to the properties supported by `pb-view`:\n\n| Parameter | Description |\n| ----------------|-------------|\n| odd | the ODD to use |\n| view | the view type: 'page', 'div' or 'single' |\n| columnSeparator | CSS selector to find elements to use as column separator |\n| xpath | XPath expression to select a portion of the text for display |\n\nFor example, one may switch between page-by-page and by-division view using\n\n```html\n<pb-toggle-feature emit=\"transcription\" name=\"view\" on=\"page\" off=\"div\">Page View</pb-toggle-feature>\n```\n\nIt is also possible to set custom parameters, which will be passed to the ODD as user-defined parameters.\nThis can be used e.g. to implement different views on the text, e.g. a 'diplomatic' and a 'normalized' mode. Both\nviews would be backed by the same ODD and processing model, while the passed in parameter\ncan be used to distinguish the modes.\n\nFor example, the following snippet would result in a custom parameter called `mode` with\neither a value of `dipl` or `norm`. Within processing model predicates it could be queried as\n`$parameters?mode='norm'` to check if the normalized version should be output.\n\n```html\n<pb-toggle-feature name=\"mode\" on=\"diplomatic\" off=\"norm\">Diplomatic View</pb-toggle-feature>\n```\n\nBesides setting a single parameter, you may also set multiple\nproperties on the target `pb-view` via the `properties-on` and `properties-off`\nattributes (as an alternative to `on` and `off`). For example, in 'on' state, you may\nwant to use a different ODD and switch the view to 'page' at the same time:\n\n```html\n<pb-toggle-feature properties-on='{\"odd\": \"myodd\", \"view\": \"page\"}' properties-off='{\"odd\": \"myodd-diplomatic\", \"view\": \"div\"}'>\n    Diplomatic View\n</pb-toggle-feature>\n```\n\n# Client side toggling\n\nThe component can also be used to toggle features client-side, i.e. without requiring a server-roundtrip.\nTo enable this, the `selector` property should be set to a CSS3 selector targetting the HTML elements\nto toggle. In `on` state, the selected elements will be assigned a class `.toggled`.\n\n```html\n<pb-toggle-feature name=\"normalized\" selector=\".choice,.choice-alternate,br\">Normalized View</pb-toggle-feature>\n```\n\nNote that the name attribute is still required: it is used to determine if the feature is in on or off state by\nlooking at request parameters.\n\nInstead of toggling the class, you can also completely disable the elements selected - provided that they are\npublisher components implementing the corresponding `command` method of `pb-mixin`. To disable elements instead of\ntoggling, set the `action` property to *disable*.\n\n```html\n<pb-toggle-feature name=\"plain\" selector=\".tei-foreign,pb-highlight,pb-popover\" action=\"disable\" default=\"off\">Plain Reading View</pb-toggle-feature>\n```",
      "attributes": [
        {
          "name": "name",
          "description": "The name of the feature (required). This will correspond to the name of the custom parameter\npassed to the ODD.",
          "type": "string"
        },
        {
          "name": "selector",
          "description": "(optional) CSS selector: selects the elements to toggle client side (sets or unsets a\nCSS class `.toggled`). Setting this property will not trigger a reload as everything is\nhandled by javascript.",
          "type": "string"
        },
        {
          "name": "checked",
          "type": "boolean"
        },
        {
          "name": "default",
          "description": "The default setting: either 'on' or 'off'",
          "type": "string",
          "default": "\"on\""
        },
        {
          "name": "on",
          "description": "Value to set the parameter to when the feature is enabled.",
          "type": "string",
          "default": "\"on\""
        },
        {
          "name": "off",
          "description": "Value to set the parameter to when the feature is disabled.",
          "type": "string",
          "default": "\"off\""
        },
        {
          "name": "action",
          "description": "In combination with a selector specifies the action to be taken, currently one of\n`toggle` (default) or `disable`.",
          "type": "string",
          "default": "\"toggle\""
        },
        {
          "name": "properties-on",
          "description": "Additional properties to set on the pb-view if toggle is in 'on' state.\nPossible properties are 'view', 'odd' and 'columnSeparator'.",
          "type": "object",
          "default": "{}"
        },
        {
          "name": "properties-off",
          "description": "Additional properties to set on the pb-view if toggle is in 'off' state.\nPossible properties are 'view', 'odd' and 'columnSeparator'.",
          "type": "object",
          "default": "{}"
        },
        {
          "name": "init-from-view",
          "description": "If set to false (the default), `pb-toggle-feature` will pass its properties to the\nconnected view before this loads content for the first time. If true,\n`pb-toggle-feature` will initialize its state depending on the setting of the view.\nThis only makes sense for the special properties 'view' and 'odd' though.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "global",
          "description": "If set, toggle the state of elements which reside\nin the surrounding HTML context below `pb-page`\n(means: elements which are not inside a `pb-view` or `pb-load`).",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "name",
          "attribute": "name",
          "description": "The name of the feature (required). This will correspond to the name of the custom parameter\npassed to the ODD.",
          "type": "string"
        },
        {
          "name": "selector",
          "attribute": "selector",
          "description": "(optional) CSS selector: selects the elements to toggle client side (sets or unsets a\nCSS class `.toggled`). Setting this property will not trigger a reload as everything is\nhandled by javascript.",
          "type": "string"
        },
        {
          "name": "checked",
          "attribute": "checked",
          "type": "boolean"
        },
        {
          "name": "default",
          "attribute": "default",
          "description": "The default setting: either 'on' or 'off'",
          "type": "string",
          "default": "\"on\""
        },
        {
          "name": "on",
          "attribute": "on",
          "description": "Value to set the parameter to when the feature is enabled.",
          "type": "string",
          "default": "\"on\""
        },
        {
          "name": "off",
          "attribute": "off",
          "description": "Value to set the parameter to when the feature is disabled.",
          "type": "string",
          "default": "\"off\""
        },
        {
          "name": "action",
          "attribute": "action",
          "description": "In combination with a selector specifies the action to be taken, currently one of\n`toggle` (default) or `disable`.",
          "type": "string",
          "default": "\"toggle\""
        },
        {
          "name": "propertiesOn",
          "attribute": "properties-on",
          "description": "Additional properties to set on the pb-view if toggle is in 'on' state.\nPossible properties are 'view', 'odd' and 'columnSeparator'.",
          "type": "object",
          "default": "{}"
        },
        {
          "name": "propertiesOff",
          "attribute": "properties-off",
          "description": "Additional properties to set on the pb-view if toggle is in 'off' state.\nPossible properties are 'view', 'odd' and 'columnSeparator'.",
          "type": "object",
          "default": "{}"
        },
        {
          "name": "initFromView",
          "attribute": "init-from-view",
          "description": "If set to false (the default), `pb-toggle-feature` will pass its properties to the\nconnected view before this loads content for the first time. If true,\n`pb-toggle-feature` will initialize its state depending on the setting of the view.\nThis only makes sense for the special properties 'view' and 'odd' though.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "global",
          "attribute": "global",
          "description": "If set, toggle the state of elements which reside\nin the surrounding HTML context below `pb-page`\n(means: elements which are not inside a `pb-view` or `pb-load`).",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-toggle",
          "description": "Fired when the feature is toggled, it's changing properties between values of its `on` and `off` state"
        },
        {
          "name": "pb-global-toggle",
          "description": "Fired if property `global` is set. Will be caught by the surrounding `pb-page`"
        },
        {
          "name": "pb-update",
          "description": "When received, sets the features passed from the event"
        }
      ]
    },
    {
      "name": "pb-upload",
      "path": "./src/pb-upload.js",
      "description": "Component for uploading resources to TEI Publisher or a generated app.",
      "attributes": [
        {
          "name": "target",
          "description": "the server-side script to handle the upload",
          "type": "string"
        },
        {
          "name": "accept",
          "description": "a comma-separated list of file suffixes to accept for upload\n(by default: .xml,.tei,.odd,.docx)",
          "type": "string"
        },
        {
          "name": "event",
          "description": "the event to emit when the upload has completed (default: 'pb-load')",
          "type": "string",
          "default": "\"pb-load\""
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "target",
          "attribute": "target",
          "description": "the server-side script to handle the upload",
          "type": "string"
        },
        {
          "name": "accept",
          "attribute": "accept",
          "description": "a comma-separated list of file suffixes to accept for upload\n(by default: .xml,.tei,.odd,.docx)",
          "type": "string"
        },
        {
          "name": "event",
          "attribute": "event",
          "description": "the event to emit when the upload has completed (default: 'pb-load')",
          "type": "string",
          "default": "\"pb-load\""
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-start-update",
          "description": "Fired before the element updates its content"
        },
        {
          "name": "pb-end-update",
          "description": "Fired after the element has finished updating its content"
        },
        {
          "name": "pb-load",
          "description": "Fired after the upload has completed"
        },
        {
          "name": "pb-collection",
          "description": "when received, sets the upload collection to the one passed from the event"
        },
        {
          "name": "pb-refresh-odds",
          "description": "Fired if an ODD file was uploaded"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-upload-button-icon",
          "description": "icon to show in the upload button",
          "default": "\"icons:file-upload\""
        },
        {
          "name": "--pb-upload-drop-icon",
          "description": "icon to show next to the drop label text (none by default)"
        }
      ]
    },
    {
      "name": "pb-version",
      "path": "./src/pb-version.js",
      "description": "Outputs the version of pb-components being used. This is injected\nfrom `package.json` at build time.",
      "attributes": [
        {
          "name": "version",
          "type": "string"
        }
      ],
      "properties": [
        {
          "name": "version",
          "attribute": "version",
          "type": "string"
        }
      ]
    },
    {
      "name": "pb-view-annotate",
      "path": "./src/pb-view-annotate.js",
      "description": "An extended `PbView`, which supports annotations to be added\nand edited by the user. Handles mouse selection and keeps track\nof the annotations made.\n\nInteraction with the actual editing form is entirely done via events.\nThe class itself does not provide any editing facility, except for\nhandling deletions.",
      "attributes": [
        {
          "name": "key",
          "description": "Configures the default annotation property containing the key for authority entries.\nDefault: 'ref', corresponding to TEI attribute",
          "type": "string",
          "default": "\"ref\""
        },
        {
          "name": "key-map",
          "description": "Optional mapping of annotation type names to key properties",
          "type": "object",
          "default": "{}"
        },
        {
          "name": "caseSensitive",
          "description": "When searching the displayed text for other potential occurrences of an entity,\nshould the search be done in case-sensitive manner?",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "odd",
          "description": "The ODD to use for rendering the document. Overwrites an ODD defined on\n`pb-document`. The odd should be specified by its name without path\nor the `.odd` suffix.",
          "type": "string"
        },
        {
          "name": "view",
          "description": "The view type to use for paginating the document. Either `page`, `div` or `single`.\nOverwrites the same property specified on `pb-document`. Values have the following meaning:\n\nValue | Displayed content\n------|------------------\n`page` | content is displayed page by page as determined by tei:pb\n`div` | content is displayed by divisions\n`single` | do not paginate but display entire content at once",
          "type": "string"
        },
        {
          "name": "fill",
          "description": "Controls the pagination-by-div algorithm: if a page would have less than\n`fill` elements, it tries to fill\nup the page by pulling following divs in. When set to 0, it will never\nattempt to fill up the page. For the annotation editor this should\nalways be 0.",
          "type": "number"
        },
        {
          "name": "node-id",
          "description": "An eXist nodeId. If specified, selects the root of the fragment of the document\nwhich should be displayed. Normally this property is set automatically by pagination.",
          "type": "string"
        },
        {
          "name": "xml-id",
          "description": "An xml:id to be displayed. If specified, this determines the root of the fragment to be\ndisplayed. Use to directly navigate to a specific section.",
          "type": "array"
        },
        {
          "name": "xpath",
          "description": "An optional XPath expression: the root of the fragment to be processed is determined\nby evaluating the given XPath expression. The XPath expression should be absolute.\nThe namespace of the document is declared as default namespace, so no prefixes should\nbe used.\n\nIf the `map` property is used, it may change scope for the displayed fragment.",
          "type": "string"
        },
        {
          "name": "map",
          "description": "If defined denotes the local name of an XQuery function in `modules/map.xql`, which will be called\nwith the current root node and should return the node of a mapped fragment. This is helpful if one\nwants, for example, to show a translation fragment aligned with the part of the transcription currently\nshown. In this case, the properties of the `pb-view` would still point to the transcription, but the function\nidentified by map would return the corresponding fragment from the translation to be processed.\n\nNavigation in the document is still determined by the current root as defined through the `root`, `xpath`\nand `xmlId` properties.",
          "type": "string"
        },
        {
          "name": "column-separator",
          "description": "CSS selector to find column breaks in the content returned\nfrom the server. If this property is set and column breaks\nare found, the component will display two columns side by side.",
          "type": "string"
        },
        {
          "name": "load-css",
          "description": "If set, points to an external stylesheet which should be applied to\nthe text *after* the ODD-generated styles.",
          "type": "string"
        },
        {
          "name": "fix-links",
          "description": "If set, relative links (img, a) will be made absolute.",
          "type": "boolean"
        },
        {
          "name": "use-language",
          "description": "If set, a refresh will be triggered if a `pb-i18n-update` event is received,\ne.g. due to the user selecting a different interface language.\n\nAlso requires `requireLanguage` to be set on the surrounding `pb-page`.\nSee there for more information.",
          "type": "boolean"
        },
        {
          "name": "infinite-scroll",
          "description": "Experimental: if enabled, the view will incrementally load new document fragments if the user tries to scroll\nbeyond the start or end of the visible text. The feature inserts a small blank section at the top\nand bottom. If this section becomes visible, a load operation will be triggered.\n\nNote: only browsers implementing the `IntersectionObserver` API are supported. Also the feature\ndoes not work in two-column mode or with animations.",
          "type": "boolean"
        },
        {
          "name": "src",
          "description": "The id of a `pb-document` element this view should display.\nSettings like `odd` or `view` will be taken from the `pb-document`\nunless overwritten by properties in this component.\n\nThis property is **required** and **must** point to an existing `pb-document` with\nthe given id.\n\nSetting the property after initialization will clear the properties xmlId, nodeId and odd.",
          "type": "string"
        },
        {
          "name": "url",
          "description": "The relative URL to the script on the server which will be called for loading content.",
          "type": "string"
        },
        {
          "name": "on-update",
          "description": "If set to true, the component will not load automatically. Instead it will wait until it receives a `pb-update`\nevent. Use this to make one `pb-view` component dependent on another one. Default is 'false'.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "append-footnotes",
          "description": "The server returns footnotes separately. Set this property\nif you wish to append them to the main text.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "not-found",
          "description": "Message to display if no content was returned by the server.\nSet to empty string to show nothing.",
          "type": "string"
        },
        {
          "name": "animation",
          "description": "wether to animate the view when new page is loaded. Defaults to 'false' meaning that no\nanimation takes place. If 'true' will apply a translateX transistion in forward/backward direction.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "direction",
          "description": "The reading direction, i.e. 'ltr' or 'rtl'.",
          "type": "\"ltr\"|\"rtl\"",
          "default": "\"ltr\""
        },
        {
          "name": "suppress-highlight",
          "description": "Should matches be highlighted if a search has been executed?",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "infinite-scroll-max",
          "description": "Maximum number of fragments to keep in memory if `infinite-scroll`\nis enabled. If the user is scrolling beyond the maximum, fragements\nwill be removed from the DOM before or after the current reading position.\nDefault is 10. Set to zero to allow loading the entire document.",
          "type": "number",
          "default": "10"
        },
        {
          "name": "disable-history",
          "description": "By default, navigating to next/previous page will update browser parameters,\nso reloading the page will load the correct position within the document.\n\nSet this property to disable location tracking for the component altogether.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "before-update-event",
          "description": "If set to the name of an event, the content of the pb-view will not be replaced\nimmediately upon updates. Instead, an event is emitted, which contains the new content\nin property `root`. An event handler intercepting the event can thus modify the content.\nOnce it is done, it should pass the modified content to the callback function provided\nin the event detail under the name `render`. See the demo for an example.",
          "type": "string"
        },
        {
          "name": "no-scroll",
          "description": "If set, do not scroll the view to target node (e.g. given in URL hash)\nafter content was loaded.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "static",
          "description": "If set, rewrite URLs to load pages as static HTML files,\nso no TEI Publisher instance is required. Use this in combination with\n[tei-publisher-static](https://github.com/eeditiones/tei-publisher-static).\nThe value should point to the HTTP root path under which the static version\nwill be hosted. This is used to resolve CSS stylesheets.",
          "type": "string"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.\n\n`pb-view` by default sets this property to select `pb-toggle-feature` and `pb-select-feature`\nelements.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "annotations",
          "type": "array"
        },
        {
          "name": "key",
          "attribute": "key",
          "description": "Configures the default annotation property containing the key for authority entries.\nDefault: 'ref', corresponding to TEI attribute",
          "type": "string",
          "default": "\"ref\""
        },
        {
          "name": "keyMap",
          "attribute": "key-map",
          "description": "Optional mapping of annotation type names to key properties",
          "type": "object",
          "default": "{}"
        },
        {
          "name": "caseSensitive",
          "attribute": "caseSensitive",
          "description": "When searching the displayed text for other potential occurrences of an entity,\nshould the search be done in case-sensitive manner?",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "odd",
          "attribute": "odd",
          "description": "The ODD to use for rendering the document. Overwrites an ODD defined on\n`pb-document`. The odd should be specified by its name without path\nor the `.odd` suffix.",
          "type": "string"
        },
        {
          "name": "view",
          "attribute": "view",
          "description": "The view type to use for paginating the document. Either `page`, `div` or `single`.\nOverwrites the same property specified on `pb-document`. Values have the following meaning:\n\nValue | Displayed content\n------|------------------\n`page` | content is displayed page by page as determined by tei:pb\n`div` | content is displayed by divisions\n`single` | do not paginate but display entire content at once",
          "type": "string"
        },
        {
          "name": "fill",
          "attribute": "fill",
          "description": "Controls the pagination-by-div algorithm: if a page would have less than\n`fill` elements, it tries to fill\nup the page by pulling following divs in. When set to 0, it will never\nattempt to fill up the page. For the annotation editor this should\nalways be 0.",
          "type": "number"
        },
        {
          "name": "nodeId",
          "attribute": "node-id",
          "description": "An eXist nodeId. If specified, selects the root of the fragment of the document\nwhich should be displayed. Normally this property is set automatically by pagination.",
          "type": "string"
        },
        {
          "name": "xmlId",
          "attribute": "xml-id",
          "description": "An xml:id to be displayed. If specified, this determines the root of the fragment to be\ndisplayed. Use to directly navigate to a specific section.",
          "type": "array"
        },
        {
          "name": "xpath",
          "attribute": "xpath",
          "description": "An optional XPath expression: the root of the fragment to be processed is determined\nby evaluating the given XPath expression. The XPath expression should be absolute.\nThe namespace of the document is declared as default namespace, so no prefixes should\nbe used.\n\nIf the `map` property is used, it may change scope for the displayed fragment.",
          "type": "string"
        },
        {
          "name": "map",
          "attribute": "map",
          "description": "If defined denotes the local name of an XQuery function in `modules/map.xql`, which will be called\nwith the current root node and should return the node of a mapped fragment. This is helpful if one\nwants, for example, to show a translation fragment aligned with the part of the transcription currently\nshown. In this case, the properties of the `pb-view` would still point to the transcription, but the function\nidentified by map would return the corresponding fragment from the translation to be processed.\n\nNavigation in the document is still determined by the current root as defined through the `root`, `xpath`\nand `xmlId` properties.",
          "type": "string"
        },
        {
          "name": "columnSeparator",
          "attribute": "column-separator",
          "description": "CSS selector to find column breaks in the content returned\nfrom the server. If this property is set and column breaks\nare found, the component will display two columns side by side.",
          "type": "string"
        },
        {
          "name": "loadCss",
          "attribute": "load-css",
          "description": "If set, points to an external stylesheet which should be applied to\nthe text *after* the ODD-generated styles.",
          "type": "string"
        },
        {
          "name": "fixLinks",
          "attribute": "fix-links",
          "description": "If set, relative links (img, a) will be made absolute.",
          "type": "boolean"
        },
        {
          "name": "useLanguage",
          "attribute": "use-language",
          "description": "If set, a refresh will be triggered if a `pb-i18n-update` event is received,\ne.g. due to the user selecting a different interface language.\n\nAlso requires `requireLanguage` to be set on the surrounding `pb-page`.\nSee there for more information.",
          "type": "boolean"
        },
        {
          "name": "infiniteScroll",
          "attribute": "infinite-scroll",
          "description": "Experimental: if enabled, the view will incrementally load new document fragments if the user tries to scroll\nbeyond the start or end of the visible text. The feature inserts a small blank section at the top\nand bottom. If this section becomes visible, a load operation will be triggered.\n\nNote: only browsers implementing the `IntersectionObserver` API are supported. Also the feature\ndoes not work in two-column mode or with animations.",
          "type": "boolean"
        },
        {
          "name": "src",
          "attribute": "src",
          "description": "The id of a `pb-document` element this view should display.\nSettings like `odd` or `view` will be taken from the `pb-document`\nunless overwritten by properties in this component.\n\nThis property is **required** and **must** point to an existing `pb-document` with\nthe given id.\n\nSetting the property after initialization will clear the properties xmlId, nodeId and odd.",
          "type": "string"
        },
        {
          "name": "url",
          "attribute": "url",
          "description": "The relative URL to the script on the server which will be called for loading content.",
          "type": "string"
        },
        {
          "name": "onUpdate",
          "attribute": "on-update",
          "description": "If set to true, the component will not load automatically. Instead it will wait until it receives a `pb-update`\nevent. Use this to make one `pb-view` component dependent on another one. Default is 'false'.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "appendFootnotes",
          "attribute": "append-footnotes",
          "description": "The server returns footnotes separately. Set this property\nif you wish to append them to the main text.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "notFound",
          "attribute": "not-found",
          "description": "Message to display if no content was returned by the server.\nSet to empty string to show nothing.",
          "type": "string"
        },
        {
          "name": "animation",
          "attribute": "animation",
          "description": "wether to animate the view when new page is loaded. Defaults to 'false' meaning that no\nanimation takes place. If 'true' will apply a translateX transistion in forward/backward direction.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "direction",
          "attribute": "direction",
          "description": "The reading direction, i.e. 'ltr' or 'rtl'.",
          "type": "\"ltr\"|\"rtl\"",
          "default": "\"ltr\""
        },
        {
          "name": "suppressHighlight",
          "attribute": "suppress-highlight",
          "description": "Should matches be highlighted if a search has been executed?",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "highlight",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "infiniteScrollMax",
          "attribute": "infinite-scroll-max",
          "description": "Maximum number of fragments to keep in memory if `infinite-scroll`\nis enabled. If the user is scrolling beyond the maximum, fragements\nwill be removed from the DOM before or after the current reading position.\nDefault is 10. Set to zero to allow loading the entire document.",
          "type": "number",
          "default": "10"
        },
        {
          "name": "disableHistory",
          "attribute": "disable-history",
          "description": "By default, navigating to next/previous page will update browser parameters,\nso reloading the page will load the correct position within the document.\n\nSet this property to disable location tracking for the component altogether.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "beforeUpdate",
          "attribute": "before-update-event",
          "description": "If set to the name of an event, the content of the pb-view will not be replaced\nimmediately upon updates. Instead, an event is emitted, which contains the new content\nin property `root`. An event handler intercepting the event can thus modify the content.\nOnce it is done, it should pass the modified content to the callback function provided\nin the event detail under the name `render`. See the demo for an example.",
          "type": "string"
        },
        {
          "name": "noScroll",
          "attribute": "no-scroll",
          "description": "If set, do not scroll the view to target node (e.g. given in URL hash)\nafter content was loaded.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "static",
          "attribute": "static",
          "description": "If set, rewrite URLs to load pages as static HTML files,\nso no TEI Publisher instance is required. Use this in combination with\n[tei-publisher-static](https://github.com/eeditiones/tei-publisher-static).\nThe value should point to the HTTP root path under which the static version\nwill be hosted. This is used to resolve CSS stylesheets.",
          "type": "string"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.\n\n`pb-view` by default sets this property to select `pb-toggle-feature` and `pb-select-feature`\nelements.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-annotations-loaded",
          "description": "fired after text was loaded and annotations were drawn"
        },
        {
          "name": "pb-selection-changed",
          "description": "fired when user selects text"
        },
        {
          "name": "pb-annotations-changed",
          "description": "fired when an annotation was added or changed"
        },
        {
          "name": "pb-annotation-detail",
          "description": "fired to request additional details about an annotation"
        },
        {
          "name": "pb-disable",
          "description": "if received, disables selection tracking, suppressing pb-selection-changed events"
        },
        {
          "name": "pb-enable",
          "description": "re-enables selection tracking"
        },
        {
          "name": "pb-start-update",
          "description": "Fired before the element updates its content"
        },
        {
          "name": "pb-update",
          "description": "Fired when the component received content from the server"
        },
        {
          "name": "pb-end-update",
          "description": "Fired after the element has finished updating its content"
        },
        {
          "name": "pb-navigate",
          "description": "When received, navigate forward or backward in the document"
        },
        {
          "name": "pb-refresh",
          "description": "When received, refresh the content based on the parameters passed in the event"
        },
        {
          "name": "pb-toggle",
          "description": "When received, toggle content properties"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-view-column-gap",
          "description": "The gap between columns in two-column mode",
          "default": "\"10px\""
        },
        {
          "name": "--pb-view-loader-font",
          "description": "Font used in the message shown during loading in infinite scroll mode"
        },
        {
          "name": "--pb-view-loader-color",
          "description": "Text color in the message shown during loading in infinite scroll mode",
          "default": "\"black\""
        },
        {
          "name": "--pb-view-loader-background-padding",
          "description": "Background padding for the  message shown during loading in infinite scroll mode",
          "default": "\"10px 20px\""
        },
        {
          "name": "--pb-view-loader-background-image",
          "description": "Background image the message shown during loading in infinite scroll mode",
          "default": "\"linear-gradient(to bottom, #f6a62440, #f6a524)\""
        },
        {
          "name": "--pb-footnote-color",
          "description": "Text color of footnote marker"
        },
        {
          "name": "--pb-footnote-padding",
          "description": "Padding around a footnote marker"
        },
        {
          "name": "--pb-footnote-font-size",
          "description": "Font size for the footnote marker"
        },
        {
          "name": "--pb-footnote-font-family",
          "description": "Font family for the footnote marker"
        },
        {
          "name": "--pb-view-scroll-margin-top",
          "description": "Applied to any element with an id"
        }
      ],
      "cssParts": [
        {
          "name": "content",
          "description": "The root div around the displayed content"
        },
        {
          "name": "footnotes",
          "description": "div containing the footnotes"
        }
      ]
    },
    {
      "name": "pb-view",
      "path": "./src/pb-view.js",
      "description": "This is the main component for viewing text which has been transformed via an ODD.\nThe document to be viewed is determined by the `pb-document` element the property\n`src` points to. If not overwritten, `pb-view` will use the settings defined by\nthe connected document, like view type, ODD etc.\n\n`pb-view` can display an entire document or just a fragment of it\nas defined by the properties `xpath`, `xmlId` or `nodeId`. The most common use case\nis to set `xpath` to point to a specific part of a document.\n\nNavigating to the next or previous fragment would usually be triggered by a separate\n`pb-navigation` element, which sends a `pb-navigate` event to the `pb-view`. However,\n`pb-view` also implements automatic loading of next/previous fragments if the user\nscrolls the page beyond the current viewport boudaries. To enable this, set property\n`infinite-scroll`.\n\nYou may also define optional parameters to be passed to the ODD in nested `pb-param`\ntags. These parameters can be accessed within the ODD via the `$parameters` map. For\nexample, the following snippet is being used to output breadcrumbs above the main text\nin the documentation view:\n\n```xml\n<section class=\"breadcrumbs\">\n     <pb-view id=\"title-view1\" src=\"document1\" subscribe=\"transcription\">\n         <pb-param name=\"mode\" value=\"breadcrumbs\"/>\n     </pb-view>\n</section>\n```",
      "attributes": [
        {
          "name": "odd",
          "description": "The ODD to use for rendering the document. Overwrites an ODD defined on\n`pb-document`. The odd should be specified by its name without path\nor the `.odd` suffix.",
          "type": "string"
        },
        {
          "name": "view",
          "description": "The view type to use for paginating the document. Either `page`, `div` or `single`.\nOverwrites the same property specified on `pb-document`. Values have the following meaning:\n\nValue | Displayed content\n------|------------------\n`page` | content is displayed page by page as determined by tei:pb\n`div` | content is displayed by divisions\n`single` | do not paginate but display entire content at once",
          "type": "string"
        },
        {
          "name": "fill",
          "description": "Controls the pagination-by-div algorithm: if a page would have less than\n`fill` elements, it tries to fill\nup the page by pulling following divs in. When set to 0, it will never\nattempt to fill up the page. For the annotation editor this should\nalways be 0.",
          "type": "number"
        },
        {
          "name": "node-id",
          "description": "An eXist nodeId. If specified, selects the root of the fragment of the document\nwhich should be displayed. Normally this property is set automatically by pagination.",
          "type": "string"
        },
        {
          "name": "xml-id",
          "description": "An xml:id to be displayed. If specified, this determines the root of the fragment to be\ndisplayed. Use to directly navigate to a specific section.",
          "type": "array"
        },
        {
          "name": "xpath",
          "description": "An optional XPath expression: the root of the fragment to be processed is determined\nby evaluating the given XPath expression. The XPath expression should be absolute.\nThe namespace of the document is declared as default namespace, so no prefixes should\nbe used.\n\nIf the `map` property is used, it may change scope for the displayed fragment.",
          "type": "string"
        },
        {
          "name": "map",
          "description": "If defined denotes the local name of an XQuery function in `modules/map.xql`, which will be called\nwith the current root node and should return the node of a mapped fragment. This is helpful if one\nwants, for example, to show a translation fragment aligned with the part of the transcription currently\nshown. In this case, the properties of the `pb-view` would still point to the transcription, but the function\nidentified by map would return the corresponding fragment from the translation to be processed.\n\nNavigation in the document is still determined by the current root as defined through the `root`, `xpath`\nand `xmlId` properties.",
          "type": "string"
        },
        {
          "name": "column-separator",
          "description": "CSS selector to find column breaks in the content returned\nfrom the server. If this property is set and column breaks\nare found, the component will display two columns side by side.",
          "type": "string"
        },
        {
          "name": "load-css",
          "description": "If set, points to an external stylesheet which should be applied to\nthe text *after* the ODD-generated styles.",
          "type": "string"
        },
        {
          "name": "fix-links",
          "description": "If set, relative links (img, a) will be made absolute.",
          "type": "boolean"
        },
        {
          "name": "use-language",
          "description": "If set, a refresh will be triggered if a `pb-i18n-update` event is received,\ne.g. due to the user selecting a different interface language.\n\nAlso requires `requireLanguage` to be set on the surrounding `pb-page`.\nSee there for more information.",
          "type": "boolean"
        },
        {
          "name": "infinite-scroll",
          "description": "Experimental: if enabled, the view will incrementally load new document fragments if the user tries to scroll\nbeyond the start or end of the visible text. The feature inserts a small blank section at the top\nand bottom. If this section becomes visible, a load operation will be triggered.\n\nNote: only browsers implementing the `IntersectionObserver` API are supported. Also the feature\ndoes not work in two-column mode or with animations.",
          "type": "boolean"
        },
        {
          "name": "src",
          "description": "The id of a `pb-document` element this view should display.\nSettings like `odd` or `view` will be taken from the `pb-document`\nunless overwritten by properties in this component.\n\nThis property is **required** and **must** point to an existing `pb-document` with\nthe given id.\n\nSetting the property after initialization will clear the properties xmlId, nodeId and odd.",
          "type": "string"
        },
        {
          "name": "url",
          "description": "The relative URL to the script on the server which will be called for loading content.",
          "type": "string"
        },
        {
          "name": "on-update",
          "description": "If set to true, the component will not load automatically. Instead it will wait until it receives a `pb-update`\nevent. Use this to make one `pb-view` component dependent on another one. Default is 'false'.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "append-footnotes",
          "description": "The server returns footnotes separately. Set this property\nif you wish to append them to the main text.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "not-found",
          "description": "Message to display if no content was returned by the server.\nSet to empty string to show nothing.",
          "type": "string"
        },
        {
          "name": "animation",
          "description": "wether to animate the view when new page is loaded. Defaults to 'false' meaning that no\nanimation takes place. If 'true' will apply a translateX transistion in forward/backward direction.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "direction",
          "description": "The reading direction, i.e. 'ltr' or 'rtl'.",
          "type": "\"ltr\"|\"rtl\"",
          "default": "\"ltr\""
        },
        {
          "name": "suppress-highlight",
          "description": "Should matches be highlighted if a search has been executed?",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "infinite-scroll-max",
          "description": "Maximum number of fragments to keep in memory if `infinite-scroll`\nis enabled. If the user is scrolling beyond the maximum, fragements\nwill be removed from the DOM before or after the current reading position.\nDefault is 10. Set to zero to allow loading the entire document.",
          "type": "number",
          "default": "10"
        },
        {
          "name": "disable-history",
          "description": "By default, navigating to next/previous page will update browser parameters,\nso reloading the page will load the correct position within the document.\n\nSet this property to disable location tracking for the component altogether.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "before-update-event",
          "description": "If set to the name of an event, the content of the pb-view will not be replaced\nimmediately upon updates. Instead, an event is emitted, which contains the new content\nin property `root`. An event handler intercepting the event can thus modify the content.\nOnce it is done, it should pass the modified content to the callback function provided\nin the event detail under the name `render`. See the demo for an example.",
          "type": "string"
        },
        {
          "name": "no-scroll",
          "description": "If set, do not scroll the view to target node (e.g. given in URL hash)\nafter content was loaded.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "static",
          "description": "If set, rewrite URLs to load pages as static HTML files,\nso no TEI Publisher instance is required. Use this in combination with\n[tei-publisher-static](https://github.com/eeditiones/tei-publisher-static).\nThe value should point to the HTTP root path under which the static version\nwill be hosted. This is used to resolve CSS stylesheets.",
          "type": "string"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.\n\n`pb-view` by default sets this property to select `pb-toggle-feature` and `pb-select-feature`\nelements.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "odd",
          "attribute": "odd",
          "description": "The ODD to use for rendering the document. Overwrites an ODD defined on\n`pb-document`. The odd should be specified by its name without path\nor the `.odd` suffix.",
          "type": "string"
        },
        {
          "name": "view",
          "attribute": "view",
          "description": "The view type to use for paginating the document. Either `page`, `div` or `single`.\nOverwrites the same property specified on `pb-document`. Values have the following meaning:\n\nValue | Displayed content\n------|------------------\n`page` | content is displayed page by page as determined by tei:pb\n`div` | content is displayed by divisions\n`single` | do not paginate but display entire content at once",
          "type": "string"
        },
        {
          "name": "fill",
          "attribute": "fill",
          "description": "Controls the pagination-by-div algorithm: if a page would have less than\n`fill` elements, it tries to fill\nup the page by pulling following divs in. When set to 0, it will never\nattempt to fill up the page. For the annotation editor this should\nalways be 0.",
          "type": "number"
        },
        {
          "name": "nodeId",
          "attribute": "node-id",
          "description": "An eXist nodeId. If specified, selects the root of the fragment of the document\nwhich should be displayed. Normally this property is set automatically by pagination.",
          "type": "string"
        },
        {
          "name": "xmlId",
          "attribute": "xml-id",
          "description": "An xml:id to be displayed. If specified, this determines the root of the fragment to be\ndisplayed. Use to directly navigate to a specific section.",
          "type": "array"
        },
        {
          "name": "xpath",
          "attribute": "xpath",
          "description": "An optional XPath expression: the root of the fragment to be processed is determined\nby evaluating the given XPath expression. The XPath expression should be absolute.\nThe namespace of the document is declared as default namespace, so no prefixes should\nbe used.\n\nIf the `map` property is used, it may change scope for the displayed fragment.",
          "type": "string"
        },
        {
          "name": "map",
          "attribute": "map",
          "description": "If defined denotes the local name of an XQuery function in `modules/map.xql`, which will be called\nwith the current root node and should return the node of a mapped fragment. This is helpful if one\nwants, for example, to show a translation fragment aligned with the part of the transcription currently\nshown. In this case, the properties of the `pb-view` would still point to the transcription, but the function\nidentified by map would return the corresponding fragment from the translation to be processed.\n\nNavigation in the document is still determined by the current root as defined through the `root`, `xpath`\nand `xmlId` properties.",
          "type": "string"
        },
        {
          "name": "columnSeparator",
          "attribute": "column-separator",
          "description": "CSS selector to find column breaks in the content returned\nfrom the server. If this property is set and column breaks\nare found, the component will display two columns side by side.",
          "type": "string"
        },
        {
          "name": "loadCss",
          "attribute": "load-css",
          "description": "If set, points to an external stylesheet which should be applied to\nthe text *after* the ODD-generated styles.",
          "type": "string"
        },
        {
          "name": "fixLinks",
          "attribute": "fix-links",
          "description": "If set, relative links (img, a) will be made absolute.",
          "type": "boolean"
        },
        {
          "name": "useLanguage",
          "attribute": "use-language",
          "description": "If set, a refresh will be triggered if a `pb-i18n-update` event is received,\ne.g. due to the user selecting a different interface language.\n\nAlso requires `requireLanguage` to be set on the surrounding `pb-page`.\nSee there for more information.",
          "type": "boolean"
        },
        {
          "name": "infiniteScroll",
          "attribute": "infinite-scroll",
          "description": "Experimental: if enabled, the view will incrementally load new document fragments if the user tries to scroll\nbeyond the start or end of the visible text. The feature inserts a small blank section at the top\nand bottom. If this section becomes visible, a load operation will be triggered.\n\nNote: only browsers implementing the `IntersectionObserver` API are supported. Also the feature\ndoes not work in two-column mode or with animations.",
          "type": "boolean"
        },
        {
          "name": "src",
          "attribute": "src",
          "description": "The id of a `pb-document` element this view should display.\nSettings like `odd` or `view` will be taken from the `pb-document`\nunless overwritten by properties in this component.\n\nThis property is **required** and **must** point to an existing `pb-document` with\nthe given id.\n\nSetting the property after initialization will clear the properties xmlId, nodeId and odd.",
          "type": "string"
        },
        {
          "name": "url",
          "attribute": "url",
          "description": "The relative URL to the script on the server which will be called for loading content.",
          "type": "string"
        },
        {
          "name": "onUpdate",
          "attribute": "on-update",
          "description": "If set to true, the component will not load automatically. Instead it will wait until it receives a `pb-update`\nevent. Use this to make one `pb-view` component dependent on another one. Default is 'false'.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "appendFootnotes",
          "attribute": "append-footnotes",
          "description": "The server returns footnotes separately. Set this property\nif you wish to append them to the main text.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "notFound",
          "attribute": "not-found",
          "description": "Message to display if no content was returned by the server.\nSet to empty string to show nothing.",
          "type": "string"
        },
        {
          "name": "animation",
          "attribute": "animation",
          "description": "wether to animate the view when new page is loaded. Defaults to 'false' meaning that no\nanimation takes place. If 'true' will apply a translateX transistion in forward/backward direction.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "direction",
          "attribute": "direction",
          "description": "The reading direction, i.e. 'ltr' or 'rtl'.",
          "type": "\"ltr\"|\"rtl\"",
          "default": "\"ltr\""
        },
        {
          "name": "suppressHighlight",
          "attribute": "suppress-highlight",
          "description": "Should matches be highlighted if a search has been executed?",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "highlight",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "infiniteScrollMax",
          "attribute": "infinite-scroll-max",
          "description": "Maximum number of fragments to keep in memory if `infinite-scroll`\nis enabled. If the user is scrolling beyond the maximum, fragements\nwill be removed from the DOM before or after the current reading position.\nDefault is 10. Set to zero to allow loading the entire document.",
          "type": "number",
          "default": "10"
        },
        {
          "name": "disableHistory",
          "attribute": "disable-history",
          "description": "By default, navigating to next/previous page will update browser parameters,\nso reloading the page will load the correct position within the document.\n\nSet this property to disable location tracking for the component altogether.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "beforeUpdate",
          "attribute": "before-update-event",
          "description": "If set to the name of an event, the content of the pb-view will not be replaced\nimmediately upon updates. Instead, an event is emitted, which contains the new content\nin property `root`. An event handler intercepting the event can thus modify the content.\nOnce it is done, it should pass the modified content to the callback function provided\nin the event detail under the name `render`. See the demo for an example.",
          "type": "string"
        },
        {
          "name": "noScroll",
          "attribute": "no-scroll",
          "description": "If set, do not scroll the view to target node (e.g. given in URL hash)\nafter content was loaded.",
          "type": "boolean",
          "default": "false"
        },
        {
          "name": "static",
          "attribute": "static",
          "description": "If set, rewrite URLs to load pages as static HTML files,\nso no TEI Publisher instance is required. Use this in combination with\n[tei-publisher-static](https://github.com/eeditiones/tei-publisher-static).\nThe value should point to the HTTP root path under which the static version\nwill be hosted. This is used to resolve CSS stylesheets.",
          "type": "string"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.\n\n`pb-view` by default sets this property to select `pb-toggle-feature` and `pb-select-feature`\nelements.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-start-update",
          "description": "Fired before the element updates its content"
        },
        {
          "name": "pb-update",
          "description": "Fired when the component received content from the server"
        },
        {
          "name": "pb-end-update",
          "description": "Fired after the element has finished updating its content"
        },
        {
          "name": "pb-navigate",
          "description": "When received, navigate forward or backward in the document"
        },
        {
          "name": "pb-refresh",
          "description": "When received, refresh the content based on the parameters passed in the event"
        },
        {
          "name": "pb-toggle",
          "description": "When received, toggle content properties"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-view-column-gap",
          "description": "The gap between columns in two-column mode",
          "default": "\"10px\""
        },
        {
          "name": "--pb-view-loader-font",
          "description": "Font used in the message shown during loading in infinite scroll mode"
        },
        {
          "name": "--pb-view-loader-color",
          "description": "Text color in the message shown during loading in infinite scroll mode",
          "default": "\"black\""
        },
        {
          "name": "--pb-view-loader-background-padding",
          "description": "Background padding for the  message shown during loading in infinite scroll mode",
          "default": "\"10px 20px\""
        },
        {
          "name": "--pb-view-loader-background-image",
          "description": "Background image the message shown during loading in infinite scroll mode",
          "default": "\"linear-gradient(to bottom, #f6a62440, #f6a524)\""
        },
        {
          "name": "--pb-footnote-color",
          "description": "Text color of footnote marker"
        },
        {
          "name": "--pb-footnote-padding",
          "description": "Padding around a footnote marker"
        },
        {
          "name": "--pb-footnote-font-size",
          "description": "Font size for the footnote marker"
        },
        {
          "name": "--pb-footnote-font-family",
          "description": "Font family for the footnote marker"
        },
        {
          "name": "--pb-view-scroll-margin-top",
          "description": "Applied to any element with an id"
        }
      ],
      "cssParts": [
        {
          "name": "content",
          "description": "The root div around the displayed content"
        },
        {
          "name": "footnotes",
          "description": "div containing the footnotes"
        }
      ]
    },
    {
      "name": "pb-zoom",
      "path": "./src/pb-zoom.js",
      "description": "Zoom button to enlarge/shrink the font for the views. This component manages\nthe global zoom level by setting CSS custom properties on the document root.",
      "attributes": [
        {
          "name": "direction",
          "description": "Either 'in' or 'out'",
          "type": "string",
          "default": "\"in\""
        },
        {
          "name": "zoom-factor",
          "description": "The current zoom factor",
          "type": "number",
          "default": "1"
        },
        {
          "name": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "properties": [
        {
          "name": "direction",
          "attribute": "direction",
          "description": "Either 'in' or 'out'",
          "type": "string",
          "default": "\"in\""
        },
        {
          "name": "zoomFactor",
          "attribute": "zoom-factor",
          "description": "The current zoom factor",
          "type": "number",
          "default": "1"
        },
        {
          "name": "subscribe",
          "attribute": "subscribe",
          "description": "The name of the channel to subscribe to. Only events on a channel corresponding\nto this property are listened to.",
          "type": "string"
        },
        {
          "name": "subscribeConfig",
          "attribute": "subscribe-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to listen to.",
          "type": "object"
        },
        {
          "name": "emit",
          "attribute": "emit",
          "description": "The name of the channel to send events to.",
          "type": "string"
        },
        {
          "name": "emitConfig",
          "attribute": "emit-config",
          "description": "Configuration object to define a channel/event mapping. Every property\nin the object is interpreted as the name of a channel and its value should\nbe an array of event names to be dispatched.",
          "type": "object"
        },
        {
          "name": "waitFor",
          "attribute": "wait-for",
          "description": "A selector pointing to other components this component depends on.\nWhen method `wait` is called, it will wait until all referenced\ncomponents signal with a `pb-ready` event that they are ready and listening\nto events.",
          "type": "string"
        },
        {
          "name": "disabled",
          "attribute": "disabled",
          "description": "Common property to disable the functionality associated with a component.\n`pb-highlight` and `pb-popover` react to this.",
          "type": "boolean",
          "default": "false"
        }
      ],
      "events": [
        {
          "name": "pb-zoom",
          "description": "sends an event for e.g. pb-views to react to"
        }
      ],
      "cssProperties": [
        {
          "name": "--pb-zoom-factor",
          "description": "the zoom factor, e.g. 1.0 for normal size, 1.5 for 150%, 0.5 for 50%"
        },
        {
          "name": "--pb-min-zoom",
          "description": "the minimum zoom factor, e.g. 0.5 for 50%"
        },
        {
          "name": "--pb-max-zoom",
          "description": "the maximum zoom factor, e.g. 3.0 for 300%"
        }
      ]
    },
    {
      "name": "seed-element",
      "path": "./src/seed-element.js",
      "description": "bare bones sample to copy/paste for a new LitElement"
    }
  ]
}