{"version":3,"file":"580.mass-edit.js","mappings":"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","sources":["webpack://multi-token-edit/./multi-token-edit/scripts/presets/fauxSceneImporter.js"],"sourcesContent":["import { MODULE_ID } from '../constants.js';\r\nimport { META_INDEX_ID, PresetStorage } from './collection.js';\r\nimport { Preset } from './preset.js';\r\n\r\nconst { HandlebarsApplicationMixin, ApplicationV2 } = foundry.applications.api;\r\n\r\nexport function importScenes() {\r\n    new CompendiumSelector().render(true);\r\n}\r\n\r\nclass CompendiumSelector extends HandlebarsApplicationMixin(ApplicationV2) {\r\n    /** @override */\r\n    static DEFAULT_OPTIONS = {\r\n        id: 'me-faux-scene-compendium-select',\r\n        tag: 'form',\r\n        window: {\r\n            title: 'Scene Importer',\r\n            resizable: true,\r\n            contentClasses: ['standard-form'],\r\n        },\r\n        position: {\r\n            width: 650,\r\n            height: 195,\r\n        },\r\n        form: {\r\n            handler: CompendiumSelector._onSubmit,\r\n            submitOnChange: false,\r\n            closeOnSubmit: true,\r\n        },\r\n    };\r\n\r\n    /** @override */\r\n    static PARTS = {\r\n        body: {\r\n            template: `modules/${MODULE_ID}/templates/preset/fauxscene/compendium-select.hbs`,\r\n        },\r\n        footer: { template: 'templates/generic/form-footer.hbs' },\r\n    };\r\n\r\n    /** @override */\r\n    async _prepareContext(options) {\r\n        const context = await super._prepareContext(options);\r\n\r\n        const sceneCompendiumOptions = {};\r\n        game.packs\r\n            .filter((p) => p.documentName === 'Scene')\r\n            .forEach((p) => {\r\n                sceneCompendiumOptions[p.collection] = p.metadata.label;\r\n            });\r\n\r\n        const meCompendiumOptions = {};\r\n        game.packs\r\n            .filter((p) => !p.locked && p.index.get(META_INDEX_ID))\r\n            .forEach((p) => {\r\n                meCompendiumOptions[p.collection] = p.metadata.label;\r\n            });\r\n\r\n        const buttons = [{ type: 'submit', icon: 'fa-solid fa-magnifying-glass', label: 'Preview', action: 'save' }];\r\n\r\n        return Object.assign(context, { sceneCompendiumOptions, meCompendiumOptions, buttons });\r\n    }\r\n\r\n    static async _onSubmit(event, form, formData) {\r\n        const { sceneCollection, meCollection } = formData.object;\r\n        new FauxSceneImporter(sceneCollection, meCollection).render(true);\r\n    }\r\n}\r\n\r\nclass FauxSceneImporter extends HandlebarsApplicationMixin(ApplicationV2) {\r\n    constructor(sceneCollection, meCollection) {\r\n        super();\r\n        this._sceneCompendium = game.packs.get(sceneCollection);\r\n        if (!this._sceneCompendium) throw Error('Invalid scene compendium: ' + sceneCollection);\r\n        if (this._sceneCompendium.documentName !== 'Scene')\r\n            throw Error('Compendium selected is not a Scene compendium: ' + sceneCollection);\r\n\r\n        this._meCompendium = game.packs.get(meCollection);\r\n        if (!this._meCompendium) throw Error('Invalid preset compendium: ' + meCollection);\r\n    }\r\n\r\n    /** @override */\r\n    static DEFAULT_OPTIONS = {\r\n        id: 'me-faux-scene-importer',\r\n        tag: 'form',\r\n        window: {\r\n            title: 'Scene Importer',\r\n            resizable: true,\r\n            contentClasses: ['standard-form'],\r\n        },\r\n        position: {\r\n            width: 920,\r\n            height: 600,\r\n        },\r\n        actions: {\r\n            create: FauxSceneImporter._onCreate,\r\n            rename: FauxSceneImporter._onRename,\r\n            delete: FauxSceneImporter._onDelete,\r\n            tag: FauxSceneImporter._onTag,\r\n        },\r\n        form: {\r\n            handler: FauxSceneImporter._onSubmit,\r\n            submitOnChange: false,\r\n            closeOnSubmit: true,\r\n        },\r\n    };\r\n\r\n    /** @override */\r\n    static PARTS = {\r\n        body: {\r\n            template: `modules/${MODULE_ID}/templates/preset/fauxscene/scene-importer.hbs`,\r\n        },\r\n        footer: { template: 'templates/generic/form-footer.hbs' },\r\n    };\r\n\r\n    /** @override */\r\n    async _prepareContext(options) {\r\n        const context = await super._prepareContext(options);\r\n\r\n        const toCreateFauxScenes = [];\r\n        const toRenameFauxScenes = [];\r\n        const existingFauxScenes = [];\r\n        const danglingFauxScenes = [];\r\n\r\n        const meIndex = this._meCompendium.index;\r\n        const sceneIndex = this._sceneCompendium.index;\r\n\r\n        for (const sceneEntry of sceneIndex) {\r\n            const meEntry = meIndex.get(sceneEntry._id);\r\n\r\n            if (!meEntry) toCreateFauxScenes.push({ ...sceneEntry });\r\n            else if (sceneEntry.name !== meEntry.name)\r\n                toRenameFauxScenes.push({\r\n                    _id: sceneEntry._id,\r\n                    name: meEntry.name + ' -> ' + sceneEntry.name,\r\n                    thumb: sceneEntry.thumb,\r\n                    uuid: meEntry.uuid,\r\n                });\r\n            else existingFauxScenes.push(sceneEntry);\r\n        }\r\n\r\n        for (const meEntry of meIndex) {\r\n            if (!sceneIndex.get(meEntry._id)) {\r\n                const preset = await PresetStorage.retrieveSingle({ uuid: meEntry.uuid, load: false });\r\n                if (preset?.documentName === 'FauxScene')\r\n                    danglingFauxScenes.push({\r\n                        _id: meEntry._id,\r\n                        name: meEntry.name,\r\n                        thumb: preset.img,\r\n                        uuid: preset.uuid,\r\n                    });\r\n            }\r\n        }\r\n\r\n        console.log({ toCreateFauxScenes, toRenameFauxScenes, existingFauxScenes, danglingFauxScenes });\r\n\r\n        await foundry.applications.handlebars.getTemplate(\r\n            `modules/${MODULE_ID}/templates/preset/fauxscene/entry-partial.hbs`,\r\n            'me-faux-scene-entry',\r\n        );\r\n\r\n        Object.assign(this, { toCreateFauxScenes, toRenameFauxScenes, danglingFauxScenes });\r\n\r\n        return Object.assign(context, {\r\n            toCreateFauxScenes,\r\n            toRenameFauxScenes,\r\n            existingFauxScenes,\r\n            danglingFauxScenes,\r\n        });\r\n    }\r\n\r\n    /** @override */\r\n    _attachFrameListeners() {\r\n        super._attachFrameListeners();\r\n        this._createContextMenu(this._getCreateOptions, 'ol.create > .entry', {\r\n            hookName: 'getFauxSceneImportCreateOptions',\r\n        });\r\n        this._createContextMenu(this._getRenameOptions, 'ol.rename > .entry', {\r\n            hookName: 'getFauxSceneImportRenameOptions',\r\n        });\r\n        this._createContextMenu(this._getDeleteOptions, 'ol.dangling > .entry', {\r\n            hookName: 'getFauxSceneImportDeleteOptions',\r\n        });\r\n    }\r\n\r\n    _getCreateOptions() {\r\n        return [\r\n            {\r\n                name: 'Create',\r\n                icon: '<i class=\"fa-solid fa-plus\"></i>',\r\n                callback: async (item) => {\r\n                    const entry = this.toCreateFauxScenes.find((entry) => entry._id === item.dataset.id);\r\n                    await this._createFauxScenes([entry], false);\r\n                    this.toCreateFauxScenes = this.toCreateFauxScenes.filter((entry) => entry._id !== item.dataset.id);\r\n                    item.remove();\r\n                },\r\n            },\r\n            {\r\n                name: 'Remove from list',\r\n                icon: '<i class=\"fa-solid fa-x\"></i>',\r\n                callback: (item) => {\r\n                    this.toCreateFauxScenes = this.toCreateFauxScenes.filter((entry) => entry._id !== item.dataset.id);\r\n                    item.remove();\r\n                },\r\n            },\r\n        ];\r\n    }\r\n\r\n    _getRenameOptions() {\r\n        return [\r\n            {\r\n                name: 'Rename',\r\n                icon: '<i class=\"fa-solid fa-pen\"></i>',\r\n                callback: async (item) => {\r\n                    const entry = this._meCompendium.index.get(item.dataset.id);\r\n                    await this._renameFauxScenes([entry], false);\r\n                    this.toRenameFauxScenes = this.toRenameFauxScenes.filter((entry) => entry._id !== item.dataset.id);\r\n                    item.remove();\r\n                },\r\n            },\r\n            {\r\n                name: 'Remove from list',\r\n                icon: '<i class=\"fa-solid fa-x\"></i>',\r\n                callback: (item) => {\r\n                    this.toRenameFauxScenes = this.toRenameFauxScenes.filter((entry) => entry._id !== item.dataset.id);\r\n                    item.remove();\r\n                },\r\n            },\r\n        ];\r\n    }\r\n\r\n    _getDeleteOptions() {\r\n        return [\r\n            {\r\n                name: 'Delete',\r\n                icon: '<i class=\"fa-solid fa-x\"></i>',\r\n                callback: async (item) => {\r\n                    const entry = this._meCompendium.index.get(item.dataset.id);\r\n                    await this._deleteFauxScenes([entry], false);\r\n                    this.danglingFauxScenes = this.danglingFauxScenes.filter((entry) => entry._id !== item.dataset.id);\r\n                    item.remove();\r\n                },\r\n            },\r\n            {\r\n                name: 'Remove from list',\r\n                icon: '<i class=\"fa-solid fa-x\"></i>',\r\n                callback: (item) => {\r\n                    this.danglingFauxScenes = this.danglingFauxScenes.filter((entry) => entry._id !== item.dataset.id);\r\n                    item.remove();\r\n                },\r\n            },\r\n        ];\r\n    }\r\n\r\n    async _createFauxScenes(entries, render = false) {\r\n        const presets = [];\r\n        const meIndex = this._meCompendium.index;\r\n        for (const sceneEntry of entries) {\r\n            if (meIndex.get(sceneEntry._id)) continue;\r\n            const preset = new Preset({\r\n                documentName: 'FauxScene',\r\n                id: sceneEntry._id,\r\n                name: sceneEntry.name,\r\n                img: sceneEntry.thumb,\r\n                data: [{ uuid: sceneEntry.uuid }],\r\n                tags: sceneEntry.tags ?? [],\r\n            });\r\n            presets.push(preset);\r\n        }\r\n\r\n        await PresetStorage.createDocuments(presets, this._meCompendium.collection);\r\n        ui.notifications.info(`Imported ${presets.length} scenes.`);\r\n        if (render) this.render(true);\r\n    }\r\n\r\n    static async _onCreate() {\r\n        this._createFauxScenes(this.toCreateFauxScenes, true);\r\n    }\r\n\r\n    async _renameFauxScenes(entries, render = false) {\r\n        let renamedCount = 0;\r\n\r\n        const sceneIndex = this._sceneCompendium.index;\r\n        for (const meEntry of entries) {\r\n            const sceneEntry = sceneIndex.get(meEntry._id);\r\n            if (!sceneEntry) continue;\r\n\r\n            const preset = await PresetStorage.retrieveSingle({ uuid: meEntry.uuid, load: true });\r\n            if (preset) {\r\n                preset.update({ name: sceneEntry.name }, true);\r\n                renamedCount++;\r\n            }\r\n        }\r\n\r\n        if (renamedCount) await Preset.processBatchUpdates();\r\n        ui.notifications.info(`Updated ${renamedCount} FauxScene names`);\r\n        if (render) this.render(true);\r\n    }\r\n\r\n    static async _onRename() {\r\n        this._renameFauxScenes(this.toRenameFauxScenes, true);\r\n    }\r\n\r\n    async _deleteFauxScenes(entries, render = false) {\r\n        const presets = await PresetStorage.retrieve({ uuid: entries.map((d) => d.uuid), load: false });\r\n        await PresetStorage.delete(presets);\r\n        ui.notifications.info(`Deleted ${presets.length} FauxScenes`);\r\n        if (render) this.render(true);\r\n    }\r\n\r\n    static async _onDelete() {\r\n        this._deleteFauxScenes(this.danglingFauxScenes, true);\r\n    }\r\n\r\n    static async _onTag(event, button) {\r\n        const presets = [];\r\n        const type = button.dataset.type;\r\n\r\n        let callback;\r\n\r\n        if (type === 'create') {\r\n            callback = (tags) => {\r\n                this.toCreateFauxScenes.forEach((entry) => {\r\n                    entry.tags = [...new Set([...tags, ...(entry.tags ?? [])])];\r\n                });\r\n            };\r\n        } else if (type === 'rename' || type === 'dangling') {\r\n            callback = async (tags) => {\r\n                const entries = type === 'rename' ? this.toRenameFauxScenes : this.danglingFauxScenes;\r\n                const presets = await PresetStorage.retrieve({\r\n                    uuid: entries.map((d) => d.uuid),\r\n                    load: true,\r\n                });\r\n\r\n                for (const p of presets) {\r\n                    const nTags = new Set([...p.tags, ...tags]);\r\n                    await p.update({ tags: [...nTags] }, true);\r\n                }\r\n\r\n                await Preset.processBatchUpdates();\r\n                ui.notifications.info(`Tags applied to ${presets.length} FauxScenes.`);\r\n            };\r\n        }\r\n\r\n        new FauxSceneTagger(callback).render(true);\r\n    }\r\n}\r\n\r\nclass FauxSceneTagger extends HandlebarsApplicationMixin(ApplicationV2) {\r\n    constructor(callback) {\r\n        super();\r\n        this._callback = callback;\r\n    }\r\n\r\n    /** @override */\r\n    static DEFAULT_OPTIONS = {\r\n        id: 'me-faux-scene-tagger',\r\n        tag: 'form',\r\n        window: {\r\n            title: 'Tags',\r\n            resizable: true,\r\n            contentClasses: ['standard-form'],\r\n        },\r\n        position: {\r\n            width: 343,\r\n            height: 'auto',\r\n        },\r\n        form: {\r\n            handler: FauxSceneTagger._onSubmit,\r\n            submitOnChange: false,\r\n            closeOnSubmit: true,\r\n        },\r\n    };\r\n\r\n    /** @override */\r\n    static PARTS = {\r\n        body: {\r\n            template: `modules/${MODULE_ID}/templates/preset/fauxscene/tagger.hbs`,\r\n        },\r\n        footer: { template: 'templates/generic/form-footer.hbs' },\r\n    };\r\n\r\n    /** @override */\r\n    async _prepareContext(options) {\r\n        const context = await super._prepareContext(options);\r\n        context.buttons = [{ type: 'submit', icon: 'fa-solid fa-floppy-disk', label: 'Apply' }];\r\n        return context;\r\n    }\r\n\r\n    static async _onSubmit(event, form, formData) {\r\n        this._callback(formData.object.tags);\r\n    }\r\n}\r\n"],"names":["HandlebarsApplicationMixin","ApplicationV2","foundry","applications","api","importScenes","CompendiumSelector","render","static","id","tag","window","title","resizable","contentClasses","position","width","height","form","handler","_onSubmit","submitOnChange","closeOnSubmit","body","template","footer","_prepareContext","options","context","super","sceneCompendiumOptions","game","packs","filter","p","documentName","forEach","collection","metadata","label","meCompendiumOptions","locked","index","get","Object","assign","buttons","type","icon","action","event","formData","sceneCollection","meCollection","object","FauxSceneImporter","constructor","this","_sceneCompendium","Error","_meCompendium","actions","create","_onCreate","rename","_onRename","delete","_onDelete","_onTag","toCreateFauxScenes","toRenameFauxScenes","existingFauxScenes","danglingFauxScenes","meIndex","sceneIndex","sceneEntry","meEntry","_id","name","push","thumb","uuid","preset","retrieveSingle","load","img","console","log","handlebars","getTemplate","_attachFrameListeners","_createContextMenu","_getCreateOptions","hookName","_getRenameOptions","_getDeleteOptions","callback","async","item","entry","find","dataset","_createFauxScenes","remove","_renameFauxScenes","_deleteFauxScenes","entries","presets","data","tags","createDocuments","ui","notifications","info","length","renamedCount","update","processBatchUpdates","retrieve","map","d","button","Set","nTags","FauxSceneTagger","_callback"],"sourceRoot":""}