From 0876e5f001e2a2bcaa853be9caf2afb1a68cbfc4 Mon Sep 17 00:00:00 2001 From: KoloMl Date: Wed, 26 Mar 2025 19:01:18 +0400 Subject: [PATCH 1/7] Changed naming for event name constants to differentiate them with variables --- src/lib/components/FullscreenViewer.ts | 6 +++--- src/lib/components/MaintenancePopup.ts | 18 +++++++++--------- src/lib/components/MaintenanceStatusIcon.ts | 4 ++-- src/lib/components/MediaBoxTools.ts | 4 ++-- src/lib/components/MediaBoxWrapper.ts | 4 ++-- src/lib/components/TagDropdownWrapper.ts | 8 ++++---- src/lib/components/TagsForm.ts | 8 ++++---- src/lib/components/TagsListBlock.ts | 8 ++++---- src/lib/components/events/booru-events.ts | 4 ++-- .../events/fullscreen-viewer-events.ts | 4 ++-- .../events/maintenance-popup-events.ts | 12 ++++++------ .../components/events/tag-dropdown-events.ts | 4 ++-- src/lib/components/events/tags-form-events.ts | 4 ++-- src/lib/extension/CustomCategoriesResolver.ts | 8 ++++---- 14 files changed, 48 insertions(+), 48 deletions(-) diff --git a/src/lib/components/FullscreenViewer.ts b/src/lib/components/FullscreenViewer.ts index 48f3c1c..7e78b92 100644 --- a/src/lib/components/FullscreenViewer.ts +++ b/src/lib/components/FullscreenViewer.ts @@ -1,7 +1,7 @@ import { BaseComponent } from "$lib/components/base/BaseComponent"; import MiscSettings, { type FullscreenViewerSize } from "$lib/extension/settings/MiscSettings"; import { emit, on } from "$lib/components/events/comms"; -import { eventSizeLoaded } from "$lib/components/events/fullscreen-viewer-events"; +import { EVENT_SIZE_LOADED } from "$lib/components/events/fullscreen-viewer-events"; export class FullscreenViewer extends BaseComponent { #videoElement: HTMLVideoElement = document.createElement('video'); @@ -173,7 +173,7 @@ export class FullscreenViewer extends BaseComponent { this.#sizeSelectorElement.value = size; this.#isSizeFetched = true; - emit(this.container, eventSizeLoaded, size); + emit(this.container, EVENT_SIZE_LOADED, size); } #watchForSizeSelectionChanges() { @@ -224,7 +224,7 @@ export class FullscreenViewer extends BaseComponent { await new Promise( resolve => on( this.container, - eventSizeLoaded, + EVENT_SIZE_LOADED, resolve ), ); diff --git a/src/lib/components/MaintenancePopup.ts b/src/lib/components/MaintenancePopup.ts index 8792022..8cac1c6 100644 --- a/src/lib/components/MaintenancePopup.ts +++ b/src/lib/components/MaintenancePopup.ts @@ -6,9 +6,9 @@ import ScrapedAPI from "$lib/booru/scraped/ScrapedAPI"; import { tagsBlacklist } from "$config/tags"; import { emitterAt } from "$lib/components/events/comms"; import { - eventActiveProfileChanged, - eventMaintenanceStateChanged, - eventTagsUpdated + EVENT_ACTIVE_PROFILE_CHANGED, + EVENT_MAINTENANCE_STATE_CHANGED, + EVENT_TAGS_UPDATED } from "$lib/components/events/maintenance-popup-events"; import type { MediaBoxTools } from "$lib/components/MediaBoxTools"; @@ -83,7 +83,7 @@ export class MaintenancePopup extends BaseComponent { this.container.classList.toggle('is-active', activeProfile !== null); this.#refreshTagsList(); - this.#emitter.emit(eventActiveProfileChanged, activeProfile); + this.#emitter.emit(EVENT_ACTIVE_PROFILE_CHANGED, activeProfile); } #refreshTagsList() { @@ -177,7 +177,7 @@ export class MaintenancePopup extends BaseComponent { } this.#isPlanningToSubmit = true; - this.#emitter.emit(eventMaintenanceStateChanged, 'waiting'); + this.#emitter.emit(EVENT_MAINTENANCE_STATE_CHANGED, 'waiting'); } } @@ -204,7 +204,7 @@ export class MaintenancePopup extends BaseComponent { this.#isPlanningToSubmit = false; this.#isSubmitting = true; - this.#emitter.emit(eventMaintenanceStateChanged, 'processing'); + this.#emitter.emit(EVENT_MAINTENANCE_STATE_CHANGED, 'processing'); let maybeTagsAndAliasesAfterUpdate; @@ -246,17 +246,17 @@ export class MaintenancePopup extends BaseComponent { MaintenancePopup.#notifyAboutPendingSubmission(false); - this.#emitter.emit(eventMaintenanceStateChanged, 'failed'); + this.#emitter.emit(EVENT_MAINTENANCE_STATE_CHANGED, 'failed'); this.#isSubmitting = false; return; } if (maybeTagsAndAliasesAfterUpdate) { - this.#emitter.emit(eventTagsUpdated, maybeTagsAndAliasesAfterUpdate); + this.#emitter.emit(EVENT_TAGS_UPDATED, maybeTagsAndAliasesAfterUpdate); } - this.#emitter.emit(eventMaintenanceStateChanged, 'complete'); + this.#emitter.emit(EVENT_MAINTENANCE_STATE_CHANGED, 'complete'); this.#tagsToAdd.clear(); this.#tagsToRemove.clear(); diff --git a/src/lib/components/MaintenanceStatusIcon.ts b/src/lib/components/MaintenanceStatusIcon.ts index 06c5bb6..d28e9f0 100644 --- a/src/lib/components/MaintenanceStatusIcon.ts +++ b/src/lib/components/MaintenanceStatusIcon.ts @@ -1,7 +1,7 @@ import { BaseComponent } from "$lib/components/base/BaseComponent"; import { getComponent } from "$lib/components/base/component-utils"; import { on } from "$lib/components/events/comms"; -import { eventMaintenanceStateChanged } from "$lib/components/events/maintenance-popup-events"; +import { EVENT_MAINTENANCE_STATE_CHANGED } from "$lib/components/events/maintenance-popup-events"; import type { MediaBoxTools } from "$lib/components/MediaBoxTools"; export class MaintenanceStatusIcon extends BaseComponent { @@ -22,7 +22,7 @@ export class MaintenanceStatusIcon extends BaseComponent { throw new Error('Status icon element initialized outside of the media box!'); } - on(this.#mediaBoxTools, eventMaintenanceStateChanged, this.#onMaintenanceStateChanged.bind(this)); + on(this.#mediaBoxTools, EVENT_MAINTENANCE_STATE_CHANGED, this.#onMaintenanceStateChanged.bind(this)); } #onMaintenanceStateChanged(stateChangeEvent: CustomEvent) { diff --git a/src/lib/components/MediaBoxTools.ts b/src/lib/components/MediaBoxTools.ts index 754a424..4cbbf6b 100644 --- a/src/lib/components/MediaBoxTools.ts +++ b/src/lib/components/MediaBoxTools.ts @@ -2,7 +2,7 @@ import { BaseComponent } from "$lib/components/base/BaseComponent"; import { getComponent } from "$lib/components/base/component-utils"; import { MaintenancePopup } from "$lib/components/MaintenancePopup"; import { on } from "$lib/components/events/comms"; -import { eventActiveProfileChanged } from "$lib/components/events/maintenance-popup-events"; +import { EVENT_ACTIVE_PROFILE_CHANGED } from "$lib/components/events/maintenance-popup-events"; import type { MediaBoxWrapper } from "$lib/components/MediaBoxWrapper"; import type MaintenanceProfile from "$entities/MaintenanceProfile"; @@ -39,7 +39,7 @@ export class MediaBoxTools extends BaseComponent { } } - on(this, eventActiveProfileChanged, this.#onActiveProfileChanged.bind(this)); + on(this, EVENT_ACTIVE_PROFILE_CHANGED, this.#onActiveProfileChanged.bind(this)); } #onActiveProfileChanged(profileChangedEvent: CustomEvent) { diff --git a/src/lib/components/MediaBoxWrapper.ts b/src/lib/components/MediaBoxWrapper.ts index 9e75ed3..e25b62f 100644 --- a/src/lib/components/MediaBoxWrapper.ts +++ b/src/lib/components/MediaBoxWrapper.ts @@ -2,7 +2,7 @@ import { BaseComponent } from "$lib/components/base/BaseComponent"; import { getComponent } from "$lib/components/base/component-utils"; import { buildTagsAndAliasesMap } from "$lib/booru/tag-utils"; import { on } from "$lib/components/events/comms"; -import { eventTagsUpdated } from "$lib/components/events/maintenance-popup-events"; +import { EVENT_TAGS_UPDATED } from "$lib/components/events/maintenance-popup-events"; export class MediaBoxWrapper extends BaseComponent { #thumbnailContainer: HTMLElement | null = null; @@ -13,7 +13,7 @@ export class MediaBoxWrapper extends BaseComponent { this.#thumbnailContainer = this.container.querySelector('.image-container'); this.#imageLinkElement = this.#thumbnailContainer?.querySelector('a') || null; - on(this, eventTagsUpdated, this.#onTagsUpdatedRefreshTagsAndAliases.bind(this)); + on(this, EVENT_TAGS_UPDATED, this.#onTagsUpdatedRefreshTagsAndAliases.bind(this)); } #onTagsUpdatedRefreshTagsAndAliases(tagsUpdatedEvent: CustomEvent | null>) { diff --git a/src/lib/components/TagDropdownWrapper.ts b/src/lib/components/TagDropdownWrapper.ts index 33a3be8..7340854 100644 --- a/src/lib/components/TagDropdownWrapper.ts +++ b/src/lib/components/TagDropdownWrapper.ts @@ -4,8 +4,8 @@ import MaintenanceSettings from "$lib/extension/settings/MaintenanceSettings"; import { getComponent } from "$lib/components/base/component-utils"; import CustomCategoriesResolver from "$lib/extension/CustomCategoriesResolver"; import { on } from "$lib/components/events/comms"; -import { eventFormEditorUpdated } from "$lib/components/events/tags-form-events"; -import { eventTagCustomGroupResolved } from "$lib/components/events/tag-dropdown-events"; +import { EVENT_FORM_EDITOR_UPDATED } from "$lib/components/events/tags-form-events"; +import { EVENT_TAG_GROUP_RESOLVED } from "$lib/components/events/tag-dropdown-events"; import type TagGroup from "$entities/TagGroup"; const categoriesResolver = new CustomCategoriesResolver(); @@ -54,7 +54,7 @@ export class TagDropdownWrapper extends BaseComponent { } }); - on(this, eventTagCustomGroupResolved, this.#onTagGroupResolved.bind(this)); + on(this, EVENT_TAG_GROUP_RESOLVED, this.#onTagGroupResolved.bind(this)); } #onTagGroupResolved(resolvedGroupEvent: CustomEvent) { @@ -302,7 +302,7 @@ export function watchTagDropdownsInTagsEditor() { }); // When form is submitted, its DOM is completely updated. We need to fetch those tags in this case. - on(document.body, eventFormEditorUpdated, event => { + on(document.body, EVENT_FORM_EDITOR_UPDATED, event => { for (const tagDropdownElement of event.detail.querySelectorAll('.tag.dropdown')) { wrapTagDropdown(tagDropdownElement); } diff --git a/src/lib/components/TagsForm.ts b/src/lib/components/TagsForm.ts index ed6681d..567e923 100644 --- a/src/lib/components/TagsForm.ts +++ b/src/lib/components/TagsForm.ts @@ -1,15 +1,15 @@ import { BaseComponent } from "$lib/components/base/BaseComponent"; import { getComponent } from "$lib/components/base/component-utils"; import { emit, on, type UnsubscribeFunction } from "$lib/components/events/comms"; -import { eventFetchComplete } from "$lib/components/events/booru-events"; -import { eventFormEditorUpdated } from "$lib/components/events/tags-form-events"; +import { EVENT_FETCH_COMPLETE } from "$lib/components/events/booru-events"; +import { EVENT_FORM_EDITOR_UPDATED } from "$lib/components/events/tags-form-events"; export class TagsForm extends BaseComponent { protected init() { // Site sending the event when form is submitted vie Fetch API. We use this event to reload our logic here. const unsubscribe = on( this.container, - eventFetchComplete, + EVENT_FETCH_COMPLETE, () => this.#waitAndDetectUpdatedForm(unsubscribe), ); } @@ -36,7 +36,7 @@ export class TagsForm extends BaseComponent { const fullTagEditor = tagFormComponent.parentTagEditorElement; if (fullTagEditor) { - emit(document.body, eventFormEditorUpdated, fullTagEditor); + emit(document.body, EVENT_FORM_EDITOR_UPDATED, fullTagEditor); } else { console.info('Tag form is not in the tag editor. Event is not sent.'); } diff --git a/src/lib/components/TagsListBlock.ts b/src/lib/components/TagsListBlock.ts index 3603fcf..5a94a4a 100644 --- a/src/lib/components/TagsListBlock.ts +++ b/src/lib/components/TagsListBlock.ts @@ -2,9 +2,9 @@ import { BaseComponent } from "$lib/components/base/BaseComponent"; import type TagGroup from "$entities/TagGroup"; import type { TagDropdownWrapper } from "$lib/components/TagDropdownWrapper"; import { on } from "$lib/components/events/comms"; -import { eventFormEditorUpdated } from "$lib/components/events/tags-form-events"; +import { EVENT_FORM_EDITOR_UPDATED } from "$lib/components/events/tags-form-events"; import { getComponent } from "$lib/components/base/component-utils"; -import { eventTagCustomGroupResolved } from "$lib/components/events/tag-dropdown-events"; +import { EVENT_TAG_GROUP_RESOLVED } from "$lib/components/events/tag-dropdown-events"; import TagSettings from "$lib/extension/settings/TagSettings"; export class TagsListBlock extends BaseComponent { @@ -32,7 +32,7 @@ export class TagsListBlock extends BaseComponent { on( this, - eventTagCustomGroupResolved, + EVENT_TAG_GROUP_RESOLVED, this.#onTagDropdownCustomGroupResolved.bind(this) ); } @@ -195,7 +195,7 @@ export function initializeAllTagsLists() { } export function watchForUpdatedTagLists() { - on(document, eventFormEditorUpdated, event => { + on(document, EVENT_FORM_EDITOR_UPDATED, event => { event.detail.closest('#image_tags_and_source') }); } diff --git a/src/lib/components/events/booru-events.ts b/src/lib/components/events/booru-events.ts index a726d9b..05d9e57 100644 --- a/src/lib/components/events/booru-events.ts +++ b/src/lib/components/events/booru-events.ts @@ -1,5 +1,5 @@ -export const eventFetchComplete = 'fetchcomplete'; +export const EVENT_FETCH_COMPLETE = 'fetchcomplete'; export interface BooruEventsMap { - [eventFetchComplete]: null; // Site sends the response, but extension will not get it due to isolation. + [EVENT_FETCH_COMPLETE]: null; // Site sends the response, but extension will not get it due to isolation. } diff --git a/src/lib/components/events/fullscreen-viewer-events.ts b/src/lib/components/events/fullscreen-viewer-events.ts index 333a917..60b9c55 100644 --- a/src/lib/components/events/fullscreen-viewer-events.ts +++ b/src/lib/components/events/fullscreen-viewer-events.ts @@ -1,7 +1,7 @@ import type { FullscreenViewerSize } from "$lib/extension/settings/MiscSettings"; -export const eventSizeLoaded = 'size-loaded'; +export const EVENT_SIZE_LOADED = 'size-loaded'; export interface FullscreenViewerEventsMap { - [eventSizeLoaded]: FullscreenViewerSize; + [EVENT_SIZE_LOADED]: FullscreenViewerSize; } diff --git a/src/lib/components/events/maintenance-popup-events.ts b/src/lib/components/events/maintenance-popup-events.ts index bf032eb..fe6e61a 100644 --- a/src/lib/components/events/maintenance-popup-events.ts +++ b/src/lib/components/events/maintenance-popup-events.ts @@ -1,13 +1,13 @@ import type MaintenanceProfile from "$entities/MaintenanceProfile"; -export const eventActiveProfileChanged = 'active-profile-changed'; -export const eventMaintenanceStateChanged = 'maintenance-state-change'; -export const eventTagsUpdated = 'tags-updated'; +export const EVENT_ACTIVE_PROFILE_CHANGED = 'active-profile-changed'; +export const EVENT_MAINTENANCE_STATE_CHANGED = 'maintenance-state-change'; +export const EVENT_TAGS_UPDATED = 'tags-updated'; type MaintenanceState = 'processing' | 'failed' | 'complete' | 'waiting'; export interface MaintenancePopupEventsMap { - [eventActiveProfileChanged]: MaintenanceProfile | null; - [eventMaintenanceStateChanged]: MaintenanceState; - [eventTagsUpdated]: Map | null; + [EVENT_ACTIVE_PROFILE_CHANGED]: MaintenanceProfile | null; + [EVENT_MAINTENANCE_STATE_CHANGED]: MaintenanceState; + [EVENT_TAGS_UPDATED]: Map | null; } diff --git a/src/lib/components/events/tag-dropdown-events.ts b/src/lib/components/events/tag-dropdown-events.ts index 352b5ce..84d7cc3 100644 --- a/src/lib/components/events/tag-dropdown-events.ts +++ b/src/lib/components/events/tag-dropdown-events.ts @@ -1,7 +1,7 @@ import type TagGroup from "$entities/TagGroup"; -export const eventTagCustomGroupResolved = 'tag-group-resolved'; +export const EVENT_TAG_GROUP_RESOLVED = 'tag-group-resolved'; export interface TagDropdownEvents { - [eventTagCustomGroupResolved]: TagGroup | null; + [EVENT_TAG_GROUP_RESOLVED]: TagGroup | null; } diff --git a/src/lib/components/events/tags-form-events.ts b/src/lib/components/events/tags-form-events.ts index 64461dc..86e57f1 100644 --- a/src/lib/components/events/tags-form-events.ts +++ b/src/lib/components/events/tags-form-events.ts @@ -1,5 +1,5 @@ -export const eventFormEditorUpdated = 'tags-form-updated'; +export const EVENT_FORM_EDITOR_UPDATED = 'tags-form-updated'; export interface TagsFormEventsMap { - [eventFormEditorUpdated]: HTMLElement; + [EVENT_FORM_EDITOR_UPDATED]: HTMLElement; } diff --git a/src/lib/extension/CustomCategoriesResolver.ts b/src/lib/extension/CustomCategoriesResolver.ts index 790b9e1..11e9935 100644 --- a/src/lib/extension/CustomCategoriesResolver.ts +++ b/src/lib/extension/CustomCategoriesResolver.ts @@ -2,7 +2,7 @@ import type { TagDropdownWrapper } from "$lib/components/TagDropdownWrapper"; import TagGroup from "$entities/TagGroup"; import { escapeRegExp } from "$lib/utils"; import { emit } from "$lib/components/events/comms"; -import { eventTagCustomGroupResolved } from "$lib/components/events/tag-dropdown-events"; +import { EVENT_TAG_GROUP_RESOLVED } from "$lib/components/events/tag-dropdown-events"; export default class CustomCategoriesResolver { #exactGroupMatches = new Map(); @@ -58,7 +58,7 @@ export default class CustomCategoriesResolver { emit( tagDropdown, - eventTagCustomGroupResolved, + EVENT_TAG_GROUP_RESOLVED, this.#exactGroupMatches.get(tagName)! ); @@ -75,7 +75,7 @@ export default class CustomCategoriesResolver { emit( tagDropdown, - eventTagCustomGroupResolved, + EVENT_TAG_GROUP_RESOLVED, this.#regExpGroupMatches.get(targetRegularExpression)! ); @@ -119,7 +119,7 @@ export default class CustomCategoriesResolver { static #resetToOriginalCategory(tagDropdown: TagDropdownWrapper): void { emit( tagDropdown, - eventTagCustomGroupResolved, + EVENT_TAG_GROUP_RESOLVED, null, ); } From e2eb8a0ca7581583e57430aa098d3f7a997d7390 Mon Sep 17 00:00:00 2001 From: KoloMl Date: Wed, 26 Mar 2025 20:03:04 +0400 Subject: [PATCH 2/7] Fixed last media box on the page not being marked as the last in a row --- src/lib/components/MediaBoxWrapper.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/lib/components/MediaBoxWrapper.ts b/src/lib/components/MediaBoxWrapper.ts index 9e75ed3..3e0a087 100644 --- a/src/lib/components/MediaBoxWrapper.ts +++ b/src/lib/components/MediaBoxWrapper.ts @@ -3,6 +3,7 @@ import { getComponent } from "$lib/components/base/component-utils"; import { buildTagsAndAliasesMap } from "$lib/booru/tag-utils"; import { on } from "$lib/components/events/comms"; import { eventTagsUpdated } from "$lib/components/events/maintenance-popup-events"; +import onMessageExternal = chrome.runtime.onMessageExternal; export class MediaBoxWrapper extends BaseComponent { #thumbnailContainer: HTMLElement | null = null; @@ -90,5 +91,10 @@ export function calculateMediaBoxesPositions(mediaBoxesList: NodeListOf Date: Wed, 26 Mar 2025 20:39:30 +0400 Subject: [PATCH 3/7] Added button to the tags list to toggle separation of groups --- src/lib/components/TagsListBlock.ts | 35 +++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/lib/components/TagsListBlock.ts b/src/lib/components/TagsListBlock.ts index 3603fcf..873321c 100644 --- a/src/lib/components/TagsListBlock.ts +++ b/src/lib/components/TagsListBlock.ts @@ -8,7 +8,12 @@ import { eventTagCustomGroupResolved } from "$lib/components/events/tag-dropdown import TagSettings from "$lib/extension/settings/TagSettings"; export class TagsListBlock extends BaseComponent { + #tagsListButtonsContainer: HTMLElement | null = null; #tagsListContainer: HTMLElement | null = null; + + #toggleGroupingButton = document.createElement('a'); + #toggleGroupingButtonIcon = document.createElement('i'); + #tagSettings = new TagSettings(); #shouldDisplaySeparation = false; @@ -21,7 +26,21 @@ export class TagsListBlock extends BaseComponent { #isReorderingPlanned = false; protected build() { + this.#tagsListButtonsContainer = this.container.querySelector('.block.tagsauce .block__header__buttons'); this.#tagsListContainer = this.container.querySelector('.tag-list'); + + this.#toggleGroupingButton.innerText = ' Grouping'; + this.#toggleGroupingButton.href = 'javascript:void(0)'; + this.#toggleGroupingButton.classList.add('button', 'button--link', 'button--inline'); + this.#toggleGroupingButton.title = 'Toggle the global groups separation option. This will only toggle global ' + + 'setting without changing the separation of specific groups.'; + + this.#toggleGroupingButtonIcon.classList.add('fas', TagsListBlock.#iconGroupingDisabled); + this.#toggleGroupingButton.prepend(this.#toggleGroupingButtonIcon); + + if (this.#tagsListButtonsContainer) { + this.#tagsListButtonsContainer.append(this.#toggleGroupingButton); + } } init() { @@ -35,6 +54,8 @@ export class TagsListBlock extends BaseComponent { eventTagCustomGroupResolved, this.#onTagDropdownCustomGroupResolved.bind(this) ); + + this.#toggleGroupingButton.addEventListener('click', this.#onToggleGroupingClicked.bind(this)); } #onTagSeparationChange(isSeparationEnabled: boolean) { @@ -44,6 +65,12 @@ export class TagsListBlock extends BaseComponent { this.#shouldDisplaySeparation = isSeparationEnabled; this.#reorderSeparatedGroups(); + this.#updateToggleSeparationButton(); + } + + #updateToggleSeparationButton() { + this.#toggleGroupingButtonIcon.classList.toggle(TagsListBlock.#iconGroupingEnabled, this.#shouldDisplaySeparation); + this.#toggleGroupingButtonIcon.classList.toggle(TagsListBlock.#iconGroupingDisabled, !this.#shouldDisplaySeparation); } #onTagDropdownCustomGroupResolved(resolvedCustomGroupEvent: CustomEvent) { @@ -74,6 +101,11 @@ export class TagsListBlock extends BaseComponent { } } + #onToggleGroupingClicked(event: Event) { + event.preventDefault(); + void this.#tagSettings.setGroupSeparation(!this.#shouldDisplaySeparation); + } + #handleTagGroupChanges(tagGroup: TagGroup) { const groupId = tagGroup.id; const processedGroup = this.#separatedGroups.get(groupId); @@ -181,6 +213,9 @@ export class TagsListBlock extends BaseComponent { static #orderCssVariableForGroup(groupId: string): string { return `--ta-order-${groupId}`; } + + static #iconGroupingDisabled = 'fa-folder'; + static #iconGroupingEnabled = 'fa-folder-tree'; } export function initializeAllTagsLists() { From 6586141134e76c3dcd4d0d538154daeaf40f78dd Mon Sep 17 00:00:00 2001 From: KoloMl Date: Wed, 26 Mar 2025 20:43:19 +0400 Subject: [PATCH 4/7] Fixed missed re-initialization of tags list after tag form was submitted --- src/lib/components/TagsListBlock.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/lib/components/TagsListBlock.ts b/src/lib/components/TagsListBlock.ts index 3603fcf..bb5f507 100644 --- a/src/lib/components/TagsListBlock.ts +++ b/src/lib/components/TagsListBlock.ts @@ -196,6 +196,13 @@ export function initializeAllTagsLists() { export function watchForUpdatedTagLists() { on(document, eventFormEditorUpdated, event => { - event.detail.closest('#image_tags_and_source') + const tagsListElement = event.detail.closest('#image_tags_and_source'); + + if (!tagsListElement || getComponent(tagsListElement)) { + return; + } + + new TagsListBlock(tagsListElement) + .initialize(); }); } From 928fe5ddb0258dafbb2eefc21f81ce1e70660b3f Mon Sep 17 00:00:00 2001 From: KoloMl Date: Wed, 26 Mar 2025 20:46:51 +0400 Subject: [PATCH 5/7] Removed unnecessary import --- src/lib/components/MediaBoxWrapper.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/lib/components/MediaBoxWrapper.ts b/src/lib/components/MediaBoxWrapper.ts index 3e0a087..8207a9b 100644 --- a/src/lib/components/MediaBoxWrapper.ts +++ b/src/lib/components/MediaBoxWrapper.ts @@ -3,7 +3,6 @@ import { getComponent } from "$lib/components/base/component-utils"; import { buildTagsAndAliasesMap } from "$lib/booru/tag-utils"; import { on } from "$lib/components/events/comms"; import { eventTagsUpdated } from "$lib/components/events/maintenance-popup-events"; -import onMessageExternal = chrome.runtime.onMessageExternal; export class MediaBoxWrapper extends BaseComponent { #thumbnailContainer: HTMLElement | null = null; From 8839373292dea100606779f5c065b420f166f87d Mon Sep 17 00:00:00 2001 From: KoloMl Date: Fri, 4 Apr 2025 14:35:54 +0400 Subject: [PATCH 6/7] Updating dependencies (#118) * Updated `vite` to 6.2.5 * Updated `sass` to 1.86.3 * Updated `svelte` to 5.25.6 * Updated `@sveltejs/kit` to 2.20.3 * Updated `vitest` to 3.1.1 * Updated `@vitest/coverage-v8` to 3.1.1 * Updated `@sveltejs/adapter-auto` to 6.0.0 * Updated `@types/chrome` to 0.0.313 * Updated `@types/node` to 22.14.0 --- package-lock.json | 224 ++++++++++++++++++++++++++-------------------- package.json | 18 ++-- 2 files changed, 135 insertions(+), 107 deletions(-) diff --git a/package-lock.json b/package-lock.json index cc1fcea..637fb2b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,21 +12,21 @@ "lz-string": "^1.5.0" }, "devDependencies": { - "@sveltejs/adapter-auto": "^4.0.0", + "@sveltejs/adapter-auto": "^6.0.0", "@sveltejs/adapter-static": "^3.0.8", - "@sveltejs/kit": "^2.19.0", + "@sveltejs/kit": "^2.20.3", "@sveltejs/vite-plugin-svelte": "^5.0.3", - "@types/chrome": "^0.0.309", - "@types/node": "^22.13.10", - "@vitest/coverage-v8": "^3.0.8", + "@types/chrome": "^0.0.313", + "@types/node": "^22.14.0", + "@vitest/coverage-v8": "^3.1.1", "cheerio": "^1.0.0", "jsdom": "^26.0.0", - "sass": "^1.85.1", - "svelte": "^5.23.0", + "sass": "^1.86.3", + "svelte": "^5.25.6", "svelte-check": "^4.1.5", "typescript": "^5.8.2", - "vite": "^6.1.1", - "vitest": "^3.0.8" + "vite": "^6.2.5", + "vitest": "^3.1.1" } }, "node_modules/@ampproject/remapping": { @@ -1081,10 +1081,11 @@ } }, "node_modules/@sveltejs/adapter-auto": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-4.0.0.tgz", - "integrity": "sha512-kmuYSQdD2AwThymQF0haQhM8rE5rhutQXG4LNbnbShwhMO4qQGnKaaTy+88DuNSuoQDi58+thpq8XpHc1+oEKQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-6.0.0.tgz", + "integrity": "sha512-7mR2/G7vlXakaOj6QBSG9dwBfTgWjV+UnEMB5Z6Xu0ZbdXda6c0su1fNkg0ab0zlilSkloMA2NjCna02/DR7sA==", "dev": true, + "license": "MIT", "dependencies": { "import-meta-resolve": "^4.1.0" }, @@ -1102,10 +1103,11 @@ } }, "node_modules/@sveltejs/kit": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.19.0.tgz", - "integrity": "sha512-UTx28Ad4sYsLU//gqkEo5aFOPFBRT2uXCmXTsURqhurDCvzkVwXruJgBcHDaMiK6RKKpYRteDUaXYqZyGPgCXQ==", + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.20.3.tgz", + "integrity": "sha512-z1SQ8qra/kGY3DzarG7xc6XsbKm8UY3SnI82XLI3PqMYWbYj/LpjPWuAz9WA5EyLjFNLD7sOAOEW8Gt4yjr5Vg==", "dev": true, + "license": "MIT", "dependencies": { "@types/cookie": "^0.6.0", "cookie": "^0.6.0", @@ -1170,10 +1172,11 @@ } }, "node_modules/@types/chrome": { - "version": "0.0.309", - "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.309.tgz", - "integrity": "sha512-ZFADzcp8b+roUrux68U8pti4cmNOLJXWkShk8lfxj9SBcjYqpJt7NypBprSJUJDJVakGZgd2Tt00QePIGh7oPA==", + "version": "0.0.313", + "resolved": "https://registry.npmjs.org/@types/chrome/-/chrome-0.0.313.tgz", + "integrity": "sha512-9R5T7gTaYZhkxlu+Ho4wk9FL+y/werWQY2yjGWSqCuiTsqS7nL/BE5UMTP6rU7J+oIG2FRKqrEycHhJATeltVA==", "dev": true, + "license": "MIT", "dependencies": { "@types/filesystem": "*", "@types/har-format": "*" @@ -1208,19 +1211,21 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.13.10", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.10.tgz", - "integrity": "sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==", + "version": "22.14.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.0.tgz", + "integrity": "sha512-Kmpl+z84ILoG+3T/zQFyAJsU6EPTmOCj8/2+83fSN6djd6I4o7uOuGIH6vq3PrjY5BGitSbFuMN18j3iknubbA==", "dev": true, + "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "undici-types": "~6.21.0" } }, "node_modules/@vitest/coverage-v8": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.0.8.tgz", - "integrity": "sha512-y7SAKsQirsEJ2F8bulBck4DoluhI2EEgTimHd6EEUgJBGKy9tC25cpywh1MH4FvDGoG2Unt7+asVd1kj4qOSAw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.1.1.tgz", + "integrity": "sha512-MgV6D2dhpD6Hp/uroUoAIvFqA8AuvXEFBC2eepG3WFc1pxTfdk1LEqqkWoWhjz+rytoqrnUUCdf6Lzco3iHkLQ==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.3.0", "@bcoe/v8-coverage": "^1.0.2", @@ -1231,7 +1236,7 @@ "istanbul-reports": "^3.1.7", "magic-string": "^0.30.17", "magicast": "^0.3.5", - "std-env": "^3.8.0", + "std-env": "^3.8.1", "test-exclude": "^7.0.1", "tinyrainbow": "^2.0.0" }, @@ -1239,8 +1244,8 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "@vitest/browser": "3.0.8", - "vitest": "3.0.8" + "@vitest/browser": "3.1.1", + "vitest": "3.1.1" }, "peerDependenciesMeta": { "@vitest/browser": { @@ -1249,13 +1254,14 @@ } }, "node_modules/@vitest/expect": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.8.tgz", - "integrity": "sha512-Xu6TTIavTvSSS6LZaA3EebWFr6tsoXPetOWNMOlc7LO88QVVBwq2oQWBoDiLCN6YTvNYsGSjqOO8CAdjom5DCQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.1.tgz", + "integrity": "sha512-q/zjrW9lgynctNbwvFtQkGK9+vvHA5UzVi2V8APrp1C6fG6/MuYYkmlx4FubuqLycCeSdHD5aadWfua/Vr0EUA==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.8", - "@vitest/utils": "3.0.8", + "@vitest/spy": "3.1.1", + "@vitest/utils": "3.1.1", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" }, @@ -1264,12 +1270,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.8.tgz", - "integrity": "sha512-n3LjS7fcW1BCoF+zWZxG7/5XvuYH+lsFg+BDwwAz0arIwHQJFUEsKBQ0BLU49fCxuM/2HSeBPHQD8WjgrxMfow==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.1.tgz", + "integrity": "sha512-bmpJJm7Y7i9BBELlLuuM1J1Q6EQ6K5Ye4wcyOpOMXMcePYKSIYlpcrCm4l/O6ja4VJA5G2aMJiuZkZdnxlC3SA==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.8", + "@vitest/spy": "3.1.1", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, @@ -1290,10 +1297,11 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.8.tgz", - "integrity": "sha512-BNqwbEyitFhzYMYHUVbIvepOyeQOSFA/NeJMIP9enMntkkxLgOcgABH6fjyXG85ipTgvero6noreavGIqfJcIg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.1.tgz", + "integrity": "sha512-dg0CIzNx+hMMYfNmSqJlLSXEmnNhMswcn3sXO7Tpldr0LiGmg3eXdLLhwkv2ZqgHb/d5xg5F7ezNFRA1fA13yA==", "dev": true, + "license": "MIT", "dependencies": { "tinyrainbow": "^2.0.0" }, @@ -1302,12 +1310,13 @@ } }, "node_modules/@vitest/runner": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.8.tgz", - "integrity": "sha512-c7UUw6gEcOzI8fih+uaAXS5DwjlBaCJUo7KJ4VvJcjL95+DSR1kova2hFuRt3w41KZEFcOEiq098KkyrjXeM5w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.1.tgz", + "integrity": "sha512-X/d46qzJuEDO8ueyjtKfxffiXraPRfmYasoC4i5+mlLEJ10UvPb0XH5M9C3gWuxd7BAQhpK42cJgJtq53YnWVA==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/utils": "3.0.8", + "@vitest/utils": "3.1.1", "pathe": "^2.0.3" }, "funding": { @@ -1315,12 +1324,13 @@ } }, "node_modules/@vitest/snapshot": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.8.tgz", - "integrity": "sha512-x8IlMGSEMugakInj44nUrLSILh/zy1f2/BgH0UeHpNyOocG18M9CWVIFBaXPt8TrqVZWmcPjwfG/ht5tnpba8A==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.1.tgz", + "integrity": "sha512-bByMwaVWe/+1WDf9exFxWWgAixelSdiwo2p33tpqIlM14vW7PRV5ppayVXtfycqze4Qhtwag5sVhX400MLBOOw==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.8", + "@vitest/pretty-format": "3.1.1", "magic-string": "^0.30.17", "pathe": "^2.0.3" }, @@ -1329,10 +1339,11 @@ } }, "node_modules/@vitest/spy": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.8.tgz", - "integrity": "sha512-MR+PzJa+22vFKYb934CejhR4BeRpMSoxkvNoDit68GQxRLSf11aT6CTj3XaqUU9rxgWJFnqicN/wxw6yBRkI1Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.1.tgz", + "integrity": "sha512-+EmrUOOXbKzLkTDwlsc/xrwOlPDXyVk3Z6P6K4oiCndxz7YLpp/0R0UsWVOKT0IXWjjBJuSMk6D27qipaupcvQ==", "dev": true, + "license": "MIT", "dependencies": { "tinyspy": "^3.0.2" }, @@ -1341,12 +1352,13 @@ } }, "node_modules/@vitest/utils": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.8.tgz", - "integrity": "sha512-nkBC3aEhfX2PdtQI/QwAWp8qZWwzASsU4Npbcd5RdMPBSSLCpkZp52P3xku3s3uA0HIEhGvEcF8rNkBsz9dQ4Q==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.1.tgz", + "integrity": "sha512-1XIjflyaU2k3HMArJ50bwSh3wKWPD6Q47wz/NUSmRV0zNywPc4w79ARjg/i/aNINHwA+mIALhUVqD9/aUvZNgg==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.8", + "@vitest/pretty-format": "3.1.1", "loupe": "^3.1.3", "tinyrainbow": "^2.0.0" }, @@ -1416,6 +1428,7 @@ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" } @@ -1475,6 +1488,7 @@ "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -1498,6 +1512,7 @@ "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", "dev": true, + "license": "MIT", "dependencies": { "assertion-error": "^2.0.1", "check-error": "^2.1.1", @@ -1514,6 +1529,7 @@ "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 16" } @@ -1721,6 +1737,7 @@ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -1887,7 +1904,8 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/es-object-atoms": { "version": "1.1.1", @@ -1965,10 +1983,11 @@ "dev": true }, "node_modules/esrap": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.3.tgz", - "integrity": "sha512-Xddc1RsoFJ4z9nR7W7BFaEPIp4UXoeQ0+077UdWLxbafMQFyU79sQJMk7kxNgRwQ9/aVgaKacCHC2pUACGwmYw==", + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/esrap/-/esrap-1.4.6.tgz", + "integrity": "sha512-F/D2mADJ9SHY3IwksD4DAXjTt7qt7GWUf3/8RhCNWmC/67tyb55dpimHmy7EplakFaflV0R/PC+fdSPqrRHAQw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" } @@ -1978,14 +1997,15 @@ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0" } }, "node_modules/expect-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.1.0.tgz", - "integrity": "sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz", + "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2469,7 +2489,8 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lru-cache": { "version": "10.4.3", @@ -2732,13 +2753,15 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pathval": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14.16" } @@ -2874,9 +2897,9 @@ "license": "MIT" }, "node_modules/sass": { - "version": "1.85.1", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.85.1.tgz", - "integrity": "sha512-Uk8WpxM5v+0cMR0XjX9KfRIacmSG86RH4DCCZjLU2rFh5tyutt9siAXJ7G+YfxQ99Q6wrRMbMlVl6KqUms71ag==", + "version": "1.86.3", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.86.3.tgz", + "integrity": "sha512-iGtg8kus4GrsGLRDLRBRHY9dNVA78ZaS7xr01cWnS7PEMQyFtTqBiyCrfpTYTZXRWM94akzckYjh8oADfFNTzw==", "dev": true, "dependencies": { "chokidar": "^4.0.0", @@ -2996,9 +3019,9 @@ "license": "MIT" }, "node_modules/std-env": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", - "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", + "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", "dev": true, "license": "MIT" }, @@ -3120,10 +3143,11 @@ } }, "node_modules/svelte": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.23.0.tgz", - "integrity": "sha512-v0lL3NuKontiCxholEiAXCB+BYbndlKbwlDMK0DS86WgGELMJSpyqCSbJeMEMBDwOglnS7Ar2Rq0wwa/z2L8Vg==", + "version": "5.25.6", + "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.25.6.tgz", + "integrity": "sha512-RGkaeAXDuJdvhA1fdSM5GgD++vYfJYijZL0uN6kM2s/TRJ663jktBhZlF0qjzAJGR/34PtaeT3G8MKJY1EKeqg==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.3.0", "@jridgewell/sourcemap-codec": "^1.5.0", @@ -3134,7 +3158,7 @@ "axobject-query": "^4.1.0", "clsx": "^2.1.1", "esm-env": "^1.2.1", - "esrap": "^1.4.3", + "esrap": "^1.4.6", "is-reference": "^3.0.3", "locate-character": "^3.0.0", "magic-string": "^0.30.11", @@ -3256,6 +3280,7 @@ "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -3348,17 +3373,18 @@ } }, "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, "license": "MIT" }, "node_modules/vite": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.1.tgz", - "integrity": "sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q==", + "version": "6.2.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.5.tgz", + "integrity": "sha512-j023J/hCAa4pRIUH6J9HemwYfjB5llR2Ps0CWeikOtdR8+pAURAk0DoJC5/mm9kd+UgdnIy7d6HE4EAvlYhPhA==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "^0.25.0", "postcss": "^8.5.3", @@ -3426,10 +3452,11 @@ } }, "node_modules/vite-node": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.8.tgz", - "integrity": "sha512-6PhR4H9VGlcwXZ+KWCdMqbtG649xCPZqfI9j2PsK1FcXgEzro5bGHcVKFCTqPLaNKZES8Evqv4LwvZARsq5qlg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.1.tgz", + "integrity": "sha512-V+IxPAE2FvXpTCHXyNem0M+gWm6J7eRyWPR6vYoG/Gl+IscNOjXzztUhimQgTxaAoUoj40Qqimaa0NLIOOAH4w==", "dev": true, + "license": "MIT", "dependencies": { "cac": "^6.7.14", "debug": "^4.4.0", @@ -3462,30 +3489,31 @@ } }, "node_modules/vitest": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.8.tgz", - "integrity": "sha512-dfqAsNqRGUc8hB9OVR2P0w8PZPEckti2+5rdZip0WIz9WW0MnImJ8XiR61QhqLa92EQzKP2uPkzenKOAHyEIbA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.1.tgz", + "integrity": "sha512-kiZc/IYmKICeBAZr9DQ5rT7/6bD9G7uqQEki4fxazi1jdVl2mWGzedtBs5s6llz59yQhVb7FFY2MbHzHCnT79Q==", "dev": true, + "license": "MIT", "dependencies": { - "@vitest/expect": "3.0.8", - "@vitest/mocker": "3.0.8", - "@vitest/pretty-format": "^3.0.8", - "@vitest/runner": "3.0.8", - "@vitest/snapshot": "3.0.8", - "@vitest/spy": "3.0.8", - "@vitest/utils": "3.0.8", + "@vitest/expect": "3.1.1", + "@vitest/mocker": "3.1.1", + "@vitest/pretty-format": "^3.1.1", + "@vitest/runner": "3.1.1", + "@vitest/snapshot": "3.1.1", + "@vitest/spy": "3.1.1", + "@vitest/utils": "3.1.1", "chai": "^5.2.0", "debug": "^4.4.0", - "expect-type": "^1.1.0", + "expect-type": "^1.2.0", "magic-string": "^0.30.17", "pathe": "^2.0.3", - "std-env": "^3.8.0", + "std-env": "^3.8.1", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinypool": "^1.0.2", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0", - "vite-node": "3.0.8", + "vite-node": "3.1.1", "why-is-node-running": "^2.3.0" }, "bin": { @@ -3501,8 +3529,8 @@ "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.0.8", - "@vitest/ui": "3.0.8", + "@vitest/browser": "3.1.1", + "@vitest/ui": "3.1.1", "happy-dom": "*", "jsdom": "*" }, diff --git a/package.json b/package.json index a09d828..3d7d2af 100644 --- a/package.json +++ b/package.json @@ -12,21 +12,21 @@ "test:watch": "vitest watch --coverage" }, "devDependencies": { - "@sveltejs/adapter-auto": "^4.0.0", + "@sveltejs/adapter-auto": "^6.0.0", "@sveltejs/adapter-static": "^3.0.8", - "@sveltejs/kit": "^2.19.0", + "@sveltejs/kit": "^2.20.3", "@sveltejs/vite-plugin-svelte": "^5.0.3", - "@types/chrome": "^0.0.309", - "@types/node": "^22.13.10", - "@vitest/coverage-v8": "^3.0.8", + "@types/chrome": "^0.0.313", + "@types/node": "^22.14.0", + "@vitest/coverage-v8": "^3.1.1", "cheerio": "^1.0.0", "jsdom": "^26.0.0", - "sass": "^1.85.1", - "svelte": "^5.23.0", + "sass": "^1.86.3", + "svelte": "^5.25.6", "svelte-check": "^4.1.5", "typescript": "^5.8.2", - "vite": "^6.1.1", - "vitest": "^3.0.8" + "vite": "^6.2.5", + "vitest": "^3.1.1" }, "type": "module", "dependencies": { From 30320e7283882b0650b92013c265f95d2df4d4cf Mon Sep 17 00:00:00 2001 From: KoloMl Date: Fri, 4 Apr 2025 14:37:03 +0400 Subject: [PATCH 7/7] Bumped version to 0.4.4 --- manifest.json | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/manifest.json b/manifest.json index 99a7038..59bfd2d 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "name": "Furbooru Tagging Assistant", "description": "Experimental extension with a set of tools to make the tagging faster and easier. Made specifically for Furbooru.", - "version": "0.4.3.1", + "version": "0.4.4", "browser_specific_settings": { "gecko": { "id": "furbooru-tagging-assistant@thecore.city" diff --git a/package-lock.json b/package-lock.json index 637fb2b..1d7d0f1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "furbooru-tagging-assistant", - "version": "0.4.3.1", + "version": "0.4.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "furbooru-tagging-assistant", - "version": "0.4.3.1", + "version": "0.4.4", "dependencies": { "@fortawesome/fontawesome-free": "^6.7.2", "lz-string": "^1.5.0" diff --git a/package.json b/package.json index 3d7d2af..93addac 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "furbooru-tagging-assistant", - "version": "0.4.3.1", + "version": "0.4.4", "private": true, "scripts": { "build": "npm run build:popup && npm run build:extension",