diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..a2a1041
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,120 @@
+# ---> Node
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+lerna-debug.log*
+.pnpm-debug.log*
+
+# Diagnostic reports (https://nodejs.org/api/report.html)
+report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
+
+# Runtime data
+pids
+*.pid
+*.seed
+*.pid.lock
+
+# Directory for instrumented libs generated by jscoverage/JSCover
+lib-cov
+
+# Coverage directory used by tools like istanbul
+coverage
+*.lcov
+
+# nyc test coverage
+.nyc_output
+
+# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
+.grunt
+
+# Bower dependency directory (https://bower.io/)
+bower_components
+
+# node-waf configuration
+.lock-wscript
+
+# Compiled binary addons (https://nodejs.org/api/addons.html)
+build/Release
+
+# Dependency directories
+node_modules/
+jspm_packages/
+
+# Snowpack dependency directory (https://snowpack.dev/)
+web_modules/
+
+# TypeScript cache
+*.tsbuildinfo
+
+# Optional npm cache directory
+.npm
+
+# Optional eslint cache
+.eslintcache
+
+# Microbundle cache
+.rpt2_cache/
+.rts2_cache_cjs/
+.rts2_cache_es/
+.rts2_cache_umd/
+
+# Optional REPL history
+.node_repl_history
+
+# Output of 'npm pack'
+*.tgz
+
+# Yarn Integrity file
+.yarn-integrity
+
+# dotenv environment variables file
+.env
+.env.test
+.env.production
+
+# parcel-bundler cache (https://parceljs.org/)
+.cache
+.parcel-cache
+
+# Next.js build output
+.next
+out
+
+# Nuxt.js build / generate output
+.nuxt
+dist
+
+# Gatsby files
+.cache/
+# Comment in the public line in if your project uses Gatsby and not Next.js
+# https://nextjs.org/blog/next-9-1#public-directory-support
+# public
+
+# vuepress build output
+.vuepress/dist
+
+# Serverless directories
+.serverless/
+
+# FuseBox cache
+.fusebox/
+
+# DynamoDB Local files
+.dynamodb/
+
+# TernJS port file
+.tern-port
+
+# Stores VSCode versions used for testing VSCode extensions
+.vscode-test
+
+# yarn v2
+.yarn/cache
+.yarn/unplugged
+.yarn/build-state.yml
+.yarn/install-state.gz
+.pnp.*
+
diff --git a/README.md b/README.md
index d735640..3d29209 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,94 @@
-# select
+# Tiny Components - Select
+Created with [Riot.js](https://riot.js.org). Select Field Element, Filter-Option to connect a [Observable](https://github.com/riot/observable). Using Styles for UI from [Plain-UI](https://plain-ui.com)
+Source: [https://git.node001.net/tiny-components/select](https://git.node001.net/tiny-components/select)
+
+## Installation
+
+Setup this registry in your project .npmrc file:
+
+```
+@tiny-components:registry=https://git.node001.net/api/packages/tiny-components/npm/
+```
+
+Install with npm or yarn
+
+```
+npm i --save @tiny-components/select
+yarn add @tiny-components/select
+```
+
+## How to use
+
+```
+
+```
+
+### Attribute: multiple
+
+Select Multiple Options
+
+### Attribute: searchable
+
+Show Input-Field for Filtering Options, only works if Observable as Store is added and has Function Query.
+
+### Props: options
+
+Default Options for Start
+
+### Props: store
+
+import observable from '@riotjs/observable'
+
+let store = observable({
+ locations: [{
+ 'label' : 'A',
+ 'value' : 'a'
+ },{
+ 'label' : 'B',
+ 'value' : 'b'
+ },{
+ 'label' : 'C',
+ 'value' : 'c'
+ },{
+ 'label' : 'D',
+ 'value' : 'd'
+ },{
+ 'label' : 'E',
+ 'value' : 'e'
+ },{
+ 'label' : 'F',
+ 'value' : 'f'
+ },{
+ 'label' : 'G',
+ 'value' : 'g'
+ },{
+ 'label' : 'H',
+ 'value' : 'h'
+ },{
+ 'label' : 'I',
+ 'value' : 'i'
+ },{
+ 'label' : 'J',
+ 'value' : 'j'
+ }],
+
+ query(value) {
+ if (value !== undefined) {
+ const results = []
+
+ // run through locations and check string contains value
+ for (let i = 0; i < this.locations.length; i++) {
+ if (this.locations[i].value.includes(value)) {
+ results.push(this.locations[i])
+ }
+ }
+
+ this.trigger('update', results)
+ } else {
+
+ // if value is undefined, adding all locations
+ this.trigger('update', this.locations)
+ }
+ }
+})
diff --git a/example/assets-manifest.json b/example/assets-manifest.json
new file mode 100644
index 0000000..0205fb2
--- /dev/null
+++ b/example/assets-manifest.json
@@ -0,0 +1,5 @@
+{
+ "/example/js/spritemap.js": "/example/js/spritemap.js?version=7ce719c9e00cdc31c694d971b9a5e812",
+ "/example/js/example.js": "/example/js/example.js?version=2451e89d416b448c318a4c3866f1ebf8",
+ "/example/css/styles.css": "/example/css/styles.css?version=aa01e6a7dccff39e3f40dcf35c9e9576"
+}
\ No newline at end of file
diff --git a/example/css/styles.css b/example/css/styles.css
new file mode 100644
index 0000000..103dd11
--- /dev/null
+++ b/example/css/styles.css
@@ -0,0 +1,2343 @@
+/*!***************************************************************************************************************************************!*\
+ !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!./node_modules/sass-loader/dist/cjs.js!./src/example.scss ***!
+ \***************************************************************************************************************************************/
+@charset "UTF-8";
+@font-face {
+ font-family: "IBM Plex Mono";
+ src: url("IBMPlexMono.eot");
+ src: url("IBMPlexMono.eot?#iefix") format("embedded-opentype"), url("IBMPlexMono.woff2") format("woff2"), url("IBMPlexMono.woff") format("woff"), url("IBMPlexMono.ttf") format("truetype");
+ font-weight: normal;
+ font-style: normal;
+ font-display: swap;
+}
+@font-face {
+ font-family: "IBM Plex Mono";
+ src: url("IBMPlexMono-Bold.eot");
+ src: url("IBMPlexMono-Bold.eot?#iefix") format("embedded-opentype"), url("IBMPlexMono-Bold.woff2") format("woff2"), url("IBMPlexMono-Bold.woff") format("woff"), url("IBMPlexMono-Bold.ttf") format("truetype");
+ font-weight: bold;
+ font-style: normal;
+ font-display: swap;
+}
+/**
+ * functions
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+/**
+ * strip unit from value
+ *
+ * @param {mixed} $value
+ * @return {number}
+ *
+ */
+/**
+ *
+ *
+ * https://css-tricks.com/snippets/sass/str-replace-function/
+ *
+ */
+/**
+ * get value of key "default" in map
+ *
+ * @param {map} $value
+ * @return {boolean|unit}
+ *
+ */
+/**
+ * factor
+ *
+ *
+ *
+ * @param {integer} $x
+ * @return {float}
+ *
+ */
+/**
+ * mixins
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+/**
+ * Clear Floats
+ *
+ *
+ *
+ */
+/**
+ * clear styles from list
+ *
+ *
+ */
+/**
+ * media-queries as mixins
+ * based on breakpoints from variables
+ *
+ *
+ *
+ */
+/**
+ * Set property and his value for each Breakpoint
+ *
+ * (
+ * $md: 10px
+ * )
+ *
+ *
+ * @param {css} $property
+ * @param {map} $breakpoints
+ * @param {Boolean} $important [false]
+ *
+ */
+/**
+ * Set property and his value with an factor for each Breakpoint
+ *
+ * (
+ * $md: 10px
+ * )
+ *
+ * @param {css} $property
+ * @param {number} $factor
+ * @param {map} $breakpoints
+ * @param {Boolean} $important [false]
+ *
+ */
+/**
+ * Set font-size from Breakpoints, use for calculating difference from font-size and default font-size
+ *
+ * (
+ * $md: 1rem
+ * )
+ *
+ * @param {map} $breakpoints
+ * @param {unit} $font-size
+ * @param {unit} $default
+ * @param {Boolean} $important [false]
+ *
+ */
+/**
+ * adding overlay with z-index and color
+ *
+ * @param {z-index}
+ * @param {color}
+ *
+ */
+/**
+ * variables
+ *
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+/**
+ * grid
+ *
+ */
+:root {
+ --grid-columns: 12;
+ --grid-grid-spacing: 15px;
+ --grid-xs: 576px;
+ --grid-sm: 768px;
+ --grid-md: 992px;
+ --grid-lg: 1200px;
+ --grid-xlg: 1600px;
+ --grid-xxs-max: 575px;
+ --grid-xs-max: 767px;
+ --grid-sm-max: 991px;
+ --grid-md-max: 1199px;
+ --grid-lg-max: 1599px;
+}
+
+/**
+ * fonts
+ *
+ */
+/**
+ * colors
+ *
+ *
+ */
+/**
+ * margin
+ *
+ */
+/**
+ * padding
+ *
+ */
+/**
+ * border
+ *
+ */
+/**
+ * normalize
+ *
+ * Thanks to https://necolas.github.io/normalize.css/, use a lot from them
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+:root {
+ --body: #f9f9f9;
+ --text: #363636;
+ --text-contrast: #ffffff;
+ --primary: #3e3e3e;
+ --primary-contrast: #3e3e3e;
+ --active: #717171;
+ --active-contrast: #ffffff;
+ --link: #363636;
+ --link-hover: #d95959;
+ --danger: #d95959;
+ --danger-contrast: #ecacac;
+ --info: #0090d4;
+ --info-constrast: rgb(59, 192.1320754717, 255);
+ --success: #64ac64;
+ --success-contrast: rgb(166.4285714286, 207.5714285714, 166.4285714286);
+ --warning: #f0ad4e;
+ --warning-contrast: rgb(247.96875, 216.5625, 172.03125);
+ --background: #3e3e3e;
+ --background-contrast: #ffffff;
+ --background-alpha: rgba(0, 0, 0, 0.7);
+ --border: #3e3e3e;
+ --border-contrast: #ffffff;
+ --font-family: IBM Plex Mono, sans-serif;
+}
+
+html {
+ font-size: 100%;
+ line-height: 1.15;
+ -webkit-text-size-adjust: 100%;
+}
+
+body,
+html {
+ margin: 0;
+ height: 100%;
+}
+
+html,
+legend {
+ box-sizing: border-box;
+}
+
+body {
+ font-family: var(--font-family);
+ color: var(--text);
+ background-color: var(--body);
+ direction: ltr;
+ font-size: 0.9rem;
+}
+@media only screen and (min-width: 992px) {
+ body {
+ font-size: 1rem;
+ }
+}
+body {
+ line-height: 1.618;
+}
+
+a {
+ color: var(--link);
+ transition: color 0.5s;
+ text-decoration: none;
+}
+a:hover {
+ color: var(--link-hover);
+}
+a:focus {
+ outline: none;
+}
+
+main {
+ display: block;
+}
+
+*,
+*::after,
+*::before {
+ box-sizing: inherit;
+}
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+figure {
+ margin: 0;
+}
+
+figcaption {
+ margin: 0;
+}
+
+p {
+ margin: 0;
+}
+
+/**
+ * form elements
+ *
+ *
+ */
+button,
+input,
+optgroup,
+select,
+textarea {
+ margin: 0;
+}
+
+fieldset {
+ margin: 0 0 1rem;
+}
+
+button,
+select {
+ text-transform: none;
+}
+
+[type=button],
+[type=reset],
+[type=submit],
+button {
+ -webkit-appearance: button;
+}
+
+[type=button]::-moz-focus-inner,
+[type=reset]::-moz-focus-inner,
+[type=submit]::-moz-focus-inner,
+button::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+[type=button]:-moz-focusring,
+[type=reset]:-moz-focusring,
+[type=submit]:-moz-focusring,
+button:-moz-focusring {
+ outline: 1px dotted ButtonText;
+}
+
+legend {
+ box-sizing: border-box;
+ display: table;
+ max-width: 100%;
+ padding: 0;
+ white-space: normal;
+}
+
+[type=number]::-webkit-inner-spin-button,
+[type=number]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+[type=search] {
+ -webkit-appearance: textfield;
+ outline-offset: -2px;
+}
+
+[type=search]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+::-webkit-file-upload-button {
+ -webkit-appearance: button;
+ font: inherit;
+}
+
+/**
+ * hr
+ *
+ */
+hr {
+ box-sizing: content-box;
+ height: 0;
+ overflow: visible;
+ border: 0;
+ border-top: 1px solid var(--border);
+ margin: 0 0 1rem;
+}
+
+progress {
+ vertical-align: baseline;
+}
+
+details {
+ display: block;
+}
+
+summary {
+ display: list-item;
+}
+
+code,
+kbd,
+pre,
+samp {
+ font-family: var(--font-family);
+ font-size: 0.9rem;
+}
+
+/**
+ * Content
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+.content p {
+ margin: 0 0 1rem;
+}
+@media only screen and (min-width: 992px) {
+ .content p {
+ margin: 0 0 1.2rem;
+ }
+}
+.content a,
+.content ins,
+.content u {
+ text-decoration-skip: ink edges;
+}
+.content a {
+ text-decoration: underline;
+}
+.content b,
+.content strong {
+ font-weight: bolder;
+}
+.content small {
+ font-size: 80%;
+}
+.content {
+ /**
+ * Prevent `sub` and `sup` elements from affecting the line height in
+ * all browsers.
+ */
+}
+.content sub,
+.content sup {
+ font-size: 70%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+.content sub {
+ bottom: -0.25em;
+}
+.content sup {
+ top: -0.5em;
+}
+.content abbr[title] {
+ border-bottom: 1px dotted;
+ cursor: help;
+ text-decoration: none;
+}
+.content mark {
+ padding: 0.25rem;
+ background-color: var(--warning);
+}
+.content {
+ /**
+ * blockquote
+ *
+ *
+ */
+}
+.content blockquote {
+ border-left: 1px solid var(--border);
+ margin-left: 0;
+ padding: 0.6rem 0.8rem;
+}
+.content blockquote p:last-child {
+ margin-bottom: 0;
+}
+.content {
+ /**
+ * lists
+ *
+ */
+}
+.content dl,
+.content ol,
+.content ul {
+ padding: 0;
+ margin: 0 0 1rem;
+}
+@media only screen and (min-width: 992px) {
+ .content dl,
+ .content ol,
+ .content ul {
+ margin: 0 0 1.2rem;
+ }
+}
+.content ul {
+ margin-left: 1.5rem;
+}
+.content ol {
+ margin-left: 2.5rem;
+}
+.content ol ol,
+.content ul ul {
+ margin-top: 0;
+ margin-left: 1.5rem;
+}
+.content ol {
+ list-style: decimal outside;
+}
+.content ul {
+ list-style: square outside;
+}
+.content dl {
+ margin-left: 0.5rem;
+}
+.content dd,
+.content dt {
+ margin: 0;
+}
+.content dt {
+ font-weight: bold;
+}
+.content code {
+ white-space: pre;
+ display: block;
+ color: var(--text-contrast);
+ overflow-y: hidden;
+ overflow-x: auto;
+ border: 1px solid var(--border);
+ border-radius: 2px;
+ background-color: var(--background);
+ margin: 0 0 1rem;
+}
+@media only screen and (min-width: 992px) {
+ .content code {
+ margin: 0 0 1.2rem;
+ }
+}
+.content code {
+ padding: 0.6rem 0.8rem;
+}
+@media only screen and (min-width: 992px) {
+ .content code {
+ padding: 0.7rem 1rem 0.9rem;
+ }
+}
+
+.highlight {
+ padding: 0.15rem 0.4rem 0.25rem;
+ background: var(--primary);
+ color: var(--text-contrast);
+ border-radius: 2px;
+}
+
+/**
+ * Heading
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+/**
+ * add font-size for heading as class and element
+ *
+ *
+ */
+h1, .h1,
+h2, .h2,
+h3, .h3,
+h4, .h4,
+h5, .h5,
+h6, .h6 {
+ font-family: "IBM Plex Mono", sans-serif;
+ font-weight: bold;
+ line-height: 1.2;
+ margin: 0 0 1rem;
+}
+h1.highlight, .h1.highlight,
+h2.highlight, .h2.highlight,
+h3.highlight, .h3.highlight,
+h4.highlight, .h4.highlight,
+h5.highlight, .h5.highlight,
+h6.highlight, .h6.highlight {
+ display: table;
+}
+
+h1, .h1 {
+ font-size: 2.5rem;
+}
+
+h2, .h2 {
+ font-size: 2rem;
+}
+
+h3, .h3 {
+ font-size: 1.75rem;
+}
+
+h4, .h4 {
+ font-size: 1.5rem;
+}
+
+h5, .h5 {
+ font-size: 1.25rem;
+}
+
+h6, .h6 {
+ font-size: 1rem;
+}
+
+@media only screen and (min-width: 992px) {
+ h1, .h1 {
+ font-size: 2.75rem;
+ }
+ h2, .h2 {
+ font-size: 2.5rem;
+ }
+ h3, .h3 {
+ font-size: 2rem;
+ }
+ h4, .h4 {
+ font-size: 1.75rem;
+ }
+ h5, .h5 {
+ font-size: 1.5rem;
+ }
+ h6, .h6 {
+ font-size: 1.2rem;
+ }
+}
+/**
+ *
+ * A
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+.badge {
+ display: inline-block;
+ background-color: var(--background);
+ color: var(--text-contrast);
+ font-size: 0.85rem;
+ padding: 0.4rem 0.8rem;
+ border: 1px solid var(--border);
+ border-radius: 2px;
+}
+.badge--round {
+ display: inline-flex;
+ justify-content: center;
+ border-radius: 50%;
+ width: 2.8em;
+}
+
+/**
+ * Button
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+/**
+ *
+ *
+ */
+/**
+ *
+ *
+ */
+/**
+ *
+ *
+ */
+.button {
+ appearance: none;
+ position: relative;
+ display: inline-flex;
+ align-items: center;
+ text-decoration: none;
+ font-family: var(--font-family);
+ font-size: 1rem;
+ border: 1px solid var(--border);
+ background-color: var(--background-contrast);
+ color: var(--text);
+ border-radius: 2px;
+ transition: background-color 0.1s;
+ margin: 0 0 1rem;
+ padding: 0.5rem 1.3rem;
+ width: 100%;
+}
+@media only screen and (min-width: 768px) {
+ .button {
+ width: auto;
+ }
+}
+.button--small {
+ padding: 0.3rem 1.1rem;
+ font-size: 0.8rem;
+}
+.button:hover, .button--selected {
+ cursor: pointer;
+ text-decoration: none;
+ color: white;
+ background-color: var(--active);
+}
+.button:focus, .button:active {
+ outline: 1px solid var(--active);
+}
+.button:disabled {
+ opacity: 0.5;
+}
+.button:disabled:hover {
+ cursor: not-allowed;
+ border: 1px solid var(--border);
+ background-color: var(--background-contrast);
+ color: var(--border);
+}
+.button--transparent {
+ margin: 0;
+ padding: 0;
+ border: none;
+ background: transparent;
+ border-radius: 0;
+}
+.button--transparent:focus, .button--transparent:active {
+ outline: none;
+}
+.button--danger {
+ border-color: var(--danger);
+}
+.button--danger:hover {
+ background-color: var(--danger);
+}
+.button--danger:focus, .button--danger:active {
+ outline: 2px solid var(--danger);
+}
+.button--info {
+ border-color: var(--info);
+}
+.button--info:hover {
+ background-color: var(--info);
+}
+.button--info:focus, .button--info:active {
+ outline: 2px solid var(--info);
+}
+.button--warning {
+ border-color: var(--warning);
+}
+.button--warning:hover {
+ background-color: var(--warning);
+}
+.button--warning:focus, .button--warning:active {
+ outline: 2px solid var(--warning);
+}
+.button--success {
+ border-color: var(--success);
+}
+.button--success:hover {
+ background-color: var(--success);
+}
+.button--success:focus, .button--success:active {
+ outline: 2px solid var(--success);
+}
+.button--outline {
+ background-color: transparent;
+}
+.button--outline:hover {
+ color: var(--border);
+ border-color: #a4a4a4;
+ background-color: transparent;
+}
+.button--danger.button--outline:hover {
+ border-color: #ecacac;
+}
+.button--info.button--outline:hover {
+ border-color: rgb(59, 192.1320754717, 255);
+}
+.button--warning.button--outline:hover {
+ border-color: rgb(247.96875, 216.5625, 172.03125);
+}
+.button--success.button--outline:hover {
+ border-color: rgb(166.4285714286, 207.5714285714, 166.4285714286);
+}
+.button--full {
+ background-color: var(--active);
+ color: white;
+}
+.button--full:hover {
+ background-color: var(--background-contrast);
+ color: var(--text);
+}
+.button--danger.button--full {
+ background-color: var(--danger);
+}
+.button--danger.button--full:hover {
+ background-color: var(--background-contrast);
+ border-color: var(--danger);
+}
+.button--danger.button--full:focus, .button--danger.button--full:active {
+ outline: 2px solid var(--danger);
+}
+.button--info.button--full {
+ background-color: var(--info);
+}
+.button--info.button--full:hover {
+ background-color: var(--background-contrast);
+ border-color: var(--info);
+}
+.button--info.button--full:focus, .button--info.button--full:active {
+ outline: 2px solid var(--info);
+}
+.button--warning.button--full {
+ background-color: var(--warning);
+}
+.button--warning.button--full:hover {
+ background-color: var(--background-contrast);
+ border-color: var(--warning);
+}
+.button--warning.button--full:focus, .button--warning.button--full:active {
+ outline: 2px solid var(--warning);
+}
+.button--success.button--full {
+ background-color: var(--success);
+}
+.button--success.button--full:hover {
+ background-color: var(--background-contrast);
+ border-color: var(--success);
+}
+.button--success.button--full:focus, .button--success.button--full:active {
+ outline: 2px solid var(--success);
+}
+
+/**
+ *
+ * fields
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+.field-group {
+ margin: 0 0 1rem;
+}
+.field-group--valid .field-text {
+ border-color: var(--success);
+}
+.field-group--valid .icon {
+ fill: var(--success);
+}
+.field-group--error .field-text {
+ border-color: var(--danger);
+}
+.field-group--error .icon {
+ fill: var(--danger);
+}
+
+.field-label {
+ font-size: 1rem;
+ font-family: var(--font-family);
+}
+.field-label .icon {
+ vertical-align: text-bottom;
+}
+.field-label:hover {
+ cursor: pointer;
+}
+
+.field-text, .field-choice {
+ font-family: var(--font-family);
+ font-size: 0.95rem;
+ width: 100%;
+ border: 1px solid #a4a4a4;
+ border-radius: 2px;
+ margin: 0.7rem 0 0;
+}
+.field-text:focus, .field-text:active, .field-choice:focus, .field-choice:active {
+ outline: 0;
+ border-color: var(--border);
+}
+
+.field-text {
+ padding: 0.8em 1.1em;
+}
+
+textarea.field-text {
+ height: 180px;
+}
+
+/**
+ * field-choice
+ *
+ *
+ */
+.field-choice {
+ appearance: none;
+ padding: 0.8em;
+ background-image: linear-gradient(to right, #717171, #717171);
+ background-position: 100%;
+ background-size: 1.5rem 100%;
+ background-repeat: no-repeat;
+}
+.field-choice:active, .field-choice:focus {
+ background-image: linear-gradient(to right, #3e3e3e, #3e3e3e);
+}
+
+/**
+ * radio & checkbox
+ *
+ *
+ *
+ *
+ *
+ */
+[type=checkbox].field-choice,
+[type=radio].field-choice {
+ position: relative;
+ display: none;
+}
+[type=checkbox].field-choice ~ .field-choice__checked,
+[type=radio].field-choice ~ .field-choice__checked {
+ display: none;
+}
+[type=checkbox].field-choice:checked ~ .field-choice__checked,
+[type=radio].field-choice:checked ~ .field-choice__checked {
+ display: inline-block;
+}
+[type=checkbox].field-choice:checked ~ .field-choice__unchecked,
+[type=radio].field-choice:checked ~ .field-choice__unchecked {
+ display: none;
+}
+
+svg.field-choice__unchecked {
+ fill: var(--active);
+}
+
+svg.field-choice__checked {
+ fill: var(--success);
+}
+
+ .field-error {
+ display: inline-block;
+ width: 100%;
+ padding: 0.6em 0.5em;
+ font-size: 0.8rem;
+}
+
+/**
+ *
+ *
+ */
+.field-switch {
+ position: relative;
+ display: inline-block;
+ width: 75px;
+ height: 35px;
+ border: 1px solid var(--border);
+ border-radius: 2px;
+}
+.field-switch:after {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 50%;
+ height: 100%;
+ content: "";
+ border: 1px solid var(--border);
+ border-color: var(--border-contrast);
+ border-radius: 2px;
+ background-color: var(--active);
+ transition: transform 0.25s;
+}
+
+[type=checkbox].field-choice ~ .field-switch:after {
+ left: 0;
+}
+[type=checkbox].field-choice:checked ~ .field-switch {
+ border-color: var(--success);
+}
+[type=checkbox].field-choice:checked ~ .field-switch:after {
+ background-color: var(--success);
+ transform: translateX(100%);
+}
+
+/**
+ * display error for fields
+ *
+ */
+.field-error {
+ color: var(--danger);
+}
+
+/**
+ *
+ *
+ *
+ * A
+ *
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+.group__item {
+ width: auto;
+ display: inline-block;
+ margin: 0 0 1rem;
+ margin-right: 0.25rem;
+}
+.group__item:last-child {
+ margin-right: 0;
+}
+
+/**
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+.icon {
+ width: 1em;
+ height: 1em;
+ max-height: 100%;
+ max-width: 100%;
+ vertical-align: middle;
+ overflow: hidden;
+ font-size: 1.4rem;
+ fill: var(--text);
+}
+
+/**
+ *
+ *

+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+.hero {
+ position: relative;
+}
+.hero img {
+ width: 100%;
+ object-fit: cover;
+ object-position: 50% 50%;
+}
+
+/**
+ *
+ * tabs
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+.tabs {
+ display: flex;
+ flex-direction: column;
+ width: 100%;
+ border-bottom: 1px solid var(--border);
+}
+@media only screen and (min-width: 768px) {
+ .tabs {
+ width: auto;
+ flex-direction: row;
+ }
+}
+.tabs__item {
+ min-height: 2.8em;
+ display: flex;
+ align-items: center;
+ padding: 0 1em;
+ color: var(--text);
+ transition: background-color 0.1s;
+ border-bottom: 3px solid transparent;
+ background-color: transparent;
+ width: 100%;
+}
+@media only screen and (min-width: 768px) {
+ .tabs__item {
+ width: auto;
+ display: inline-flex;
+ }
+}
+.tabs__item:hover {
+ cursor: pointer;
+ background-color: var(--active);
+ color: var(--text-contrast);
+ border-top-left-radius: 2px;
+ border-top-right-radius: 2px;
+}
+.tabs__item--selected {
+ color: var(--text);
+ border-color: var(--border);
+}
+.tabs--contrast {
+ border: 0;
+}
+.tabs--contrast .tabs__item {
+ color: var(--text-contrast);
+}
+.tabs--contrast .tabs__item:hover {
+ background-color: var(--background-contrast);
+ color: var(--text);
+ border-radius: 0;
+}
+.tabs--contrast .tabs__item--selected {
+ border-color: var(--border-contrast);
+}
+.tabs--contrast .tabs__item--selected:hover {
+ border-color: var(--active);
+}
+
+/**
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+.panel, .sidebar__inner {
+ border: 1px solid var(--border);
+ border-radius: 2px;
+ background-color: var(--background-contrast);
+}
+.panel__body, .sidebar__body {
+ padding: 0.6rem 0.8rem;
+}
+@media only screen and (min-width: 992px) {
+ .panel__body, .sidebar__body {
+ padding: 0.7rem 1rem 0.9rem;
+ }
+}
+.panel--border-highlight {
+ border-left-width: 12px;
+}
+
+/**
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+.progress {
+ height: 40px;
+ width: 100%;
+ border: 1px solid var(--border);
+}
+.progress__inner {
+ height: 100%;
+ border: 1px solid var(--background-contrast);
+ background-color: var(--background);
+}
+
+/**
+ *
+ *
+ *
+ * food truck yr franzen pabst
+ *
+ *
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+.figure {
+ margin: 0;
+ display: inline-block;
+ line-height: 0;
+ border: 1px solid var(--border);
+ border-radius: 2px;
+ overflow: hidden;
+}
+.figure__caption {
+ padding: 0.75em 1.1em;
+ font-size: 0.7rem;
+ background: var(--background);
+ line-height: 1.618;
+ margin: 0;
+ color: var(--text-contrast);
+ border-top: 1px solid var(--border-contrast);
+}
+.figure .media {
+ border: 0;
+ border-radius: 0;
+}
+
+.media {
+ border-radius: 2px;
+ border: 1px solid var(--border);
+ width: 100%;
+ height: auto;
+}
+
+/**
+ *
+ * table
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+.table {
+ width: 100%;
+ border: 1px solid var(--border);
+ background: var(--white);
+}
+.table__td {
+ color: var(--text);
+}
+.table__td, .table__th {
+ text-align: left;
+ border-bottom: 1px solid var(--border);
+ padding: 0.25em 0.75em;
+}
+@media only screen and (min-width: 992px) {
+ .table__td, .table__th {
+ padding: 0.5em 1.25em;
+ }
+}
+.table__th {
+ color: white;
+ background-color: var(--background);
+}
+.table--striped .table__tr:nth-child(even) .table__td {
+ background-color: rgb(227.75, 227.75, 227.75);
+}
+.table--hover .table__tr:hover .table__td {
+ color: white;
+ background-color: rgb(87.5, 87.5, 87.5);
+}
+
+/**
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+.bar {
+ display: flex;
+ min-height: 2.8em;
+ background-color: var(--background);
+ color: var(--text-contrast);
+ border: 1px solid var(--border);
+ border-radius: 2px;
+}
+.bar__start {
+ justify-content: start;
+}
+.bar__main {
+ flex-grow: 1;
+}
+.bar__end {
+ justify-content: end;
+}
+.bar__start, .bar__main, .bar__end {
+ display: flex;
+ align-self: center;
+ align-items: center;
+ margin-left: 0.75em;
+}
+.bar__start:last-child, .bar__main:last-child, .bar__end:last-child {
+ margin-right: 0.75em;
+}
+
+/**
+ *
+ *
+ *
+ * food truck yr franzen pabst
+ *
+ *
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+.modal {
+ position: fixed;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ display: flex;
+ visibility: hidden;
+ transition: visibility 0s linear 0.5s;
+ padding: 1rem;
+ z-index: 20;
+ align-items: center;
+ justify-content: center;
+}
+.modal:before {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: transparent;
+ transition: background-color 0.5s;
+ z-index: 19;
+ content: "";
+ transition: background-color 0.5s;
+}
+.modal__inner {
+ position: relative;
+ z-index: 21;
+ transition: transform 0.5s;
+ transform: scale(0);
+ max-width: 600px;
+ width: 100%;
+}
+.modal__title {
+ font-size: 2rem;
+ text-align: center;
+ white-space: pre-line;
+ margin-bottom: 2rem;
+}
+.modal__title .icon {
+ font-size: 3rem;
+}
+.modal__title, .modal__body {
+ color: var(--text-contrast);
+}
+.modal__body {
+ margin-bottom: 1.5rem;
+}
+.modal .button {
+ color: var(--text-contrast);
+}
+.modal--open {
+ display: flex;
+ visibility: visible;
+ transition: visibility 0s linear 0s;
+}
+.modal--open:before {
+ background-color: var(--background-alpha);
+}
+.modal--open .modal__inner {
+ transform: scale(1);
+}
+
+/**
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+.loading {
+ height: 60px;
+ width: 47px;
+ margin: 0 auto;
+ display: flex;
+ align-items: center;
+}
+.loading span {
+ display: block;
+ width: 15px;
+ height: 80px;
+ background-color: var(--background);
+ animation-name: loading-animation;
+ animation-duration: 0.5s;
+ animation-iteration-count: infinite;
+ animation-delay: 0.15s;
+ border-top: 1px solid var(--background);
+ border-bottom: 1px solid var(--background);
+}
+.loading span:first-child {
+ margin-right: 1px;
+ animation-delay: 0s;
+}
+.loading span:last-child {
+ margin-left: 1px;
+ animation-delay: 0.3s;
+}
+
+@keyframes loading-animation {
+ 0% {
+ height: 60px;
+ }
+ 50% {
+ height: 40px;
+ }
+ 100% {
+ height: 60px;
+ }
+}
+/**
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+.sidebar {
+ position: fixed;
+ z-index: 9;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ max-width: 95%;
+ visibility: hidden;
+ transition: visibility 0s linear 0.5s;
+}
+.sidebar:before {
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ background-color: transparent;
+ transition: background-color 0.5s;
+ z-index: 9;
+ content: "";
+ transition: background-color 0.5s;
+}
+.sidebar__inner {
+ position: relative;
+ height: 100%;
+ z-index: 10;
+ transition: transform 0.2s;
+ transform: translateX(-100%);
+}
+.sidebar__footer {
+ position: fixed;
+ left: 0;
+ bottom: 0;
+ display: flex;
+ justify-content: space-between;
+ background: var(--background);
+ width: 100%;
+ padding: 1rem;
+}
+.sidebar--open {
+ visibility: visible;
+ transition: visibility 0s linear 0s;
+}
+.sidebar--open .sidebar__inner {
+ transform: translateX(0);
+}
+.sidebar--open:before {
+ background: var(--background-alpha);
+}
+@media only screen and (min-width: 992px) {
+ .sidebar {
+ max-width: 33%;
+ }
+}
+
+/**
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+.toast {
+ display: flex;
+ background: var(--background);
+ border: 1px solid var(--border);
+ max-width: 800px;
+ width: max-content;
+ margin-top: 1.25rem;
+ position: relative;
+ left: calc(-100% - 2rem);
+ transition: left 0.1s;
+ pointer-events: auto;
+}
+.toast--animation {
+ left: 0;
+}
+.toast__body {
+ width: 100%;
+ padding: 1em 1.25em;
+}
+.toast__button {
+ border: 0;
+ appearance: none;
+ background: var(--background);
+}
+.toast__button:hover {
+ cursor: pointer;
+}
+.toast__body, .toast__button {
+ color: var(--text-contrast);
+}
+.toast__icon, .toast__button {
+ display: flex;
+ align-self: stretch;
+ align-items: center;
+ padding: 0 1em;
+}
+.toast__icon svg, .toast__button svg {
+ font-size: 2rem;
+}
+.toast--danger {
+ background: var(--danger);
+}
+.toast--danger .toast__button {
+ background: var(--danger);
+}
+.toast-wrapper {
+ position: fixed;
+ left: 0;
+ bottom: 0;
+ margin: 2rem;
+ z-index: 30;
+ pointer-events: none;
+}
+
+/**
+ * masonry
+ *
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+.masonry {
+ display: flex;
+ width: 100%;
+ flex-flow: row wrap;
+ gap: 15px;
+}
+.masonry__item {
+ width: 100%;
+ height: 200px;
+}
+@media only screen and (min-width: 768px) {
+ .masonry__item {
+ height: 300px;
+ }
+ .masonry__item:nth-child(4n+1) {
+ width: calc(25% - 10px);
+ }
+ .masonry__item:nth-child(4n+2) {
+ width: calc(55% - 10px);
+ }
+ .masonry__item:nth-child(4n+3) {
+ width: calc(20% - 10px);
+ }
+ .masonry__item:nth-child(4n+4) {
+ width: calc(67% - 10px);
+ }
+ .masonry__item:nth-child(4n+5) {
+ width: calc(33% - 10px);
+ }
+}
+
+/**
+ * slider
+ *
+ *
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+.slider {
+ position: relative;
+ overflow-x: visible;
+}
+.slider__inner {
+ display: flex;
+ white-space: nowrap;
+}
+.slider__item {
+ padding: 0 0.6em;
+ display: inline-block;
+ white-space: normal;
+ flex-shrink: 0;
+}
+
+/**
+ * grid
+ *
+ * This Grid is mainly the Reflex Grid from Lee Gordon https://reflexgrid.com/, he has
+ * done a great work, for i few changes it was needed to integrated
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+/**
+ * grid: mixin
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+/**
+ * order class generation mixins
+ *
+ */
+/**
+ * offset class generation mixins
+ *
+ */
+/**
+ * modifier mixins
+ *
+ */
+/**
+ * justify-content
+ *
+ * Uses "text-align" for the fallback inline-block grid
+ * "text-align" is globally supported and works on all rows except the last
+ * "text-align-last", where supported, handles the last line (and, happily, grids with only one row)
+ *
+ */
+/**
+ * Responsible Visibility
+ *
+ */
+/**
+ * Breakpoint viewport sizes and media queries
+ *
+ * Breakpoints are defined as a map of (name: minimum width), order from small to large:
+ * (xs: 576px, sm: 768px, md: 992px)
+ * The map defined in the `$reflex-breakpoints` global variable is used as the `$breakpoints` argument by default.
+ * Name of the next breakpoint, or null for the last breakpoint.
+ * >> breakpoint-next(sm) -> md
+ * >> breakpoint-next(sm, $breakpoints: (xs: 576px, sm: 768px, md: 992px)) -> md
+ * >> breakpoint-next(sm, $breakpoint-names: (xs sm md)) -> md
+ *
+ */
+/**
+ * Minimum breakpoint width. Null for the smallest (first) breakpoint.
+ * breakpoint-min(sm, (xs: 576px, sm: 768px, md: 992px)) -> 768px
+ *
+ */
+/**
+ * Media of at most the maximum breakpoint width. No query for the largest breakpoint.
+ * Makes the @content apply to the given breakpoint and narrower.
+ *
+ */
+/**
+ * Media between the breakpoint's minimum and maximum widths.
+ * No minimum for the smallest breakpoint, and no maximum for the largest one.
+ * Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.
+ *
+ */
+/**
+ * grid: helpers
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+.wrap {
+ -webkit-flex-wrap: wrap;
+ flex-wrap: wrap;
+}
+
+.wrap-reverse {
+ -webkit-flex-wrap: wrap-reverse;
+ flex-wrap: wrap-reverse;
+}
+
+/**
+ * flex-direction
+ *
+ */
+
+/**
+ * align items (cross axis)
+ *
+ */
+
+/**
+ * align content (cross axis)
+ *
+ */
+
+/**
+ * align-self
+ *
+ */
+
+/**
+ * justify-content (main axis)
+ *
+ */
+
+.justify-end {
+ -webkit-justify-content: flex-end;
+ justify-content: flex-end;
+}
+
+.justify-center {
+ -webkit-justify-content: center;
+ justify-content: center;
+}
+
+/**
+ * cosmetic grid modifiers
+ *
+ */
+
+/**
+ * col modifiers
+ *
+ */
+
+/**
+ * col-grid contents
+ *
+ */
+
+/**
+ * Responsive visibility modifiers
+ *
+ */
+
+.container {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ width: 100%;
+ margin-right: auto;
+ margin-left: auto;
+ padding-right: 30px;
+ padding-left: 30px;
+}
+.container .grid {
+ margin-right: -15px;
+ margin-left: -15px;
+}
+
+@media (min-width: 576px) {
+ .container {
+ max-width: 576px;
+ }
+}
+@media (min-width: 768px) {
+ .container {
+ max-width: 768px;
+ }
+}
+@media (min-width: 992px) {
+ .container {
+ max-width: 992px;
+ }
+}
+@media (min-width: 1200px) {
+ .container {
+ max-width: 1200px;
+ }
+}
+@media (min-width: 1600px) {
+ .container {
+ max-width: 1600px;
+ }
+}
+
+.grid {
+ display: block;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-flex-wrap: wrap;
+ flex-wrap: wrap;
+ padding: 0;
+ margin: 0 auto;
+ position: relative;
+}
+.grid::after, .grid::before {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.grid {
+ list-style-type: none;
+}
+
+ .col-12 {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+ position: relative;
+ width: 100%;
+ vertical-align: top;
+ padding: 15px;
+}
+ .col-12::after, .col-12::before {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+ .col-12 .grid {
+ -webkit-flex: 1 1 auto;
+ flex: 1 1 auto;
+ margin: -15px;
+}
+
+/**
+ * grid generation
+ *
+ *
+ */
+.col-12 {
+ width: 100%;
+}
+@media (min-width: 992px) {
+ .col-md-6 {
+ width: 50%;
+ }
+}
+/**
+ * col-auto
+ *
+ *
+ */
+/**
+ * order helpers generation
+ *
+ *
+ */
+/**
+ * offset helpers generation
+ *
+ *
+ */
+/**
+ * core
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+.border {
+ border: 1px solid var(--border);
+}
+
+.round {
+ border-radius: 50%;
+}
+
+/**
+ * z-index
+ *
+ *
+ */
+
+/**
+ * floating
+ *
+ *
+ */
+
+.float-right {
+ float: right;
+}
+
+.centered {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+/**
+ * position
+ *
+ *
+ */
+.absolute {
+ position: absolute !important;
+}
+
+.fixed {
+ position: fixed !important;
+}
+
+.relative {
+ position: relative !important;
+}
+
+/**
+ *
+ *
+ */
+
+/**
+ *
+ *
+ */
+.overflow-x-hidden {
+ overflow-x: hidden;
+}
+
+.object-fit-cover {
+ object-fit: cover;
+}
+
+/**
+ * Sizing
+ *
+ * Width and Height Classes,
+ * Sizes with percentage will calculate with the Reflex Grid
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+/**
+ * mixin: sizing
+ *
+ */
+/**
+ * mixin: sizing for each breakpoint
+ *
+ *
+ */
+.h-1 {
+ height: 1px;
+}
+.h-100 {
+ height: 100%;
+}
+.w-col-12 {
+ width: 100%;
+}
+.h-1 {
+ height: 0.5rem;
+}
+.h-6 {
+ height: 3rem;
+}
+.h-70 {
+ height: 35rem;
+}
+/**
+ * Spacing
+ *
+ * creates margin and padding for each direction and for each breakpont
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+/**
+ * mixin: spacing for single padding or margin
+ *
+ *
+ */
+/**
+ * mixin: spacing for each breakpoint
+ *
+ *
+ */
+/**
+ *
+ *
+ *
+ */
+.marginless {
+ margin: 0;
+}
+
+.m-last-child-0 > *:last-child {
+ margin: 0;
+}
+
+.m-bottom-last-child-0 > *:last-child {
+ margin-bottom: 0;
+}
+
+.m-1 {
+ margin: 1px;
+}
+.m-top-0 {
+ margin-top: 0;
+}
+.m-top-4 {
+ margin-top: 1.125rem;
+}
+.m-top-5 {
+ margin-top: 2rem;
+}
+.m-top-6 {
+ margin-top: 3.125rem;
+}
+.m-bottom-0 {
+ margin-bottom: 0;
+}
+.m-bottom-4 {
+ margin-bottom: 1.125rem;
+}
+.m-bottom-5 {
+ margin-bottom: 2rem;
+}
+.m-left-3 {
+ margin-left: 0.5rem;
+}
+@media only screen and (min-width: 768px) {
+ .m-left-sm-3 {
+ margin-left: 0.5rem;
+ }
+}
+.p-0 {
+ padding: 0;
+}
+
+.p-1 {
+ padding: 1px;
+}
+
+.p-0 {
+ padding: 0.125rem;
+}
+.p-1 {
+ padding: 0rem;
+}
+.p-3 {
+ padding: 0.5rem;
+}
+/**
+ * colors
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+
+.color-text-contrast {
+ color: var(--text-contrast);
+}
+
+.color-danger {
+ color: var(--danger);
+}
+
+.fill-text {
+ fill: var(--text);
+}
+.fill-text svg {
+ fill: var(--text);
+}
+
+.fill-text-contrast {
+ fill: var(--text-contrast);
+}
+.fill-text-contrast svg {
+ fill: var(--text-contrast);
+}
+
+.fill-danger {
+ fill: var(--danger);
+}
+.fill-danger svg {
+ fill: var(--danger);
+}
+
+.fill-success {
+ fill: var(--success);
+}
+.fill-success svg {
+ fill: var(--success);
+}
+
+.fill-text-hover:hover {
+ fill: var(--text);
+}
+.fill-text-hover:hover svg {
+ fill: var(--text);
+}
+
+.border-color-danger {
+ border-color: var(--danger);
+}
+
+.border-color-info {
+ border-color: var(--info);
+}
+
+.background-color-primary {
+ background-color: var(--primary);
+}
+
+/**
+ * typography
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+.left {
+ text-align: left;
+}
+.right {
+ text-align: right;
+}
+.center {
+ text-align: center;
+}
+.justify {
+ text-align: justify;
+}
+.uppercase {
+ text-transform: uppercase;
+}
+.lowercase {
+ text-transform: lowercase;
+}
+.crossed {
+ text-decoration: line-through;
+}
+.underline {
+ text-decoration: underline;
+}
+.capitalize {
+ text-transform: capitalize;
+}
+.italic {
+ font-style: italic;
+}
+.light {
+ font-weight: lighter;
+}
+.normal {
+ font-weight: normal;
+}
+.medium {
+ font-weight: medium;
+}
+.bold {
+ font-weight: bolder;
+}
+/**
+ * font-sizes
+ *
+ *
+ */
+.size-big {
+ font-size: 2.7rem;
+}
+/**
+ * white-space
+ *
+ *
+ */
+/**
+ * visibility
+ *
+ *
+ * @author Björn Hase, me@herr-hase.wtf
+ * @license http://opensource.org/licenses/MIT The MIT License
+ * @link https://gitea.node001.net/tiny-components/plain-ui.git
+ *
+ */
+/**
+ * display
+ *
+ *
+ */
+/**
+ * for hidden-xs etc, show https://reflexgrid.com/#visibility-helpers
+ *
+ * @TODO full integration of reflexgrid will change this part
+ *
+ */
+/**
+ * Visibility
+ *
+ */
+
+/**
+ * Opacity
+ *
+ *
+ */
+
+/**
+ *
+ *
+ */
+
+.field-select__options-panel {
+ overflow-x: scroll;
+ max-height: 15vh;
+}
+.field-select__options-item {
+ position: relative;
+}
+.field-select__options-item-check, .field-select__options-item-uncheck {
+ font-size: 1.5rem;
+ vertical-align: middle;
+ line-height: 0;
+ margin: -0.2rem 0.25rem 0 0;
+}
+.field-select__options-item-check {
+ color: var(--success);
+ display: none;
+}
+.field-select__options-item-uncheck {
+ display: inline-block;
+}
+.field-select__options-item--selected {
+ color: white;
+ background-color: var(--active);
+}
+.field-select__options-item--selected .field-select__options-item-check {
+ display: inline-block;
+}
+.field-select__options-item--selected .field-select__options-item-uncheck {
+ display: none;
+}
+.field-select__options-filter {
+ position: relative;
+}
+.field-select__options-filter--active .field-select__options-filter-reset {
+ display: block;
+}
+.field-select__options-filter-reset {
+ position: absolute;
+ display: none;
+ top: 0;
+ right: 0;
+ border: 0;
+ background: transparent;
+ color: var(--danger);
+ font-size: 1.75rem;
+ margin: 0.1rem 0.3rem;
+}
+.field-select__options-filter-reset:hover {
+ cursor: pointer;
+}
+.field-select__options-list {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+.field-select__options-list li {
+ border: 1px solid #3e3e3e;
+ border-top: 0;
+ border-left: 0;
+ border-right: 0;
+ padding: 0.5rem;
+}
+.field-select__options-list li .icon {
+ margin-top: -3px;
+ margin-right: 5px;
+ font-size: 1.8rem;
+}
+.field-select__options-list li:hover {
+ cursor: pointer;
+}
+.field-select__options-list li:last-child {
+ border-bottom: 0;
+}
+
+/*# sourceMappingURL=styles.css.map */
\ No newline at end of file
diff --git a/example/index.html b/example/index.html
new file mode 100644
index 0000000..3868e3e
--- /dev/null
+++ b/example/index.html
@@ -0,0 +1,102 @@
+
+
+
+
+
+ Tiny Components | Select
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/example/js/example.js b/example/js/example.js
new file mode 100644
index 0000000..55f2ddd
--- /dev/null
+++ b/example/js/example.js
@@ -0,0 +1 @@
+(()=>{var __webpack_modules__={"./node_modules/@riotjs/observable/dist/observable.js"(module){eval("{;(function(window, undefined) {const ALL_CALLBACKS = '*'\nconst define = Object.defineProperties\nconst entries = Object.entries\n\nconst on = (callbacks, el) => (event, fn) => {\n if (callbacks.has(event)) {\n callbacks.get(event).add(fn)\n } else {\n callbacks.set(event, new Set().add(fn))\n }\n\n return el\n}\n\nconst deleteCallback = (callbacks, el, event, fn) => {\n if (fn) {\n const fns = callbacks.get(event)\n\n if (fns) {\n fns.delete(fn)\n if (fns.size === 0) callbacks.delete(event)\n }\n } else callbacks.delete(event)\n}\n\nconst off = (callbacks, el) => (event, fn) => {\n if (event === ALL_CALLBACKS && !fn) {\n callbacks.clear()\n } else {\n deleteCallback(callbacks, el, event, fn)\n }\n\n return el\n}\n\nconst one = (callbacks, el) => (event, fn) => {\n function on(...args) {\n el.off(event, on)\n fn.apply(el, args)\n }\n return el.on(event, on)\n}\n\nconst trigger = (callbacks, el) => (event, ...args) => {\n const fns = callbacks.get(event)\n\n if (fns) fns.forEach(fn => fn.apply(el, args))\n\n if (callbacks.get(ALL_CALLBACKS) && event !== ALL_CALLBACKS) {\n el.trigger(ALL_CALLBACKS, event, ...args)\n }\n\n return el\n}\n\nconst observable = function(el) { // eslint-disable-line\n const callbacks = new Map()\n const methods = {on, off, one, trigger}\n\n el = el || {}\n\n define(el,\n entries(methods).reduce((acc, [key, method]) => {\n acc[key] = {\n value: method(callbacks, el),\n enumerable: false,\n writable: false,\n configurable: false\n }\n\n return acc\n }, {})\n )\n\n return el\n}\n /* istanbul ignore next */\n // support CommonJS, AMD & browser\n if (true)\n module.exports = observable\n else // removed by dead control flow\n{}\n\n})(typeof window != 'undefined' ? window : undefined);\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/@riotjs/observable/dist/observable.js?\n}")},"./src/select.riot"(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n css: null,\n\n exports: {\n state: {\n keys: {\n label: 'label',\n value: 'value'\n }\n },\n\n /**\n *\n *\n */\n onBeforeMount(props, state) {\n\n // init state\n this.state = { \n ...state,\n selected: [],\n hasUpdated: false,\n options: [],\n query: ''\n }\n\n if (this.props.label) {\n this.state.keys.label = props.label\n }\n\n if (this.props.value) {\n this.state.keys.value = props.value\n }\n\n if (this.props.options) {\n this.state.options = props.options\n }\n },\n\n /**\n * \n *\n */\n onMounted() {\n\n // if store update, add data to options\n if (this.props.store) {\n this.props.store.on('update', (data) => {\n\n if (this.state.selected.length > 0) {\n for (let i = 0; i < this.state.selected.length; i++) {\n\n let found = false\n\n for (let j = 0; j < data.length; j++) {\n if (data[j][ this.state.keys.value ] == this.state.selected[i][ this.state.keys.value ]) {\n found = true\n }\n }\n\n if (found === false) {\n data.unshift(this.state.selected[i])\n }\n }\n }\n\n this.state.options = data\n this.update()\n })\n\n this.props.store.query()\n }\n\n // getting closet form-element and add reset\n this.root.closest('form').addEventListener('reset', () => {\n this.reset()\n })\n },\n\n /**\n *\n *\n */\n onBeforeUpdate() {\n\n // props has changed after reset \n if (this.props.selected && this.props.selected.length > 0 && !this.state.hasUpdated) {\n this.state.selected = this.props.selected\n this.state.hasUpdated = true\n }\n\n },\n\n /**\n * reset searchable\n *\n */\n handleResetSearchable(event) {\n event.target.previousElementSibling.value = ''\n this.state.query = ''\n this.props.store.query(this.state.query)\n },\n\n /**\n * if pressed has ended, call query \n *\n */\n handleOnKeyUp(event) {\n this.state.query = event.target.value.trim()\n this.props.store.query(this.state.query)\n },\n\n /**\n * toggle selected, if not found add to selected\n *\n */\n handleToggle(event, option) {\n const index = this.searchSelected(option)\n\n if (index !== false) {\n this.state.selected.splice(index, 1)\n } else {\n if ((this.props.multiple === undefined && this.state.selected.length > 0)) {\n this.state.selected = []\n }\n\n this.state.selected.push(option)\n }\n\n this.update()\n },\n\n /**\n * if item is in selected add css class\n *\n */\n getItemClasses(classes, option) {\n const index = this.searchSelected(option)\n\n if (index !== false) {\n classes.push('field-select__options-item--selected')\n }\n\n return classes.join(' ')\n },\n\n /**\n * if query is not empty show button for reset filter\n *\n */\n getFilterClasses(classes) {\n if (this.state.query.length > 0) {\n classes.push('field-select__options-filter--active')\n }\n\n return classes.join(' ')\n },\n\n /**\n * search all selected for value return index or false \n *\n * @param options object\n */\n searchSelected(option) {\n let index = false\n\n for (let i = 0; i < this.state.selected.length; i++) {\n if (this.state.selected[i] && this.state.selected[i][ this.state.keys.value ] == option[ this.state.keys.value ]) {\n index = i\n break;\n }\n }\n\n return index\n },\n\n /**\n * reset component\n *\n */\n reset() {\n this.state.selected = []\n this.state.hasUpdated = false\n\n this.update()\n }\n },\n\n template: (\n template,\n expressionTypes,\n bindingTypes,\n getComponent\n ) => template(\n '',\n [\n {\n redundantAttribute: 'expr0',\n selector: '[expr0]',\n\n expressions: [\n {\n type: expressionTypes.ATTRIBUTE,\n isBoolean: false,\n name: 'name',\n evaluate: _scope => _scope.props.name\n }\n ]\n },\n {\n type: bindingTypes.EACH,\n getKey: null,\n condition: null,\n\n template: template(\n null,\n [\n {\n expressions: [\n {\n type: expressionTypes.VALUE,\n evaluate: _scope => _scope.selected[_scope.state.keys.value]\n }\n ]\n }\n ]\n ),\n\n redundantAttribute: 'expr1',\n selector: '[expr1]',\n itemName: 'selected',\n indexName: null,\n evaluate: _scope => _scope.state.selected\n },\n {\n type: bindingTypes.IF,\n evaluate: _scope => _scope.props.searchable !== undefined,\n redundantAttribute: 'expr2',\n selector: '[expr2]',\n\n template: template(\n '',\n [\n {\n expressions: [\n {\n type: expressionTypes.ATTRIBUTE,\n isBoolean: false,\n name: 'class',\n\n evaluate: _scope => _scope.getFilterClasses(\n ['field-select__options-filter']\n )\n }\n ]\n },\n {\n redundantAttribute: 'expr3',\n selector: '[expr3]',\n\n expressions: [\n {\n type: expressionTypes.ATTRIBUTE,\n isBoolean: false,\n name: 'placeholder',\n evaluate: _scope => _scope.props.placeholderFilter\n },\n {\n type: expressionTypes.EVENT,\n name: 'onkeyup',\n evaluate: _scope => event => { _scope.handleOnKeyUp(event) }\n }\n ]\n },\n {\n redundantAttribute: 'expr4',\n selector: '[expr4]',\n\n expressions: [\n {\n type: expressionTypes.EVENT,\n name: 'onclick',\n evaluate: _scope => event => { _scope.handleResetSearchable(event) }\n }\n ]\n }\n ]\n )\n },\n {\n type: bindingTypes.EACH,\n getKey: null,\n condition: null,\n\n template: template(\n '\\n ☑\\n \\n ☐\\n ',\n [\n {\n expressions: [\n {\n type: expressionTypes.TEXT,\n childNodeIndex: 2,\n\n evaluate: _scope => [\n _scope.option[_scope.state.keys.label]\n ].join(\n ''\n )\n },\n {\n type: expressionTypes.ATTRIBUTE,\n isBoolean: false,\n name: 'class',\n\n evaluate: _scope => _scope.getItemClasses(\n ['field-select__options-item'],\n _scope.option\n )\n },\n {\n type: expressionTypes.EVENT,\n name: 'onclick',\n evaluate: _scope => event => { _scope.handleToggle(event, _scope.option) }\n }\n ]\n }\n ]\n ),\n\n redundantAttribute: 'expr5',\n selector: '[expr5]',\n itemName: 'option',\n indexName: null,\n evaluate: _scope => _scope.state.options\n },\n {\n type: bindingTypes.IF,\n evaluate: _scope => _scope.state.options.length === 0,\n redundantAttribute: 'expr6',\n selector: '[expr6]',\n\n template: template(\n '\\n ∅\\n ',\n []\n )\n }\n ]\n ),\n\n name: 'tiny-field-select'\n});\n\n//# sourceURL=webpack://@tiny-components/select/./src/select.riot?\n}")},"./src/example.js"(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var riot__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! riot */ \"./node_modules/riot/esm/riot.js\");\n/* harmony import */ var riot__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! riot */ \"./node_modules/riot/esm/api/register.js\");\n/* harmony import */ var _select_riot__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./select.riot */ \"./src/select.riot\");\n/* harmony import */ var _riotjs_observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @riotjs/observable */ \"./node_modules/@riotjs/observable/dist/observable.js\");\n/* harmony import */ var _riotjs_observable__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_riotjs_observable__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\nwindow.riot = riot__WEBPACK_IMPORTED_MODULE_0__\nwindow.LocationStore = _riotjs_observable__WEBPACK_IMPORTED_MODULE_3___default()({\n\n locations: [{\n 'label' : 'A',\n 'value' : 'a'\n },{\n 'label' : 'B',\n 'value' : 'b'\n },{\n 'label' : 'C',\n 'value' : 'c'\n },{\n 'label' : 'D',\n 'value' : 'd'\n },{\n 'label' : 'E',\n 'value' : 'e'\n },{\n 'label' : 'F',\n 'value' : 'f'\n },{\n 'label' : 'G',\n 'value' : 'g'\n },{\n 'label' : 'H',\n 'value' : 'h'\n },{\n 'label' : 'I',\n 'value' : 'i'\n },{\n 'label' : 'J',\n 'value' : 'j'\n }],\n\n query(value) {\n if (value !== undefined) {\n const results = []\n\n for (let i = 0; i < this.locations.length; i++) {\n if (this.locations[i].value.includes(value)) {\n results.push(this.locations[i])\n }\n }\n\n this.trigger('update', results)\n } else {\n this.trigger('update', this.locations)\n }\n }\n})\n\nriot__WEBPACK_IMPORTED_MODULE_1__.register('tiny-field-select', _select_riot__WEBPACK_IMPORTED_MODULE_2__[\"default\"])\nriot__WEBPACK_IMPORTED_MODULE_1__.register('tiny-field-select-api', _select_riot__WEBPACK_IMPORTED_MODULE_2__[\"default\"])\n\n\n//# sourceURL=webpack://@tiny-components/select/./src/example.js?\n}")},"./node_modules/riot/esm/api/__.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ __: () => (/* binding */ __)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_binding_types_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/binding-types.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/binding-types.js");\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_expression_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dependencies/@riotjs/util/expression-types.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/expression-types.js");\n/* harmony import */ var _dependencies_riotjs_dom_bindings_dist_dom_bindings_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dependencies/@riotjs/dom-bindings/dist/dom-bindings.js */ "./node_modules/riot/esm/dependencies/@riotjs/dom-bindings/dist/dom-bindings.js");\n/* harmony import */ var _core_css_manager_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../core/css-manager.js */ "./node_modules/riot/esm/core/css-manager.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n\n\n// expose some internal stuff that might be used from external tools\nconst __ = {\n cssManager: _core_css_manager_js__WEBPACK_IMPORTED_MODULE_4__["default"],\n DOMBindings: {\n template: _dependencies_riotjs_dom_bindings_dist_dom_bindings_js__WEBPACK_IMPORTED_MODULE_3__.template,\n createBinding: _dependencies_riotjs_dom_bindings_dist_dom_bindings_js__WEBPACK_IMPORTED_MODULE_3__.createBinding,\n createExpression: _dependencies_riotjs_dom_bindings_dist_dom_bindings_js__WEBPACK_IMPORTED_MODULE_3__.createExpression,\n bindingTypes: _dependencies_riotjs_util_binding_types_js__WEBPACK_IMPORTED_MODULE_0__["default"],\n expressionTypes: _dependencies_riotjs_util_expression_types_js__WEBPACK_IMPORTED_MODULE_2__["default"],\n },\n globals: {\n PROPS_KEY: _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PROPS_KEY,\n STATE_KEY: _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.STATE_KEY,\n IS_COMPONENT_UPDATING: _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.IS_COMPONENT_UPDATING,\n COMPONENTS_IMPLEMENTATION_MAP: _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.COMPONENTS_IMPLEMENTATION_MAP,\n PLUGINS_SET: _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PLUGINS_SET,\n DOM_COMPONENT_INSTANCE_PROPERTY: _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.DOM_COMPONENT_INSTANCE_PROPERTY,\n PARENT_KEY_SYMBOL: _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PARENT_KEY_SYMBOL,\n },\n};\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/api/__.js?\n}')},"./node_modules/riot/esm/api/component.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ component: () => (/* binding */ component)\n/* harmony export */ });\n/* harmony import */ var _dependencies_cumpa_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/cumpa/index.js */ "./node_modules/riot/esm/dependencies/cumpa/index.js");\n/* harmony import */ var _core_create_component_from_wrapper_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/create-component-from-wrapper.js */ "./node_modules/riot/esm/core/create-component-from-wrapper.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n/**\n * Helper method to create component without relying on the registered ones\n * @param {object} implementation - component implementation\n * @returns {Function} function that will allow you to mount a riot component on a DOM node\n */\nfunction component(implementation) {\n return (el, props, { slots, attributes, parentScope } = {}) =>\n (0,_dependencies_cumpa_index_js__WEBPACK_IMPORTED_MODULE_0__["default"])(\n (c) => c.mount(el, parentScope),\n (c) => c({ props, slots, attributes }),\n _core_create_component_from_wrapper_js__WEBPACK_IMPORTED_MODULE_1__.createComponentFromWrapper,\n )(implementation)\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/api/component.js?\n}')},"./node_modules/riot/esm/api/create-pure-component.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createPureComponent: () => (/* binding */ createPureComponent)\n/* harmony export */ });\n/* harmony import */ var _core_create_pure_component_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/create-pure-component.js */ "./node_modules/riot/esm/core/create-pure-component.js");\n/* harmony import */ var _pure_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pure.js */ "./node_modules/riot/esm/api/pure.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n/**\n * Helper method to simplify the creation of pure components without the need to rely on a .riot file\n * @param {Function} func - RiotPureComponent factory function\n * @param {string} name - Optional parameter if you want to define the name of your component for debugging purposes\n * @returns {import(\'../../riot.js\').RiotComponentWrapper} pure component object implementation\n */\nfunction createPureComponent(func, name) {\n return {\n name,\n exports: (0,_pure_js__WEBPACK_IMPORTED_MODULE_1__.pure)(({ slots, attributes, props }) =>\n (0,_core_create_pure_component_js__WEBPACK_IMPORTED_MODULE_0__.createPureComponent)(func, {\n attributes,\n slots,\n props,\n }),\n ),\n }\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/api/create-pure-component.js?\n}')},"./node_modules/riot/esm/api/install.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ install: () => (/* binding */ install)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_checks_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/checks.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/checks.js");\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dependencies/@riotjs/util/misc.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/misc.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n/**\n * Define a riot plugin\n * @param {Function} plugin - function that will receive all the components created\n * @returns {Set} the set containing all the plugins installed\n */\nfunction install(plugin) {\n if (!(0,_dependencies_riotjs_util_checks_js__WEBPACK_IMPORTED_MODULE_0__.isFunction)(plugin)) (0,_dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_2__.panic)(\'Plugins must be of type function\');\n if (_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PLUGINS_SET.has(plugin)) (0,_dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_2__.panic)(\'This plugin was already installed\');\n\n _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PLUGINS_SET.add(plugin);\n\n return _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PLUGINS_SET\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/api/install.js?\n}')},"./node_modules/riot/esm/api/mount.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ mount: () => (/* binding */ mount)\n/* harmony export */ });\n/* harmony import */ var _dependencies_bianco_query_index_next_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/bianco.query/index.next.js */ "./node_modules/riot/esm/dependencies/bianco.query/index.next.js");\n/* harmony import */ var _core_mount_component_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../core/mount-component.js */ "./node_modules/riot/esm/core/mount-component.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n/**\n * Mounting function that will work only for the components that were globally registered\n * @param {string|HTMLElement} selector - query for the selection or a DOM element\n * @param {object} initialProps - the initial component properties\n * @param {string} name - optional component name\n * @returns {Array} list of riot components\n */\nfunction mount(selector, initialProps, name) {\n return (0,_dependencies_bianco_query_index_next_js__WEBPACK_IMPORTED_MODULE_0__["default"])(selector).map((element) =>\n (0,_core_mount_component_js__WEBPACK_IMPORTED_MODULE_1__.mountComponent)(element, initialProps, name),\n )\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/api/mount.js?\n}')},"./node_modules/riot/esm/api/pure.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ pure: () => (/* binding */ pure)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_checks_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/checks.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/checks.js");\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dependencies/@riotjs/util/misc.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/misc.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n/**\n * Lift a riot component Interface into a pure riot object\n * @param {Function} func - RiotPureComponent factory function\n * @returns {Function} the lifted original function received as argument\n */\nfunction pure(func) {\n if (!(0,_dependencies_riotjs_util_checks_js__WEBPACK_IMPORTED_MODULE_0__.isFunction)(func))\n (0,_dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_2__.panic)(\'riot.pure accepts only arguments of type "function"\');\n func[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.IS_PURE_SYMBOL] = true;\n return func\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/api/pure.js?\n}')},"./node_modules/riot/esm/api/register.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ register: () => (/* binding */ register)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/misc.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/misc.js");\n/* harmony import */ var _core_create_component_from_wrapper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/create-component-from-wrapper.js */ "./node_modules/riot/esm/core/create-component-from-wrapper.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n/**\n * Register a custom tag by name\n * @param {string} name - component name\n * @param {object} implementation - tag implementation\n * @param {string} implementation.css - component css as string\n * @param {TemplateChunk} implementation.template - component template chunk rendering function\n * @param {object} implementation.exports - component default export\n * @returns {Map} map containing all the components implementations\n */\nfunction register(name, { css, template, exports }) {\n if (_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.COMPONENTS_IMPLEMENTATION_MAP.has(name))\n (0,_dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_1__.panic)(`The component "${name}" was already registered`);\n\n _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.COMPONENTS_IMPLEMENTATION_MAP.set(\n name,\n (0,_core_create_component_from_wrapper_js__WEBPACK_IMPORTED_MODULE_2__.createComponentFromWrapper)({ name, css, template, exports }),\n );\n\n return _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.COMPONENTS_IMPLEMENTATION_MAP\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/api/register.js?\n}')},"./node_modules/riot/esm/api/uninstall.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ uninstall: () => (/* binding */ uninstall)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/misc.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/misc.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n/**\n * Uninstall a riot plugin\n * @param {Function} plugin - plugin previously installed\n * @returns {Set} the set containing all the plugins installed\n */\nfunction uninstall(plugin) {\n if (!_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.PLUGINS_SET.has(plugin)) (0,_dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_1__.panic)(\'This plugin was never installed\');\n\n _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.PLUGINS_SET.delete(plugin);\n\n return _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.PLUGINS_SET\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/api/uninstall.js?\n}')},"./node_modules/riot/esm/api/unmount.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ unmount: () => (/* binding */ unmount)\n/* harmony export */ });\n/* harmony import */ var _dependencies_bianco_query_index_next_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/bianco.query/index.next.js */ "./node_modules/riot/esm/dependencies/bianco.query/index.next.js");\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n/**\n * Sweet unmounting helper function for the DOM node mounted manually by the user\n * @param {string|HTMLElement} selector - query for the selection or a DOM element\n * @param {boolean|null} keepRootElement - if true keep the root element\n * @returns {Array} list of nodes unmounted\n */\nfunction unmount(selector, keepRootElement) {\n return (0,_dependencies_bianco_query_index_next_js__WEBPACK_IMPORTED_MODULE_0__["default"])(selector).map((element) => {\n if (element[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.DOM_COMPONENT_INSTANCE_PROPERTY]) {\n element[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.DOM_COMPONENT_INSTANCE_PROPERTY].unmount(keepRootElement);\n }\n return element\n })\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/api/unmount.js?\n}')},"./node_modules/riot/esm/api/unregister.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ unregister: () => (/* binding */ unregister)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/misc.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/misc.js");\n/* harmony import */ var _core_css_manager_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../core/css-manager.js */ "./node_modules/riot/esm/core/css-manager.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n/**\n * Unregister a riot web component\n * @param {string} name - component name\n * @returns {Map} map containing all the components implementations\n */\nfunction unregister(name) {\n if (!_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.COMPONENTS_IMPLEMENTATION_MAP.has(name))\n (0,_dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_1__.panic)(`The component "${name}" was never registered`);\n\n _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.COMPONENTS_IMPLEMENTATION_MAP.delete(name);\n _core_css_manager_js__WEBPACK_IMPORTED_MODULE_2__["default"].remove(name);\n\n return _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.COMPONENTS_IMPLEMENTATION_MAP\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/api/unregister.js?\n}')},"./node_modules/riot/esm/api/version.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ version: () => (/* binding */ version)\n/* harmony export */ });\n/* Riot v10.1.4, @license MIT */\n/** @type {string} current riot version */\nconst version = 'v10.1.4';\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/api/version.js?\n}")},"./node_modules/riot/esm/api/with-types.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ withTypes: () => (/* binding */ withTypes)\n/* harmony export */ });\n/* Riot v10.1.4, @license MIT */\n/**\n * no-op function needed to add the proper types to your component via typescript\n * @param {Function | object} component - component default export\n * @returns {Function | object} returns exactly what it has received\n */\n/* istanbul ignore next */\nconst withTypes = (component) => component;\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/api/with-types.js?\n}")},"./node_modules/riot/esm/core/add-css-hook.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ addCssHook: () => (/* binding */ addCssHook)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _utils_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/dom.js */ "./node_modules/riot/esm/utils/dom.js");\n/* harmony import */ var _dependencies_bianco_attr_index_next_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dependencies/bianco.attr/index.next.js */ "./node_modules/riot/esm/dependencies/bianco.attr/index.next.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n/**\n * Add eventually the "is" attribute to link this DOM node to its css\n * @param {HTMLElement} element - target root node\n * @param {string} name - name of the component mounted\n * @returns {undefined} it\'s a void function\n */\n\nfunction addCssHook(element, name) {\n if ((0,_utils_dom_js__WEBPACK_IMPORTED_MODULE_1__.getName)(element) !== name) {\n (0,_dependencies_bianco_attr_index_next_js__WEBPACK_IMPORTED_MODULE_2__.set)(element, _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_DIRECTIVE, name);\n }\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/core/add-css-hook.js?\n}')},"./node_modules/riot/esm/core/bind-dom-node-to-component-instance.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ bindDOMNodeToComponentInstance: () => (/* binding */ bindDOMNodeToComponentInstance)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* Riot v10.1.4, @license MIT */\n\n\n/**\n * Bind a DOM node to its component object\n * @param {HTMLElement} node - html node mounted\n * @param {object} component - Riot.js component object\n * @returns {object} the component object received as second argument\n */\nconst bindDOMNodeToComponentInstance = (node, component) =>\n (node[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.DOM_COMPONENT_INSTANCE_PROPERTY] = component);\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/core/bind-dom-node-to-component-instance.js?\n}')},"./node_modules/riot/esm/core/component-dom-selectors.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ COMPONENT_DOM_SELECTORS: () => (/* binding */ COMPONENT_DOM_SELECTORS)\n/* harmony export */ });\n/* harmony import */ var _dependencies_bianco_query_index_next_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/bianco.query/index.next.js */ "./node_modules/riot/esm/dependencies/bianco.query/index.next.js");\n/* Riot v10.1.4, @license MIT */\n\n\nconst COMPONENT_DOM_SELECTORS = Object.freeze({\n // component helpers\n $(selector) {\n return (0,_dependencies_bianco_query_index_next_js__WEBPACK_IMPORTED_MODULE_0__["default"])(selector, this.root)[0]\n },\n $$(selector) {\n return (0,_dependencies_bianco_query_index_next_js__WEBPACK_IMPORTED_MODULE_0__["default"])(selector, this.root)\n },\n});\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/core/component-dom-selectors.js?\n}')},"./node_modules/riot/esm/core/component-lifecycle-methods.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ COMPONENT_LIFECYCLE_METHODS: () => (/* binding */ COMPONENT_LIFECYCLE_METHODS)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/functions.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/functions.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\nconst COMPONENT_LIFECYCLE_METHODS = Object.freeze({\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.SHOULD_UPDATE_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.noop,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.ON_BEFORE_MOUNT_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.noop,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.ON_MOUNTED_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.noop,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.ON_BEFORE_UPDATE_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.noop,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.ON_UPDATED_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.noop,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.ON_BEFORE_UNMOUNT_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.noop,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.ON_UNMOUNTED_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.noop,\n});\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/core/component-lifecycle-methods.js?\n}')},"./node_modules/riot/esm/core/component-template-factory.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ componentTemplateFactory: () => (/* binding */ componentTemplateFactory)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_dom_bindings_dist_dom_bindings_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/dom-bindings/dist/dom-bindings.js */ "./node_modules/riot/esm/dependencies/@riotjs/dom-bindings/dist/dom-bindings.js");\n/* harmony import */ var _dependencies_riotjs_util_expression_types_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/expression-types.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/expression-types.js");\n/* harmony import */ var _dependencies_riotjs_util_binding_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dependencies/@riotjs/util/binding-types.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/binding-types.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n/**\n * Factory function to create the component templates only once\n * @param {Function} template - component template creation function\n * @param {RiotComponentWrapper} componentWrapper - riot compiler generated object\n * @param {Function} getChildComponent - getter function to return the children components\n * @returns {TemplateChunk} template chunk object\n */\nfunction componentTemplateFactory(\n template,\n componentWrapper,\n getChildComponent,\n) {\n return template(\n _dependencies_riotjs_dom_bindings_dist_dom_bindings_js__WEBPACK_IMPORTED_MODULE_0__.template,\n _dependencies_riotjs_util_expression_types_js__WEBPACK_IMPORTED_MODULE_1__["default"],\n _dependencies_riotjs_util_binding_types_js__WEBPACK_IMPORTED_MODULE_2__["default"],\n getChildComponent,\n )\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/core/component-template-factory.js?\n}')},"./node_modules/riot/esm/core/compute-component-state.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ computeComponentState: () => (/* binding */ computeComponentState)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/functions.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/functions.js");\n/* Riot v10.1.4, @license MIT */\n\n\n/**\n * Compute the component current state merging it with its previous state\n * @param {object} oldState - previous state object\n * @param {object} newState - new state given to the `update` call\n * @returns {object} new object state\n */\nfunction computeComponentState(oldState, newState) {\n return {\n ...oldState,\n ...(0,_dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_0__.callOrAssign)(newState),\n }\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/core/compute-component-state.js?\n}')},"./node_modules/riot/esm/core/compute-initial-props.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ computeInitialProps: () => (/* binding */ computeInitialProps)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/dom.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/dom.js");\n/* harmony import */ var _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/functions.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/functions.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n/**\n * Evaluate the component properties either from its real attributes or from its initial user properties\n * @param {HTMLElement} element - component root\n * @param {object} initialProps - initial props\n * @returns {object} component props key value pairs\n */\nfunction computeInitialProps(element, initialProps = {}) {\n return {\n ...(0,_dependencies_riotjs_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.DOMattributesToObject)(element),\n ...(0,_dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.callOrAssign)(initialProps),\n }\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/core/compute-initial-props.js?\n}')},"./node_modules/riot/esm/core/create-component-from-wrapper.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createComponentFromWrapper: () => (/* binding */ createComponentFromWrapper)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_strings_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/strings.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/strings.js");\n/* harmony import */ var _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dependencies/@riotjs/util/functions.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/functions.js");\n/* harmony import */ var _dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dependencies/@riotjs/util/misc.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/misc.js");\n/* harmony import */ var _mocked_template_interface_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./mocked-template-interface.js */ "./node_modules/riot/esm/core/mocked-template-interface.js");\n/* harmony import */ var _component_template_factory_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./component-template-factory.js */ "./node_modules/riot/esm/core/component-template-factory.js");\n/* harmony import */ var _create_pure_component_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./create-pure-component.js */ "./node_modules/riot/esm/core/create-pure-component.js");\n/* harmony import */ var _instantiate_component_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./instantiate-component.js */ "./node_modules/riot/esm/core/instantiate-component.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n\n\n\n\n\n/**\n * Create the subcomponents that can be included inside a tag in runtime\n * @param {object} components - components imported in runtime\n * @returns {object} all the components transformed into Riot.Component factory functions\n */\nfunction createChildrenComponentsObject(components = {}) {\n return Object.entries((0,_dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_2__.callOrAssign)(components)).reduce(\n (acc, [key, value]) => {\n acc[(0,_dependencies_riotjs_util_strings_js__WEBPACK_IMPORTED_MODULE_1__.camelToDashCase)(key)] = createComponentFromWrapper(value);\n return acc\n },\n {},\n )\n}\n\n/**\n * Create the getter function to render the child components\n * @param {RiotComponentWrapper} componentWrapper - riot compiler generated object\n * @returns {Function} function returning the component factory function\n */\nconst createChildComponentGetter = (componentWrapper) => {\n const childrenComponents = createChildrenComponentsObject(\n componentWrapper.exports ? componentWrapper.exports.components : {},\n );\n\n return (name) => {\n // improve support for recursive components\n if (name === componentWrapper.name)\n return memoizedCreateComponentFromWrapper(componentWrapper)\n // return the registered components\n return childrenComponents[name] || _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.COMPONENTS_IMPLEMENTATION_MAP.get(name)\n }\n};\n\n/**\n * Performance optimization for the recursive components\n * @param {RiotComponentWrapper} componentWrapper - riot compiler generated object\n * @returns {object} component like interface\n */\nconst memoizedCreateComponentFromWrapper = (0,_dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_3__.memoize)(createComponentFromWrapper);\n\n/**\n * Create the component interface needed for the @riotjs/dom-bindings tag bindings\n * @param {RiotComponentWrapper} componentWrapper - riot compiler generated object\n * @param {string} componentWrapper.css - component css\n * @param {Function} componentWrapper.template - function that will return the dom-bindings template function\n * @param {object} componentWrapper.exports - component interface\n * @param {string} componentWrapper.name - component name\n * @returns {object} component like interface\n */\nfunction createComponentFromWrapper(componentWrapper) {\n const { css, template, exports, name } = componentWrapper;\n const templateFn = template\n ? (0,_component_template_factory_js__WEBPACK_IMPORTED_MODULE_5__.componentTemplateFactory)(\n template,\n componentWrapper,\n createChildComponentGetter(componentWrapper),\n )\n : _mocked_template_interface_js__WEBPACK_IMPORTED_MODULE_4__.MOCKED_TEMPLATE_INTERFACE;\n\n return ({ slots, attributes, props }) => {\n // pure components rendering will be managed by the end user\n if (exports && exports[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_PURE_SYMBOL])\n return (0,_create_pure_component_js__WEBPACK_IMPORTED_MODULE_6__.createPureComponent)(exports, {\n slots,\n attributes,\n props,\n css,\n template,\n })\n\n const componentAPI = (0,_dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_2__.callOrAssign)(exports) || {};\n\n const component = (0,_instantiate_component_js__WEBPACK_IMPORTED_MODULE_7__.instantiateComponent)({\n css,\n template: templateFn,\n componentAPI,\n name,\n })({ slots, attributes, props });\n\n // notice that for the components created via tag binding\n // we need to invert the mount (state/parentScope) arguments\n // the template bindings will only forward the parentScope updates\n // and never deal with the component state\n return {\n mount(element, parentScope, state) {\n return component.mount(element, state, parentScope)\n },\n update(parentScope, state) {\n return component.update(state, parentScope)\n },\n unmount(preserveRoot) {\n return component.unmount(preserveRoot)\n },\n }\n }\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/core/create-component-from-wrapper.js?\n}')},"./node_modules/riot/esm/core/create-core-api-methods.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createCoreAPIMethods: () => (/* binding */ createCoreAPIMethods)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* Riot v10.1.4, @license MIT */\n\n\n/**\n * Wrap the Riot.js core API methods using a mapping function\n * @param {Function} mapFunction - lifting function\n * @returns {object} an object having the { mount, update, unmount } functions\n */\nfunction createCoreAPIMethods(mapFunction) {\n return [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.MOUNT_METHOD_KEY, _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.UPDATE_METHOD_KEY, _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.UNMOUNT_METHOD_KEY].reduce(\n (acc, method) => {\n acc[method] = mapFunction(method);\n\n return acc\n },\n {},\n )\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/core/create-core-api-methods.js?\n}')},"./node_modules/riot/esm/core/create-pure-component.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ createPureComponent: () => (/* binding */ createPureComponent)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/misc.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/misc.js");\n/* harmony import */ var _dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dependencies/@riotjs/util/objects.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/objects.js");\n/* harmony import */ var _pure_component_api_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pure-component-api.js */ "./node_modules/riot/esm/core/pure-component-api.js");\n/* harmony import */ var _bind_dom_node_to_component_instance_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bind-dom-node-to-component-instance.js */ "./node_modules/riot/esm/core/bind-dom-node-to-component-instance.js");\n/* harmony import */ var _create_core_api_methods_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./create-core-api-methods.js */ "./node_modules/riot/esm/core/create-core-api-methods.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n\n\n\n/**\n * Create a pure component\n * @param {Function} pureFactoryFunction - pure component factory function\n * @param {object} options - pure component options\n * @param {string} options.css - pure component can\'t have css\n * @param {Array} options.slots - component slots\n * @param {Array} options.attributes - component attributes\n * @param {Array} options.template - template factory function\n * @param {any} options.props - initial component properties\n * @returns {object} pure component object\n */\nfunction createPureComponent(\n pureFactoryFunction,\n { slots, attributes, props, css, template },\n) {\n if (template) (0,_dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_1__.panic)(\'Pure components can not have html\');\n if (css) (0,_dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_1__.panic)(\'Pure components do not have css\');\n\n const component = (0,_dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_2__.defineDefaults)(\n pureFactoryFunction({ slots, attributes, props }),\n _pure_component_api_js__WEBPACK_IMPORTED_MODULE_3__.PURE_COMPONENT_API,\n );\n\n return (0,_create_core_api_methods_js__WEBPACK_IMPORTED_MODULE_5__.createCoreAPIMethods)((method) => (...args) => {\n // intercept the mount calls to bind the DOM node to the pure object created\n // see also https://github.com/riot/riot/issues/2806\n if (method === _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.MOUNT_METHOD_KEY) {\n const [element] = args;\n // mark this node as pure element\n (0,_dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(element, _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.IS_PURE_SYMBOL, true);\n (0,_bind_dom_node_to_component_instance_js__WEBPACK_IMPORTED_MODULE_4__.bindDOMNodeToComponentInstance)(element, component);\n }\n\n component[method](...args);\n\n return component\n })\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/core/create-pure-component.js?\n}')},"./node_modules/riot/esm/core/css-manager.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CSS_BY_NAME: () => (/* binding */ CSS_BY_NAME),\n/* harmony export */ STYLE_NODE_SELECTOR: () => (/* binding */ STYLE_NODE_SELECTOR),\n/* harmony export */ \"default\": () => (/* binding */ cssManager)\n/* harmony export */ });\n/* harmony import */ var _dependencies_bianco_query_index_next_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/bianco.query/index.next.js */ \"./node_modules/riot/esm/dependencies/bianco.query/index.next.js\");\n/* harmony import */ var _dependencies_bianco_attr_index_next_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/bianco.attr/index.next.js */ \"./node_modules/riot/esm/dependencies/bianco.attr/index.next.js\");\n/* Riot v10.1.4, @license MIT */\n\n\n\nconst CSS_BY_NAME = new Map();\nconst STYLE_NODE_SELECTOR = 'style[riot]';\n\n// memoized curried function\nconst getStyleNode = ((style) => {\n return () => {\n // lazy evaluation:\n // if this function was already called before\n // we return its cached result\n if (style) return style\n\n // create a new style element or use an existing one\n // and cache it internally\n style = (0,_dependencies_bianco_query_index_next_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(STYLE_NODE_SELECTOR)[0] || document.createElement('style');\n (0,_dependencies_bianco_attr_index_next_js__WEBPACK_IMPORTED_MODULE_1__.set)(style, 'type', 'text/css');\n\n /* istanbul ignore next */\n if (!style.parentNode) document.head.appendChild(style);\n\n return style\n }\n})();\n\n/**\n * Object that will be used to inject and manage the css of every tag instance\n */\nconst cssManager = {\n CSS_BY_NAME,\n /**\n * Save a tag style to be later injected into DOM\n * @param { string } name - if it's passed we will map the css to a tagname\n * @param { string } css - css string\n * @returns {object} self\n */\n add(name, css) {\n if (!CSS_BY_NAME.has(name)) {\n CSS_BY_NAME.set(name, css);\n this.inject();\n }\n\n return this\n },\n /**\n * Inject all previously saved tag styles into DOM\n * innerHTML seems slow: http://jsperf.com/riot-insert-style\n * @returns {object} self\n */\n inject() {\n getStyleNode().innerHTML = [...CSS_BY_NAME.values()].join('\\n');\n return this\n },\n\n /**\n * Remove a tag style from the DOM\n * @param {string} name a registered tagname\n * @returns {object} self\n */\n remove(name) {\n if (CSS_BY_NAME.has(name)) {\n CSS_BY_NAME.delete(name);\n this.inject();\n }\n\n return this\n },\n};\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/core/css-manager.js?\n}")},"./node_modules/riot/esm/core/instantiate-component.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ instantiateComponent: () => (/* binding */ instantiateComponent)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/objects.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/objects.js");\n/* harmony import */ var _component_dom_selectors_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./component-dom-selectors.js */ "./node_modules/riot/esm/core/component-dom-selectors.js");\n/* harmony import */ var _component_lifecycle_methods_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./component-lifecycle-methods.js */ "./node_modules/riot/esm/core/component-lifecycle-methods.js");\n/* harmony import */ var _css_manager_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./css-manager.js */ "./node_modules/riot/esm/core/css-manager.js");\n/* harmony import */ var _dependencies_curri_index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dependencies/curri/index.js */ "./node_modules/riot/esm/dependencies/curri/index.js");\n/* harmony import */ var _manage_component_lifecycle_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./manage-component-lifecycle.js */ "./node_modules/riot/esm/core/manage-component-lifecycle.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n\n\n\n\n/**\n * Component definition function\n * @param {object} component - the component initial properties\n * @param {string} component.css - component css string\n * @param {TemplateChunk} component.template - component template rendering\n * @param {object} component.componentAPI - component export default value\n * @param {string} component.name - component name\n * @returns {object} a new component implementation object\n */\nfunction instantiateComponent({ css, template, componentAPI, name }) {\n // add the component css into the DOM\n if (css && name) _css_manager_js__WEBPACK_IMPORTED_MODULE_4__["default"].add(name, css);\n\n return (0,_dependencies_curri_index_js__WEBPACK_IMPORTED_MODULE_5__["default"])(_manage_component_lifecycle_js__WEBPACK_IMPORTED_MODULE_6__.manageComponentLifecycle)(\n (0,_dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_1__.defineProperties)(\n // set the component defaults without overriding the original component API\n (0,_dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_1__.defineDefaults)(componentAPI, {\n ..._component_lifecycle_methods_js__WEBPACK_IMPORTED_MODULE_3__.COMPONENT_LIFECYCLE_METHODS,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.PROPS_KEY]: {},\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.STATE_KEY]: {},\n }),\n {\n // defined during the component creation\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.SLOTS_KEY]: null,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.ROOT_KEY]: null,\n // these properties should not be overriden\n ..._component_dom_selectors_js__WEBPACK_IMPORTED_MODULE_2__.COMPONENT_DOM_SELECTORS,\n name,\n css,\n template,\n },\n ),\n )\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/core/instantiate-component.js?\n}')},"./node_modules/riot/esm/core/manage-component-lifecycle.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ manageComponentLifecycle: () => (/* binding */ manageComponentLifecycle)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_checks_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/checks.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/checks.js");\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dependencies/@riotjs/util/dom.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/dom.js");\n/* harmony import */ var _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dependencies/@riotjs/util/functions.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/functions.js");\n/* harmony import */ var _dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dependencies/@riotjs/util/misc.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/misc.js");\n/* harmony import */ var _dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dependencies/@riotjs/util/objects.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/objects.js");\n/* harmony import */ var _utils_get_root_computed_attribute_names_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/get-root-computed-attribute-names.js */ "./node_modules/riot/esm/utils/get-root-computed-attribute-names.js");\n/* harmony import */ var _add_css_hook_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./add-css-hook.js */ "./node_modules/riot/esm/core/add-css-hook.js");\n/* harmony import */ var _bind_dom_node_to_component_instance_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./bind-dom-node-to-component-instance.js */ "./node_modules/riot/esm/core/bind-dom-node-to-component-instance.js");\n/* harmony import */ var _compute_component_state_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./compute-component-state.js */ "./node_modules/riot/esm/core/compute-component-state.js");\n/* harmony import */ var _compute_initial_props_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./compute-initial-props.js */ "./node_modules/riot/esm/core/compute-initial-props.js");\n/* harmony import */ var _run_plugins_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./run-plugins.js */ "./node_modules/riot/esm/core/run-plugins.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Component creation factory function that will enhance the user provided API\n * @param {object} component - a component implementation previously defined\n * @param {object} options - component options\n * @param {Array} options.slots - component slots generated via riot compiler\n * @param {Array} options.attributes - attribute expressions generated via riot compiler\n * @param {object} options.props - component initial props\n * @returns {Riot.Component} a riot component instance\n */\nfunction manageComponentLifecycle(\n component,\n { slots, attributes = [], props },\n) {\n return (0,_dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_3__.autobindMethods)(\n (0,_run_plugins_js__WEBPACK_IMPORTED_MODULE_11__.runPlugins)(\n (0,_dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_5__.defineProperties)(\n (0,_dependencies_riotjs_util_checks_js__WEBPACK_IMPORTED_MODULE_0__.isObject)(component) ? Object.create(component) : component,\n {\n mount(element, state = {}, parentScope) {\n // any element mounted passing through this function can\'t be a pure component\n (0,_dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_5__.defineProperty)(element, _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.IS_PURE_SYMBOL, false);\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PARENT_KEY_SYMBOL] = parentScope;\n\n (0,_dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_5__.defineProperty)(\n this,\n _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PROPS_KEY,\n Object.freeze({\n ...(0,_compute_initial_props_js__WEBPACK_IMPORTED_MODULE_10__.computeInitialProps)(element, props),\n ...(0,_dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_4__.generatePropsFromAttributes)(attributes, parentScope),\n }),\n );\n\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.STATE_KEY] = (0,_compute_component_state_js__WEBPACK_IMPORTED_MODULE_9__.computeComponentState)(this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.STATE_KEY], state);\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.TEMPLATE_KEY_SYMBOL] = this.template.createDOM(element).clone();\n // get the attribute names that don\'t belong to the props object\n // this will avoid recursive props rendering https://github.com/riot/riot/issues/2994\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ROOT_ATTRIBUTES_KEY_SYMBOL] = (0,_utils_get_root_computed_attribute_names_js__WEBPACK_IMPORTED_MODULE_6__.getRootComputedAttributeNames)(\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.TEMPLATE_KEY_SYMBOL],\n );\n\n // link this object to the DOM node\n (0,_bind_dom_node_to_component_instance_js__WEBPACK_IMPORTED_MODULE_8__.bindDOMNodeToComponentInstance)(element, this);\n // add eventually the \'is\' attribute\n component.name && (0,_add_css_hook_js__WEBPACK_IMPORTED_MODULE_7__.addCssHook)(element, component.name);\n\n // define the root element\n (0,_dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_5__.defineProperty)(this, _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ROOT_KEY, element);\n // define the slots array\n (0,_dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_5__.defineProperty)(this, _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.SLOTS_KEY, slots);\n\n // before mount lifecycle event\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ON_BEFORE_MOUNT_KEY](this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PROPS_KEY], this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.STATE_KEY]);\n // mount the template\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.TEMPLATE_KEY_SYMBOL].mount(element, this, parentScope);\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ON_MOUNTED_KEY](this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PROPS_KEY], this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.STATE_KEY]);\n\n return this\n },\n update(state = {}, parentScope) {\n if (parentScope) {\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PARENT_KEY_SYMBOL] = parentScope;\n }\n\n // filter out the computed attributes from the root node\n const staticRootAttributes = Array.from(\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ROOT_KEY].attributes,\n ).filter(\n ({ name }) => !this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ROOT_ATTRIBUTES_KEY_SYMBOL].includes(name),\n );\n\n // evaluate the value of the static dom attributes\n const domNodeAttributes = (0,_dependencies_riotjs_util_dom_js__WEBPACK_IMPORTED_MODULE_2__.DOMattributesToObject)({\n attributes: staticRootAttributes,\n });\n\n // Avoid adding the riot "is" directives to the component props\n // eslint-disable-next-line no-unused-vars\n const { [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.IS_DIRECTIVE]: _, ...newProps } = {\n ...domNodeAttributes,\n ...(0,_dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_4__.generatePropsFromAttributes)(\n attributes,\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PARENT_KEY_SYMBOL],\n ),\n };\n if (this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.SHOULD_UPDATE_KEY](newProps, this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PROPS_KEY]) === false)\n return\n\n ;(0,_dependencies_riotjs_util_objects_js__WEBPACK_IMPORTED_MODULE_5__.defineProperty)(\n this,\n _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PROPS_KEY,\n Object.freeze({\n // only root components will merge their initial props with the new ones\n // children components will just get them overridden see also https://github.com/riot/riot/issues/2978\n ...(parentScope ? null : this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PROPS_KEY]),\n ...newProps,\n }),\n );\n\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.STATE_KEY] = (0,_compute_component_state_js__WEBPACK_IMPORTED_MODULE_9__.computeComponentState)(this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.STATE_KEY], state);\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ON_BEFORE_UPDATE_KEY](this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PROPS_KEY], this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.STATE_KEY]);\n\n // avoiding recursive updates\n // see also https://github.com/riot/riot/issues/2895\n if (!this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.IS_COMPONENT_UPDATING]) {\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.IS_COMPONENT_UPDATING] = true;\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.TEMPLATE_KEY_SYMBOL].update(this, this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PARENT_KEY_SYMBOL]);\n }\n\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ON_UPDATED_KEY](this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PROPS_KEY], this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.STATE_KEY]);\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.IS_COMPONENT_UPDATING] = false;\n\n return this\n },\n unmount(preserveRoot) {\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ON_BEFORE_UNMOUNT_KEY](this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PROPS_KEY], this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.STATE_KEY]);\n\n // make sure that computed root attributes get removed if the root is preserved\n // https://github.com/riot/riot/issues/3051\n if (preserveRoot)\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ROOT_ATTRIBUTES_KEY_SYMBOL].forEach((attribute) =>\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ROOT_KEY].removeAttribute(attribute),\n );\n // if the preserveRoot is null the template html will be left untouched\n // in that case the DOM cleanup will happen differently from a parent node\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.TEMPLATE_KEY_SYMBOL].unmount(\n this,\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PARENT_KEY_SYMBOL],\n preserveRoot === null ? null : !preserveRoot,\n );\n this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.ON_UNMOUNTED_KEY](this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PROPS_KEY], this[_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.STATE_KEY]);\n\n return this\n },\n },\n ),\n ),\n Object.keys(component).filter((prop) => (0,_dependencies_riotjs_util_checks_js__WEBPACK_IMPORTED_MODULE_0__.isFunction)(component[prop])),\n )\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/core/manage-component-lifecycle.js?\n}')},"./node_modules/riot/esm/core/mocked-template-interface.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ MOCKED_TEMPLATE_INTERFACE: () => (/* binding */ MOCKED_TEMPLATE_INTERFACE)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_dom_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/dom.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/dom.js");\n/* harmony import */ var _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dependencies/@riotjs/util/functions.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/functions.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n// Components without template use a mocked template interface with some basic functionalities to\n// guarantee consistent rendering behaviour see https://github.com/riot/riot/issues/2984\nconst MOCKED_TEMPLATE_INTERFACE = {\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.MOUNT_METHOD_KEY](el) {\n this.el = el;\n },\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.UPDATE_METHOD_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_2__.noop,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.UNMOUNT_METHOD_KEY](_, __, mustRemoveRoot = false) {\n if (mustRemoveRoot) (0,_dependencies_riotjs_util_dom_js__WEBPACK_IMPORTED_MODULE_1__.removeChild)(this.el);\n else if (!mustRemoveRoot) (0,_dependencies_riotjs_util_dom_js__WEBPACK_IMPORTED_MODULE_1__.cleanNode)(this.el);\n },\n clone() {\n return { ...this }\n },\n createDOM: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_2__.noop,\n};\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/core/mocked-template-interface.js?\n}')},"./node_modules/riot/esm/core/mount-component.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ mountComponent: () => (/* binding */ mountComponent)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/misc.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/misc.js");\n/* harmony import */ var _utils_dom_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/dom.js */ "./node_modules/riot/esm/utils/dom.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\n\n/**\n * Component initialization function starting from a DOM node\n * @param {HTMLElement} element - element to upgrade\n * @param {object} initialProps - initial component properties\n * @param {string} componentName - component id\n * @param {Array} slots - component slots\n * @returns {object} a new component instance bound to a DOM node\n */\nfunction mountComponent(element, initialProps, componentName, slots) {\n const name = componentName || (0,_utils_dom_js__WEBPACK_IMPORTED_MODULE_2__.getName)(element);\n if (!_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.COMPONENTS_IMPLEMENTATION_MAP.has(name))\n (0,_dependencies_riotjs_util_misc_js__WEBPACK_IMPORTED_MODULE_1__.panic)(`The component named "${name}" was never registered`);\n\n const component = _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.COMPONENTS_IMPLEMENTATION_MAP.get(name)({\n props: initialProps,\n slots,\n });\n\n return component.mount(element)\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/core/mount-component.js?\n}')},"./node_modules/riot/esm/core/pure-component-api.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ PURE_COMPONENT_API: () => (/* binding */ PURE_COMPONENT_API)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* harmony import */ var _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dependencies/@riotjs/util/functions.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/functions.js");\n/* Riot v10.1.4, @license MIT */\n\n\n\nconst PURE_COMPONENT_API = Object.freeze({\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.MOUNT_METHOD_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.noop,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.UPDATE_METHOD_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.noop,\n [_dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.UNMOUNT_METHOD_KEY]: _dependencies_riotjs_util_functions_js__WEBPACK_IMPORTED_MODULE_1__.noop,\n});\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/core/pure-component-api.js?\n}')},"./node_modules/riot/esm/core/run-plugins.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval('{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ runPlugins: () => (/* binding */ runPlugins)\n/* harmony export */ });\n/* harmony import */ var _dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dependencies/@riotjs/util/constants.js */ "./node_modules/riot/esm/dependencies/@riotjs/util/constants.js");\n/* Riot v10.1.4, @license MIT */\n\n\n/**\n * Run the component instance through all the plugins set by the user\n * @param {object} component - component instance\n * @returns {object} the component enhanced by the plugins\n */\nfunction runPlugins(component) {\n return [..._dependencies_riotjs_util_constants_js__WEBPACK_IMPORTED_MODULE_0__.PLUGINS_SET].reduce((c, fn) => fn(c) || c, component)\n}\n\n\n\n\n//# sourceURL=webpack://@tiny-components/select/./node_modules/riot/esm/core/run-plugins.js?\n}')},"./node_modules/riot/esm/dependencies/@riotjs/dom-bindings/dist/dom-bindings.js"(__unused_webpack___webpack_module__,__webpack_exports__,__webpack_require__){"use strict";eval("{__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ bindingTypes: () => (/* reexport safe */ _util_binding_types_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ createBinding: () => (/* binding */ create$1),\n/* harmony export */ createExpression: () => (/* binding */ create$4),\n/* harmony export */ expressionTypes: () => (/* reexport safe */ _util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ template: () => (/* binding */ create)\n/* harmony export */ });\n/* harmony import */ var _util_dom_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../util/dom.js */ \"./node_modules/riot/esm/dependencies/@riotjs/util/dom.js\");\n/* harmony import */ var _util_constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/constants.js */ \"./node_modules/riot/esm/dependencies/@riotjs/util/constants.js\");\n/* harmony import */ var _util_binding_types_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../util/binding-types.js */ \"./node_modules/riot/esm/dependencies/@riotjs/util/binding-types.js\");\n/* harmony import */ var _util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../util/expression-types.js */ \"./node_modules/riot/esm/dependencies/@riotjs/util/expression-types.js\");\n/* harmony import */ var _util_objects_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../util/objects.js */ \"./node_modules/riot/esm/dependencies/@riotjs/util/objects.js\");\n/* harmony import */ var _util_checks_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../util/checks.js */ \"./node_modules/riot/esm/dependencies/@riotjs/util/checks.js\");\n/* harmony import */ var _util_misc_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../util/misc.js */ \"./node_modules/riot/esm/dependencies/@riotjs/util/misc.js\");\n/* Riot WIP, @license MIT */\n\n\n\n\n\n\n\n\n\n\nconst HEAD_SYMBOL = Symbol();\nconst TAIL_SYMBOL = Symbol();\n\n/**\n * Create the fragments text nodes\n * @returns {object} {{head: Text, tail: Text}}\n */\nfunction createHeadTailPlaceholders() {\n const head = document.createTextNode('');\n const tail = document.createTextNode('');\n\n head[HEAD_SYMBOL] = true;\n tail[TAIL_SYMBOL] = true;\n\n return { head, tail }\n}\n\n/**\n * Create the template meta object in case of fragments\n * @param {TemplateChunk} componentTemplate - template chunk object\n * @returns {object} the meta property that will be passed to the mount function of the TemplateChunk\n */\nfunction createTemplateMeta(componentTemplate) {\n const fragment = componentTemplate.dom.cloneNode(true);\n const { head, tail } = createHeadTailPlaceholders();\n\n return {\n avoidDOMInjection: true,\n fragment,\n head,\n tail,\n children: [head, ...Array.from(fragment.childNodes), tail],\n }\n}\n\n/* c8 ignore start */\n/**\n * ISC License\n *\n * Copyright (c) 2020, Andrea Giammarchi, @WebReflection\n *\n * Permission to use, copy, modify, and/or distribute this software for any\n * purpose with or without fee is hereby granted, provided that the above\n * copyright notice and this permission notice appear in all copies.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\n * AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE\n * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n * PERFORMANCE OF THIS SOFTWARE.\n */\n\n// fork of https://github.com/WebReflection/udomdiff version 1.1.0\n// due to https://github.com/WebReflection/udomdiff/pull/2\n/* eslint-disable */\n\n/**\n * @param {Node[]} a The list of current/live children\n * @param {Node[]} b The list of future children\n * @param {(entry: Node, action: number) => Node} get\n * The callback invoked per each entry related DOM operation.\n * @param {Node} [before] The optional node used as anchor to insert before.\n * @returns {Node[]} The same list of future children.\n */\nconst udomdiff = (a, b, get, before) => {\n const bLength = b.length;\n let aEnd = a.length;\n let bEnd = bLength;\n let aStart = 0;\n let bStart = 0;\n let map = null;\n while (aStart < aEnd || bStart < bEnd) {\n // append head, tail, or nodes in between: fast path\n if (aEnd === aStart) {\n // we could be in a situation where the rest of nodes that\n // need to be added are not at the end, and in such case\n // the node to `insertBefore`, if the index is more than 0\n // must be retrieved, otherwise it's gonna be the first item.\n const node =\n bEnd < bLength\n ? bStart\n ? get(b[bStart - 1], -0).nextSibling\n : get(b[bEnd - bStart], 0)\n : before;\n while (bStart < bEnd) (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.insertBefore)(get(b[bStart++], 1), node);\n }\n // remove head or tail: fast path\n else if (bEnd === bStart) {\n while (aStart < aEnd) {\n // remove the node only if it's unknown or not live\n if (!map || !map.has(a[aStart])) (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.removeChild)(get(a[aStart], -1));\n aStart++;\n }\n }\n // same node: fast path\n else if (a[aStart] === b[bStart]) {\n aStart++;\n bStart++;\n }\n // same tail: fast path\n else if (a[aEnd - 1] === b[bEnd - 1]) {\n aEnd--;\n bEnd--;\n }\n // The once here single last swap \"fast path\" has been removed in v1.1.0\n // https://github.com/WebReflection/udomdiff/blob/single-final-swap/esm/index.js#L69-L85\n // reverse swap: also fast path\n else if (a[aStart] === b[bEnd - 1] && b[bStart] === a[aEnd - 1]) {\n // this is a \"shrink\" operation that could happen in these cases:\n // [1, 2, 3, 4, 5]\n // [1, 4, 3, 2, 5]\n // or asymmetric too\n // [1, 2, 3, 4, 5]\n // [1, 2, 3, 5, 6, 4]\n const node = get(a[--aEnd], -1).nextSibling;\n (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.moveBefore)(get(b[bStart++], 1), get(a[aStart++], -1).nextSibling);\n (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.moveBefore)(get(b[--bEnd], 1), node);\n // mark the future index as identical (yeah, it's dirty, but cheap 👍)\n // The main reason to do this, is that when a[aEnd] will be reached,\n // the loop will likely be on the fast path, as identical to b[bEnd].\n // In the best case scenario, the next loop will skip the tail,\n // but in the worst one, this node will be considered as already\n // processed, bailing out pretty quickly from the map index check\n a[aEnd] = b[bEnd];\n }\n // map based fallback, \"slow\" path\n else {\n // the map requires an O(bEnd - bStart) operation once\n // to store all future nodes indexes for later purposes.\n // In the worst case scenario, this is a full O(N) cost,\n // and such scenario happens at least when all nodes are different,\n // but also if both first and last items of the lists are different\n if (!map) {\n map = new Map();\n let i = bStart;\n while (i < bEnd) map.set(b[i], i++);\n }\n // if it's a future node, hence it needs some handling\n if (map.has(a[aStart])) {\n // grab the index of such node, 'cause it might have been processed\n const index = map.get(a[aStart]);\n // if it's not already processed, look on demand for the next LCS\n if (bStart < index && index < bEnd) {\n let i = aStart;\n // counts the amount of nodes that are the same in the future\n let sequence = 1;\n while (++i < aEnd && i < bEnd && map.get(a[i]) === index + sequence)\n sequence++;\n // effort decision here: if the sequence is longer than replaces\n // needed to reach such sequence, which would brings again this loop\n // to the fast path, prepend the difference before a sequence,\n // and move only the future list index forward, so that aStart\n // and bStart will be aligned again, hence on the fast path.\n // An example considering aStart and bStart are both 0:\n // a: [1, 2, 3, 4]\n // b: [7, 1, 2, 3, 6]\n // this would place 7 before 1 and, from that time on, 1, 2, and 3\n // will be processed at zero cost\n if (sequence > index - bStart) {\n const node = get(a[aStart], 0);\n while (bStart < index) {\n // if the node is already in the DOM, move it\n // to preserve its state (focus, animations, iframes, etc.)\n // otherwise insert it as a new node\n const newNode = get(b[bStart++], 1);\n if (newNode.parentNode) (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.moveBefore)(newNode, node);\n else (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.insertBefore)(newNode, node);\n }\n }\n // if the effort wasn't good enough, fallback to a replace,\n // moving both source and target indexes forward, hoping that some\n // similar node will be found later on, to go back to the fast path\n else {\n (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.replaceChild)(get(b[bStart++], 1), get(a[aStart++], -1));\n }\n }\n // otherwise move the source forward, 'cause there's nothing to do\n else aStart++;\n }\n // this node has no meaning in the future list, so it's more than safe\n // to remove it, and check the next live node out instead, meaning\n // that only the live list index should be forwarded\n else (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.removeChild)(get(a[aStart++], -1));\n }\n }\n return b\n};\n\nconst UNMOUNT_SCOPE = Symbol('unmount');\n\nconst EachBinding = {\n // dynamic binding properties\n // childrenMap: null,\n // node: null,\n // root: null,\n // condition: null,\n // evaluate: null,\n // template: null,\n // isTemplateTag: false,\n nodes: [],\n // getKey: null,\n // indexName: null,\n // itemName: null,\n // afterPlaceholder: null,\n // placeholder: null,\n\n // API methods\n mount(scope, parentScope) {\n return this.update(scope, parentScope)\n },\n update(scope, parentScope) {\n const { placeholder, nodes, childrenMap } = this;\n const collection = scope === UNMOUNT_SCOPE ? null : this.evaluate(scope);\n const items = collection ? Array.from(collection) : [];\n\n // prepare the diffing\n const { newChildrenMap, batches, futureNodes } = createPatch(\n items,\n scope,\n parentScope,\n this,\n );\n\n // patch the DOM only if there are new nodes\n udomdiff(\n nodes,\n futureNodes,\n patch(Array.from(childrenMap.values()), parentScope),\n placeholder,\n );\n\n // trigger the mounts and the updates\n batches.forEach((fn) => fn());\n\n // update the children map\n this.childrenMap = newChildrenMap;\n this.nodes = futureNodes;\n\n return this\n },\n unmount(scope, parentScope) {\n this.update(UNMOUNT_SCOPE, parentScope);\n\n return this\n },\n};\n\n/**\n * Patch the DOM while diffing\n * @param {any[]} redundant - list of all the children (template, nodes, context) added via each\n * @param {*} parentScope - scope of the parent template\n * @returns {Function} patch function used by domdiff\n */\nfunction patch(redundant, parentScope) {\n return (item, info) => {\n if (info < 0) {\n // get the last element added to the childrenMap saved previously\n const element = redundant[redundant.length - 1];\n\n if (element) {\n // get the nodes and the template in stored in the last child of the childrenMap\n const { template, nodes, context } = element;\n // remove the last node (notice tags might have more children nodes)\n nodes.pop();\n\n // notice that we pass null as last argument because\n // the root node and its children will be removed by domdiff\n if (!nodes.length) {\n // we have cleared all the children nodes and we can unmount this template\n redundant.pop();\n template.unmount(context, parentScope, null);\n }\n }\n }\n\n return item\n }\n}\n\n/**\n * Check whether a template must be filtered from a loop\n * @param {Function} condition - filter function\n * @param {object} context - argument passed to the filter function\n * @returns {boolean} true if this item should be skipped\n */\nfunction mustFilterItem(condition, context) {\n return condition ? !condition(context) : false\n}\n\n/**\n * Extend the scope of the looped template\n * @param {object} scope - current template scope\n * @param {object} options - options\n * @param {string} options.itemName - key to identify the looped item in the new context\n * @param {string} options.indexName - key to identify the index of the looped item\n * @param {number} options.index - current index\n * @param {*} options.item - collection item looped\n * @returns {object} enhanced scope object\n */\nfunction extendScope(scope, { itemName, indexName, index, item }) {\n (0,_util_objects_js__WEBPACK_IMPORTED_MODULE_4__.defineProperty)(scope, itemName, item);\n if (indexName) (0,_util_objects_js__WEBPACK_IMPORTED_MODULE_4__.defineProperty)(scope, indexName, index);\n\n return scope\n}\n\n/**\n * Loop the current template items\n * @param {Array} items - expression collection value\n * @param {*} scope - template scope\n * @param {*} parentScope - scope of the parent template\n * @param {EachBinding} binding - each binding object instance\n * @returns {object} data - An object containing:\n * @property {Map} newChildrenMap - a Map containing the new children template structure\n * @property {Array} batches - array containing the template lifecycle functions to trigger\n * @property {Array} futureNodes - array containing the nodes we need to diff\n */\nfunction createPatch(items, scope, parentScope, binding) {\n const {\n condition,\n template,\n childrenMap,\n itemName,\n getKey,\n indexName,\n root,\n isTemplateTag,\n } = binding;\n const newChildrenMap = new Map();\n const batches = [];\n const futureNodes = [];\n\n items.forEach((item, index) => {\n const context = extendScope(Object.create(scope), {\n itemName,\n indexName,\n index,\n item,\n });\n const key = getKey ? getKey(context) : index;\n const oldItem = childrenMap.get(key);\n const nodes = [];\n\n if (mustFilterItem(condition, context)) {\n return\n }\n\n const mustMount = !oldItem;\n const componentTemplate = oldItem ? oldItem.template : template.clone();\n const el = componentTemplate.el || root.cloneNode();\n const meta =\n isTemplateTag && mustMount\n ? createTemplateMeta(componentTemplate)\n : componentTemplate.meta;\n\n if (mustMount) {\n batches.push(() =>\n componentTemplate.mount(el, context, parentScope, meta),\n );\n } else {\n batches.push(() => componentTemplate.update(context, parentScope));\n }\n\n // create the collection of nodes to update or to add\n // in case of template tags we need to add all its children nodes\n if (isTemplateTag) {\n nodes.push(...meta.children);\n } else {\n nodes.push(el);\n }\n\n // delete the old item from the children map\n childrenMap.delete(key);\n futureNodes.push(...nodes);\n\n // update the children map\n newChildrenMap.set(key, {\n nodes,\n template: componentTemplate,\n context,\n index,\n });\n });\n\n return {\n newChildrenMap,\n batches,\n futureNodes,\n }\n}\n\nfunction create$6(\n node,\n { evaluate, condition, itemName, indexName, getKey, template },\n) {\n const placeholder = document.createTextNode('');\n const root = node.cloneNode();\n\n (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.insertBefore)(placeholder, node);\n (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.removeChild)(node);\n\n return {\n ...EachBinding,\n childrenMap: new Map(),\n node,\n root,\n condition,\n evaluate,\n isTemplateTag: (0,_util_checks_js__WEBPACK_IMPORTED_MODULE_5__.isTemplate)(root),\n template: template.createDOM(node),\n getKey,\n indexName,\n itemName,\n placeholder,\n }\n}\n\n/**\n * Binding responsible for the `if` directive\n */\nconst IfBinding = {\n // dynamic binding properties\n // node: null,\n // evaluate: null,\n // isTemplateTag: false,\n // placeholder: null,\n // template: null,\n\n // API methods\n mount(scope, parentScope) {\n return this.update(scope, parentScope)\n },\n update(scope, parentScope) {\n const value = !!this.evaluate(scope);\n const mustMount = !this.value && value;\n const mustUnmount = this.value && !value;\n const mount = () => {\n const pristine = this.node.cloneNode();\n\n (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.insertBefore)(pristine, this.placeholder);\n this.template = this.template.clone();\n this.template.mount(pristine, scope, parentScope);\n };\n\n switch (true) {\n case mustMount:\n mount();\n break\n case mustUnmount:\n this.unmount(scope);\n break\n default:\n if (value) this.template.update(scope, parentScope);\n }\n\n this.value = value;\n\n return this\n },\n unmount(scope, parentScope) {\n this.template.unmount(scope, parentScope, true);\n\n return this\n },\n};\n\nfunction create$5(node, { evaluate, template }) {\n const placeholder = document.createTextNode('');\n\n (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.insertBefore)(placeholder, node);\n (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.removeChild)(node);\n\n return {\n ...IfBinding,\n node,\n evaluate,\n placeholder,\n template: template.createDOM(node),\n }\n}\n\n/**\n * This method handles the REF attribute expressions\n * @param {object} expression - expression data\n * @param {HTMLElement} expression.node - target node\n * @param {*} expression.value - the old expression cached value\n * @param {*} value - new expression value\n * @returns {undefined}\n */\nfunction refExpression({ node, value: oldValue }, value) {\n // called on mount and update\n if (value) value(node);\n // called on unmount\n // in this case the node value is null\n else oldValue(null);\n}\n\n/**\n * Normalize the user value in order to render a empty string in case of falsy values\n * @param {*} value - user input value\n * @returns {string} hopefully a string\n */\nfunction normalizeStringValue(value) {\n return (0,_util_checks_js__WEBPACK_IMPORTED_MODULE_5__.isNil)(value) ? '' : value\n}\n\n/**\n * This methods handles the input fields value updates\n * @param {object} expression - expression data\n * @param {HTMLElement} expression.node - target node\n * @param {*} value - new expression value\n * @returns {undefined}\n */\nfunction valueExpression({ node }, value) {\n node.value = normalizeStringValue(value);\n}\n\nconst RE_EVENTS_PREFIX = /^on/;\n\nconst getCallbackAndOptions = (value) =>\n Array.isArray(value) ? value : [value, false];\n\n// see also https://medium.com/@WebReflection/dom-handleevent-a-cross-platform-standard-since-year-2000-5bf17287fd38\nconst EventListener = {\n handleEvent(event) {\n this[event.type](event);\n },\n};\nconst ListenersWeakMap = new WeakMap();\n\nconst createListener = (node) => {\n const listener = Object.create(EventListener);\n ListenersWeakMap.set(node, listener);\n return listener\n};\n\n/**\n * Set a new event listener\n * @param {object} expression - event expression data\n * @param {HTMLElement} expression.node - target node\n * @param {string} expression.name - event name\n * @param {*} value - new expression value\n * @returns {undefined}\n */\nfunction eventExpression({ node, name }, value) {\n const normalizedEventName = name.replace(RE_EVENTS_PREFIX, '');\n const eventListener = ListenersWeakMap.get(node) || createListener(node);\n const [callback, options] = getCallbackAndOptions(value);\n const handler = eventListener[normalizedEventName];\n const mustRemoveEvent = handler && !callback;\n const mustAddEvent = callback && !handler;\n\n if (mustRemoveEvent) {\n node.removeEventListener(normalizedEventName, eventListener);\n }\n\n if (mustAddEvent) {\n node.addEventListener(normalizedEventName, eventListener, options);\n }\n\n eventListener[normalizedEventName] = callback;\n}\n\n/* c8 ignore next */\nconst ElementProto = typeof Element === 'undefined' ? {} : Element.prototype;\nconst isNativeHtmlProperty = (0,_util_misc_js__WEBPACK_IMPORTED_MODULE_6__.memoize)(\n (name) => ElementProto.hasOwnProperty(name), // eslint-disable-line\n);\n\n/**\n * Add all the attributes provided\n * @param {HTMLElement} node - target node\n * @param {object} attributes - object containing the attributes names and values\n * @param {*} oldAttributes - the old expression cached value\n * @returns {undefined} sorry it's a void function :(\n */\nfunction setAllAttributes(node, attributes, oldAttributes) {\n Object.entries(attributes)\n // filter out the attributes that didn't change their value\n .filter(([name, value]) => value !== oldAttributes?.[name])\n .forEach(([name, value]) => {\n switch (true) {\n case name === _util_constants_js__WEBPACK_IMPORTED_MODULE_1__.REF_ATTRIBUTE:\n return refExpression({ node }, value)\n case name === _util_constants_js__WEBPACK_IMPORTED_MODULE_1__.VALUE_ATTRIBUTE:\n return valueExpression({ node }, value)\n case (0,_util_checks_js__WEBPACK_IMPORTED_MODULE_5__.isEventAttribute)(name):\n return eventExpression({ node, name }, value)\n default:\n return attributeExpression({ node, name }, value)\n }\n });\n}\n\n/**\n * Remove all the attributes provided\n * @param {HTMLElement} node - target node\n * @param {object} newAttributes - object containing all the new attribute names\n * @param {object} oldAttributes - object containing all the old attribute names\n * @returns {undefined} sorry it's a void function :(\n */\nfunction removeAllAttributes(node, newAttributes, oldAttributes) {\n const newKeys = newAttributes ? Object.keys(newAttributes) : [];\n\n Object.entries(oldAttributes)\n .filter(([name]) => !newKeys.includes(name))\n .forEach(([name, value]) => {\n switch (true) {\n case name === _util_constants_js__WEBPACK_IMPORTED_MODULE_1__.REF_ATTRIBUTE:\n return refExpression({ node, value })\n case name === _util_constants_js__WEBPACK_IMPORTED_MODULE_1__.VALUE_ATTRIBUTE:\n node.removeAttribute('value');\n node.value = '';\n return\n case (0,_util_checks_js__WEBPACK_IMPORTED_MODULE_5__.isEventAttribute)(name):\n return eventExpression({ node, name }, null)\n default:\n return node.removeAttribute(name)\n }\n });\n}\n\n/**\n * Check whether the attribute value can be rendered\n * @param {*} value - expression value\n * @returns {boolean} true if we can render this attribute value\n */\nfunction canRenderAttribute(value) {\n return ['string', 'number', 'boolean'].includes(typeof value)\n}\n\n/**\n * Check whether the attribute should be removed\n * @param {*} value - expression value\n * @param {boolean} isBoolean - flag to handle boolean attributes\n * @returns {boolean} boolean - true if the attribute can be removed\n */\nfunction shouldRemoveAttribute(value, isBoolean) {\n // boolean attributes should be removed if the value is falsy\n if (isBoolean) return !value\n\n // null and undefined values will remove the attribute as well\n return (0,_util_checks_js__WEBPACK_IMPORTED_MODULE_5__.isNil)(value)\n}\n\n/**\n * This methods handles the DOM attributes updates\n * @param {object} expression - attribute expression data\n * @param {HTMLElement} expression.node - target node\n * @param {string} expression.name - attribute name\n * @param {boolean} expression.isBoolean - flag to handle boolean attributes\n * @param {*} expression.value - the old expression cached value\n * @param {*} value - new expression value\n * @returns {undefined}\n */\nfunction attributeExpression(\n { node, name, isBoolean: isBoolean$1, value: oldValue },\n value,\n) {\n // is it a spread operator? {...attributes}\n if (!name) {\n if (oldValue) {\n // remove all the old attributes\n removeAllAttributes(node, value, oldValue);\n }\n\n // is the value still truthy?\n if (value) {\n setAllAttributes(node, value, oldValue);\n }\n\n return\n }\n\n // store the attribute on the node to make it compatible with native custom elements\n if (\n !isNativeHtmlProperty(name) &&\n ((0,_util_checks_js__WEBPACK_IMPORTED_MODULE_5__.isBoolean)(value) || (0,_util_checks_js__WEBPACK_IMPORTED_MODULE_5__.isObject)(value) || (0,_util_checks_js__WEBPACK_IMPORTED_MODULE_5__.isFunction)(value))\n ) {\n node[name] = value;\n }\n\n if (shouldRemoveAttribute(value, isBoolean$1)) {\n node.removeAttribute(name);\n } else if (canRenderAttribute(value)) {\n node.setAttribute(name, normalizeValue(name, value, isBoolean$1));\n }\n}\n\n/**\n * Get the value as string\n * @param {string} name - attribute name\n * @param {*} value - user input value\n * @param {boolean} isBoolean - boolean attributes flag\n * @returns {string} input value as string\n */\nfunction normalizeValue(name, value, isBoolean) {\n // be sure that expressions like selected={ true } will always be rendered as selected='selected'\n // fix https://github.com/riot/riot/issues/2975\n return !!value && isBoolean ? name : value\n}\n\n/**\n * Get the the target text node to update or create one from of a comment node\n * @param {HTMLElement} node - any html element containing childNodes\n * @param {number} childNodeIndex - index of the text node in the childNodes list\n * @returns {Text} the text node to update\n */\nconst getTextNode = (node, childNodeIndex) => {\n return node.childNodes[childNodeIndex]\n};\n\n/**\n * This methods handles a simple text expression update\n * @param {object} expression - expression data\n * @param {HTMLElement} expression.node - target node\n * @param {*} value - new expression value\n * @returns {undefined}\n */\nfunction textExpression({ node }, value) {\n node.data = normalizeStringValue(value);\n}\n\nconst expressions = {\n [_util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__.ATTRIBUTE]: attributeExpression,\n [_util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__.EVENT]: eventExpression,\n [_util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__.TEXT]: textExpression,\n [_util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__.VALUE]: valueExpression,\n [_util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__.REF]: refExpression,\n};\n\nconst Expression = {\n // Static props\n // node: null,\n // value: null,\n\n // API methods\n /**\n * Mount the expression evaluating its initial value\n * @param {*} scope - argument passed to the expression to evaluate its current values\n * @returns {Expression} self\n */\n mount(scope) {\n // hopefully a pure function\n const value = this.evaluate(scope);\n\n // IO() DOM updates\n expressions[this.type](this, value);\n\n // store the computed value for the update calls\n this.value = value;\n\n return this\n },\n /**\n * Update the expression if its value changed\n * @param {*} scope - argument passed to the expression to evaluate its current values\n * @returns {Expression} self\n */\n update(scope) {\n // pure function\n const value = this.evaluate(scope);\n\n if (this.value !== value) {\n // IO() DOM updates\n expressions[this.type](this, value);\n this.value = value;\n }\n\n return this\n },\n /**\n * Expression teardown method\n * @returns {Expression} self\n */\n unmount() {\n // unmount event and ref expressions\n if (\n [_util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__.EVENT, _util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__.REF].includes(this.type) ||\n // spread attributes might contain events or refs that must be unmounted\n (this.type === _util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__.ATTRIBUTE && !this.name)\n )\n expressions[this.type](this, null);\n\n return this\n },\n};\n\nfunction create$4(node, data) {\n return {\n ...Expression,\n ...data,\n node: data.type === _util_expression_types_js__WEBPACK_IMPORTED_MODULE_3__.TEXT ? getTextNode(node, data.childNodeIndex) : node,\n }\n}\n\n/**\n * Create a flat object having as keys a list of methods that if dispatched will propagate\n * on the whole collection\n * @param {Array} collection - collection to iterate\n * @param {Array} methods - methods to execute on each item of the collection\n * @param {*} context - context returned by the new methods created\n * @returns {object} a new object to simplify the the nested methods dispatching\n */\nfunction flattenCollectionMethods(collection, methods, context) {\n return methods.reduce((acc, method) => {\n return {\n ...acc,\n [method]: (scope) => {\n return collection.map((item) => item[method](scope)) && context\n },\n }\n }, {})\n}\n\nfunction create$3(node, { expressions }) {\n return flattenCollectionMethods(\n expressions.map((expression) => create$4(node, expression)),\n ['mount', 'update', 'unmount'],\n )\n}\n\nconst extendParentScope = (attributes, scope, parentScope) => {\n if (!attributes || !attributes.length) return parentScope\n\n return Object.assign(\n Object.create(parentScope || null),\n (0,_util_misc_js__WEBPACK_IMPORTED_MODULE_6__.generatePropsFromAttributes)(attributes, scope),\n )\n};\n\nconst findSlotById = (id, slots) => slots?.find((slot) => slot.id === id);\n\n// this function is only meant to fix an edge case\n// https://github.com/riot/riot/issues/2842\nconst getRealParent = (scope, parentScope) =>\n scope[_util_constants_js__WEBPACK_IMPORTED_MODULE_1__.PARENT_KEY_SYMBOL] || parentScope;\n\nconst SlotBinding = {\n // dynamic binding properties\n // node: null,\n // name: null,\n attributes: [],\n // templateData: null,\n // template: null,\n\n getTemplateScope(scope, parentScope) {\n return extendParentScope(this.attributes, scope, parentScope)\n },\n\n // API methods\n mount(scope, parentScope) {\n const templateData = scope.slots\n ? findSlotById(this.name, scope.slots)\n : false;\n const { parentNode } = this.node;\n\n // if the slot did not pass any content, we will use the self slot for optional fallback content (https://github.com/riot/riot/issues/3024)\n const realParent = templateData ? getRealParent(scope, parentScope) : scope;\n\n // if there is no html for the current slot detected we rely on the parent slots (https://github.com/riot/riot/issues/3055)\n this.templateData = templateData?.html\n ? templateData\n : findSlotById(this.name, realParent.slots);\n\n // override the template property if the slot needs to be replaced\n this.template =\n (this.templateData &&\n create(this.templateData.html, this.templateData.bindings).createDOM(\n parentNode,\n )) ||\n // otherwise use the optional template fallback if provided by the compiler see also https://github.com/riot/riot/issues/3014\n this.template?.clone();\n\n if (this.template) {\n (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.cleanNode)(this.node);\n this.template.mount(\n this.node,\n this.getTemplateScope(scope, realParent),\n realParent,\n );\n this.template.children = Array.from(this.node.childNodes);\n }\n\n moveSlotInnerContent(this.node);\n (0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.removeChild)(this.node);\n\n return this\n },\n update(scope, parentScope) {\n if (this.template) {\n const realParent = this.templateData\n ? getRealParent(scope, parentScope)\n : scope;\n\n this.template.update(this.getTemplateScope(scope, realParent), realParent);\n }\n\n return this\n },\n unmount(scope, parentScope, mustRemoveRoot) {\n if (this.template) {\n this.template.unmount(\n this.getTemplateScope(scope, parentScope),\n null,\n mustRemoveRoot,\n );\n }\n\n return this\n },\n};\n\n/**\n * Move the inner content of the slots outside of them\n * @param {HTMLElement} slot - slot node\n * @returns {undefined} it's a void method ¯\\_(ツ)_/¯\n */\nfunction moveSlotInnerContent(slot) {\n const child = slot && slot.firstChild;\n\n if (!child) return\n\n ;(0,_util_dom_js__WEBPACK_IMPORTED_MODULE_0__.insertBefore)(child, slot);\n moveSlotInnerContent(slot);\n}\n\n/**\n * Create a single slot binding\n * @param {HTMLElement} node - slot node\n * @param {object} data - slot binding data\n * @param {string} data.name - slot id\n * @param {AttributeExpressionData[]} data.attributes - slot attributes\n * @param {TemplateChunk} data.template - slot fallback template\n * @returns {object} Slot binding object\n */\nfunction createSlot(node, { name, attributes, template }) {\n return {\n ...SlotBinding,\n attributes,\n template,\n node,\n name,\n }\n}\n\n/**\n * Create a new tag object if it was registered before, otherwise fallback to the simple\n * template chunk\n * @param {Function} component - component factory function\n * @param {Array