fix(audio-clipper): init segment position on firstUpdate + improve UX by adding ghost handle

- clean web components and js modules
- update js dependencies to latest

fixes #351
This commit is contained in:
Yassine Doghri 2023-07-01 13:46:03 +00:00
parent d15a068e0c
commit aa68386667
14 changed files with 289 additions and 229 deletions

View File

@ -10,7 +10,6 @@ const Clipboard = (): void => {
);
if (element) {
button.addEventListener("click", () => {
console.log(element);
element.select();
element.setSelectionRange(0, element.value.length);
document.execCommand("copy");

View File

@ -9,6 +9,7 @@ const MultiSelect = (): void => {
const multiSelect = multiSelects[i];
new Choices(multiSelect, {
allowHTML: false,
maxItemCount: parseInt(multiSelect.dataset.maxItemCount || "-1"),
loadingText: multiSelect.dataset.loadingText,
itemSelectText: multiSelect.dataset.selectText,

View File

@ -10,6 +10,7 @@ const Select = (): void => {
const select = selects[i];
new Choices(select, {
allowHTML: false,
loadingText: select.dataset.loadingText,
itemSelectText: select.dataset.selectText,
maxItemText: select.dataset.maxItemText,

View File

@ -4,7 +4,7 @@ import {
property,
query,
queryAll,
queryAssignedNodes,
queryAssignedElements,
state,
} from "lit/decorators.js";
import WaveSurfer from "wavesurfer.js";
@ -27,14 +27,14 @@ interface EventElement {
@customElement("audio-clipper")
export class AudioClipper extends LitElement {
@queryAssignedNodes("audio", true)
_audio!: NodeListOf<HTMLAudioElement>;
@queryAssignedElements({ slot: "audio", flatten: true })
_audio!: Array<HTMLAudioElement>;
@queryAssignedNodes("start_time", true)
_startTimeInput!: NodeListOf<HTMLInputElement>;
@queryAssignedElements({ slot: "start_time", flatten: true })
_startTimeInput!: Array<HTMLInputElement>;
@queryAssignedNodes("duration", true)
_durationInput!: NodeListOf<HTMLInputElement>;
@queryAssignedElements({ slot: "duration", flatten: true })
_durationInput!: Array<HTMLInputElement>;
@query(".slider")
_sliderNode!: HTMLDivElement;
@ -45,9 +45,12 @@ export class AudioClipper extends LitElement {
@query(".slider__segment-content")
_segmentContentNode!: HTMLDivElement;
@query(".slider__segment-progress-handle")
@query(".slider__segment-progress-handle--main")
_progressNode!: HTMLDivElement;
@query(".slider__segment-progress-handle--ghost")
_progressGhostNode!: HTMLDivElement;
@query(".slider__seeking-placeholder")
_seekingNode!: HTMLDivElement;
@ -60,6 +63,9 @@ export class AudioClipper extends LitElement {
@queryAll(".slider__segment-handle")
_segmentHandleNodes!: NodeListOf<HTMLButtonElement>;
@property({ type: Number, attribute: "audio-duration" })
audioDuration = 0;
@property({ type: Number, attribute: "start-time" })
initStartTime = 0;
@ -81,6 +87,9 @@ export class AudioClipper extends LitElement {
@property({ attribute: "trim-end-label" })
trimEndLabel = "Trim end";
@state()
_canInteract = false;
@state()
_isPlaying = false;
@ -93,9 +102,6 @@ export class AudioClipper extends LitElement {
@state()
_action: Action | null = null;
@state()
_audioDuration = 0;
@state()
_sliderWidth = 0;
@ -116,7 +122,15 @@ export class AudioClipper extends LitElement {
_windowEvents: EventElement[] = [
{
events: ["load", "resize"],
events: ["load"],
onEvent: () => {
this._canInteract = true;
this._sliderWidth = this._sliderNode.clientWidth;
this.setSegmentPosition();
},
},
{
events: ["resize"],
onEvent: () => {
this._sliderWidth = this._sliderNode.clientWidth;
this.setSegmentPosition();
@ -130,9 +144,12 @@ export class AudioClipper extends LitElement {
onEvent: () => {
if (this._action !== null) {
document.body.style.cursor = "";
if (this._action.type === ActionType.Seek && this._seekingTime) {
if (
this._action.type === ActionType.Seek &&
this._seekingTime !== null
) {
this._audio[0].currentTime = this._seekingTime;
this._seekingTime = 0;
this._seekingTime = null;
}
this._action = null;
}
@ -141,14 +158,24 @@ export class AudioClipper extends LitElement {
{
events: ["mousemove"],
onEvent: (event: Event) => {
if (this._action !== null) {
this.updatePosition(event as MouseEvent);
}
this.updatePosition(event as MouseEvent);
},
},
];
_audioEvents: EventElement[] = [
{
events: ["loadedmetadata"],
onEvent: () => {
this.audioDuration = this._audio[0].duration;
},
},
{
events: ["waiting"],
onEvent: () => {
this._isBuffering = true;
},
},
{
events: ["play"],
onEvent: () => {
@ -176,7 +203,7 @@ export class AudioClipper extends LitElement {
);
context.fillStyle = "#04AC64";
const inc = this._bufferingBarNode.width / this._audio[0].duration;
const inc = this._bufferingBarNode.width / this.audioDuration;
for (let i = 0; i < this._audio[0].buffered.length; i++) {
const startX = this._audio[0].buffered.start(i) * inc;
@ -192,13 +219,11 @@ export class AudioClipper extends LitElement {
{
events: ["timeupdate"],
onEvent: () => {
// TODO: change this?
this._currentTime = parseFloat(this._audio[0].currentTime.toFixed(3));
this._currentTime = this._audio[0].currentTime;
if (this._currentTime > this._clip.endTime) {
this.pause();
this._audio[0].currentTime = this._clip.endTime;
} else if (this._currentTime < this._clip.startTime) {
this._isBuffering = true;
this._audio[0].currentTime = this._clip.startTime;
} else {
this._isBuffering = false;
@ -233,6 +258,21 @@ export class AudioClipper extends LitElement {
},
];
_sliderSegmentEvents: EventElement[] = [
{
events: ["hover"],
onEvent: (event: Event) => {
const ghostHandle = (event.target as HTMLDivElement).querySelector(
".segment"
) as HTMLDivElement;
if (ghostHandle) {
ghostHandle.style.opacity = "1";
ghostHandle.style.transform = "translateX(50)";
}
},
},
];
connectedCallback(): void {
super.connectedCallback();
@ -244,7 +284,9 @@ export class AudioClipper extends LitElement {
}
protected firstUpdated(): void {
this._audioDuration = this._audio[0].duration;
this._sliderWidth = this._sliderNode.clientWidth;
this.setSegmentPosition();
this._audio[0].volume = this._volume;
this._startTimeInput[0].hidden = true;
this._durationInput[0].hidden = true;
@ -255,7 +297,6 @@ export class AudioClipper extends LitElement {
interact: false,
barWidth: 2,
barHeight: 1,
// barGap: 4,
responsive: true,
waveColor: "hsl(0 5% 85%)",
cursorColor: "transparent",
@ -338,11 +379,11 @@ export class AudioClipper extends LitElement {
}
private getPositionFromSeconds(seconds: number) {
return (seconds * this._sliderWidth) / this._audioDuration;
return (seconds * this._sliderWidth) / this.audioDuration;
}
private getSecondsFromPosition(position: number) {
return (this._audioDuration * position) / this._sliderWidth;
return (this.audioDuration * position) / this._sliderWidth;
}
protected updated(
@ -405,14 +446,14 @@ export class AudioClipper extends LitElement {
}
case ActionType.StretchRight: {
let endTime;
if (seconds < this._audioDuration) {
if (seconds < this.audioDuration) {
if (seconds < this._clip.startTime + this.minDuration) {
endTime = this._clip.startTime + this.minDuration;
} else {
endTime = seconds;
}
} else {
endTime = this._audioDuration;
endTime = this.audioDuration;
}
this._clip = {
@ -459,6 +500,7 @@ export class AudioClipper extends LitElement {
const seekingTimePercentage =
(seekingTimeSegmentPosition / this._segmentContentNode.clientWidth) *
this._segmentContentNode.clientWidth;
this._progressNode.style.transform = `translateX(${seekingTimeSegmentPosition}px)`;
this._seekingNode.style.transform = `scaleX(${seekingTimePercentage})`;
}
@ -586,6 +628,10 @@ export class AudioClipper extends LitElement {
border-top: 10px solid #3b82f6;
}
.slider__segment-progress-handle--ghost {
opacity: 0.5;
}
.slider__segment .slider__segment-handle {
position: absolute;
width: 1rem;
@ -742,14 +788,19 @@ export class AudioClipper extends LitElement {
<slot name="audio"></slot>
<slot name="start_time"></slot>
<slot name="duration"></slot>
<div class="slider-wrapper" style="height:${this.height}">
<div class="slider-wrapper" style="height:${this.height}px">
<div id="waveform"></div>
<div class="slider" role="slider">
<div class="slider__segment--wrapper">
<div
class="slider__segment-progress-handle"
@mousedown="${(event: MouseEvent) =>
this.setAction(event, { type: ActionType.Seek })}"
class="slider__segment-progress-handle slider__segment-progress-handle--main"
@mousedown="${(event: MouseEvent) => {
this.setAction(event, { type: ActionType.Seek });
}}"
></div>
<div
class="slider__segment-progress-handle slider__segment-progress-handle--ghost"
?hidden=${true}
></div>
<div class="slider__segment">
<button
@ -764,6 +815,16 @@ export class AudioClipper extends LitElement {
<div class="slider__seeking-placeholder"></div>
<div
class="slider__segment-content"
@mousemove="${(event: MouseEvent) => {
const seekingTimeSegmentPosition =
event.clientX -
(event.target as HTMLDivElement).getBoundingClientRect()
.left;
this._progressGhostNode.hidden = false;
this._progressGhostNode.style.transform = `translateX(${seekingTimeSegmentPosition}px)`;
}}"
@mouseleave="${() => (this._progressGhostNode.hidden = true)}"
@mousedown="${(event: MouseEvent) =>
this.setAction(event, { type: ActionType.Seek })}"
@click="${(event: MouseEvent) => this.goTo(event)}"
@ -786,7 +847,7 @@ export class AudioClipper extends LitElement {
class="toolbar__play-button"
@click="${this._isPlaying ? this.pause : this.play}"
>
${this._isBuffering
${this._isBuffering || !this._canInteract
? html`<svg
class="animate-spin"
xmlns="http://www.w3.org/2000/svg"

View File

@ -9,10 +9,10 @@ export class MarkdownPreview extends LitElement {
@property()
for!: string;
@state()
@property({ attribute: false })
_textarea!: HTMLTextAreaElement;
@state()
@property({ attribute: false })
_markdownToolbar!: MarkdownToolbarElement;
@state()
@ -49,6 +49,8 @@ export class MarkdownPreview extends LitElement {
return marked(this.escapeHtml(this._textarea.value), {
renderer: renderer,
headerIds: false,
mangle: false,
});
}

View File

@ -1,5 +1,9 @@
import { css, html, LitElement, TemplateResult } from "lit";
import { customElement, property, queryAssignedNodes } from "lit/decorators.js";
import {
customElement,
property,
queryAssignedElements,
} from "lit/decorators.js";
import { MarkdownPreview } from "./markdown-preview";
@customElement("markdown-write-preview")
@ -7,17 +11,17 @@ export class MarkdownWritePreview extends LitElement {
@property()
for!: string;
@property()
@property({ attribute: false })
_textarea: HTMLTextAreaElement | null = null;
@property()
@property({ attribute: false })
_markdownPreview!: MarkdownPreview;
@queryAssignedNodes("write", true)
_write!: NodeListOf<HTMLButtonElement>;
@queryAssignedElements({ slot: "write", flatten: true })
_write!: Array<HTMLButtonElement>;
@queryAssignedNodes("preview", true)
_preview!: NodeListOf<HTMLButtonElement>;
@queryAssignedElements({ slot: "preview", flatten: true })
_preview!: Array<HTMLButtonElement>;
connectedCallback(): void {
super.connectedCallback();

View File

@ -1,23 +1,24 @@
import "@github/clipboard-copy-element";
import ClipboardCopyElement from "@github/clipboard-copy-element";
import { css, html, LitElement, TemplateResult } from "lit";
import {
customElement,
property,
query,
queryAssignedNodes,
queryAssignedElements,
state,
} from "lit/decorators.js";
@customElement("permalink-edit")
export class PermalinkEdit extends LitElement {
@queryAssignedNodes("domain", true)
@queryAssignedElements({ slot: "domain", flatten: true })
_domain!: NodeListOf<HTMLSpanElement>;
@queryAssignedNodes("slug-input", true)
@queryAssignedElements({ slot: "slug-input", flatten: true })
_slugInput!: NodeListOf<HTMLInputElement>;
@query("clipboard-copy")
_clipboardCopy!: any;
_clipboardCopy!: ClipboardCopyElement;
@property({ attribute: "edit-label" })
editLabel = "Edit";

View File

@ -27,15 +27,15 @@ export class PlayEpisodeButton extends LitElement {
@property()
playingLabel!: string;
@property()
isPlaying!: boolean;
@property()
@property({ attribute: false })
_castopodAudioPlayer!: HTMLDivElement;
@property()
@property({ attribute: false })
_audio!: HTMLAudioElement;
@state()
isPlaying!: boolean;
@state()
_playbackSpeed = 1;

View File

@ -44,11 +44,6 @@ export class PlaySoundbite extends LitElement {
name: "timeupdate",
onEvent: () => {
if (this._audio) {
console.log(
this._audio.currentTime,
this.startTime,
this.startTime + this.duration
);
if (this._audio.currentTime < this.startTime) {
this._isLoading = true;
this._audio.currentTime = this.startTime;

View File

@ -2,8 +2,7 @@ import { css, html, LitElement, TemplateResult } from "lit";
import {
customElement,
property,
queryAssignedNodes,
state,
queryAssignedElements,
} from "lit/decorators.js";
import { styleMap } from "lit/directives/style-map.js";
@ -21,7 +20,7 @@ const formatMap = {
@customElement("video-clip-previewer")
export class VideoClipPreviewer extends LitElement {
@queryAssignedNodes("preview_image", true)
@queryAssignedElements({ slot: "preview_image", flatten: true })
_image!: NodeListOf<HTMLImageElement>;
@property()
@ -36,7 +35,7 @@ export class VideoClipPreviewer extends LitElement {
@property({ type: Number })
duration!: number;
@state()
@property({ attribute: false })
_previewImage!: HTMLImageElement;
protected firstUpdated(): void {

View File

@ -34,7 +34,7 @@
"@codemirror/language": "^6.8.0",
"@codemirror/state": "^6.2.1",
"@codemirror/view": "^6.14.0",
"@floating-ui/dom": "^1.4.2",
"@floating-ui/dom": "^1.4.3",
"@github/clipboard-copy-element": "^1.2.1",
"@github/hotkey": "^2.0.1",
"@github/markdown-toolbar-element": "^2.1.1",
@ -52,8 +52,8 @@
"xml-formatter": "^3.4.1"
},
"devDependencies": {
"@commitlint/cli": "^17.6.5",
"@commitlint/config-conventional": "^17.6.5",
"@commitlint/cli": "^17.6.6",
"@commitlint/config-conventional": "^17.6.6",
"@csstools/css-tokenizer": "^2.1.1",
"@semantic-release/changelog": "^6.0.3",
"@semantic-release/exec": "^6.0.3",
@ -64,19 +64,19 @@
"@types/leaflet": "^1.9.3",
"@types/marked": "^5.0.0",
"@types/wavesurfer.js": "^6.0.6",
"@typescript-eslint/eslint-plugin": "^5.60.0",
"@typescript-eslint/parser": "^5.60.0",
"@typescript-eslint/eslint-plugin": "^5.60.1",
"@typescript-eslint/parser": "^5.60.1",
"all-contributors-cli": "^6.26.0",
"commitizen": "^4.3.0",
"cross-env": "^7.0.3",
"cssnano": "^6.0.1",
"cz-conventional-changelog": "^3.3.0",
"eslint": "^8.43.0",
"eslint": "^8.44.0",
"eslint-config-prettier": "^8.8.0",
"eslint-plugin-prettier": "^4.2.1",
"husky": "^8.0.3",
"is-ci": "^3.0.1",
"lint-staged": "^13.2.2",
"lint-staged": "^13.2.3",
"postcss": "^8.4.24",
"postcss-import": "^15.1.0",
"postcss-nesting": "^11.3.0",
@ -84,12 +84,12 @@
"postcss-reporter": "^7.0.5",
"prettier": "2.8.8",
"prettier-plugin-organize-imports": "^3.2.2",
"semantic-release": "^21.0.5",
"semantic-release": "^21.0.6",
"stylelint": "^15.9.0",
"stylelint-config-standard": "^33.0.0",
"svgo": "^3.0.2",
"tailwindcss": "^3.3.2",
"typescript": "^5.1.3",
"typescript": "^5.1.6",
"vite": "^4.3.9",
"vite-plugin-pwa": "^0.16.4",
"workbox-build": "^7.0.0",

View File

@ -27,8 +27,8 @@ dependencies:
specifier: ^6.14.0
version: 6.14.0
"@floating-ui/dom":
specifier: ^1.4.2
version: 1.4.2
specifier: ^1.4.3
version: 1.4.3
"@github/clipboard-copy-element":
specifier: ^1.2.1
version: 1.2.1
@ -77,26 +77,26 @@ dependencies:
devDependencies:
"@commitlint/cli":
specifier: ^17.6.5
version: 17.6.5
specifier: ^17.6.6
version: 17.6.6
"@commitlint/config-conventional":
specifier: ^17.6.5
version: 17.6.5
specifier: ^17.6.6
version: 17.6.6
"@csstools/css-tokenizer":
specifier: ^2.1.1
version: 2.1.1
"@semantic-release/changelog":
specifier: ^6.0.3
version: 6.0.3(semantic-release@21.0.5)
version: 6.0.3(semantic-release@21.0.6)
"@semantic-release/exec":
specifier: ^6.0.3
version: 6.0.3(semantic-release@21.0.5)
version: 6.0.3(semantic-release@21.0.6)
"@semantic-release/git":
specifier: ^10.0.1
version: 10.0.1(semantic-release@21.0.5)
version: 10.0.1(semantic-release@21.0.6)
"@semantic-release/gitlab":
specifier: ^12.0.3
version: 12.0.3(semantic-release@21.0.5)
version: 12.0.3(semantic-release@21.0.6)
"@tailwindcss/forms":
specifier: ^0.5.3
version: 0.5.3(tailwindcss@3.3.2)
@ -113,11 +113,11 @@ devDependencies:
specifier: ^6.0.6
version: 6.0.6
"@typescript-eslint/eslint-plugin":
specifier: ^5.60.0
version: 5.60.0(@typescript-eslint/parser@5.60.0)(eslint@8.43.0)(typescript@5.1.3)
specifier: ^5.60.1
version: 5.60.1(@typescript-eslint/parser@5.60.1)(eslint@8.44.0)(typescript@5.1.6)
"@typescript-eslint/parser":
specifier: ^5.60.0
version: 5.60.0(eslint@8.43.0)(typescript@5.1.3)
specifier: ^5.60.1
version: 5.60.1(eslint@8.44.0)(typescript@5.1.6)
all-contributors-cli:
specifier: ^6.26.0
version: 6.26.0
@ -134,14 +134,14 @@ devDependencies:
specifier: ^3.3.0
version: 3.3.0
eslint:
specifier: ^8.43.0
version: 8.43.0
specifier: ^8.44.0
version: 8.44.0
eslint-config-prettier:
specifier: ^8.8.0
version: 8.8.0(eslint@8.43.0)
version: 8.8.0(eslint@8.44.0)
eslint-plugin-prettier:
specifier: ^4.2.1
version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.43.0)(prettier@2.8.8)
version: 4.2.1(eslint-config-prettier@8.8.0)(eslint@8.44.0)(prettier@2.8.8)
husky:
specifier: ^8.0.3
version: 8.0.3
@ -149,8 +149,8 @@ devDependencies:
specifier: ^3.0.1
version: 3.0.1
lint-staged:
specifier: ^13.2.2
version: 13.2.2
specifier: ^13.2.3
version: 13.2.3
postcss:
specifier: ^8.4.24
version: 8.4.24
@ -171,10 +171,10 @@ devDependencies:
version: 2.8.8
prettier-plugin-organize-imports:
specifier: ^3.2.2
version: 3.2.2(prettier@2.8.8)(typescript@5.1.3)
version: 3.2.2(prettier@2.8.8)(typescript@5.1.6)
semantic-release:
specifier: ^21.0.5
version: 21.0.5
specifier: ^21.0.6
version: 21.0.6
stylelint:
specifier: ^15.9.0
version: 15.9.0
@ -188,8 +188,8 @@ devDependencies:
specifier: ^3.3.2
version: 3.3.2(ts-node@10.9.1)
typescript:
specifier: ^5.1.3
version: 5.1.3
specifier: ^5.1.6
version: 5.1.6
vite:
specifier: ^4.3.9
version: 4.3.9(@types/node@20.3.1)
@ -210,6 +210,14 @@ devDependencies:
version: 7.0.0
packages:
/@aashutoshrathi/word-wrap@1.2.6:
resolution:
{
integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==,
}
engines: { node: ">=0.10.0" }
dev: true
/@alloc/quick-lru@5.2.0:
resolution:
{
@ -1907,16 +1915,16 @@ packages:
dev: true
optional: true
/@commitlint/cli@17.6.5:
/@commitlint/cli@17.6.6:
resolution:
{
integrity: sha512-3PQrWr/uo6lzF5k7n5QuosCYnzaxP9qGBp3jhWP0Vmsa7XA6wrl9ccPqfQyXpSbQE3zBROVO3TDqgPKe4tfmLQ==,
integrity: sha512-sTKpr2i/Fjs9OmhU+beBxjPavpnLSqZaO6CzwKVq2Tc4UYVTMFgpKOslDhUBVlfAUBfjVO8ParxC/MXkIOevEA==,
}
engines: { node: ">=v14" }
hasBin: true
dependencies:
"@commitlint/format": 17.4.4
"@commitlint/lint": 17.6.5
"@commitlint/lint": 17.6.6
"@commitlint/load": 17.5.0
"@commitlint/read": 17.5.1
"@commitlint/types": 17.4.4
@ -1930,10 +1938,10 @@ packages:
- "@swc/wasm"
dev: true
/@commitlint/config-conventional@17.6.5:
/@commitlint/config-conventional@17.6.6:
resolution:
{
integrity: sha512-Xl9H9KLl86NZm5CYNTNF9dcz1xelE/EbvhWIWcYxG/rn3UWYWdWmmnX2q6ZduNdLFSGbOxzUpIx61j5zxbeXxg==,
integrity: sha512-phqPz3BDhfj49FUYuuZIuDiw+7T6gNAEy7Yew1IBHqSohVUCWOK2FXMSAExzS2/9X+ET93g0Uz83KjiHDOOFag==,
}
engines: { node: ">=v14" }
dependencies:
@ -1985,25 +1993,25 @@ packages:
chalk: 4.1.2
dev: true
/@commitlint/is-ignored@17.6.5:
/@commitlint/is-ignored@17.6.6:
resolution:
{
integrity: sha512-CQvAPt9gX7cuUbMrIaIMKczfWJqqr6m8IlJs0F2zYwyyMTQ87QMHIj5jJ5HhOaOkaj6dvTMVGx8Dd1I4xgUuoQ==,
integrity: sha512-4Fw875faAKO+2nILC04yW/2Vy/wlV3BOYCSQ4CEFzriPEprc1Td2LILmqmft6PDEK5Sr14dT9tEzeaZj0V56Gg==,
}
engines: { node: ">=v14" }
dependencies:
"@commitlint/types": 17.4.4
semver: 7.5.0
semver: 7.5.2
dev: true
/@commitlint/lint@17.6.5:
/@commitlint/lint@17.6.6:
resolution:
{
integrity: sha512-BSJMwkE4LWXrOsiP9KoHG+/heSDfvOL/Nd16+ojTS/DX8HZr8dNl8l3TfVr/d/9maWD8fSegRGtBtsyGuugFrw==,
integrity: sha512-5bN+dnHcRLkTvwCHYMS7Xpbr+9uNi0Kq5NR3v4+oPNx6pYXt8ACuw9luhM/yMgHYwW0ajIR20wkPAFkZLEMGmg==,
}
engines: { node: ">=v14" }
dependencies:
"@commitlint/is-ignored": 17.6.5
"@commitlint/is-ignored": 17.6.6
"@commitlint/parse": 17.6.5
"@commitlint/rules": 17.6.5
"@commitlint/types": 17.4.4
@ -2023,13 +2031,13 @@ packages:
"@types/node": 20.3.1
chalk: 4.1.2
cosmiconfig: 8.2.0
cosmiconfig-typescript-loader: 4.3.0(@types/node@20.3.1)(cosmiconfig@8.2.0)(ts-node@10.9.1)(typescript@5.1.3)
cosmiconfig-typescript-loader: 4.3.0(@types/node@20.3.1)(cosmiconfig@8.2.0)(ts-node@10.9.1)(typescript@5.1.6)
lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2
lodash.uniq: 4.5.0
resolve-from: 5.0.0
ts-node: 10.9.1(@types/node@20.3.1)(typescript@5.1.3)
typescript: 5.1.3
ts-node: 10.9.1(@types/node@20.3.1)(typescript@5.1.6)
typescript: 5.1.6
transitivePeerDependencies:
- "@swc/core"
- "@swc/wasm"
@ -2839,7 +2847,7 @@ packages:
dev: true
optional: true
/@eslint-community/eslint-utils@4.4.0(eslint@8.43.0):
/@eslint-community/eslint-utils@4.4.0(eslint@8.44.0):
resolution:
{
integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==,
@ -2848,7 +2856,7 @@ packages:
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
dependencies:
eslint: 8.43.0
eslint: 8.44.0
eslint-visitor-keys: 3.4.1
dev: true
@ -2860,16 +2868,16 @@ packages:
engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 }
dev: true
/@eslint/eslintrc@2.0.3:
/@eslint/eslintrc@2.1.0:
resolution:
{
integrity: sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==,
integrity: sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==,
}
engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
dependencies:
ajv: 6.12.6
debug: 4.3.4
espree: 9.5.2
espree: 9.6.0
globals: 13.20.0
ignore: 5.2.4
import-fresh: 3.3.0
@ -2880,10 +2888,10 @@ packages:
- supports-color
dev: true
/@eslint/js@8.43.0:
/@eslint/js@8.44.0:
resolution:
{
integrity: sha512-s2UHCoiXfxMvmfzqoN+vrQ84ahUSYde9qNO1MdxmoEhyHWsfmwOpFlwYV+ePJEVc7gFnATGUi376WowX1N7tFg==,
integrity: sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==,
}
engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
dev: true
@ -2895,10 +2903,10 @@ packages:
}
dev: false
/@floating-ui/dom@1.4.2:
/@floating-ui/dom@1.4.3:
resolution:
{
integrity: sha512-VKmvHVatWnewmGGy+7Mdy4cTJX71Pli6v/Wjb5RQBuq5wjUYx+Ef+kRThi8qggZqDgD8CogCpqhRoVp3+yQk+g==,
integrity: sha512-nB/68NyaQlcdY22L+Fgd1HERQ7UGv7XFN+tPxwrEfQL4nKtAP/jIZnZtpUlXbtV+VEGHh6W/63Gy2C5biWI3sA==,
}
dependencies:
"@floating-ui/core": 1.3.1
@ -3434,7 +3442,7 @@ packages:
rollup: 2.79.1
dev: true
/@semantic-release/changelog@6.0.3(semantic-release@21.0.5):
/@semantic-release/changelog@6.0.3(semantic-release@21.0.6):
resolution:
{
integrity: sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==,
@ -3447,10 +3455,10 @@ packages:
aggregate-error: 3.1.0
fs-extra: 11.1.1
lodash: 4.17.21
semantic-release: 21.0.5
semantic-release: 21.0.6
dev: true
/@semantic-release/commit-analyzer@10.0.1(semantic-release@21.0.5):
/@semantic-release/commit-analyzer@10.0.1(semantic-release@21.0.6):
resolution:
{
integrity: sha512-9ejHzTAijYs9z246sY/dKBatmOPcd0GQ7lH4MgLCkv1q4GCiDZRkjHJkaQZXZVaK7mJybS+sH3Ng6G8i3pYMGQ==,
@ -3466,7 +3474,7 @@ packages:
import-from: 4.0.0
lodash-es: 4.17.21
micromatch: 4.0.5
semantic-release: 21.0.5
semantic-release: 21.0.6
transitivePeerDependencies:
- supports-color
dev: true
@ -3487,7 +3495,7 @@ packages:
engines: { node: ">=18" }
dev: true
/@semantic-release/exec@6.0.3(semantic-release@21.0.5):
/@semantic-release/exec@6.0.3(semantic-release@21.0.6):
resolution:
{
integrity: sha512-bxAq8vLOw76aV89vxxICecEa8jfaWwYITw6X74zzlO0mc/Bgieqx9kBRz9z96pHectiTAtsCwsQcUyLYWnp3VQ==,
@ -3502,12 +3510,12 @@ packages:
execa: 5.1.1
lodash: 4.17.21
parse-json: 5.2.0
semantic-release: 21.0.5
semantic-release: 21.0.6
transitivePeerDependencies:
- supports-color
dev: true
/@semantic-release/git@10.0.1(semantic-release@21.0.5):
/@semantic-release/git@10.0.1(semantic-release@21.0.6):
resolution:
{
integrity: sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==,
@ -3524,12 +3532,12 @@ packages:
lodash: 4.17.21
micromatch: 4.0.5
p-reduce: 2.1.0
semantic-release: 21.0.5
semantic-release: 21.0.6
transitivePeerDependencies:
- supports-color
dev: true
/@semantic-release/github@9.0.3(semantic-release@21.0.5):
/@semantic-release/github@9.0.3(semantic-release@21.0.6):
resolution:
{
integrity: sha512-X6gq4USKVlCxPwIIyXb99jU7gwVWlnsKOevs+OyABRdoqc+OIRITbFmrrYU3eE1vGMGk+Qu/GAoLUQQQwC3YOA==,
@ -3553,14 +3561,14 @@ packages:
lodash-es: 4.17.21
mime: 3.0.0
p-filter: 3.0.0
semantic-release: 21.0.5
semantic-release: 21.0.6
url-join: 5.0.0
transitivePeerDependencies:
- encoding
- supports-color
dev: true
/@semantic-release/gitlab@12.0.3(semantic-release@21.0.5):
/@semantic-release/gitlab@12.0.3(semantic-release@21.0.6):
resolution:
{
integrity: sha512-CldGFrEoXduOWmp+jjbn/mzU5johxT5cYDxWqQnRQXVyX4JdK33bF9qSEhwn0l4Dm2NmhoSdFA0T7EmwiJtm9w==,
@ -3581,13 +3589,13 @@ packages:
hpagent: 1.2.0
lodash-es: 4.17.21
parse-url: 8.1.0
semantic-release: 21.0.5
semantic-release: 21.0.6
url-join: 4.0.1
transitivePeerDependencies:
- supports-color
dev: true
/@semantic-release/npm@10.0.4(semantic-release@21.0.5):
/@semantic-release/npm@10.0.4(semantic-release@21.0.6):
resolution:
{
integrity: sha512-6R3timIQ7VoL2QWRkc9DG8v74RQtRp7UOe/2KbNaqwJ815qOibAv65bH3RtTEhs4axEaHoZf7HDgFs5opaZ9Jw==,
@ -3607,12 +3615,12 @@ packages:
rc: 1.2.8
read-pkg: 8.0.0
registry-auth-token: 5.0.2
semantic-release: 21.0.5
semantic-release: 21.0.6
semver: 7.5.2
tempy: 3.0.0
dev: true
/@semantic-release/release-notes-generator@11.0.3(semantic-release@21.0.5):
/@semantic-release/release-notes-generator@11.0.3(semantic-release@21.0.6):
resolution:
{
integrity: sha512-NU77dWKQf+QcZrv/Hcp3DPeSxglPu8hYKCipGxAPpeaneLkg6S0zfTVug4tg4mfDhZHC6RtoI7ljQDK8VoJ2Dw==,
@ -3631,7 +3639,7 @@ packages:
into-stream: 7.0.0
lodash-es: 4.17.21
read-pkg-up: 9.1.0
semantic-release: 21.0.5
semantic-release: 21.0.6
transitivePeerDependencies:
- supports-color
dev: true
@ -3860,10 +3868,10 @@ packages:
"@types/debounce": 1.2.1
dev: true
/@typescript-eslint/eslint-plugin@5.60.0(@typescript-eslint/parser@5.60.0)(eslint@8.43.0)(typescript@5.1.3):
/@typescript-eslint/eslint-plugin@5.60.1(@typescript-eslint/parser@5.60.1)(eslint@8.44.0)(typescript@5.1.6):
resolution:
{
integrity: sha512-78B+anHLF1TI8Jn/cD0Q00TBYdMgjdOn980JfAVa9yw5sop8nyTfVOQAv6LWywkOGLclDBtv5z3oxN4w7jxyNg==,
integrity: sha512-KSWsVvsJsLJv3c4e73y/Bzt7OpqMCADUO846bHcuWYSYM19bldbAeDv7dYyV0jwkbMfJ2XdlzwjhXtuD7OY6bw==,
}
engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
peerDependencies:
@ -3875,26 +3883,26 @@ packages:
optional: true
dependencies:
"@eslint-community/regexpp": 4.5.1
"@typescript-eslint/parser": 5.60.0(eslint@8.43.0)(typescript@5.1.3)
"@typescript-eslint/scope-manager": 5.60.0
"@typescript-eslint/type-utils": 5.60.0(eslint@8.43.0)(typescript@5.1.3)
"@typescript-eslint/utils": 5.60.0(eslint@8.43.0)(typescript@5.1.3)
"@typescript-eslint/parser": 5.60.1(eslint@8.44.0)(typescript@5.1.6)
"@typescript-eslint/scope-manager": 5.60.1
"@typescript-eslint/type-utils": 5.60.1(eslint@8.44.0)(typescript@5.1.6)
"@typescript-eslint/utils": 5.60.1(eslint@8.44.0)(typescript@5.1.6)
debug: 4.3.4
eslint: 8.43.0
eslint: 8.44.0
grapheme-splitter: 1.0.4
ignore: 5.2.4
natural-compare-lite: 1.4.0
semver: 7.5.2
tsutils: 3.21.0(typescript@5.1.3)
typescript: 5.1.3
tsutils: 3.21.0(typescript@5.1.6)
typescript: 5.1.6
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/parser@5.60.0(eslint@8.43.0)(typescript@5.1.3):
/@typescript-eslint/parser@5.60.1(eslint@8.44.0)(typescript@5.1.6):
resolution:
{
integrity: sha512-jBONcBsDJ9UoTWrARkRRCgDz6wUggmH5RpQVlt7BimSwaTkTjwypGzKORXbR4/2Hqjk9hgwlon2rVQAjWNpkyQ==,
integrity: sha512-pHWlc3alg2oSMGwsU/Is8hbm3XFbcrb6P5wIxcQW9NsYBfnrubl/GhVVD/Jm/t8HXhA2WncoIRfBtnCgRGV96Q==,
}
engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
peerDependencies:
@ -3904,31 +3912,31 @@ packages:
typescript:
optional: true
dependencies:
"@typescript-eslint/scope-manager": 5.60.0
"@typescript-eslint/types": 5.60.0
"@typescript-eslint/typescript-estree": 5.60.0(typescript@5.1.3)
"@typescript-eslint/scope-manager": 5.60.1
"@typescript-eslint/types": 5.60.1
"@typescript-eslint/typescript-estree": 5.60.1(typescript@5.1.6)
debug: 4.3.4
eslint: 8.43.0
typescript: 5.1.3
eslint: 8.44.0
typescript: 5.1.6
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/scope-manager@5.60.0:
/@typescript-eslint/scope-manager@5.60.1:
resolution:
{
integrity: sha512-hakuzcxPwXi2ihf9WQu1BbRj1e/Pd8ZZwVTG9kfbxAMZstKz8/9OoexIwnmLzShtsdap5U/CoQGRCWlSuPbYxQ==,
integrity: sha512-Dn/LnN7fEoRD+KspEOV0xDMynEmR3iSHdgNsarlXNLGGtcUok8L4N71dxUgt3YvlO8si7E+BJ5Fe3wb5yUw7DQ==,
}
engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
dependencies:
"@typescript-eslint/types": 5.60.0
"@typescript-eslint/visitor-keys": 5.60.0
"@typescript-eslint/types": 5.60.1
"@typescript-eslint/visitor-keys": 5.60.1
dev: true
/@typescript-eslint/type-utils@5.60.0(eslint@8.43.0)(typescript@5.1.3):
/@typescript-eslint/type-utils@5.60.1(eslint@8.44.0)(typescript@5.1.6):
resolution:
{
integrity: sha512-X7NsRQddORMYRFH7FWo6sA9Y/zbJ8s1x1RIAtnlj6YprbToTiQnM6vxcMu7iYhdunmoC0rUWlca13D5DVHkK2g==,
integrity: sha512-vN6UztYqIu05nu7JqwQGzQKUJctzs3/Hg7E2Yx8rz9J+4LgtIDFWjjl1gm3pycH0P3mHAcEUBd23LVgfrsTR8A==,
}
engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
peerDependencies:
@ -3938,28 +3946,28 @@ packages:
typescript:
optional: true
dependencies:
"@typescript-eslint/typescript-estree": 5.60.0(typescript@5.1.3)
"@typescript-eslint/utils": 5.60.0(eslint@8.43.0)(typescript@5.1.3)
"@typescript-eslint/typescript-estree": 5.60.1(typescript@5.1.6)
"@typescript-eslint/utils": 5.60.1(eslint@8.44.0)(typescript@5.1.6)
debug: 4.3.4
eslint: 8.43.0
tsutils: 3.21.0(typescript@5.1.3)
typescript: 5.1.3
eslint: 8.44.0
tsutils: 3.21.0(typescript@5.1.6)
typescript: 5.1.6
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/types@5.60.0:
/@typescript-eslint/types@5.60.1:
resolution:
{
integrity: sha512-ascOuoCpNZBccFVNJRSC6rPq4EmJ2NkuoKnd6LDNyAQmdDnziAtxbCGWCbefG1CNzmDvd05zO36AmB7H8RzKPA==,
integrity: sha512-zDcDx5fccU8BA0IDZc71bAtYIcG9PowaOwaD8rjYbqwK7dpe/UMQl3inJ4UtUK42nOCT41jTSCwg76E62JpMcg==,
}
engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
dev: true
/@typescript-eslint/typescript-estree@5.60.0(typescript@5.1.3):
/@typescript-eslint/typescript-estree@5.60.1(typescript@5.1.6):
resolution:
{
integrity: sha512-R43thAuwarC99SnvrBmh26tc7F6sPa2B3evkXp/8q954kYL6Ro56AwASYWtEEi+4j09GbiNAHqYwNNZuNlARGQ==,
integrity: sha512-hkX70J9+2M2ZT6fhti5Q2FoU9zb+GeZK2SLP1WZlvUDqdMbEKhexZODD1WodNRyO8eS+4nScvT0dts8IdaBzfw==,
}
engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
peerDependencies:
@ -3968,34 +3976,34 @@ packages:
typescript:
optional: true
dependencies:
"@typescript-eslint/types": 5.60.0
"@typescript-eslint/visitor-keys": 5.60.0
"@typescript-eslint/types": 5.60.1
"@typescript-eslint/visitor-keys": 5.60.1
debug: 4.3.4
globby: 11.1.0
is-glob: 4.0.3
semver: 7.5.2
tsutils: 3.21.0(typescript@5.1.3)
typescript: 5.1.3
tsutils: 3.21.0(typescript@5.1.6)
typescript: 5.1.6
transitivePeerDependencies:
- supports-color
dev: true
/@typescript-eslint/utils@5.60.0(eslint@8.43.0)(typescript@5.1.3):
/@typescript-eslint/utils@5.60.1(eslint@8.44.0)(typescript@5.1.6):
resolution:
{
integrity: sha512-ba51uMqDtfLQ5+xHtwlO84vkdjrqNzOnqrnwbMHMRY8Tqeme8C2Q8Fc7LajfGR+e3/4LoYiWXUM6BpIIbHJ4hQ==,
integrity: sha512-tiJ7FFdFQOWssFa3gqb94Ilexyw0JVxj6vBzaSpfN/8IhoKkDuSAenUKvsSHw2A/TMpJb26izIszTXaqygkvpQ==,
}
engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
peerDependencies:
eslint: ^6.0.0 || ^7.0.0 || ^8.0.0
dependencies:
"@eslint-community/eslint-utils": 4.4.0(eslint@8.43.0)
"@eslint-community/eslint-utils": 4.4.0(eslint@8.44.0)
"@types/json-schema": 7.0.12
"@types/semver": 7.5.0
"@typescript-eslint/scope-manager": 5.60.0
"@typescript-eslint/types": 5.60.0
"@typescript-eslint/typescript-estree": 5.60.0(typescript@5.1.3)
eslint: 8.43.0
"@typescript-eslint/scope-manager": 5.60.1
"@typescript-eslint/types": 5.60.1
"@typescript-eslint/typescript-estree": 5.60.1(typescript@5.1.6)
eslint: 8.44.0
eslint-scope: 5.1.1
semver: 7.5.2
transitivePeerDependencies:
@ -4003,14 +4011,14 @@ packages:
- typescript
dev: true
/@typescript-eslint/visitor-keys@5.60.0:
/@typescript-eslint/visitor-keys@5.60.1:
resolution:
{
integrity: sha512-wm9Uz71SbCyhUKgcaPRauBdTegUyY/ZWl8gLwD/i/ybJqscrrdVSFImpvUz16BLPChIeKBK5Fa9s6KDQjsjyWw==,
integrity: sha512-xEYIxKcultP6E/RMKqube11pGjXH1DCo60mQoWhVYyKfLkwbIVVjYxmOenNMxILx0TjCujPTjjnTIVzm09TXIw==,
}
engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
dependencies:
"@typescript-eslint/types": 5.60.0
"@typescript-eslint/types": 5.60.1
eslint-visitor-keys: 3.4.1
dev: true
@ -5243,7 +5251,7 @@ packages:
integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==,
}
/cosmiconfig-typescript-loader@4.3.0(@types/node@20.3.1)(cosmiconfig@8.2.0)(ts-node@10.9.1)(typescript@5.1.3):
/cosmiconfig-typescript-loader@4.3.0(@types/node@20.3.1)(cosmiconfig@8.2.0)(ts-node@10.9.1)(typescript@5.1.6):
resolution:
{
integrity: sha512-NTxV1MFfZDLPiBMjxbHRwSh5LaLcPMwNdCutmnHJCKoVnlvldPWlllonKwrsRJ5pYZBIBGRWWU2tfvzxgeSW5Q==,
@ -5257,8 +5265,8 @@ packages:
dependencies:
"@types/node": 20.3.1
cosmiconfig: 8.2.0
ts-node: 10.9.1(@types/node@20.3.1)(typescript@5.1.3)
typescript: 5.1.3
ts-node: 10.9.1(@types/node@20.3.1)(typescript@5.1.6)
typescript: 5.1.6
dev: true
/cosmiconfig@8.2.0:
@ -6246,7 +6254,7 @@ packages:
source-map: 0.1.43
dev: false
/eslint-config-prettier@8.8.0(eslint@8.43.0):
/eslint-config-prettier@8.8.0(eslint@8.44.0):
resolution:
{
integrity: sha512-wLbQiFre3tdGgpDv67NQKnJuTlcUVYHas3k+DZCc2U2BadthoEY4B7hLPvAxaqdyOGCzuLfii2fqGph10va7oA==,
@ -6255,10 +6263,10 @@ packages:
peerDependencies:
eslint: ">=7.0.0"
dependencies:
eslint: 8.43.0
eslint: 8.44.0
dev: true
/eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.43.0)(prettier@2.8.8):
/eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.8.0)(eslint@8.44.0)(prettier@2.8.8):
resolution:
{
integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==,
@ -6272,8 +6280,8 @@ packages:
eslint-config-prettier:
optional: true
dependencies:
eslint: 8.43.0
eslint-config-prettier: 8.8.0(eslint@8.43.0)
eslint: 8.44.0
eslint-config-prettier: 8.8.0(eslint@8.44.0)
prettier: 2.8.8
prettier-linter-helpers: 1.0.0
dev: true
@ -6308,18 +6316,18 @@ packages:
engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
dev: true
/eslint@8.43.0:
/eslint@8.44.0:
resolution:
{
integrity: sha512-aaCpf2JqqKesMFGgmRPessmVKjcGXqdlAYLLC3THM8t5nBRZRQ+st5WM/hoJXkdioEXLLbXgclUpM0TXo5HX5Q==,
integrity: sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==,
}
engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
hasBin: true
dependencies:
"@eslint-community/eslint-utils": 4.4.0(eslint@8.43.0)
"@eslint-community/eslint-utils": 4.4.0(eslint@8.44.0)
"@eslint-community/regexpp": 4.5.1
"@eslint/eslintrc": 2.0.3
"@eslint/js": 8.43.0
"@eslint/eslintrc": 2.1.0
"@eslint/js": 8.44.0
"@humanwhocodes/config-array": 0.11.10
"@humanwhocodes/module-importer": 1.0.1
"@nodelib/fs.walk": 1.2.8
@ -6331,7 +6339,7 @@ packages:
escape-string-regexp: 4.0.0
eslint-scope: 7.2.0
eslint-visitor-keys: 3.4.1
espree: 9.5.2
espree: 9.6.0
esquery: 1.5.0
esutils: 2.0.3
fast-deep-equal: 3.1.3
@ -6351,7 +6359,7 @@ packages:
lodash.merge: 4.6.2
minimatch: 3.1.2
natural-compare: 1.4.0
optionator: 0.9.1
optionator: 0.9.3
strip-ansi: 6.0.1
strip-json-comments: 3.1.1
text-table: 0.2.0
@ -6359,10 +6367,10 @@ packages:
- supports-color
dev: true
/espree@9.5.2:
/espree@9.6.0:
resolution:
{
integrity: sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==,
integrity: sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==,
}
engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 }
dependencies:
@ -8272,10 +8280,10 @@ packages:
engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 }
dev: true
/lint-staged@13.2.2:
/lint-staged@13.2.3:
resolution:
{
integrity: sha512-71gSwXKy649VrSU09s10uAT0rWCcY3aewhMaHyl2N84oBk4Xs9HgxvUp3AYu+bNsK4NrOYYxvSgg7FyGJ+jGcA==,
integrity: sha512-zVVEXLuQIhr1Y7R7YAWx4TZLdvuzk7DnmrsTNL0fax6Z3jrpFcas+vKbzxhhvp6TA55m1SQuWkpzI1qbfDZbAg==,
}
engines: { node: ^14.13.1 || >=16.0.0 }
hasBin: true
@ -9300,19 +9308,19 @@ packages:
word-wrap: 1.2.3
dev: false
/optionator@0.9.1:
/optionator@0.9.3:
resolution:
{
integrity: sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==,
integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==,
}
engines: { node: ">= 0.8.0" }
dependencies:
"@aashutoshrathi/word-wrap": 1.2.6
deep-is: 0.1.4
fast-levenshtein: 2.0.6
levn: 0.4.1
prelude-ls: 1.2.1
type-check: 0.4.0
word-wrap: 1.2.3
dev: true
/ora@5.4.1:
@ -10128,7 +10136,7 @@ packages:
dependencies:
lilconfig: 2.1.0
postcss: 8.4.24
ts-node: 10.9.1(@types/node@20.3.1)(typescript@5.1.3)
ts-node: 10.9.1(@types/node@20.3.1)(typescript@5.1.6)
yaml: 2.3.1
dev: true
@ -10715,7 +10723,7 @@ packages:
fast-diff: 1.3.0
dev: true
/prettier-plugin-organize-imports@3.2.2(prettier@2.8.8)(typescript@5.1.3):
/prettier-plugin-organize-imports@3.2.2(prettier@2.8.8)(typescript@5.1.6):
resolution:
{
integrity: sha512-e97lE6odGSiHonHJMTYC0q0iLXQyw0u5z/PJpvP/3vRy6/Zi9kLBwFAbEGjDzIowpjQv8b+J04PDamoUSQbzGA==,
@ -10732,7 +10740,7 @@ packages:
optional: true
dependencies:
prettier: 2.8.8
typescript: 5.1.3
typescript: 5.1.6
dev: true
/prettier@2.8.8:
@ -11349,19 +11357,19 @@ packages:
get-assigned-identifiers: 1.2.0
dev: false
/semantic-release@21.0.5:
/semantic-release@21.0.6:
resolution:
{
integrity: sha512-mCc7Hx9Ro/1Clk9tLLgwQIQuiEzx+1OX12EazvNysnx1VG4eaNJE9b9IyWtTxyFxaFYi7nM5VB5ZDVzheHTDPA==,
integrity: sha512-NDyosObAwUNzPpdf+mpL49Xy+5iYHjdWM34LBNdbdYv9vBLbw+eCCDihxcqPh+f9m4ZzlBrYCkHUaZv2vPGW9A==,
}
engines: { node: ">=18" }
hasBin: true
dependencies:
"@semantic-release/commit-analyzer": 10.0.1(semantic-release@21.0.5)
"@semantic-release/commit-analyzer": 10.0.1(semantic-release@21.0.6)
"@semantic-release/error": 4.0.0
"@semantic-release/github": 9.0.3(semantic-release@21.0.5)
"@semantic-release/npm": 10.0.4(semantic-release@21.0.5)
"@semantic-release/release-notes-generator": 11.0.3(semantic-release@21.0.5)
"@semantic-release/github": 9.0.3(semantic-release@21.0.6)
"@semantic-release/npm": 10.0.4(semantic-release@21.0.6)
"@semantic-release/release-notes-generator": 11.0.3(semantic-release@21.0.6)
aggregate-error: 4.0.1
cosmiconfig: 8.2.0
debug: 4.3.4
@ -11424,17 +11432,6 @@ packages:
hasBin: true
dev: true
/semver@7.5.0:
resolution:
{
integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==,
}
engines: { node: ">=10" }
hasBin: true
dependencies:
lru-cache: 6.0.0
dev: true
/semver@7.5.2:
resolution:
{
@ -12393,7 +12390,7 @@ packages:
}
dev: true
/ts-node@10.9.1(@types/node@20.3.1)(typescript@5.1.3):
/ts-node@10.9.1(@types/node@20.3.1)(typescript@5.1.6):
resolution:
{
integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==,
@ -12422,7 +12419,7 @@ packages:
create-require: 1.1.1
diff: 4.0.2
make-error: 1.3.6
typescript: 5.1.3
typescript: 5.1.6
v8-compile-cache-lib: 3.0.1
yn: 3.1.1
dev: true
@ -12440,7 +12437,7 @@ packages:
integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==,
}
/tsutils@3.21.0(typescript@5.1.3):
/tsutils@3.21.0(typescript@5.1.6):
resolution:
{
integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==,
@ -12450,7 +12447,7 @@ packages:
typescript: ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
dependencies:
tslib: 1.14.1
typescript: 5.1.3
typescript: 5.1.6
dev: true
/type-check@0.3.2:
@ -12577,10 +12574,10 @@ packages:
}
dev: false
/typescript@5.1.3:
/typescript@5.1.6:
resolution:
{
integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==,
integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==,
}
engines: { node: ">=14.17" }
hasBin: true

View File

@ -20,8 +20,8 @@
required="true"
class="max-w-sm"
/>
<audio-clipper start-time="<?= old('start_time', 0) ?>" duration="<?= old('duration', 30) ?>" min-duration="10" volume=".5" height="50" trim-start-label="<?= lang('VideoClip.form.trim_start') ?>" trim-end-label="<?= lang('VideoClip.form.trim_end') ?>" class="mt-8">
<audio slot="audio" src="<?= $episode->audio_url ?>" preload="auto">
<audio-clipper start-time="<?= old('start_time', 0) ?>" audio-duration="<?= $episode->audio->duration ?>" duration="<?= old('duration', $episode->audio->duration >= 60 ? 60 : $episode->audio->duration) ?>" min-duration="10" volume=".5" height="50" trim-start-label="<?= lang('VideoClip.form.trim_start') ?>" trim-end-label="<?= lang('VideoClip.form.trim_end') ?>" class="mt-8">
<audio slot="audio" src="<?= $episode->audio->file_url ?>" preload="auto">
Your browser does not support the <code>audio</code> element.
</audio>
<input slot="start_time" type="number" name="start_time" placeholder="<?= lang('VideoClip.form.start_time') ?>" step="0.001" />

View File

@ -17,7 +17,7 @@
<video-clip-previewer duration="<?= old('duration', 30) ?>">
<img slot="preview_image" src="<?= $episode->cover->thumbnail_url ?>" alt="<?= $episode->cover->description ?>" loading="lazy" />
</video-clip-previewer>
<audio-clipper start-time="<?= old('start_time', 0) ?>" duration="<?= old('duration', 30) ?>" min-duration="10" volume=".5" height="50" trim-start-label="<?= lang('VideoClip.form.trim_start') ?>" trim-end-label="<?= lang('VideoClip.form.trim_end') ?>">
<audio-clipper start-time="<?= old('start_time', 0) ?>" audio-duration="<?= $episode->audio->duration ?>" duration="<?= old('duration', $episode->audio->duration >= 60 ? 60 : $episode->audio->duration) ?>" volume=".5" height="50" trim-start-label="<?= lang('VideoClip.form.trim_start') ?>" trim-end-label="<?= lang('VideoClip.form.trim_end') ?>">
<audio slot="audio" src="<?= $episode->audio->file_url ?>" preload="auto">
Your browser does not support the <code>audio</code> element.
</audio>