/*
 * Copyright (c) 2013 - present Adobe Systems Incorporated. All rights reserved.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 *
 */

define({

    /**
     * Errors
     */

    // General file io error strings
    "GENERIC_ERROR"                     : "(hiba {0})",
    "NOT_FOUND_ERR"                     : "A fájl nem található.",
    "NOT_READABLE_ERR"                  : "A fájl nem olvasható.",
    "NO_MODIFICATION_ALLOWED_ERR"       : "A célkönyvtárat nem lehet módosítani.",
    "NO_MODIFICATION_ALLOWED_ERR_FILE"  : "Nincs engedélyed a módosításhoz.",
    "FILE_EXISTS_ERR"                   : "A fájl vagy a könyvtár már létezik.",

    // Project error strings
    "ERROR_LOADING_PROJECT"             : "Hiba a projekt betöltése közben",
    "OPEN_DIALOG_ERROR"                 : "Hiba történt a \"fájl megnyitása\" ablak megjelenítésekor. (hiba {0})",
    "REQUEST_NATIVE_FILE_SYSTEM_ERROR"  : "Hiba történt a {0} könyvtár megnyitása közben. (hiba {1})",
    "READ_DIRECTORY_ENTRIES_ERROR"      : "Hiba történt a könyvtár tartalmának beolvasása közben. {0}. (hiba {1})",

    // File open/save error string
    "ERROR_OPENING_FILE_TITLE"          : "Hiba történt a fájl megnyitása közben.",
    "ERROR_OPENING_FILE"                : "Hiba történt a fájl megnyitása közben: {0}. {1}",
    "ERROR_RELOADING_FILE_TITLE"        : "Hiba történt a változások merevlemezről való újratöltése közben.",
    "ERROR_RELOADING_FILE"              : "Hiba történt a fájl újratöltése közben: {0}. {1}",
    "ERROR_SAVING_FILE_TITLE"           : "Hiba történt a fájl mentése közben",
    "ERROR_SAVING_FILE"                 : "Hiba történt a fájl mentése közben: {0}. {1}",
    "ERROR_RENAMING_FILE_TITLE"         : "Hiba történt a fájl átnevezése közben",
    "ERROR_RENAMING_FILE"               : "Hiba történt a fájl átnevezése közben: {0}. {1}",
    "ERROR_DELETING_FILE_TITLE"         : "Hiba történt a fájl törlése közben",
    "ERROR_DELETING_FILE"               : "Hiba történt a fájl törlése közben: {0}. {1}",
    "INVALID_FILENAME_TITLE"            : "Helytelen fájlnév",
    "INVALID_FILENAME_MESSAGE"          : "A fájl neve nem tartalmazhatja a következő karaktereket: {0} és foglalt rendszer neveket.",
    "ERROR_CREATING_FILE_TITLE"         : "Hiba történt a fájl létrehozása közben.",
    "ERROR_CREATING_FILE"               : "Hiba történt a fájl létrehozása közben: {0}. {1}",

    // Application error strings
    "ERROR_IN_BROWSER_TITLE"            : "Oops! A {APP_NAME} még nem fut böngészőben.",
    "ERROR_IN_BROWSER"                  : "A {APP_NAME} HTML-ben épült, de jelenleg asztali alkalmazásként fut, ezért helyi fájlokat is tudsz vele szerkeszteni. Kérlek használd az alkalmazás \"burkot\" a {APP_NAME} futtatásához: github.com/adobe/brackets-shell.",

    // FileIndexManager error string
    "ERROR_MAX_FILES_TITLE"             : "Hiba a fájlok Indexszelése közben",
    "ERROR_MAX_FILES"                   : "A maximális fájlszám indexelésre került. Folyamatok amelyek a fájlokat az indexben keresik esélyes hogy nem fognak rendesen működni.",

    // Live Development error strings
    "ERROR_LAUNCHING_BROWSER_TITLE"     : "Hiba a böngésző megnyitása közben",
    "ERROR_CANT_FIND_CHROME"            : "A Google Chrome böngésző nem található. Bizonyosodj meg hogy telepítve van.",
    "ERROR_LAUNCHING_BROWSER"           : "Hiba a böngésző megnyitása közben: (hiba {0})",

    "LIVE_DEVELOPMENT_ERROR_TITLE"      : "Élő Előnézet hiba",
    "LIVE_DEVELOPMENT_RELAUNCH_TITLE"   : "Csatlakozás a Böngészőhöz",
    "LIVE_DEVELOPMENT_ERROR_MESSAGE"    : "Az Élő Előnézet használatához muszály újraindítani a Chrome-ot a megfelelő beállításokkal.

Szeretnéd most újraindítani a Chrome-ot ezekkel a beállításokkal?",
    "LIVE_DEV_LOADING_ERROR_MESSAGE"    : "Nem lehet betölteni az Élő Fejlesztő oldalt",
    "LIVE_DEV_NEED_HTML_MESSAGE"        : "Nyiss meg egy HTML fájlt az Élő Előnézet indításához.",
    "LIVE_DEV_NEED_BASEURL_MESSAGE"     : "Az Élő Előnézet használatához szerver-oldali fájlokkal meg kell adni az alap URL-t a projekthez.",
    "LIVE_DEV_SERVER_NOT_READY_MESSAGE" : "Hiba a HTTP szerver indításakor az Élő Fejlesztéshez. Kérlek próbáld újra később.",
    "LIVE_DEVELOPMENT_INFO_TITLE"       : "Üdv az Élő Előnézetben!",
    "LIVE_DEVELOPMENT_INFO_MESSAGE"     : "Az Élő Előnézet összeköti a {APP_NAME}-et a böngésződdel. Megnyitja a HTML fájl előnézetét a Böngészőben, majd rögtön frissül amikor szerkeszted a kódodat.

Ebben a kezdetleges {APP_NAME} verzióban, az Élő Előnézet csak a Google Chrome-ban működik és élőben változikCSS fájlok szerkesztésekor. A HTML vagy JavaScript változások automatikusan frissülnek mentéskor.

(Ezt az üzenetet csak egyszer fogod látni.)",
    "LIVE_DEVELOPMENT_TROUBLESHOOTING"  : "További információért lásd: Élő Előnézet csatlakozási hibák kiküszöbölése.",

    "LIVE_DEV_STATUS_TIP_NOT_CONNECTED" : "Élő Előnézet",
    "LIVE_DEV_STATUS_TIP_PROGRESS1"     : "Élő Előnézet: Csatlakozás\u2026",
    "LIVE_DEV_STATUS_TIP_PROGRESS2"     : "Élő Előnézet: Inicializálás\u2026",
    "LIVE_DEV_STATUS_TIP_CONNECTED"     : "Élő Előnézet lecsatlakozása",
    "LIVE_DEV_STATUS_TIP_OUT_OF_SYNC"   : "Élő Előnézet: Kattints a lecsatlakozáshoz (Mentsd el a fájlt a frissítéshez)",

    "LIVE_DEV_DETACHED_REPLACED_WITH_DEVTOOLS" : "Az Élő Előnézet lecsatlakozott mert a bongésző fejlesztő eszközei meg lettek nyitva",
    "LIVE_DEV_DETACHED_TARGET_CLOSED"          : "Az Élő Előnézet lecsatlakozott mert az oldal be lett zárva a böngészőben",
    "LIVE_DEV_NAVIGATED_AWAY"                  : "Az Élő Előnézet lecsatlakozott mert a böngésző olyan oldalra lépett amely nem része a jelenlegi projektnek",
    "LIVE_DEV_CLOSED_UNKNOWN_REASON"           : "Az Élő Előnézet lecsatlakozott ismeretlen ok miatt ({0})",

    "SAVE_CLOSE_TITLE"                  : "Változtatások mentése",
    "SAVE_CLOSE_MESSAGE"                : "El szeretnéd menteni a változtatásokat itt: {0}?",
    "SAVE_CLOSE_MULTI_MESSAGE"          : "El szeretnéd menteni a változtatásokat a következő fájlokban?",
    "EXT_MODIFIED_TITLE"                : "Külső Változtatások",
    "FILE_DELETED_TITLE"                : "Fájl törölve",
    "EXT_MODIFIED_MESSAGE"              : "A/az {0} meg lett változtatva a lemezen, de tartalmaz nem mentet változtatásokat is a {APP_NAME}-ben.

Melyik verziót szeretnéd megtartani?",
    "EXT_DELETED_MESSAGE"               : "A/az {0} törölve lett a lemezen, de tartalmaz nem mentet változtatásokat is a {APP_NAME}-ben.

Meg szeretnéd tartani a változtatásokat?",

    // Find, Replace, Find in Files
    "BUTTON_YES"                        : "Igen",
    "BUTTON_NO"                         : "Nem",

    "OPEN_FILE"                         : "Fájl megnyitása",
    "SAVE_FILE_AS"                      : "Fájl mentése",
    "CHOOSE_FOLDER"                     : "Válassz mappát",

    "RELEASE_NOTES"                     : "Kiadási megjegyzések",
    "NO_UPDATE_TITLE"                   : "A legfrissebb verziót használod!",
    "NO_UPDATE_MESSAGE"                 : "A legfrissebb {APP_NAME} fut.",

    "FIND_IN_FILES_SCOPED"              : "a {0}-ban",
    "FIND_IN_FILES_NO_SCOPE"            : "a projektben",
    "FIND_IN_FILES_FILE"                : "fájl",
    "FIND_IN_FILES_FILES"               : "fájlok",
    "FIND_IN_FILES_MATCH"               : "találat",
    "FIND_IN_FILES_MATCHES"             : "találatok",
    "FIND_IN_FILES_MORE_THAN"           : "Több mint ",
    "FIND_IN_FILES_FILE_PATH"           : "Fájl: {0}",

    "ERROR_FETCHING_UPDATE_INFO_TITLE"  : "Hiba a frissítési infó lekérdezése közben",
    "ERROR_FETCHING_UPDATE_INFO_MSG"    : "Hiba történt a legfrissebb frissítési infó lekérdezése közben. Győződj meg arról hogy van internet kapcsolatod, majd próbáld meg újra.",

    /**
     * ProjectManager
     */
    "PROJECT_LOADING"   : "Betöltés\u2026",
    "UNTITLED"          : "Névtelen",
    "WORKING_FILES"     : "Munka fájlok",

    /**
     * Keyboard modifier names
     */
    "KEYBOARD_CTRL"   : "Ctrl",
    "KEYBOARD_SHIFT"  : "Shift",
    "KEYBOARD_SPACE"  : "Szóköz",

    /**
     * StatusBar strings
     */
    "STATUSBAR_CURSOR_POSITION"             : "Sor {0}, Oszlop {1}",
    "STATUSBAR_INDENT_TOOLTIP_SPACES"       : "Kattints hogy átváltsd a behúzást space-re",
    "STATUSBAR_INDENT_TOOLTIP_TABS"         : "Kattints hogy átváltsd a behúzást tabokra",
    "STATUSBAR_INDENT_SIZE_TOOLTIP_SPACES"  : "Kattints hogy átváltsd a behúzás space-ek számát",
    "STATUSBAR_INDENT_SIZE_TOOLTIP_TABS"    : "Kattints hogy átváltsd a tab szélességét",
    "STATUSBAR_SPACES"                      : "Szóközök",
    "STATUSBAR_TAB_SIZE"                    : "Tab Mérete",
    "STATUSBAR_LINE_COUNT_SINGULAR"         : "\u2014 {0} Sor",
    "STATUSBAR_LINE_COUNT_PLURAL"           : "\u2014 {0} Sor",

    /**
     * Command Name Constants
     */

    // File menu commands
    "FILE_MENU"                           : "Fájl",
    "CMD_FILE_NEW"                        : "Új Fájl",
    "CMD_FILE_NEW_FOLDER"                 : "Új Mappa",
    "CMD_FILE_OPEN"                       : "Megnyitás\u2026",
    "CMD_ADD_TO_WORKING_SET"              : "Hozzáadás a Munkakészlethez",
    "CMD_OPEN_FOLDER"                     : "Mappa Megnyitása\u2026",
    "CMD_FILE_CLOSE"                      : "Bezárás",
    "CMD_FILE_CLOSE_ALL"                  : "Összes Bezárása",
    "CMD_FILE_SAVE"                       : "Mentés",
    "CMD_FILE_SAVE_ALL"                   : "Összes Mentése",
    "CMD_FILE_SAVE_AS"                    : "Mentés másként\u2026",
    "CMD_LIVE_FILE_PREVIEW"               : "Élő Előnézet",
    "CMD_LIVE_HIGHLIGHT"                  : "Élő Kijelölés",
    "CMD_PROJECT_SETTINGS"                : "Projekt Beállítások\u2026",
    "CMD_FILE_RENAME"                     : "Átnevez",
    "CMD_FILE_DELETE"                     : "Töröl",
    "CMD_INSTALL_EXTENSION"               : "Bővítmény Telepítése\u2026",
    "CMD_EXTENSION_MANAGER"               : "Bővítménykezelő\u2026",
    "CMD_FILE_REFRESH"                    : "Újratöltés",
    "CMD_QUIT"                            : "Bezár",
    // Used in native File menu on Windows
    "CMD_EXIT"                            : "Kilépés",

    // Edit menu commands
    "EDIT_MENU"                           : "Szerkesztés",
    "CMD_UNDO"                            : "Visszavonás",
    "CMD_REDO"                            : "Újra",
    "CMD_CUT"                             : "Kivágás",
    "CMD_COPY"                            : "Másolás",
    "CMD_PASTE"                           : "Beillesztés",
    "CMD_SELECT_ALL"                      : "Összes kijelölése",
    "CMD_SELECT_LINE"                     : "Sor kijelölése",
    "CMD_FIND"                            : "Keres",
    "CMD_FIND_IN_FILES"                   : "Keresés a Fájlokban",
    "CMD_FIND_IN_SUBTREE"                 : "Keresés a\u2026",
    "CMD_FIND_NEXT"                       : "Következő találat",
    "CMD_FIND_PREVIOUS"                   : "Előző találat",
    "CMD_REPLACE"                         : "Csere",
    "CMD_INDENT"                          : "Behúzás",
    "CMD_UNINDENT"                        : "Behúzás visszavonása",
    "CMD_DUPLICATE"                       : "Duplikálás",
    "CMD_DELETE_LINES"                    : "Sor törlése",
    "CMD_COMMENT"                         : "Sor komment bekapcsolása",
    "CMD_BLOCK_COMMENT"                   : "Blokk komment bekapcsolása",
    "CMD_LINE_UP"                         : "Sor Mozgatása Fel",
    "CMD_LINE_DOWN"                       : "Sor Mozgatása le",
    "CMD_OPEN_LINE_ABOVE"                 : "Sor Nyitása Felül",
    "CMD_OPEN_LINE_BELOW"                 : "Sor Nyitása Alul",
    "CMD_TOGGLE_CLOSE_BRACKETS"           : "Zárójelek Automatikus Bezárása",
    "CMD_SHOW_CODE_HINTS"                 : "Kód Súgó megjelenítése",

    // View menu commands
    "VIEW_MENU"                           : "Nézet",
    "CMD_HIDE_SIDEBAR"                    : "Oldalsáv Elrejtése",
    "CMD_SHOW_SIDEBAR"                    : "Oldalsáv Mutatása",
    "CMD_INCREASE_FONT_SIZE"              : "Font Méretének Nagyítása",
    "CMD_DECREASE_FONT_SIZE"              : "Font Méretének Kicsinyítése",
    "CMD_RESTORE_FONT_SIZE"               : "Font Méretének Visszaállítása",
    "CMD_SCROLL_LINE_UP"                  : "Sor Lapozása Felfele",
    "CMD_SCROLL_LINE_DOWN"                : "Sor Lapozása Lefele",
    "CMD_TOGGLE_LINE_NUMBERS"             : "Sorok száma",
    "CMD_TOGGLE_ACTIVE_LINE"              : "Aktív sor megjelölése",
    "CMD_TOGGLE_WORD_WRAP"                : "Sortörés",
    "CMD_WORKINGSET_SORT_BY_ADDED"        : "Rendezés Hozzáadás Szerint",
    "CMD_WORKINGSET_SORT_BY_NAME"         : "Rendezés Név Szerint",
    "CMD_WORKINGSET_SORT_BY_TYPE"         : "Rendezés Típus Szerint",
    "CMD_WORKING_SORT_TOGGLE_AUTO"        : "Automatikus Rendezés",

    // Navigate menu Commands
    "NAVIGATE_MENU"                       : "Navigálás",
    "CMD_QUICK_OPEN"                      : "Gyors megnyitás",
    "CMD_GOTO_LINE"                       : "Ugrás Sorhoz",
    "CMD_GOTO_DEFINITION"                 : "Gyors Definíció keresés",
    "CMD_TOGGLE_QUICK_EDIT"               : "Gyors Szerkesztés",
    "CMD_TOGGLE_QUICK_DOCS"               : "Gyors Dokumentáció",
    "CMD_QUICK_EDIT_PREV_MATCH"           : "Előző Találat",
    "CMD_QUICK_EDIT_NEXT_MATCH"           : "Következő Találat",
    "CMD_NEXT_DOC"                        : "Következő Dokumentum",
    "CMD_PREV_DOC"                        : "Előző Dokumentum",
    "CMD_SHOW_IN_TREE"                    : "Megjelenítés a Fastruktúrában",
    "CMD_SHOW_IN_OS"                      : "Megjelenítés Intézőben",

    // Help menu commands
    "HELP_MENU"                           : "Súgó",
    "CMD_CHECK_FOR_UPDATE"                : "Frissítések keresése",
    "CMD_HOW_TO_USE_BRACKETS"             : "{APP_NAME} használata",
    "CMD_RELEASE_NOTES"                   : "Kiadási megjegyzések",
    "CMD_SHOW_EXTENSIONS_FOLDER"          : "Bővítmények mappa megjelenítése",
    "CMD_TWITTER"                         : "{TWITTER_NAME} a Twitter-en",
    "CMD_ABOUT"                           : "A {APP_TITLE}-ről",

    // Strings for main-view.html
    "EXPERIMENTAL_BUILD"                   : "kísérleti verzió",
    "DEVELOPMENT_BUILD"                    : "fejlesztési verzió",
    "OK"                                   : "OK",
    "DONT_SAVE"                            : "Ne Mentse",
    "SAVE"                                 : "Mentés",
    "CANCEL"                               : "Mégse",
    "RELOAD_FROM_DISK"                     : "Újratöltés a lemezről",
    "KEEP_CHANGES_IN_EDITOR"               : "Változtatások megtartása a szerkesztőben",
    "CLOSE_DONT_SAVE"                      : "Bezárás (Ne Mentse)",
    "RELAUNCH_CHROME"                      : "Chrome Újraindítása",
    "ABOUT"                                : "Rólunk",
    "CLOSE"                                : "Bezárás",
    "ABOUT_TEXT_LINE1"                     : "sprint {VERSION_MINOR} {BUILD_TYPE} {VERSION}",
    "ABOUT_TEXT_LINE3"                     : "Harmadik féltől származó szoftverekre vonatkozó közlemények, felhasználási feltételek megtalálhatók a következő linken {ADOBE_THIRD_PARTY}.",
    "ABOUT_TEXT_LINE4"                     : "Documentation and source at https://github.com/adobe/brackets/",
    "ABOUT_TEXT_LINE5"                     : "Készítve \u2764 és JavaScript-el a következők által:",
    "ABOUT_TEXT_LINE6"                     : "Sok ember (de ezt az adatot nem tudjuk megjeleníteni jelenleg).",
    "ABOUT_TEXT_WEB_PLATFORM_DOCS"         : "A Web Platform Dokumentáció és a  Web Platform grafikai logó a Creative Commons Attribution license alatt vannak licencelve, CC-BY 3.0 Unported.",
    "UPDATE_NOTIFICATION_TOOLTIP"          : "Új {APP_NAME} verzió elérhető! Kattints ide a részletekért.",
    "UPDATE_AVAILABLE_TITLE"               : "Új verzió elérhető",
    "UPDATE_MESSAGE"                       : "Hé, új {APP_NAME} verzió elérhető. Íme néhány kulcsfontosságú frissítés:",
    "GET_IT_NOW"                           : "Szerezd meg most!",
    "PROJECT_SETTINGS_TITLE"               : "Projekt Beállítások a következőhöz: {0}",
    "PROJECT_SETTING_BASE_URL"             : "Élő Előnézet alap URL",
    "PROJECT_SETTING_BASE_URL_HINT"        : "Helyi szerver használatához, írd be a címet pl.: http://localhost:8000/",
    "BASEURL_ERROR_INVALID_PROTOCOL"       : "A {0} protokol nem támogatott az Élő Előnézetben—kérlek használj http:-t vagy https:-t.",
    "BASEURL_ERROR_SEARCH_DISALLOWED"      : "Az alap URL nem tartalmazhat paramétereket mint: \"{0}\".",
    "BASEURL_ERROR_HASH_DISALLOWED"        : "Az alap URL nem tartalmazhat hash-okat mint: \"{0}\".",
    "BASEURL_ERROR_INVALID_CHAR"           : "Speciális karakterek mint: '{0}' muszáj enkódolni %-be.",
    "BASEURL_ERROR_UNKNOWN_ERROR"          : "Ismeretlen hiba az alap URL beolvasásakor",

    // Extension Management strings
    "INSTALL"                              : "Telepítés",
    "REMOVE"                               : "Eltávolítás",
    "OVERWRITE"                            : "Felülírás",
    "CANT_REMOVE_DEV"                      : "Bővítmények a \"dev\" mappában csak manuálisan távolíthatóak el.",
    "INSTALL_EXTENSION_TITLE"              : "Bővítmény telepítése",
    "INSTALL_EXTENSION_LABEL"              : "Bővítmény URL",
    "INSTALL_EXTENSION_HINT"               : "A Bővítmény GitHub repo-jának ZIP URL-je",
    "INSTALLING_FROM"                      : "Bővítmény telepítése: {0}\u2026",
    "INSTALL_SUCCEEDED"                    : "Sikeres telepítés!",
    "INSTALL_FAILED"                       : "Sikertelen telepítés.",
    "CANCELING_INSTALL"                    : "Telepítés lemondása\u2026",
    "CANCELING_HUNG"                       : "A Telepítés lemondása sokáig tart. Lehetséges hogy belső hiba történt.",
    "INSTALL_CANCELED"                     : "Telepítés lemondva.",
    // These must match the error codes in ExtensionsDomain.Errors.* :
    "INVALID_ZIP_FILE"                     : "A letöltött tartalom nem érvényes ZIP fájl.",
    "INVALID_PACKAGE_JSON"                 : "A package.json fájl nem érvényes (hiba: {0}).",
    "MISSING_PACKAGE_NAME"                 : "A package.json fájl nem határoz meg csomagnevet.",
    "BAD_PACKAGE_NAME"                     : "A {0} nem érvényes csomagnév.",
    "MISSING_PACKAGE_VERSION"              : "A package.json fájl nem határoz meg csomagverziót.",
    "INVALID_VERSION_NUMBER"               : "A csomagverzió ({0}) nem érvényes.",
    "INVALID_BRACKETS_VERSION"             : "A {APP_NAME} kompatibilitási sor ({0}) nem érvényes.",
    "DISALLOWED_WORDS"                     : "A ({1}) szavak nem engedélyezettek a {0} mezőben.",
    "API_NOT_COMPATIBLE"                   : "A Bővítmény nem kompatibilis a jelenlegi {APP_NAME} verzióval. A letiltott bővítmények közé lett telepítve.",
    "MISSING_MAIN"                         : "A csomag nem tartalmaz main.js fájlt.",
    "EXTENSION_ALREADY_INSTALLED"          : "A csomag telepítésével felülíródik egy előzőleg telepített bővítmény. Folytatod?",
    "EXTENSION_SAME_VERSION"               : "A csomag verziója megegyezik a jelenleg telepítettével. Felülírod?",
    "EXTENSION_OLDER_VERSION"              : "A csomag verziója {0} ami régebbi mint a jelenlegi ({1}). Felülírod a jelenlegit?",
    "DOWNLOAD_ID_IN_USE"                   : "Belső hiba: letöltő ID már használatban van.",
    "NO_SERVER_RESPONSE"                   : "Nem lehet csatlakozni a szerverhez.",
    "BAD_HTTP_STATUS"                      : "A fájl nem található a szerveren (HTTP {0}).",
    "CANNOT_WRITE_TEMP"                    : "Nem lehet ideiglenes fájlba menteni a letöltést.",
    "ERROR_LOADING"                        : "A bővítmény hibába ütközött indításkor.",
    "MALFORMED_URL"                        : "Az URL helytelen. Nézd meg hogy jól írtad be.",
    "UNSUPPORTED_PROTOCOL"                 : "Az URL muszáj http vagy https URL legyen.",
    "UNKNOWN_ERROR"                        : "Ismeretlen belső hiba.",
    // For NOT_FOUND_ERR, see generic strings above
    "EXTENSION_MANAGER_TITLE"              : "Bővítménykezelő",
    "EXTENSION_MANAGER_ERROR_LOAD"         : "Nem lehet elérni a bővítmény adatbázist. Kérlek próbáld meg később.",
    "INSTALL_FROM_URL"                     : "Telepítés URL-ről\u2026",
    "EXTENSION_AUTHOR"                     : "Szerző",
    "EXTENSION_DATE"                       : "Dátum",
    "EXTENSION_INCOMPATIBLE_NEWER"         : "Ez a bővítmény csak a {APP_NAME} újabb verziójához jó.",
    "EXTENSION_INCOMPATIBLE_OLDER"         : "Ez a bővítmény csak a {APP_NAME} régebbi verziójához jó",
    "EXTENSION_NO_DESCRIPTION"             : "Nincs leírás",
    "EXTENSION_MORE_INFO"                  : "További infó...",
    "EXTENSION_ERROR"                      : "Bővítmény hiba",
    "EXTENSION_KEYWORDS"                   : "Kulcsszavak",
    "EXTENSION_INSTALLED"                  : "Telepítve",
    "EXTENSION_UPDATE_INSTALLED"           : "A bővítményfrissítés letöltve és telepítve lessz amikor kilépsz a {APP_NAME}-ből.",
    "EXTENSION_SEARCH_PLACEHOLDER"         : "Keresés",
    "EXTENSION_MORE_INFO_LINK"             : "Több",
    "BROWSE_EXTENSIONS"                    : "Bővítmények tallózása",
    "EXTENSION_MANAGER_REMOVE"             : "Bővítmény Eltávolítása",
    "EXTENSION_MANAGER_REMOVE_ERROR"       : "Nem lehet eltávolítani egy vagy több bővítményt: {0}. A {APP_NAME} ki fog lépni.",
    "EXTENSION_MANAGER_UPDATE"             : "Bővítmény frissítése",
    "EXTENSION_MANAGER_UPDATE_ERROR"       : "Nem lehet frissíteni egy vagy több bővítményt: {0}. A {APP_NAME} ki fog lépni.",
    "MARKED_FOR_REMOVAL"                   : "Eltávolításhoz megjelölve",
    "UNDO_REMOVE"                          : "Mégsem",
    "MARKED_FOR_UPDATE"                    : "Frissítéshez megjelölve",
    "UNDO_UPDATE"                          : "Mégsem",
    "EXTENSION_NOT_INSTALLED"              : "A {0} bővítményt nem lehet eltávolítani, mert nincs telepítve.",
    "NO_EXTENSIONS"                        : "Nincs még telepített bővítmény.
Kattints a Telepítés URL-ről gombra a kezdéshez.",
    "NO_EXTENSION_MATCHES"                 : "Nincs bővítmény a keresett szavakra.",

    /**
     * Unit names
     */

    "UNIT_PIXELS"                          : "pixelek",

    // extensions/default/DebugCommands
    "DEBUG_MENU"                                : "Hibakeresés",
    "CMD_SHOW_DEV_TOOLS"                        : "Fejlesztői Eszközök megjelenítése",
    "CMD_REFRESH_WINDOW"                        : "A {APP_NAME} újratöltése",
    "CMD_NEW_BRACKETS_WINDOW"                   : "Új {APP_NAME} Ablak",
    "CMD_SWITCH_LANGUAGE"                       : "Nyelv változtatása",
    "CMD_RUN_UNIT_TESTS"                        : "Tesztek Futtatása",
    "CMD_SHOW_PERF_DATA"                        : "Teljesítmény adatok megjelenítése",
    "CMD_ENABLE_NODE_DEBUGGER"                  : "Node Hibakereső engedélyezése",
    "CMD_LOG_NODE_STATE"                        : "Node naplózása a konzolban",
    "CMD_RESTART_NODE"                          : "Node újraindítása",

    "LANGUAGE_TITLE"                            : "Nyelv változtatása",
    "LANGUAGE_MESSAGE"                          : "Nyelv:",
    "LANGUAGE_SUBMIT"                           : "{APP_NAME} újratöltése",
    "LANGUAGE_CANCEL"                           : "Mégsem",
    "LANGUAGE_SYSTEM_DEFAULT"                   : "Rendszer Alapértelmezett",

    // extensions/default/InlineColorEditor
    "COLOR_EDITOR_CURRENT_COLOR_SWATCH_TIP"     : "Jelenlegi szín",
    "COLOR_EDITOR_ORIGINAL_COLOR_SWATCH_TIP"    : "Eredeti szín",
    "COLOR_EDITOR_RGBA_BUTTON_TIP"              : "RGBa Formátum",
    "COLOR_EDITOR_HEX_BUTTON_TIP"               : "Hex Formátum",
    "COLOR_EDITOR_HSLA_BUTTON_TIP"              : "HSLa Formátum",
    "COLOR_EDITOR_USED_COLOR_TIP_SINGULAR"      : "{0} ({1}-szer használva)",
    "COLOR_EDITOR_USED_COLOR_TIP_PLURAL"        : "{0} ({1}-szer használva)",

    // extensions/default/JavaScriptCodeHints
    "CMD_JUMPTO_DEFINITION"                     : "Ugrás a Definícióhoz",

    // extensions/default/QuickView
    "CMD_ENABLE_QUICK_VIEW"                     : "Gyors Nézet rámutatáskor",

    // extensions/default/WebPlatformDocs
    "DOCS_MORE_LINK"                            : "Olvasd tovább"
});


// normalize the arguments to something that we can display to the user

// NOTE: we need both the div and the popover's _previewCSS member

//          (used by unit tests) to match so normalize the css for both

var startPos = {line: pos.line, ch: match.index},

endPos = {line: pos.line, ch: match.index + match[0].length},

keep keep keep keep replace keep keep keep keep

/*
 * Tests to verify we're reading in signed integers correctly
 */
var mod_ctype = require('../../../ctio.js');
var ASSERT = require('assert');

/*
 * Test 8 bit signed integers
 */
function test8()
{
	var data = new Buffer(4);

	data[0] = 0x23;
	ASSERT.equal(0x23, mod_ctype.rsint8(data, 'big', 0));
	ASSERT.equal(0x23, mod_ctype.rsint8(data, 'little', 0));

	data[0] = 0xff;
	ASSERT.equal(-1, mod_ctype.rsint8(data, 'big', 0));
	ASSERT.equal(-1, mod_ctype.rsint8(data, 'little', 0));

	data[0] = 0x87;
	data[1] = 0xab;
	data[2] = 0x7c;
	data[3] = 0xef;
	ASSERT.equal(-121, mod_ctype.rsint8(data, 'big', 0));
	ASSERT.equal(-85, mod_ctype.rsint8(data, 'big', 1));
	ASSERT.equal(124, mod_ctype.rsint8(data, 'big', 2));
	ASSERT.equal(-17, mod_ctype.rsint8(data, 'big', 3));
	ASSERT.equal(-121, mod_ctype.rsint8(data, 'little', 0));
	ASSERT.equal(-85, mod_ctype.rsint8(data, 'little', 1));
	ASSERT.equal(124, mod_ctype.rsint8(data, 'little', 2));
	ASSERT.equal(-17, mod_ctype.rsint8(data, 'little', 3));
}

function test16()
{
	var buffer = new Buffer(6);
	buffer[0] = 0x16;
	buffer[1] = 0x79;
	ASSERT.equal(0x1679, mod_ctype.rsint16(buffer, 'big', 0));
	ASSERT.equal(0x7916, mod_ctype.rsint16(buffer, 'little', 0));

	buffer[0] = 0xff;
	buffer[1] = 0x80;
	ASSERT.equal(-128, mod_ctype.rsint16(buffer, 'big', 0));
	ASSERT.equal(-32513, mod_ctype.rsint16(buffer, 'little', 0));

	/* test offset with weenix */
	buffer[0] = 0x77;
	buffer[1] = 0x65;
	buffer[2] = 0x65;
	buffer[3] = 0x6e;
	buffer[4] = 0x69;
	buffer[5] = 0x78;
	ASSERT.equal(0x7765, mod_ctype.rsint16(buffer, 'big', 0));
	ASSERT.equal(0x6565, mod_ctype.rsint16(buffer, 'big', 1));
	ASSERT.equal(0x656e, mod_ctype.rsint16(buffer, 'big', 2));
	ASSERT.equal(0x6e69, mod_ctype.rsint16(buffer, 'big', 3));
	ASSERT.equal(0x6978, mod_ctype.rsint16(buffer, 'big', 4));
	ASSERT.equal(0x6577, mod_ctype.rsint16(buffer, 'little', 0));
	ASSERT.equal(0x6565, mod_ctype.rsint16(buffer, 'little', 1));
	ASSERT.equal(0x6e65, mod_ctype.rsint16(buffer, 'little', 2));
	ASSERT.equal(0x696e, mod_ctype.rsint16(buffer, 'little', 3));
	ASSERT.equal(0x7869, mod_ctype.rsint16(buffer, 'little', 4));
}

function test32()
{
	var buffer = new Buffer(6);
	buffer[0] = 0x43;
	buffer[1] = 0x53;
	buffer[2] = 0x16;
	buffer[3] = 0x79;
	ASSERT.equal(0x43531679, mod_ctype.rsint32(buffer, 'big', 0));
	ASSERT.equal(0x79165343, mod_ctype.rsint32(buffer, 'little', 0));

	buffer[0] = 0xff;
	buffer[1] = 0xfe;
	buffer[2] = 0xef;
	buffer[3] = 0xfa;
	ASSERT.equal(-69638, mod_ctype.rsint32(buffer, 'big', 0));
	ASSERT.equal(-84934913, mod_ctype.rsint32(buffer, 'little', 0));

	buffer[0] = 0x42;
	buffer[1] = 0xc3;
	buffer[2] = 0x95;
	buffer[3] = 0xa9;
	buffer[4] = 0x36;
	buffer[5] = 0x17;
	ASSERT.equal(0x42c395a9, mod_ctype.rsint32(buffer, 'big', 0));
	ASSERT.equal(-1013601994, mod_ctype.rsint32(buffer, 'big', 1));
	ASSERT.equal(-1784072681, mod_ctype.rsint32(buffer, 'big', 2));
	ASSERT.equal(-1449802942, mod_ctype.rsint32(buffer, 'little', 0));
	ASSERT.equal(917083587, mod_ctype.rsint32(buffer, 'little', 1));
	ASSERT.equal(389458325, mod_ctype.rsint32(buffer, 'little', 2));
}

test8();
test16();
test32();


/* Icelandic initialisation for the jQuery UI date picker plugin. */
/* Written by Haukur H. Thorsson (haukur@eskill.is). */
jQuery(function($){
	$.datepicker.regional['is'] = {
		closeText: 'Loka',
		prevText: '< Fyrri',
		nextText: 'Næsti >',
		currentText: 'Í dag',
		monthNames: ['Janúar','Febrúar','Mars','Apríl','Ma&iacute','Júní',
		'Júlí','Ágúst','September','Október','Nóvember','Desember'],
		monthNamesShort: ['Jan','Feb','Mar','Apr','Maí','Jún',
		'Júl','Ágú','Sep','Okt','Nóv','Des'],
		dayNames: ['Sunnudagur','Mánudagur','Þriðjudagur','Miðvikudagur','Fimmtudagur','Föstudagur','Laugardagur'],
		dayNamesShort: ['Sun','Mán','Þri','Mið','Fim','Fös','Lau'],
		dayNamesMin: ['Su','Má','Þr','Mi','Fi','Fö','La'],
		weekHeader: 'Vika',
		dateFormat: 'dd/mm/yy',
		firstDay: 0,
		isRTL: false,
		showMonthAfterYear: false,
		yearSuffix: ''};
	$.datepicker.setDefaults($.datepicker.regional['is']);
});


const name = creator.name = (inCurrent ? path.relative('../', process.cwd()) : input.folder).toLowerCase()

keep keep keep keep keep replace keep keep keep

<template>

      <StepWizard
        :title="$t('org.vue.views.project-create.title')"
        class="frame"
      >
        <template slot-scope="{ next, previous }">
          <VueTab
            id="details"
            class="details"
            :label="$t('org.vue.views.project-create.tabs.details.title')"
            icon="subject"
          >

                <VueFormField
                  :title="$t('org.vue.views.project-create.tabs.details.form.folder.label')"
                >
                  <VueInput
                    v-model="formData.folder"
                    :placeholder="$t('org.vue.views.project-create.tabs.details.form.folder.placeholder')"
                    icon-left="folder"
                    class="big app-name"
                  />

                          {{ cwd | folder(42 - formData.folder.length) }}

                        {{ formData.folder }}

                      <VueButton
                        icon-left="edit"
                        class="icon-button change-folder"
                        v-tooltip="$t('org.vue.views.project-create.tabs.details.form.folder.tooltip')"
                        :to="{
                          name: 'project-select',
                          query: {
                            tab: 'create',
                            hideTabs: true
                          }
                        }"
                      />

                      <VueIcon icon="error" class="big"/>
                      {{ $t('org.vue.views.project-create.tabs.details.form.folder.folder-name-invalid') }}

                    <ApolloQuery
                      v-if="formData.folder"
                      :query="require('@/graphql/folder/folderExists.gql')"
                      :variables="{
                        file: `${cwd}/${formData.folder}`
                      }"
                      fetch-policy="no-cache"
                    >

                        <VueIcon icon="warning" class="big"/>
                        {{ $t('org.vue.views.project-create.tabs.details.form.folder.folder-exists') }}

                    </ApolloQuery>

                </VueFormField>

                <VueFormField
                  :title="$t('org.vue.views.project-create.tabs.details.form.manager.label')"
                >
                  <VueSelect
                    v-model="formData.packageManager"
                  >
                    <VueSelectButton
                      :value="undefined"
                      :label="$t('org.vue.views.project-create.tabs.details.form.manager.default')"
                    />
                    <VueSelectButton
                      value="npm"
                      label="npm"
                    />
                    <VueSelectButton
                      value="yarn"
                      label="yarn"
                    />
                    <VueSelectButton
                      value="pnpm"
                      label="pnpm"
                    />
                  </VueSelect>
                </VueFormField>

                <VueFormField
                  :title="$t('org.vue.views.project-create.tabs.details.form.options.label')"
                >
                  <VueSwitch
                    v-model="formData.force"
                    class="extend-left force"
                  >
                    {{ $t('org.vue.views.project-create.tabs.details.form.options.force') }}
                  </VueSwitch>

                  <VueSwitch
                    v-model="formData.bare"
                    class="extend-left bare"
                  >
                    {{ $t('org.vue.views.project-create.tabs.details.form.options.bare') }}
                  </VueSwitch>
                </VueFormField>

                <VueFormField
                  :title="$t('org.vue.views.project-create.tabs.details.form.options.git-title')"
                >
                  <VueSwitch
                    v-model="formData.enableGit"
                    class="extend-left git"
                  >
                    {{ $t('org.vue.views.project-create.tabs.details.form.options.git') }}
                  </VueSwitch>
                  <VueInput
                    v-model="formData.gitCommitMessage"
                    v-show="formData.enableGit"
                    :placeholder="$t('org.vue.views.project-create.tabs.details.form.options.git-commit-message')"
                  />
                </VueFormField>

              <VueButton
                icon-left="close"
                :label="$t('org.vue.views.project-create.tabs.details.buttons.cancel')"
                class="big close"
                @click="showCancel = true"
              />

              <VueButton
                icon-right="arrow_forward"
                :label="$t('org.vue.views.project-create.tabs.details.buttons.next')"
                class="big primary next"
                :disabled="!detailsValid"
                @click="next()"
              />

          </VueTab>

          <VueTab
            id="presets"
            class="presets"
            :label="$t('org.vue.views.project-create.tabs.presets.title')"
            icon="check_circle"
            :disabled="!detailsValid"
            lazy
          >

                <VueIcon icon="info" class="big"/>
                {{ $t('org.vue.views.project-create.tabs.presets.description') }}

                {{ $t('org.vue.views.project-create.tabs.presets.select') }}

              <template v-if="projectCreation">
                <ProjectPresetItem
                  v-for="preset of projectCreation.presets"
                  :key="preset.id"
                  :preset="preset"
                  :selected="formData.selectedPreset === preset.id"
                  @click.native="selectPreset(preset.id)"
                />
              </template>

              <ProjectPresetItem
                :preset="remotePresetInfo"
                :selected="formData.selectedPreset === '__remote__'"
                :description="formData.remotePreset.url"
                @click.native="selectPreset('__remote__')"
              />

              <VueButton
                icon-left="arrow_back"
                :label="$t('org.vue.views.project-create.tabs.presets.buttons.previous')"
                class="big previous"
                @click="previous()"
              />

              <VueButton
                v-if="manual"
                icon-right="arrow_forward"
                :label="$t('org.vue.views.project-create.tabs.presets.buttons.next')"
                class="big primary next"
                :disabled="!presetValid"
                @click="next()"
              />
              <VueButton
                v-else
                icon-left="done"
                :label="$t('org.vue.views.project-create.tabs.presets.buttons.create')"
                class="big primary next"
                :disabled="!formData.selectedPreset"
                @click="createWithoutSaving()"
              />

          </VueTab>

          <VueTab
            id="features"
            class="features"
            :label="$t('org.vue.views.project-create.tabs.features.title')"
            icon="device_hub"
            :disabled="!detailsValid || !presetValid || !manual"
            lazy
          >

                <VueIcon icon="info" class="big"/>
                {{ $t('org.vue.views.project-create.tabs.features.description') }}

                {{ $t('org.vue.views.project-create.tabs.features.enable') }}

              <template v-if="projectCreation">
                <ProjectFeatureItem
                  v-for="feature of projectCreation.features"
                  :key="feature.id"
                  :feature="feature"
                  @click.native="toggleFeature(feature)"
                />
              </template>

              <VueButton
                icon-left="arrow_back"
                :label="$t('org.vue.views.project-create.tabs.features.buttons.previous')"
                class="big previous"
                @click="previous()"
              />

              <VueButton
                v-if="visiblePrompts.length"
                icon-right="arrow_forward"
                :label="$t('org.vue.views.project-create.tabs.features.buttons.next')"
                class="big primary next"
                @click="next()"
              />
              <VueButton
                v-else
                icon-left="done"
                :label="$t('org.vue.views.project-create.tabs.features.buttons.create')"
                class="big primary next"
                @click="showSavePreset = true"
              />

          </VueTab>

          <VueTab
            id="config"
            class="config"
            :label="$t('org.vue.views.project-create.tabs.configuration.title')"
            icon="settings_applications"
            :disabled="!detailsValid || !presetValid || !manual || !visiblePrompts.length"
            lazy
          >

              <PromptsList
                :prompts="visiblePrompts"
                @answer="answerPrompt"
              />

              <VueButton
                icon-left="arrow_back"
                :label="$t('org.vue.views.project-create.tabs.configuration.buttons.previous')"
                class="big previous"
                @click="previous()"
              />

              <VueButton
                icon-left="done"
                :label="$t('org.vue.views.project-create.tabs.configuration.buttons.create')"
                class="big primary next"
                :disabled="!configurationValid"
                @click="showSavePreset = true"
              />

          </VueTab>
        </template>
      </StepWizard>

    <VueModal
      v-if="showRemotePreset"
      :title="$t('org.vue.views.project-create.tabs.presets.modal.title')"
      class="small remove-preset-modal"
      @close="closeRemotePresetModal()"
    >

        <VueFormField
          :title="$t('org.vue.views.project-create.tabs.presets.remote.url.title')"
          :subtitle="$t('org.vue.views.project-create.tabs.presets.remote.url.subtitle')"
        >
          <VueInput
            v-model="formData.remotePreset.url"
            icon-left="language"
            v-focus
          />
        </VueFormField>

        <VueFormField
          :title="$t('org.vue.views.project-create.tabs.presets.remote.options')"
        >
          <VueSwitch
            v-model="formData.remotePreset.clone"
            class="extend-left"
            :disabled="remoteNotGithub"
          >
            {{ $t('org.vue.views.project-create.tabs.presets.remote.clone') }}
          </VueSwitch>
        </VueFormField>

        <VueButton
          :label="$t('org.vue.views.project-create.tabs.presets.remote.cancel')"
          class="flat"
          @click="closeRemotePresetModal(true)"
        />

        <VueButton
          :label="$t('org.vue.views.project-create.tabs.presets.remote.done')"
          :disabled="!formData.remotePreset.url || !remotePresetValid"
          :loading-secondary="remotePresetValid === null"
          icon-left="done"
          class="primary"
          @click="closeRemotePresetModal()"
        />

    </VueModal>

    <VueModal
      v-if="showCancel"
      :title="$t('org.vue.views.project-create.tabs.details.modal.title')"
      class="small"
      @close="showCancel = false"
    >

        {{ $t('org.vue.views.project-create.tabs.details.modal.body') }}

        <VueButton
          :label="$t('org.vue.views.project-create.tabs.details.modal.buttons.back')"
          class="flat"
          @click="showCancel = false"
        />

        <VueButton
          :to="{ name: 'project-select' }"
          :label="$t('org.vue.views.project-create.tabs.details.modal.buttons.clear')"
          icon-left="delete_forever"
          class="danger"
        />

    </VueModal>

    <VueModal
      v-if="showSavePreset"
      :title="$t('org.vue.views.project-create.tabs.configuration.modal.title')"
      class="medium save-preset-modal"
      @close="showSavePreset = false"
    >

        <VueFormField
          :title="$t('org.vue.views.project-create.tabs.configuration.modal.body.title')"
          :subtitle="$t('org.vue.views.project-create.tabs.configuration.modal.body.subtitle')"
        >
          <VueInput
            v-model="formData.save"
            icon-left="local_offer"
            v-focus
          />
        </VueFormField>

        <VueButton
          :label="$t('org.vue.views.project-create.tabs.configuration.modal.buttons.cancel')"
          class="flat close"
          @click="showSavePreset = false"
        />

        <VueButton
          :label="$t('org.vue.views.project-create.tabs.configuration.modal.buttons.continue')"
          class="continue"
          @click="createWithoutSaving()"
        />

        <VueButton
          :label="$t('org.vue.views.project-create.tabs.configuration.modal.buttons.create')"
          icon-left="save"
          class="primary save"
          :disabled="!formData.save"
          @click="createProject()"
        />

    </VueModal>

    <ProgressScreen
      progress-id="project-create"
      :debug="debug"
    />

</template>


export function size (size, unit = '', precision = 1) {
  const kb = {
    label: 'k',
    value: 1024
  }
  const mb = {
    label: 'M',
    value: 1024 * 1024
  }
  let denominator

  if (size >= mb.value) {
    denominator = mb
  } else {
    denominator = kb
    if (size < kb.value * 0.92 && precision === 0) {
      precision = 1
    }
  }
  return (size / denominator.value).toFixed(precision) + denominator.label + unit
}

export function round (value, precision) {
  return Math.round(value * precision) / precision
}


fragment pluginActionResult on PluginActionResult {
  id
  params
  results
  errors
}


module.exports = {
  presets: ['@vue/app']
}


@vue/cli-ui

cross-env VUE_APP_CLI_UI_URL=ws://localhost:4030/graphql VUE_APP_GRAPHQL_PORT=4030 vue-cli-service serve

cross-env VUE_APP_CLI_UI_DEV=true VUE_APP_CLI_UI_DEBUG=true VUE_APP_GRAPHQL_PORT=4030 vue-cli-service apollo:dev

cross-env VUE_CLI_DEBUG=true yarn run apollo

cross-env VUE_CLI_PLUGIN_DEV=true VUE_CLI_IPC=vue-cli-dev vue-cli-service apollo:start

cross-env VUE_CLI_DEBUG=true VUE_CLI_UI_TEST=true VUE_APP_GRAPHQL_PORT=4040 VUE_APP_CLI_UI_URL=ws://localhost:4040/graphql VUE_CLI_IPC=vue-cli-test vue-cli-service apollo:dev --mode production

yarn run lint --no-fix && yarn run build

yarn run test:clear && start-server-and-test apollo:start:test http://localhost:4040/.well-known/apollo/server-health test:e2e:dev

yarn run test:clear && start-server-and-test apollo:start:test http://localhost:4040/.well-known/apollo/server-health test:e2e:start

cross-env VUE_APP_CLI_UI_URL=ws://localhost:4040/graphql vue-cli-service test:e2e --mode development

vue-cli-service test:e2e --mode production --browser chrome --headless --url=http://localhost:4040

rimraf ../../test/cli-ui-test && rimraf ./live-test

yarn run build && cd ../cli-ui-addon-webpack && yarn run build && cd ../cli-ui-addon-widgets && yarn run build && cd ../cli-ui && yarn run test:start

apollo-server dist locales src ui-defaults ui-public index.js server.js graphql-server.js


const path = require('path')

module.exports = function getAssetPath (options, filePath) {
  return options.assetsDir
    ? path.posix.join(options.assetsDir, filePath)
    : filePath
}


module.exports = function validateWebpackConfig (
  webpackConfig,
  api,
  options,
  target = 'app'
) {
  const singleConfig = Array.isArray(webpackConfig)
    ? webpackConfig[0]
    : webpackConfig

  const actualTargetDir = singleConfig.output.path

  if (actualTargetDir !== api.resolve(options.outputDir)) {
    // user directly modifies output.path in configureWebpack or chainWebpack.
    // this is not supported because there's no way for us to give copy
    // plugin the correct value this way.
    throw new Error(
      `\n\nConfiguration Error: ` +
      `Avoid modifying webpack output.path directly. ` +
      `Use the "outputDir" option instead.\n`
    )
  }

  if (actualTargetDir === api.service.context) {
    throw new Error(
      `\n\nConfiguration Error: ` +
      `Do not set output directory to project root.\n`
    )
  }

  if (target === 'app' && singleConfig.output.publicPath !== options.publicPath) {
    throw new Error(
      `\n\nConfiguration Error: ` +
      `Avoid modifying webpack output.publicPath directly. ` +
      `Use the "publicPath" option instead.\n`
    )
  }
}


keep keep keep keep keep replace keep keep keep keep


const transforms = require('./util/configTransforms')

class ConfigTransform {
  constructor (options) {
    this.fileDescriptor = options.file
  }

  transform (value, checkExisting, files, context) {
    let file
    if (checkExisting) {
      file = this.findFile(files)
    }
    if (!file) {
      file = this.getDefaultFile()
    }
    const { type, filename } = file

    const transform = transforms[type]

    let source
    let existing
    if (checkExisting) {
      source = files[filename]
      if (source) {
        existing = transform.read({
          source,
          filename,
          context
        })
      }
    }

    const content = transform.write({
      source,
      filename,
      context,
      value,
      existing
    })

    return {
      filename,
      content
    }
  }

  findFile (files) {
    for (const type of Object.keys(this.fileDescriptor)) {
      const descriptors = this.fileDescriptor[type]
      for (const filename of descriptors) {
        if (files[filename]) {
          return { type, filename }
        }
      }
    }
  }

  getDefaultFile () {
    const [type] = Object.keys(this.fileDescriptor)
    const [filename] = this.fileDescriptor[type]
    return { type, filename }
  }
}

module.exports = ConfigTransform


const { execSync } = require('child_process')
const fs = require('fs')
const path = require('path')
const LRU = require('lru-cache')
const semver = require('semver')

let _hasYarn
const _yarnProjects = new LRU({
  max: 10,
  maxAge: 1000
})
let _hasGit
const _gitProjects = new LRU({
  max: 10,
  maxAge: 1000
})

// env detection
exports.hasYarn = () => {
  if (process.env.VUE_CLI_TEST) {
    return true
  }
  if (_hasYarn != null) {
    return _hasYarn
  }
  try {
    execSync('yarn --version', { stdio: 'ignore' })
    return (_hasYarn = true)
  } catch (e) {
    return (_hasYarn = false)
  }
}

exports.hasProjectYarn = (cwd) => {
  if (_yarnProjects.has(cwd)) {
    return checkYarn(_yarnProjects.get(cwd))
  }

  const lockFile = path.join(cwd, 'yarn.lock')
  const result = fs.existsSync(lockFile)
  _yarnProjects.set(cwd, result)
  return checkYarn(result)
}

function checkYarn (result) {
  if (result && !exports.hasYarn()) throw new Error(`The project seems to require yarn but it's not installed.`)
  return result
}

exports.hasGit = () => {
  if (process.env.VUE_CLI_TEST) {
    return true
  }
  if (_hasGit != null) {
    return _hasGit
  }
  try {
    execSync('git --version', { stdio: 'ignore' })
    return (_hasGit = true)
  } catch (e) {
    return (_hasGit = false)
  }
}

exports.hasProjectGit = (cwd) => {
  if (_gitProjects.has(cwd)) {
    return _gitProjects.get(cwd)
  }

  let result
  try {
    execSync('git status', { stdio: 'ignore', cwd })
    result = true
  } catch (e) {
    result = false
  }
  _gitProjects.set(cwd, result)
  return result
}

let _hasPnpm
let _pnpmVersion
const _pnpmProjects = new LRU({
  max: 10,
  maxAge: 1000
})

function getPnpmVersion () {
  if (_pnpmVersion != null) {
    return _pnpmVersion
  }
  try {
    _pnpmVersion = execSync('pnpm --version', {
      stdio: ['pipe', 'pipe', 'ignore']
    }).toString()
    // there's a critical bug in pnpm 2
    // https://github.com/pnpm/pnpm/issues/1678#issuecomment-469981972
    // so we only support pnpm >= 3.0.0
    _hasPnpm = true
  } catch (e) {}
  return _pnpmVersion || '0.0.0'
}

exports.hasPnpmVersionOrLater = (version) => {
  if (process.env.VUE_CLI_TEST) {
    return true
  }
  return semver.gte(getPnpmVersion(), version)
}

exports.hasPnpm3OrLater = () => {
  return this.hasPnpmVersionOrLater('3.0.0')
}

exports.hasProjectPnpm = (cwd) => {
  if (_pnpmProjects.has(cwd)) {
    return checkPnpm(_pnpmProjects.get(cwd))
  }

  const lockFile = path.join(cwd, 'pnpm-lock.yaml')
  const result = fs.existsSync(lockFile)
  _pnpmProjects.set(cwd, result)
  return checkPnpm(result)
}

function checkPnpm (result) {
  if (result && !exports.hasPnpm3OrLater()) {
    throw new Error(`The project seems to require pnpm${_hasPnpm ? ' >= 3' : ''} but it's not installed.`)
  }
  return result
}

const _npmProjects = new LRU({
  max: 10,
  maxAge: 1000
})
exports.hasProjectNpm = (cwd) => {
  if (_npmProjects.has(cwd)) {
    return _npmProjects.get(cwd)
  }

  const lockFile = path.join(cwd, 'package-lock.json')
  const result = fs.existsSync(lockFile)
  _npmProjects.set(cwd, result)
  return result
}

// OS
exports.isWindows = process.platform === 'win32'
exports.isMacintosh = process.platform === 'darwin'
exports.isLinux = process.platform === 'linux'

const browsers = {}
let hasCheckedBrowsers = false

function tryRun (cmd) {
  try {
    return execSync(cmd, {
      stdio: [0, 'pipe', 'ignore'],
      timeout: 10000
    }).toString().trim()
  } catch (e) {
    return ''
  }
}

function getLinuxAppVersion (binary) {
  return tryRun(`${binary} --version`).replace(/^.* ([^ ]*)/g, '$1')
}

function getMacAppVersion (bundleIdentifier) {
  const bundlePath = tryRun(`mdfind "kMDItemCFBundleIdentifier=='${bundleIdentifier}'"`)

  if (bundlePath) {
    return tryRun(`/usr/libexec/PlistBuddy -c Print:CFBundleShortVersionString ${
      bundlePath.replace(/(\s)/g, '\\ ')
    }/Contents/Info.plist`)
  }
}

exports.getInstalledBrowsers = () => {
  if (hasCheckedBrowsers) {
    return browsers
  }
  hasCheckedBrowsers = true

  if (exports.isLinux) {
    browsers.chrome = getLinuxAppVersion('google-chrome')
    browsers.firefox = getLinuxAppVersion('firefox')
  } else if (exports.isMacintosh) {
    browsers.chrome = getMacAppVersion('com.google.Chrome')
    browsers.firefox = getMacAppVersion('org.mozilla.firefox')
  } else if (exports.isWindows) {
    // get chrome stable version
    // https://stackoverflow.com/a/51773107/2302258
    const chromeQueryResult = tryRun(
      'reg query "HKLM\\Software\\Google\\Update\\Clients\\{8A69D345-D564-463c-AFF1-A69D9E530F96}" /v pv /reg:32'
    ) || tryRun(
      'reg query "HKCU\\Software\\Google\\Update\\Clients\\{8A69D345-D564-463c-AFF1-A69D9E530F96}" /v pv /reg:32'
    )
    if (chromeQueryResult) {
      const matched = chromeQueryResult.match(/REG_SZ\s+(\S*)$/)
      browsers.chrome = matched && matched[1]
    }

    // get firefox version
    // https://community.spiceworks.com/topic/111518-how-to-determine-version-of-installed-firefox-in-windows-batchscript
    const ffQueryResult = tryRun(
      'reg query "HKLM\\Software\\Mozilla\\Mozilla Firefox" /v CurrentVersion'
    )
    if (ffQueryResult) {
      const matched = ffQueryResult.match(/REG_SZ\s+(\S*)$/)
      browsers.firefox = matched && matched[1]
    }
  }

  return browsers
}


import { isValidName } from '@/util/folders'

import PROJECT_CREATION from '@/graphql/project/projectCreation.gql'

import FEATURE_SET_ENABLED from '@/graphql/feature/featureSetEnabled.gql'

keep keep keep keep keep replace keep keep keep keep keep

import validateNpmPackageName from 'validate-npm-package-name'


// modified from vue-cli-plugin-apollo/graphql-server
// added a return value for the server() call

const http = require('http')
const { chalk } = require('@vue/cli-shared-utils')
const express = require('express')
const { ApolloServer, gql } = require('apollo-server-express')
const { PubSub } = require('graphql-subscriptions')
const merge = require('deepmerge')

function defaultValue (provided, value) {
  return provided == null ? value : provided
}

function autoCall (fn, ...context) {
  if (typeof fn === 'function') {
    return fn(...context)
  }
  return fn
}

module.exports = (options, cb = null) => {
  // Default options
  options = merge({
    integratedEngine: false
  }, options)

  // Express app
  const app = express()

  // Customize those files
  let typeDefs = load(options.paths.typeDefs)
  const resolvers = load(options.paths.resolvers)
  const context = load(options.paths.context)
  const schemaDirectives = load(options.paths.directives)
  let pubsub
  try {
    pubsub = load(options.paths.pubsub)
  } catch (e) {
    if (process.env.NODE_ENV !== 'production' && !options.quiet) {
      console.log(chalk.yellow('Using default PubSub implementation for subscriptions.'))
      console.log(chalk.grey('You should provide a different implementation in production (for example with Redis) by exporting it in \'apollo-server/pubsub.js\'.'))
    }
  }
  let dataSources
  try {
    dataSources = load(options.paths.dataSources)
  } catch (e) {}

  // GraphQL API Server

  // Realtime subscriptions
  if (!pubsub) pubsub = new PubSub()

  // Customize server
  try {
    const serverModule = load(options.paths.server)
    serverModule(app)
  } catch (e) {
    // No file found
  }

  // Apollo server options

  typeDefs = processSchema(typeDefs)

  let apolloServerOptions = {
    typeDefs,
    resolvers,
    schemaDirectives,
    dataSources,
    tracing: true,
    cacheControl: true,
    engine: !options.integratedEngine,
    // Resolvers context from POST
    context: async ({ req, connection }) => {
      let contextData
      try {
        if (connection) {
          contextData = await autoCall(context, { connection })
        } else {
          contextData = await autoCall(context, { req })
        }
      } catch (e) {
        console.error(e)
        throw e
      }
      contextData = Object.assign({}, contextData, { pubsub })
      return contextData
    },
    // Resolvers context from WebSocket
    subscriptions: {
      path: options.subscriptionsPath,
      onConnect: async (connection, websocket) => {
        let contextData = {}
        try {
          contextData = await autoCall(context, {
            connection,
            websocket
          })
          contextData = Object.assign({}, contextData, { pubsub })
        } catch (e) {
          console.error(e)
          throw e
        }
        return contextData
      }
    }
  }

  // Automatic mocking
  if (options.enableMocks) {
    // Customize this file
    apolloServerOptions.mocks = load(options.paths.mocks)
    apolloServerOptions.mockEntireSchema = false

    if (!options.quiet) {
      if (process.env.NODE_ENV === 'production') {
        console.warn('Automatic mocking is enabled, consider disabling it with the \'enableMocks\' option.')
      } else {
        console.log('✔  Automatic mocking is enabled')
      }
    }
  }

  // Apollo Engine
  if (options.enableEngine && options.integratedEngine) {
    if (options.engineKey) {
      apolloServerOptions.engine = {
        apiKey: options.engineKey,
        schemaTag: options.schemaTag,
        ...options.engineOptions || {}
      }
      console.log('✔  Apollo Engine is enabled')
    } else if (!options.quiet) {
      console.log(chalk.yellow('Apollo Engine key not found.') + `To enable Engine, set the ${chalk.cyan('VUE_APP_APOLLO_ENGINE_KEY')} env variable.`)
      console.log('Create a key at https://engine.apollographql.com/')
      console.log('You may see `Error: Must provide document` errors (query persisting tries).')
    }
  } else {
    apolloServerOptions.engine = false
  }

  // Final options
  apolloServerOptions = merge(apolloServerOptions, defaultValue(options.serverOptions, {}))

  // Apollo Server
  const server = new ApolloServer(apolloServerOptions)

  // Express middleware
  server.applyMiddleware({
    app,
    path: options.graphqlPath,
    cors: options.cors
    // gui: {
    //   endpoint: graphqlPath,
    //   subscriptionEndpoint: graphqlSubscriptionsPath,
    // },
  })

  // Start server
  const httpServer = http.createServer(app)
  httpServer.setTimeout(options.timeout)
  server.installSubscriptionHandlers(httpServer)

  httpServer.listen({
    host: options.host || 'localhost',
    port: options.port
  }, () => {
    if (!options.quiet) {
      console.log(`✔  GraphQL Server is running on ${chalk.cyan(`http://localhost:${options.port}${options.graphqlPath}`)}`)
      if (process.env.NODE_ENV !== 'production' && !process.env.VUE_CLI_API_MODE) {
        console.log(`✔  Type ${chalk.cyan('rs')} to restart the server`)
      }
    }

    cb && cb()
  })

  // added in order to let vue cli to deal with the http upgrade request
  return {
    apolloServer: server,
    httpServer
  }
}

function load (file) {
  const module = require(file)
  if (module.default) {
    return module.default
  }
  return module
}

function processSchema (typeDefs) {
  if (Array.isArray(typeDefs)) {
    return typeDefs.map(processSchema)
  }

  if (typeof typeDefs === 'string') {
    // Convert schema to AST
    typeDefs = gql(typeDefs)
  }

  // Remove upload scalar (it's already included in Apollo Server)
  removeFromSchema(typeDefs, 'ScalarTypeDefinition', 'Upload')

  return typeDefs
}

function removeFromSchema (document, kind, name) {
  const definitions = document.definitions
  const index = definitions.findIndex(
    def => def.kind === kind && def.name.kind === 'Name' && def.name.value === name
  )
  if (index !== -1) {
    definitions.splice(index, 1)
  }
}


exports.config = (api, preset, rootOptions = {}) => {
  const config = {
    root: true,
    env: { node: true },
    extends: ['plugin:vue/essential'],
    parserOptions: {
      ecmaVersion: 2020
    },
    rules: {
      'no-console': makeJSOnlyValue(`process.env.NODE_ENV === 'production' ? 'warn' : 'off'`),
      'no-debugger': makeJSOnlyValue(`process.env.NODE_ENV === 'production' ? 'warn' : 'off'`)
    }
  }

  if (api.hasPlugin('babel') && !api.hasPlugin('typescript')) {
    config.parserOptions = {
      parser: '@babel/eslint-parser'
    }
  }

  if (preset === 'airbnb') {
    config.extends.push('@vue/airbnb')
  } else if (preset === 'standard') {
    config.extends.push('@vue/standard')
  } else if (preset === 'prettier') {
    config.extends.push(...['eslint:recommended', '@vue/prettier'])
  } else {
    // default
    config.extends.push('eslint:recommended')
  }

  if (api.hasPlugin('typescript')) {
    // typically, typescript ruleset should be appended to the end of the `extends` array
    // but that is not the case for prettier, as there are conflicting rules
    if (preset === 'prettier') {
      config.extends.pop()
      config.extends.push(...['@vue/typescript/recommended', '@vue/prettier', '@vue/prettier/@typescript-eslint'])
    } else {
      config.extends.push('@vue/typescript/recommended')
    }
  }

  if (rootOptions.vueVersion === '3') {
    const updateConfig = cfg =>
      cfg.replace(
        /plugin:vue\/(essential|recommended|strongly-recommended)/gi,
        'plugin:vue/vue3-$1'
      )
    config.extends = config.extends.map(updateConfig)
  }

  return config
}

// __expression is a special flag that allows us to customize stringification
// output when extracting configs into standalone files
function makeJSOnlyValue (str) {
  const fn = () => {}
  fn.__expression = str
  return fn
}

const baseExtensions = ['.js', '.jsx', '.vue']
exports.extensions = api => api.hasPlugin('typescript')
  ? baseExtensions.concat('.ts', '.tsx')
  : baseExtensions


<template>

      <ProjectQuickDropdown/>

      <VueGroup
        v-model="currentViewName"
        class="vertical small-indicator left-indicator primary"
        indicator
      >
        <template v-for="view of views">
          <ViewNavButton
            v-if="hasProjectType(view)"
            :key="view.id"
            :view="view"
          />
        </template>
      </VueGroup>

      <ViewNavMore/>

</template>


# @vue/cli-plugin-pwa

> pwa plugin for vue-cli

The service worker added with this plugin is only enabled in the production environment (e.g. only if you run `npm run build` or `yarn build`). Enabling service worker in a development mode is not a recommended practice, because it can lead to the situation when previously cached assets are used and the latest local changes are not included.

Instead, in the development mode the `noopServiceWorker.js` is included. This service worker file is effectively a 'no-op' that will reset any previous service worker registered for the same host:port combination.

If you need to test a service worker locally, build the application and run a simple HTTP-server from your build directory. It's recommended to use a browser incognito window to avoid complications with your browser cache.

## Configuration

Configuration is handled via the `pwa` property of either the `vue.config.js`
file, or the `"vue"` field in `package.json`.

- **pwa.workboxPluginMode**

  This allows you to choose between the two modes supported by the underlying
  [`workbox-webpack-plugin`](https://developers.google.com/web/tools/workbox/modules/workbox-webpack-plugin).

  - `'GenerateSW'` (default), will lead to a new service worker file being created
  each time you rebuild your web app.

  - `'InjectManifest'` allows you to start with an existing service worker file,
  and creates a copy of that file with a "precache manifest" injected into it.

  The "[Which Plugin to Use?](https://developers.google.com/web/tools/workbox/modules/workbox-webpack-plugin#which_plugin_to_use)"
  guide can help you choose between the two modes.

- **pwa.workboxOptions**

  These options are passed on through to the underlying `workbox-webpack-plugin`.

  For more information on what values are supported, please see the guide for
  [`GenerateSW`](https://developers.google.com/web/tools/workbox/modules/workbox-webpack-plugin#full_generatesw_config)
  or for [`InjectManifest`](https://developers.google.com/web/tools/workbox/modules/workbox-webpack-plugin#full_injectmanifest_config).

- **pwa.name**

  - Default: "name" field in `package.json`

    Used as the value for the `apple-mobile-web-app-title` meta tag in the generated HTML. Note you will need to edit `public/manifest.json` to match this.

- **pwa.themeColor**

  - Default: `'#4DBA87'`

- **pwa.msTileColor**

  - Default: `'#000000'`

- **pwa.appleMobileWebAppCapable**

  - Default: `'no'`

    This defaults to `'no'` because iOS before 11.3 does not have proper PWA support. See [this article](https://medium.com/@firt/dont-use-ios-web-app-meta-tag-irresponsibly-in-your-progressive-web-apps-85d70f4438cb) for more details.

- **pwa.appleMobileWebAppStatusBarStyle**

  - Default: `'default'`

- **pwa.assetsVersion**

  - Default: `''`

    This option is used if you need to add a version to your icons and manifest, against browser’s cache. This will append `?v=<pwa.assetsVersion>` to the URLs of the icons and manifest.

- **pwa.manifestPath**

  - Default: `'manifest.json'`

    The path of app’s manifest. If the path is an URL, the plugin won't generate a manifest.json in the dist directory during the build.

- **pwa.manifestOptions**

  - Default: `{}`

    The object will be used to generate the `manifest.json`

    If the following attributes are not defined in the object, the options of `pwa` or default options will be used instead.
      - name: `pwa.name`
      - short_name: `pwa.name`
      - start_url: `'.'`
      - display: `'standalone'`
      - theme_color: `pwa.themeColor`

- **pwa.manifestCrossorigin**

  - Default: `undefined`

    Value for `crossorigin` attribute in manifest link tag in the generated HTML. You may need to set this if your PWA is behind an authenticated proxy. See [cross-origin values](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/link#attr-crossorigin) for more details.

- **pwa.iconPaths**

  - Defaults:

    ```js
    {
      faviconSVG: 'img/icons/favicon.svg',
      favicon32: 'img/icons/favicon-32x32.png',
      favicon16: 'img/icons/favicon-16x16.png',
      appleTouchIcon: 'img/icons/apple-touch-icon-152x152.png',
      maskIcon: 'img/icons/safari-pinned-tab.svg',
      msTileImage: 'img/icons/msapplication-icon-144x144.png'
    }
    ```

    Change these values to use different paths for your icons. As of v4.3.0, you can use `null` as a value and that icon will not be included.

### Example Configuration

```js
// Inside vue.config.js
module.exports = {
  // ...other vue-cli plugin options...
  pwa: {
    name: 'My App',
    themeColor: '#4DBA87',
    msTileColor: '#000000',
    appleMobileWebAppCapable: 'yes',
    appleMobileWebAppStatusBarStyle: 'black',

    // configure the workbox plugin
    workboxPluginMode: 'InjectManifest',
    workboxOptions: {
      // swSrc is required in InjectManifest mode.
      swSrc: 'dev/sw.js',
      // ...other Workbox options...
    }
  }
}
```

## Installing in an Already Created Project

``` sh
vue add pwa
```

## Injected webpack-chain Rules

- `config.plugin('workbox')`


<!DOCTYPE html>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>Vue App</title>


jest.setTimeout(40000)

const create = require('@vue/cli-test-utils/createTestProject')

test('jest', async () => {
  const project = await create('ts-unit-jest', {
    plugins: {
      '@vue/cli-plugin-typescript': {},
      '@vue/cli-plugin-unit-jest': {}
    }
  })
  await project.run(`vue-cli-service test:unit`)
})

test('jest w/ babel', async () => {
  const project = await create('ts-unit-jest-babel', {
    plugins: {
      '@vue/cli-plugin-typescript': {},
      '@vue/cli-plugin-babel': {},
      '@vue/cli-plugin-unit-jest': {}
    }
  })
  await project.run(`vue-cli-service test:unit`)
})


module.exports = {
  // GraphQL directives here
}


fragment promptChoice on PromptChoice {
  value
  name
  checked
  disabled
  isDefault
}