{
"cells": [
{
"cell_type": "markdown",
"id": "2150fea2-682b-47c3-9d65-8ce0141f48bf",
"metadata": {},
"source": [
"## Custom PDB Input Component using Vue.js\n",
"\n",
"[Panel](https://panel.holoviz.org/index.html) makes it easy to build data apps in Python using a wide range of [built in components](https://panel.holoviz.org/reference/index.html). Sometimes you want to go beyond those built in components and build [custom components](https://panel.holoviz.org/user_guide/Custom_Components.html) instead.\n",
"\n",
"The lessons below will build on each other, culminating in a Panel+Vue.js custom component inspired by medicinal chemistry. It’ll look like this:\n",
"\n",
"\n",
"\n",
"This guide is heavily inspired by [Web Development with Python and Vue.js Components](https://blog.reverielabs.com/python-vue-components/)."
]
},
{
"cell_type": "markdown",
"id": "24d76fd9-5bc4-4a03-8572-980a903ed1aa",
"metadata": {},
"source": [
"## What is a Vue Component?"
]
},
{
"cell_type": "markdown",
"id": "04bb5df5-4a35-4bc0-9712-f19024e522f2",
"metadata": {},
"source": [
"[Vue components](https://vuejs.org/v2/guide/components.html) are self-contained elements that can render HTML/CSS, store data within Javascript variables, and much more. Once defined, they are callable as HTML tags. For example, within existing HTML a Vue component can be rendered like below:\n",
"\n",
""
]
},
{
"cell_type": "markdown",
"id": "ef9bc46b-a515-4160-99d4-b9a6e45dd2ce",
"metadata": {},
"source": [
"Here, the Vue component tags `