├── .github └── workflows │ └── release.yml ├── .gitignore ├── Quick-Kanban ├── dist │ └── index.html ├── index.html ├── package.json ├── src │ ├── App.vue │ ├── assets │ │ └── vue.svg │ ├── components │ │ ├── Assignments.vue │ │ ├── IndicatorPill.vue │ │ └── KanbanBoard │ │ │ ├── KanbanBoard.vue │ │ │ ├── KanbanCard.vue │ │ │ └── KanbanColumn.vue │ ├── main.js │ ├── style.css │ └── utils │ │ ├── colors.js │ │ └── store.js ├── vite.config.js └── yarn.lock ├── README.md ├── license.txt ├── package.json ├── pyproject.toml ├── quick_kanban ├── __init__.py ├── config │ └── __init__.py ├── get_beta _users.py ├── hooks.py ├── modules.txt ├── patches.txt ├── public │ ├── .gitkeep │ ├── css │ │ └── quick_kanban.bundle.css │ └── js │ │ ├── kanban_highlight.js │ │ ├── kanban_view.bundle.js │ │ └── quick_kanban.bundle.js ├── quick_kanban │ ├── __init__.py │ ├── custom │ │ └── kanban_board.json │ └── doctype │ │ ├── __init__.py │ │ └── kanban_board_highlight │ │ ├── __init__.py │ │ ├── kanban_board_highlight.json │ │ └── kanban_board_highlight.py ├── templates │ ├── __init__.py │ └── pages │ │ └── __init__.py └── www │ └── __init__.py └── yarn.lock /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: release 2 | 3 | on: 4 | push: 5 | branches: 6 | - "develop" 7 | - "BRANCH2" 8 | 9 | concurrency: 10 | group: ${{ github.workflow }}-${{ github.ref }} 11 | 12 | # https://github.com/marketplace/actions/skip-based-on-commit-message 13 | jobs: 14 | develop: 15 | if: | 16 | github.ref == 'refs/heads/develop' 17 | && contains(github.event.head_commit.message, '--BUILD') 18 | # https://github.com/orgs/community/discussions/25641 19 | name: Build and test STG 20 | runs-on: ubuntu-latest 21 | # https://stackoverflow.com/questions/71361539/github-action-test-if-a-commit-containing-a-specific-word-was-previously-made 22 | # https://docs.github.com/en/rest/actions/workflows?apiVersion=2022-11-28#create-a-workflow-dispatch-event 23 | steps: 24 | - name: Trigger build in another repository 25 | run: | 26 | curl -X POST \ 27 | -H "Accept: application/vnd.github+json" \ 28 | -H "Authorization: Bearer ${{ secrets.TRIDZ_TOKEN }}" \ 29 | https://api.github.com/repos/tridz-dev/visaguy_gitops/actions/workflows/release_on_dispatch_stg.yml/dispatches \ 30 | -d '{"ref":"main"}' 31 | 32 | BRANCH2: 33 | if: | 34 | github.ref == 'refs/heads/BRANCH2' 35 | && contains(github.event.head_commit.message, '--BUILD') 36 | name: Build and test 37 | runs-on: ubuntu-latest 38 | # https://stackoverflow.com/questions/71361539/github-action-test-if-a-commit-containing-a-specific-word-was-previously-made 39 | # https://docs.github.com/en/rest/actions/workflows?apiVersion=2022-11-28#create-a-workflow-dispatch-event 40 | steps: 41 | - name: Trigger build in another repository 42 | run: | 43 | curl -X POST \ 44 | -H "Accept: application/vnd.github+json" \ 45 | -H "Authorization: Bearer ${{ secrets.TRIDZ_TOKEN }}" \ 46 | https://api.github.com/repos/OWNER/REPO/actions/workflows/WORKFLOW.yml/dispatches \ 47 | -d '{"ref":"main"}' -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.pyc 3 | *.egg-info 4 | *.swp 5 | tags 6 | node_modules 7 | __pycache__ 8 | quick_kanban/public/dist 9 | Quick-Kanban/dist -------------------------------------------------------------------------------- /Quick-Kanban/dist/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | -------------------------------------------------------------------------------- /Quick-Kanban/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Quick-Kanban/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "quick_kanban", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "description": "An enhanced version of Kanban Board in frappe made with Vue", 7 | "license": "MIT", 8 | "scripts": { 9 | "dev": "vite", 10 | "build": "vite build && yarn copy-js", 11 | "preview": "vite preview", 12 | "watch": "./node_modules/.bin/chokidar './dist/assets/index*.js' './src/**/*' -c 'yarn build'", 13 | "copy-js": "cp ./dist/assets/index*.js ../quick_kanban/public/js/quick_kanban.bundle.js && cp ./dist/assets/index*.css ../quick_kanban/public/css/quick_kanban.bundle.css" 14 | }, 15 | "dependencies": { 16 | "vue": "^3.4.21", 17 | "vue-virtual-draglist": "^3.3.2", 18 | "vuex": "^4.0.2" 19 | }, 20 | "devDependencies": { 21 | "@vitejs/plugin-vue": "^5.0.4", 22 | "chokidar-cli": "^3.0.0", 23 | "vite": "^5.2.0" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /Quick-Kanban/src/App.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 8 | -------------------------------------------------------------------------------- /Quick-Kanban/src/assets/vue.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Quick-Kanban/src/components/Assignments.vue: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /Quick-Kanban/src/components/IndicatorPill.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 15 | -------------------------------------------------------------------------------- /Quick-Kanban/src/components/KanbanBoard/KanbanBoard.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 120 | -------------------------------------------------------------------------------- /Quick-Kanban/src/components/KanbanBoard/KanbanCard.vue: -------------------------------------------------------------------------------- 1 | 38 | -------------------------------------------------------------------------------- /Quick-Kanban/src/components/KanbanBoard/KanbanColumn.vue: -------------------------------------------------------------------------------- 1 | 100 | 101 | 144 | -------------------------------------------------------------------------------- /Quick-Kanban/src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import './style.css' 3 | import App from './App.vue' 4 | import store from './utils/store' 5 | 6 | window.frappe = frappe; 7 | 8 | const app = createApp(App) 9 | app.use(store); 10 | app.mount('#kanbanapp') -------------------------------------------------------------------------------- /Quick-Kanban/src/style.css: -------------------------------------------------------------------------------- 1 | /* Kanban Board */ 2 | [data-theme="dark"] { 3 | --kanban-column-gray: var(--gray-800); 4 | --kanban-column-red: #6b151580; 5 | --kanban-column-blue: #00488080; 6 | --kanban-column-light-blue: #0070cc80; 7 | --kanban-column-yellow: #733f1280; 8 | --kanban-column-purple: #40186380; 9 | --kanban-column-pink: #570f3e80; 10 | --kanban-column-green: #173b2c80; 11 | --kanban-column-orange: #6b271180; 12 | --kanban-column-cyan: #16475980; 13 | } 14 | 15 | [data-theme="light"] { 16 | --kanban-column-gray: var(--gray-200); 17 | --kanban-column-red: var(--red-200); 18 | --kanban-column-blue: var(--blue-200); 19 | --kanban-column-light-blue: var(--blue-100); 20 | --kanban-column-yellow: var(--yellow-100); 21 | --kanban-column-purple: var(--purple-200); 22 | --kanban-column-pink: var(--pink-200); 23 | --kanban-column-green: var(--green-200); 24 | --kanban-column-orange: var(--orange-200); 25 | --kanban-column-cyan: var(--cyan-100); 26 | } 27 | 28 | #kanbanapp { 29 | height: 80vh; 30 | } 31 | 32 | #kanbanapp .clickdrag-active { 33 | cursor: grabbing; 34 | } 35 | 36 | #kanbanapp .kanban { 37 | position: relative; 38 | display: flex; 39 | justify-content: flex-start; 40 | gap: 8px; 41 | overflow-x: auto; 42 | scrollbar-width: thin; 43 | height: 80vh; 44 | padding-bottom: 5px; 45 | } 46 | 47 | #kanbanapp .kanban-column { 48 | display: flex; 49 | flex-direction: column; 50 | gap: 8px; 51 | width: 250px; 52 | max-width: 350px; 53 | max-height: calc( 54 | 100vh - var(--navbar-height) - var(--page-bottom-margin) 55 | ) !important; 56 | border-radius: 12px; 57 | min-height: 70vh; 58 | } 59 | 60 | #kanbanapp .kanban-column-header { 61 | display: flex; 62 | justify-content: space-between; 63 | margin-bottom: 10px; 64 | } 65 | 66 | #kanbanapp .column-dropdown { 67 | max-height: 300px; 68 | overflow-y: auto; 69 | position: absolute; 70 | transform: translate3d(0px, 16px, 0px); 71 | top: 0px; 72 | left: 0px; 73 | will-change: transform; 74 | } 75 | 76 | #kanbanapp .column-title { 77 | color: inherit; 78 | font-size: medium; 79 | font-weight: 600; 80 | text-align: start; 81 | } 82 | 83 | #kanbanapp .indicator-pill { 84 | margin-right: 6px; 85 | } 86 | 87 | #kanbanapp .kanban-card { 88 | display: flex; 89 | position: relative; 90 | font-size: var(--text-md); 91 | gap: 2px; 92 | flex-direction: column; 93 | padding: 8px 12px 8px 12px; 94 | margin-bottom: 8px; 95 | background: var(--card-bg); 96 | color: var(--text-muted); 97 | border: 1px solid var(--border-color); 98 | border-radius: 8px !important; 99 | opacity: 1; 100 | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); 101 | cursor: grab; 102 | user-select: none; 103 | overflow-x: clip; 104 | } 105 | 106 | #kanbanapp .chosen-card { 107 | filter: contrast(0.9); 108 | } 109 | 110 | #kanbanapp .ghost-card { 111 | filter: contrast(1); 112 | } 113 | 114 | #kanbanapp .chosen-card .drag { 115 | opacity: 0.5; 116 | } 117 | 118 | #kanbanapp .ghost-card .drag { 119 | opacity: 1; 120 | } 121 | 122 | #kanbanapp .kanban-card-meta { 123 | display: flex; 124 | align-items: flex-start; 125 | justify-content: space-between; 126 | margin: 12px 0 5px; 127 | } 128 | 129 | #kanbanapp .card-title { 130 | font-weight: 600; 131 | text-align: start; 132 | margin-bottom: 7px; 133 | } 134 | 135 | #kanbanapp .addcard { 136 | display: flex; 137 | align-items: center; 138 | justify-content: center; 139 | margin-bottom: 4px; 140 | } 141 | 142 | #kanbanapp .addcard button { 143 | background-color: var(--card-bg); 144 | } 145 | 146 | #kanbanapp .header-item { 147 | display: flex; 148 | align-items: center; 149 | justify-content: center; 150 | padding: 5px; 151 | border-radius: 8px; 152 | cursor: pointer; 153 | } 154 | 155 | #kanbanapp .header-item:hover { 156 | background-color: #5b5f611c; 157 | } 158 | 159 | #kanbanapp .loadbtn { 160 | display: flex; 161 | justify-content: center; 162 | cursor: pointer; 163 | } 164 | -------------------------------------------------------------------------------- /Quick-Kanban/src/utils/colors.js: -------------------------------------------------------------------------------- 1 | export const indicators = [ 2 | { name: 'Blue', class: 'blue' }, 3 | { name: 'Cyan', class: 'cyan' }, 4 | { name: 'Gray', class: 'gray' }, 5 | { name: 'Green', class: 'green' }, 6 | { name: 'Light Blue', class: 'light-blue' }, 7 | { name: 'Orange', class: 'orange' }, 8 | { name: 'Pink', class: 'pink' }, 9 | { name: 'Purple', class: 'purple' }, 10 | { name: 'Red', class: 'red' }, 11 | { name: 'Yellow', class: 'yellow' } 12 | ]; 13 | -------------------------------------------------------------------------------- /Quick-Kanban/src/utils/store.js: -------------------------------------------------------------------------------- 1 | import { createStore } from 'vuex'; 2 | 3 | const store = createStore({ 4 | state: { 5 | columns: [], 6 | config: { 7 | board_name: '', 8 | ref_doctype: '', 9 | field_name: '', 10 | title_field: '', 11 | fields: [], 12 | highlighted_field: '', 13 | highlight_table: '', 14 | }, 15 | }, 16 | mutations: { 17 | SET_COLUMNS(state, columns) { 18 | if (state.columns.length === 0) { 19 | state.columns = columns; 20 | } else { 21 | columns.forEach((newColumn, index) => { 22 | if (state.columns[index]) { 23 | state.columns[index] = newColumn.cards 24 | ? newColumn 25 | : Object.assign(state.columns[index], ...Object.keys(newColumn).filter(key => key !== 'cards').map(key => ({ [key]: newColumn[key] }))); 26 | } else { 27 | state.columns.push(newColumn); 28 | } 29 | }); 30 | } 31 | state.columns = state.columns.filter(oldColumn => 32 | columns.some(newColumn => newColumn.name === oldColumn.name) 33 | ); 34 | }, 35 | MOVE_CARD(state, { fromColumn, toColumn, fromIndex, toIndex, card }) { 36 | state.columns[fromColumn].cards.splice(fromIndex, 1); 37 | if (toIndex !== null) { 38 | state.columns[toColumn].cards.splice(toIndex, 0, card); 39 | } else { 40 | state.columns[toColumn].cards.push(card); 41 | } 42 | }, 43 | UPDATE_COLUMN_INDICATOR(state, { columnIndex, indicator }) { 44 | state.columns[columnIndex].indicator = indicator; 45 | }, 46 | SET_KANBAN_CONFIG(state, config) { 47 | state.config = config; 48 | }, 49 | }, 50 | actions: { 51 | async fetchKanban({ commit, state }, { args }) { 52 | if (args === undefined) { 53 | args = window.cur_list.get_args(); 54 | } 55 | try { 56 | const response = await frappe.call({ 57 | method: 'frappe.desk.reportview.get', 58 | args: args, 59 | }); 60 | 61 | const board = response.message; 62 | if (board.length !== 0) { 63 | const columns = state.columns; 64 | const fieldIndex = board.keys.findIndex(key => key === state.config.field_name); 65 | const userInfoLookup = {}; 66 | Object.values(board.user_info).forEach((user) => { 67 | userInfoLookup[user.name] = user.fullname 68 | }); 69 | 70 | columns.forEach((column) => { 71 | column.cards = []; 72 | board.values.forEach((card) => { 73 | if (card[fieldIndex] === column.column_name) { 74 | const transformedCard = transformCard(board.keys, card, userInfoLookup); 75 | column.cards.push(transformedCard); 76 | } 77 | }); 78 | }); 79 | commit('SET_COLUMNS', columns); 80 | } 81 | } catch (error) { 82 | console.error('Error fetching columns:', error); 83 | } 84 | }, 85 | async fetchColumns({ commit }, { board_name }) { 86 | try { 87 | const response = await frappe.call({ 88 | method: 'frappe.client.get', 89 | args: { 90 | doctype: 'Kanban Board', 91 | name: board_name, 92 | }, 93 | }); 94 | 95 | const board = response.message; 96 | commit('SET_COLUMNS', board.columns); 97 | 98 | const ref_doctype = board.reference_doctype; 99 | const field_name = board.field_name; 100 | const highlighted_field = board.custom_highlighted_field 101 | const highlight_table = board.custom_highlight_table 102 | let fields = []; 103 | if (board.fields) { 104 | try { 105 | fields = JSON.parse(board.fields); 106 | } catch (e) { 107 | console.error("Error parsing fields:", e); 108 | } 109 | } else { 110 | fields = ['name', 'title']; 111 | } 112 | const meta = frappe.get_meta(ref_doctype); 113 | 114 | const config = { board_name, ref_doctype, field_name, title_field: meta.title_field, fields, highlighted_field, highlight_table } 115 | commit('SET_KANBAN_CONFIG', config); 116 | 117 | } catch (error) { 118 | console.error('Error fetching columns:', error); 119 | } 120 | }, 121 | async updateOrder({ commit, state }, { fromColumn, toColumn, fromIndex, toIndex, card }) { 122 | // console.log(fromColumn, toColumn, fromIndex, toIndex, card.title); 123 | // commit('MOVE_CARD', { fromColumn, toColumn, fromIndex, toIndex, card }) 124 | try { 125 | await frappe.call({ 126 | method: 'frappe.client.set_value', 127 | args: { 128 | doctype: state.config.ref_doctype, 129 | name: card.name, 130 | fieldname: state.config.field_name, 131 | value: state.columns[toColumn].column_name, 132 | }, 133 | // callback: function (r) { 134 | // console.log('Dropped', card.title, 'to', r.message[state.config.field_name]); 135 | // } 136 | }); 137 | } catch (error) { 138 | // commit('MOVE_CARD', { fromColumn: toColumn, toColumn: fromColumn, fromIndex: toIndex, toIndex: fromIndex, card }) 139 | console.error(error); 140 | } 141 | }, 142 | async setIndicator({ commit, state }, { indicator, columnIndex, board_name }) { 143 | try { 144 | await frappe.call({ 145 | method: 'frappe.desk.doctype.kanban_board.kanban_board.set_indicator', 146 | args: { 147 | board_name: board_name, 148 | column_name: state.columns[columnIndex].column_name, 149 | indicator: indicator, 150 | }, 151 | callback: function () { 152 | commit('UPDATE_COLUMN_INDICATOR', { columnIndex, indicator }); 153 | } 154 | }); 155 | } catch (error) { 156 | console.error(`Error updating indicator ${indicator}:`, error); 157 | } 158 | }, 159 | }, 160 | getters: { 161 | getColumns: state => state.columns, 162 | getConfig: state => state.config, 163 | }, 164 | }); 165 | 166 | function transformCard(keys, card, userInfoLookup) { 167 | try { 168 | const transformedCard = {}; 169 | keys.forEach((key, index) => { 170 | transformedCard[key] = card[index]; 171 | }); 172 | 173 | const transformedAssign = {}; 174 | if (transformedCard['_assign']) { 175 | const assignees = JSON.parse(transformedCard['_assign']); 176 | assignees.forEach((assignee) => { 177 | transformedAssign[assignee] = userInfoLookup[assignee]; 178 | }); 179 | 180 | } 181 | transformedCard['_assign'] = transformedAssign; 182 | return transformedCard; 183 | 184 | } catch (e) { 185 | console.error("Error parsing fields:", e); 186 | } 187 | } 188 | 189 | export default store; -------------------------------------------------------------------------------- /Quick-Kanban/vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import vue from '@vitejs/plugin-vue' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [vue()], 7 | }) 8 | -------------------------------------------------------------------------------- /Quick-Kanban/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/parser@^7.24.4": 6 | version "7.24.7" 7 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.7.tgz#9a5226f92f0c5c8ead550b750f5608e766c8ce85" 8 | integrity sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw== 9 | 10 | "@esbuild/aix-ppc64@0.20.2": 11 | version "0.20.2" 12 | resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.20.2.tgz#a70f4ac11c6a1dfc18b8bbb13284155d933b9537" 13 | integrity sha512-D+EBOJHXdNZcLJRBkhENNG8Wji2kgc9AZ9KiPr1JuZjsNtyHzrsfLRrY0tk2H2aoFu6RANO1y1iPPUCDYWkb5g== 14 | 15 | "@esbuild/android-arm64@0.20.2": 16 | version "0.20.2" 17 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz#db1c9202a5bc92ea04c7b6840f1bbe09ebf9e6b9" 18 | integrity sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg== 19 | 20 | "@esbuild/android-arm@0.20.2": 21 | version "0.20.2" 22 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.20.2.tgz#3b488c49aee9d491c2c8f98a909b785870d6e995" 23 | integrity sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w== 24 | 25 | "@esbuild/android-x64@0.20.2": 26 | version "0.20.2" 27 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.20.2.tgz#3b1628029e5576249d2b2d766696e50768449f98" 28 | integrity sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg== 29 | 30 | "@esbuild/darwin-arm64@0.20.2": 31 | version "0.20.2" 32 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz#6e8517a045ddd86ae30c6608c8475ebc0c4000bb" 33 | integrity sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA== 34 | 35 | "@esbuild/darwin-x64@0.20.2": 36 | version "0.20.2" 37 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz#90ed098e1f9dd8a9381695b207e1cff45540a0d0" 38 | integrity sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA== 39 | 40 | "@esbuild/freebsd-arm64@0.20.2": 41 | version "0.20.2" 42 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz#d71502d1ee89a1130327e890364666c760a2a911" 43 | integrity sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw== 44 | 45 | "@esbuild/freebsd-x64@0.20.2": 46 | version "0.20.2" 47 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz#aa5ea58d9c1dd9af688b8b6f63ef0d3d60cea53c" 48 | integrity sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw== 49 | 50 | "@esbuild/linux-arm64@0.20.2": 51 | version "0.20.2" 52 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz#055b63725df678379b0f6db9d0fa85463755b2e5" 53 | integrity sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A== 54 | 55 | "@esbuild/linux-arm@0.20.2": 56 | version "0.20.2" 57 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz#76b3b98cb1f87936fbc37f073efabad49dcd889c" 58 | integrity sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg== 59 | 60 | "@esbuild/linux-ia32@0.20.2": 61 | version "0.20.2" 62 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz#c0e5e787c285264e5dfc7a79f04b8b4eefdad7fa" 63 | integrity sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig== 64 | 65 | "@esbuild/linux-loong64@0.20.2": 66 | version "0.20.2" 67 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz#a6184e62bd7cdc63e0c0448b83801001653219c5" 68 | integrity sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ== 69 | 70 | "@esbuild/linux-mips64el@0.20.2": 71 | version "0.20.2" 72 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz#d08e39ce86f45ef8fc88549d29c62b8acf5649aa" 73 | integrity sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA== 74 | 75 | "@esbuild/linux-ppc64@0.20.2": 76 | version "0.20.2" 77 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz#8d252f0b7756ffd6d1cbde5ea67ff8fd20437f20" 78 | integrity sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg== 79 | 80 | "@esbuild/linux-riscv64@0.20.2": 81 | version "0.20.2" 82 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz#19f6dcdb14409dae607f66ca1181dd4e9db81300" 83 | integrity sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg== 84 | 85 | "@esbuild/linux-s390x@0.20.2": 86 | version "0.20.2" 87 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz#3c830c90f1a5d7dd1473d5595ea4ebb920988685" 88 | integrity sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ== 89 | 90 | "@esbuild/linux-x64@0.20.2": 91 | version "0.20.2" 92 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz#86eca35203afc0d9de0694c64ec0ab0a378f6fff" 93 | integrity sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw== 94 | 95 | "@esbuild/netbsd-x64@0.20.2": 96 | version "0.20.2" 97 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz#e771c8eb0e0f6e1877ffd4220036b98aed5915e6" 98 | integrity sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ== 99 | 100 | "@esbuild/openbsd-x64@0.20.2": 101 | version "0.20.2" 102 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz#9a795ae4b4e37e674f0f4d716f3e226dd7c39baf" 103 | integrity sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ== 104 | 105 | "@esbuild/sunos-x64@0.20.2": 106 | version "0.20.2" 107 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz#7df23b61a497b8ac189def6e25a95673caedb03f" 108 | integrity sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w== 109 | 110 | "@esbuild/win32-arm64@0.20.2": 111 | version "0.20.2" 112 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz#f1ae5abf9ca052ae11c1bc806fb4c0f519bacf90" 113 | integrity sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ== 114 | 115 | "@esbuild/win32-ia32@0.20.2": 116 | version "0.20.2" 117 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz#241fe62c34d8e8461cd708277813e1d0ba55ce23" 118 | integrity sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ== 119 | 120 | "@esbuild/win32-x64@0.20.2": 121 | version "0.20.2" 122 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz#9c907b21e30a52db959ba4f80bb01a0cc403d5cc" 123 | integrity sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ== 124 | 125 | "@jridgewell/sourcemap-codec@^1.4.15": 126 | version "1.4.15" 127 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" 128 | integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== 129 | 130 | "@rollup/rollup-android-arm-eabi@4.18.0": 131 | version "4.18.0" 132 | resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz#bbd0e616b2078cd2d68afc9824d1fadb2f2ffd27" 133 | integrity sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ== 134 | 135 | "@rollup/rollup-android-arm64@4.18.0": 136 | version "4.18.0" 137 | resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz#97255ef6384c5f73f4800c0de91f5f6518e21203" 138 | integrity sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA== 139 | 140 | "@rollup/rollup-darwin-arm64@4.18.0": 141 | version "4.18.0" 142 | resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz#b6dd74e117510dfe94541646067b0545b42ff096" 143 | integrity sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w== 144 | 145 | "@rollup/rollup-darwin-x64@4.18.0": 146 | version "4.18.0" 147 | resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz#e07d76de1cec987673e7f3d48ccb8e106d42c05c" 148 | integrity sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA== 149 | 150 | "@rollup/rollup-linux-arm-gnueabihf@4.18.0": 151 | version "4.18.0" 152 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz#9f1a6d218b560c9d75185af4b8bb42f9f24736b8" 153 | integrity sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA== 154 | 155 | "@rollup/rollup-linux-arm-musleabihf@4.18.0": 156 | version "4.18.0" 157 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz#53618b92e6ffb642c7b620e6e528446511330549" 158 | integrity sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A== 159 | 160 | "@rollup/rollup-linux-arm64-gnu@4.18.0": 161 | version "4.18.0" 162 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz#99a7ba5e719d4f053761a698f7b52291cefba577" 163 | integrity sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw== 164 | 165 | "@rollup/rollup-linux-arm64-musl@4.18.0": 166 | version "4.18.0" 167 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz#f53db99a45d9bc00ce94db8a35efa7c3c144a58c" 168 | integrity sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ== 169 | 170 | "@rollup/rollup-linux-powerpc64le-gnu@4.18.0": 171 | version "4.18.0" 172 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz#cbb0837408fe081ce3435cf3730e090febafc9bf" 173 | integrity sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA== 174 | 175 | "@rollup/rollup-linux-riscv64-gnu@4.18.0": 176 | version "4.18.0" 177 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz#8ed09c1d1262ada4c38d791a28ae0fea28b80cc9" 178 | integrity sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg== 179 | 180 | "@rollup/rollup-linux-s390x-gnu@4.18.0": 181 | version "4.18.0" 182 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz#938138d3c8e0c96f022252a28441dcfb17afd7ec" 183 | integrity sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg== 184 | 185 | "@rollup/rollup-linux-x64-gnu@4.18.0": 186 | version "4.18.0" 187 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz#1a7481137a54740bee1ded4ae5752450f155d942" 188 | integrity sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w== 189 | 190 | "@rollup/rollup-linux-x64-musl@4.18.0": 191 | version "4.18.0" 192 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz#f1186afc601ac4f4fc25fac4ca15ecbee3a1874d" 193 | integrity sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg== 194 | 195 | "@rollup/rollup-win32-arm64-msvc@4.18.0": 196 | version "4.18.0" 197 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz#ed6603e93636a96203c6915be4117245c1bd2daf" 198 | integrity sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA== 199 | 200 | "@rollup/rollup-win32-ia32-msvc@4.18.0": 201 | version "4.18.0" 202 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz#14e0b404b1c25ebe6157a15edb9c46959ba74c54" 203 | integrity sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg== 204 | 205 | "@rollup/rollup-win32-x64-msvc@4.18.0": 206 | version "4.18.0" 207 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz#5d694d345ce36b6ecf657349e03eb87297e68da4" 208 | integrity sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g== 209 | 210 | "@types/estree@1.0.5": 211 | version "1.0.5" 212 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" 213 | integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== 214 | 215 | "@vitejs/plugin-vue@^5.0.4": 216 | version "5.0.5" 217 | resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-5.0.5.tgz#e3dc11e427d4b818b7e3202766ad156e3d5e2eaa" 218 | integrity sha512-LOjm7XeIimLBZyzinBQ6OSm3UBCNVCpLkxGC0oWmm2YPzVZoxMsdvNVimLTBzpAnR9hl/yn1SHGuRfe6/Td9rQ== 219 | 220 | "@vue/compiler-core@3.4.27": 221 | version "3.4.27" 222 | resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.27.tgz#e69060f4b61429fe57976aa5872cfa21389e4d91" 223 | integrity sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg== 224 | dependencies: 225 | "@babel/parser" "^7.24.4" 226 | "@vue/shared" "3.4.27" 227 | entities "^4.5.0" 228 | estree-walker "^2.0.2" 229 | source-map-js "^1.2.0" 230 | 231 | "@vue/compiler-dom@3.4.27": 232 | version "3.4.27" 233 | resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.27.tgz#d51d35f40d00ce235d7afc6ad8b09dfd92b1cc1c" 234 | integrity sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw== 235 | dependencies: 236 | "@vue/compiler-core" "3.4.27" 237 | "@vue/shared" "3.4.27" 238 | 239 | "@vue/compiler-sfc@3.4.27": 240 | version "3.4.27" 241 | resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.27.tgz#399cac1b75c6737bf5440dc9cf3c385bb2959701" 242 | integrity sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA== 243 | dependencies: 244 | "@babel/parser" "^7.24.4" 245 | "@vue/compiler-core" "3.4.27" 246 | "@vue/compiler-dom" "3.4.27" 247 | "@vue/compiler-ssr" "3.4.27" 248 | "@vue/shared" "3.4.27" 249 | estree-walker "^2.0.2" 250 | magic-string "^0.30.10" 251 | postcss "^8.4.38" 252 | source-map-js "^1.2.0" 253 | 254 | "@vue/compiler-ssr@3.4.27": 255 | version "3.4.27" 256 | resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.27.tgz#2a8ecfef1cf448b09be633901a9c020360472e3d" 257 | integrity sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw== 258 | dependencies: 259 | "@vue/compiler-dom" "3.4.27" 260 | "@vue/shared" "3.4.27" 261 | 262 | "@vue/devtools-api@^6.0.0-beta.11": 263 | version "6.6.3" 264 | resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.6.3.tgz#b23a588154cba8986bba82b6e1d0248bde3fd1a0" 265 | integrity sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw== 266 | 267 | "@vue/reactivity@3.4.27": 268 | version "3.4.27" 269 | resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.4.27.tgz#6ece72331bf719953f5eaa95ec60b2b8d49e3791" 270 | integrity sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA== 271 | dependencies: 272 | "@vue/shared" "3.4.27" 273 | 274 | "@vue/runtime-core@3.4.27": 275 | version "3.4.27" 276 | resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.4.27.tgz#1b6e1d71e4604ba7442dd25ed22e4a1fc6adbbda" 277 | integrity sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA== 278 | dependencies: 279 | "@vue/reactivity" "3.4.27" 280 | "@vue/shared" "3.4.27" 281 | 282 | "@vue/runtime-dom@3.4.27": 283 | version "3.4.27" 284 | resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.4.27.tgz#fe8d1ce9bbe8921d5dd0ad5c10df0e04ef7a5ee7" 285 | integrity sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q== 286 | dependencies: 287 | "@vue/runtime-core" "3.4.27" 288 | "@vue/shared" "3.4.27" 289 | csstype "^3.1.3" 290 | 291 | "@vue/server-renderer@3.4.27": 292 | version "3.4.27" 293 | resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.4.27.tgz#3306176f37e648ba665f97dda3ce705687be63d2" 294 | integrity sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA== 295 | dependencies: 296 | "@vue/compiler-ssr" "3.4.27" 297 | "@vue/shared" "3.4.27" 298 | 299 | "@vue/shared@3.4.27": 300 | version "3.4.27" 301 | resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.27.tgz#f05e3cd107d157354bb4ae7a7b5fc9cf73c63b50" 302 | integrity sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA== 303 | 304 | ansi-regex@^4.1.0: 305 | version "4.1.1" 306 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" 307 | integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== 308 | 309 | ansi-styles@^3.2.0: 310 | version "3.2.1" 311 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 312 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 313 | dependencies: 314 | color-convert "^1.9.0" 315 | 316 | anymatch@~3.1.2: 317 | version "3.1.3" 318 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 319 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 320 | dependencies: 321 | normalize-path "^3.0.0" 322 | picomatch "^2.0.4" 323 | 324 | binary-extensions@^2.0.0: 325 | version "2.3.0" 326 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" 327 | integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== 328 | 329 | braces@~3.0.2: 330 | version "3.0.3" 331 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" 332 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== 333 | dependencies: 334 | fill-range "^7.1.1" 335 | 336 | camelcase@^5.0.0: 337 | version "5.3.1" 338 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 339 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 340 | 341 | chokidar-cli@^3.0.0: 342 | version "3.0.0" 343 | resolved "https://registry.yarnpkg.com/chokidar-cli/-/chokidar-cli-3.0.0.tgz#29283666063b9e167559d30f247ff8fc48794eb7" 344 | integrity sha512-xVW+Qeh7z15uZRxHOkP93Ux8A0xbPzwK4GaqD8dQOYc34TlkqUhVSS59fK36DOp5WdJlrRzlYSy02Ht99FjZqQ== 345 | dependencies: 346 | chokidar "^3.5.2" 347 | lodash.debounce "^4.0.8" 348 | lodash.throttle "^4.1.1" 349 | yargs "^13.3.0" 350 | 351 | chokidar@^3.5.2: 352 | version "3.6.0" 353 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" 354 | integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== 355 | dependencies: 356 | anymatch "~3.1.2" 357 | braces "~3.0.2" 358 | glob-parent "~5.1.2" 359 | is-binary-path "~2.1.0" 360 | is-glob "~4.0.1" 361 | normalize-path "~3.0.0" 362 | readdirp "~3.6.0" 363 | optionalDependencies: 364 | fsevents "~2.3.2" 365 | 366 | cliui@^5.0.0: 367 | version "5.0.0" 368 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" 369 | integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== 370 | dependencies: 371 | string-width "^3.1.0" 372 | strip-ansi "^5.2.0" 373 | wrap-ansi "^5.1.0" 374 | 375 | color-convert@^1.9.0: 376 | version "1.9.3" 377 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 378 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 379 | dependencies: 380 | color-name "1.1.3" 381 | 382 | color-name@1.1.3: 383 | version "1.1.3" 384 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 385 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 386 | 387 | csstype@^3.1.3: 388 | version "3.1.3" 389 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" 390 | integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== 391 | 392 | decamelize@^1.2.0: 393 | version "1.2.0" 394 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 395 | integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== 396 | 397 | emoji-regex@^7.0.1: 398 | version "7.0.3" 399 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 400 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 401 | 402 | entities@^4.5.0: 403 | version "4.5.0" 404 | resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" 405 | integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== 406 | 407 | esbuild@^0.20.1: 408 | version "0.20.2" 409 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.20.2.tgz#9d6b2386561766ee6b5a55196c6d766d28c87ea1" 410 | integrity sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g== 411 | optionalDependencies: 412 | "@esbuild/aix-ppc64" "0.20.2" 413 | "@esbuild/android-arm" "0.20.2" 414 | "@esbuild/android-arm64" "0.20.2" 415 | "@esbuild/android-x64" "0.20.2" 416 | "@esbuild/darwin-arm64" "0.20.2" 417 | "@esbuild/darwin-x64" "0.20.2" 418 | "@esbuild/freebsd-arm64" "0.20.2" 419 | "@esbuild/freebsd-x64" "0.20.2" 420 | "@esbuild/linux-arm" "0.20.2" 421 | "@esbuild/linux-arm64" "0.20.2" 422 | "@esbuild/linux-ia32" "0.20.2" 423 | "@esbuild/linux-loong64" "0.20.2" 424 | "@esbuild/linux-mips64el" "0.20.2" 425 | "@esbuild/linux-ppc64" "0.20.2" 426 | "@esbuild/linux-riscv64" "0.20.2" 427 | "@esbuild/linux-s390x" "0.20.2" 428 | "@esbuild/linux-x64" "0.20.2" 429 | "@esbuild/netbsd-x64" "0.20.2" 430 | "@esbuild/openbsd-x64" "0.20.2" 431 | "@esbuild/sunos-x64" "0.20.2" 432 | "@esbuild/win32-arm64" "0.20.2" 433 | "@esbuild/win32-ia32" "0.20.2" 434 | "@esbuild/win32-x64" "0.20.2" 435 | 436 | estree-walker@^2.0.2: 437 | version "2.0.2" 438 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" 439 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== 440 | 441 | fill-range@^7.1.1: 442 | version "7.1.1" 443 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" 444 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== 445 | dependencies: 446 | to-regex-range "^5.0.1" 447 | 448 | find-up@^3.0.0: 449 | version "3.0.0" 450 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 451 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== 452 | dependencies: 453 | locate-path "^3.0.0" 454 | 455 | fsevents@~2.3.2, fsevents@~2.3.3: 456 | version "2.3.3" 457 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" 458 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 459 | 460 | get-caller-file@^2.0.1: 461 | version "2.0.5" 462 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 463 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 464 | 465 | glob-parent@~5.1.2: 466 | version "5.1.2" 467 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 468 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 469 | dependencies: 470 | is-glob "^4.0.1" 471 | 472 | is-binary-path@~2.1.0: 473 | version "2.1.0" 474 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 475 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 476 | dependencies: 477 | binary-extensions "^2.0.0" 478 | 479 | is-extglob@^2.1.1: 480 | version "2.1.1" 481 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 482 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 483 | 484 | is-fullwidth-code-point@^2.0.0: 485 | version "2.0.0" 486 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 487 | integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== 488 | 489 | is-glob@^4.0.1, is-glob@~4.0.1: 490 | version "4.0.3" 491 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 492 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 493 | dependencies: 494 | is-extglob "^2.1.1" 495 | 496 | is-number@^7.0.0: 497 | version "7.0.0" 498 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 499 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 500 | 501 | locate-path@^3.0.0: 502 | version "3.0.0" 503 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 504 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== 505 | dependencies: 506 | p-locate "^3.0.0" 507 | path-exists "^3.0.0" 508 | 509 | lodash.debounce@^4.0.8: 510 | version "4.0.8" 511 | resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" 512 | integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== 513 | 514 | lodash.throttle@^4.1.1: 515 | version "4.1.1" 516 | resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" 517 | integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== 518 | 519 | magic-string@^0.30.10: 520 | version "0.30.10" 521 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.10.tgz#123d9c41a0cb5640c892b041d4cfb3bd0aa4b39e" 522 | integrity sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ== 523 | dependencies: 524 | "@jridgewell/sourcemap-codec" "^1.4.15" 525 | 526 | nanoid@^3.3.7: 527 | version "3.3.7" 528 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" 529 | integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== 530 | 531 | normalize-path@^3.0.0, normalize-path@~3.0.0: 532 | version "3.0.0" 533 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 534 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 535 | 536 | p-limit@^2.0.0: 537 | version "2.3.0" 538 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 539 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 540 | dependencies: 541 | p-try "^2.0.0" 542 | 543 | p-locate@^3.0.0: 544 | version "3.0.0" 545 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 546 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== 547 | dependencies: 548 | p-limit "^2.0.0" 549 | 550 | p-try@^2.0.0: 551 | version "2.2.0" 552 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 553 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 554 | 555 | path-exists@^3.0.0: 556 | version "3.0.0" 557 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 558 | integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== 559 | 560 | picocolors@^1.0.0: 561 | version "1.0.1" 562 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" 563 | integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== 564 | 565 | picomatch@^2.0.4, picomatch@^2.2.1: 566 | version "2.3.1" 567 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 568 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 569 | 570 | postcss@^8.4.38: 571 | version "8.4.38" 572 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" 573 | integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== 574 | dependencies: 575 | nanoid "^3.3.7" 576 | picocolors "^1.0.0" 577 | source-map-js "^1.2.0" 578 | 579 | readdirp@~3.6.0: 580 | version "3.6.0" 581 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 582 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 583 | dependencies: 584 | picomatch "^2.2.1" 585 | 586 | require-directory@^2.1.1: 587 | version "2.1.1" 588 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 589 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 590 | 591 | require-main-filename@^2.0.0: 592 | version "2.0.0" 593 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" 594 | integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== 595 | 596 | rollup@^4.13.0: 597 | version "4.18.0" 598 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.18.0.tgz#497f60f0c5308e4602cf41136339fbf87d5f5dda" 599 | integrity sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg== 600 | dependencies: 601 | "@types/estree" "1.0.5" 602 | optionalDependencies: 603 | "@rollup/rollup-android-arm-eabi" "4.18.0" 604 | "@rollup/rollup-android-arm64" "4.18.0" 605 | "@rollup/rollup-darwin-arm64" "4.18.0" 606 | "@rollup/rollup-darwin-x64" "4.18.0" 607 | "@rollup/rollup-linux-arm-gnueabihf" "4.18.0" 608 | "@rollup/rollup-linux-arm-musleabihf" "4.18.0" 609 | "@rollup/rollup-linux-arm64-gnu" "4.18.0" 610 | "@rollup/rollup-linux-arm64-musl" "4.18.0" 611 | "@rollup/rollup-linux-powerpc64le-gnu" "4.18.0" 612 | "@rollup/rollup-linux-riscv64-gnu" "4.18.0" 613 | "@rollup/rollup-linux-s390x-gnu" "4.18.0" 614 | "@rollup/rollup-linux-x64-gnu" "4.18.0" 615 | "@rollup/rollup-linux-x64-musl" "4.18.0" 616 | "@rollup/rollup-win32-arm64-msvc" "4.18.0" 617 | "@rollup/rollup-win32-ia32-msvc" "4.18.0" 618 | "@rollup/rollup-win32-x64-msvc" "4.18.0" 619 | fsevents "~2.3.2" 620 | 621 | set-blocking@^2.0.0: 622 | version "2.0.0" 623 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 624 | integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== 625 | 626 | sortable-dnd@latest: 627 | version "0.6.15" 628 | resolved "https://registry.yarnpkg.com/sortable-dnd/-/sortable-dnd-0.6.15.tgz#29bfbcabf3b3c5ca4d0300fdd23ebd1fb7129fb7" 629 | integrity sha512-5Nrvdz6iFX5G7YT2V/aVtP+Miq/Tvlx9nNts2FW11MNuxIXh2oyebxdpzQZEo1qmNGvb0yygROXbU9cjQI1RgA== 630 | 631 | source-map-js@^1.2.0: 632 | version "1.2.0" 633 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" 634 | integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== 635 | 636 | string-width@^3.0.0, string-width@^3.1.0: 637 | version "3.1.0" 638 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 639 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 640 | dependencies: 641 | emoji-regex "^7.0.1" 642 | is-fullwidth-code-point "^2.0.0" 643 | strip-ansi "^5.1.0" 644 | 645 | strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: 646 | version "5.2.0" 647 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 648 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 649 | dependencies: 650 | ansi-regex "^4.1.0" 651 | 652 | to-regex-range@^5.0.1: 653 | version "5.0.1" 654 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 655 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 656 | dependencies: 657 | is-number "^7.0.0" 658 | 659 | vite@^5.2.0: 660 | version "5.2.13" 661 | resolved "https://registry.yarnpkg.com/vite/-/vite-5.2.13.tgz#945ababcbe3d837ae2479c29f661cd20bc5e1a80" 662 | integrity sha512-SSq1noJfY9pR3I1TUENL3rQYDQCFqgD+lM6fTRAM8Nv6Lsg5hDLaXkjETVeBt+7vZBCMoibD+6IWnT2mJ+Zb/A== 663 | dependencies: 664 | esbuild "^0.20.1" 665 | postcss "^8.4.38" 666 | rollup "^4.13.0" 667 | optionalDependencies: 668 | fsevents "~2.3.3" 669 | 670 | vue-virtual-draglist@^3.3.2: 671 | version "3.3.2" 672 | resolved "https://registry.yarnpkg.com/vue-virtual-draglist/-/vue-virtual-draglist-3.3.2.tgz#25659156970e03505b09149048b5cd685dcb34af" 673 | integrity sha512-CUpTvaT5F2Kb/qqQQVK2X//VgbgOMt8X1fmDdQa6XPoJ/ZPW9LmGVt5lEVr/MnXaTD6qN8gXIyuRKno33/pPbQ== 674 | dependencies: 675 | sortable-dnd latest 676 | 677 | vue@^3.4.21: 678 | version "3.4.27" 679 | resolved "https://registry.yarnpkg.com/vue/-/vue-3.4.27.tgz#40b7d929d3e53f427f7f5945386234d2854cc2a1" 680 | integrity sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA== 681 | dependencies: 682 | "@vue/compiler-dom" "3.4.27" 683 | "@vue/compiler-sfc" "3.4.27" 684 | "@vue/runtime-dom" "3.4.27" 685 | "@vue/server-renderer" "3.4.27" 686 | "@vue/shared" "3.4.27" 687 | 688 | vuex@^4.0.2: 689 | version "4.1.0" 690 | resolved "https://registry.yarnpkg.com/vuex/-/vuex-4.1.0.tgz#aa1b3ea5c7385812b074c86faeeec2217872e36c" 691 | integrity sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ== 692 | dependencies: 693 | "@vue/devtools-api" "^6.0.0-beta.11" 694 | 695 | which-module@^2.0.0: 696 | version "2.0.1" 697 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" 698 | integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== 699 | 700 | wrap-ansi@^5.1.0: 701 | version "5.1.0" 702 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" 703 | integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== 704 | dependencies: 705 | ansi-styles "^3.2.0" 706 | string-width "^3.0.0" 707 | strip-ansi "^5.0.0" 708 | 709 | y18n@^4.0.0: 710 | version "4.0.3" 711 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" 712 | integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== 713 | 714 | yargs-parser@^13.1.2: 715 | version "13.1.2" 716 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" 717 | integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== 718 | dependencies: 719 | camelcase "^5.0.0" 720 | decamelize "^1.2.0" 721 | 722 | yargs@^13.3.0: 723 | version "13.3.2" 724 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" 725 | integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== 726 | dependencies: 727 | cliui "^5.0.0" 728 | find-up "^3.0.0" 729 | get-caller-file "^2.0.1" 730 | require-directory "^2.1.1" 731 | require-main-filename "^2.0.0" 732 | set-blocking "^2.0.0" 733 | string-width "^3.0.0" 734 | which-module "^2.0.0" 735 | y18n "^4.0.0" 736 | yargs-parser "^13.1.2" 737 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Quick Kanban 2 | 3 | Quick Kanban is a Frappe app designed to enhance the default Kanban view in Frappe/ERPNext by replacing it with a Vue-based Kanban. This app aims to provide better performance and an improved user experience, especially for instances with a high volume of Kanban cards and frequent updates. 4 | 5 | ## Objective 6 | 7 | - **Vue-based Kanban View**: Improved performance and user interface. 8 | - **Optimized for Large Data**: Handles hundreds of cards efficiently. 9 | - **Seamless Integration**: Works seamlessly within the Frappe framework. 10 | 11 | ## Installation 12 | 13 | Follow the steps below to install and set up Quick Kanban in your Frappe/ERPNext instance. 14 | 15 | ### Step 1: Get the App 16 | 17 | Run the following command to get the Quick Kanban app from the repository: 18 | 19 | ```bash 20 | bench get-app https://github.com/tridz-dev/quick_kanban.git 21 | ``` 22 | 23 | ### Step 2: Install the App 24 | 25 | Once you have the app, install it on your desired site using the command below. Replace `[sitename]` with the name of your site: 26 | 27 | ```bash 28 | bench install-app --site [sitename] quick_kanban 29 | ``` 30 | 31 | ### Step 3: Modify Site Config 32 | 33 | After installation, you can enable the new Kanban board using the following bench command. Replace `[sitename]` with the name of your site: 34 | 35 | ```bash 36 | bench set-config kanban_beta 1 37 | ``` 38 | 39 | Alternatively, to enable the new Kanban board, add the `kanban_beta` attribute to the `site_config.json` in your `sites/[sitename]` directory. 40 | 41 | ```json 42 | "kanban_beta": 1 43 | ``` 44 | 45 | To enable the new Kanban board for specific users, add the usernames of desired users to the `kanban_beta_users` list in `site_config.json`.
For example: 46 | 47 | ```json 48 | "kanban_beta_users": [ 49 | "Username1", 50 | "Username2" 51 | ] 52 | ``` 53 | 54 | ## Usage 55 | 56 | Create a Kanban Board for any doctype using the desired field as a reference, and you're all set! 57 | 58 | ### Highlighted Field 59 | 60 | You can choose a field to be highlighted inside the Kanban card. To enable this feature, select a field as the `Highlighted Field` for your Kanban board. 61 | 62 | Additionally, you can assign a color for each value of that field in the highlight table of your Kanban Board. Simply type the expected value in the Tag column and select a corresponding color for it.

63 | For example:

64 | ![kanban](https://github.com/user-attachments/assets/b25bac25-189c-4e79-a0ee-5e1ba0cc1fa0) 65 | 66 | ## License 67 | 68 | This project is licensed under the MIT License. 69 | -------------------------------------------------------------------------------- /license.txt: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) [year] [fullname] 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "workspaces": ["Quick-Kanban"], 4 | "scripts": { 5 | "postinstall": "cd Quick-Kanban && yarn install", 6 | "dev": "cd Quick-Kanban && yarn dev", 7 | "build": "cd Quick-Kanban && yarn build" 8 | } 9 | } -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [project] 2 | name = "quick_kanban" 3 | authors = [ 4 | { name = "tridz", email = "raihanbinabduljal@gmail.com"} 5 | ] 6 | description = "An enhanced version of Kanban Board in frappe" 7 | requires-python = ">=3.10" 8 | readme = "README.md" 9 | dynamic = ["version"] 10 | dependencies = [ 11 | # "frappe~=15.0.0" # Installed and managed by bench. 12 | ] 13 | 14 | [build-system] 15 | requires = ["flit_core >=3.4,<4"] 16 | build-backend = "flit_core.buildapi" 17 | 18 | # These dependencies are only installed when developer mode is enabled 19 | [tool.bench.dev-dependencies] 20 | # package_name = "~=1.1.0" 21 | -------------------------------------------------------------------------------- /quick_kanban/__init__.py: -------------------------------------------------------------------------------- 1 | __version__ = "0.0.1" 2 | -------------------------------------------------------------------------------- /quick_kanban/config/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tridz-dev/quick_kanban/8ca57a621591aae46a9c18035fae60448ba0bcf6/quick_kanban/config/__init__.py -------------------------------------------------------------------------------- /quick_kanban/get_beta _users.py: -------------------------------------------------------------------------------- 1 | 2 | import frappe 3 | 4 | @frappe.whitelist() 5 | def get_kanban_config(): 6 | config = frappe.local.conf 7 | kanban_beta = config.get('kanban_beta', 0) 8 | kanban_beta_users = config.get('kanban_beta_users', {}) 9 | return { 10 | "kanban_beta": kanban_beta, 11 | "kanban_beta_users": kanban_beta_users 12 | } 13 | -------------------------------------------------------------------------------- /quick_kanban/hooks.py: -------------------------------------------------------------------------------- 1 | app_name = "quick_kanban" 2 | app_title = "Quick-Kanban" 3 | app_publisher = "tridz" 4 | app_description = "An enhanced version of Kanban Board in frappe" 5 | app_email = "raihanbinabduljal@gmail.com" 6 | app_license = "mit" 7 | # required_apps = [] 8 | 9 | # Includes in 10 | # ------------------ 11 | 12 | # include js, css files in header of desk.html 13 | app_include_css = "quick_kanban.bundle.css" 14 | app_include_js = "kanban_view.bundle.js" 15 | 16 | # include js, css files in header of web template 17 | # web_include_css = "/assets/quick_kanban/css/quick_kanban.css" 18 | # web_include_js = "/assets/quick_kanban/js/quick_kanban.js" 19 | 20 | # include custom scss in every website theme (without file extension ".scss") 21 | # website_theme_scss = "quick_kanban/public/scss/website" 22 | 23 | # include js, css files in header of web form 24 | # webform_include_js = {"doctype": "public/js/doctype.js"} 25 | # webform_include_css = {"doctype": "public/css/doctype.css"} 26 | 27 | # include js in page 28 | # page_js = {"page" : "public/js/file.js"} 29 | 30 | # include js in doctype views 31 | doctype_js = {"Kanban Board" : "public/js/kanban_highlight.js"} 32 | # doctype_list_js = {"doctype" : "public/js/doctype_list.js"} 33 | # doctype_tree_js = {"doctype" : "public/js/doctype_tree.js"} 34 | # doctype_calendar_js = {"doctype" : "public/js/doctype_calendar.js"} 35 | 36 | # Svg Icons 37 | # ------------------ 38 | # include app icons in desk 39 | # app_include_icons = "quick_kanban/public/icons.svg" 40 | 41 | # Home Pages 42 | # ---------- 43 | 44 | # application home page (will override Website Settings) 45 | # home_page = "login" 46 | 47 | # website user home page (by Role) 48 | # role_home_page = { 49 | # "Role": "home_page" 50 | # } 51 | 52 | # Generators 53 | # ---------- 54 | 55 | # automatically create page for each record of this doctype 56 | # website_generators = ["Web Page"] 57 | 58 | # Jinja 59 | # ---------- 60 | 61 | # add methods and filters to jinja environment 62 | # jinja = { 63 | # "methods": "quick_kanban.utils.jinja_methods", 64 | # "filters": "quick_kanban.utils.jinja_filters" 65 | # } 66 | 67 | # Installation 68 | # ------------ 69 | 70 | # before_install = "quick_kanban.install.before_install" 71 | # after_install = "quick_kanban.install.after_install" 72 | 73 | # Uninstallation 74 | # ------------ 75 | 76 | # before_uninstall = "quick_kanban.uninstall.before_uninstall" 77 | # after_uninstall = "quick_kanban.uninstall.after_uninstall" 78 | 79 | # Integration Setup 80 | # ------------------ 81 | # To set up dependencies/integrations with other apps 82 | # Name of the app being installed is passed as an argument 83 | 84 | # before_app_install = "quick_kanban.utils.before_app_install" 85 | # after_app_install = "quick_kanban.utils.after_app_install" 86 | 87 | # Integration Cleanup 88 | # ------------------- 89 | # To clean up dependencies/integrations with other apps 90 | # Name of the app being uninstalled is passed as an argument 91 | 92 | # before_app_uninstall = "quick_kanban.utils.before_app_uninstall" 93 | # after_app_uninstall = "quick_kanban.utils.after_app_uninstall" 94 | 95 | # Desk Notifications 96 | # ------------------ 97 | # See frappe.core.notifications.get_notification_config 98 | 99 | # notification_config = "quick_kanban.notifications.get_notification_config" 100 | 101 | # Permissions 102 | # ----------- 103 | # Permissions evaluated in scripted ways 104 | 105 | # permission_query_conditions = { 106 | # "Event": "frappe.desk.doctype.event.event.get_permission_query_conditions", 107 | # } 108 | # 109 | # has_permission = { 110 | # "Event": "frappe.desk.doctype.event.event.has_permission", 111 | # } 112 | 113 | # DocType Class 114 | # --------------- 115 | # Override standard doctype classes 116 | 117 | # override_doctype_class = { 118 | # "ToDo": "custom_app.overrides.CustomToDo" 119 | # } 120 | 121 | # Document Events 122 | # --------------- 123 | # Hook on document methods and events 124 | 125 | # doc_events = { 126 | # "*": { 127 | # "on_update": "method", 128 | # "on_cancel": "method", 129 | # "on_trash": "method" 130 | # } 131 | # } 132 | 133 | # Scheduled Tasks 134 | # --------------- 135 | 136 | # scheduler_events = { 137 | # "all": [ 138 | # "quick_kanban.tasks.all" 139 | # ], 140 | # "daily": [ 141 | # "quick_kanban.tasks.daily" 142 | # ], 143 | # "hourly": [ 144 | # "quick_kanban.tasks.hourly" 145 | # ], 146 | # "weekly": [ 147 | # "quick_kanban.tasks.weekly" 148 | # ], 149 | # "monthly": [ 150 | # "quick_kanban.tasks.monthly" 151 | # ], 152 | # } 153 | 154 | # Testing 155 | # ------- 156 | 157 | # before_tests = "quick_kanban.install.before_tests" 158 | 159 | # Overriding Methods 160 | # ------------------------------ 161 | # 162 | # override_whitelisted_methods = { 163 | # "frappe.desk.doctype.event.event.get_events": "quick_kanban.event.get_events" 164 | # } 165 | # 166 | # each overriding function accepts a `data` argument; 167 | # generated from the base implementation of the doctype dashboard, 168 | # along with any modifications made in other Frappe apps 169 | # override_doctype_dashboards = { 170 | # "Task": "quick_kanban.task.get_dashboard_data" 171 | # } 172 | 173 | # exempt linked doctypes from being automatically cancelled 174 | # 175 | # auto_cancel_exempted_doctypes = ["Auto Repeat"] 176 | 177 | # Ignore links to specified DocTypes when deleting documents 178 | # ----------------------------------------------------------- 179 | 180 | # ignore_links_on_delete = ["Communication", "ToDo"] 181 | 182 | # Request Events 183 | # ---------------- 184 | # before_request = ["quick_kanban.utils.before_request"] 185 | # after_request = ["quick_kanban.utils.after_request"] 186 | 187 | # Job Events 188 | # ---------- 189 | # before_job = ["quick_kanban.utils.before_job"] 190 | # after_job = ["quick_kanban.utils.after_job"] 191 | 192 | # User Data Protection 193 | # -------------------- 194 | 195 | # user_data_fields = [ 196 | # { 197 | # "doctype": "{doctype_1}", 198 | # "filter_by": "{filter_by}", 199 | # "redact_fields": ["{field_1}", "{field_2}"], 200 | # "partial": 1, 201 | # }, 202 | # { 203 | # "doctype": "{doctype_2}", 204 | # "filter_by": "{filter_by}", 205 | # "partial": 1, 206 | # }, 207 | # { 208 | # "doctype": "{doctype_3}", 209 | # "strict": False, 210 | # }, 211 | # { 212 | # "doctype": "{doctype_4}" 213 | # } 214 | # ] 215 | 216 | # Authentication and authorization 217 | # -------------------------------- 218 | 219 | # auth_hooks = [ 220 | # "quick_kanban.auth.validate" 221 | # ] 222 | 223 | # Automatically update python controller files with type annotations for this app. 224 | # export_python_type_annotations = True 225 | 226 | # default_log_clearing_doctypes = { 227 | # "Logging DocType Name": 30 # days to retain logs 228 | # } 229 | 230 | -------------------------------------------------------------------------------- /quick_kanban/modules.txt: -------------------------------------------------------------------------------- 1 | Quick-Kanban -------------------------------------------------------------------------------- /quick_kanban/patches.txt: -------------------------------------------------------------------------------- 1 | [pre_model_sync] 2 | # Patches added in this section will be executed before doctypes are migrated 3 | # Read docs to understand patches: https://frappeframework.com/docs/v14/user/en/database-migrations 4 | 5 | [post_model_sync] 6 | # Patches added in this section will be executed after doctypes are migrated -------------------------------------------------------------------------------- /quick_kanban/public/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tridz-dev/quick_kanban/8ca57a621591aae46a9c18035fae60448ba0bcf6/quick_kanban/public/.gitkeep -------------------------------------------------------------------------------- /quick_kanban/public/css/quick_kanban.bundle.css: -------------------------------------------------------------------------------- 1 | [data-theme=dark]{--kanban-column-gray: var(--gray-800);--kanban-column-red: #6b151580;--kanban-column-blue: #00488080;--kanban-column-light-blue: #0070cc80;--kanban-column-yellow: #733f1280;--kanban-column-purple: #40186380;--kanban-column-pink: #570f3e80;--kanban-column-green: #173b2c80;--kanban-column-orange: #6b271180;--kanban-column-cyan: #16475980}[data-theme=light]{--kanban-column-gray: var(--gray-200);--kanban-column-red: var(--red-200);--kanban-column-blue: var(--blue-200);--kanban-column-light-blue: var(--blue-100);--kanban-column-yellow: var(--yellow-100);--kanban-column-purple: var(--purple-200);--kanban-column-pink: var(--pink-200);--kanban-column-green: var(--green-200);--kanban-column-orange: var(--orange-200);--kanban-column-cyan: var(--cyan-100)}#kanbanapp{height:80vh}#kanbanapp .clickdrag-active{cursor:grabbing}#kanbanapp .kanban{position:relative;display:flex;justify-content:flex-start;gap:8px;overflow-x:auto;scrollbar-width:thin;height:80vh;padding-bottom:5px}#kanbanapp .kanban-column{display:flex;flex-direction:column;gap:8px;width:250px;max-width:350px;max-height:calc(100vh - var(--navbar-height) - var(--page-bottom-margin))!important;border-radius:12px;min-height:70vh}#kanbanapp .kanban-column-header{display:flex;justify-content:space-between;margin-bottom:10px}#kanbanapp .column-dropdown{max-height:300px;overflow-y:auto;position:absolute;transform:translate3d(0,16px,0);top:0;left:0;will-change:transform}#kanbanapp .column-title{color:inherit;font-size:medium;font-weight:600;text-align:start}#kanbanapp .indicator-pill{margin-right:6px}#kanbanapp .kanban-card{display:flex;position:relative;font-size:var(--text-md);gap:2px;flex-direction:column;padding:8px 12px;margin-bottom:8px;background:var(--card-bg);color:var(--text-muted);border:1px solid var(--border-color);border-radius:8px!important;opacity:1;box-shadow:0 1px 2px #0000001a;cursor:grab;-webkit-user-select:none;user-select:none;overflow-x:clip}#kanbanapp .chosen-card{filter:contrast(.9)}#kanbanapp .ghost-card{filter:contrast(1)}#kanbanapp .chosen-card .drag{opacity:.5}#kanbanapp .ghost-card .drag{opacity:1}#kanbanapp .kanban-card-meta{display:flex;align-items:flex-start;justify-content:space-between;margin:12px 0 5px}#kanbanapp .card-title{font-weight:600;text-align:start;margin-bottom:7px}#kanbanapp .addcard{display:flex;align-items:center;justify-content:center;margin-bottom:4px}#kanbanapp .addcard button{background-color:var(--card-bg)}#kanbanapp .header-item{display:flex;align-items:center;justify-content:center;padding:5px;border-radius:8px;cursor:pointer}#kanbanapp .header-item:hover{background-color:#5b5f611c}#kanbanapp .loadbtn{display:flex;justify-content:center;cursor:pointer} 2 | -------------------------------------------------------------------------------- /quick_kanban/public/js/kanban_highlight.js: -------------------------------------------------------------------------------- 1 | frappe.ui.form.on('Kanban Board', { 2 | reference_doctype: function (frm) { 3 | if (!frm.doc.reference_doctype) return; 4 | 5 | frappe.model.with_doctype(frm.doc.reference_doctype, function () { 6 | var options = $.map(frappe.get_meta(frm.doc.reference_doctype).fields, function (d) { 7 | if ( 8 | d.fieldname && 9 | d.fieldtype === "Select" && 10 | frappe.model.no_value_type.indexOf(d.fieldtype) === -1 11 | ) { 12 | return d.fieldname; 13 | } 14 | return null; 15 | }); 16 | frm.set_df_property("custom_highlighted_field", "options", options); 17 | frm.get_field("custom_highlighted_field").refresh(); 18 | }); 19 | } 20 | }) -------------------------------------------------------------------------------- /quick_kanban/public/js/kanban_view.bundle.js: -------------------------------------------------------------------------------- 1 | 2 | frappe.provide("frappe.views"); 3 | 4 | let kanban_conf = frappe.call({ 5 | method: "quick_kanban.get_beta _users.get_kanban_config", 6 | callback: function (r) { 7 | if (!r.exc && r.message) { 8 | kanban_conf = r.message 9 | } 10 | } 11 | }); 12 | 13 | frappe.views.KanbanView = class KanbanView extends frappe.views.KanbanView { 14 | 15 | render() { 16 | if (!kanban_conf.kanban_beta) { 17 | this.renderOld() 18 | return 19 | } 20 | if (kanban_conf.kanban_beta_users?.length) { 21 | if (kanban_conf.kanban_beta_users.includes(frappe.session.user)) { 22 | this.renderBeta() 23 | } 24 | else { 25 | this.renderOld() 26 | } 27 | } 28 | else { 29 | this.renderBeta() 30 | } 31 | } 32 | 33 | renderBeta() { 34 | if (!window.refreshKanbanBoard) { 35 | const script = document.createElement('script'); 36 | script.src = '/assets/quick_kanban/js/quick_kanban.bundle.js'; 37 | document.head.appendChild(script); 38 | this.$result.html(`
`); 39 | } else { 40 | if (window.refreshKanbanBoard) { 41 | let args = this.get_args(); 42 | window.refreshKanbanBoard(args); 43 | } 44 | } 45 | } 46 | 47 | renderOld() { 48 | const board_name = this.board_name; 49 | if (!this.kanban) { 50 | this.kanban = new frappe.views.KanbanBoard({ 51 | doctype: this.doctype, 52 | board: this.board, 53 | board_name: board_name, 54 | cards: this.data, 55 | card_meta: this.card_meta, 56 | wrapper: this.$result, 57 | cur_list: this, 58 | user_settings: this.view_user_settings, 59 | }); 60 | } else if (board_name === this.kanban.board_name) { 61 | this.kanban.update(this.data); 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /quick_kanban/quick_kanban/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tridz-dev/quick_kanban/8ca57a621591aae46a9c18035fae60448ba0bcf6/quick_kanban/quick_kanban/__init__.py -------------------------------------------------------------------------------- /quick_kanban/quick_kanban/custom/kanban_board.json: -------------------------------------------------------------------------------- 1 | { 2 | "custom_fields": [ 3 | { 4 | "_assign": null, 5 | "_comments": null, 6 | "_liked_by": null, 7 | "_user_tags": null, 8 | "allow_in_quick_entry": 0, 9 | "allow_on_submit": 0, 10 | "bold": 0, 11 | "collapsible": 0, 12 | "collapsible_depends_on": null, 13 | "columns": 0, 14 | "creation": "2024-06-11 11:16:29.416509", 15 | "default": null, 16 | "depends_on": null, 17 | "description": null, 18 | "docstatus": 0, 19 | "dt": "Kanban Board", 20 | "fetch_from": null, 21 | "fetch_if_empty": 0, 22 | "fieldname": "custom_highlight_table", 23 | "fieldtype": "Table", 24 | "hidden": 0, 25 | "hide_border": 0, 26 | "hide_days": 0, 27 | "hide_seconds": 0, 28 | "idx": 12, 29 | "ignore_user_permissions": 0, 30 | "ignore_xss_filter": 0, 31 | "in_global_search": 0, 32 | "in_list_view": 0, 33 | "in_preview": 0, 34 | "in_standard_filter": 0, 35 | "insert_after": "custom_highlighted_field", 36 | "is_system_generated": 0, 37 | "is_virtual": 0, 38 | "label": "Highlight Table", 39 | "length": 0, 40 | "link_filters": null, 41 | "mandatory_depends_on": null, 42 | "modified": "2024-06-11 11:16:29.416509", 43 | "modified_by": "Administrator", 44 | "module": null, 45 | "name": "Kanban Board-custom_highlight_table", 46 | "no_copy": 0, 47 | "non_negative": 0, 48 | "options": "Kanban Board Highlight", 49 | "owner": "Administrator", 50 | "permlevel": 0, 51 | "precision": "", 52 | "print_hide": 0, 53 | "print_hide_if_no_value": 0, 54 | "print_width": null, 55 | "read_only": 0, 56 | "read_only_depends_on": null, 57 | "report_hide": 0, 58 | "reqd": 0, 59 | "search_index": 0, 60 | "show_dashboard": 0, 61 | "sort_options": 0, 62 | "translatable": 0, 63 | "unique": 0, 64 | "width": null 65 | }, 66 | { 67 | "_assign": null, 68 | "_comments": null, 69 | "_liked_by": null, 70 | "_user_tags": null, 71 | "allow_in_quick_entry": 0, 72 | "allow_on_submit": 0, 73 | "bold": 0, 74 | "collapsible": 0, 75 | "collapsible_depends_on": null, 76 | "columns": 0, 77 | "creation": "2024-06-10 20:54:40.935840", 78 | "default": "", 79 | "depends_on": null, 80 | "description": null, 81 | "docstatus": 0, 82 | "dt": "Kanban Board", 83 | "fetch_from": "", 84 | "fetch_if_empty": 0, 85 | "fieldname": "custom_highlighted_field", 86 | "fieldtype": "Select", 87 | "hidden": 0, 88 | "hide_border": 0, 89 | "hide_days": 0, 90 | "hide_seconds": 0, 91 | "idx": 11, 92 | "ignore_user_permissions": 0, 93 | "ignore_xss_filter": 0, 94 | "in_global_search": 0, 95 | "in_list_view": 0, 96 | "in_preview": 0, 97 | "in_standard_filter": 0, 98 | "insert_after": "fields", 99 | "is_system_generated": 0, 100 | "is_virtual": 0, 101 | "label": "Highlighted Field", 102 | "length": 0, 103 | "link_filters": null, 104 | "mandatory_depends_on": null, 105 | "modified": "2024-06-10 20:54:40.935840", 106 | "modified_by": "Administrator", 107 | "module": null, 108 | "name": "Kanban Board-custom_highlighted_field", 109 | "no_copy": 0, 110 | "non_negative": 0, 111 | "options": "", 112 | "owner": "Administrator", 113 | "permlevel": 0, 114 | "precision": "", 115 | "print_hide": 0, 116 | "print_hide_if_no_value": 0, 117 | "print_width": null, 118 | "read_only": 0, 119 | "read_only_depends_on": null, 120 | "report_hide": 0, 121 | "reqd": 0, 122 | "search_index": 0, 123 | "show_dashboard": 0, 124 | "sort_options": 0, 125 | "translatable": 0, 126 | "unique": 0, 127 | "width": null 128 | } 129 | ], 130 | "custom_perms": [], 131 | "doctype": "Kanban Board", 132 | "links": [], 133 | "property_setters": [ 134 | { 135 | "_assign": null, 136 | "_comments": null, 137 | "_liked_by": null, 138 | "_user_tags": null, 139 | "creation": "2024-06-11 13:25:13.861705", 140 | "default_value": null, 141 | "doc_type": "Kanban Board", 142 | "docstatus": 0, 143 | "doctype_or_field": "DocType", 144 | "field_name": null, 145 | "idx": 0, 146 | "is_system_generated": 0, 147 | "modified": "2024-06-11 13:25:13.861705", 148 | "modified_by": "Administrator", 149 | "module": null, 150 | "name": "Kanban Board-main-field_order", 151 | "owner": "Administrator", 152 | "property": "field_order", 153 | "property_type": "Data", 154 | "row_name": null, 155 | "value": "[\"kanban_board_name\", \"reference_doctype\", \"field_name\", \"column_break_4\", \"private\", \"show_labels\", \"section_break_3\", \"columns\", \"filters\", \"fields\", \"custom_highlighted_field\", \"custom_highlight_table\"]" 156 | } 157 | ], 158 | "sync_on_migrate": 1 159 | } -------------------------------------------------------------------------------- /quick_kanban/quick_kanban/doctype/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tridz-dev/quick_kanban/8ca57a621591aae46a9c18035fae60448ba0bcf6/quick_kanban/quick_kanban/doctype/__init__.py -------------------------------------------------------------------------------- /quick_kanban/quick_kanban/doctype/kanban_board_highlight/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tridz-dev/quick_kanban/8ca57a621591aae46a9c18035fae60448ba0bcf6/quick_kanban/quick_kanban/doctype/kanban_board_highlight/__init__.py -------------------------------------------------------------------------------- /quick_kanban/quick_kanban/doctype/kanban_board_highlight/kanban_board_highlight.json: -------------------------------------------------------------------------------- 1 | { 2 | "actions": [], 3 | "allow_rename": 1, 4 | "creation": "2024-06-11 11:12:14.156270", 5 | "doctype": "DocType", 6 | "editable_grid": 1, 7 | "engine": "InnoDB", 8 | "field_order": [ 9 | "tag", 10 | "color" 11 | ], 12 | "fields": [ 13 | { 14 | "fieldname": "tag", 15 | "fieldtype": "Data", 16 | "in_list_view": 1, 17 | "label": "Tag", 18 | "reqd": 1 19 | }, 20 | { 21 | "default": "gray", 22 | "fieldname": "color", 23 | "fieldtype": "Select", 24 | "in_list_view": 1, 25 | "label": "Color", 26 | "options": "gray\nblue\ngreen\nred\norange\namber\nyellow\ncyan\nteal\nviolet\npink\npurple", 27 | "reqd": 1 28 | } 29 | ], 30 | "index_web_pages_for_search": 1, 31 | "istable": 1, 32 | "links": [], 33 | "modified": "2024-06-12 10:56:24.028551", 34 | "modified_by": "Administrator", 35 | "module": "Quick-Kanban", 36 | "name": "Kanban Board Highlight", 37 | "owner": "Administrator", 38 | "permissions": [], 39 | "sort_field": "modified", 40 | "sort_order": "DESC", 41 | "states": [] 42 | } -------------------------------------------------------------------------------- /quick_kanban/quick_kanban/doctype/kanban_board_highlight/kanban_board_highlight.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2024, tridz and contributors 2 | # For license information, please see license.txt 3 | 4 | # import frappe 5 | from frappe.model.document import Document 6 | 7 | 8 | class KanbanBoardHighlight(Document): 9 | pass 10 | -------------------------------------------------------------------------------- /quick_kanban/templates/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tridz-dev/quick_kanban/8ca57a621591aae46a9c18035fae60448ba0bcf6/quick_kanban/templates/__init__.py -------------------------------------------------------------------------------- /quick_kanban/templates/pages/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tridz-dev/quick_kanban/8ca57a621591aae46a9c18035fae60448ba0bcf6/quick_kanban/templates/pages/__init__.py -------------------------------------------------------------------------------- /quick_kanban/www/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tridz-dev/quick_kanban/8ca57a621591aae46a9c18035fae60448ba0bcf6/quick_kanban/www/__init__.py -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/helper-string-parser@^7.24.8": 6 | version "7.24.8" 7 | resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" 8 | integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== 9 | 10 | "@babel/helper-validator-identifier@^7.24.7": 11 | version "7.24.7" 12 | resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" 13 | integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== 14 | 15 | "@babel/parser@^7.25.3": 16 | version "7.25.6" 17 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.6.tgz#85660c5ef388cbbf6e3d2a694ee97a38f18afe2f" 18 | integrity sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q== 19 | dependencies: 20 | "@babel/types" "^7.25.6" 21 | 22 | "@babel/types@^7.25.6": 23 | version "7.25.6" 24 | resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.6.tgz#893942ddb858f32ae7a004ec9d3a76b3463ef8e6" 25 | integrity sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw== 26 | dependencies: 27 | "@babel/helper-string-parser" "^7.24.8" 28 | "@babel/helper-validator-identifier" "^7.24.7" 29 | to-fast-properties "^2.0.0" 30 | 31 | "@esbuild/aix-ppc64@0.21.5": 32 | version "0.21.5" 33 | resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" 34 | integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== 35 | 36 | "@esbuild/android-arm64@0.21.5": 37 | version "0.21.5" 38 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" 39 | integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== 40 | 41 | "@esbuild/android-arm@0.21.5": 42 | version "0.21.5" 43 | resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" 44 | integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== 45 | 46 | "@esbuild/android-x64@0.21.5": 47 | version "0.21.5" 48 | resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" 49 | integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== 50 | 51 | "@esbuild/darwin-arm64@0.21.5": 52 | version "0.21.5" 53 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" 54 | integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== 55 | 56 | "@esbuild/darwin-x64@0.21.5": 57 | version "0.21.5" 58 | resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" 59 | integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== 60 | 61 | "@esbuild/freebsd-arm64@0.21.5": 62 | version "0.21.5" 63 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" 64 | integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== 65 | 66 | "@esbuild/freebsd-x64@0.21.5": 67 | version "0.21.5" 68 | resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" 69 | integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== 70 | 71 | "@esbuild/linux-arm64@0.21.5": 72 | version "0.21.5" 73 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" 74 | integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== 75 | 76 | "@esbuild/linux-arm@0.21.5": 77 | version "0.21.5" 78 | resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" 79 | integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== 80 | 81 | "@esbuild/linux-ia32@0.21.5": 82 | version "0.21.5" 83 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" 84 | integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== 85 | 86 | "@esbuild/linux-loong64@0.21.5": 87 | version "0.21.5" 88 | resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" 89 | integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== 90 | 91 | "@esbuild/linux-mips64el@0.21.5": 92 | version "0.21.5" 93 | resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" 94 | integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== 95 | 96 | "@esbuild/linux-ppc64@0.21.5": 97 | version "0.21.5" 98 | resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" 99 | integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== 100 | 101 | "@esbuild/linux-riscv64@0.21.5": 102 | version "0.21.5" 103 | resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" 104 | integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== 105 | 106 | "@esbuild/linux-s390x@0.21.5": 107 | version "0.21.5" 108 | resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" 109 | integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== 110 | 111 | "@esbuild/linux-x64@0.21.5": 112 | version "0.21.5" 113 | resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" 114 | integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== 115 | 116 | "@esbuild/netbsd-x64@0.21.5": 117 | version "0.21.5" 118 | resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" 119 | integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== 120 | 121 | "@esbuild/openbsd-x64@0.21.5": 122 | version "0.21.5" 123 | resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" 124 | integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== 125 | 126 | "@esbuild/sunos-x64@0.21.5": 127 | version "0.21.5" 128 | resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" 129 | integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== 130 | 131 | "@esbuild/win32-arm64@0.21.5": 132 | version "0.21.5" 133 | resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" 134 | integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== 135 | 136 | "@esbuild/win32-ia32@0.21.5": 137 | version "0.21.5" 138 | resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" 139 | integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== 140 | 141 | "@esbuild/win32-x64@0.21.5": 142 | version "0.21.5" 143 | resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" 144 | integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== 145 | 146 | "@jridgewell/sourcemap-codec@^1.5.0": 147 | version "1.5.0" 148 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" 149 | integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== 150 | 151 | "@rollup/rollup-android-arm-eabi@4.21.2": 152 | version "4.21.2" 153 | resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.2.tgz#0412834dc423d1ff7be4cb1fc13a86a0cd262c11" 154 | integrity sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg== 155 | 156 | "@rollup/rollup-android-arm64@4.21.2": 157 | version "4.21.2" 158 | resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.2.tgz#baf1a014b13654f3b9e835388df9caf8c35389cb" 159 | integrity sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA== 160 | 161 | "@rollup/rollup-darwin-arm64@4.21.2": 162 | version "4.21.2" 163 | resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.2.tgz#0a2c364e775acdf1172fe3327662eec7c46e55b1" 164 | integrity sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q== 165 | 166 | "@rollup/rollup-darwin-x64@4.21.2": 167 | version "4.21.2" 168 | resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.2.tgz#a972db75890dfab8df0da228c28993220a468c42" 169 | integrity sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w== 170 | 171 | "@rollup/rollup-linux-arm-gnueabihf@4.21.2": 172 | version "4.21.2" 173 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.2.tgz#1609d0630ef61109dd19a278353e5176d92e30a1" 174 | integrity sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w== 175 | 176 | "@rollup/rollup-linux-arm-musleabihf@4.21.2": 177 | version "4.21.2" 178 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.2.tgz#3c1dca5f160aa2e79e4b20ff6395eab21804f266" 179 | integrity sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w== 180 | 181 | "@rollup/rollup-linux-arm64-gnu@4.21.2": 182 | version "4.21.2" 183 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.2.tgz#c2fe376e8b04eafb52a286668a8df7c761470ac7" 184 | integrity sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw== 185 | 186 | "@rollup/rollup-linux-arm64-musl@4.21.2": 187 | version "4.21.2" 188 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.2.tgz#e62a4235f01e0f66dbba587c087ca6db8008ec80" 189 | integrity sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w== 190 | 191 | "@rollup/rollup-linux-powerpc64le-gnu@4.21.2": 192 | version "4.21.2" 193 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.2.tgz#24b3457e75ee9ae5b1c198bd39eea53222a74e54" 194 | integrity sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ== 195 | 196 | "@rollup/rollup-linux-riscv64-gnu@4.21.2": 197 | version "4.21.2" 198 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.2.tgz#38edfba9620fe2ca8116c97e02bd9f2d606bde09" 199 | integrity sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg== 200 | 201 | "@rollup/rollup-linux-s390x-gnu@4.21.2": 202 | version "4.21.2" 203 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.2.tgz#a3bfb8bc5f1e802f8c76cff4a4be2e9f9ac36a18" 204 | integrity sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ== 205 | 206 | "@rollup/rollup-linux-x64-gnu@4.21.2": 207 | version "4.21.2" 208 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.2.tgz#0dadf34be9199fcdda44b5985a086326344f30ad" 209 | integrity sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw== 210 | 211 | "@rollup/rollup-linux-x64-musl@4.21.2": 212 | version "4.21.2" 213 | resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.2.tgz#7b7deddce240400eb87f2406a445061b4fed99a8" 214 | integrity sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg== 215 | 216 | "@rollup/rollup-win32-arm64-msvc@4.21.2": 217 | version "4.21.2" 218 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.2.tgz#a0ca0c5149c2cfb26fab32e6ba3f16996fbdb504" 219 | integrity sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ== 220 | 221 | "@rollup/rollup-win32-ia32-msvc@4.21.2": 222 | version "4.21.2" 223 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.2.tgz#aae2886beec3024203dbb5569db3a137bc385f8e" 224 | integrity sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw== 225 | 226 | "@rollup/rollup-win32-x64-msvc@4.21.2": 227 | version "4.21.2" 228 | resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.2.tgz#e4291e3c1bc637083f87936c333cdbcad22af63b" 229 | integrity sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA== 230 | 231 | "@types/estree@1.0.5": 232 | version "1.0.5" 233 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" 234 | integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== 235 | 236 | "@vitejs/plugin-vue@^5.0.4": 237 | version "5.1.3" 238 | resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-5.1.3.tgz#42b55c1a4d6f329aea25c5a24db51a31db31c693" 239 | integrity sha512-3xbWsKEKXYlmX82aOHufFQVnkbMC/v8fLpWwh6hWOUrK5fbbtBh9Q/WWse27BFgSy2/e2c0fz5Scgya9h2GLhw== 240 | 241 | "@vue/compiler-core@3.5.0": 242 | version "3.5.0" 243 | resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.5.0.tgz#d12c44faa56eb80c637fef050096e12bcc3bf091" 244 | integrity sha512-ja7cpqAOfw4tyFAxgBz70Z42miNDeaqTxExTsnXDLomRpqfyCgyvZvFp482fmsElpfvsoMJUsvzULhvxUTW6Iw== 245 | dependencies: 246 | "@babel/parser" "^7.25.3" 247 | "@vue/shared" "3.5.0" 248 | entities "^4.5.0" 249 | estree-walker "^2.0.2" 250 | source-map-js "^1.2.0" 251 | 252 | "@vue/compiler-dom@3.5.0": 253 | version "3.5.0" 254 | resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.5.0.tgz#108ed4315968d0197277128c4e5cb689f8a1ddd6" 255 | integrity sha512-xYjUybWZXl+1R/toDy815i4PbeehL2hThiSGkcpmIOCy2HoYyeeC/gAWK/Y/xsoK+GSw198/T5O31bYuQx5uvQ== 256 | dependencies: 257 | "@vue/compiler-core" "3.5.0" 258 | "@vue/shared" "3.5.0" 259 | 260 | "@vue/compiler-sfc@3.5.0": 261 | version "3.5.0" 262 | resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.5.0.tgz#dc1e34a331d5deea9e258a1e10e1b4d711b1afd6" 263 | integrity sha512-B9DgLtrqok2GLuaFjLlSL15ZG3ZDBiitUH1ecex9guh/ZcA5MCdwuVE6nsfQxktuZY/QY0awJ35/ripIviCQTQ== 264 | dependencies: 265 | "@babel/parser" "^7.25.3" 266 | "@vue/compiler-core" "3.5.0" 267 | "@vue/compiler-dom" "3.5.0" 268 | "@vue/compiler-ssr" "3.5.0" 269 | "@vue/shared" "3.5.0" 270 | estree-walker "^2.0.2" 271 | magic-string "^0.30.11" 272 | postcss "^8.4.44" 273 | source-map-js "^1.2.0" 274 | 275 | "@vue/compiler-ssr@3.5.0": 276 | version "3.5.0" 277 | resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.5.0.tgz#b9d31cf32b748fc4e554996c99988cb920c2458b" 278 | integrity sha512-E263QZmA1dqRd7c3u/sWTLRMpQOT0aZ8av/L9SoD/v/BVMZaWFHPUUBswS+bzrfvG2suJF8vSLKx6k6ba5SUdA== 279 | dependencies: 280 | "@vue/compiler-dom" "3.5.0" 281 | "@vue/shared" "3.5.0" 282 | 283 | "@vue/devtools-api@^6.0.0-beta.11": 284 | version "6.6.3" 285 | resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.6.3.tgz#b23a588154cba8986bba82b6e1d0248bde3fd1a0" 286 | integrity sha512-0MiMsFma/HqA6g3KLKn+AGpL1kgKhFWszC9U29NfpWK5LE7bjeXxySWJrOJ77hBz+TBrBQ7o4QJqbPbqbs8rJw== 287 | 288 | "@vue/reactivity@3.5.0": 289 | version "3.5.0" 290 | resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.5.0.tgz#d566bf42a72d862f5dd7840e15ebe702797a2468" 291 | integrity sha512-Ew3F5riP3B3ZDGjD3ZKb9uZylTTPSqt8hAf4sGbvbjrjDjrFb3Jm15Tk1/w7WwTE5GbQ2Qhwxx1moc9hr8A/OQ== 292 | dependencies: 293 | "@vue/shared" "3.5.0" 294 | 295 | "@vue/runtime-core@3.5.0": 296 | version "3.5.0" 297 | resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.5.0.tgz#3c82f489fc9e0752823a821b06227c1f6313fe72" 298 | integrity sha512-mQyW0F9FaNRdt8ghkAs+BMG3iQ7LGgWKOpkzUzR5AI5swPNydHGL5hvVTqFaeMzwecF1g0c86H4yFQsSxJhH1w== 299 | dependencies: 300 | "@vue/reactivity" "3.5.0" 301 | "@vue/shared" "3.5.0" 302 | 303 | "@vue/runtime-dom@3.5.0": 304 | version "3.5.0" 305 | resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.5.0.tgz#514d225c0d0ee63826698ef0240ee29ce217dfd4" 306 | integrity sha512-NQQXjpdXgyYVJ2M56FJ+lSJgZiecgQ2HhxhnQBN95FymXegRNY/N2htI7vOTwpP75pfxhIeYOJ8mE8sW8KAW6A== 307 | dependencies: 308 | "@vue/reactivity" "3.5.0" 309 | "@vue/runtime-core" "3.5.0" 310 | "@vue/shared" "3.5.0" 311 | csstype "^3.1.3" 312 | 313 | "@vue/server-renderer@3.5.0": 314 | version "3.5.0" 315 | resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.5.0.tgz#e332480e58ec5ef6acfecfefc743b1d35ef3f1d3" 316 | integrity sha512-HyDIFUg+l7L4PKrEnJlCYWHUOlm6NxZhmSxIefZ5MTYjkIPfDfkwhX7hqxAQHfgIAE1uLMLQZwuNR/ozI0NhZg== 317 | dependencies: 318 | "@vue/compiler-ssr" "3.5.0" 319 | "@vue/shared" "3.5.0" 320 | 321 | "@vue/shared@3.5.0": 322 | version "3.5.0" 323 | resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.5.0.tgz#4842753ae38bab2323c710a4aff98338f1b0a8f5" 324 | integrity sha512-m9IgiteBpCkFaMNwCOBkFksA7z8QiKc30ooRuoXWUFRDu0mGyNPlFHmbncF0/Kra1RlX8QrmBbRaIxVvikaR0Q== 325 | 326 | ansi-regex@^4.1.0: 327 | version "4.1.1" 328 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.1.tgz#164daac87ab2d6f6db3a29875e2d1766582dabed" 329 | integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g== 330 | 331 | ansi-styles@^3.2.0: 332 | version "3.2.1" 333 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" 334 | integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== 335 | dependencies: 336 | color-convert "^1.9.0" 337 | 338 | anymatch@~3.1.2: 339 | version "3.1.3" 340 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 341 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 342 | dependencies: 343 | normalize-path "^3.0.0" 344 | picomatch "^2.0.4" 345 | 346 | binary-extensions@^2.0.0: 347 | version "2.3.0" 348 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" 349 | integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== 350 | 351 | braces@~3.0.2: 352 | version "3.0.3" 353 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" 354 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== 355 | dependencies: 356 | fill-range "^7.1.1" 357 | 358 | camelcase@^5.0.0: 359 | version "5.3.1" 360 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" 361 | integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== 362 | 363 | chokidar-cli@^3.0.0: 364 | version "3.0.0" 365 | resolved "https://registry.yarnpkg.com/chokidar-cli/-/chokidar-cli-3.0.0.tgz#29283666063b9e167559d30f247ff8fc48794eb7" 366 | integrity sha512-xVW+Qeh7z15uZRxHOkP93Ux8A0xbPzwK4GaqD8dQOYc34TlkqUhVSS59fK36DOp5WdJlrRzlYSy02Ht99FjZqQ== 367 | dependencies: 368 | chokidar "^3.5.2" 369 | lodash.debounce "^4.0.8" 370 | lodash.throttle "^4.1.1" 371 | yargs "^13.3.0" 372 | 373 | chokidar@^3.5.2: 374 | version "3.6.0" 375 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" 376 | integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== 377 | dependencies: 378 | anymatch "~3.1.2" 379 | braces "~3.0.2" 380 | glob-parent "~5.1.2" 381 | is-binary-path "~2.1.0" 382 | is-glob "~4.0.1" 383 | normalize-path "~3.0.0" 384 | readdirp "~3.6.0" 385 | optionalDependencies: 386 | fsevents "~2.3.2" 387 | 388 | cliui@^5.0.0: 389 | version "5.0.0" 390 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" 391 | integrity sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA== 392 | dependencies: 393 | string-width "^3.1.0" 394 | strip-ansi "^5.2.0" 395 | wrap-ansi "^5.1.0" 396 | 397 | color-convert@^1.9.0: 398 | version "1.9.3" 399 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" 400 | integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== 401 | dependencies: 402 | color-name "1.1.3" 403 | 404 | color-name@1.1.3: 405 | version "1.1.3" 406 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" 407 | integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== 408 | 409 | csstype@^3.1.3: 410 | version "3.1.3" 411 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" 412 | integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== 413 | 414 | decamelize@^1.2.0: 415 | version "1.2.0" 416 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" 417 | integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== 418 | 419 | emoji-regex@^7.0.1: 420 | version "7.0.3" 421 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" 422 | integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== 423 | 424 | entities@^4.5.0: 425 | version "4.5.0" 426 | resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" 427 | integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== 428 | 429 | esbuild@^0.21.3: 430 | version "0.21.5" 431 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.21.5.tgz#9ca301b120922959b766360d8ac830da0d02997d" 432 | integrity sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== 433 | optionalDependencies: 434 | "@esbuild/aix-ppc64" "0.21.5" 435 | "@esbuild/android-arm" "0.21.5" 436 | "@esbuild/android-arm64" "0.21.5" 437 | "@esbuild/android-x64" "0.21.5" 438 | "@esbuild/darwin-arm64" "0.21.5" 439 | "@esbuild/darwin-x64" "0.21.5" 440 | "@esbuild/freebsd-arm64" "0.21.5" 441 | "@esbuild/freebsd-x64" "0.21.5" 442 | "@esbuild/linux-arm" "0.21.5" 443 | "@esbuild/linux-arm64" "0.21.5" 444 | "@esbuild/linux-ia32" "0.21.5" 445 | "@esbuild/linux-loong64" "0.21.5" 446 | "@esbuild/linux-mips64el" "0.21.5" 447 | "@esbuild/linux-ppc64" "0.21.5" 448 | "@esbuild/linux-riscv64" "0.21.5" 449 | "@esbuild/linux-s390x" "0.21.5" 450 | "@esbuild/linux-x64" "0.21.5" 451 | "@esbuild/netbsd-x64" "0.21.5" 452 | "@esbuild/openbsd-x64" "0.21.5" 453 | "@esbuild/sunos-x64" "0.21.5" 454 | "@esbuild/win32-arm64" "0.21.5" 455 | "@esbuild/win32-ia32" "0.21.5" 456 | "@esbuild/win32-x64" "0.21.5" 457 | 458 | estree-walker@^2.0.2: 459 | version "2.0.2" 460 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" 461 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== 462 | 463 | fill-range@^7.1.1: 464 | version "7.1.1" 465 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" 466 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== 467 | dependencies: 468 | to-regex-range "^5.0.1" 469 | 470 | find-up@^3.0.0: 471 | version "3.0.0" 472 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" 473 | integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== 474 | dependencies: 475 | locate-path "^3.0.0" 476 | 477 | fsevents@~2.3.2, fsevents@~2.3.3: 478 | version "2.3.3" 479 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" 480 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 481 | 482 | get-caller-file@^2.0.1: 483 | version "2.0.5" 484 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 485 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 486 | 487 | glob-parent@~5.1.2: 488 | version "5.1.2" 489 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 490 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 491 | dependencies: 492 | is-glob "^4.0.1" 493 | 494 | is-binary-path@~2.1.0: 495 | version "2.1.0" 496 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 497 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 498 | dependencies: 499 | binary-extensions "^2.0.0" 500 | 501 | is-extglob@^2.1.1: 502 | version "2.1.1" 503 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 504 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 505 | 506 | is-fullwidth-code-point@^2.0.0: 507 | version "2.0.0" 508 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" 509 | integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== 510 | 511 | is-glob@^4.0.1, is-glob@~4.0.1: 512 | version "4.0.3" 513 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 514 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 515 | dependencies: 516 | is-extglob "^2.1.1" 517 | 518 | is-number@^7.0.0: 519 | version "7.0.0" 520 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 521 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 522 | 523 | locate-path@^3.0.0: 524 | version "3.0.0" 525 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" 526 | integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== 527 | dependencies: 528 | p-locate "^3.0.0" 529 | path-exists "^3.0.0" 530 | 531 | lodash.debounce@^4.0.8: 532 | version "4.0.8" 533 | resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" 534 | integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== 535 | 536 | lodash.throttle@^4.1.1: 537 | version "4.1.1" 538 | resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" 539 | integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ== 540 | 541 | magic-string@^0.30.11: 542 | version "0.30.11" 543 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.11.tgz#301a6f93b3e8c2cb13ac1a7a673492c0dfd12954" 544 | integrity sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A== 545 | dependencies: 546 | "@jridgewell/sourcemap-codec" "^1.5.0" 547 | 548 | nanoid@^3.3.7: 549 | version "3.3.7" 550 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" 551 | integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== 552 | 553 | normalize-path@^3.0.0, normalize-path@~3.0.0: 554 | version "3.0.0" 555 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 556 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 557 | 558 | p-limit@^2.0.0: 559 | version "2.3.0" 560 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 561 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 562 | dependencies: 563 | p-try "^2.0.0" 564 | 565 | p-locate@^3.0.0: 566 | version "3.0.0" 567 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" 568 | integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== 569 | dependencies: 570 | p-limit "^2.0.0" 571 | 572 | p-try@^2.0.0: 573 | version "2.2.0" 574 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 575 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 576 | 577 | path-exists@^3.0.0: 578 | version "3.0.0" 579 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" 580 | integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== 581 | 582 | picocolors@^1.0.1: 583 | version "1.1.0" 584 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" 585 | integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== 586 | 587 | picomatch@^2.0.4, picomatch@^2.2.1: 588 | version "2.3.1" 589 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 590 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 591 | 592 | postcss@^8.4.43, postcss@^8.4.44: 593 | version "8.4.45" 594 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.45.tgz#538d13d89a16ef71edbf75d895284ae06b79e603" 595 | integrity sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q== 596 | dependencies: 597 | nanoid "^3.3.7" 598 | picocolors "^1.0.1" 599 | source-map-js "^1.2.0" 600 | 601 | readdirp@~3.6.0: 602 | version "3.6.0" 603 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 604 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 605 | dependencies: 606 | picomatch "^2.2.1" 607 | 608 | require-directory@^2.1.1: 609 | version "2.1.1" 610 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 611 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 612 | 613 | require-main-filename@^2.0.0: 614 | version "2.0.0" 615 | resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" 616 | integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== 617 | 618 | rollup@^4.20.0: 619 | version "4.21.2" 620 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.21.2.tgz#f41f277a448d6264e923dd1ea179f0a926aaf9b7" 621 | integrity sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw== 622 | dependencies: 623 | "@types/estree" "1.0.5" 624 | optionalDependencies: 625 | "@rollup/rollup-android-arm-eabi" "4.21.2" 626 | "@rollup/rollup-android-arm64" "4.21.2" 627 | "@rollup/rollup-darwin-arm64" "4.21.2" 628 | "@rollup/rollup-darwin-x64" "4.21.2" 629 | "@rollup/rollup-linux-arm-gnueabihf" "4.21.2" 630 | "@rollup/rollup-linux-arm-musleabihf" "4.21.2" 631 | "@rollup/rollup-linux-arm64-gnu" "4.21.2" 632 | "@rollup/rollup-linux-arm64-musl" "4.21.2" 633 | "@rollup/rollup-linux-powerpc64le-gnu" "4.21.2" 634 | "@rollup/rollup-linux-riscv64-gnu" "4.21.2" 635 | "@rollup/rollup-linux-s390x-gnu" "4.21.2" 636 | "@rollup/rollup-linux-x64-gnu" "4.21.2" 637 | "@rollup/rollup-linux-x64-musl" "4.21.2" 638 | "@rollup/rollup-win32-arm64-msvc" "4.21.2" 639 | "@rollup/rollup-win32-ia32-msvc" "4.21.2" 640 | "@rollup/rollup-win32-x64-msvc" "4.21.2" 641 | fsevents "~2.3.2" 642 | 643 | set-blocking@^2.0.0: 644 | version "2.0.0" 645 | resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" 646 | integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== 647 | 648 | sortable-dnd@latest: 649 | version "0.6.16" 650 | resolved "https://registry.yarnpkg.com/sortable-dnd/-/sortable-dnd-0.6.16.tgz#b446c5f83485435b5a6e34497d47200a2293e711" 651 | integrity sha512-oXrWO9ItzbpFQBqK5TnTdRzbuvFHqfweYizJ6rBV7XyZ99w9/7XeCvzouIMiIAOA2qhYENPxmCUVX45Hwr6WuA== 652 | 653 | source-map-js@^1.2.0: 654 | version "1.2.0" 655 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" 656 | integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== 657 | 658 | string-width@^3.0.0, string-width@^3.1.0: 659 | version "3.1.0" 660 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" 661 | integrity sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w== 662 | dependencies: 663 | emoji-regex "^7.0.1" 664 | is-fullwidth-code-point "^2.0.0" 665 | strip-ansi "^5.1.0" 666 | 667 | strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: 668 | version "5.2.0" 669 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" 670 | integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== 671 | dependencies: 672 | ansi-regex "^4.1.0" 673 | 674 | to-fast-properties@^2.0.0: 675 | version "2.0.0" 676 | resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" 677 | integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog== 678 | 679 | to-regex-range@^5.0.1: 680 | version "5.0.1" 681 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 682 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 683 | dependencies: 684 | is-number "^7.0.0" 685 | 686 | vite@^5.2.0: 687 | version "5.4.3" 688 | resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.3.tgz#771c470e808cb6732f204e1ee96c2ed65b97a0eb" 689 | integrity sha512-IH+nl64eq9lJjFqU+/yrRnrHPVTlgy42/+IzbOdaFDVlyLgI/wDlf+FCobXLX1cT0X5+7LMyH1mIy2xJdLfo8Q== 690 | dependencies: 691 | esbuild "^0.21.3" 692 | postcss "^8.4.43" 693 | rollup "^4.20.0" 694 | optionalDependencies: 695 | fsevents "~2.3.3" 696 | 697 | vue-virtual-draglist@^3.3.2: 698 | version "3.3.2" 699 | resolved "https://registry.yarnpkg.com/vue-virtual-draglist/-/vue-virtual-draglist-3.3.2.tgz#25659156970e03505b09149048b5cd685dcb34af" 700 | integrity sha512-CUpTvaT5F2Kb/qqQQVK2X//VgbgOMt8X1fmDdQa6XPoJ/ZPW9LmGVt5lEVr/MnXaTD6qN8gXIyuRKno33/pPbQ== 701 | dependencies: 702 | sortable-dnd latest 703 | 704 | vue@^3.4.21: 705 | version "3.5.0" 706 | resolved "https://registry.yarnpkg.com/vue/-/vue-3.5.0.tgz#39ad668cc76052b058a5160976fb23298afed5da" 707 | integrity sha512-1t70favYoFijwfWJ7g81aTd32obGaAnKYE9FNyMgnEzn3F4YncRi/kqAHHKloG0VXTD8vBYMhbgLKCA+Sk6QDw== 708 | dependencies: 709 | "@vue/compiler-dom" "3.5.0" 710 | "@vue/compiler-sfc" "3.5.0" 711 | "@vue/runtime-dom" "3.5.0" 712 | "@vue/server-renderer" "3.5.0" 713 | "@vue/shared" "3.5.0" 714 | 715 | vuex@^4.0.2: 716 | version "4.1.0" 717 | resolved "https://registry.yarnpkg.com/vuex/-/vuex-4.1.0.tgz#aa1b3ea5c7385812b074c86faeeec2217872e36c" 718 | integrity sha512-hmV6UerDrPcgbSy9ORAtNXDr9M4wlNP4pEFKye4ujJF8oqgFFuxDCdOLS3eNoRTtq5O3hoBDh9Doj1bQMYHRbQ== 719 | dependencies: 720 | "@vue/devtools-api" "^6.0.0-beta.11" 721 | 722 | which-module@^2.0.0: 723 | version "2.0.1" 724 | resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" 725 | integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== 726 | 727 | wrap-ansi@^5.1.0: 728 | version "5.1.0" 729 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-5.1.0.tgz#1fd1f67235d5b6d0fee781056001bfb694c03b09" 730 | integrity sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q== 731 | dependencies: 732 | ansi-styles "^3.2.0" 733 | string-width "^3.0.0" 734 | strip-ansi "^5.0.0" 735 | 736 | y18n@^4.0.0: 737 | version "4.0.3" 738 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" 739 | integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== 740 | 741 | yargs-parser@^13.1.2: 742 | version "13.1.2" 743 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" 744 | integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== 745 | dependencies: 746 | camelcase "^5.0.0" 747 | decamelize "^1.2.0" 748 | 749 | yargs@^13.3.0: 750 | version "13.3.2" 751 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" 752 | integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== 753 | dependencies: 754 | cliui "^5.0.0" 755 | find-up "^3.0.0" 756 | get-caller-file "^2.0.1" 757 | require-directory "^2.1.1" 758 | require-main-filename "^2.0.0" 759 | set-blocking "^2.0.0" 760 | string-width "^3.0.0" 761 | which-module "^2.0.0" 762 | y18n "^4.0.0" 763 | yargs-parser "^13.1.2" 764 | --------------------------------------------------------------------------------