+```
+
+## [3.0.0] - 2020-11-18
+
+### Changed
+**Breaking** - Removing Tippy as dependency.
+**Breaking** - Rename `mouseOver` to `show`.
+
+### Added
+- Add `hide` action.
+
+## [2.0.0] - 2020-11-10
+### Added
+- Adding `tippyOptions` getter to simply override default options.
+- `tippy` instance is now a singleton.
+- Destroy `tippy` instance on disconnect.
+
+### Changed
+**Breaking** - Removing `mouseOut` action.
+**Breaking** - `popover` action does not return a new `tippy` instance.
+
+## [1.0.0] - 2020-10-20
+
+### Added
+
+- Adding controller
diff --git a/node_modules/stimulus-popover/LICENSE b/node_modules/stimulus-popover/LICENSE
new file mode 100644
index 0000000..d0ded37
--- /dev/null
+++ b/node_modules/stimulus-popover/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2023 Guillaume Briday
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/node_modules/stimulus-popover/README.md b/node_modules/stimulus-popover/README.md
new file mode 100644
index 0000000..a749be9
--- /dev/null
+++ b/node_modules/stimulus-popover/README.md
@@ -0,0 +1,22 @@
+# Stimulus Popover
+
+[](https://www.npmjs.com/package/stimulus-popover)
+[](https://www.npmjs.com/package/stimulus-popover)
+[](https://github.com/stimulus-components/stimulus-popover)
+[](https://github.com/stimulus-components/stimulus-popover)
+
+## Getting started
+
+A Stimulus controller to deal with HTML popover.
+
+## 📚 Documentation
+
+See [stimulus-popover documentation](https://www.stimulus-components.com/docs/stimulus-popover/).
+
+## 👷♂️ Contributing
+
+Do not hesitate to contribute to the project by adapting or adding features ! Bug reports or pull requests are welcome.
+
+## 📝 License
+
+This project is released under the [MIT](http://opensource.org/licenses/MIT) license.
diff --git a/node_modules/stimulus-popover/card.html b/node_modules/stimulus-popover/card.html
new file mode 100644
index 0000000..3731902
--- /dev/null
+++ b/node_modules/stimulus-popover/card.html
@@ -0,0 +1,18 @@
+
+
+

+
+
+
Guillaume Briday
+
This content is loaded with AJAX.
+
+
+
diff --git a/node_modules/stimulus-popover/dist/stimulus-popover.mjs b/node_modules/stimulus-popover/dist/stimulus-popover.mjs
new file mode 100644
index 0000000..87f8da1
--- /dev/null
+++ b/node_modules/stimulus-popover/dist/stimulus-popover.mjs
@@ -0,0 +1,32 @@
+import { Controller as o } from "@hotwired/stimulus";
+class r extends o {
+ async show(e) {
+ const n = e.currentTarget;
+ let t = null;
+ if (this.hasContentTarget ? t = this.contentTarget.innerHTML : t = await this.fetch(), !t)
+ return;
+ const a = document.createRange().createContextualFragment(t);
+ n.appendChild(a);
+ }
+ hide() {
+ this.hasCardTarget && this.cardTarget.remove();
+ }
+ async fetch() {
+ if (!this.remoteContent) {
+ if (!this.hasUrlValue) {
+ console.error("[stimulus-popover] You need to pass an url to fetch the popover content.");
+ return;
+ }
+ const e = await fetch(this.urlValue);
+ this.remoteContent = await e.text();
+ }
+ return this.remoteContent;
+ }
+}
+r.targets = ["card", "content"];
+r.values = {
+ url: String
+};
+export {
+ r as default
+};
diff --git a/node_modules/stimulus-popover/dist/stimulus-popover.umd.js b/node_modules/stimulus-popover/dist/stimulus-popover.umd.js
new file mode 100644
index 0000000..3e26c03
--- /dev/null
+++ b/node_modules/stimulus-popover/dist/stimulus-popover.umd.js
@@ -0,0 +1 @@
+(function(t,e){typeof exports=="object"&&typeof module<"u"?module.exports=e(require("@hotwired/stimulus")):typeof define=="function"&&define.amd?define(["@hotwired/stimulus"],e):(t=typeof globalThis<"u"?globalThis:t||self,t.StimulusPopover=e(t.Stimulus))})(this,function(t){"use strict";class e extends t.Controller{async show(r){const s=r.currentTarget;let n=null;if(this.hasContentTarget?n=this.contentTarget.innerHTML:n=await this.fetch(),!n)return;const o=document.createRange().createContextualFragment(n);s.appendChild(o)}hide(){this.hasCardTarget&&this.cardTarget.remove()}async fetch(){if(!this.remoteContent){if(!this.hasUrlValue){console.error("[stimulus-popover] You need to pass an url to fetch the popover content.");return}const r=await fetch(this.urlValue);this.remoteContent=await r.text()}return this.remoteContent}}return e.targets=["card","content"],e.values={url:String},e});
diff --git a/node_modules/stimulus-popover/package.json b/node_modules/stimulus-popover/package.json
new file mode 100644
index 0000000..72fa445
--- /dev/null
+++ b/node_modules/stimulus-popover/package.json
@@ -0,0 +1,47 @@
+{
+ "name": "stimulus-popover",
+ "version": "6.2.0",
+ "description": "A Stimulus controller to deal with HTML popover.",
+ "keywords": [
+ "stimulus",
+ "stimulusjs",
+ "stimulus controller",
+ "popover"
+ ],
+ "repository": "git@github.com:stimulus-components/stimulus-popover.git",
+ "bugs": {
+ "url": "https://github.com/stimulus-components/stimulus-popover/issues"
+ },
+ "author": "Guillaume Briday
",
+ "license": "MIT",
+ "homepage": "https://github.com/stimulus-components/stimulus-popover",
+ "private": false,
+ "main": "dist/stimulus-popover.umd.js",
+ "module": "dist/stimulus-popover.mjs",
+ "scripts": {
+ "format": "prettier-standard '**/*.{ts,css,html}' --format",
+ "lint": "prettier-standard '**/*.{ts,css,html}' --lint",
+ "dev": "vite",
+ "prod": "vite build --mode netlify",
+ "build": "tsc --noEmit && vite build",
+ "version": "yarn build",
+ "np": "np --no-2fa --no-test"
+ },
+ "devDependencies": {
+ "@babel/core": "7.20.7",
+ "@babel/plugin-syntax-class-properties": "7.12.13",
+ "@babel/preset-env": "^7.20.2",
+ "@babel/preset-typescript": "^7.18.6",
+ "@hotwired/stimulus": "^3.2.1",
+ "autoprefixer": "^10.4.13",
+ "np": "^7.6.2",
+ "postcss": "^8.4.20",
+ "prettier-standard": "16.4.1",
+ "tailwindcss": "^3.2.4",
+ "typescript": "^4.9.4",
+ "vite": "^4.0.3"
+ },
+ "peerDependencies": {
+ "@hotwired/stimulus": "^3.1.0"
+ }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..f3699f2
--- /dev/null
+++ b/package.json
@@ -0,0 +1,5 @@
+{
+ "dependencies": {
+ "stimulus-popover": "^6.2.0"
+ }
+}
diff --git a/test.rb b/test.rb
new file mode 100644
index 0000000..3c2b702
--- /dev/null
+++ b/test.rb
@@ -0,0 +1,33 @@
+require 'http'
+
+# url = "https://static.nocoda.io/remote.php/dav/calendars/pkamin/774BE10B-AEAD-4D20-BF09-9C0FFD135E56/?export"
+# a = HTTP.basic_auth(user: 'pkamin', pass: 'QDH*@8fhWekxwWjeX8MQ3H').get(url).body.to_s
+
+# File.write('/Users/pkamin/Desktop/vacation.vcalendar', a)
+
+a = File.read('/Users/pkamin/Desktop/vacation.vcalendar')
+
+b = a.split("\r\n")
+
+events = []
+e = nil
+
+puts a.length
+b.each do |line|
+ puts line
+ if line == "BEGIN:VEVENT"
+ puts "new e"
+ e = Struct.new(:begin_at, :end_at)
+ elsif line == "END:VEVENT"
+ puts "end"
+ events << e unless e.nil?
+ elsif line.start_with?("DTSTART")
+ puts "begin"
+ e.begin_at = DateTime.parse(line.split(":")[1]) unless e.nil?
+ elsif line.start_with?("DTEND")
+ puts 'end'
+ e.end_at = DateTime.parse(line.split(":")[1]) unless e.nil?
+ end
+end
+
+puts events
diff --git a/yarn.lock b/yarn.lock
new file mode 100644
index 0000000..ac7e57b
--- /dev/null
+++ b/yarn.lock
@@ -0,0 +1,8 @@
+# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
+# yarn lockfile v1
+
+
+stimulus-popover@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.yarnpkg.com/stimulus-popover/-/stimulus-popover-6.2.0.tgz#67bcf725d9077f213869905e7b5c80212a92d802"
+ integrity sha512-QJqGXA842qS9s+c0Si6JUKDHDZVnkClvgZPfl2KbHcT6G9BMrEK+21na00SVNpWmmzdc6E1qQrq/oVY7gGaf3w==