mirror of
https://github.com/purocean/yn.git
synced 2026-09-01 05:35:28 +08:00
upd: remove lucksheet
This commit is contained in:
@@ -108,8 +108,6 @@
|
||||
"juice": "^8.0.0",
|
||||
"katex": "^0.15.3",
|
||||
"lodash-es": "^4.17.21",
|
||||
"luckyexcel": "^1.0.1",
|
||||
"luckysheet": "^2.1.13",
|
||||
"markdown-it": "^12.3.2",
|
||||
"markdown-it-abbr": "^1.0.4",
|
||||
"markdown-it-attributes": "^0.0.8",
|
||||
|
||||
@@ -1,311 +1,34 @@
|
||||
import { defineComponent, h, ref, watch } from 'vue'
|
||||
import { h } from 'vue'
|
||||
import Markdown from 'markdown-it'
|
||||
import { Plugin } from '@fe/context'
|
||||
import { getLogger } from '@fe/utils'
|
||||
import type { Doc } from '@fe/types'
|
||||
import { useModal } from '@fe/support/ui/modal'
|
||||
import { useToast } from '@fe/support/ui/toast'
|
||||
import { dirname, join } from '@fe/utils/path'
|
||||
import { isElectron, openWindow } from '@fe/support/env'
|
||||
import store from '@fe/support/store'
|
||||
import * as api from '@fe/support/api'
|
||||
import { refreshTree } from '@fe/services/tree'
|
||||
import { buildSrc, IFrame } from '@fe/support/embed'
|
||||
import { getCurrentLanguage, t, useI18n } from '@fe/services/i18n'
|
||||
import { DOM_ATTR_NAME, FLAG_DEMO } from '@fe/support/args'
|
||||
import Mask from '@fe/components/Mask.vue'
|
||||
|
||||
const logger = getLogger('plugin-markdown-luckysheet')
|
||||
|
||||
const fileExt = '.luckysheet'
|
||||
|
||||
function buildSrcdoc (repo: string, path: string, full: boolean) {
|
||||
if (!path.endsWith('.luckysheet')) {
|
||||
return 'Error: support luckysheet file only'
|
||||
}
|
||||
|
||||
const lang = getCurrentLanguage() === 'zh-CN' ? 'zh' : 'en'
|
||||
const options = { container: 'lucky-sheet', lang, plugins: ['chart'], showtoolbarConfig: { print: false } }
|
||||
let onload = ''
|
||||
|
||||
if (full) {
|
||||
onload = `
|
||||
const btn = document.createElement('button');
|
||||
btn.style = 'border-radius: 4px;border: 0; background: #d3d4d5; cursor: pointer; margin-left: 10px; color: #24292f; padding: 4px 8px;';
|
||||
btn.innerText = '${t('save')}'
|
||||
btn.onclick = save
|
||||
document.querySelector('.luckysheet_info_detail .sheet-name').after(btn)
|
||||
document.querySelector('.luckysheet_info_detail .luckysheet_info_detail_update').innerText = '${path}'
|
||||
setStatus('${t('file-status.loaded')}')
|
||||
|
||||
${isElectron
|
||||
? `
|
||||
let closeWindow = false
|
||||
const remote = window.nodeRequire && window.nodeRequire('@electron/remote')
|
||||
window.onbeforeunload = evt => {
|
||||
if (saved() || closeWindow) return null
|
||||
|
||||
if (!remote) {
|
||||
return true
|
||||
}
|
||||
|
||||
evt.returnValue = true
|
||||
|
||||
setTimeout(() => {
|
||||
let result = remote.dialog.showMessageBoxSync({
|
||||
type: 'question',
|
||||
cancelId: 1,
|
||||
message: '${t('quit-check-dialog.desc')}',
|
||||
buttons: ['${t('quit-check-dialog.buttons.discard')}', '${t('quit-check-dialog.buttons.cancel')}']
|
||||
})
|
||||
|
||||
if (result === 0) {
|
||||
closeWindow = true
|
||||
remote.getCurrentWindow().close()
|
||||
}
|
||||
})
|
||||
}` : 'window.onbeforeunload = () => saved() ? null : true'
|
||||
}
|
||||
|
||||
window.addEventListener('keydown', e => {
|
||||
const isMacOS = /macintosh|mac os x/i.test(navigator.userAgent)
|
||||
const ctrl = isMacOS ? e.metaKey : e.ctrlKey
|
||||
if (ctrl && e.code === 'KeyS') {
|
||||
save()
|
||||
e.stopPropagation()
|
||||
e.preventDefault()
|
||||
}
|
||||
})
|
||||
`
|
||||
Object.assign(options, {})
|
||||
} else {
|
||||
Object.assign(options, {
|
||||
showtoolbar: false,
|
||||
showinfobar: false,
|
||||
allowEdit: false,
|
||||
showsheetbarConfig: {
|
||||
add: false,
|
||||
menu: false,
|
||||
sheet: true
|
||||
},
|
||||
sheetRightClickConfig: {
|
||||
delete: false,
|
||||
copy: false,
|
||||
rename: false,
|
||||
color: false,
|
||||
hide: false,
|
||||
move: false,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
return `
|
||||
<link rel="stylesheet" href="/embed/plugins/css/pluginsCss.css" />
|
||||
<link rel="stylesheet" href="/embed/plugins/plugins.css" />
|
||||
<link rel="stylesheet" href="/embed/css/luckysheet.css" />
|
||||
<link rel="stylesheet" href="/embed/assets/iconfont/iconfont.css" />
|
||||
<link rel="stylesheet" href="/embed/expendPlugins/chart/chartmix.css" />
|
||||
<style>
|
||||
html, body {
|
||||
height: 100%;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.luckysheet_info_detail_back ,
|
||||
.luckysheet_info_detail .sheet-name {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.luckysheet_info_detail .luckysheet_info_detail_update {
|
||||
font-size: 18px;
|
||||
color: #222;
|
||||
}
|
||||
</style>
|
||||
<div id="lucky-sheet" style="height: 100%"></div>
|
||||
<script src="/embed/plugins/js/plugin.js"></script>
|
||||
<script src="/embed/luckysheet.umd.js"></script>
|
||||
<script>
|
||||
window.getStatus = () => document.querySelector('.luckysheet_info_detail .luckysheet_info_detail_save').innerText
|
||||
window.setStatus = str => document.querySelector('.luckysheet_info_detail .luckysheet_info_detail_save').innerText = str
|
||||
window.saved = () => getStatus().startsWith('${t('lucky-sheet.saved-at')}') || getStatus() === '${t('file-status.loaded')}'
|
||||
|
||||
async function readFile (repo, path) {
|
||||
try {
|
||||
if (embedCtx.args.FLAG_DEMO) {
|
||||
repo = 'help'
|
||||
}
|
||||
|
||||
const { hash, content } = await embedCtx.api.readFile({ repo, path })
|
||||
|
||||
window.hash = hash
|
||||
|
||||
return content
|
||||
} catch (error) {
|
||||
document.getElementById('lucky-sheet').innerHTML = error.message
|
||||
}
|
||||
}
|
||||
|
||||
async function writeFile (repo, path, content) {
|
||||
try {
|
||||
return await embedCtx.api.writeFile({ repo, path, contentHash: window.hash }, content)
|
||||
} catch (error) {
|
||||
repo !== '__help__' && alert(error.message)
|
||||
throw error
|
||||
}
|
||||
}
|
||||
|
||||
function workbookCreateAfter () {
|
||||
${onload}
|
||||
}
|
||||
|
||||
const path = '${path}'
|
||||
const repo = '${repo}'
|
||||
|
||||
async function save () {
|
||||
try {
|
||||
setStatus('${t('file-status.saving')}...')
|
||||
await writeFile(repo, path, JSON.stringify(window.luckysheet.getAllSheets()))
|
||||
setStatus('${t('lucky-sheet.saved-at')}: ' + (new Date()).toLocaleString())
|
||||
await readFile(repo, path)
|
||||
} catch (error) {
|
||||
setStatus('${t('file-status.save-failed')}: ' + error.message)
|
||||
}
|
||||
}
|
||||
|
||||
async function init () {
|
||||
const options = ${JSON.stringify(options)}
|
||||
options.hook = {
|
||||
workbookCreateAfter,
|
||||
updated () {
|
||||
setStatus('${t('file-status.unsaved')}')
|
||||
}
|
||||
}
|
||||
|
||||
const content = await readFile(repo, path)
|
||||
|
||||
options.data = JSON.parse(content)
|
||||
window.luckysheet.create(options)
|
||||
}
|
||||
|
||||
window.addEventListener('load', init)
|
||||
</script>
|
||||
`
|
||||
}
|
||||
|
||||
const LuckyComponent = defineComponent({
|
||||
name: 'lucky-sheet',
|
||||
props: {
|
||||
repo: String,
|
||||
path: String
|
||||
},
|
||||
setup (props) {
|
||||
logger.debug('setup', props)
|
||||
|
||||
useI18n()
|
||||
|
||||
const srcdoc = ref('')
|
||||
const refIFrame = ref<any>()
|
||||
const refFullIFrame = ref<any>()
|
||||
const fullScreen = ref(false)
|
||||
|
||||
const update = () => {
|
||||
srcdoc.value = buildSrcdoc(props.repo!, props.path!, false)
|
||||
}
|
||||
|
||||
const reload = () => {
|
||||
refIFrame.value.reload()
|
||||
}
|
||||
|
||||
const open = () => {
|
||||
fullScreen.value = true
|
||||
}
|
||||
|
||||
const close = async () => {
|
||||
try {
|
||||
refFullIFrame.value.close()
|
||||
fullScreen.value = false
|
||||
} catch {
|
||||
if (await useModal().confirm({ title: t('quit-check-dialog.title'), content: t('quit-check-dialog.desc') })) {
|
||||
fullScreen.value = false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
watch(props, update, { immediate: true })
|
||||
|
||||
if (FLAG_DEMO) {
|
||||
watch([refFullIFrame, refIFrame], () => {
|
||||
if (refIFrame.value) {
|
||||
refIFrame.value.reload = () => {
|
||||
useToast().show('warning', t('demo-tips'))
|
||||
}
|
||||
}
|
||||
|
||||
document.querySelectorAll('iframe.lucky-sheet').forEach(x => {
|
||||
(x as any).contentWindow.fetch = window.fetch
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
const button = (text: string, onClick: any) => h('button', {
|
||||
class: 'small',
|
||||
onClick
|
||||
}, text)
|
||||
|
||||
const topOffset = isElectron ? '30px' : '0px'
|
||||
|
||||
const buildIFrame = (full: boolean) => h(IFrame, {
|
||||
ref: full ? refFullIFrame : refIFrame,
|
||||
html: buildSrcdoc(props.repo!, props.path!, full),
|
||||
debounce: 1000,
|
||||
iframeProps: {
|
||||
class: 'lucky-sheet',
|
||||
style: 'background: #fff; margin: 0;display:block;height: ' + (full ? `calc(100vh - ${topOffset})` : '500px'),
|
||||
width: '100%'
|
||||
}
|
||||
})
|
||||
|
||||
return () => [
|
||||
fullScreen.value && h(Mask, {
|
||||
show: true,
|
||||
maskCloseable: false,
|
||||
escCloseable: false,
|
||||
style: { paddingTop: topOffset }
|
||||
}, [
|
||||
h(
|
||||
'div',
|
||||
{
|
||||
class: 'skip-print',
|
||||
style: 'position: absolute; right: 10px; margin-top: 15px; z-index: 1;'
|
||||
},
|
||||
button(t('close'), close),
|
||||
),
|
||||
buildIFrame(true),
|
||||
]),
|
||||
|
||||
h('div', { class: 'lucky-sheet-wrapper reduce-brightness', style: 'position: relative' }, [
|
||||
h(
|
||||
'div',
|
||||
{ class: 'lucky-sheet-action skip-print' },
|
||||
[
|
||||
button(t('reload'), reload),
|
||||
button(t('edit'), open),
|
||||
button(t('open-in-new-window'), () => {
|
||||
const html = buildSrcdoc(props.repo!, props.path!, true)
|
||||
openWindow(buildSrc(html, t('lucky-sheet.edit-sheet'), false), '_blank', { alwaysOnTop: false })
|
||||
}),
|
||||
]
|
||||
),
|
||||
buildIFrame(false)
|
||||
])
|
||||
]
|
||||
}
|
||||
})
|
||||
import { DOM_ATTR_NAME } from '@fe/support/args'
|
||||
import { getInitialized, getLoadStatus } from '@fe/others/extension'
|
||||
import { t } from '@fe/services/i18n'
|
||||
|
||||
const MarkdownItPlugin = (md: Markdown) => {
|
||||
const extensionId = '@yank-note/extension-luckysheet'
|
||||
|
||||
const checkExtensionLoaded = () => !!getLoadStatus(extensionId).version
|
||||
|
||||
const render = () => {
|
||||
if (!getInitialized()) {
|
||||
return null
|
||||
}
|
||||
|
||||
return h('p', h(
|
||||
'a',
|
||||
{ href: `javascript:ctx.showExtensionManager('${extensionId}')` },
|
||||
h('i', t('install-extension-tips', 'Luckyseet'))
|
||||
))
|
||||
}
|
||||
|
||||
const linkTemp = md.renderer.rules.link_open!.bind(md.renderer.rules)
|
||||
md.renderer.rules.link_open = (tokens, idx, options, env, slf) => {
|
||||
if (checkExtensionLoaded()) {
|
||||
return linkTemp(tokens, idx, options, env, slf)
|
||||
}
|
||||
|
||||
const token = tokens[idx]
|
||||
|
||||
if (token.attrGet('link-type') !== 'luckysheet') {
|
||||
@@ -322,99 +45,12 @@ const MarkdownItPlugin = (md: Markdown) => {
|
||||
return linkTemp(tokens, idx, options, env, slf)
|
||||
}
|
||||
|
||||
const path = join(dirname(currentFile.path), url)
|
||||
|
||||
const nextToken = tokens[idx + 1]
|
||||
if (nextToken && nextToken.type === 'text') {
|
||||
nextToken.content = ''
|
||||
}
|
||||
|
||||
return h(LuckyComponent, { repo: currentFile.repo, path }) as any
|
||||
}
|
||||
}
|
||||
|
||||
async function createLuckysheet (node: Doc) {
|
||||
const currentPath = node.path
|
||||
|
||||
let filename = await useModal().input({
|
||||
title: t('lucky-sheet.create-dialog-title'),
|
||||
hint: t('document.create-dialog.hint'),
|
||||
content: t('document.current-path', currentPath),
|
||||
value: 'new-sheet' + fileExt,
|
||||
select: true
|
||||
})
|
||||
|
||||
if (!filename) {
|
||||
return
|
||||
}
|
||||
|
||||
if (!filename.endsWith(fileExt)) {
|
||||
filename = filename.replace(/\/$/, '') + fileExt
|
||||
}
|
||||
|
||||
const path = join(currentPath, filename)
|
||||
|
||||
if (!path) {
|
||||
throw new Error('Need Path')
|
||||
}
|
||||
|
||||
const file: Doc = { repo: node.repo, path: path, type: 'file', name: '', contentHash: 'new' }
|
||||
|
||||
if (typeof file.content !== 'string') {
|
||||
file.content = JSON.stringify([{
|
||||
name: 'Sheet1',
|
||||
color: '',
|
||||
status: 1,
|
||||
order: 0,
|
||||
data: Array(20).fill(Array(14).fill(null)),
|
||||
config: {
|
||||
merge: {},
|
||||
rowlen: {},
|
||||
rowhidden: {}
|
||||
},
|
||||
index: 0,
|
||||
jfgird_select_save: [],
|
||||
luckysheet_select_save: [{
|
||||
row: [0, 0],
|
||||
column: [0, 0],
|
||||
row_focus: 0,
|
||||
column_focus: 0,
|
||||
left: 0,
|
||||
width: 73,
|
||||
top: 0,
|
||||
height: 19,
|
||||
left_move: 0,
|
||||
width_move: 73,
|
||||
top_move: 0,
|
||||
height_move: 19
|
||||
}],
|
||||
visibledatarow: [],
|
||||
visibledatacolumn: [],
|
||||
ch_width: 4560,
|
||||
rh_height: 1760,
|
||||
luckysheet_selection_range: [],
|
||||
zoomRatio: 1,
|
||||
scrollLeft: 0,
|
||||
scrollTop: 0,
|
||||
calcChain: [],
|
||||
filter_select: null,
|
||||
filter: null,
|
||||
luckysheet_conditionformat_save: [],
|
||||
luckysheet_alternateformat_save: [],
|
||||
dataVerification: {},
|
||||
hyperlink: {},
|
||||
celldata: []
|
||||
}])
|
||||
}
|
||||
|
||||
try {
|
||||
await api.writeFile(file, file.content)
|
||||
const srcdoc = buildSrcdoc(file.repo, file.path, true)
|
||||
openWindow(buildSrc(srcdoc, t('lucky-sheet.edit-sheet'), false), '_blank', { alwaysOnTop: false })
|
||||
refreshTree()
|
||||
} catch (error: any) {
|
||||
useToast().show('warning', error.message)
|
||||
console.error(error)
|
||||
return render() as any
|
||||
}
|
||||
}
|
||||
|
||||
@@ -422,45 +58,5 @@ export default {
|
||||
name: 'markdown-luckysheet',
|
||||
register: ctx => {
|
||||
ctx.markdown.registerPlugin(MarkdownItPlugin)
|
||||
|
||||
ctx.theme.addStyles(`
|
||||
.markdown-view .markdown-body .lucky-sheet-wrapper .lucky-sheet-action {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
top: 3px;
|
||||
z-index: 1;
|
||||
opacity: 0;
|
||||
transition: opacity .2s;
|
||||
}
|
||||
|
||||
.markdown-view .markdown-body .lucky-sheet-wrapper:hover .lucky-sheet-action {
|
||||
opacity: 1;
|
||||
}
|
||||
`)
|
||||
|
||||
ctx.registerHook('TREE_NODE_SELECT', async ({ node }) => {
|
||||
if (node.path.toLowerCase().endsWith(fileExt)) {
|
||||
const srcdoc = buildSrcdoc(node.repo, node.path, true)
|
||||
openWindow(buildSrc(srcdoc, t('lucky-sheet.edit-sheet'), false), '_blank', { alwaysOnTop: false })
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
})
|
||||
|
||||
ctx.tree.tapContextMenus((items, node) => {
|
||||
if (node.type === 'dir') {
|
||||
items.push(
|
||||
{ type: 'separator' },
|
||||
{
|
||||
id: 'create-luckysheet',
|
||||
type: 'normal',
|
||||
label: t('lucky-sheet.create-dialog-title'),
|
||||
onClick: () => createLuckysheet(node)
|
||||
}
|
||||
)
|
||||
}
|
||||
})
|
||||
}
|
||||
} as Plugin
|
||||
|
||||
Vendored
-1
@@ -19,7 +19,6 @@ declare module 'monaco-editor/esm/vs/basic-languages/markdown/markdown.js'
|
||||
declare module 'monaco-editor/esm/vs/editor/contrib/folding/indentRangeProvider.js'
|
||||
declare module 'filenamify/browser'
|
||||
declare module 'katex'
|
||||
declare module 'luckyexcel'
|
||||
declare module 'xterm-theme'
|
||||
declare module 'parse-author'
|
||||
declare module 'js-untar'
|
||||
|
||||
@@ -433,11 +433,6 @@ const data = {
|
||||
'delete-col': 'Delete Column',
|
||||
},
|
||||
},
|
||||
'lucky-sheet': {
|
||||
'saved-at': 'Saved at',
|
||||
'edit-sheet': 'Edit Sheet',
|
||||
'create-dialog-title': 'Create Luckysheet File',
|
||||
},
|
||||
'markdown-link': {
|
||||
'convert-to-titled-link': 'Convert to Titled Link',
|
||||
},
|
||||
|
||||
@@ -434,11 +434,6 @@ const data: BaseLanguage = {
|
||||
'delete-col': '删除列',
|
||||
},
|
||||
},
|
||||
'lucky-sheet': {
|
||||
'saved-at': '保存于',
|
||||
'edit-sheet': '编辑表格',
|
||||
'create-dialog-title': '创建 Luckysheet 文件',
|
||||
},
|
||||
'markdown-link': {
|
||||
'convert-to-titled-link': '转换为带标题的链接',
|
||||
},
|
||||
|
||||
@@ -13,26 +13,6 @@ if (!fs.existsSync(vsDist)) {
|
||||
)
|
||||
}
|
||||
|
||||
// copy lucky-sheet
|
||||
// must use embed dir
|
||||
const luckySheetDist = path.resolve(__dirname, 'src/renderer/public/embed')
|
||||
if (!fs.existsSync(path.join(luckySheetDist, 'luckysheet.umd.js'))) {
|
||||
fs.copySync(
|
||||
path.resolve(__dirname, 'node_modules/luckysheet/dist'),
|
||||
luckySheetDist,
|
||||
{
|
||||
filter: src => {
|
||||
if (src.includes('demoData') || src.includes('esm.js') || src.includes('index.html')) {
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
)
|
||||
}
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig({
|
||||
plugins: [vue(), vueJsx()],
|
||||
|
||||
@@ -516,13 +516,6 @@
|
||||
"@babel/helper-plugin-utils" "^7.16.7"
|
||||
"@babel/plugin-syntax-typescript" "^7.16.7"
|
||||
|
||||
"@babel/runtime@^7.12.1":
|
||||
version "7.14.6"
|
||||
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.14.6.tgz#535203bc0892efc7dec60bdc27b2ecf6e409062d"
|
||||
integrity sha512-/PCB2uJ7oM44tz8YhC4Z/6PeOKXp4K588f+5M3clr1M4zbqztlo0XEfJ2LEzj/FgwfgGcIdl8n7YYjTCI0BYwg==
|
||||
dependencies:
|
||||
regenerator-runtime "^0.13.4"
|
||||
|
||||
"@babel/template@^7.0.0", "@babel/template@^7.16.7":
|
||||
version "7.16.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155"
|
||||
@@ -3616,11 +3609,6 @@ dayjs@^1.10.5:
|
||||
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.5.tgz#5600df4548fc2453b3f163ebb2abbe965ccfb986"
|
||||
integrity sha512-BUFis41ikLz+65iH6LHQCDm4YPMj5r1YFLdupPIyM4SGcXMmtiLQ7U37i+hGS8urIuqe7I/ou3IS1jVc4nbN4g==
|
||||
|
||||
dayjs@^1.9.6:
|
||||
version "1.10.6"
|
||||
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.6.tgz#288b2aa82f2d8418a6c9d4df5898c0737ad02a63"
|
||||
integrity sha512-AztC/IOW4L1Q41A86phW5Thhcrco3xuAA+YX/BLpLWWjRcTj5TOt/QImBLmCKlrF7u7k47arTnOyL6GnbG8Hvw==
|
||||
|
||||
debounce-fn@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.yarnpkg.com/debounce-fn/-/debounce-fn-3.0.1.tgz#034afe8b904d985d1ec1aa589cd15f388741d680"
|
||||
@@ -4875,11 +4863,6 @@ flat-cache@^3.0.4:
|
||||
flatted "^3.1.0"
|
||||
rimraf "^3.0.2"
|
||||
|
||||
flatpickr@^4.6.6:
|
||||
version "4.6.9"
|
||||
resolved "https://registry.yarnpkg.com/flatpickr/-/flatpickr-4.6.9.tgz#9a13383e8a6814bda5d232eae3fcdccb97dc1499"
|
||||
integrity sha512-F0azNNi8foVWKSF+8X+ZJzz8r9sE1G4hl06RyceIaLvyltKvDl6vqk9Lm/6AUUCi5HWaIjiUbk7UpeE/fOXOpw==
|
||||
|
||||
flatted@^3.1.0:
|
||||
version "3.2.4"
|
||||
resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.4.tgz#28d9969ea90661b5134259f312ab6aa7929ac5e2"
|
||||
@@ -5454,11 +5437,6 @@ ignore@^5.1.1, ignore@^5.1.4:
|
||||
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.8.tgz#f150a8b50a34289b33e22f5889abd4d8016f0e57"
|
||||
integrity sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==
|
||||
|
||||
immediate@~3.0.5:
|
||||
version "3.0.6"
|
||||
resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
|
||||
integrity sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=
|
||||
|
||||
import-fresh@^3.0.0, import-fresh@^3.2.1:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b"
|
||||
@@ -6303,11 +6281,6 @@ jest@^27.4.5:
|
||||
import-local "^3.0.2"
|
||||
jest-cli "^27.4.5"
|
||||
|
||||
jquery@^2.2.4:
|
||||
version "2.2.4"
|
||||
resolved "https://registry.yarnpkg.com/jquery/-/jquery-2.2.4.tgz#2c89d6889b5eac522a7eea32c14521559c6cbf02"
|
||||
integrity sha1-LInWiJterFIqfuoywUUhVZxsvwI=
|
||||
|
||||
js-stringify@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/js-stringify/-/js-stringify-1.0.2.tgz#1736fddfd9724f28a3682adc6230ae7e4e9679db"
|
||||
@@ -6505,16 +6478,6 @@ jstransformer@1.0.0:
|
||||
is-promise "^2.0.0"
|
||||
promise "^7.0.1"
|
||||
|
||||
jszip@^3.5.0:
|
||||
version "3.7.1"
|
||||
resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.7.1.tgz#bd63401221c15625a1228c556ca8a68da6fda3d9"
|
||||
integrity sha512-ghL0tz1XG9ZEmRMcEN2vt7xabrDdqHHeykgARpmZ0BiIctWxM47Vt63ZO2dnp4QYt/xJVLLy5Zv1l/xRdh2byg==
|
||||
dependencies:
|
||||
lie "~3.3.0"
|
||||
pako "~1.0.2"
|
||||
readable-stream "~2.3.6"
|
||||
set-immediate-shim "~1.0.1"
|
||||
|
||||
juice@^8.0.0:
|
||||
version "8.0.0"
|
||||
resolved "https://registry.yarnpkg.com/juice/-/juice-8.0.0.tgz#ac77d3372373409b06a875aee425b9d381f645fe"
|
||||
@@ -6670,13 +6633,6 @@ levn@~0.3.0:
|
||||
prelude-ls "~1.1.2"
|
||||
type-check "~0.3.2"
|
||||
|
||||
lie@~3.3.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a"
|
||||
integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==
|
||||
dependencies:
|
||||
immediate "~3.0.5"
|
||||
|
||||
lines-and-columns@^1.1.6:
|
||||
version "1.1.6"
|
||||
resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00"
|
||||
@@ -6828,25 +6784,6 @@ lru-cache@^6.0.0:
|
||||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
luckyexcel@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/luckyexcel/-/luckyexcel-1.0.1.tgz#55791f28bb5393e9dff8ba77c11f9c05f9ceb5ae"
|
||||
integrity sha512-hvbJmCXNp/vST/huA6sieDn32Ib8bd80L9aIu5ZGxniJvZle7VlpHZrl6weLGaEnX99+t7cPAoYGqrqbfZp/AQ==
|
||||
dependencies:
|
||||
jszip "^3.5.0"
|
||||
|
||||
luckysheet@^2.1.13:
|
||||
version "2.1.13"
|
||||
resolved "https://registry.yarnpkg.com/luckysheet/-/luckysheet-2.1.13.tgz#685d5fc790efddb12d8562294d5f4e41c5ba032d"
|
||||
integrity sha512-ZotItRKh3fxEtYz0GrZxkf97jeQSGsJpFNAu1I0NMDQ6rVrHAWKeggFak5pClGQ3DP62Gi8kd+8rzOpyY/UNZw==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.12.1"
|
||||
dayjs "^1.9.6"
|
||||
flatpickr "^4.6.6"
|
||||
jquery "^2.2.4"
|
||||
numeral "^2.0.6"
|
||||
pako "^1.0.11"
|
||||
|
||||
lunr@^2.3.9:
|
||||
version "2.3.9"
|
||||
resolved "https://registry.yarnpkg.com/lunr/-/lunr-2.3.9.tgz#18b123142832337dd6e964df1a5a7707b25d35e1"
|
||||
@@ -7253,11 +7190,6 @@ nth-check@^2.0.1:
|
||||
dependencies:
|
||||
boolbase "^1.0.0"
|
||||
|
||||
numeral@^2.0.6:
|
||||
version "2.0.6"
|
||||
resolved "https://registry.yarnpkg.com/numeral/-/numeral-2.0.6.tgz#4ad080936d443c2561aed9f2197efffe25f4e506"
|
||||
integrity sha1-StCAk21EPCVhrtnyGX7//iX05QY=
|
||||
|
||||
nwsapi@^2.2.0:
|
||||
version "2.2.0"
|
||||
resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7"
|
||||
@@ -7433,11 +7365,6 @@ package-json@^6.3.0:
|
||||
registry-url "^5.0.0"
|
||||
semver "^6.2.0"
|
||||
|
||||
pako@^1.0.11, pako@~1.0.2:
|
||||
version "1.0.11"
|
||||
resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
|
||||
integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
|
||||
|
||||
pako@^2.0.4:
|
||||
version "2.0.4"
|
||||
resolved "https://registry.yarnpkg.com/pako/-/pako-2.0.4.tgz#6cebc4bbb0b6c73b0d5b8d7e8476e2b2fbea576d"
|
||||
@@ -7975,11 +7902,6 @@ redent@^3.0.0:
|
||||
indent-string "^4.0.0"
|
||||
strip-indent "^3.0.0"
|
||||
|
||||
regenerator-runtime@^0.13.4:
|
||||
version "0.13.7"
|
||||
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55"
|
||||
integrity sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==
|
||||
|
||||
regexpp@^3.0.0, regexpp@^3.1.0:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
|
||||
@@ -8219,11 +8141,6 @@ set-blocking@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
|
||||
integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc=
|
||||
|
||||
set-immediate-shim@~1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
|
||||
integrity sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=
|
||||
|
||||
setprototypeof@1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
|
||||
|
||||
Reference in New Issue
Block a user