Model menus, modal edit and layout improvements
Some checks failed
/ Run tests (push) Successful in 2m44s
/ Run system tests (push) Failing after 2m43s
/ Build, push and deploy image (push) Successful in 4m3s

This commit is contained in:
david 2024-11-23 19:10:09 +01:00
parent 7b0f05a448
commit 70500c49a1
35 changed files with 1079 additions and 148 deletions

View file

@ -24,7 +24,9 @@ ENV \
RAILS_ENV=development \
TZ=Europe/Zurich \
PATH=${INSTALL_DIR}/bin:$GEM_HOME/bin:$GEM_HOME/gems/bin:$PATH \
EDITOR=vim
EDITOR=vim \
RUBY_DEBUG_DAP_SHOW_PROTOCOL=1 \
RUBY_DEBUG_OPEN=true
RUN \
ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \
@ -49,7 +51,11 @@ RUN \
apt-get install -yqq --no-install-recommends \
sqlite3 nodejs npm sassc yarn libvips fish ranger pandoc libjemalloc2 && \
apt-get clean && \
npm install tabby-agent && \
npm i -g tabby-agent \
vscode-langservers-extracted \
dockerfile-language-server-nodejs \
@microsoft/compose-language-service \
yaml-language-server@next && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
truncate -s 0 /var/log/*log && \
gem update --system && \
@ -62,8 +68,6 @@ RUN curl -L https://github.com/helix-editor/helix/releases/download/${HELIX_VERS
tar -xf /tmp/helix.tar.xz && \
ln -s /opt/helix-${HELIX_VERSION}-x86_64-linux/hx /usr/local/bin chmod +x /usr/local/bin/
USER ${NAME}
RUN mkdir -p ~/.config/fish ~/.config/helix
COPY <<FISH /home/app/.config/fish/config.fish
@ -85,9 +89,39 @@ COPY <<LANGS /home/app/.config/helix/languages.toml
name = "ruby"
shebangs = ["ruby"]
roots = ["Gemfile.lock"]
language-servers = [ "ruby-lsp" ]
language-servers = [ "ruby-lsp", "rubocop" ,{ name = "solargraph", except-features = [ "format", "diagnostics" ] }]
auto-format = true
[language.debugger]
command = "rdbg"
args =["-o", "-c"]
name = "debug"
transport = "tcp"
port-arg = "-p {}"
[[language.debugger.templates]]
name = "attach"
request = "attach"
completion = [ "pid" ]
args = { attachCommands = ["rdbg --attach {0}"] }
[[language.debugger.templates]]
name = "launch server"
request = "launch"
completion = [ { name = "entrypoint", completion = "filename", default = "dev" } ]
args = { program = "{0}" }
[language-server.solargraph]
command = "solargraph"
args = ["stdio"]
config = { diagnostics = false, formatting = false }
[language-server.rubocop]
command = "rubocop"
args = ["--lsp", "--stderr", "--fail-level", "fatal"]
timeout = 3
[language-server.ruby-lsp]
command = "ruby-lsp"
args = ["--debug"]
@ -95,13 +129,17 @@ args = ["--debug"]
LANGS
COPY <<CONF /home/app/.config/helix/config.toml
theme = "gruvbox_dark_hard"
theme = "dark_plus"
[editor]
true-color = true
CONF
RUN chown 1000:1000 -R /home/app
USER ${NAME}
CMD ["/usr/bin/fish", "-l"]
FROM ruby:${RUBY_VERSION}-alpine AS builder

View file

@ -20,37 +20,6 @@ $tertiary-dark-active-open: $gray-600;
}
}
// // Fix trix dark mode
// .trix-button-row {
// .trix-button-group {
// border: var(--bs-border-width) solid var(--bs-border-color);
// .trix-button {
// border: 0;
// }
// }
// }
// [data-bs-theme=dark] {
// .trix-button-row {
// .trix-button-group {
// .trix-button {
// background-color: transparent;
// filter: invert(100%);
// }
// }
// }
// }
// // end fix trix dark mode
// .trix-content pre {
// background-color: var(--bs-secondary-bg);
// color: var(--bs-secondary-color);
// border: var(--bs-border-width) solid var(--bs-border-color);
// border-radius: var(--bs-border-radius);
// padding: var(--bs-padding);
// }
.hover-row:hover {
background-color: var(--bs-tertiary-bg);
}
@ -91,6 +60,7 @@ $tertiary-dark-active-open: $gray-600;
.page_nav nav ul {
padding-left: 0;
list-style-type: none;
li {
margin-bottom: 0.5rem;
}
@ -230,8 +200,9 @@ details.success_criterion:last-child {
}
details.success_criterion {
border: solid 1px $tertiary;
border-bottom: solid 0px $tertiary;
border-left: solid 1px $tertiary;
border-right: solid 0px $tertiary;
border-top: solid 0px $tertiary;
summary:hover {
background-color: $tertiary-hover;
@ -248,6 +219,7 @@ details.success_criterion {
>.content {
padding-left: 1rem;
padding-right: 1rem;
padding-bottom: 1rem;
}
}
@ -262,7 +234,7 @@ details.success_criterion {
details.success_criterion[open] {
border: solid 1px $tertiary;
/* border: solid 1px $tertiary; */
>summary {
background-color: $tertiary;
@ -275,14 +247,17 @@ details.success_criterion[open] {
@include color-mode(dark) {
details.success_criterion {
border: solid 1px $tertiary-dark;
border-bottom: solid 0px $tertiary-dark;
border-left: solid 1px $tertiary-dark;
border-right: solid 1px $tertiary-dark;
border-top: solid 1px $tertiary-dark;
}
details.success_criterion:last-child {
border-bottom: solid 1px $tertiary-dark;
}
details.success_criterion[open] {
border: solid 1px $tertiary-dark;
/* border: solid 1px $tertiary-dark; */
>summary {
background-color: $tertiary-dark;
@ -343,3 +318,64 @@ details[open] {
.sortable-ghost {
border: solid 3px $primary !important;
}
$dialog-animation-time: 0.5s;
$dialog-animation-start-state: scaleX(1);
$dialog-animation-end-state: scaleX(1);
/* dialog::backdrop { */
/* background-color: white; */
/* opacity: 0.75; */
/* } */
/* Open state of the dialog */
dialog[open] {
opacity: 1;
transform: $dialog-animation-end-state;
}
/* Closed state of the dialog */
dialog {
opacity: 0;
transform: $dialog-animation-start-state;
transition:
opacity $dialog-animation-time ease-out,
transform $dialog-animation-time ease-out,
overlay $dialog-animation-time ease-out allow-discrete,
display $dialog-animation-time ease-out allow-discrete;
/* Equivalent to
transition: all $dialog-animation-time allow-discrete; */
}
/* Before-open state */
/* Needs to be after the previous dialog[open] rule to take effect,
as the specificity is the same */
@starting-style {
dialog[open] {
opacity: 0;
transform: $dialog-animation-start-state;
}
}
/* Transition the :backdrop when the dialog modal is promoted to the top layer */
dialog::backdrop {
background-color: rgb(0 0 0 / 75%);
transition:
display $dialog-animation-time allow-discrete,
overlay $dialog-animation-time allow-discrete,
background-color $dialog-animation-time;
/* Equivalent to
transition: all $dialog-animation-time allow-discrete; */
}
dialog[open]::backdrop {
background-color: rgb(0 0 0 / 75%);
}
/* This starting-style rule cannot be nested inside the above selector
because the nesting selector cannot represent pseudo-elements. */
@starting-style {
dialog[open]::backdrop {
background-color: rgb(0 0 0 / 0%);
}
}

View file

@ -50,4 +50,8 @@ class ApplicationController < ActionController::Base
def initialize_sidebar_items
[]
end
def render_modal(action: action_name)
render action, layout: "modal" if turbo_frame_request_id == "modal"
end
end

View file

@ -19,7 +19,9 @@ class ElementsController < ApplicationController
end
# GET /elements/1/edit
def edit; end
def edit
render_modal
end
# POST /elements
def create

View file

@ -19,6 +19,7 @@ class PagesController < ApplicationController
# GET /pages/1/edit
def edit
render_modal
end
# POST /pages

View file

@ -18,7 +18,9 @@ class SuccessCriteriaController < ApplicationController
end
# GET /success_criteria/1/edit
def edit; end
def edit
render_modal()
end
# POST /success_criteria
def create

View file

@ -35,10 +35,10 @@ module ApplicationHelper
def dropdown_menu(items, klass: "")
tag.details(class: "details-dropdown #{klass}") do
tag.details(class: "details-dropdown #{klass}", data: { controller: "dropdown-menu" }) do
tag.summary do
tag.div(class: "details-dropdown-trigger") do
tag.div(tag.i(class: "bi bi-three-dots-vertical"), class: "btn btn-outline-secondary")
tag.div(tag.i(class: "bi bi-three-dots"), class: "btn btn-outline-body")
end
end +
tag.div(class: "details-dropdown-content bg-secondary") do
@ -48,7 +48,7 @@ module ApplicationHelper
text = item[:icon] ? tag.i(class: "bi bi-#{item[:icon]} me-2") + " #{item[:text]}".html_safe : item[:text]
case item[:method]
when nil, :get
link_to(text, item[:href], class: "#{c}")
link_to(text, item[:href], class: "#{c}", data: { turbo_frame: item[:turbo_frame], action: item[:action] })
else
button_to(text,
item[:href],
@ -61,4 +61,8 @@ module ApplicationHelper
end
end
end
def modal?
turbo_frame_request_id == "modal"
end
end

View file

@ -1,4 +1,19 @@
# frozen_string_literal: true
module ElementsHelper
def element_menu(element)
dropdown_menu([
{ text: "Bearbeiten",
icon: "pencil",
href: edit_element_path(element),
turbo_frame: "modal",
color: "body" },
{ text: "Löschen",
icon: "trash",
href: element_path(element),
color: :danger,
method: :delete,
confirm: "Bist du sicher?" } ],
klass: "ms-auto")
end
end

View file

@ -1,2 +1,27 @@
module PagesHelper
def page_menu(page)
dropdown_menu([
{
text: "Alle zu [s]",
href: "#",
action: "click->details-list#closeAll"
},
{
text: "Alle auf [a]",
href: "#",
action: "click->details-list#openAll"
},
{ text: "Bearbeiten",
icon: "pencil",
href: edit_page_path(page),
turbo_frame: "modal",
color: "body" },
{ text: "Löschen",
icon: "trash",
href: page_path(page),
color: :danger,
method: :delete,
confirm: "Bist du sicher?" } ],
klass: "ms-auto")
end
end

View file

@ -27,19 +27,20 @@ module SuccessCriteriaHelper
def success_criterion_menu(success_criterion, show_mode = true)
dropdown_menu([
{ text: show_mode ? "Bearbeiten" : "Bearbeiten abbrechen",
{ text: "Bearbeiten",
icon: "pencil",
href: show_mode ? edit_success_criterion_path(success_criterion) : success_criterion_path(success_criterion)},
href: edit_success_criterion_path(success_criterion),
turbo_frame: "modal",
color: "body" },
{ text: "Löschen",
icon: "trash",
href: success_criterion_path(success_criterion),
color: :danger,
method: :delete,
confirm: "Bist du sicher?"}],
confirm: "Bist du sicher?" } ],
klass: "mt-3 ms-auto")
end
def success_criterion_edit_button(success_criterion, edit_mode)
path = if success_criterion.persisted?
if edit_mode

View file

@ -10,7 +10,7 @@ export default class extends Controller {
e.preventDefault();
const id = this.element.dataset["targetId"]
const el = document.getElementById(id)
el.querySelectorAll("details").forEach(el => {
el.querySelectorAll("details.success_criterion").forEach(el => {
el.setAttribute("open", "")
})
}
@ -19,7 +19,7 @@ export default class extends Controller {
e.preventDefault();
const id = this.element.dataset["targetId"]
const el = document.getElementById(id)
el.querySelectorAll("details").forEach(el => {
el.querySelectorAll("details.success_criterion").forEach(el => {
el.removeAttribute("open")
})
}

View file

@ -0,0 +1,53 @@
// app/javascript/controllers/dialog_controller.js
import { Controller } from "@hotwired/stimulus"
// Connects to data-controller="dialog"
export default class extends Controller {
connect() {
this.open()
console.log("connect dialog", this.element)
this.element.addEventListener("turbo:submit-end", e => {
this.submitEnd(e)
})
this.element.addEventListener("click", e => this.clickOutside(e))
}
disconnect() {
}
// hide modal on successful form submission
// data-action="turbo:submit-end->turbo-modal#submitEnd"
submitEnd(e) {
if (e.detail.success) {
this.close()
}
}
open() {
console.log("open dialog")
this.element.showModal()
document.body.classList.add('overflow-hidden')
this.element.addEventListener("close", this.enableBodyScroll.bind(this))
}
close() {
this.element.removeEventListener("close", this.enableBodyScroll.bind(this))
this.element.close()
// clean up modal content
const frame = document.getElementById('modal')
frame.removeAttribute("src")
frame.innerHTML = ""
}
enableBodyScroll() {
document.body.classList.remove('overflow-hidden')
}
clickOutside(event) {
console.log("clickOutside", event.target, this)
if (event.target === this.element) {
this.close()
}
}
}

View file

@ -0,0 +1,16 @@
import { Controller } from "@hotwired/stimulus"
// Connects to data-controller="dropdown-menu"
export default class extends Controller {
connect() {
const x = this.element
this.element.addEventListener("turbo:click", e => {
console.log("turbo visit dropdown", e, this.element)
this.element.removeAttribute("open");
})
this.element.addEventListener("turbo:submit-start", e => {
console.log("turbo submit dropdown", e, this.element)
this.element.removeAttribute("open");
})
}
}

View file

@ -19,9 +19,15 @@ application.register("collapse-chevron-toggler", CollapseChevronTogglerControlle
import DetailsListController from "./details_list_controller"
application.register("details-list", DetailsListController)
import DialogController from "./dialog_controller"
application.register("dialog", DialogController)
import DragController from "./drag_controller"
application.register("drag", DragController)
import DropdownMenuController from "./dropdown_menu_controller"
application.register("dropdown-menu", DropdownMenuController)
import HelloController from "./hello_controller"
application.register("hello", HelloController)
@ -48,6 +54,3 @@ application.register("toast", ToastController)
import UnsavedChangesController from "./unsaved_changes_controller"
application.register("unsaved-changes", UnsavedChangesController)
import Lightbox from '@stimulus-components/lightbox'
application.register('lightbox', Lightbox)

View file

@ -17,6 +17,8 @@ class SuccessCriterion < ApplicationRecord
before_save :set_position
before_update :update_positions, if: :position_changed?
validates :result, inclusion: { in: self.results.keys + [ nil ] }
def level_value
return nil unless level

View file

@ -1 +1,2 @@
<%= turbo_stream.remove dom_id(@checklist_entry) %>
<%= turbo_stream_toast("Check wurde aus Checkliste entfernt", true) %>

View file

@ -1,6 +1,6 @@
<div id="<%= dom_id element %>" class="mb-5">
<%= turbo_frame_tag dom_id(element, :frame) do %>
<div class="d-flex">
<div class="d-flex border-bottom mb-3">
<h3 class="h4">
<i class="bi bi-boxes">
</i>
@ -9,13 +9,7 @@
<%= element.title %>
</span>
</h3>
<%= link_to [:edit, element], class: "btn btn-link text-secondary" do %>
<i class="bi bi-pencil">
</i>
<% end %>
<%= button_to(element_path(element), method: :delete, class: "btn btn-link text-danger", data: { turbo_confirm: "Bist du sicher?"}) do %>
<i class="bi bi-trash"></i>
<% end %>
<%= element_menu(element) %>
</div>
<div class="d-flex flex-column flex-sm-row">
@ -28,7 +22,7 @@
<div class="mb-3" data-controller="lightbox">
<%= link_to(s) do %>
<%= image_tag(s.variant(:thumbnail), class: "img-fluid", alt: "Screenshot des getesteten Elements") %>
<% end %>
<% end rescue nil %>
</div>
<% end %>
</div>

View file

@ -5,4 +5,4 @@
= turbo_stream.replace dom_id(e, :page_nav_row), partial: "elements/page_nav_row", locals: { element: e, current_page: true }
= turbo_stream_toast("Element wurde gelöscht", false)
= turbo_stream_toast("Element wurde gelöscht", true)

View file

@ -1,19 +1,17 @@
<h1><%= t("scaffold.pagetitle_edit", model: Element.model_name.human) %></h1>
<%= turbo_frame_tag dom_id(@element, :frame) do %>
<div>
<div class="d-flex">
<h2 class="h3">
<i class="bi bi-boxes">
</i>
<%= @element.title %>
<%= link_to(tag.i(class: "bi bi-pencil"), @element, class: "btn btn-link text-warning") %>
</div>
<%= render "form", element: @element %>
</div>
<% end %>
<div class="action-row">
<% unless modal? %>
<div class="action-row">
<%= link_to t("scaffold.link_show", model: Element.model_name.human), @element %>
<%= link_to t("scaffold.link_index", model: Element.model_name.human(count: 2)), page_elements_path(@element.page) %>
</div>
</div>
<% end %>

View file

@ -1,4 +1,4 @@
.toast class="#{alert ? "text-bg-danger" : ""}" role="alert" aria-live="assertive" aria-atomic="true" data={ controller: "toast" }
.toast class="#{alert ? "text-bg-danger" : "text-bg-info"}" role="alert" aria-live="assertive" aria-atomic="true" data={ controller: "toast" }
.toast-header
/img src="..." class="rounded me-2" alt="...">
/strong.me-auto = heading

View file

@ -17,11 +17,10 @@ html data-bs-theme="#{cookies[:"modeTheme"] || "light"}" data-controller="set-th
#main-content[data-controller="rich-text-link-targets"]
= yield
.toast-container.position-fixed.bottom-0.start-0.p-3 id="toasts"
.toast-container.position-fixed.top-0.end-0.p-3 id="toasts"
- if flash.alert
= render partial: "layouts/toast", locals: { content: flash.alert, alert: true }
- if flash.notice
= render partial: "layouts/toast", locals: { content: flash.notice, alert: false }
/footer.container-fluid.mt-auto.border-top
= Rails.configuration.build_version && "Version: #{Rails.configuration.build_version}"
= turbo_frame_tag "modal"

View file

@ -0,0 +1,9 @@
= turbo_frame_tag "modal" do
dialog.bg-body id="modal" data={ controller: :dialog }
.float-end
form method="dialog"
button.btn.btn-outline-danger
i.bi.bi-x-lg
= yield
data-action="turbo:submit-end->turbo-modal#submitEnd"

View file

@ -11,5 +11,5 @@
<% end %>
</div>
<%= link_to("Sprinte zum ersten Element", "##{dom_id(page.elements.first)}", class: "visually-hidden", data: {controller: :hotkey, hotkey: "e", turbo: false}) if page.elements.first %>
<%= link_to("Springe zum ersten Element", "##{dom_id(page.elements.first)}", class: "visually-hidden", data: {controller: :hotkey, hotkey: "e", turbo: false}) if page.elements.first %>
</div>

View file

@ -2,7 +2,9 @@
<%= render "form", page: @page %>
<% unless modal? %>
<div class="action-row">
<%= link_to t("scaffold.link_show", model: Page.model_name.human), @page %>
<%= link_to t("scaffold.link_index", model: Page.model_name.human(count: 2)), report_pages_path(@page.report) %>
</div>
<% end %>

View file

@ -11,7 +11,8 @@ h2
= turbo_frame_tag(dom_id(@page, :notes)) do
= render partial: "pages/notes", locals: { page: @page }
.action-row
- unless modal?
.action-row
= link_to t("scaffold.link_edit", model: @page.model_name.human), edit_page_path(@page)
= link_to t("scaffold.link_index", model: @page.model_name.human(count: 2)), report_pages_path(@page.report)
= button_to t("scaffold.link_destroy", model: @page.model_name.human), @page, method: :delete, class: "btn btn-outline-danger"

View file

@ -1,29 +1,32 @@
div
small.float-end
| Erstellt am
= l(@report.created_at, format: :short)
| , zuletzt bearbeitet am
= l(@report.updated_at, format: :short)
h1
.border-bottom.mb-3
h1
i.bi.bi-journal-text.me-2
= @report.name
- if @report.comment
.smb-4.lead.mb-3
= @report.comment
div
small
'Erstellt am
= l(@report.created_at, format: :short)
', zuletzt bearbeitet am
= l(@report.updated_at, format: :short)
.smb-4.lead.mb-5
= @report.comment || tag.i("leer")
- if @current_page
.current_page data-controller="details-list" data-target-id="element_list"
.border-bottom.mb-3.d-flex
h2
i.bi.bi-file-earmark-check
=< @current_page.position
=< @current_page.path
= page_menu(@current_page)
p
'URL:
= safe_display(@current_page.full_url) { link_to(_1, _1, target: :_blank) }
p.actions
.d-flex.justify-content-end data-controller="details-list" data-target-id="element_list"
.btn-group.me-3
.d-flex.justify-content-end
.btn-group.me-3.visually-hidden
= link_to("Alle zu [s]", "#", data: { action: "click->details-list#closeAll", controller: :hotkey, hotkey: "s" }, class: "btn btn-outline-secondary")
= link_to("Alle auf [a]", "#", data: { action: "click->details-list#openAll", controller: :hotkey, hotkey: "a" }, class: "btn btn-outline-secondary")
= button_to(tag.i(class: "bi bi-trash"), page_path(@current_page), method: :delete, class: "btn btn-outline-danger", form: {data: { turbo_confirm: "Bist du sicher?" }})
/= button_to(tag.i(class: "bi bi-trash"), page_path(@current_page), method: :delete, class: "btn btn-outline-danger", form: {data: { turbo_confirm: "Bist du sicher?" }})
.row
.col-lg-3.col-md-4.col-sm-12
.page_nav.sticky-top

View file

@ -44,7 +44,7 @@
.text-end.fw-bold = SuccessCriterion.human_attribute_name(:quick_fix)
.col-md-8.col-lg-9
= success_criterion.quick_fix
.row.mb-3
.row
.col-md-4.col-lg-3
.text-end.fw-bold = SuccessCriterion.human_attribute_name(:test_instructions)
.col-md-8.col-lg-9

View file

@ -6,4 +6,5 @@
= form.rich_text_area :quick_fix
= form.rich_text_area :test_comment
= form.submit class: "btn btn-primary"
= link_to "Abbrechen", success_criterion.persisted? ? success_criterion : success_criterion.element, class: "btn btn-outline-secondary"
- unless modal?
=< link_to "Abbrechen", success_criterion.persisted? ? success_criterion : success_criterion.element, class: "btn btn-outline-secondary"

View file

@ -19,4 +19,4 @@ summary.d-flex.align-items-start id=dom_id(success_criterion, :header)
= success_criterion_badge(success_criterion.check.external_number, extra_classes: "text-bg-info me-1")
= success_criterion_badge(success_criterion.level, extra_classes: "sc-level-#{success_criterion.level.to_s.downcase} me-1")
i.bi.bi-grip-vertical.handle
i.bi.bi-grip-vertical.handle.me-1

View file

@ -2,3 +2,5 @@
- @success_criterion.element.success_criteria.reject { _1 == @success_criterion }.each do |sc|
- Rails.logger.debug "Send to sc #{sc.id}"
= turbo_stream.update dom_id(sc, :position), "#{sc.page.position}.#{sc.element.position}.#{sc.position}"
= turbo_stream_toast("Erfolgskriterium wurde gelöscht", true)

View file

@ -1,19 +1,7 @@
h1
= t("scaffold.pagetitle_edit", model: SuccessCriterion.model_name.human)
= turbo_frame_tag(dom_id(@success_criterion, :frame)) do
.d-flex
h2.my-2 Bearbeiten
.ms-auto
= success_criterion_menu(@success_criterion, false)
/= dropdown_menu(klass: "mt-3 b-0") do
ul.list-group
li.list-group-item
= success_criterion_edit_button(@success_criterion, true)
li.list-group-item
= button_to(tag.i(class: "bi bi-trash") + " Löschen".html_safe, @success_criterion, method: :delete, class: "btn text-danger", data: { turbo_confirm: "Bist du sicher?"})
.mb-3
h2 Erfolgskriterium bearbeiten
.mb-3
= render "form", success_criterion: @success_criterion
.action-row
- unless modal?
.action-row
= link_to t("scaffold.link_show", model: SuccessCriterion.model_name.human), @success_criterion
= link_to t("scaffold.link_index", model: SuccessCriterion.model_name.human(count: 2)), element_success_criteria_path(@success_criterion.element)

View file

@ -3,5 +3,4 @@
- @success_criterion.element.success_criteria.each do |sc|
= turbo_stream.update(dom_id(sc, :position), sc.number)
= turbo_stream_toast("Erfolgskriterium gespeichert: #{t("activerecord.attributes.success_criterion.results/#{@success_criterion.result}")}", false)

455
package-lock.json generated
View file

@ -6,10 +6,13 @@
"": {
"name": "app",
"dependencies": {
"@github/hotkey": "^3.1.1",
"@hotwired/stimulus": "^3.2.2",
"@hotwired/turbo-rails": "^8.0.4",
"@popperjs/core": "^2.11.8",
"@rails/actiontext": "^7.1.3-4",
"@rails/request.js": "^0.0.11",
"@stimulus-components/lightbox": "^4.0.0",
"autoprefixer": "^10.4.19",
"bootstrap": "^5.3.3",
"bootstrap-icons": "^1.11.3",
@ -18,10 +21,13 @@
"postcss": "^8.4.39",
"postcss-cli": "^11.0.0",
"sass": "^1.77.8",
"sortablejs": "^1.15.3",
"trix": "^2.1.3"
},
"devDependencies": {
"tabby-agent": "^1.7.0"
"tabby-agent": "^1.7.0",
"vscode-css-languageserver-bin": "^1.4.0",
"vscode-langservers-extracted": "^4.10.0"
}
},
"node_modules/@esbuild/linux-x64": {
@ -40,6 +46,11 @@
"node": ">=18"
}
},
"node_modules/@github/hotkey": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/@github/hotkey/-/hotkey-3.1.1.tgz",
"integrity": "sha512-H30I6XDO3gFSgLuEuHoMBRZG9c3uCKNdAcYklL1FaZDPdU1bXfgjnpzGDPcUr0U6eGQ+T3XLY9slatwZYWL1dA=="
},
"node_modules/@hotwired/stimulus": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/@hotwired/stimulus/-/stimulus-3.2.2.tgz",
@ -137,6 +148,11 @@
"spark-md5": "^3.0.1"
}
},
"node_modules/@rails/request.js": {
"version": "0.0.11",
"resolved": "https://registry.npmjs.org/@rails/request.js/-/request.js-0.0.11.tgz",
"integrity": "sha512-2U3uYS0kbljt+pAstN+LIlZOl7xmOKig5N6FrvtUWO1wq0zR1Hf90fHfD2SYiyV8yH1nyKpoTmbLqWT0xe1zDg=="
},
"node_modules/@sindresorhus/merge-streams": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz",
@ -149,6 +165,23 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/@stimulus-components/lightbox": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@stimulus-components/lightbox/-/lightbox-4.0.0.tgz",
"integrity": "sha512-pj4PfnGANbc3Ef6I/5aPeRS8Tj2rK1b9dn8rlpJZs1K9narqM57ZtUTutHZsnOv95+4LqQVktj+auMgz+LKzjw==",
"dependencies": {
"lightgallery": "^2.7.2"
},
"peerDependencies": {
"@hotwired/stimulus": "^3.0.0"
}
},
"node_modules/@vscode/l10n": {
"version": "0.0.18",
"resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz",
"integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==",
"dev": true
},
"node_modules/ansi-regex": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
@ -241,6 +274,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/boolbase": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
"integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==",
"dev": true
},
"node_modules/bootstrap": {
"version": "5.3.3",
"resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz",
@ -412,6 +451,45 @@
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
"license": "MIT"
},
"node_modules/core-js": {
"version": "3.39.0",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.39.0.tgz",
"integrity": "sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==",
"dev": true,
"hasInstallScript": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/core-js"
}
},
"node_modules/css-select": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz",
"integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==",
"dev": true,
"dependencies": {
"boolbase": "^1.0.0",
"css-what": "^6.1.0",
"domhandler": "^5.0.2",
"domutils": "^3.0.1",
"nth-check": "^2.0.1"
},
"funding": {
"url": "https://github.com/sponsors/fb55"
}
},
"node_modules/css-what": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz",
"integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==",
"dev": true,
"engines": {
"node": ">= 6"
},
"funding": {
"url": "https://github.com/sponsors/fb55"
}
},
"node_modules/debug": {
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz",
@ -438,6 +516,61 @@
"node": ">= 0.6.0"
}
},
"node_modules/dom-serializer": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
"integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==",
"dev": true,
"dependencies": {
"domelementtype": "^2.3.0",
"domhandler": "^5.0.2",
"entities": "^4.2.0"
},
"funding": {
"url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"
}
},
"node_modules/domelementtype": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz",
"integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/fb55"
}
]
},
"node_modules/domhandler": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz",
"integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==",
"dev": true,
"dependencies": {
"domelementtype": "^2.3.0"
},
"engines": {
"node": ">= 4"
},
"funding": {
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
"node_modules/domutils": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz",
"integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==",
"dev": true,
"dependencies": {
"dom-serializer": "^2.0.0",
"domelementtype": "^2.3.0",
"domhandler": "^5.0.3"
},
"funding": {
"url": "https://github.com/fb55/domutils?sponsor=1"
}
},
"node_modules/electron-to-chromium": {
"version": "1.4.827",
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.827.tgz",
@ -450,6 +583,18 @@
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"license": "MIT"
},
"node_modules/entities": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"dev": true,
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/esbuild": {
"version": "0.23.0",
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.0.tgz",
@ -630,6 +775,15 @@
"node": ">=4"
}
},
"node_modules/he": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
"integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true,
"bin": {
"he": "bin/he"
}
},
"node_modules/ignore": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
@ -702,6 +856,12 @@
"node": ">=0.12.0"
}
},
"node_modules/jsonc-parser": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz",
"integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==",
"dev": true
},
"node_modules/jsonfile": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
@ -714,6 +874,14 @@
"graceful-fs": "^4.1.6"
}
},
"node_modules/lightgallery": {
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/lightgallery/-/lightgallery-2.8.1.tgz",
"integrity": "sha512-K9bRsrKQM4UyjNUXOX+mW1IMWKvWbDmK42x5nNzgxsi5CNEYMfLoRsA27F1lXp+yegeqdXusymS9w16Fd8a3Rg==",
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/lilconfig": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz",
@ -784,6 +952,16 @@
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/node-html-parser": {
"version": "6.1.13",
"resolved": "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.13.tgz",
"integrity": "sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==",
"dev": true,
"dependencies": {
"css-select": "^5.1.0",
"he": "1.2.0"
}
},
"node_modules/node-releases": {
"version": "2.0.14",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
@ -836,6 +1014,18 @@
"node": ">=0.10.0"
}
},
"node_modules/nth-check": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
"integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==",
"dev": true,
"dependencies": {
"boolbase": "^1.0.0"
},
"funding": {
"url": "https://github.com/fb55/nth-check?sponsor=1"
}
},
"node_modules/path-type": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz",
@ -1059,6 +1249,18 @@
"node": ">=8.10.0"
}
},
"node_modules/regenerator-runtime": {
"version": "0.13.11",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
"integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
"dev": true
},
"node_modules/request-light": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/request-light/-/request-light-0.7.0.tgz",
"integrity": "sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==",
"dev": true
},
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@ -1154,6 +1356,11 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/sortablejs": {
"version": "1.15.3",
"resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.3.tgz",
"integrity": "sha512-zdK3/kwwAK1cJgy1rwl1YtNTbRmc8qW/+vgXf75A7NHag5of4pyI6uK86ktmQETyWRH7IGaE73uZOOBcGxgqZg=="
},
"node_modules/source-map-js": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
@ -1252,6 +1459,19 @@
"integrity": "sha512-LqMp67LiKMQytAHKqNL1Jgmfz69ViW+WBOQTPA2BlMIuxic1mw5vHgDtOE0bvvojUdjAxh0EJtLpJn6BC/2JKw==",
"license": "MIT"
},
"node_modules/typescript": {
"version": "4.9.5",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
"integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
"dev": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
},
"engines": {
"node": ">=4.2.0"
}
},
"node_modules/undefsafe": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz",
@ -1309,6 +1529,239 @@
"browserslist": ">= 4.21.0"
}
},
"node_modules/vscode-css-languageserver-bin": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/vscode-css-languageserver-bin/-/vscode-css-languageserver-bin-1.4.0.tgz",
"integrity": "sha512-KWrF5f4RYYe8RBDfqb1c0Sdf9xPS2Ly/Z/T18H+uUOMw2QyzIrkxv4bMKy5GFfPm4479k6Ln4ji4UHqSmhGf3g==",
"dev": true,
"dependencies": {
"vscode-css-languageservice": "^3.0.9-next.18",
"vscode-languageserver": "^4.1.3",
"vscode-languageserver-protocol-foldingprovider": "^2.0.1"
},
"bin": {
"css-languageserver": "cssServerMain.js"
},
"engines": {
"node": "*"
}
},
"node_modules/vscode-css-languageservice": {
"version": "3.0.13",
"resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-3.0.13.tgz",
"integrity": "sha512-RWkO/c/A7iXhHEy3OuEqkCqavDjpD4NF2Ca8vjai+ZtEYNeHrm1ybTnBYLP4Ft1uXvvaaVtYA9HrDjD6+CUONg==",
"dev": true,
"dependencies": {
"vscode-languageserver-types": "^3.13.0",
"vscode-nls": "^4.0.0"
}
},
"node_modules/vscode-html-languageservice": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.3.1.tgz",
"integrity": "sha512-ysUh4hFeW/WOWz/TO9gm08xigiSsV/FOAZ+DolgJfeLftna54YdmZ4A+lIn46RbdO3/Qv5QHTn1ZGqmrXQhZyA==",
"dev": true,
"dependencies": {
"@vscode/l10n": "^0.0.18",
"vscode-languageserver-textdocument": "^1.0.12",
"vscode-languageserver-types": "^3.17.5",
"vscode-uri": "^3.0.8"
}
},
"node_modules/vscode-json-languageservice": {
"version": "5.4.1",
"resolved": "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-5.4.1.tgz",
"integrity": "sha512-5czFGNyVPxz3ZJYl8R3a3SuIj5gjhmGF4Wv05MRPvD4DEnHK6b8km4VbNMJNHBlTCh7A0aHzUbPVzo+0C18mCA==",
"dev": true,
"dependencies": {
"@vscode/l10n": "^0.0.18",
"jsonc-parser": "^3.3.1",
"vscode-languageserver-textdocument": "^1.0.12",
"vscode-languageserver-types": "^3.17.5",
"vscode-uri": "^3.0.8"
}
},
"node_modules/vscode-jsonrpc": {
"version": "8.2.0",
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz",
"integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==",
"dev": true,
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/vscode-langservers-extracted": {
"version": "4.10.0",
"resolved": "https://registry.npmjs.org/vscode-langservers-extracted/-/vscode-langservers-extracted-4.10.0.tgz",
"integrity": "sha512-EFf9uQI4dAKbzMQFjDvVm1xJq1DXAQvBEuEfPGrK/xzfsL5xWTfIuRr90NgfmqwO+IEt6vLZm9EOj6R66xIifg==",
"dev": true,
"dependencies": {
"@vscode/l10n": "^0.0.18",
"core-js": "^3.20.1",
"jsonc-parser": "^3.2.1",
"regenerator-runtime": "^0.13.9",
"request-light": "^0.7.0",
"semver": "^7.6.1",
"typescript": "^4.0.5",
"vscode-css-languageservice": "^6.2.14",
"vscode-html-languageservice": "^5.2.0",
"vscode-json-languageservice": "^5.3.11",
"vscode-languageserver": "^10.0.0-next.3",
"vscode-languageserver-textdocument": "^1.0.11",
"vscode-languageserver-types": "^3.17.5",
"vscode-markdown-languageservice": "^0.5.0-alpha.6",
"vscode-nls": "^5.2.0",
"vscode-uri": "^3.0.8"
},
"bin": {
"vscode-css-language-server": "bin/vscode-css-language-server",
"vscode-eslint-language-server": "bin/vscode-eslint-language-server",
"vscode-html-language-server": "bin/vscode-html-language-server",
"vscode-json-language-server": "bin/vscode-json-language-server",
"vscode-markdown-language-server": "bin/vscode-markdown-language-server"
}
},
"node_modules/vscode-langservers-extracted/node_modules/vscode-css-languageservice": {
"version": "6.3.1",
"resolved": "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.3.1.tgz",
"integrity": "sha512-1BzTBuJfwMc3A0uX4JBdJgoxp74cjj4q2mDJdp49yD/GuAq4X0k5WtK6fNcMYr+FfJ9nqgR6lpfCSZDkARJ5qQ==",
"dev": true,
"dependencies": {
"@vscode/l10n": "^0.0.18",
"vscode-languageserver-textdocument": "^1.0.12",
"vscode-languageserver-types": "3.17.5",
"vscode-uri": "^3.0.8"
}
},
"node_modules/vscode-langservers-extracted/node_modules/vscode-jsonrpc": {
"version": "9.0.0-next.6",
"resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.6.tgz",
"integrity": "sha512-KCSvUNsFiVciG9iqjJKBZOd66CN3ZKohDlYRmoOi+pd8l15MFLZ8wRG4c+wuzePGba/8WcCG2TM+C/GVlvuaeA==",
"dev": true,
"engines": {
"node": ">=14.0.0"
}
},
"node_modules/vscode-langservers-extracted/node_modules/vscode-languageserver": {
"version": "10.0.0-next.11",
"resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-10.0.0-next.11.tgz",
"integrity": "sha512-cmobSrVDYhlh/t02vz/bV8nNpds8mus5HnILULae2iAvOjoaJPnTAp0jJWoYdUqTpIVzT9JV6JMKqLEvdqpeqg==",
"dev": true,
"dependencies": {
"vscode-languageserver-protocol": "3.17.6-next.11"
},
"bin": {
"installServerIntoExtension": "bin/installServerIntoExtension"
}
},
"node_modules/vscode-langservers-extracted/node_modules/vscode-languageserver-protocol": {
"version": "3.17.6-next.11",
"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.11.tgz",
"integrity": "sha512-GeJxEp1TiLsp79f8WG5n10wLViXfgFKb99hU9K8m7KDWM95/QFEqWkm79f9LVm54tUK74I91a9EeiQLCS/FABQ==",
"dev": true,
"dependencies": {
"vscode-jsonrpc": "9.0.0-next.6",
"vscode-languageserver-types": "3.17.6-next.5"
}
},
"node_modules/vscode-langservers-extracted/node_modules/vscode-languageserver-protocol/node_modules/vscode-languageserver-types": {
"version": "3.17.6-next.5",
"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.5.tgz",
"integrity": "sha512-QFmf3Yl1tCgUQfA77N9Me/LXldJXkIVypQbty2rJ1DNHQkC+iwvm4Z2tXg9czSwlhvv0pD4pbF5mT7WhAglolw==",
"dev": true
},
"node_modules/vscode-langservers-extracted/node_modules/vscode-nls": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.2.0.tgz",
"integrity": "sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==",
"dev": true
},
"node_modules/vscode-languageserver": {
"version": "4.4.2",
"resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-4.4.2.tgz",
"integrity": "sha512-61y8Raevi9EigDgg9NelvT9cUAohiEbUl1LOwQQgOCAaNX62yKny/ddi0uC+FUTm4CzsjhBu+06R+vYgfCYReA==",
"dev": true,
"dependencies": {
"vscode-languageserver-protocol": "^3.10.3",
"vscode-uri": "^1.0.5"
},
"bin": {
"installServerIntoExtension": "bin/installServerIntoExtension"
}
},
"node_modules/vscode-languageserver-protocol": {
"version": "3.17.5",
"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz",
"integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==",
"dev": true,
"dependencies": {
"vscode-jsonrpc": "8.2.0",
"vscode-languageserver-types": "3.17.5"
}
},
"node_modules/vscode-languageserver-protocol-foldingprovider": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-2.0.1.tgz",
"integrity": "sha512-N8bOS8i0xuQMn/y0bijyefDbOsMl6hiH6LDREYWavTLTM5jbj44EiQfStsbmAv/0eaFKkL/jf5hW7nWwBy2HBw==",
"dev": true,
"dependencies": {
"vscode-languageserver-protocol": "^3.7.2",
"vscode-languageserver-types": "^3.7.2"
}
},
"node_modules/vscode-languageserver-textdocument": {
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz",
"integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==",
"dev": true
},
"node_modules/vscode-languageserver-types": {
"version": "3.17.5",
"resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz",
"integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==",
"dev": true
},
"node_modules/vscode-languageserver/node_modules/vscode-uri": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-1.0.8.tgz",
"integrity": "sha512-obtSWTlbJ+a+TFRYGaUumtVwb+InIUVI0Lu0VBUAPmj2cU5JutEXg3xUE0c2J5Tcy7h2DEKVJBFi+Y9ZSFzzPQ==",
"dev": true
},
"node_modules/vscode-markdown-languageservice": {
"version": "0.5.0-alpha.8",
"resolved": "https://registry.npmjs.org/vscode-markdown-languageservice/-/vscode-markdown-languageservice-0.5.0-alpha.8.tgz",
"integrity": "sha512-b2NgVMZvzI/7hRL32Kcu9neAAPFQzkcf/Fqwlxbz9p1/Q7aIorGACOGGo00s72AJtwjkCJ29eVJwUlFMFbPKqA==",
"dev": true,
"dependencies": {
"@vscode/l10n": "^0.0.10",
"node-html-parser": "^6.1.5",
"picomatch": "^2.3.1",
"vscode-languageserver-protocol": "^3.17.1",
"vscode-languageserver-textdocument": "^1.0.11",
"vscode-uri": "^3.0.7"
},
"engines": {
"node": "*"
}
},
"node_modules/vscode-markdown-languageservice/node_modules/@vscode/l10n": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.10.tgz",
"integrity": "sha512-E1OCmDcDWa0Ya7vtSjp/XfHFGqYJfh+YPC1RkATU71fTac+j1JjCcB3qwSzmlKAighx2WxhLlfhS0RwAN++PFQ==",
"dev": true
},
"node_modules/vscode-nls": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.2.tgz",
"integrity": "sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw==",
"dev": true
},
"node_modules/vscode-uri": {
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz",
"integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==",
"dev": true
},
"node_modules/wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",

View file

@ -31,6 +31,8 @@
"defaults"
],
"devDependencies": {
"tabby-agent": "^1.7.0"
"tabby-agent": "^1.7.0",
"vscode-css-languageserver-bin": "^1.4.0",
"vscode-langservers-extracted": "^4.10.0"
}
}

293
yarn.lock
View file

@ -124,7 +124,7 @@
"@github/hotkey@^3.1.1":
version "3.1.1"
resolved "https://registry.yarnpkg.com/@github/hotkey/-/hotkey-3.1.1.tgz#61fdf9993378b402bd9cdd494ee8149fe3172b0c"
resolved "https://registry.npmjs.org/@github/hotkey/-/hotkey-3.1.1.tgz"
integrity sha512-H30I6XDO3gFSgLuEuHoMBRZG9c3uCKNdAcYklL1FaZDPdU1bXfgjnpzGDPcUr0U6eGQ+T3XLY9slatwZYWL1dA==
"@hotwired/stimulus@^3.2.2":
@ -192,7 +192,7 @@
"@rails/request.js@^0.0.11":
version "0.0.11"
resolved "https://registry.yarnpkg.com/@rails/request.js/-/request.js-0.0.11.tgz#4d9be25a49d97911c64ccd0f00b79d57fca4c3b4"
resolved "https://registry.npmjs.org/@rails/request.js/-/request.js-0.0.11.tgz"
integrity sha512-2U3uYS0kbljt+pAstN+LIlZOl7xmOKig5N6FrvtUWO1wq0zR1Hf90fHfD2SYiyV8yH1nyKpoTmbLqWT0xe1zDg==
"@sindresorhus/merge-streams@^2.1.0":
@ -202,11 +202,21 @@
"@stimulus-components/lightbox@^4.0.0":
version "4.0.0"
resolved "https://registry.yarnpkg.com/@stimulus-components/lightbox/-/lightbox-4.0.0.tgz#dbe56146a3d14582a13e568406292d52aa56cbb0"
resolved "https://registry.npmjs.org/@stimulus-components/lightbox/-/lightbox-4.0.0.tgz"
integrity sha512-pj4PfnGANbc3Ef6I/5aPeRS8Tj2rK1b9dn8rlpJZs1K9narqM57ZtUTutHZsnOv95+4LqQVktj+auMgz+LKzjw==
dependencies:
lightgallery "^2.7.2"
"@vscode/l10n@^0.0.10":
version "0.0.10"
resolved "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.10.tgz"
integrity sha512-E1OCmDcDWa0Ya7vtSjp/XfHFGqYJfh+YPC1RkATU71fTac+j1JjCcB3qwSzmlKAighx2WxhLlfhS0RwAN++PFQ==
"@vscode/l10n@^0.0.18":
version "0.0.18"
resolved "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz"
integrity sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==
ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"
@ -249,6 +259,11 @@ binary-extensions@^2.0.0:
resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz"
integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==
boolbase@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz"
integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
bootstrap-icons@^1.11.3:
version "1.11.3"
resolved "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.11.3.tgz"
@ -330,6 +345,27 @@ concat-map@0.0.1:
resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
core-js@^3.20.1:
version "3.39.0"
resolved "https://registry.npmjs.org/core-js/-/core-js-3.39.0.tgz"
integrity sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==
css-select@^5.1.0:
version "5.1.0"
resolved "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz"
integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==
dependencies:
boolbase "^1.0.0"
css-what "^6.1.0"
domhandler "^5.0.2"
domutils "^3.0.1"
nth-check "^2.0.1"
css-what@^6.1.0:
version "6.1.0"
resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz"
integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==
debug@^4:
version "4.3.5"
resolved "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz"
@ -342,6 +378,36 @@ dependency-graph@^0.11.0:
resolved "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz"
integrity sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==
dom-serializer@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz"
integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==
dependencies:
domelementtype "^2.3.0"
domhandler "^5.0.2"
entities "^4.2.0"
domelementtype@^2.3.0:
version "2.3.0"
resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz"
integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
domhandler@^5.0.2, domhandler@^5.0.3:
version "5.0.3"
resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz"
integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==
dependencies:
domelementtype "^2.3.0"
domutils@^3.0.1:
version "3.1.0"
resolved "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz"
integrity sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==
dependencies:
dom-serializer "^2.0.0"
domelementtype "^2.3.0"
domhandler "^5.0.3"
electron-to-chromium@^1.4.820:
version "1.4.827"
resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.827.tgz"
@ -352,6 +418,11 @@ emoji-regex@^8.0.0:
resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
entities@^4.2.0:
version "4.5.0"
resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz"
integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
esbuild@^0.23.0:
version "0.23.0"
resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.23.0.tgz"
@ -470,6 +541,11 @@ has-flag@^3.0.0:
resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz"
integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
he@1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz"
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
ignore-by-default@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz"
@ -514,6 +590,11 @@ is-number@^7.0.0:
resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
jsonc-parser@^3.2.1, jsonc-parser@^3.3.1:
version "3.3.1"
resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz"
integrity sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==
jsonfile@^6.0.1:
version "6.1.0"
resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz"
@ -524,9 +605,9 @@ jsonfile@^6.0.1:
graceful-fs "^4.1.6"
lightgallery@^2.7.2:
version "2.7.2"
resolved "https://registry.yarnpkg.com/lightgallery/-/lightgallery-2.7.2.tgz#9309216986fbce60602b851e1ef80cf40769c3d3"
integrity sha512-Ewdcg9UPDqV0HGZeD7wNE4uYejwH2u0fMo5VAr6GHzlPYlhItJvjhLTR0cL0V1HjhMsH39PAom9iv69ewitLWw==
version "2.8.1"
resolved "https://registry.npmjs.org/lightgallery/-/lightgallery-2.8.1.tgz"
integrity sha512-K9bRsrKQM4UyjNUXOX+mW1IMWKvWbDmK42x5nNzgxsi5CNEYMfLoRsA27F1lXp+yegeqdXusymS9w16Fd8a3Rg==
lilconfig@^3.1.1:
version "3.1.2"
@ -563,6 +644,14 @@ nanoid@^3.3.7:
resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz"
integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
node-html-parser@^6.1.5:
version "6.1.13"
resolved "https://registry.npmjs.org/node-html-parser/-/node-html-parser-6.1.13.tgz"
integrity sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==
dependencies:
css-select "^5.1.0"
he "1.2.0"
node-releases@^2.0.14:
version "2.0.14"
resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz"
@ -594,6 +683,13 @@ normalize-range@^0.1.2:
resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz"
integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
nth-check@^2.0.1:
version "2.1.1"
resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz"
integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
dependencies:
boolbase "^1.0.0"
path-type@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz"
@ -691,6 +787,16 @@ readdirp@~3.6.0:
dependencies:
picomatch "^2.2.1"
regenerator-runtime@^0.13.9:
version "0.13.11"
resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz"
integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
request-light@^0.7.0:
version "0.7.0"
resolved "https://registry.npmjs.org/request-light/-/request-light-0.7.0.tgz"
integrity sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"
@ -717,7 +823,7 @@ sass@^1.77.8:
immutable "^4.0.0"
source-map-js ">=0.6.2 <2.0.0"
semver@^7.5.3:
semver@^7.5.3, semver@^7.6.1:
version "7.6.2"
resolved "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz"
integrity sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==
@ -736,7 +842,7 @@ slash@^5.0.0, slash@^5.1.0:
sortablejs@^1.15.3:
version "1.15.3"
resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.15.3.tgz#033668db5ebfb11167d1249ab88e748f27959e29"
resolved "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.3.tgz"
integrity sha512-zdK3/kwwAK1cJgy1rwl1YtNTbRmc8qW/+vgXf75A7NHag5of4pyI6uK86ktmQETyWRH7IGaE73uZOOBcGxgqZg==
"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.2.0:
@ -799,6 +905,11 @@ trix@^2.1.3:
resolved "https://registry.npmjs.org/trix/-/trix-2.1.3.tgz"
integrity sha512-LqMp67LiKMQytAHKqNL1Jgmfz69ViW+WBOQTPA2BlMIuxic1mw5vHgDtOE0bvvojUdjAxh0EJtLpJn6BC/2JKw==
typescript@^4.0.5:
version "4.9.5"
resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz"
integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==
undefsafe@^2.0.5:
version "2.0.5"
resolved "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz"
@ -822,6 +933,172 @@ update-browserslist-db@^1.1.0:
escalade "^3.1.2"
picocolors "^1.0.1"
vscode-css-languageserver-bin@^1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/vscode-css-languageserver-bin/-/vscode-css-languageserver-bin-1.4.0.tgz"
integrity sha512-KWrF5f4RYYe8RBDfqb1c0Sdf9xPS2Ly/Z/T18H+uUOMw2QyzIrkxv4bMKy5GFfPm4479k6Ln4ji4UHqSmhGf3g==
dependencies:
vscode-css-languageservice "^3.0.9-next.18"
vscode-languageserver "^4.1.3"
vscode-languageserver-protocol-foldingprovider "^2.0.1"
vscode-css-languageservice@^3.0.9-next.18:
version "3.0.13"
resolved "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-3.0.13.tgz"
integrity sha512-RWkO/c/A7iXhHEy3OuEqkCqavDjpD4NF2Ca8vjai+ZtEYNeHrm1ybTnBYLP4Ft1uXvvaaVtYA9HrDjD6+CUONg==
dependencies:
vscode-languageserver-types "^3.13.0"
vscode-nls "^4.0.0"
vscode-css-languageservice@^6.2.14:
version "6.3.1"
resolved "https://registry.npmjs.org/vscode-css-languageservice/-/vscode-css-languageservice-6.3.1.tgz"
integrity sha512-1BzTBuJfwMc3A0uX4JBdJgoxp74cjj4q2mDJdp49yD/GuAq4X0k5WtK6fNcMYr+FfJ9nqgR6lpfCSZDkARJ5qQ==
dependencies:
"@vscode/l10n" "^0.0.18"
vscode-languageserver-textdocument "^1.0.12"
vscode-languageserver-types "3.17.5"
vscode-uri "^3.0.8"
vscode-html-languageservice@^5.2.0:
version "5.3.1"
resolved "https://registry.npmjs.org/vscode-html-languageservice/-/vscode-html-languageservice-5.3.1.tgz"
integrity sha512-ysUh4hFeW/WOWz/TO9gm08xigiSsV/FOAZ+DolgJfeLftna54YdmZ4A+lIn46RbdO3/Qv5QHTn1ZGqmrXQhZyA==
dependencies:
"@vscode/l10n" "^0.0.18"
vscode-languageserver-textdocument "^1.0.12"
vscode-languageserver-types "^3.17.5"
vscode-uri "^3.0.8"
vscode-json-languageservice@^5.3.11:
version "5.4.1"
resolved "https://registry.npmjs.org/vscode-json-languageservice/-/vscode-json-languageservice-5.4.1.tgz"
integrity sha512-5czFGNyVPxz3ZJYl8R3a3SuIj5gjhmGF4Wv05MRPvD4DEnHK6b8km4VbNMJNHBlTCh7A0aHzUbPVzo+0C18mCA==
dependencies:
"@vscode/l10n" "^0.0.18"
jsonc-parser "^3.3.1"
vscode-languageserver-textdocument "^1.0.12"
vscode-languageserver-types "^3.17.5"
vscode-uri "^3.0.8"
vscode-jsonrpc@8.2.0:
version "8.2.0"
resolved "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz"
integrity sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==
vscode-jsonrpc@9.0.0-next.6:
version "9.0.0-next.6"
resolved "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-9.0.0-next.6.tgz"
integrity sha512-KCSvUNsFiVciG9iqjJKBZOd66CN3ZKohDlYRmoOi+pd8l15MFLZ8wRG4c+wuzePGba/8WcCG2TM+C/GVlvuaeA==
vscode-langservers-extracted@^4.10.0:
version "4.10.0"
resolved "https://registry.npmjs.org/vscode-langservers-extracted/-/vscode-langservers-extracted-4.10.0.tgz"
integrity sha512-EFf9uQI4dAKbzMQFjDvVm1xJq1DXAQvBEuEfPGrK/xzfsL5xWTfIuRr90NgfmqwO+IEt6vLZm9EOj6R66xIifg==
dependencies:
"@vscode/l10n" "^0.0.18"
core-js "^3.20.1"
jsonc-parser "^3.2.1"
regenerator-runtime "^0.13.9"
request-light "^0.7.0"
semver "^7.6.1"
typescript "^4.0.5"
vscode-css-languageservice "^6.2.14"
vscode-html-languageservice "^5.2.0"
vscode-json-languageservice "^5.3.11"
vscode-languageserver "^10.0.0-next.3"
vscode-languageserver-textdocument "^1.0.11"
vscode-languageserver-types "^3.17.5"
vscode-markdown-languageservice "^0.5.0-alpha.6"
vscode-nls "^5.2.0"
vscode-uri "^3.0.8"
vscode-languageserver-protocol-foldingprovider@^2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/vscode-languageserver-protocol-foldingprovider/-/vscode-languageserver-protocol-foldingprovider-2.0.1.tgz"
integrity sha512-N8bOS8i0xuQMn/y0bijyefDbOsMl6hiH6LDREYWavTLTM5jbj44EiQfStsbmAv/0eaFKkL/jf5hW7nWwBy2HBw==
dependencies:
vscode-languageserver-protocol "^3.7.2"
vscode-languageserver-types "^3.7.2"
vscode-languageserver-protocol@3.17.6-next.11:
version "3.17.6-next.11"
resolved "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.6-next.11.tgz"
integrity sha512-GeJxEp1TiLsp79f8WG5n10wLViXfgFKb99hU9K8m7KDWM95/QFEqWkm79f9LVm54tUK74I91a9EeiQLCS/FABQ==
dependencies:
vscode-jsonrpc "9.0.0-next.6"
vscode-languageserver-types "3.17.6-next.5"
vscode-languageserver-protocol@^3.10.3, vscode-languageserver-protocol@^3.17.1, vscode-languageserver-protocol@^3.7.2:
version "3.17.5"
resolved "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz"
integrity sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==
dependencies:
vscode-jsonrpc "8.2.0"
vscode-languageserver-types "3.17.5"
vscode-languageserver-textdocument@^1.0.11, vscode-languageserver-textdocument@^1.0.12:
version "1.0.12"
resolved "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz"
integrity sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==
vscode-languageserver-types@3.17.5, vscode-languageserver-types@^3.13.0, vscode-languageserver-types@^3.17.5, vscode-languageserver-types@^3.7.2:
version "3.17.5"
resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz"
integrity sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==
vscode-languageserver-types@3.17.6-next.5:
version "3.17.6-next.5"
resolved "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.6-next.5.tgz"
integrity sha512-QFmf3Yl1tCgUQfA77N9Me/LXldJXkIVypQbty2rJ1DNHQkC+iwvm4Z2tXg9czSwlhvv0pD4pbF5mT7WhAglolw==
vscode-languageserver@^10.0.0-next.3:
version "10.0.0-next.11"
resolved "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-10.0.0-next.11.tgz"
integrity sha512-cmobSrVDYhlh/t02vz/bV8nNpds8mus5HnILULae2iAvOjoaJPnTAp0jJWoYdUqTpIVzT9JV6JMKqLEvdqpeqg==
dependencies:
vscode-languageserver-protocol "3.17.6-next.11"
vscode-languageserver@^4.1.3:
version "4.4.2"
resolved "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-4.4.2.tgz"
integrity sha512-61y8Raevi9EigDgg9NelvT9cUAohiEbUl1LOwQQgOCAaNX62yKny/ddi0uC+FUTm4CzsjhBu+06R+vYgfCYReA==
dependencies:
vscode-languageserver-protocol "^3.10.3"
vscode-uri "^1.0.5"
vscode-markdown-languageservice@^0.5.0-alpha.6:
version "0.5.0-alpha.8"
resolved "https://registry.npmjs.org/vscode-markdown-languageservice/-/vscode-markdown-languageservice-0.5.0-alpha.8.tgz"
integrity sha512-b2NgVMZvzI/7hRL32Kcu9neAAPFQzkcf/Fqwlxbz9p1/Q7aIorGACOGGo00s72AJtwjkCJ29eVJwUlFMFbPKqA==
dependencies:
"@vscode/l10n" "^0.0.10"
node-html-parser "^6.1.5"
picomatch "^2.3.1"
vscode-languageserver-protocol "^3.17.1"
vscode-languageserver-textdocument "^1.0.11"
vscode-uri "^3.0.7"
vscode-nls@^4.0.0:
version "4.1.2"
resolved "https://registry.npmjs.org/vscode-nls/-/vscode-nls-4.1.2.tgz"
integrity sha512-7bOHxPsfyuCqmP+hZXscLhiHwe7CSuFE4hyhbs22xPIhQ4jv99FcR4eBzfYYVLP356HNFpdvz63FFb/xw6T4Iw==
vscode-nls@^5.2.0:
version "5.2.0"
resolved "https://registry.npmjs.org/vscode-nls/-/vscode-nls-5.2.0.tgz"
integrity sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==
vscode-uri@^1.0.5:
version "1.0.8"
resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-1.0.8.tgz"
integrity sha512-obtSWTlbJ+a+TFRYGaUumtVwb+InIUVI0Lu0VBUAPmj2cU5JutEXg3xUE0c2J5Tcy7h2DEKVJBFi+Y9ZSFzzPQ==
vscode-uri@^3.0.7, vscode-uri@^3.0.8:
version "3.0.8"
resolved "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz"
integrity sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==
wrap-ansi@^7.0.0:
version "7.0.0"
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"