{
  "scriptappy": "1.0.0",
  "info": {
    "name": "CustomComponentAPI",
    "description": "Custom components are small, self-contained elements of code that can be used and re-used when building widgets. Custom components contains the following elements: definition (QEXT) file, main JavaScript file and optional assets such as JavaScript libraries, images, and fonts.",
    "version": "1.0.0",
    "stability": "stable",
    "x-qlik-since-sense": "3.1",
    "x-qlik-visibility": "public"
  },
  "examples": [
    "\nDefinition (QEXT) file:\n```json\n{\n  \"name\": \"ccs-hello-world\",\n  \"description\": \"Hello world component for widgets\",\n  \"type\": \"component\",\n  \"version\": \"0.1.0\",\n  \"author\": \"Qlik\"\n}\n```\nMain JavaScript file:\n```js\ndefine( [], function () {\n  return {\n    componentName: \"ccsHelloWorld\",\n    restrict: 'E',\n    link: function ( scope, element, attrs ) {\n      element.html( 'Hello world.' );\n    }\n  };\n});\n```\nUsage:\n```html\n<ccs-hello-world></ccs-hello-world>\n```\n"
  ],
  "entries": {},
  "definitions": {
    "link": {
      "kind": "function",
      "params": [
        {
          "name": "scope",
          "type": "object"
        },
        {
          "name": "element",
          "type": "$Element"
        },
        {
          "name": "attrs",
          "type": "object"
        }
      ]
    },
    "component": {
      "kind": "interface",
      "entries": {
        "componentName": {
          "description": "The name of the component",
          "type": "string"
        },
        "restrict": {
          "type": "string"
        },
        "link": {
          "type": "#/definitions/link"
        }
      }
    },
    "qext": {
      "kind": "interface",
      "entries": {
        "name": {
          "description": "The name of the custom component.",
          "type": "string"
        },
        "description": {
          "description": "Provides a meaningful description of your custom component.",
          "type": "string"
        },
        "type": {
          "description": "Extension type. Should always be `'component'` for custom components.",
          "type": "string"
        },
        "version": {
          "description": "Version of your custom component. Uses the semantic version concept.",
          "type": "string"
        },
        "author": {
          "description": "Author of the custom component.",
          "optional": true,
          "type": "string"
        }
      }
    }
  }
}