From 71de56850b50f465253bbe01510c9e5f718ab160 Mon Sep 17 00:00:00 2001 From: liaibo Date: Wed, 21 Jan 2026 18:21:10 +0800 Subject: [PATCH] =?UTF-8?q?0.3.3=20=E5=A4=96=E7=BD=91=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 30 +- CLAUDE.md | 211 ++-- CODE_INDEX.md | 130 +-- scripts/run_wolai_import_test.js | 80 ++ src/components/sidebar/sidebar.tsx | 17 - src/lib/documents.ts | 27 +- wolai-frontend/convex/_generated/api.js | 2 +- .../convex/_generated/dataModel.d.ts | 2 +- wolai-frontend/convex/_generated/server.d.ts | 2 +- wolai-frontend/convex/_generated/server.js | 2 +- wolai-frontend/convex/documents.ts | 2 +- .../expendPlugins/libs/exceljs.min.js | 240 ++--- .../expendPlugins/libs/luckyexcel.umd.js | 6 +- .../public/luckysheet/luckysheet.umd.js | 4 +- .../public/luckysheet/plugins/js/plugin.js | 2 +- wolai-frontend/scripts/dev-server.js | 14 +- .../src/app/(app)/wolai-import/page.tsx | 151 +++ .../src/app/api/ai-agent/run/route.ts | 147 ++- .../src/app/api/media/sign/route.ts | 37 +- .../src/app/api/media/signed-url/route.ts | 38 +- .../src/app/api/onlyoffice/proxy/route.ts | 2 +- .../src/app/api/wolai-import/route.ts | 985 ++++++++++++++++++ .../app/onlyoffice/OnlyOfficeClientPage.tsx | 16 +- .../src/components/ai-agent/AiAgentPanel.tsx | 7 +- .../editor/DocumentAiAgentPanel.tsx | 15 +- .../components/editor/blocknote-editor.tsx | 5 +- .../components/editor/blocks/MediaBlock.tsx | 3 - .../editor/blocks/MindmapAiAgentPanel.tsx | 2 +- .../components/editor/blocks/MindmapBlock.tsx | 4 +- .../components/editor/document-content.tsx | 9 +- .../online-table/FullScreenTableEditor.tsx | 2 +- .../onlyoffice/OnlyOfficeAiAgentPanel.tsx | 3 +- .../src/components/sidebar/sidebar.tsx | 35 + .../src/hooks/use-convex-sidebar-data.ts | 11 +- .../src/lib/ai/openaiCompatibleChat.ts | 14 +- wolai-frontend/src/lib/api-utils.ts | 161 +++ wolai-frontend/src/lib/constants.ts | 127 +++ wolai-frontend/src/lib/documents.test.ts | 130 +++ wolai-frontend/src/lib/documents.ts | 27 +- wolai-frontend/src/lib/file-tree/rows.test.ts | 26 +- wolai-frontend/src/lib/file-tree/rows.ts | 6 + wolai-frontend/src/lib/runtime-config.ts | 4 +- wolai-frontend/src/lib/type-guards.ts | 187 ++++ .../src/lib/url/browser-file-url.ts | 42 + wolai-frontend/src/types/jsdom.d.ts | 8 + 45 files changed, 2499 insertions(+), 476 deletions(-) create mode 100644 scripts/run_wolai_import_test.js create mode 100644 wolai-frontend/src/app/(app)/wolai-import/page.tsx create mode 100644 wolai-frontend/src/app/api/wolai-import/route.ts create mode 100644 wolai-frontend/src/lib/api-utils.ts create mode 100644 wolai-frontend/src/lib/constants.ts create mode 100644 wolai-frontend/src/lib/documents.test.ts create mode 100644 wolai-frontend/src/lib/type-guards.ts create mode 100644 wolai-frontend/src/lib/url/browser-file-url.ts create mode 100644 wolai-frontend/src/types/jsdom.d.ts diff --git a/AGENTS.md b/AGENTS.md index 279e1816..377b55cc 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,34 +1,34 @@ -# Repository Guidelines +# 仓库协作指南(AGENTS) + +## 关键事实(防止误判) +- **当前已使用 Convex 完全替换 Supabase**:任何新功能/修复都应以 Convex 为唯一数据源与鉴权/权限基础。 +- 仓库内可能仍存在 `supabase/`、`supabase.md`、`wolai-frontend/src/lib/supabase/`、`@supabase/*` 依赖等**历史遗留**:除非任务明确要求清理,否则不要基于它们继续扩展实现。 ## 项目结构与模块组织 - `wolai-frontend/`:主前端(Next.js),源码在 `wolai-frontend/src/`,静态资源在 `wolai-frontend/public/`。 -- `wolai-backend/`:后端(FastAPI + Celery),源码在 `wolai-backend/app/`。 +- `wolai-frontend/convex/`:Convex functions(schema / query / mutation / action 等)。 +- `infra/convex/`:Convex 自托管(Docker Compose + README + 本地 `.env`)。 +- `wolai-backend/`:后端(FastAPI + Celery),主要用于辅助能力(如 OCR、OnlyOffice/集成类服务等)。 - `services/`:配套服务与集成点(如 `services/mineru/` OCR、RAG 相关服务等)。 -- `supabase/`:本地 Supabase 迁移与配置(参考 `supabase.md` 的本地端口说明)。 - `pw-tests/`:端到端测试(Playwright + Python),脚本在 `pw-tests/scripts/`,产物在 `pw-tests/artifacts/`。 -- 根目录 `src/`:Next.js 相关代码与共享模块(如 `src/app/`、`src/components/` 等)。 +- 根目录 `src/`:Next.js 相关代码与共享模块(可能为历史/镜像目录;优先改 `wolai-frontend/src/`)。 ## 构建、测试与本地开发命令 - 一键热启动(推荐):在仓库根目录执行 `npm run desktop:hot`(启动 `wolai-frontend` + `wolai-backend`;Redis 可用时自动启动 Celery)。 - 前端:`cd wolai-frontend && pnpm dev|build|start`;质量检查:`pnpm lint`;单测:`pnpm test`。 - 后端:`cd wolai-backend && pip install -r requirements.txt`;运行:`uvicorn app.main:app --reload --port 8000`;Worker:`celery -A app.workers.celery_app worker --loglevel=info`。 - E2E:`cd pw-tests/scripts && python e2e_mindmap_sync.py`(更多脚本见 `pw-tests/README.md`)。 +- Convex(自托管)启动:见 `infra/convex/README.md`。 ## 编码风格与命名约定 - 文件编码:统一使用 UTF-8;缩进建议:TS/TSX 2 空格,Python 4 空格。 - 命名示例:组件 `PascalCase.tsx`,hooks `useXxx.ts`,测试文件 `*.test.ts(x)`(Vitest 配置包含 `src/**/*.test.ts(x)`)。 - 优先遵循现有 ESLint/Vitest 配置(见 `eslint.config.mjs`、`vitest.config.ts`)。 -## 提交与 Pull Request 规范 -- 提交信息在历史中常见两类:版本号摘要(如 `0.1.13 ...`)与类 Conventional Commits(如 `feat(mindmap): ...` / `fix(mindmap): ...` / `chore: ...`)。新增提交建议延续该风格。 -- PR 需要:变更说明(动机/影响范围)、必要的 UI 截图、可复现步骤或测试结果、关联的 issue/任务链接。 - -## 安全与配置提示 -- 不要提交密钥/Token/账号;本地配置优先放在 `.env.local`、`wolai-frontend/.env.local`、`wolai-backend/.env`。 -- 如发现敏感信息已进入仓库,请立即轮换密钥,并与维护者确认是否需要清理历史记录。 - -## Agent/自动化协作注意 -- 仅修改与目标相关的文件;不要擅自回滚、覆盖或丢弃他人改动;代码注释使用简体中文并保持 UTF-8。 +## 协作边界(重要) +- 仅修改与目标相关的文件;遇到与任务无关的改动保持不动;若认为会影响任务,先与维护者确认。 +- 严禁自行还原、覆盖或丢弃他人/用户已有改动(包括未提交文件)。如需清理或回滚,必须先得到明确同意。 +- 不需要进行任何 git 操作(由维护者手动确认与提交)。 ## 代码索引 -- 更细的前后端代码层级索引见 `CODE_INDEX.md`(按路由/API/模块/职责整理,便于后续快速定位与开发)。 +- 更细的前后端代码层级索引见 `CODE_INDEX.md`(按路由/API/模块/职责整理)。 diff --git a/CLAUDE.md b/CLAUDE.md index 00af4b50..e2177fad 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1,167 +1,124 @@ # CLAUDE.md -This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. +本文件用于指导 Claude Code(claude.ai/code)在此仓库中进行开发与协作。 -## Project Overview +## 重要(防止误判) +- **当前已使用 Convex 完全替换 Supabase**:数据读写、鉴权与权限控制以 Convex 为主线。 +- 仓库内若仍存在 `supabase/`、`supabase.md`、`wolai-frontend/src/lib/supabase/`、`@supabase/*` 依赖或相关代码,均应视为**历史遗留/兼容残留**;除非任务明确要求,否则不要基于它们继续扩展实现。 -MNOTE is a knowledge management system combining Notion-like block documents, mind mapping, and AI-powered productivity tools. Built as a hybrid web/desktop application with local-first capabilities. +## 项目概览 +MNOTE 是一个知识管理系统,结合类 Notion 的块编辑器、思维导图与 AI 工具,支持 Web/桌面(Electron)混合形态。 -**Tech Stack:** -- Frontend: Next.js 16 (App Router), React 19, BlockNote editor -- Backend: FastAPI + Celery (Python) -- Desktop: Electron with embedded Next.js standalone -- Database: Supabase (PostgreSQL), migrating to Convex for some features -- AI: Tool-based agent system with 30+ built-in tools +**技术栈(核心)** +- 前端:Next.js(App Router)、React、BlockNote +- 数据层:Convex(自托管见 `infra/convex/`;functions 见 `wolai-frontend/convex/`) +- 后端(辅助能力):FastAPI + Celery(OCR / OnlyOffice / 集成服务等) +- 桌面端:Electron(内嵌 Next.js standalone) +- AI:工具型 Agent 系统(30+ 内置工具) -## Development Commands +## 常用命令 -### Quick Start +### 快速启动(推荐) ```bash -npm run desktop:hot # Start frontend + backend + Celery (recommended) -npm run desktop:local # Local-only mode (offline) -npm run desktop # Production desktop mode +npm run desktop:hot # 启动前端 + 后端(Redis 可用时启 Celery) +npm run desktop:local # 本地离线模式 +npm run desktop # 桌面端生产模式 ``` -### Frontend Only (wolai-frontend/) +### 仅前端(wolai-frontend/) ```bash -pnpm dev # Next.js dev server on port 3000 -pnpm build # Production build -pnpm start # Start production server -pnpm lint # ESLint check -pnpm test # Run Vitest unit tests +pnpm dev +pnpm build +pnpm start +pnpm lint +pnpm test ``` -### Backend Only (wolai-backend/) +### 仅后端(wolai-backend/) ```bash pip install -r requirements.txt -uvicorn app.main:app --reload --port 8000 # FastAPI dev server -celery -A app.workers.celery_app worker --loglevel=info # Celery worker +uvicorn app.main:app --reload --port 8000 +celery -A app.workers.celery_app worker --loglevel=info ``` -### Desktop Build -```bash -npm run build:desktop:next # Build Next.js standalone to desktop-electron/desktop-next/ -npm run dist:win # Build Windows NSIS installer -``` +### Convex(自托管) +按 `infra/convex/README.md` 启动(Docker Compose)。 -### Testing +### E2E 测试 ```bash cd pw-tests/scripts -python e2e_mindmap_sync.py # Run E2E test +python e2e_mindmap_sync.py ``` -## Architecture +## 架构与目录 -### Directory Structure +### 目录结构(关键) ``` -wolai-frontend/ # Main Next.js frontend (ACTIVE - use this) -├── src/ -│ ├── app/ # Next.js App Router -│ │ ├── (app)/ # Main app layout (sidebar + content) -│ │ ├── (auth)/ # Auth pages -│ │ ├── api/ # API routes (BFF pattern) -│ │ ├── documents/[id]/ # Document pages -│ │ └── mindmap/ # Mindmap pages -│ ├── components/ -│ │ ├── editor/ # Editor components (BlockNote, blocks) -│ │ └── sidebar/ # File tree navigation -│ ├── lib/ -│ │ ├── ai-agent/ # AI agent runtime & tools -│ │ ├── supabase/ # Supabase client wrappers -│ │ └── mindmap/ # Mindmap storage/logic -│ └── store/ # Zustand state stores -wolai-backend/ # FastAPI backend -├── app/ -│ ├── main.py # FastAPI entry point -│ ├── routers/ # API routes -│ ├── services/ # Business logic -│ └── workers/ # Celery tasks -desktop-electron/ # Electron wrapper -supabase/ # Database migrations +wolai-frontend/ # 主前端(优先在这里改) + src/ # Next.js 源码 + convex/ # Convex functions(schema/query/mutation/action) + public/ # 静态资源 + mnote-env.json 等 +infra/convex/ # Convex 自托管(compose + README) +wolai-backend/ # FastAPI 后端(辅助能力) +services/ # 配套服务(OCR/RAG 等) +pw-tests/ # 端到端测试 +desktop-electron/ # Electron 包装 +supabase/ # 历史遗留(不要当作现行架构) ``` -**WARNING:** Root `src/` directory may be legacy/mirror. Always work in `wolai-frontend/src/` for frontend changes. +**注意:**仓库根目录的 `src/` 可能是历史/镜像目录;前端改动优先在 `wolai-frontend/src/`。 -### Key Patterns +### 关键模式 +- **BFF(Backend for Frontend)**:Next.js Route Handlers 负责鉴权与调用 Convex(query/mutation/action),前端页面通过这些 API/或 Convex provider 获取数据。 +- **桌面端与 Web 共用代码**:桌面端通过运行期注入配置(`window.__MNOTE_RUNTIME_CONFIG__`)实现同一套前端在不同网络/环境下运行。 +- **思维导图是一等公民**:以结构化 JSON 存储,支持节点引用(附件、URL + 页码)、AI 扩写等。 -**BFF (Backend for Frontend):** Next.js API routes handle auth + Supabase queries. Frontend never talks directly to Supabase (except via client library). +## 环境变量与配置 -**AI Agent System:** Tool-based architecture with execution loop, SSE streaming, and permission model (read/write). See `wolai-frontend/src/lib/ai-agent/`. - -**Desktop + Web Parity:** Same Next.js codebase serves both. Desktop uses embedded server with runtime config override (`window.__MNOTE_RUNTIME_CONFIG__`). - -**Mindmap First-Class:** Stored as structured JSON, not just visualization. Supports node refs (attachments, URLs with page numbers), AI expansion. - -## Environment Configuration - -### Required Variables - -**wolai-frontend/.env.local:** +### 前端(wolai-frontend/.env.local) +至少需要: ```bash -NEXT_PUBLIC_SUPABASE_URL=... -NEXT_PUBLIC_SUPABASE_ANON_KEY=... -NEXT_PUBLIC_BACKEND_URL=... -NEXT_PUBLIC_ONLYOFFICE_BASE_URL=... +NEXT_PUBLIC_CONVEX_URL=... # 浏览器侧 Convex URL(云端或自托管) +NEXT_PUBLIC_USE_CONVEX=1 # 开启 Convex 模式(或 USE_CONVEX=1) +NEXT_PUBLIC_BACKEND_URL=... # FastAPI(如启用 OCR/OnlyOffice 等) +NEXT_PUBLIC_ONLYOFFICE_BASE_URL=... # OnlyOffice(如启用) ``` -**wolai-backend/.env:** +### 服务端(仅在需要服务端直连/管理权限时) ```bash -SUPABASE_URL=... -SUPABASE_SERVICE_ROLE_KEY=... -REDIS_URL=redis://localhost:6379/0 -FRONTEND_URL=http://localhost:3000 +CONVEX_SELF_HOSTED_URL=... +CONVEX_SELF_HOSTED_ADMIN_KEY=... ``` -**AI Configuration (ai.md or env):** -``` -apikey: sk-xxx -https://api.openai.com/v1 -gpt-4 -``` +### 桌面端运行期配置 +桌面端会读取/合并运行期配置(如 `public/mnote-env.json` 与桌面配置文件)。以 Convex 为主线配置即可;若看到 Supabase 字段,默认当作历史兼容残留处理。 -**Desktop (auto-generated in data/electron/config.json):** -```json -{ - "networkMode": "remote-client|local|tunnel|auto", - "supabaseUrl": "...", - "backendUrl": "..." -} -``` +## 编码约定 +- 文件编码:UTF-8;代码注释允许中文(建议简体)。 +- 缩进:TS/TSX 2 空格,Python 4 空格。 +- 命名:组件 `PascalCase`,hooks `useXxx`,测试 `*.test.ts(x)`。 +- 导入:使用 `@/` 作为绝对路径别名。 -## Coding Conventions +## 关键文件(快速上手) +- `wolai-frontend/src/app/layout.tsx`:根布局与运行期配置注入(Convex provider 挂载)。 +- `wolai-frontend/src/components/providers/convex-provider.tsx`:Convex React Client 初始化与 Provider。 +- `wolai-frontend/src/lib/convex/`:Convex client/server/route 封装。 +- `wolai-frontend/convex/`:Convex functions(数据模型与后端逻辑)。 +- `wolai-frontend/src/lib/ai-agent/runtime/runAgent.ts`:AI agent 引擎。 +- `wolai-frontend/src/lib/ai-agent/tools/builtins/registryBuiltins.ts`:内置工具注册表。 +- `scripts/desktop-hot.js`:开发编排脚本。 +- `AGENTS.md`:仓库协作指南(中文)。 +- `CODE_INDEX.md`:代码索引(中文)。 -- **File encoding:** UTF-8, Chinese comments allowed -- **Indentation:** 2 spaces (TS/TSX), 4 spaces (Python) -- **Naming:** PascalCase for components (`MindmapBlock.tsx`), `useXxx` for hooks, `*.test.ts(x)` for tests -- **Imports:** Use `@/` alias for absolute imports -- **Commits:** Version tags (`0.1.13 ...`) or conventional commits (`feat(mindmap):`, `fix:`, `chore:`) +## 其他注意事项 +- 不要提交密钥/Token/账号;本地配置优先放在 `.env.local`、`wolai-frontend/.env.local`、`wolai-backend/.env`。 +- 路由目录含 `()` 和 `[]`(如 `(app)`、`[id]`),PowerShell 中操作建议用 `-LiteralPath` 避免通配符误匹配。 -## Key Files for Understanding +## AI Agent 工具开发 +新增 AI 能力时,在 `wolai-frontend/src/lib/ai-agent/tools/builtins/` 注册工具,按 scope 组织: +- Global:search_web、docs_search/read +- Mindmap:mindmap_get、mindmap_apply_ops +- Document:doc_get、doc_insert_blocks +- OnlyOffice:oo_get_selection、oo_replace_selection -- `wolai-frontend/src/app/layout.tsx` - Root providers -- `wolai-frontend/src/lib/ai-agent/runtime/runAgent.ts` - AI agent engine -- `wolai-frontend/src/lib/ai-agent/tools/builtins/registryBuiltins.ts` - All AI tools -- `wolai-frontend/src/components/editor/document-content.tsx` - Editor core -- `wolai-frontend/src/components/editor/blocks/MindmapBlock.tsx` - Mindmap UI -- `desktop-electron/main.js` - Desktop entry point -- `scripts/desktop-hot.js` - Dev orchestration -- `AGENTS.md` - Project guidelines (Chinese) -- `CODE_INDEX.md` - Complete code map (Chinese) - -## Important Notes - -- Never commit API keys or tokens -- Use existing ESLint/Vitest configurations -- Desktop data stored in `/data/` (portable) -- Supabase local: see `supabase.md` for ports/URLs -- Route directories contain `()` and `[]` - use `-LiteralPath` in PowerShell - -## AI Agent Tool Development - -When adding new AI capabilities, register tools in `wolai-frontend/src/lib/ai-agent/tools/builtins/`. Tools are organized by scope: -- **Global:** search_web, docs_search/read -- **Mindmap:** mindmap_get, mindmap_apply_ops -- **Document:** doc_get, doc_insert_blocks -- **OnlyOffice:** oo_get_selection, oo_replace_selection - -Permission model: `{ read: "allow" | "confirm", write: "allow" | "confirm" }` +权限模型:`{ read: "allow" | "confirm", write: "allow" | "confirm" }` diff --git a/CODE_INDEX.md b/CODE_INDEX.md index a96f030a..d781ef1c 100644 --- a/CODE_INDEX.md +++ b/CODE_INDEX.md @@ -2,94 +2,66 @@ 本文用于后续开发“快速定位入口/职责/调用链”,按目录与功能点整理。路径以仓库根目录为基准。 +## 关键事实(防止误判) +- **当前已使用 Convex 完全替换 Supabase**:数据读写、鉴权与权限控制以 Convex 为主线。 +- 仓库内若仍出现 `supabase/`、`supabase.md`、`wolai-frontend/src/lib/supabase/`、`wolai-backend/app/services/supabase_rest.py` 等,均应视为**历史遗留**(除非任务明确要求,否则不要继续扩展)。 + ## 启动链路与关键入口 -- 一键启动脚本:`scripts/desktop-hot.js`(启动 `wolai-frontend` + `wolai-backend`,Redis 可用时启动 Celery)。 -- 前端入口(Next App Router): - - 根布局:`wolai-frontend/src/app/layout.tsx`(创建 Supabase Server Client,注入 `SupabaseProvider`/`QueryProvider`)。 - - 首页跳转:`wolai-frontend/src/app/page.tsx`(未登录跳 `/login`;确保默认工作区;跳转首个文档或创建“新页面”)。 -- 后端入口(FastAPI):`wolai-backend/app/main.py`(挂载 `root_router` 与 `/api/v1` 的 `api_router`)。 +- 一键热启动脚本:`scripts/desktop-hot.js`(启动 `wolai-frontend` + `wolai-backend`;Redis 可用时启动 Celery)。 +- 前端入口(Next.js App Router):`wolai-frontend/src/app/layout.tsx`(注入 runtime config;挂载 Convex provider)。 +- 运行期配置:`wolai-frontend/src/lib/runtime-config.ts`(读取 env / public 配置并注入到 `window.__MNOTE_RUNTIME_CONFIG__`)。 +- Convex 自托管(基础设施):`infra/convex/docker-compose.yml`、`infra/convex/README.md`。 +- Convex functions(后端逻辑/数据模型):`wolai-frontend/convex/`。 +- 后端入口(FastAPI):`wolai-backend/app/main.py`(辅助能力与集成服务,例如 OCR / OnlyOffice 等)。 ## 前端(wolai-frontend) ### 页面路由(App Router) -- 登录页:`wolai-frontend/src/app/(auth)/login/page.tsx` -- 主应用布局:`wolai-frontend/src/app/(app)/layout.tsx`(组装侧边栏数据:workspaces、documents、trash、media、mindmap 资产等)。 -- 文档页:`wolai-frontend/src/app/(app)/documents/[id]/page.tsx`(读取 documents 表的标题/选项/统计,渲染 `DocumentShell`) -- 思维导图全屏页:`wolai-frontend/src/app/mindmap/[docId]/[mindmapId]/page.tsx` -- 在线表格页:`wolai-frontend/src/app/tables/[tableId]/view/page.tsx` -- OnlyOffice 页:`wolai-frontend/src/app/onlyoffice/page.tsx` -- 调试页: - - AI Agent:`wolai-frontend/src/app/dev/ai-agent/page.tsx` - - Mindmap:`wolai-frontend/src/app/dev/mindmap/page.tsx` +- 登录/鉴权:`wolai-frontend/src/app/(auth)/`(如 `wolai-frontend/src/app/(auth)/auth/page.tsx`)。 +- 主应用布局:`wolai-frontend/src/app/(app)/layout.tsx`。 +- 文档页:`wolai-frontend/src/app/(app)/documents/[id]/page.tsx`。 +- 思维导图全屏页:`wolai-frontend/src/app/mindmap/[docId]/[mindmapId]/page.tsx`。 +- OnlyOffice:`wolai-frontend/src/app/onlyoffice/`。 +- 调试页:`wolai-frontend/src/app/dev/`(AI Agent / Mindmap 等)。 -### API(Next Route Handlers) -这些接口基本承担“鉴权 + 读写 Supabase + 返回给前端”的 BFF 职责: -- 文档:`wolai-frontend/src/app/api/documents/*/route.ts` - - content/title/options/save/create/duplicate/move/delete/restore/purge/stats/copy-tree/... -- 思维导图:`wolai-frontend/src/app/api/mindmap/**/route.ts` - - `api/mindmap/[docId]/route.ts`、`api/mindmap/[docId]/[mindmapId]/route.ts`、`api/mindmap/[docId]/[mindmapId]/ops/route.ts` - - `api/mindmap/[id]/route.ts`(按 id 的路由分支) -- 思维导图 AI:`wolai-frontend/src/app/api/mindmap-ai/*/route.ts` - - `agent` / `assets` / `expand-node` / `outline-to-mindmap` / `test-pdf` -- 媒体/附件:`wolai-frontend/src/app/api/media/*/route.ts` - - upload/sign/signed-url/assets/batch/ocr/empty-trash/purge -- AI Agent(统一入口):`wolai-frontend/src/app/api/ai-agent/run/route.ts` - - 负责:加载在线/本地模型配置、构建 tool registry、按 scope 过滤工具、SSE 流式返回。 -- 后端探活转发:`wolai-frontend/src/app/api/backend/health/route.ts` -- 其它:`wolai-frontend/src/app/api/search/*`、`wolai-frontend/src/app/api/sidebar/route.ts`、`wolai-frontend/src/app/api/workspaces/switch/route.ts` 等。 +### API(Next Route Handlers / BFF) +这些接口承担“鉴权 + 调用 Convex(query/mutation/action)+ 返回前端”的 BFF 职责: +- 文档相关:`wolai-frontend/src/app/api/documents/*/route.ts`。 +- 思维导图相关:`wolai-frontend/src/app/api/mindmap/**/route.ts`。 +- 思维导图 AI:`wolai-frontend/src/app/api/mindmap-ai/*/route.ts`。 +- 媒体/附件:`wolai-frontend/src/app/api/media/*/route.ts`。 +- AI Agent 统一入口:`wolai-frontend/src/app/api/ai-agent/run/route.ts`。 +- OnlyOffice 代理:`wolai-frontend/src/app/api/onlyoffice/proxy/route.ts`。 + +### Convex(前端接入层) +- Convex React Provider:`wolai-frontend/src/components/providers/convex-provider.tsx`。 +- Convex API/Client 封装:`wolai-frontend/src/lib/convex/`(如 `api.ts`、`route.ts`、`server.ts`、`enabled.ts`)。 +- Sidebar(Convex 数据来源):`wolai-frontend/src/hooks/use-convex-sidebar-data.ts`、`wolai-frontend/src/components/sidebar/sidebar.tsx`。 ### 编辑器与核心 UI -- 文档壳(客户端动态加载编辑器):`wolai-frontend/src/components/editor/document-shell.tsx` -- 文档内容(核心编辑/保存/选项/历史/AI 面板):`wolai-frontend/src/components/editor/document-content.tsx` -- BlockNote 编辑器:`wolai-frontend/src/components/editor/blocknote-editor.tsx` -- Block 级功能(重点在思维导图/媒体/表格): - - 思维导图 Block:`wolai-frontend/src/components/editor/blocks/MindmapBlock.tsx` - - 思维导图侧栏/工具栏:`wolai-frontend/src/components/editor/blocks/MindmapSidebar.tsx`、`wolai-frontend/src/components/editor/blocks/MindmapToolbar.tsx` - - AI Agent 面板:`wolai-frontend/src/components/editor/blocks/MindmapAiAgentPanel.tsx`、`wolai-frontend/src/components/editor/DocumentAiAgentPanel.tsx` -- 侧边栏(文件树/回收站/资源):`wolai-frontend/src/components/sidebar/sidebar.tsx`、`wolai-frontend/src/components/sidebar/file-tree.tsx` +- 文档壳:`wolai-frontend/src/components/editor/document-shell.tsx`。 +- 文档内容:`wolai-frontend/src/components/editor/document-content.tsx`。 +- BlockNote 编辑器:`wolai-frontend/src/components/editor/blocknote-editor.tsx`。 +- 思维导图 Block:`wolai-frontend/src/components/editor/blocks/MindmapBlock.tsx`。 +- 侧边栏:`wolai-frontend/src/components/sidebar/`。 -### 状态与业务库(lib/store) -- Supabase 客户端封装:`wolai-frontend/src/lib/supabase/{client.ts,server.ts,admin.ts}` -- 工作区与侧边栏数据:`wolai-frontend/src/lib/workspaces.ts`、`wolai-frontend/src/lib/sidebar-tree.ts` -- 文件树算法与单测:`wolai-frontend/src/lib/file-tree/*`(`*.test.ts` 是 Vitest 单测入口之一) -- 思维导图存储/操作:`wolai-frontend/src/lib/mindmap/*`、`wolai-frontend/src/lib/mindmap-files.ts` -- AI 配置:`wolai-frontend/src/lib/ai/*` -- AI Agent 引擎: - - 运行时:`wolai-frontend/src/lib/ai-agent/runtime/runAgent.ts` - - 工具注册:`wolai-frontend/src/lib/ai-agent/tools/registry.ts` - - 内置工具集合:`wolai-frontend/src/lib/ai-agent/tools/builtins/registryBuiltins.ts` 与 `tools/builtins/*/*Tools.ts` -- Zustand stores:`wolai-frontend/src/store/*`(如 `editor-bridge.ts`、`sidebar.ts`、`ai-agent-ui.ts`) +### AI Agent(工具系统) +- 运行时:`wolai-frontend/src/lib/ai-agent/runtime/runAgent.ts`。 +- 工具注册:`wolai-frontend/src/lib/ai-agent/tools/builtins/registryBuiltins.ts`。 + +### 状态管理 +- Zustand stores:`wolai-frontend/src/store/*`。 ## 后端(wolai-backend) +后端主要承担辅助能力与集成服务(如 OCR/异步任务/OnlyOffice 等),数据主链路以 Convex 为准: +- FastAPI 入口:`wolai-backend/app/main.py`。 +- 路由聚合:`wolai-backend/app/routers/__init__.py`。 +- 健康检查:`wolai-backend/app/routers/health.py`。 +- OCR/任务相关:`wolai-backend/app/routers/tasks.py`、`wolai-backend/app/services/*`。 +- Celery:`wolai-backend/app/workers/*`。 -### FastAPI 路由与鉴权 -- 路由聚合:`wolai-backend/app/routers/__init__.py` - - `root_router`:`/health` + `ws`(Luckysheet) - - `api_router`(前缀 `/api/v1`):tasks/chat -- 健康检查:`wolai-backend/app/routers/health.py`(GET `/health`) -- 任务(OCR):`wolai-backend/app/routers/tasks.py` - - POST `/api/v1/tasks/ocr`(鉴权:`AuthDep`,创建 `background_tasks` 记录并投递 Celery) - - GET `/api/v1/tasks/{task_id}`(查询任务状态) -- SSE 占位对话:`wolai-backend/app/routers/chat.py`(GET `/api/v1/chat?query=...&document_id=...`) -- Luckysheet 协同 WS:`wolai-backend/app/routers/luckysheet_ws.py`(`/ws/luckysheet`,校验 Supabase 用户与 workspace 成员关系) -- 鉴权依赖:`wolai-backend/app/deps.py`(通过 Supabase `/auth/v1/user` 验证 Bearer token) - -### Celery 与服务层 -- Celery 配置:`wolai-backend/app/workers/celery_app.py` -- Celery 任务:`wolai-backend/app/workers/tasks.py` - - `ocr_pipeline`:stage0 占位实现(更新 `background_tasks` 状态;回写 `documents.content/raw_text/index_status`) -- Supabase REST 封装:`wolai-backend/app/services/supabase_rest.py` -- 任务追踪:`wolai-backend/app/services/task_tracker.py`(写入/读取 `background_tasks`) -- 占位集成点: - - MinerU:`wolai-backend/app/services/mineru_service.py` - - LightRAG:`wolai-backend/app/services/lightrag_service.py` -- 配置:`wolai-backend/app/config.py`(`.env`,UTF-8) - -## Supabase(本地与迁移) -- 本地端口与 URL 说明:`supabase.md` -- 迁移目录:`supabase/migrations/` - -## 备注(避免踩坑) -- `wolai-frontend` 才是 `desktop-hot` 启动的实际前端;根目录的 `src/` 与其结构相似,可能是历史/镜像目录,改动前建议先确认是否仍在使用。 -- 路由目录包含括号与中括号(如 `(app)`、`[id]`),在 PowerShell 中操作建议用 `-LiteralPath` 避免通配符误匹配。 - +## 历史遗留(不要当作现行架构) +若你看到以下路径/模块,请默认它们不再是当前主线(除非任务明确要求处理): +- `supabase/`、`supabase.md` +- `wolai-frontend/src/lib/supabase/` +- `wolai-backend/app/services/supabase_rest.py` diff --git a/scripts/run_wolai_import_test.js b/scripts/run_wolai_import_test.js new file mode 100644 index 00000000..306b8eb8 --- /dev/null +++ b/scripts/run_wolai_import_test.js @@ -0,0 +1,80 @@ +// 说明:用于本地快速验证 Wolai ZIP 导入流程(Playwright)。 +// 注意:仅用于开发/测试;请勿在生产环境使用。 + +const { chromium } = require("@playwright/test"); + +const BASE_URL = process.env.MNOTE_TEST_BASE_URL || "http://127.0.0.1:3000"; +const ZIP_PATH = process.env.MNOTE_TEST_ZIP_PATH || "C:\\\\Users\\\\liaib\\\\Downloads\\\\软件开发.zip"; +const ROOT_MD_PATH = process.env.MNOTE_TEST_ROOT_MD_PATH || "ChB6p4/软件开发.md"; + +async function main() { + const browser = await chromium.launch({ headless: true }); + const context = await browser.newContext(); + const page = await context.newPage(); + + page.setDefaultTimeout(60_000); + + // 1) 打开 /auth(若已登录会跳转到 /) + await page.goto(`${BASE_URL}/auth`, { waitUntil: "networkidle" }); + + // 2) 如果还没登录,点“测试账号快速登录” + const url1 = page.url(); + if (url1.includes("/auth")) { + const quickLogin = page.getByRole("button", { name: "测试账号快速登录" }); + if (await quickLogin.isVisible().catch(() => false)) { + await quickLogin.click(); + } else { + // 兜底:尝试手动点击“登录”按钮(如果用户已填写) + const submit = page.getByRole("button", { name: "登录" }); + if (await submit.isVisible().catch(() => false)) await submit.click(); + } + } + + // 3) 等跳转到首页(或至少不在 /auth) + await page.waitForURL((u) => !u.toString().includes("/auth"), { timeout: 120_000 }); + + // 4) 打开导入页 + await page.goto(`${BASE_URL}/wolai-import`, { waitUntil: "networkidle" }); + + // 5) 填本地路径(大文件不要上传) + const zipInput = page.locator('input[placeholder*="个人.zip"]').first(); + await zipInput.fill(ZIP_PATH); + const rootInput = page.locator('input[placeholder*="dQeAax/个人.md"]').first(); + await rootInput.fill(ROOT_MD_PATH); + + // 6) 开始导入 + const respPromise = page.waitForResponse( + (r) => r.url().includes("/api/wolai-import") && r.request().method() === "POST", + { timeout: 20 * 60_000 }, + ); + await page.getByRole("button", { name: "开始导入" }).click(); + + const resp = await respPromise; + const status = resp.status(); + const text = await resp.text().catch(() => ""); + console.log("导入接口返回:", status); + if (text) { + console.log("响应体:", text.slice(0, 4000)); + } + + if (status >= 200 && status < 300) { + let json = null; + try { + json = JSON.parse(text); + } catch { + // ignore + } + const rootDocumentId = json && typeof json.rootDocumentId === "string" ? json.rootDocumentId : ""; + if (rootDocumentId) { + await page.goto(`${BASE_URL}/documents/${encodeURIComponent(rootDocumentId)}`, { waitUntil: "networkidle" }); + console.log("导入成功,已打开:", page.url()); + } + } + + await browser.close(); +} + +main().catch((err) => { + console.error("导入测试失败:", err); + process.exit(1); +}); diff --git a/src/components/sidebar/sidebar.tsx b/src/components/sidebar/sidebar.tsx index d7689a8c..96c76c6e 100644 --- a/src/components/sidebar/sidebar.tsx +++ b/src/components/sidebar/sidebar.tsx @@ -40,7 +40,6 @@ import type { SidebarInitialData, SidebarSectionId } from "@/components/sidebar/ import { useSidebarData } from "@/hooks/use-sidebar-data"; import { PrivateTree } from "@/components/sidebar/private-tree"; import { buildSidebarSectionsFromTree, flattenDocumentTree } from "@/lib/sidebar-tree"; -import { supabaseBrowser } from "@/lib/supabase/client"; import { useSearchPaletteStore } from "@/store/search-palette"; import { FileTree } from "@/components/sidebar/file-tree"; import type { MediaAsset } from "@/types/media"; @@ -112,22 +111,6 @@ export function Sidebar({ initialData }: SidebarProps) { await sidebarQuery.refetch(); }, [sidebarQuery]); - useEffect(() => { - const channel = supabaseBrowser - .channel("documents-feed") - .on( - "postgres_changes", - { event: "*", schema: "public", table: "documents" }, - () => { - void refreshTree(); - }, - ) - .subscribe(); - return () => { - supabaseBrowser.removeChannel(channel); - }; - }, [refreshTree]); - const sections = useMemo(() => buildSidebarSectionsFromTree(tree), [tree]); const starredNodes = useMemo(() => sections.find((section) => section.id === "starred")?.nodes ?? [], [sections]); const publicNodes = useMemo(() => sections.find((section) => section.id === "public")?.nodes ?? [], [sections]); diff --git a/src/lib/documents.ts b/src/lib/documents.ts index dc17c74a..c2bcf74d 100644 --- a/src/lib/documents.ts +++ b/src/lib/documents.ts @@ -16,13 +16,36 @@ export interface DocumentNode extends DocumentRecord { } export function buildDocumentTree(records: DocumentRecord[]): DocumentNode[] { + // 防御性处理:当上游数据意外包含重复 id 时,避免生成重复节点导致渲染 key 冲突。 + // 以“最后一次出现”为准(与原先 nodeMap.set 的覆盖行为保持一致)。 + const seen = new Set(); + const duplicatedIds = new Set(); + const uniqueRecords: DocumentRecord[] = []; + for (let i = records.length - 1; i >= 0; i--) { + const record = records[i]; + if (seen.has(record.id)) { + duplicatedIds.add(record.id); + continue; + } + seen.add(record.id); + uniqueRecords.push(record); + } + uniqueRecords.reverse(); + + if (duplicatedIds.size > 0 && process.env.NODE_ENV !== "production") { + // eslint-disable-next-line no-console + console.warn( + `[buildDocumentTree] 检测到重复文档 id(已自动去重):${Array.from(duplicatedIds).slice(0, 10).join(", ")}${duplicatedIds.size > 10 ? "…" : ""}`, + ); + } + const nodeMap = new Map(); - records.forEach((record) => { + uniqueRecords.forEach((record) => { nodeMap.set(record.id, { ...record, children: [] }); }); const roots: DocumentNode[] = []; - records.forEach((record) => { + uniqueRecords.forEach((record) => { const node = nodeMap.get(record.id); if (!node) return; if (record.parent_id && nodeMap.has(record.parent_id)) { diff --git a/wolai-frontend/convex/_generated/api.js b/wolai-frontend/convex/_generated/api.js index 44bf9858..9124e129 100644 --- a/wolai-frontend/convex/_generated/api.js +++ b/wolai-frontend/convex/_generated/api.js @@ -1,4 +1,4 @@ -/* eslint-disable */ + /** * Generated `api` utility. * diff --git a/wolai-frontend/convex/_generated/dataModel.d.ts b/wolai-frontend/convex/_generated/dataModel.d.ts index f97fd194..f29136b0 100644 --- a/wolai-frontend/convex/_generated/dataModel.d.ts +++ b/wolai-frontend/convex/_generated/dataModel.d.ts @@ -1,4 +1,4 @@ -/* eslint-disable */ + /** * Generated data model types. * diff --git a/wolai-frontend/convex/_generated/server.d.ts b/wolai-frontend/convex/_generated/server.d.ts index bec05e68..a6e81e75 100644 --- a/wolai-frontend/convex/_generated/server.d.ts +++ b/wolai-frontend/convex/_generated/server.d.ts @@ -1,4 +1,4 @@ -/* eslint-disable */ + /** * Generated utilities for implementing server-side Convex query and mutation functions. * diff --git a/wolai-frontend/convex/_generated/server.js b/wolai-frontend/convex/_generated/server.js index bf3d25ad..8df38674 100644 --- a/wolai-frontend/convex/_generated/server.js +++ b/wolai-frontend/convex/_generated/server.js @@ -1,4 +1,4 @@ -/* eslint-disable */ + /** * Generated utilities for implementing server-side Convex query and mutation functions. * diff --git a/wolai-frontend/convex/documents.ts b/wolai-frontend/convex/documents.ts index e9f717ca..42719910 100644 --- a/wolai-frontend/convex/documents.ts +++ b/wolai-frontend/convex/documents.ts @@ -328,7 +328,7 @@ export const move = mutation({ if (movedId && item._id === movedId) patch.updated_at = ts; if (Object.keys(patch).length > 0) { - // eslint-disable-next-line no-await-in-loop + await ctx.db.patch(item._id, patch); } } diff --git a/wolai-frontend/public/luckysheet/expendPlugins/libs/exceljs.min.js b/wolai-frontend/public/luckysheet/expendPlugins/libs/exceljs.min.js index ab2c9d6e..cff921db 100644 --- a/wolai-frontend/public/luckysheet/expendPlugins/libs/exceljs.min.js +++ b/wolai-frontend/public/luckysheet/expendPlugins/libs/exceljs.min.js @@ -13,7 +13,7 @@ const { } } = require('../utils/utils'); -/* eslint-disable quote-props */ + const SpecialValues = { true: true, false: false, @@ -258,7 +258,7 @@ module.exports = Anchor; },{"../utils/col-cache":19}],3:[function(require,module,exports){ "use strict"; -/* eslint-disable max-classes-per-file */ + const colCache = require('../utils/col-cache'); const _ = require('../utils/under-dash'); const Enums = require('./enums'); @@ -2127,7 +2127,7 @@ class Row { // Inform Streaming Writer that this row (and all rows before it) are complete // and ready to write. Has no effect on Worksheet document commit() { - this._worksheet._commitRow(this); // eslint-disable-line no-underscore-dangle + this._worksheet._commitRow(this); } // helps GC by breaking cyclic references @@ -2189,12 +2189,12 @@ class Row { cDst = this.getCell(i); cDst.value = cSrc.value; cDst.style = cSrc.style; - // eslint-disable-next-line no-underscore-dangle + cDst._comment = cSrc._comment; } else if (cDst) { cDst.value = null; cDst.style = {}; - // eslint-disable-next-line no-underscore-dangle + cDst._comment = undefined; } } @@ -2206,7 +2206,7 @@ class Row { cDst = this.getCell(i + nExpand); cDst.value = cSrc.value; cDst.style = cSrc.style; - // eslint-disable-next-line no-underscore-dangle + cDst._comment = cSrc._comment; } else { this._cells[i + nExpand - 1] = undefined; @@ -2219,7 +2219,7 @@ class Row { cDst = this.getCell(start + i); cDst.value = inserts[i]; cDst.style = {}; - // eslint-disable-next-line no-underscore-dangle + cDst._comment = undefined; } } @@ -2486,7 +2486,7 @@ module.exports = Row; },{"../utils/col-cache":19,"../utils/under-dash":26,"./cell":3,"./enums":7}],12:[function(require,module,exports){ "use strict"; -/* eslint-disable max-classes-per-file */ + const colCache = require('../utils/col-cache'); class Column { // wrapper around column model, allowing access and manipulation @@ -2500,7 +2500,7 @@ class Column { this.column[name] = value; } - /* eslint-disable lines-between-class-members */ + get name() { return this.column.name; } @@ -2543,7 +2543,7 @@ class Column { set totalsRowFormula(value) { this._set('totalsRowFormula', value); } - /* eslint-enable lines-between-class-members */ + } class Table { @@ -2861,7 +2861,7 @@ class Table { target[prop] = value; } - /* eslint-disable lines-between-class-members */ + get ref() { return this.table.ref; } @@ -2922,7 +2922,7 @@ class Table { set showColumnStripes(value) { this.table.style.showColumnStripes = value; } - /* eslint-enable lines-between-class-members */ + } module.exports = Table; @@ -2982,7 +2982,7 @@ class Workbook { // if options is a color, call it tabColor (and signal deprecated message) if (options) { if (typeof options === 'string') { - // eslint-disable-next-line no-console + console.trace('tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { argb: "rbg value" } }'); options = { properties: { @@ -2992,7 +2992,7 @@ class Workbook { } }; } else if (options.argb || options.theme || options.indexed) { - // eslint-disable-next-line no-console + console.trace('tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { ... } }'); options = { properties: { @@ -3276,7 +3276,7 @@ class Worksheet { throw new Error(`The first or last character of worksheet name cannot be a single quotation mark: ${name}`); } if (name && name.length > 31) { - // eslint-disable-next-line no-console + console.warn(`Worksheet name ${name} exceeds 31 chars. This will be truncated`); name = name.substring(0, 31); } @@ -3378,12 +3378,12 @@ class Worksheet { // must iterate over all rows whether they exist yet or not for (let i = 0; i < nRows; i++) { const rowArguments = [start, count]; - // eslint-disable-next-line no-loop-func + inserts.forEach(insert => { rowArguments.push(insert[i] || null); }); const row = this.getRow(i + 1); - // eslint-disable-next-line prefer-spread + row.splice.apply(row, rowArguments); } } else { @@ -3559,7 +3559,7 @@ class Worksheet { const rSrc = this.getRow(src); const rDst = this.getRow(dest); rDst.style = copyStyle(rSrc.style); - // eslint-disable-next-line no-loop-func + rSrc.eachCell({ includeEmpty: styleEmpty }, (cell, colNumber) => { @@ -3581,7 +3581,7 @@ class Worksheet { const rDst = this._rows[rowNum + i]; rDst.style = rSrc.style; rDst.height = rSrc.height; - // eslint-disable-next-line no-loop-func + rSrc.eachCell({ includeEmpty: true }, (cell, colNumber) => { @@ -3612,7 +3612,7 @@ class Worksheet { rDst.values = rSrc.values; rDst.style = rSrc.style; rDst.height = rSrc.height; - // eslint-disable-next-line no-loop-func + rSrc.eachCell({ includeEmpty: true }, (cell, colNumber) => { @@ -3632,7 +3632,7 @@ class Worksheet { rDst.values = rSrc.values; rDst.style = rSrc.style; rDst.height = rSrc.height; - // eslint-disable-next-line no-loop-func + rSrc.eachCell({ includeEmpty: true }, (cell, colNumber) => { @@ -3818,7 +3818,7 @@ class Worksheet { if (Array.isArray(results[0])) { getResult = (row, col) => results[row - top][col - left]; } else { - // eslint-disable-next-line no-mixed-operators + getResult = (row, col) => results[(row - top) * width + (col - left)]; } } else { @@ -3937,12 +3937,12 @@ class Worksheet { // =========================================================================== // Deprecated get tabColor() { - // eslint-disable-next-line no-console + console.trace('worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor'); return this.properties.tabColor; } set tabColor(value) { - // eslint-disable-next-line no-console + console.trace('worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor'); this.properties.tabColor = value; } @@ -4034,7 +4034,7 @@ module.exports = Worksheet; },{"../utils/col-cache":19,"../utils/copy-style":20,"../utils/encryptor":21,"../utils/under-dash":26,"./column":4,"./data-validations":5,"./enums":7,"./image":8,"./range":10,"./row":11,"./table":12}],15:[function(require,module,exports){ "use strict"; -/* eslint-disable import/no-extraneous-dependencies,node/no-unpublished-require */ +/* eslint-disable node/no-unpublished-require */ require('core-js/modules/es.promise'); require('core-js/modules/es.promise.finally'); require('core-js/modules/es.object.assign'); @@ -4713,7 +4713,7 @@ module.exports = { (function (process,Buffer){(function (){ "use strict"; -/* eslint-disable max-classes-per-file */ + const Stream = require('readable-stream'); const utils = require('./utils'); const StringBuf = require('./string-buf'); @@ -4750,7 +4750,7 @@ class StringBufChunk { // copy to target buffer copy(target, targetOffset, offset, length) { - // eslint-disable-next-line no-underscore-dangle + return this._data._buf.copy(target, targetOffset, offset, length); } toBuffer() { @@ -5123,7 +5123,7 @@ class StringBuf { if (this.length + inBuf.length > this.capacity) { this._grow(this.length + inBuf.length); } - // eslint-disable-next-line no-underscore-dangle + inBuf._buf.copy(this._buf, this._inPos, 0, inBuf.length); this._inPos += inBuf.length; } @@ -5277,7 +5277,7 @@ const _ = { const { length } = arguments; - // eslint-disable-next-line one-var + let src, clone, copyIsArray; function assignValue(val, key) { src = target[key]; @@ -5310,7 +5310,7 @@ const fs = require('fs'); // useful stuff const inherits = function (cls, superCtor, statics, prototype) { - // eslint-disable-next-line no-underscore-dangle + cls.super_ = superCtor; if (!prototype) { prototype = statics; @@ -5337,7 +5337,7 @@ const inherits = function (cls, superCtor, statics, prototype) { cls.prototype = Object.create(superCtor.prototype, properties); }; -// eslint-disable-next-line no-control-regex + const xmlDecodeRegex = /[<>&'"\x7F\x00-\x08\x0B-\x0C\x0E-\x1F]/; const utils = { nop() {}, @@ -5969,7 +5969,7 @@ const parseSax = require('../../utils/parse-sax'); const XmlStream = require('../../utils/xml-stream'); /* 'virtual' methods used as a form of documentation */ -/* eslint-disable class-methods-use-this */ + // Base class for Xforms class BaseXform { @@ -7232,7 +7232,7 @@ module.exports = VmlTextboxXform; const BaseXform = require('./base-xform'); /* 'virtual' methods used as a form of documentation */ -/* eslint-disable class-methods-use-this */ + // base class for xforms that are composed of other xforms // offers some default implementations @@ -10169,7 +10169,7 @@ module.exports = DatabarXform; },{"../../composite-xform":48,"../../style/color-xform":128,"./cfvo-xform":84}],89:[function(require,module,exports){ "use strict"; -/* eslint-disable max-classes-per-file */ + const BaseXform = require('../../base-xform'); const CompositeXform = require('../../composite-xform'); class X14IdXform extends BaseXform { @@ -10697,7 +10697,7 @@ module.exports = DrawingXform; },{"../base-xform":32}],96:[function(require,module,exports){ "use strict"; -/* eslint-disable max-classes-per-file */ + const CompositeXform = require('../composite-xform'); const ConditionalFormattingsExt = require('./cf-ext/conditional-formattings-ext-xform'); class ExtXform extends CompositeXform { @@ -13309,7 +13309,7 @@ module.exports = AlignmentXform; },{"../../../doc/enums":7,"../../../utils/utils":27,"../base-xform":32}],127:[function(require,module,exports){ "use strict"; -/* eslint-disable max-classes-per-file */ + const BaseXform = require('../base-xform'); const utils = require('../../../utils/utils'); const ColorXform = require('./color-xform'); @@ -13669,7 +13669,7 @@ module.exports = DxfXform; },{"../base-xform":32,"./alignment-xform":126,"./border-xform":127,"./fill-xform":130,"./font-xform":131,"./numfmt-xform":132,"./protection-xform":133}],130:[function(require,module,exports){ "use strict"; -/* eslint-disable max-classes-per-file */ + const BaseXform = require('../base-xform'); const ColorXform = require('./color-xform'); class StopXform extends BaseXform { @@ -14387,7 +14387,7 @@ module.exports = StyleXform; },{"../base-xform":32,"./alignment-xform":126,"./protection-xform":133}],135:[function(require,module,exports){ "use strict"; -/* eslint-disable max-classes-per-file */ + const Enums = require('../../../doc/enums'); const XmlStream = require('../../../utils/xml-stream'); const BaseXform = require('../base-xform'); @@ -15739,7 +15739,7 @@ class XLSX { }; const zip = await JSZip.loadAsync(buffer); for (const entry of Object.values(zip.files)) { - /* eslint-disable no-await-in-loop */ + if (!entry.dir) { let entryName = entry.name; if (entryName[0] === '/') { @@ -16417,7 +16417,7 @@ class RowFormatter { } return Object.keys(row); } - // eslint-disable-next-line @typescript-eslint/no-shadow + static createTransform(transformFunction) { if (types_1.isSyncTransform(transformFunction)) { return (row, cb) => { @@ -16670,7 +16670,7 @@ exports.writeToPath = (path, rows, options) => { },{"./CsvFormatterStream":146,"./FormatterOptions":147,"./types":152,"buffer":220,"fs":216,"stream":505,"util":527}],152:[function(require,module,exports){ "use strict"; -/* eslint-disable @typescript-eslint/no-explicit-any */ + Object.defineProperty(exports, "__esModule", { value: true }); @@ -16723,7 +16723,7 @@ class CsvParserStream extends stream_1.Transform { this.rowTransformerValidator.rowValidator = validateFunction; return this; } - // eslint-disable-next-line @typescript-eslint/no-explicit-any + emit(event) { if (event === 'end') { if (!this.endEmitted) { @@ -16891,7 +16891,7 @@ class CsvParserStream extends stream_1.Transform { } static wrapDoneCallback(done) { let errorCalled = false; - // eslint-disable-next-line @typescript-eslint/no-explicit-any + return function (err) { if (err) { if (errorCalled) { @@ -17726,7 +17726,7 @@ class HeaderTransformer { const header = headers[i]; if (!lodash_isundefined_1.default(header)) { const val = row[i]; - // eslint-disable-next-line no-param-reassign + if (lodash_isundefined_1.default(val)) { rowMap[header] = ''; } else { @@ -17770,7 +17770,7 @@ class RowTransformerValidator { this._rowTransform = null; this._rowValidator = null; } - // eslint-disable-next-line @typescript-eslint/no-shadow + static createTransform(transformFunction) { if (types_1.isSyncTransform(transformFunction)) { return (row, cb) => { @@ -27529,7 +27529,7 @@ module.exports = function xor(a, b) { * @author Feross Aboukhadijeh * @license MIT */ -/* eslint-disable no-proto */ + 'use strict'; @@ -27795,7 +27795,7 @@ function checked(length) { } function SlowBuffer(length) { if (+length != length) { - // eslint-disable-line eqeqeq + length = 0; } return Buffer.alloc(+length); @@ -29015,7 +29015,7 @@ function isInstance(obj, type) { } function numberIsNaN(obj) { // For IE11 support - return obj !== obj; // eslint-disable-line no-self-compare + return obj !== obj; } }).call(this)}).call(this,require("buffer").Buffer) @@ -29207,10 +29207,10 @@ var createMethod = function (IS_INCLUDES) { var index = toAbsoluteIndex(fromIndex, length); var value; // Array#includes uses SameValueZero equality algorithm - // eslint-disable-next-line no-self-compare -- NaN check + if (IS_INCLUDES && el !== el) while (length > index) { value = O[index++]; - // eslint-disable-next-line no-self-compare -- NaN check + if (value !== value) return true; // Array#indexOf ignores holes, Array#includes - not } else for (;length > index; index++) { @@ -29385,7 +29385,7 @@ try { iteratorWithReturn[ITERATOR] = function () { return this; }; - // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing + // eslint-disable-next-line es/no-array-from -- required for testing Array.from(iteratorWithReturn, function () { throw 2; }); } catch (error) { /* empty */ } @@ -29825,7 +29825,7 @@ var fails = require('../internals/fails'); module.exports = !fails(function () { // eslint-disable-next-line es/no-function-prototype-bind -- safe var test = (function () { /* empty */ }).bind(); - // eslint-disable-next-line no-prototype-builtins -- safe + return typeof test != 'function' || test.hasOwnProperty('prototype'); }); @@ -29998,10 +29998,10 @@ module.exports = // eslint-disable-next-line es/no-global-this -- safe check(typeof globalThis == 'object' && globalThis) || check(typeof window == 'object' && window) || - // eslint-disable-next-line no-restricted-globals -- safe + check(typeof self == 'object' && self) || check(typeof global == 'object' && global) || - // eslint-disable-next-line no-new-func -- fallback + (function () { return this; })() || this || Function('return this')(); }).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) @@ -30028,7 +30028,7 @@ module.exports = {}; 'use strict'; module.exports = function (a, b) { try { - // eslint-disable-next-line no-console -- safe + arguments.length === 1 ? console.error(a) : console.error(a, b); } catch (error) { /* empty */ } }; @@ -30065,7 +30065,7 @@ var split = uncurryThis(''.split); // fallback for non-array-like ES3 and non-enumerable old V8 strings module.exports = fails(function () { // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 - // eslint-disable-next-line no-prototype-builtins -- safe + return !$Object('z').propertyIsEnumerable(0); }) ? function (it) { return classof(it) === 'String' ? split(it, '') : $Object(it); @@ -30119,7 +30119,7 @@ var getterFor = function (TYPE) { if (NATIVE_WEAK_MAP || shared.state) { var store = shared.state || (shared.state = new WeakMap()); - /* eslint-disable no-self-assign -- prototype methods protection */ + store.get = store.get; store.has = store.has; store.set = store.set; @@ -30669,7 +30669,7 @@ var makeBuiltIn = module.exports = function (value, name, options) { }; // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative -// eslint-disable-next-line no-extend-native -- required + Function.prototype.toString = makeBuiltIn(function toString() { return isCallable(this) && getInternalState(this).source || inspectSource(this); }, 'toString'); @@ -30845,7 +30845,7 @@ module.exports = !$assign || fails(function () { A[symbol] = 7; alphabet.split('').forEach(function (chr) { B[chr] = chr; }); return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet; -}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length` +}) ? function assign(target, source) { var T = toObject(target); var argumentsLength = arguments.length; var index = 1; @@ -31172,7 +31172,7 @@ exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { },{}],318:[function(require,module,exports){ 'use strict'; -/* eslint-disable no-proto -- safe */ + var uncurryThisAccessor = require('../internals/function-uncurry-this-accessor'); var anObject = require('../internals/an-object'); var aPossiblePrototype = require('../internals/a-possible-prototype'); @@ -31547,7 +31547,7 @@ module.exports = function () { if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) { // `Symbol.prototype[@@toPrimitive]` method // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive - // eslint-disable-next-line no-unused-vars -- required for .length + defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) { return call(valueOf, this); }, { arity: 1 }); @@ -31713,7 +31713,7 @@ var trunc = require('../internals/math-trunc'); // https://tc39.es/ecma262/#sec-tointegerorinfinity module.exports = function (argument) { var number = +argument; - // eslint-disable-next-line no-self-compare -- NaN check + return number !== number || number === 0 ? 0 : trunc(number); }; @@ -32113,7 +32113,7 @@ if ($stringify) { // `JSON.stringify` method // https://tc39.es/ecma262/#sec-json.stringify $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, { - // eslint-disable-next-line no-unused-vars -- required for `.length` + stringify: function stringify(it, replacer, space) { var args = arraySlice(arguments); var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args); @@ -32130,7 +32130,7 @@ var $ = require('../internals/export'); // https://tc39.es/ecma262/#sec-number.isnan $({ target: 'Number', stat: true }, { isNaN: function isNaN(number) { - // eslint-disable-next-line no-self-compare -- NaN check + return number !== number; } }); @@ -32480,7 +32480,7 @@ if (FORCED_PROMISE_CONSTRUCTOR) { PromisePrototype = PromiseConstructor.prototype; - // eslint-disable-next-line no-unused-vars -- required for `.length` + Internal = function Promise(executor) { setInternalState(this, { type: PROMISE, @@ -32695,7 +32695,7 @@ var INCORRECT_LENGTH = !!$fromCodePoint && $fromCodePoint.length !== 1; // `String.fromCodePoint` method // https://tc39.es/ecma262/#sec-string.fromcodepoint $({ target: 'String', stat: true, arity: 1, forced: INCORRECT_LENGTH }, { - // eslint-disable-next-line no-unused-vars -- required for `.length` + fromCodePoint: function fromCodePoint(x) { var elements = []; var length = arguments.length; @@ -33204,7 +33204,7 @@ function ECDH(curve) { name: curve }; } - this.curve = new elliptic.ec(this.curveType.name); // eslint-disable-line new-cap + this.curve = new elliptic.ec(this.curveType.name); this.keys = void 0; } ECDH.prototype.generateKeys = function (enc, format) { @@ -37967,7 +37967,7 @@ function functionBindPolyfill(context) { var Buffer = require('safe-buffer').Buffer; var MD5 = require('md5.js'); -/* eslint-disable camelcase */ + function EVP_BytesToKey(password, salt, keyBits, ivLen) { if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary'); if (salt) { @@ -49298,7 +49298,7 @@ var crypto = global.crypto || global.msCrypto; var kMaxUint32 = Math.pow(2, 32) - 1; function assertOffset(offset, length) { if (typeof offset !== 'number' || offset !== offset) { - // eslint-disable-line no-self-compare + throw new TypeError('offset must be a number'); } if (offset > kMaxUint32 || offset < 0) { @@ -49310,7 +49310,7 @@ function assertOffset(offset, length) { } function assertSize(size, offset, length) { if (typeof size !== 'number' || size !== size) { - // eslint-disable-line no-self-compare + throw new TypeError('size must be a number'); } if (size > kMaxUint32 || size < 0) { @@ -53275,13 +53275,13 @@ var NC_NAME_RE = NSed3.NC_NAME_RE; const XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace"; const XMLNS_NAMESPACE = "http://www.w3.org/2000/xmlns/"; const rootNS = { - // eslint-disable-next-line @typescript-eslint/no-explicit-any + __proto__: null, xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE }; const XML_ENTITIES = { - // eslint-disable-next-line @typescript-eslint/no-explicit-any + __proto__: null, amp: "&", gt: ">", @@ -53446,11 +53446,11 @@ class SaxesParser { this.nameStartCheck = isNCNameStartChar; this.nameCheck = isNCNameChar; this.isName = isNCName; - // eslint-disable-next-line @typescript-eslint/unbound-method + this.processAttribs = this.processAttribsNS; - // eslint-disable-next-line @typescript-eslint/unbound-method + this.pushAttrib = this.pushAttribNS; - // eslint-disable-next-line @typescript-eslint/no-explicit-any + this.ns = Object.assign({ __proto__: null }, rootNS); @@ -53463,9 +53463,9 @@ class SaxesParser { this.nameStartCheck = isNameStartChar; this.nameCheck = isNameChar; this.isName = isName; - // eslint-disable-next-line @typescript-eslint/unbound-method + this.processAttribs = this.processAttribsPlain; - // eslint-disable-next-line @typescript-eslint/unbound-method + this.pushAttrib = this.pushAttribPlain; } // @@ -53473,7 +53473,7 @@ class SaxesParser { // numbers given to the states that correspond to the methods being recorded // here. // - this.stateTable = [/* eslint-disable @typescript-eslint/unbound-method */ + this.stateTable = [ this.sBegin, this.sBeginWhitespace, this.sDoctype, this.sDoctypeQuote, this.sDTD, this.sDTDQuoted, this.sDTDOpenWaka, this.sDTDOpenWakaBang, this.sDTDComment, this.sDTDCommentEnding, this.sDTDCommentEnded, this.sDTDPI, this.sDTDPIEnding, this.sText, this.sEntity, this.sOpenWaka, this.sOpenWakaBang, this.sComment, this.sCommentEnding, this.sCommentEnded, this.sCData, this.sCDataEnding, this.sCDataEnding2, this.sPIFirstChar, this.sPIRest, this.sPIBody, this.sPIEnding, this.sXMLDeclNameStart, this.sXMLDeclName, this.sXMLDeclEq, this.sXMLDeclValueStart, this.sXMLDeclValue, this.sXMLDeclSeparator, this.sXMLDeclEnding, this.sOpenTag, this.sOpenTagSlash, this.sAttrib, this.sAttribName, this.sAttribNameSawWhite, this.sAttribValue, this.sAttribValueQuoted, this.sAttribValueClosed, this.sAttribValueUnquoted, this.sCloseTag, this.sCloseTagSawWhite]; this._init(); } @@ -53536,7 +53536,7 @@ class SaxesParser { this.line = 1; this.column = 0; this.ENTITIES = Object.create(XML_ENTITIES); - // eslint-disable-next-line no-unused-expressions + (_a = this.readyHandler) === null || _a === void 0 ? void 0 : _a.call(this); } /** @@ -53574,7 +53574,7 @@ class SaxesParser { * @param handler The handler to set. */ on(name, handler) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any + this[EVENT_NAME_TO_HANDLER_NAME[name]] = handler; } /** @@ -53583,7 +53583,7 @@ class SaxesParser { * @parma name The event to stop listening to. */ off(name) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any + this[EVENT_NAME_TO_HANDLER_NAME[name]] = undefined; } /** @@ -53678,7 +53678,7 @@ class SaxesParser { this.chunk = chunk; this.i = 0; while (this.i < limit) { - // eslint-disable-next-line @typescript-eslint/no-explicit-any + stateTable[this.state].call(this); } this.chunkPosition += limit; @@ -53875,7 +53875,7 @@ class SaxesParser { const { chunk } = this; - // eslint-disable-next-line no-constant-condition + while (true) { const c = this.getCode(); const isNLLike = c === NL_LIKE; @@ -53906,7 +53906,7 @@ class SaxesParser { const { chunk } = this; - // eslint-disable-next-line no-constant-condition + while (true) { let c = this.getCode(); switch (c) { @@ -53939,7 +53939,7 @@ class SaxesParser { chunk, i: start } = this; - // eslint-disable-next-line no-constant-condition + while (true) { const c = this.getCode(); if (c === EOC) { @@ -53961,7 +53961,7 @@ class SaxesParser { * instead. */ skipSpaces() { - // eslint-disable-next-line no-constant-condition + while (true) { const c = this.getCodeNorm(); if (c === EOC || !isS(c)) { @@ -53971,7 +53971,7 @@ class SaxesParser { } setXMLVersion(version) { this.currentXMLVersion = version; - /* eslint-disable @typescript-eslint/unbound-method */ + if (version === "1.0") { this.isChar = isChar10; this.getCode = this.getCode10; @@ -54030,7 +54030,7 @@ class SaxesParser { switch (c) { case GREATER: { - // eslint-disable-next-line no-unused-expressions + (_a = this.doctypeHandler) === null || _a === void 0 ? void 0 : _a.call(this, this.text); this.text = ""; this.state = S_TEXT; @@ -54168,9 +54168,9 @@ class SaxesParser { const { chunk } = this; - // eslint-disable-next-line no-labels, no-restricted-syntax + loop: - // eslint-disable-next-line no-constant-condition + while (true) { switch (this.getCode()) { case NL_LIKE: @@ -54195,12 +54195,12 @@ class SaxesParser { if (entityReturnState !== S_TEXT || this.textHandler !== undefined) { this.text += parsed; } - // eslint-disable-next-line no-labels + break loop; } case EOC: this.entity += chunk.slice(start); - // eslint-disable-next-line no-labels + break loop; default: } @@ -54282,7 +54282,7 @@ class SaxesParser { const c = this.getCodeNorm(); if (c === MINUS) { this.state = S_COMMENT_ENDED; - // eslint-disable-next-line no-unused-expressions + (_a = this.commentHandler) === null || _a === void 0 ? void 0 : _a.call(this, this.text); this.text = ""; } else { @@ -54322,7 +54322,7 @@ class SaxesParser { switch (c) { case GREATER: { - // eslint-disable-next-line no-unused-expressions + (_a = this.cdataHandler) === null || _a === void 0 ? void 0 : _a.call(this, this.text); this.text = ""; this.state = S_TEXT; @@ -54361,7 +54361,7 @@ class SaxesParser { chunk, i: start } = this; - // eslint-disable-next-line no-constant-condition + while (true) { const c = this.getCodeNorm(); if (c === EOC) { @@ -54415,7 +54415,7 @@ class SaxesParser { if (piTarget.toLowerCase() === "xml") { this.fail("the XML declaration must appear at the start of the document."); } - // eslint-disable-next-line no-unused-expressions + (_a = this.piHandler) === null || _a === void 0 ? void 0 : _a.call(this, { target: piTarget, body: this.text @@ -54593,7 +54593,7 @@ class SaxesParser { } else if (this.name !== "version" && this.xmlDeclExpects.includes("version")) { this.fail("XML declaration must contain a version."); } - // eslint-disable-next-line no-unused-expressions + (_a = this.xmldeclHandler) === null || _a === void 0 ? void 0 : _a.call(this, this.xmlDecl); this.name = ""; this.piTarget = this.text = ""; @@ -54620,7 +54620,7 @@ class SaxesParser { if (this.xmlnsOpt) { this.topNS = tag.ns = Object.create(null); } - // eslint-disable-next-line no-unused-expressions + (_a = this.openTagStartHandler) === null || _a === void 0 ? void 0 : _a.call(this, tag); this.sawRoot = true; if (!this.fragmentOpt && this.closedRoot) { @@ -54725,7 +54725,7 @@ class SaxesParser { let { i: start } = this; - // eslint-disable-next-line no-constant-condition + while (true) { switch (this.getCode()) { case q: @@ -54841,9 +54841,9 @@ class SaxesParser { chunk, textHandler: handler } = this; - // eslint-disable-next-line no-labels, no-restricted-syntax + scanLoop: - // eslint-disable-next-line no-constant-condition + while (true) { switch (this.getCode()) { case LESS: @@ -54862,7 +54862,7 @@ class SaxesParser { } } forbiddenState = FORBIDDEN_START; - // eslint-disable-next-line no-labels + break scanLoop; } case AMP: @@ -54872,7 +54872,7 @@ class SaxesParser { this.text += chunk.slice(start, this.prevI); } forbiddenState = FORBIDDEN_START; - // eslint-disable-next-line no-labels + break scanLoop; case CLOSE_BRACKET: switch (forbiddenState) { @@ -54905,7 +54905,7 @@ class SaxesParser { if (handler !== undefined) { this.text += chunk.slice(start); } - // eslint-disable-next-line no-labels + break scanLoop; default: forbiddenState = FORBIDDEN_START; @@ -54926,9 +54926,9 @@ class SaxesParser { textHandler: handler } = this; let nonSpace = false; - // eslint-disable-next-line no-labels, no-restricted-syntax + outRootLoop: - // eslint-disable-next-line no-constant-condition + while (true) { const code = this.getCode(); switch (code) { @@ -54947,7 +54947,7 @@ class SaxesParser { handler(slice); } } - // eslint-disable-next-line no-labels + break outRootLoop; } case AMP: @@ -54957,7 +54957,7 @@ class SaxesParser { this.text += chunk.slice(start, this.prevI); } nonSpace = true; - // eslint-disable-next-line no-labels + break outRootLoop; case NL_LIKE: if (handler !== undefined) { @@ -54969,7 +54969,7 @@ class SaxesParser { if (handler !== undefined) { this.text += chunk.slice(start); } - // eslint-disable-next-line no-labels + break outRootLoop; default: if (!isS(code)) { @@ -55005,7 +55005,7 @@ class SaxesParser { value }; this.attribList.push(attr); - // eslint-disable-next-line no-unused-expressions + (_a = this.attributeHandler) === null || _a === void 0 ? void 0 : _a.call(this, attr); if (prefix === "xmlns") { const trimmed = value.trim(); @@ -55027,7 +55027,7 @@ class SaxesParser { value }; this.attribList.push(attr); - // eslint-disable-next-line no-unused-expressions + (_a = this.attributeHandler) === null || _a === void 0 ? void 0 : _a.call(this, attr); } /** @@ -55055,12 +55055,12 @@ class SaxesParser { text } = this; if (text.length !== 0) { - // eslint-disable-next-line no-unused-expressions + (_a = this.textHandler) === null || _a === void 0 ? void 0 : _a.call(this, text); this.text = ""; } this._closed = true; - // eslint-disable-next-line no-unused-expressions + (_b = this.endHandler) === null || _b === void 0 ? void 0 : _b.call(this); this._init(); return this; @@ -55187,7 +55187,7 @@ class SaxesParser { const { attribList } = this; - // eslint-disable-next-line prefer-destructuring + const attributes = this.tag.attributes; for (const { name, @@ -55215,7 +55215,7 @@ class SaxesParser { tag.isSelfClosing = false; // There cannot be any pending text here due to the onopentagstart that was // necessarily emitted before we get here. So we do not check text. - // eslint-disable-next-line no-unused-expressions + (_a = this.openTagHandler) === null || _a === void 0 ? void 0 : _a.call(this, tag); tags.push(tag); this.state = S_TEXT; @@ -55236,9 +55236,9 @@ class SaxesParser { tag.isSelfClosing = true; // There cannot be any pending text here due to the onopentagstart that was // necessarily emitted before we get here. So we do not check text. - // eslint-disable-next-line no-unused-expressions + (_a = this.openTagHandler) === null || _a === void 0 ? void 0 : _a.call(this, tag); - // eslint-disable-next-line no-unused-expressions + (_b = this.closeTagHandler) === null || _b === void 0 ? void 0 : _b.call(this, tag); const top = this.tag = (_c = tags[tags.length - 1]) !== null && _c !== void 0 ? _c : null; if (top === null) { @@ -55271,7 +55271,7 @@ class SaxesParser { while (l-- > 0) { const tag = this.tag = tags.pop(); this.topNS = tag.ns; - // eslint-disable-next-line no-unused-expressions + handler === null || handler === void 0 ? void 0 : handler(tag); if (tag.name === name) { break; @@ -55294,7 +55294,7 @@ class SaxesParser { */ parseEntity(entity) { // startsWith would be significantly slower for this test. - // eslint-disable-next-line @typescript-eslint/prefer-string-starts-ends-with + if (entity[0] !== "#") { const defined = this.ENTITIES[entity]; if (defined !== undefined) { @@ -59549,7 +59549,7 @@ function _default(name, version, hashfunc) { } // Function#name is not settable on some platforms (#270) try { - generateUUID.name = name; // eslint-disable-next-line no-empty + generateUUID.name = name; } catch (err) {} // For CommonJS default export support generateUUID.DNS = DNS; diff --git a/wolai-frontend/public/luckysheet/expendPlugins/libs/luckyexcel.umd.js b/wolai-frontend/public/luckysheet/expendPlugins/libs/luckyexcel.umd.js index fbe8a5b0..5fbcb7cd 100644 --- a/wolai-frontend/public/luckysheet/expendPlugins/libs/luckyexcel.umd.js +++ b/wolai-frontend/public/luckysheet/expendPlugins/libs/luckyexcel.umd.js @@ -160,7 +160,7 @@ function fromByteArray (uint8) { * @author Feross Aboukhadijeh * @license MIT */ -/* eslint-disable no-proto */ + 'use strict' @@ -478,7 +478,7 @@ function checked (length) { } function SlowBuffer (length) { - if (+length != length) { // eslint-disable-line eqeqeq + if (+length != length) { length = 0 } return Buffer.alloc(+length) @@ -1941,7 +1941,7 @@ function blitBuffer (src, dst, offset, length) { } function isnan (val) { - return val !== val // eslint-disable-line no-self-compare + return val !== val } }).call(this)}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {},require("buffer").Buffer) diff --git a/wolai-frontend/public/luckysheet/luckysheet.umd.js b/wolai-frontend/public/luckysheet/luckysheet.umd.js index 9e4e5abf..5ad3dbeb 100644 --- a/wolai-frontend/public/luckysheet/luckysheet.umd.js +++ b/wolai-frontend/public/luckysheet/luckysheet.umd.js @@ -3275,7 +3275,7 @@ field\u53EF\u4EE5\u662F\u8207database\u7B2C\u4E00\u884C\u4E2D\u67D0\u500B\u5217\ ${a.borderCur}:
`,botton:` - `,style:"z-index:100003"}));let o=$("#luckysheet-imageCtrl-colorSelect-dialog").find(".luckysheet-modal-dialog-content").css("min-width",300).end(),s=o.outerHeight(),u=o.outerWidth(),f=$(window).width(),A=$(window).height(),h=$(document).scrollLeft(),g=$(document).scrollTop();$("#luckysheet-imageCtrl-colorSelect-dialog").css({left:(f+h-u)/2,top:(A+g-s)/3}).show(),$("#luckysheet-imageCtrl-colorSelect-dialog").find(".colorshowbox").spectrum({showPalette:!0,showPaletteOnly:!0,preferredFormat:"hex",clickoutFiresChange:!1,showInitial:!0,showInput:!0,flat:!0,hideAfterPaletteSelect:!0,showSelectionPalette:!0,showButtons:!1,maxPaletteSize:8,maxSelectionSize:8,color:e,cancelText:t.cancel,chooseText:l.confirmColor,togglePaletteMoreText:l.customColor,togglePaletteLessText:l.collapse,togglePaletteOnly:!0,clearText:l.clearText,noColorSelectedText:l.noColorSelectedText,localStorageKey:"spectrum.textcolor"+ae.gridKey,palette:[["#000","#444","#666","#999","#ccc","#eee","#f3f3f3","#fff"],["#f00","#f90","#ff0","#0f0","#0ff","#00f","#90f","#f0f"],["#f4cccc","#fce5cd","#fff2cc","#d9ead3","#d0e0e3","#cfe2f3","#d9d2e9","#ead1dc"],["#ea9999","#f9cb9c","#ffe599","#b6d7a8","#a2c4c9","#9fc5e8","#b4a7d6","#d5a6bd"],["#e06666","#f6b26b","#ffd966","#93c47d","#76a5af","#6fa8dc","#8e7cc3","#c27ba0"],["#c00","#e69138","#f1c232","#6aa84f","#45818e","#3d85c6","#674ea7","#a64d79"],["#900","#b45f06","#bf9000","#38761d","#134f5c","#0b5394","#351c75","#741b47"],["#600","#783f04","#7f6000","#274e13","#0c343d","#073763","#20124d","#4c1130"]],move:function(p){p!=null?p=p.toHexString():p="#000",$("#luckysheet-imageCtrl-colorSelect-dialog .currenColor span").css("background-color",p).attr("title",p)}})},init:function(){let e=this;$("#luckysheet-modal-dialog-slider-imageCtrl .luckysheet-model-close-btn").click(function(){$("#luckysheet-modal-dialog-slider-imageCtrl").hide(),Lt()}),$("#luckysheet-modal-dialog-slider-imageCtrl").off("change.radio").on("change.radio",".radio-item input[type=radio][name=imgItemType]",function(){e.configChange("type",this.value)}),$("#luckysheet-modal-dialog-slider-imageCtrl").off("change.checkbox").on("change.checkbox",".slider-box-checkbox input[type=checkbox]",function(){e.configChange("fixedPos",this.checked)}),$("#luckysheet-modal-dialog-slider-imageCtrl").off("change.borderWidth").on("change.borderWidth","#imgItemBorderWidth",function(){e.configChange("border-width",this.valueAsNumber)}),$("#luckysheet-modal-dialog-slider-imageCtrl").off("change.borderRadius").on("change.borderRadius","#imgItemBorderRadius",function(){e.configChange("border-radius",this.valueAsNumber)}),$("#luckysheet-modal-dialog-slider-imageCtrl").off("change.borderStyle").on("change.borderStyle","#imgItemBorderStyle",function(){e.configChange("border-style",this.value)}),$("#luckysheet-modal-dialog-slider-imageCtrl").off("click.color").on("click.color","#imgItemBorderColor",function(){let n=$(this).find("span").attr("title");e.colorSelectDialog(n)}),$(document).off("click.selectColorConfirm").on("click.selectColorConfirm","#luckysheet-imageCtrl-colorSelect-dialog-confirm",function(){let n=$(this).parents("#luckysheet-imageCtrl-colorSelect-dialog");$("#luckysheet-modal-dialog-mask").hide(),n.hide();let t=n.find(".currenColor span").attr("title");$("#luckysheet-modal-dialog-slider-imageCtrl #imgItemBorderColor span").css("background-color",t).attr("title",t),e.configChange("border-color",t)}),$("#luckysheet-modal-dialog-slider-imageCtrl button#convertToInCellImage").click(function(){let n=e.currentImgId;jl.floatImageToInCellImage(n),e.cancelActiveImgItem(),$("#luckysheet-modal-dialog-slider-imageCtrl").hide(),Lt()}),$("#luckysheet-image-showBoxs").off("mousedown.active").on("mousedown.active",".luckysheet-modal-dialog-image",function(n){if(!Rt(d.currentSheetIndex,"editObjects",!1))return;$(this).hide();let t=$(this).attr("id");e.currentImgId!=null&&e.currentImgId!=t&&e.cancelActiveImgItem(),e.currentImgId=t;let l=e.images[t],a=e.getImgItemParam(l),o=a.width*d.zoomRatio,s=a.height*d.zoomRatio,u=a.left*d.zoomRatio,f=a.top*d.zoomRatio,A=a.position;$("#luckysheet-modal-dialog-activeImage").show().css({width:o,height:s,left:u,top:f,position:A});let h=d.toJsonOptions&&d.toJsonOptions.imageUrlHandle,g=typeof h=="function"?h(l.src):l.src;$("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-content").css({"background-image":"url("+g+")","background-size":l.default.width*d.zoomRatio+"px "+l.default.height*d.zoomRatio+"px","background-position":-l.crop.offsetLeft*d.zoomRatio+"px "+-l.crop.offsetTop*d.zoomRatio+"px"}),$("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-border").css({"border-width":l.border.width*d.zoomRatio,"border-style":l.border.style,"border-color":l.border.color,"border-radius":l.border.radius*d.zoomRatio,left:-l.border.width*d.zoomRatio,right:-l.border.width*d.zoomRatio,top:-l.border.width*d.zoomRatio,bottom:-l.border.width*d.zoomRatio}),n.stopPropagation()}),$("#luckysheet-modal-dialog-activeImage").off("mousedown.move").on("mousedown.move",".luckysheet-modal-dialog-content",function(n){if(!Rt(d.currentSheetIndex,"editObjects",!1))return;!$("#luckysheet-modal-dialog-slider-imageCtrl").is(":visible"),e.move=!0,e.currentWinW=$("#luckysheet-cell-main")[0].scrollWidth,e.currentWinH=$("#luckysheet-cell-main")[0].scrollHeight;let t=$("#luckysheet-modal-dialog-activeImage").offset();e.moveXY=[n.pageX-t.left,n.pageY-t.top],Rl(!0),n.stopPropagation()}),$("#luckysheet-modal-dialog-activeImage").off("mousedown.setting").on("mousedown.setting",".luckysheet-modal-controll-setting",function(n){e.sliderHtmlShow(),n.stopPropagation()}),$("#luckysheet-modal-dialog-activeImage").off("mousedown.resize").on("mousedown.resize",".luckysheet-modal-dialog-resize-item",function(n){if(!Rt(d.currentSheetIndex,"editObjects",!1))return;e.currentWinW=$("#luckysheet-cell-main")[0].scrollWidth,e.currentWinH=$("#luckysheet-cell-main")[0].scrollHeight,e.resize=$(this).data("type");let t=$("#luckysheet-cell-main").scrollTop(),l=$("#luckysheet-cell-main").scrollLeft(),a=Ke(n.pageX,n.pageY),o=a[0]+l,s=a[1]+t,u=$("#luckysheet-modal-dialog-activeImage").position(),f=$("#luckysheet-modal-dialog-activeImage").width(),A=$("#luckysheet-modal-dialog-activeImage").height();e.resizeXY=[o,s,f,A,u.left+l,u.top+t,l,t],Rl(!0),n.stopPropagation()}),$("#luckysheet-modal-dialog-activeImage").off("mousedown.croppingEnter").on("mousedown.croppingEnter",".luckysheet-modal-controll-crop",function(n){e.croppingEnter(),n.stopPropagation()}),$("#luckysheet-modal-dialog-cropping").off("mousedown.croppingExit").on("mousedown.croppingExit",".luckysheet-modal-controll-crop",function(n){e.croppingExit(),n.stopPropagation()}),$("#luckysheet-modal-dialog-cropping").off("mousedown.cropChange").on("mousedown.cropChange",".resize-item",function(n){e.cropChange=$(this).data("type");let t=$("#luckysheet-cell-main").scrollTop(),l=$("#luckysheet-cell-main").scrollLeft(),a=Ke(n.pageX,n.pageY),o=a[0]+l,s=a[1]+t;e.cropChangeXY=[o,s],Rl(!0),n.stopPropagation()}),$("#luckysheet-image-showBoxs").off("mousedown.restore").on("mousedown.restore",".luckysheet-modal-controll-restore",function(n){e.restoreImgItem(),n.stopPropagation()}),$("#luckysheet-image-showBoxs").off("mousedown.delete").on("mousedown.delete",".luckysheet-modal-controll-del",function(n){e.removeImgItem(),n.stopPropagation()})},configChange:function(e,n){let t=this,l=t.images[t.currentImgId];switch(e){case"type":l.type=n;break;case"fixedPos":l.isFixedPos=n;let a=t.getImgItemParam(l),o=a.width,s=a.height,u=a.left,f=a.top,A=a.position;$("#luckysheet-modal-dialog-activeImage").show().css({width:o,height:s,left:u,top:f,position:A});break;case"border-width":l.border.width=n,$("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-border").css({"border-width":n,left:-n,right:-n,top:-n,bottom:-n});break;case"border-radius":l.border.radius=n,$("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-border").css("border-radius",n);break;case"border-style":l.border.style=n,$("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-border").css("border-style",n);break;case"border-color":l.border.color=n,$("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-border").css("border-color",n);break}t.ref()},getImgItemParam(e){let n=e.isFixedPos,t=e.default.width,l=e.default.height,a=e.default.left,o=e.default.top;(e.crop.width!=t||e.crop.height!=l)&&(t=e.crop.width,l=e.crop.height,a+=e.crop.offsetLeft,o+=e.crop.offsetTop);let s="absolute";return n&&(s="fixed",a=e.fixedLeft+e.crop.offsetLeft,o=e.fixedTop+e.crop.offsetTop),{width:t,height:l,left:a,top:o,position:s}},cancelActiveImgItem:function(){let e=this;$("#luckysheet-modal-dialog-activeImage").hide(),$("#luckysheet-modal-dialog-cropping").hide(),$("#luckysheet-modal-dialog-slider-imageCtrl").hide();let n=e.images[e.currentImgId],t=e.getImgItemParam(n),l=t.width*d.zoomRatio,a=t.height*d.zoomRatio,o=t.left*d.zoomRatio,s=t.top*d.zoomRatio,u=t.position;$("#"+e.currentImgId).show().css({width:l,height:a,left:o,top:s,position:u}),$("#"+e.currentImgId+" img").css({width:n.default.width*d.zoomRatio,height:n.default.height*d.zoomRatio,left:-n.crop.offsetLeft*d.zoomRatio,top:-n.crop.offsetTop*d.zoomRatio}),$("#"+e.currentImgId+" .luckysheet-modal-dialog-border").css({"border-width":n.border.width*d.zoomRatio,"border-style":n.border.style,"border-color":n.border.color,"border-radius":n.border.radius*d.zoomRatio,left:-n.border.width*d.zoomRatio,right:-n.border.width*d.zoomRatio,top:-n.border.width*d.zoomRatio,bottom:-n.border.width*d.zoomRatio}),e.currentImgId=null},addImgItem:function(e,n){let t=this,l,a,o=400;e.originHeight ",d.imageMode);let A=e.modelHtml(f,o);$("#luckysheet-image-showBoxs .img-list").append(A),e.images[f]=o,e.ref(),e.init()},allImagesShow:function(){let e=this;if($("#luckysheet-modal-dialog-activeImage").hide(),$("#luckysheet-modal-dialog-cropping").hide(),$("#luckysheet-modal-dialog-slider-imageCtrl").hide(),$("#luckysheet-image-showBoxs .img-list").empty(),e.images!=null)for(let n in e.images){let t=e.images[n];if(t.inCell)continue;let l=e.modelHtml(n,t);$("#luckysheet-image-showBoxs .img-list").append(l)}},moveChangeSize:function(e,n,t){let l=this,a=$.extend(!0,{},l.images);if(e=="row"){let o=d.visibledatarow[n],s=n-1==-1?0:d.visibledatarow[n-1],u=t-(o-s-1);for(let f in a){let A=a[f],h=l.getImgItemParam(A),g=A.type;if(g=="1"){if(h.top>=o)A.default.top=h.top+u-A.crop.offsetTop;else if(h.top+h.height>=o-2)if(h.topo+u){let p=1/h.height;A.default.height=Math.round(A.default.height*p),A.crop.height=Math.round(A.crop.height*p),A.crop.offsetTop=Math.round(A.crop.offsetTop*p),A.default.top=o+u-A.crop.offsetTop}else if(h.top+h.height>o+u){let p=(o+u-h.top)/h.height;A.default.height=Math.round(A.default.height*p),A.crop.height=Math.round(A.crop.height*p),A.crop.offsetTop=Math.round(A.crop.offsetTop*p)}}else g=="2"&&(h.top>=o?A.default.top=h.top+u-A.crop.offsetTop:h.top>o+u&&(A.default.top=o+u-A.crop.offsetTop))}}else if(e=="column"){let o=d.visibledatacolumn[n],s=n-1==-1?0:d.visibledatacolumn[n-1],u=t-(o-s-1);for(let f in a){let A=a[f],h=l.getImgItemParam(A),g=A.type;if(g=="1"){if(h.left>=o)A.default.left=h.left+u-A.crop.offsetLeft;else if(h.left+h.width>=o-2)if(h.lefto+u){let p=1/h.width;A.default.width=Math.round(A.default.width*p),A.crop.width=Math.round(A.crop.width*p),A.crop.offsetLeft=Math.round(A.crop.offsetLeft*p),A.default.left=o+u-A.crop.offsetLeft}else if(h.left+h.width>o+u){let p=(o+u-h.left)/h.width;A.default.width=Math.round(A.default.width*p),A.crop.width=Math.round(A.crop.width*p),A.crop.offsetLeft=Math.round(A.crop.offsetLeft*p)}}else g=="2"&&(h.left>=o?A.default.left=h.left+u-A.crop.offsetLeft:h.left>o+u&&(A.default.left=o+u-A.crop.offsetLeft))}}return a},ref:function(){let e=this,n=d.luckysheetfile[Q(d.currentSheetIndex)],t=e.images;d.clearjfundo&&(d.jfundo.length=0,d.jfredo.push({type:"imageCtrl",sheetIndex:d.currentSheetIndex,images:n.images==null?null:$.extend(!0,{},n.images),curImages:t})),n.images=$.extend(!0,{},t),ae.saveParam("all",d.currentSheetIndex,n.images,{k:"images"})}},Se=_c});function yy(e){var n=/^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;if(n.test(e)){if(e.length==18){for(var t=new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2),l=new Array(1,0,10,9,8,7,6,5,4,3,2),a=0,o=0;o<17;o++)a+=e.substring(o,o+1)*t[o];var s=a%11,u=e.substring(17);return s==2?u=="X"||u=="x":u==l[s]}}else return!1}var vy,Qe,mr=De(()=>{dt();jt();Pt();Kr();_t();rl();zr();Qt();tl();Wt();el();$t();ll();cl();wt();yt();je();vy={defaultItem:{type:"dropdown",type2:null,value1:"",value2:"",checked:!1,remote:!1,prohibitInput:!1,hintShow:!1,hintText:""},curItem:null,dataVerification:null,selectRange:[],selectStatus:!1,optionLabel:{number:"\u6570\u503C",number_integer:"\u6574\u6570",number_decimal:"\u5C0F\u6570",bw:"\u4ECB\u4E8E",nb:"\u4E0D\u4ECB\u4E8E",eq:"\u7B49\u4E8E",ne:"\u4E0D\u7B49\u4E8E",gt:"\u5927\u4E8E",lt:"\u5C0F\u4E8E",gte:"\u5927\u4E8E\u7B49\u4E8E",lte:"\u5C0F\u4E8E\u7B49\u4E8E",include:"\u5305\u62EC",exclude:"\u4E0D\u5305\u62EC",equal:"\u7B49\u4E8E",bf:"\u65E9\u4E8E",nbf:"\u4E0D\u65E9\u4E8E",af:"\u665A\u4E8E",naf:"\u4E0D\u665A\u4E8E",card:"\u8EAB\u4EFD\u8BC1\u53F7\u7801",phone:"\u624B\u673A\u53F7"},optionLabel_en:{number:"numeric",number_integer:"integer",number_decimal:"decimal",bw:"between",nb:"not between",eq:"equal to",ne:"not equal to",gt:"greater",lt:"less than",gte:"greater or equal to",lte:"less than or equal to",include:"include",exclude:"not include",equal:"equal to",bf:"earlier than",nbf:"not earlier than",af:"later than",naf:"not later than",card:"identification number",phone:"phone number"},createDialog:function(){let e=this,n=te(),t=n.dataVerification,l=n.toolbar,a=n.button;$("#luckysheet-modal-dialog-mask").show(),$("#luckysheet-dataVerification-dialog").remove();let o=`
+ `,style:"z-index:100003"}));let o=$("#luckysheet-imageCtrl-colorSelect-dialog").find(".luckysheet-modal-dialog-content").css("min-width",300).end(),s=o.outerHeight(),u=o.outerWidth(),f=$(window).width(),A=$(window).height(),h=$(document).scrollLeft(),g=$(document).scrollTop();$("#luckysheet-imageCtrl-colorSelect-dialog").css({left:(f+h-u)/2,top:(A+g-s)/3}).show(),$("#luckysheet-imageCtrl-colorSelect-dialog").find(".colorshowbox").spectrum({showPalette:!0,showPaletteOnly:!0,preferredFormat:"hex",clickoutFiresChange:!1,showInitial:!0,showInput:!0,flat:!0,hideAfterPaletteSelect:!0,showSelectionPalette:!0,showButtons:!1,maxPaletteSize:8,maxSelectionSize:8,color:e,cancelText:t.cancel,chooseText:l.confirmColor,togglePaletteMoreText:l.customColor,togglePaletteLessText:l.collapse,togglePaletteOnly:!0,clearText:l.clearText,noColorSelectedText:l.noColorSelectedText,localStorageKey:"spectrum.textcolor"+ae.gridKey,palette:[["#000","#444","#666","#999","#ccc","#eee","#f3f3f3","#fff"],["#f00","#f90","#ff0","#0f0","#0ff","#00f","#90f","#f0f"],["#f4cccc","#fce5cd","#fff2cc","#d9ead3","#d0e0e3","#cfe2f3","#d9d2e9","#ead1dc"],["#ea9999","#f9cb9c","#ffe599","#b6d7a8","#a2c4c9","#9fc5e8","#b4a7d6","#d5a6bd"],["#e06666","#f6b26b","#ffd966","#93c47d","#76a5af","#6fa8dc","#8e7cc3","#c27ba0"],["#c00","#e69138","#f1c232","#6aa84f","#45818e","#3d85c6","#674ea7","#a64d79"],["#900","#b45f06","#bf9000","#38761d","#134f5c","#0b5394","#351c75","#741b47"],["#600","#783f04","#7f6000","#274e13","#0c343d","#073763","#20124d","#4c1130"]],move:function(p){p!=null?p=p.toHexString():p="#000",$("#luckysheet-imageCtrl-colorSelect-dialog .currenColor span").css("background-color",p).attr("title",p)}})},init:function(){let e=this;$("#luckysheet-modal-dialog-slider-imageCtrl .luckysheet-model-close-btn").click(function(){$("#luckysheet-modal-dialog-slider-imageCtrl").hide(),Lt()}),$("#luckysheet-modal-dialog-slider-imageCtrl").off("change.radio").on("change.radio",".radio-item input[type=radio][name=imgItemType]",function(){e.configChange("type",this.value)}),$("#luckysheet-modal-dialog-slider-imageCtrl").off("change.checkbox").on("change.checkbox",".slider-box-checkbox input[type=checkbox]",function(){e.configChange("fixedPos",this.checked)}),$("#luckysheet-modal-dialog-slider-imageCtrl").off("change.borderWidth").on("change.borderWidth","#imgItemBorderWidth",function(){e.configChange("border-width",this.valueAsNumber)}),$("#luckysheet-modal-dialog-slider-imageCtrl").off("change.borderRadius").on("change.borderRadius","#imgItemBorderRadius",function(){e.configChange("border-radius",this.valueAsNumber)}),$("#luckysheet-modal-dialog-slider-imageCtrl").off("change.borderStyle").on("change.borderStyle","#imgItemBorderStyle",function(){e.configChange("border-style",this.value)}),$("#luckysheet-modal-dialog-slider-imageCtrl").off("click.color").on("click.color","#imgItemBorderColor",function(){let n=$(this).find("span").attr("title");e.colorSelectDialog(n)}),$(document).off("click.selectColorConfirm").on("click.selectColorConfirm","#luckysheet-imageCtrl-colorSelect-dialog-confirm",function(){let n=$(this).parents("#luckysheet-imageCtrl-colorSelect-dialog");$("#luckysheet-modal-dialog-mask").hide(),n.hide();let t=n.find(".currenColor span").attr("title");$("#luckysheet-modal-dialog-slider-imageCtrl #imgItemBorderColor span").css("background-color",t).attr("title",t),e.configChange("border-color",t)}),$("#luckysheet-modal-dialog-slider-imageCtrl button#convertToInCellImage").click(function(){let n=e.currentImgId;jl.floatImageToInCellImage(n),e.cancelActiveImgItem(),$("#luckysheet-modal-dialog-slider-imageCtrl").hide(),Lt()}),$("#luckysheet-image-showBoxs").off("mousedown.active").on("mousedown.active",".luckysheet-modal-dialog-image",function(n){if(!Rt(d.currentSheetIndex,"editObjects",!1))return;$(this).hide();let t=$(this).attr("id");e.currentImgId!=null&&e.currentImgId!=t&&e.cancelActiveImgItem(),e.currentImgId=t;let l=e.images[t],a=e.getImgItemParam(l),o=a.width*d.zoomRatio,s=a.height*d.zoomRatio,u=a.left*d.zoomRatio,f=a.top*d.zoomRatio,A=a.position;$("#luckysheet-modal-dialog-activeImage").show().css({width:o,height:s,left:u,top:f,position:A});let h=d.toJsonOptions&&d.toJsonOptions.imageUrlHandle,g=typeof h=="function"?h(l.src):l.src;$("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-content").css({"background-image":"url("+g+")","background-size":l.default.width*d.zoomRatio+"px "+l.default.height*d.zoomRatio+"px","background-position":-l.crop.offsetLeft*d.zoomRatio+"px "+-l.crop.offsetTop*d.zoomRatio+"px"}),$("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-border").css({"border-width":l.border.width*d.zoomRatio,"border-style":l.border.style,"border-color":l.border.color,"border-radius":l.border.radius*d.zoomRatio,left:-l.border.width*d.zoomRatio,right:-l.border.width*d.zoomRatio,top:-l.border.width*d.zoomRatio,bottom:-l.border.width*d.zoomRatio}),n.stopPropagation()}),$("#luckysheet-modal-dialog-activeImage").off("mousedown.move").on("mousedown.move",".luckysheet-modal-dialog-content",function(n){if(!Rt(d.currentSheetIndex,"editObjects",!1))return;!$("#luckysheet-modal-dialog-slider-imageCtrl").is(":visible"),e.move=!0,e.currentWinW=$("#luckysheet-cell-main")[0].scrollWidth,e.currentWinH=$("#luckysheet-cell-main")[0].scrollHeight;let t=$("#luckysheet-modal-dialog-activeImage").offset();e.moveXY=[n.pageX-t.left,n.pageY-t.top],Rl(!0),n.stopPropagation()}),$("#luckysheet-modal-dialog-activeImage").off("mousedown.setting").on("mousedown.setting",".luckysheet-modal-controll-setting",function(n){e.sliderHtmlShow(),n.stopPropagation()}),$("#luckysheet-modal-dialog-activeImage").off("mousedown.resize").on("mousedown.resize",".luckysheet-modal-dialog-resize-item",function(n){if(!Rt(d.currentSheetIndex,"editObjects",!1))return;e.currentWinW=$("#luckysheet-cell-main")[0].scrollWidth,e.currentWinH=$("#luckysheet-cell-main")[0].scrollHeight,e.resize=$(this).data("type");let t=$("#luckysheet-cell-main").scrollTop(),l=$("#luckysheet-cell-main").scrollLeft(),a=Ke(n.pageX,n.pageY),o=a[0]+l,s=a[1]+t,u=$("#luckysheet-modal-dialog-activeImage").position(),f=$("#luckysheet-modal-dialog-activeImage").width(),A=$("#luckysheet-modal-dialog-activeImage").height();e.resizeXY=[o,s,f,A,u.left+l,u.top+t,l,t],Rl(!0),n.stopPropagation()}),$("#luckysheet-modal-dialog-activeImage").off("mousedown.croppingEnter").on("mousedown.croppingEnter",".luckysheet-modal-controll-crop",function(n){e.croppingEnter(),n.stopPropagation()}),$("#luckysheet-modal-dialog-cropping").off("mousedown.croppingExit").on("mousedown.croppingExit",".luckysheet-modal-controll-crop",function(n){e.croppingExit(),n.stopPropagation()}),$("#luckysheet-modal-dialog-cropping").off("mousedown.cropChange").on("mousedown.cropChange",".resize-item",function(n){e.cropChange=$(this).data("type");let t=$("#luckysheet-cell-main").scrollTop(),l=$("#luckysheet-cell-main").scrollLeft(),a=Ke(n.pageX,n.pageY),o=a[0]+l,s=a[1]+t;e.cropChangeXY=[o,s],Rl(!0),n.stopPropagation()}),$("#luckysheet-image-showBoxs").off("mousedown.restore").on("mousedown.restore",".luckysheet-modal-controll-restore",function(n){e.restoreImgItem(),n.stopPropagation()}),$("#luckysheet-image-showBoxs").off("mousedown.delete").on("mousedown.delete",".luckysheet-modal-controll-del",function(n){e.removeImgItem(),n.stopPropagation()})},configChange:function(e,n){let t=this,l=t.images[t.currentImgId];switch(e){case"type":l.type=n;break;case"fixedPos":l.isFixedPos=n;let a=t.getImgItemParam(l),o=a.width,s=a.height,u=a.left,f=a.top,A=a.position;$("#luckysheet-modal-dialog-activeImage").show().css({width:o,height:s,left:u,top:f,position:A});break;case"border-width":l.border.width=n,$("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-border").css({"border-width":n,left:-n,right:-n,top:-n,bottom:-n});break;case"border-radius":l.border.radius=n,$("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-border").css("border-radius",n);break;case"border-style":l.border.style=n,$("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-border").css("border-style",n);break;case"border-color":l.border.color=n,$("#luckysheet-modal-dialog-activeImage .luckysheet-modal-dialog-border").css("border-color",n);break}t.ref()},getImgItemParam(e){let n=e.isFixedPos,t=e.default.width,l=e.default.height,a=e.default.left,o=e.default.top;(e.crop.width!=t||e.crop.height!=l)&&(t=e.crop.width,l=e.crop.height,a+=e.crop.offsetLeft,o+=e.crop.offsetTop);let s="absolute";return n&&(s="fixed",a=e.fixedLeft+e.crop.offsetLeft,o=e.fixedTop+e.crop.offsetTop),{width:t,height:l,left:a,top:o,position:s}},cancelActiveImgItem:function(){let e=this;$("#luckysheet-modal-dialog-activeImage").hide(),$("#luckysheet-modal-dialog-cropping").hide(),$("#luckysheet-modal-dialog-slider-imageCtrl").hide();let n=e.images[e.currentImgId],t=e.getImgItemParam(n),l=t.width*d.zoomRatio,a=t.height*d.zoomRatio,o=t.left*d.zoomRatio,s=t.top*d.zoomRatio,u=t.position;$("#"+e.currentImgId).show().css({width:l,height:a,left:o,top:s,position:u}),$("#"+e.currentImgId+" img").css({width:n.default.width*d.zoomRatio,height:n.default.height*d.zoomRatio,left:-n.crop.offsetLeft*d.zoomRatio,top:-n.crop.offsetTop*d.zoomRatio}),$("#"+e.currentImgId+" .luckysheet-modal-dialog-border").css({"border-width":n.border.width*d.zoomRatio,"border-style":n.border.style,"border-color":n.border.color,"border-radius":n.border.radius*d.zoomRatio,left:-n.border.width*d.zoomRatio,right:-n.border.width*d.zoomRatio,top:-n.border.width*d.zoomRatio,bottom:-n.border.width*d.zoomRatio}),e.currentImgId=null},addImgItem:function(e,n){let t=this,l,a,o=400;e.originHeight ",d.imageMode);let A=e.modelHtml(f,o);$("#luckysheet-image-showBoxs .img-list").append(A),e.images[f]=o,e.ref(),e.init()},allImagesShow:function(){let e=this;if($("#luckysheet-modal-dialog-activeImage").hide(),$("#luckysheet-modal-dialog-cropping").hide(),$("#luckysheet-modal-dialog-slider-imageCtrl").hide(),$("#luckysheet-image-showBoxs .img-list").empty(),e.images!=null)for(let n in e.images){let t=e.images[n];if(t.inCell)continue;let l=e.modelHtml(n,t);$("#luckysheet-image-showBoxs .img-list").append(l)}},moveChangeSize:function(e,n,t){let l=this,a=$.extend(!0,{},l.images);if(e=="row"){let o=d.visibledatarow[n],s=n-1==-1?0:d.visibledatarow[n-1],u=t-(o-s-1);for(let f in a){let A=a[f],h=l.getImgItemParam(A),g=A.type;if(g=="1"){if(h.top>=o)A.default.top=h.top+u-A.crop.offsetTop;else if(h.top+h.height>=o-2)if(h.topo+u){let p=1/h.height;A.default.height=Math.round(A.default.height*p),A.crop.height=Math.round(A.crop.height*p),A.crop.offsetTop=Math.round(A.crop.offsetTop*p),A.default.top=o+u-A.crop.offsetTop}else if(h.top+h.height>o+u){let p=(o+u-h.top)/h.height;A.default.height=Math.round(A.default.height*p),A.crop.height=Math.round(A.crop.height*p),A.crop.offsetTop=Math.round(A.crop.offsetTop*p)}}else g=="2"&&(h.top>=o?A.default.top=h.top+u-A.crop.offsetTop:h.top>o+u&&(A.default.top=o+u-A.crop.offsetTop))}}else if(e=="column"){let o=d.visibledatacolumn[n],s=n-1==-1?0:d.visibledatacolumn[n-1],u=t-(o-s-1);for(let f in a){let A=a[f],h=l.getImgItemParam(A),g=A.type;if(g=="1"){if(h.left>=o)A.default.left=h.left+u-A.crop.offsetLeft;else if(h.left+h.width>=o-2)if(h.lefto+u){let p=1/h.width;A.default.width=Math.round(A.default.width*p),A.crop.width=Math.round(A.crop.width*p),A.crop.offsetLeft=Math.round(A.crop.offsetLeft*p),A.default.left=o+u-A.crop.offsetLeft}else if(h.left+h.width>o+u){let p=(o+u-h.left)/h.width;A.default.width=Math.round(A.default.width*p),A.crop.width=Math.round(A.crop.width*p),A.crop.offsetLeft=Math.round(A.crop.offsetLeft*p)}}else g=="2"&&(h.left>=o?A.default.left=h.left+u-A.crop.offsetLeft:h.left>o+u&&(A.default.left=o+u-A.crop.offsetLeft))}}return a},ref:function(){let e=this,n=d.luckysheetfile[Q(d.currentSheetIndex)],t=e.images;d.clearjfundo&&(d.jfundo.length=0,d.jfredo.push({type:"imageCtrl",sheetIndex:d.currentSheetIndex,images:n.images==null?null:$.extend(!0,{},n.images),curImages:t})),n.images=$.extend(!0,{},t),ae.saveParam("all",d.currentSheetIndex,n.images,{k:"images"})}},Se=_c});function yy(e){var n=/^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;if(n.test(e)){if(e.length==18){for(var t=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2],l=[1,0,10,9,8,7,6,5,4,3,2],a=0,o=0;o<17;o++)a+=e.substring(o,o+1)*t[o];var s=a%11,u=e.substring(17);return s==2?u=="X"||u=="x":u==l[s]}}else return!1}var vy,Qe,mr=De(()=>{dt();jt();Pt();Kr();_t();rl();zr();Qt();tl();Wt();el();$t();ll();cl();wt();yt();je();vy={defaultItem:{type:"dropdown",type2:null,value1:"",value2:"",checked:!1,remote:!1,prohibitInput:!1,hintShow:!1,hintText:""},curItem:null,dataVerification:null,selectRange:[],selectStatus:!1,optionLabel:{number:"\u6570\u503C",number_integer:"\u6574\u6570",number_decimal:"\u5C0F\u6570",bw:"\u4ECB\u4E8E",nb:"\u4E0D\u4ECB\u4E8E",eq:"\u7B49\u4E8E",ne:"\u4E0D\u7B49\u4E8E",gt:"\u5927\u4E8E",lt:"\u5C0F\u4E8E",gte:"\u5927\u4E8E\u7B49\u4E8E",lte:"\u5C0F\u4E8E\u7B49\u4E8E",include:"\u5305\u62EC",exclude:"\u4E0D\u5305\u62EC",equal:"\u7B49\u4E8E",bf:"\u65E9\u4E8E",nbf:"\u4E0D\u65E9\u4E8E",af:"\u665A\u4E8E",naf:"\u4E0D\u665A\u4E8E",card:"\u8EAB\u4EFD\u8BC1\u53F7\u7801",phone:"\u624B\u673A\u53F7"},optionLabel_en:{number:"numeric",number_integer:"integer",number_decimal:"decimal",bw:"between",nb:"not between",eq:"equal to",ne:"not equal to",gt:"greater",lt:"less than",gte:"greater or equal to",lte:"less than or equal to",include:"include",exclude:"not include",equal:"equal to",bf:"earlier than",nbf:"not earlier than",af:"later than",naf:"not later than",card:"identification number",phone:"phone number"},createDialog:function(){let e=this,n=te(),t=n.dataVerification,l=n.toolbar,a=n.button;$("#luckysheet-modal-dialog-mask").show(),$("#luckysheet-dataVerification-dialog").remove();let o=`
${t.cellRange}
@@ -4231,7 +4231,7 @@ field\u53EF\u4EE5\u662F\u8207database\u7B2C\u4E00\u884C\u4E2D\u67D0\u500B\u5217\ ${S}
`;break}Re.conditionformatDialog(B,F)}}),$(document).off("click.CFdataBar").on("click.CFdataBar","#luckysheet-icon-dataBar-menuButton .luckysheet-cols-menuitem",function(){l.hide(),$("#luckysheet-icon-dataBar-menuButton").hide(),tt();let R=$(this),D=R.attr("itemvalue");if(d.luckysheet_select_save.length>0){let S=$.extend(!0,[],d.luckysheet_select_save),B=Re.dataBarList[D].format;Re.updateItem("dataBar",S,B)}}),$(document).off("click.CFcolorGradation").on("click.CFcolorGradation","#luckysheet-icon-colorGradation-menuButton .luckysheet-cols-menuitem",function(){l.hide(),$("#luckysheet-icon-colorGradation-menuButton").hide(),tt();let R=$(this),D=R.attr("itemvalue");if(d.luckysheet_select_save.length>0){let S=$.extend(!0,[],d.luckysheet_select_save),B=Re.colorGradationList[D].format;Re.updateItem("colorGradation",S,B)}}),$(document).off("click.CFdeleteRule").on("click.CFdeleteRule","#luckysheet-icon-deleteRule-menuButton .luckysheet-cols-menuitem",function(){l.hide(),$("#luckysheet-icon-deleteRule-menuButton").hide(),tt(),$(this).attr("itemvalue")=="delSheet"&&Re.updateItem("delSheet")})}let o=$(this).outerWidth(),s=l.outerWidth(),u=$(this).offset().left;s>o&&s+u>$("#"+d.container).width()&&(u=u-s+o),sl(l,u,$(this).offset().top+25,"lefttop")}),$("#luckysheet-icon-insertImg-btn").click(function(){if(!Vl()){U.info("",te().pivotTable.errorNotAllowEdit);return}if(!Rt(d.currentSheetIndex,"editObjects"))return;let t=$(this).attr("id")+"-menuButton",l=$("#"+t),a=te().insertImage;l.remove(),He.removeActivePs();let o=[{text:a.floatingImage,value:"float",example:''},{text:a.cellImage,value:"cell",example:''},{text:"",value:"split",example:""},{text:a.changeToFloatingImage,value:"toFloat",example:''}],s=Gu.createButtonMenu(o),u=we(Gu.menu,{id:"insertImg-btn",item:s,subclass:"",sub:""});$("body").append(u),l=$("#"+t).width(150),l.find(".luckysheet-cols-menuitem").click(function(){l.hide();let g=$(this),p=g.attr("itemvalue");p==="toFloat"?jl.inCellImageToFloatImage():jl.imageUpload(p)});let f=$(this).outerWidth(),A=l.outerWidth(),h=$(this).offset().left;A>f&&A+h>$("#"+d.container).width()&&(h=h-A+f),sl(l,h,$(this).offset().top+25,"lefttop")}),$("#luckysheet-icon-chart-btn").click(function(){let t=$(this).attr("id")+"-menuButton",l=$("#"+t),a=te().chart;l.remove(),He.removeActivePs();let o=[{text:a.vchart,value:"vchart",example:""},{text:"",value:"split",example:""},{text:a.chartmix,value:"chartmix",example:""}],s=e.createButtonMenu(o),u=we(e.menu,{id:"chart-btn",item:s,subclass:"",sub:""});$("body").append(u),l=$("#"+t).width(110),l.find(".luckysheet-cols-menuitem").click(function(){l.hide(),tt();let g=$(this),p=g.attr("itemvalue");p=="chartmix"?bs():p=="vchart"&&ws()});let f=$(this).outerWidth(),A=l.outerWidth(),h=$(this).offset().left;A>f&&A+h>$("#"+d.container).width()&&(h=h-A+f),sl(l,h,$(this).offset().top+25,"lefttop")}),$("#luckysheet-icon-postil").click(function(){console.log("==> \u6279\u6CE8\u4E8C\u7EA7\u83DC\u5355");let t=$(this).attr("id")+"-menuButton",l=$("#"+t),a=te().comment;l.remove(),He.removeActivePs();let o=d.luckysheet_select_save[d.luckysheet_select_save.length-1],s=o.row_focus;s==null&&(s=o.row[0]);let u=o.column_focus;u==null&&(u=o.column[0]);let f;d.flowdata[s][u]!=null&&d.flowdata[s][u].ps!=null?f=[{text:a.edit,value:"editPs",example:""},{text:a.delete,value:"delPs",example:""},{text:"",value:"split",example:""},{text:a.showOne,value:"showHidePs",example:""},{text:a.showAll,value:"showHideAllPs",example:""}]:f=[{text:a.insert,value:"newPs",example:""},{text:"",value:"split",example:""},{text:a.showAll,value:"showHideAllPs",example:""}];let A=e.createButtonMenu(f),h=we(e.menu,{id:"postil",item:A,subclass:"",sub:""});$("body").append(h),l=$("#"+t).width(150),l.find(".luckysheet-cols-menuitem").click(function(){l.hide(),tt();let y=$(this),b=y.attr("itemvalue");b=="newPs"?He.newPs(s,u):b=="editPs"?He.editPs(s,u):b=="delPs"?He.delPs(s,u):b=="showHidePs"?He.showHidePs(s,u):b=="showHideAllPs"&&He.showHideAllPs()});let g=$(this).outerWidth(),p=l.outerWidth(),v=$(this).offset().left;p>g&&p+v>$("#"+d.container).width()&&(v=v-p+g),sl(l,v,$(this).offset().top+25,"lefttop")}),$("#luckysheet-icon-protection").click(function(){let t=ve.getSheetByIndex();vh(t)}),$("#luckysheet-icon-print").click(function(){let t=$(this).attr("id")+"-menuButton",l=$("#"+t),o=te().print;if(l.length==0){let A=[{text:o.menuItemPrint,value:"sheet",example:''},{text:"",value:"split",example:""},{text:o.menuItemAreas,value:"areas",example:''},{text:o.menuItemPages,value:"pages",example:''}],h=e.createButtonMenu(A),g=we(e.menu,{id:"print",item:h,subclass:"",sub:""});$("body").append(g),l=$("#"+t).width(180),l.find(".luckysheet-cols-menuitem").click(function(){return Tl(this,null,function*(){l.hide(),tt();let p=$(this),v=p.attr("itemvalue");Ss(v)})})}let s=$(this).outerWidth(),u=l.outerWidth(),f=$(this).offset().left;u>s&&u+f>$("#"+d.container).width()&&(f=f-u+s),sl(l,f,$(this).offset().top+25,"lefttop")}),$("body").on("mouseover mouseleave",".luckysheet-menuButton .luckysheet-cols-submenu",function(t){let l=$(this),a=l.attr("itemvalue"),o=$("#luckysheet-icon-"+a+"-menuButton");if(t.type==="mouseover"){let s=l.parent(),u=$(window).width(),f=$(window).height(),A=s.width(),h=o.height()+25,g=o.width()+5,p=l.offset(),v=p.top,y=p.left+A;y+g>u&&(y=p.left-g),v+h>f&&(v=f-h),o.css({top:v,left:y}).show(),e.rightclickmenu=l}else clearTimeout(e.submenuhide[o.attr("id")]),e.submenuhide[o.attr("id")]=setTimeout(function(){o.hide()},200)}).on("mouseover mouseleave",".luckysheet-menuButton-sub",function(t){t.type==="mouseover"?(e.rightclickmenu.addClass("luckysheet-cols-menuitem-hover"),clearTimeout(e.submenuhide[$(this).attr("id")])):(e.rightclickmenu.removeClass("luckysheet-cols-menuitem-hover"),$(this).hide())})},getQKBorder:function(e,n,t){let l="";e.indexOf("pt")>-1?(e=parseFloat(e),e<1||(e<1.5?l="Medium":l="Thick")):(e=parseFloat(e),e<2||(e<3?l="Medium":l="Thick"));let a=0;return n=n.toLowerCase(),n=="double"?a=2:n=="dotted"?l=="Medium"||l=="Thick"?a=3:a=10:n=="dashed"?l=="Medium"||l=="Thick"?a=4:a=9:n=="solid"&&(l=="Medium"?a=8:l=="Thick"?a=13:a=1),[a,t]},updateFormatCell:function(e,n,t,l,a,o,s){if(!(e==null||n==null))if(n=="ct"){for(let u=l;u<=a;u++)if(!(d.config.rowhidden!=null&&d.config.rowhidden[u]!=null))for(let f=o;f<=s;f++){let A=e[u][f],h=null;N(A)=="object"?h=e[u][f].v:h=e[u][f],t!="@"&&V(h)&&(h=parseFloat(h));let g=ht(t,h),p="n";ah(t)||t===14||t===15||t===16||t===17||t===18||t===19||t===20||t===21||t===22||t===45||t===46||t===47?p="d":t=="@"||t===49?p="s":(t=="General"||t===0)&&(p=V(h)?"n":"g"),N(A)=="object"?(e[u][f].m=g,e[u][f].ct==null&&(e[u][f].ct={}),e[u][f].ct.fa=t,e[u][f].ct.t=p):e[u][f]={ct:{fa:t,t:p},v:h,m:g}}}else{n=="ht"?t=="left"?t="1":t=="center"?t="0":t=="right"&&(t="2"):n=="vt"?t=="top"?t="1":t=="middle"?t="0":t=="bottom"&&(t="2"):n=="tb"?t=="overflow"?t="1":t=="clip"?t="0":t=="wrap"&&(t="2"):n=="tr"&&(t=="none"?t="0":t=="angleup"?t="1":t=="angledown"?t="2":t=="vertical"?t="3":t=="rotation-up"?t="4":t=="rotation-down"&&(t="5"));for(let u=l;u<=a;u++)if(!(d.config.rowhidden!=null&&d.config.rowhidden[u]!=null))for(let f=o;f<=s;f++){let A=e[u][f];N(A)=="object"?(KA(A,n,t),e[u][f][n]=t):(e[u][f]={v:A},e[u][f][n]=t)}}},updateFormat:function(e,n,t){let l=this;if(!Or(d.currentSheetIndex))return;if(!Vl()){U.info("",te().pivotTable.errorNotAllowEdit);return}let o=document.createElement("canvas").getContext("2d");if(n in GA&&parseInt($("#luckysheet-input-box").css("top"))>0&&$("#luckysheet-input-box").text().substr(0,1)!="="){let A=e[d.luckysheetCellUpdate[0]][d.luckysheetCellUpdate[1]];QA(A,n,t,m.rangeResizeTo)}let s=$.extend(!0,{},d.config);s.rowlen==null&&(s.rowlen={});for(let f=0;fg.value===A);if(h)s.find(".luckysheet-toolbar-menu-button-caption").html(" "+h.text+" ");else{let g=f.find(p=>p.value==="fmtOtherSelf");s.find(".luckysheet-toolbar-menu-button-caption").html(" "+g.text+" ")}}},inputMenuButtonFocus:function(e){var n=window.getSelection(),t=n.getRangeAt(0);let l=t.startContainer;d.inlineStringEditRange=null;let a=te();if(l.parentNode.tagName=="SPAN"){let o=l.parentNode.style.cssText,s=Xc(o);for(let u in s)this.changeMenuButtonDom(u,s[u],a)}},menuButtonFocus:function(e,n,t){let l=this,a=["bl","it","cl","ff","ht","vt","fs","tb","tr","ct","un"],o=te();for(let s=0;s-1?e.setLineDash([2,2,5,2,2]):n.indexOf("DashDot")>-1?e.setLineDash([2,5,2]):n.indexOf("Dotted")>-1?e.setLineDash([2]):n.indexOf("Dashed")>-1?e.setLineDash([3]):e.setLineDash([0])}catch(f){console.log(f)}e.beginPath(),n.indexOf("Medium")>-1?(t=="h"?(e.moveTo(l,a-.5),e.lineTo(o,s-.5)):(e.moveTo(l-.5,a),e.lineTo(o-.5,s)),e.lineWidth=2):n=="Thick"?(e.moveTo(l,a),e.lineTo(o,s),e.lineWidth=3):(e.moveTo(l,a),e.lineTo(o,s),e.lineWidth=1)},moveMergeData:function(e,n,t){if(me(e))return e;let l=[],a=[],o=!1;for(let s=0;sA.r+A.rs-1)&&!(t+l-1A.c+A.cs-1)&&s.push(A)}return s},mergeborer:function(e,n,t){if(e==null||e[n]==null)return console.warn("Merge info is null",n,t),null;let l=e[n][t];if(N(l)=="object"&&"mc"in l){let a=l.mc;if(a==null)return console.warn("Merge info is null",n,t),null;if(t=a.c,n=a.r,e[n][t]==null)return console.warn("Main merge Cell info is null",n,t),null;let o=e[n][t].mc.cs,s=e[n][t].mc.rs,u=e[n][t].mc,f,A,h,g;for(let k=n;kn[1]&&(n[1]=n[0]),e[0]>e[1]&&(e[1]=e[0]);let h=!0;for(u.mergeMoveData={};h;){h=!1;for(let g=0;g=p&&t[0]<=A&&t[1]>=h||!(n[1]p)&&!(t[1]h)){let y=f.mergeborer(d.flowdata,e.r,e.c);if(y){let b=y.row[1],k=y.row[0],w=y.row[2],C=y.column[1],I=y.column[0],x=y.column[2];n[1]p||(t[0]<=h&&t[0]>=A&&(o+=a-k,a=k,t[0]=A),t[1]>=A&&t[1]<=h&&(l.row_focus>=A&&l.row_focus<=h,o=b-a,t[1]=h)),t[1]h||(n[0]<=p&&n[0]>=g&&(u+=s-I,s=I,n[0]=g),n[1]>=g&&n[1]<=p&&(l.column_focus>=g&&l.column_focus<=p,u=C-s,n[1]=p)),v=!0}}return v?[n,t,a,o,s,u]:null},getCellRealSize:function(e,n,t){let l=this,a=d.defaultcollen,o=d.defaultrowlen,s=e[n][t];if(!!s&&s.mc!=null){let u=s.mc,f=l.mergeborer(e,u.r,u.c);if(f){let A=f.row[1],h=f.row[0],g=f.row[2],p=f.row[3],v=f.column[1],y=f.column[0],b=f.column[2],k=f.column[3];a=v-y-1,o=A-h-1}}else{let u=Vt()[Q(d.currentSheetIndex)].config;u.columnlen!=null&&u.columnlen[t]!=null&&(a=u.columnlen[t]),u.rowlen!=null&&u.rowlen[n]!=null&&(o=u.rowlen[n])}return[a,o]},getTextHeightCache:{},getTextSize:function(e,n){let t=te().fontarray,l=n||"10pt "+t[0],a=this;if(l in a.getTextHeightCache)return a.getTextHeightCache[l];$("#luckysheetTextSizeTest").length==0&&$('").appendTo($("body"));let o=$("#luckysheetTextSizeTest").text(e).css({font:l}),s=o.innerWidth(),u=o.innerHeight();return a.getTextHeightCache[l]=[s,u],[s,u]},activeFormulaInput:function(e,n,t,l,a,o){let s=this;if(o==null&&(o=!1),zl(e,n,d.flowdata,!0),o){let p='='+a.toUpperCase()+'()';$("#luckysheet-rich-text-editor").html(p);let v=window.getSelection(),y=$("#luckysheet-rich-text-editor").find("span");m.setCaretPosition(y.get(y.length-2),0,1);return}let u=nl(t[0])[0],f=nl(t[1])[1],A=Ft(l[0])[0],h=Ft(l[1])[1],g='='+a.toUpperCase()+'('+mt(d.currentSheetIndex,{row:t,column:l},d.currentSheetIndex)+')';$("#luckysheet-rich-text-editor").html(g),m.israngeseleciton(),m.rangestart=!0,m.rangedrag_column_start=!1,m.rangedrag_row_start=!1,m.rangechangeindex=0,m.rangeSetValue({row:t,column:l}),m.func_selectedrange={left:A,width:h-A-1,top:u,height:f-u-1,left_move:A,width_move:h-A-1,top_move:u,height_move:f-u-1,row:[e,e],column:[n,n]},$("#luckysheet-formula-functionrange-select").css({left:A,width:h-A-1,top:u,height:f-u-1}).show(),$("#luckysheet-formula-help-c").hide()},backFormulaInput:function(e,n,t,l,a,o){let s=this,u="="+o.toUpperCase()+"("+mt(d.currentSheetIndex,{row:l,column:a},d.currentSheetIndex)+")",f=m.execfunction(u,n,t),A={v:f[1],f:f[2]};Xt(n,t,e,A),m.execFunctionExist.push({r:n,c:t,i:d.currentSheetIndex}),ae.historyParam(e,d.currentSheetIndex,{row:[n,n],column:[t,t]})},checkNoNullValue:function(e){let n=e;return N(n)=="object"&&(n=n.v),!!(!me(n)&&aa(n).num&&(e.ct==null||e.ct.t==null||e.ct.t=="n"||e.ct.t=="g"))},checkNoNullValueAll:function(e){let n=e;return N(n)=="object"&&(n=n.v),!me(n)},getNoNullValue:function(e,n,t,l){let a=this,o=0,s=null,u=0,f=0;for(let A=t-1;A>=0;A--){let h;if(l=="c"?h=e[n][A]:h=e[A][n],a.checkNoNullValue(h))o++,s=A;else if(h==null||h.v==null||h.v==""){if(u++,u>=40)if(f<=0)f=1;else break}else break}return s},singleFormulaInput:function(e,n,t,l,a,o,s,u,f){let A=this;s==null&&(s="r"),u==null&&(u=!0),f==null&&(f=!0);let h=!0,g=!1;for(let p=l;p<=a;p++){let v=null;s=="c"?v=e[p][t]:v=e[t][p],A.checkNoNullValue(v)?(h=!1,g=!0):A.checkNoNullValueAll(v)&&(h=!1)}if(h&&f)if(A.getNoNullValue(e,n,t,s)==null)s=="c"?A.activeFormulaInput(n,t,null,null,o,!0):A.activeFormulaInput(t,n,null,null,o,!0);else if(n==l)for(let v=l;v<=a;v++){let y=A.getNoNullValue(e,v,t,s);if(y==null)break;s=="c"?A.backFormulaInput(e,v,t,[v,v],[y,t-1],o):A.backFormulaInput(e,t,v,[y,t-1],[v,v],o)}else for(let v=a;v>=l;v--){let y=A.getNoNullValue(e,v,t,s);if(y==null)break;s=="c"?A.backFormulaInput(e,v,t,[v,v],[y,t-1],o):A.backFormulaInput(e,t,v,[y,t-1],[v,v],o)}else if(g&&u){let p=null;if(s=="c"?p=e[a+1][t]:p=e[t][a+1],p!=null&&p.v!=null&&p.v.toString().length>0){let v=a+1;for(s=="c"?p=e[a+1][t]:p=e[t][a+1];p!=null&&p.v!=null&&p.v.toString().length>0;){v++;let y=null;if(s=="c"?y=e.length:y=e[0].length,v>=y)return;s=="c"?p=e[v][t]:p=e[t][v]}s=="c"?A.backFormulaInput(e,v,t,[l,a],[t,t],o):A.backFormulaInput(e,t,v,[t,t],[l,a],o)}else s=="c"?A.backFormulaInput(e,a+1,t,[l,a],[t,t],o):A.backFormulaInput(e,t,a+1,[t,t],[l,a],o)}else return!0},autoSelectionFormula:function(e){let n=this,t=Te.deepCopyFlowData(d.flowdata),l=40,a=!0;m.execFunctionExist=[];let o=function(u,f,A,h,g,p){let v=n.getNoNullValue(u,f,g,"c");v==null?n.activeFormulaInput(f,h,null,null,p,!0):n.activeFormulaInput(f,h,[f,A],[v,g-1],p)},s=function(u,f,A,h,g,p){let v=n.getNoNullValue(u,h,A,"r");v==null?o(u,f,A,h,g,p):n.activeFormulaInput(f,h,[v,A-1],[h,g],p)};for(let u=0;u=0&&n.checkNoNullValue(t[A-1][h])?s(t,f,A,h,g,e):g-1>=0&&n.checkNoNullValue(t[f][g-1])?o(t,f,A,h,g,e):s(t,f,A,h,g,e)}else if(f==A)a=n.singleFormulaInput(t,v,f,h,g,e,"r");else if(h==g)a=n.singleFormulaInput(t,p,h,f,A,e,"c");else{let y=!0;for(let k=f;k<=A;k++)y=n.singleFormulaInput(t,v,k,h,g,e,"r",!0,!1)&&y;let b=!0;for(let k=h;k<=g;k++)b=n.singleFormulaInput(t,p,k,f,A,e,"c",!0,!1)&&b;a=!!y&&!!b}a=a&&a}a||(m.execFunctionExist.reverse(),m.execFunctionGroup(null,null,null,null,t),Je(t,d.luckysheet_select_save),clearTimeout(d.jfcountfuncTimeout),d.jfcountfuncTimeout=setTimeout(function(){Cl()},500))},getStyleByCell:function(e,n,t){let l=this,a="",o=Jt.getComputeMap(),s=Jt.checksAF(n,t,o),u=Re.getComputeMap(),f=Re.checksCF(n,t,u),A=te().fontarray,h=e[n][t],g=h.ct,p=!1;bl(h)&&(p=!0);for(let v in h){let y=l.checkstatus(e,n,t,v);(s!=null||f!=null&&f.cellColor!=null)&&(f!=null&&f.cellColor!=null?a+="background: "+f.cellColor+";":s!=null&&(a+="background: "+s[1]+";")),N(y)!="object"&&((v=="bg"||s!=null||f!=null&&f.cellColor!=null)&&(f!=null&&f.cellColor!=null?a+="background: "+f.cellColor+";":s!=null?a+="background: "+s[1]+";":a+="background: "+y+";"),v=="ht"&&y!="1"&&(y=="0"?a+="text-align: center;":y=="2"&&(a+="text-align: right;")),v=="vt"&&(y=="0"?a+="vertical-align: middle;":y=="1"?a+="vertical-align: top;":y=="2"&&(a+="vertical-align: bottom;")),v=="un"&&y&&(a+="text-decoration:underline;"))}return p||(a+=Ji(h,s,f)),a},fontSelectList:[],defualtFont:["Times New Roman","Arial","Tahoma","Verdana","\u5FAE\u8F6F\u96C5\u9ED1","\u5B8B\u4F53","\u9ED1\u4F53","\u6977\u4F53","\u4EFF\u5B8B","\u65B0\u5B8B\u4F53","\u534E\u6587\u65B0\u9B4F","\u534E\u6587\u884C\u6977","\u534E\u6587\u96B6\u4E66"],addFontTolist:function(e){e=e.replace(/"/g,"").replace(/'/g,"");let n=!0;for(let a=0;a"+e+"",a.example="",this.fontSelectList.push(a);let o=$("#luckysheet-icon-font-family-menuButton"),s=this.createButtonMenu(this.fontSelectList);o.html(s)}},fontInitial:function(e){let n=[],t=te().fontarray;for(let l=0;l"+a+"",o.example="",n.push(o)}if(e!=null){for(let l=0;l"+a.fontName+"",o.example="",n.push(o),document.fonts&&!document.fonts.check("12px "+a.fontName)&&a.url){let s=new FontFace(a.fontName,`url(${a.url})`);document.fonts.add(s),s.load()}}document.fonts&&document.fonts.ready.then(function(){})}this.fontSelectList=n}},be=Gu});function Yu(e,n){let t={};for(let l in e)t[l]=e[l];for(let l in n)n[l]!=null&&(t[l]=n[l]);return t}function we(e,n){return e.replace(/\$\{([\w]+)\}/g,function(t,l){let a=n[l];return typeof a!="undefined"?a:t})}function N(e){return{"[object Boolean]":"boolean","[object Number]":"number","[object String]":"string","[object Function]":"function","[object Array]":"array","[object Date]":"date","[object RegExp]":"regExp","[object Undefined]":"undefined","[object Null]":"null","[object Object]":"object"}[Object.prototype.toString.call(e)]}function Ls(e){let n=new Date,t=n.getFullYear(),l=n.getMonth(),a=n.getDate(),o=n.getDay(),s=n.getHours(),u=n.getMinutes(),f=n.getSeconds();l=l+1,l<10&&(l="0"+l),a<10&&(a="0"+a),s<10&&(s="0"+s),u<10&&(u="0"+u),f<10&&(f="0"+f);let A="";return e==1?A=t+"-"+l+"-"+a:e==2&&(A=t+"-"+l+"-"+a+" "+s+":"+u+":"+f),A}function na(e){let n;e.indexOf("rgba")>-1?n=e.replace("rgba(","").replace(")","").split(","):n=e.replace("rgb(","").replace(")","").split(",");let t=parseInt(n[0]),l=parseInt(n[1]),a=parseInt(n[2]);return"#"+((1<<24)+(t<<16)+(l<<8)+a).toString(16).slice(1)}function hl(e){if(e==null||e.length==0)return NaN;for(var n=e.toLowerCase().split(""),t=0,l=n.length,a=function(f){return f.charCodeAt()-96},o=0,s=0,u=0;u=0;)a=String.fromCharCode(e%l+n)+a,e=Math.floor(e/l)-1;return a.toUpperCase()}function Ua(e,n){if(n===0)return"";if(e==null)return 0;let t=0;for(let l=0;l0)for(let l=0;l-1&&(l='"'+l+'"'),l!=null&&document.fonts&&!document.fonts.check("12px "+l)&&be.addFontTolist(l)),l==null&&(l=n[0]),t+=l+', "Helvetica Neue", Helvetica, Arial, "PingFang SC", "Hiragino Sans GB", "Heiti SC", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif'}return t}else return ya()}function yn(e,n,t){let l=$(window).height(),a=$(window).width(),o=e.width(),s=e.height(),u=t,f=n;n+o>a&&(f=n-o),t+s>l&&(u=t-s),u<0&&(u=0),e.css({top:u,left:f}).show()}function jr(){d.fullscreenmode&&setTimeout(function(){document.getElementById("luckysheet-rich-text-editor").focus({preventScroll:!0}),$("#luckysheet-rich-text-editor").select()},50)}function tt(){document.getElementById(d.container).focus({preventScroll:!0})}function Pl(e,n){if(e==null||isNaN(parseFloat(e))||Yn(e)||e==-Infinity||e==Infinity)return null;let t=6,l=!1;n==null||n=="auto"?e<1?t=6:t=1:ur(n)=="num"?(t=parseInt(n),l=!0):t=6;let a="",o=null;for(let s=0;s=1e21?o=parseFloat((0,Fs.default)(e).value()):o=parseFloat((0,Fs.default)(e).format("0."+a)),o}function su(e){if(e!=null&&!isNaN(parseFloat(e))&&!Yn(e)){let t=(0,Fs.default)(e).value().toString().split(".");return t.length==1?t=0:t=t[1].length,t}else return null}function sl(e,n,t,l){let a=$(window).height(),o=$(window).width(),s=e.width(),u=e.height(),f=t,A=n;l==null&&(l="lefttop"),l=="lefttop"?e.css({top:t,left:n}).show():l=="righttop"?e.css({top:t,left:n-s}).show():l=="leftbottom"?e.css({bottom:a-t-12,left:n}).show():l=="rightbottom"&&e.css({bottom:a-t-12,left:n-s}).show()}function _e(e,n){n=n||document;var t=n.querySelectorAll(e);return t.length==1?Array.prototype.slice.call(t)[0]:Array.prototype.slice.call(t)}function ma(e,n,t){if(typeof e!="object")var e=e?[e]:[];if(!e.length)return t();var l=document.getElementsByTagName("head")[0]||document.documentElement,a=[],o=e.length-1,s=function(u){if(a[u]=document.createElement("script"),a[u].setAttribute("type","text/javascript"),a[u].onload=a[u].onreadystatechange=function(){this.onload=this.onreadystatechange=null,this.parentNode.removeChild(this),u!==o?s(u+1):typeof t=="function"&&t()},e[u].indexOf("http")===0?a[u].setAttribute("src",e[u]):a[u].setAttribute("src",window.location.origin+"/"+e[u]),typeof n=="object")for(var f in n)a[u].setAttribute(f,n[f]);l.appendChild(a[u])};s(0)}function X0(e){var n=document,t=n.createElement("link");t.setAttribute("rel","stylesheet"),t.setAttribute("type","text/css"),e.indexOf("http")==0?t.setAttribute("href",e):t.setAttribute("href",window.location.origin+"/"+e);var l=n.getElementsByTagName("head");l.length?l[0].appendChild(t):n.documentElement.appendChild(t)}function ga(e){typeof e!="object"&&(e=[e]),e.length&&e.forEach(n=>{X0(n)})}function bh(e){if(e==null||e.length==0)return null;let n=e.split(","),t="";for(let l=0;l1?(s=o[0],u=o[1]):u=o[0];let f=u.split(":"),A="";for(let h=0;h{l(a,o,s,u)},0),Reflect.set(a,o,s,u)}})}function W0(e,n,t,l){Object.defineProperty(e,n,{enumerable:!0,configurable:!1,get(){return t},set(a){t!==a&&(console.log(`\u53D1\u73B0 ${n} \u5C5E\u6027 ${t} -> ${a}`),setTimeout(()=>{l(t,a)},0),t=a)}})}function ks(e,n){e.some((t,l,a)=>{if(t===n)return a.splice(l,1),t===n})}function _n(e){return e.replace(/([A-Z])/g,function(n,t){return"-"+t.toLowerCase()})}var Fs,Os,dt=De(()=>{Wt();ll();Kr();Pt();je();yt();Fs=Ol(Ma());yl();Os=(e,n,t)=>{if(!e.hasOwnProperty(n)){console.info("No %s in data",n);return}N(e)==="object"&&(N(e[n])==="object"||N(e[n])==="array"?U0(e,n,e[n],t):W0(e,n,e[n],t))}});function Vs(e,n="redo"){if(e==null)return;let t=e.data;n=="undo"&&(t=e.curdata);for(let l=0;lt.length-1);A++)t[f][A]==null||t[f][A].f==null||t[f][A].f==""?m.delFunctionGroup(f,A,e.sheetIndex):t[f][A]!=null&&t[f][A].f!=null&&t[f][A].f.length>0&&(console.log(" ==> controlhisty.js",t),m.insertUpdateFunctionGroup(f,A,e.sheetIndex))}}var G0,Gn,qs=De(()=>{cl();$t();vn();Ar();ln();hr();mr();gi();wi();zn();jt();ui();$r();_t();wt();je();el();Xl();Wu();G0={redo:function(e){if(d.jfredo.length==0)return;let n=d.jfredo.pop();if(d.jfundo.push(n),d.clearjfundo=!1,ve.hasSheet(n.sheetIndex)&&d.currentSheetIndex!=n.sheetIndex&&ve.changeSheetExec(n.sheetIndex),n.type=="datachange"){Vs(n);let l={cfg:n.config,RowlChange:n.RowlChange,cdformat:n.cdformat,dataVerification:n.dataVerification,dynamicArray:n.dynamicArray,hyperlink:n.hyperlink};Je(n.data,n.dataRange,l)}else if(n.type=="pasteCut"){let l={sheetIndex:n.source.sheetIndex,data:n.source.curData,curData:n.source.data,config:n.source.curConfig,curConfig:n.source.config,cdformat:n.source.curCdformat,curCdformat:n.source.cdformat,dataVerification:n.source.curDataVerification,curDataVerification:n.source.dataVerification,range:n.source.range},a={sheetIndex:n.target.sheetIndex,data:n.target.curData,curData:n.target.data,config:n.target.curConfig,curConfig:n.target.config,cdformat:n.target.curCdformat,curCdformat:n.target.cdformat,dataVerification:n.target.curDataVerification,curDataVerification:n.target.dataVerification,range:n.target.range};xi(l,a,n.RowlChange)}else if(n.type=="rangechange")Vs(n),si(n.data,n.range,n.cdformat);else if(n.type=="resize"){d.config=n.config,d.luckysheetfile[Q(n.sheetIndex)].config=d.config,n.ctrlType=="resizeR"?ae.saveParam("cg",n.sheetIndex,n.config.rowlen,{k:"rowlen"}):n.ctrlType=="resizeC"&&ae.saveParam("cg",n.sheetIndex,n.config.columnlen,{k:"columnlen"});let l=$.extend(!0,{},n.images);d.luckysheetfile[Q(n.sheetIndex)].images=l,ae.saveParam("all",n.sheetIndex,l,{k:"images"}),Se.images=l,Se.allImagesShow(),Mt(d.flowdata.length,d.flowdata[0].length)}else if(n.type=="cellRowChange")rr(n.data[0].length,n.data.length,n.data,n.config,n.range,n.ctrlType,n.ctrlValue,n.cdformat);else if(n.type=="extend")rr(n.data[0].length,n.data.length,n.data,n.config,n.range,"dele",n.ctrlValue);else if(n.type=="dele"){let l=$.extend(!0,{},n.ctrlValue);l.restore=!0,rr(n.data[0].length,n.data.length,n.data,n.config,n.range,"extend",l)}else if(n.type=="addRC"){let l=$.extend(!0,{},n.ctrlValue);l.direction=="rightbottom"&&(l.index=l.index+1),da(n.data,n.config,"delRC",l,n.calc,n.filterObj,n.cf,n.af,n.freezen,n.dataVerification,n.hyperlink)}else if(n.type=="delRC"){let l=$.extend(!0,{},n.ctrlValue);l.restore=!0,l.direction="lefttop",da(n.data,n.config,"addRC",l,n.calc,n.filterObj,n.cf,n.af,n.freezen,n.dataVerification,n.hyperlink)}else if(n.type=="deleteCell")ao(n.data,n.config,n.ctrl,n.calc,n.filterObj,n.cf,n.dataVerification,n.hyperlink);else if(n.type=="showHidRows")d.config=n.config,d.luckysheetfile[Q(n.sheetIndex)].config=n.config,ae.saveParam("cg",n.sheetIndex,n.config.rowhidden,{k:"rowhidden"}),Mt(d.flowdata.length,d.flowdata[0].length);else if(n.type=="showHidCols")d.config=n.config,d.luckysheetfile[Q(n.sheetIndex)].config=n.config,ae.saveParam("cg",n.sheetIndex,n.config.colhidden,{k:"colhidden"}),Mt(d.flowdata.length,d.flowdata[0].length);else if(n.type=="datachangeAll")m.execFunctionGroup(),rr(n.data[0].length,n.data.length,n.data,null,n.range,"datachangeAll",n.ctrlValue);else if(n.type=="datachangeAll_filter_clear")Ll(n.filter_save),$("#luckysheet-filter-options-sheet"+d.currentSheetIndex+" .luckysheet-filter-options").each(function(l){let a=$(this),o=n.optiongroups[l];sa(a,o.optionstate,o.rowhidden,o.caljs,!1,o.st_r,o.ed_r,o.cindex,o.st_c,o.ed_c)}),ae.saveParam("fsr",d.currentSheetIndex,{filter:n.optiongroups,filter_select:n.filter_save}),d.config=n.config,d.luckysheetfile[Q(d.currentSheetIndex)].config=d.config,d.config.rowhidden==null&&(d.config.rowhidden={}),ae.saveParam("cg",d.currentSheetIndex,d.config.rowhidden,{k:"rowhidden"}),Mt(d.flowdata.length,d.flowdata[0].length),$("#luckysheet-filter-menu, #luckysheet-filter-submenu").hide();else if(n.type=="datachangeAll_filter"){let l=$("#luckysheet-filter-options-sheet"+d.currentSheetIndex+" .luckysheet-filter-options").eq(n.optionsindex),a=l.data("str"),o=l.data("edr"),s=l.data("cindex"),u=l.data("stc"),f=l.data("edc");sa(l,oa.hasKey(n.rowhidenPre),n.rowhidenPre,n.caljs,!0,a,o,s,u,f),d.config=n.config,d.luckysheetfile[Q(d.currentSheetIndex)].config=d.config,d.config.rowhidden==null&&(d.config.rowhidden={}),ae.saveParam("cg",d.currentSheetIndex,d.config.rowhidden,{k:"rowhidden"}),Mt(d.flowdata.length,d.flowdata[0].length),$("#luckysheet-filter-menu, #luckysheet-filter-submenu").hide()}else if(n.type=="filtershow")$("#luckysheet-filter-selected-sheet"+n.sheetIndex+", #luckysheet-filter-options-sheet"+n.sheetIndex).remove(),ae.allowUpdate&&ae.saveParam("all",n.sheetIndex,null,{k:"filter_select"});else if(n.type=="pivotTable_change")d.luckysheetfile[Q(n.sheetIndex)].pivotTable=n.pivotTable,Xe.getCellData(n.sheetIndex),Xe.initialPivotManage(!0),Xe.refreshPivotTable();else if(n.type=="addSheet")ve.deleteSheet(n.index),ve.changeSheetExec(n.currentSheetIndex),$("#luckysheet-input-box").removeAttr("style"),$("#luckysheet-sheet-list, #luckysheet-rightclick-sheet-menu").hide();else if(n.type=="copySheet")ve.deleteSheet(n.index),ve.changeSheetExec(n.copyindex);else if(n.type=="deleteSheet"){let l=!1;for(let a=0;a
'),ae.saveParam("all",n.sheetIndex,n.oldcolor,{k:"color"})}else if(n.type=="mergeChange"){let l={cfg:n.config};Je(n.data,n.range,l)}else if(n.type=="updateDataVerification")Qe.ref(n.currentDataVerification,n.historyDataVerification,n.sheetIndex);else if(n.type=="updateDataVerificationOfCheckbox")Qe.refOfCheckbox(n.currentDataVerification,n.historyDataVerification,n.sheetIndex,n.data,n.range);else if(n.type=="updateHyperlink")Sl.ref(n.currentHyperlink,n.historyHyperlink,n.sheetIndex,n.data,n.range);else if(n.type=="updateCF"){let l=n.data.historyRules;for(let a=0;a
'),ae.saveParam("all",e.sheetIndex,e.color,{k:"color"})}else if(e.type=="mergeChange"){let n={cfg:e.curConfig};Je(e.curData,e.range,n)}else if(e.type=="updateDataVerification")Qe.ref(e.historyDataVerification,e.currentDataVerification,e.sheetIndex);else if(e.type=="updateDataVerificationOfCheckbox")Qe.refOfCheckbox(e.historyDataVerification,e.currentDataVerification,e.sheetIndex,e.curData,e.range);else if(e.type=="updateHyperlink")Sl.ref(e.historyHyperlink,e.currentHyperlink,e.sheetIndex,e.curData,e.range);else if(e.type=="updateCF"){let n=e.data.currentRules;for(let t=0;tHs,cancelRangeMerge:()=>Em,changLang:()=>mk,checkTheStatusOfTheSelectedCells:()=>Si,clearCell:()=>no,clearRange:()=>zb,closeWebSocket:()=>Tk,closeWebsocket:()=>gk,createChart:()=>bk,createVChart:()=>Ck,deleteCell:()=>Q0,deleteChart:()=>xk,deleteColumn:()=>ib,deleteDataVerification:()=>ck,deleteImage:()=>dk,deleteRange:()=>Nb,deleteRangeConditionalFormat:()=>Pb,deleteRow:()=>ab,deleteRowOrColumn:()=>Zu,deleteSheetByIndex:()=>Xu,enterEditMode:()=>Z0,exitEditMode:()=>K0,exportFile:()=>Sk,find:()=>Im,frozenColumnRange:()=>Dm,frozenFirstColumn:()=>Ns,frozenFirstRow:()=>zs,frozenRowRange:()=>Sm,getAllSheets:()=>Ro,getCellValue:()=>Y0,getColumnWidth:()=>hb,getConfig:()=>ak,getDefaultColWidth:()=>gb,getDefaultRowHeight:()=>mb,getImageOption:()=>fk,getLuckysheetfile:()=>ok,getRange:()=>Rm,getRangeArray:()=>bb,getRangeAxis:()=>Mu,getRangeBoolean:()=>xb,getRangeByTxt:()=>pk,getRangeDiagonal:()=>wb,getRangeHtml:()=>yb,getRangeJson:()=>kb,getRangeValue:()=>vb,getRangeValuesWithFlatte:()=>pb,getRangeWithFlatten:()=>ed,getRowHeight:()=>Ab,getScreenshot:()=>$b,getSheet:()=>rk,getSheetData:()=>nk,getTxtByRange:()=>di,getWorkbookName:()=>Uu,hideColumn:()=>cb,hideGridLines:()=>_b,hideRow:()=>ob,hideRowOrColumn:()=>Ju,importFile:()=>Ik,insertColumn:()=>rb,insertColumnRight:()=>nb,insertImage:()=>uk,insertRow:()=>tb,insertRowBottom:()=>lb,insertRowBottomOrColumnRight:()=>Ku,insertRowOrColumn:()=>_u,matrixCalculation:()=>Lb,matrixOperation:()=>Fb,pagerInit:()=>td,print:()=>Dk,redo:()=>lk,refresh:()=>Kb,refreshFormula:()=>vk,refreshMenuButtonFocus:()=>Nu,renderChart:()=>wk,replace:()=>_0,resize:()=>Jb,scroll:()=>Zb,setBothFrozen:()=>eb,setCellFormat:()=>Ou,setCellValue:()=>Nn,setColumnWidth:()=>fb,setConfig:()=>ik,setDataVerification:()=>sk,setHorizontalFrozen:()=>J0,setRangeConditionalFormat:()=>Bb,setRangeConditionalFormatDefault:()=>Eb,setRangeFilter:()=>Sb,setRangeFormat:()=>Ib,setRangeMerge:()=>Db,setRangeShow:()=>Cb,setRangeSort:()=>Rb,setRangeSortMulti:()=>Mb,setRangeValue:()=>Tb,setRowHeight:()=>db,setSheetActive:()=>jb,setSheetAdd:()=>ju,setSheetColor:()=>Ub,setSheetCopy:()=>Vb,setSheetDelete:()=>Ob,setSheetHide:()=>qb,setSheetMove:()=>Wb,setSheetName:()=>Xb,setSheetOrder:()=>Gb,setSheetShow:()=>Hb,setSheetZoom:()=>Yb,setSingleRangeFormat:()=>Mm,setVerticalFrozen:()=>$0,setWorkbookName:()=>ek,showColumn:()=>ub,showGridLines:()=>Qb,showRow:()=>sb,showRowOrColumn:()=>$u,toJson:()=>js,transToCellData:()=>Ak,transToData:()=>hk,undo:()=>tk,updataSheet:()=>yk,updateChart:()=>kk});function Y0(e,n,t={}){if(!V(e)||!V(n))return U.info("Arguments row or column cannot be null or undefined.","");let l=Q(d.currentSheetIndex),{type:a="v",order:o=l}=qe({},t),u=d.luckysheetfile[o].data[e][n],f;if(N(u)=="object"){if(f=u[a],a=="f"&&f!=null)f=m.functionHTMLGenerate(f);else if(a=="f")f=u.v;else if(u&&u.ct){if(u.ct.fa=="yyyy-MM-dd")f=u.m;else if(u.ct.hasOwnProperty("t")&&u.ct.t==="inlineStr"){let A=u.ct.s;A&&(f=A.map(h=>h.v).join(""))}}}return f==null&&(f=null),f}function Nn(e,n,t,l={}){let a=d.flowdata[e][n],o=JSON.stringify(a);if(!V(e)||!V(n))return U.info("The row or column parameter is invalid.","");let{order:s=Q(d.currentSheetIndex),isRefresh:u=!0,success:f}=qe({},l),A=d.luckysheetfile[s];if(A==null)return U.info("The order parameter is invalid.","");if(!$e.createHookFunction("cellUpdateBefore",e,n,t,u))return;let h=A.data;u&&(h=$.extend(!0,[],A.data)),h.length==0&&(h=ve.buildGridData(A));let g={bg:1,ff:1,fc:1,bl:1,it:1,fs:1,cl:1,un:1,vt:1,ht:1,mc:1,tr:1,tb:1,rt:1,qp:1};if(t==null||t.toString().length==0)m.delFunctionGroup(e,n),Xt(e,n,h,t);else if(t instanceof Object){let p={};me(h[e][n])&&(h[e][n]={});let v=h[e][n];t.f!=null&&t.v==null?(p.f=t.f,t.ct!=null&&(p.ct=t.ct),h=m.updatecell(e,n,p,!1).data):(t.ct!=null&&(p.ct=t.ct),t.f!=null&&(p.f=t.f),t.v!=null?p.v=t.v:p.v=v.v,t.m!=null&&(p.m=t.m),m.delFunctionGroup(e,n),Xt(e,n,h,p));for(let y in t){let b=t[y];y in g?be.updateFormatCell(h,y,b,e,e,n,n):v[y]=b}h[e][n]=v}else t.toString().substr(0,1)=="="||t.toString().substr(0,5)=="{$e.createHookFunction("cellUpdated",e,n,JSON.parse(o),d.flowdata[e][n],u)},0),A.index==d.currentSheetIndex&&u?Je(h,[{row:[e,e],column:[n,n]}]):A.data=h,f&&typeof f=="function"&&f(h)}function no(e,n,t={}){if(!V(e)||!V(n))return U.info("Arguments row and column cannot be null or undefined.","");let l=Q(d.currentSheetIndex),{order:a=l,success:o}=qe({},t),s=$.extend(!0,[],d.luckysheetfile[a].data),u=s[e][n];N(u)=="object"?(delete u.m,delete u.v,u.f!=null&&(delete u.f,m.delFunctionGroup(e,n,d.currentSheetIndex),delete u.spl)):u=null,a===l?Je(s,[{row:[e,e],column:[n,n]}]):d.luckysheetfile[a].data=s,o&&typeof o=="function"&&o(u)}function Q0(e,n,t,l={}){if(!e||["left","up"].indexOf(e)<0)return U.info("Arguments move cannot be null or undefined and its value must be 'left' or 'up'","");if(!V(n)||!V(t))return U.info("Arguments row and column cannot be null or undefined.","");let o=Q(d.currentSheetIndex),{order:s=o,success:u}=qe({},l),f="move"+e.replace(e[0],e[0].toUpperCase()),A;s&&d.luckysheetfile[s]&&(A=d.luckysheetfile[s].index),Na(f,n,n,t,t,A),u&&typeof u=="function"&&u()}function Ou(e,n,t,l,a={}){if(!V(e)||!V(n))return U.info("Arguments row or column cannot be null or undefined.","");if(!t)return U.info("Arguments attr cannot be null or undefined.","");let o=Q(d.currentSheetIndex),{order:s=o,success:u}=qe({},a),f=d.luckysheetfile[s];if(f==null)return U.info("The order parameter is invalid.","");let A=$.extend(!0,[],f.data);A.length==0&&(A=ve.buildGridData(f));let h=A[e][n]||{},g=$.extend(!0,{},f.config);if(t=="ct"&&(!l||!l.hasOwnProperty("fa")||!l.hasOwnProperty("t")))return new TypeError("While set attribute 'ct' to cell, the value must have property 'fa' and 't'");if(t=="bd"){g.borderInfo==null&&(g.borderInfo=[]);let p=Ya(qe({rangeType:"range",borderType:"border-all",color:"#000",style:"1",range:[{column:[n,n],row:[e,e]}]},l),{timestamp:new Date().getTime()});g.borderInfo.push(p)}else h[t]=l;A[e][n]=h,f.index==d.currentSheetIndex?(f.config=g,d.config=g,Je(A,[{row:[e,e],column:[n,n]}])):(f.config=g,f.data=A),u&&typeof u=="function"&&u(h)}function Im(e,n={}){if(!e&&e!=0)return U.info("Search content cannot be null or empty","");let t=Q(d.currentSheetIndex),{isRegularExpression:l=!1,isWholeWord:a=!1,isCaseSensitive:o=!1,order:s=t,type:u="m"}=qe({},n),f=d.luckysheetfile[s].data,A=[];for(let h=0;h{A.m=n,Nn(A.row,A.column,n,{order:o,isRefresh:!1})});let f=$.extend(!0,[],s.data);return s.data.length=0,s.data.push(...u),s.index==d.currentSheetIndex&&Je(f,void 0,void 0,!0,!1),Ue(),t.success&&typeof t.success=="function"&&t.success(l),l}function K0(e={}){parseInt($("#luckysheet-input-box").css("top"))>0&&($("#luckysheet-formula-search-c").is(":visible")&&m.searchFunctionCell!=null?m.searchFunctionEnter($("#luckysheet-formula-search-c").find(".luckysheet-formula-search-item-active")):(m.updatecell(d.luckysheetCellUpdate[0],d.luckysheetCellUpdate[1]),d.luckysheet_select_save=[{row:[d.luckysheetCellUpdate[0],d.luckysheetCellUpdate[0]],column:[d.luckysheetCellUpdate[1],d.luckysheetCellUpdate[1]],row_focus:d.luckysheetCellUpdate[0],column_focus:d.luckysheetCellUpdate[1]}]),$("#luckysheet-search-formula-parm").is(":visible")&&$("#luckysheet-search-formula-parm").hide(),$("#luckysheet-search-formula-parm-select").is(":visible")&&$("#luckysheet-search-formula-parm-select").hide()),e.success&&typeof e.success=="function"&&e.success()}function Z0(e={}){if(!$("#luckysheet-conditionformat-dialog").is(":visible")){if($("#luckysheet-cell-selected").is(":visible")){let n=d.luckysheet_select_save[d.luckysheet_select_save.length-1],t=n.row_focus,l=n.column_focus;zl(t,l,d.flowdata)}e.success&&typeof e.success=="function"&&e.success()}}function zs(e){if(Y.saveFrozen("freezenRow",e),!e||e==Q(d.currentSheetIndex)){let n,t,l;if(Y.freezenRealFirstRowColumn){let a=0;l=d.visibledatarow[a]-2+d.columnHeaderHeight,n=[d.visibledatarow[a],a+1,0,Y.cutVolumn(d.visibledatarow,a+1),l]}else{let a=$("#luckysheet-cell-main").scrollTop();t=nt(d.visibledatarow,a),t==-1&&(t=0),l=d.visibledatarow[t]-2-a+d.columnHeaderHeight,n=[d.visibledatarow[t],t+1,a,Y.cutVolumn(d.visibledatarow,t+1),l]}Y.saveFreezen(n,l,null,null),Y.freezenverticaldata!=null&&(Y.cancelFreezenVertical(),Y.createAssistCanvas(),Ue()),Y.createFreezenHorizontal(n,l),Y.createAssistCanvas(),Ue()}}function Ns(e){if(Y.saveFrozen("freezenColumn",e),!e||e==Q(d.currentSheetIndex)){let n,t,l;if(Y.freezenRealFirstRowColumn)t=0,l=d.visibledatacolumn[t]-2+d.rowHeaderWidth,n=[d.visibledatacolumn[t],t+1,0,Y.cutVolumn(d.visibledatacolumn,t+1),l];else{let a=$("#luckysheet-cell-main").scrollLeft();t=nt(d.visibledatacolumn,a),t==-1&&(t=0),l=d.visibledatacolumn[t]-2-a+d.rowHeaderWidth,n=[d.visibledatacolumn[t],t+1,a,Y.cutVolumn(d.visibledatacolumn,t+1),l]}Y.saveFreezen(null,null,n,l),Y.freezenhorizontaldata!=null&&(Y.cancelFreezenHorizontal(),Y.createAssistCanvas(),Ue()),Y.createFreezenVertical(n,l),Y.createAssistCanvas(),Ue()}}function Sm(e,n){let t=te().freezen;if(!e||!e.hasOwnProperty("row_focus")&&!m.iscelldata(e)){he()?alert(t.noSeletionError):U.info(t.noSeletionError,"");return}if(typeof e=="string"&&m.iscelldata(e)&&(e=m.getcellrange(e),e={row_focus:e.row[0],column_focus:e.column[0]}),Y.saveFrozen("freezenRowRange",n,e),!n||n==Q(d.currentSheetIndex)){let l=$("#luckysheet-cell-main").scrollTop(),a=nt(d.visibledatarow,l),o=e.row_focus;o>a&&(a=o),a==-1&&(a=0);let s=d.visibledatarow[a]-2-l+d.columnHeaderHeight,u=[d.visibledatarow[a],a+1,l,Y.cutVolumn(d.visibledatarow,a+1),s];Y.saveFreezen(u,s,null,null),Y.freezenverticaldata!=null&&(Y.cancelFreezenVertical(),Y.createAssistCanvas(),Ue()),Y.createFreezenHorizontal(u,s),Y.createAssistCanvas(),Ue()}}function Dm(e,n){let t=te().freezen,l=typeof e=="string"&&m.iscelldata(e);if(!e||!e.hasOwnProperty("column_focus")&&!l){he()?alert(t.noSeletionError):U.info(t.noSeletionError,"");return}if(l&&(e=m.getcellrange(e),e={row_focus:e.row[0],column_focus:e.column[0]}),Y.saveFrozen("freezenColumnRange",n,e),!n||n==Q(d.currentSheetIndex)){let a=$("#luckysheet-cell-main").scrollLeft(),o=nt(d.visibledatacolumn,a),s=e.column_focus;s>o&&(o=s),o==-1&&(o=0);let u=d.visibledatacolumn[o]-2-a+d.rowHeaderWidth,f=[d.visibledatacolumn[o],o+1,a,Y.cutVolumn(d.visibledatacolumn,o+1),u];Y.saveFreezen(null,null,f,u),Y.freezenhorizontaldata!=null&&(Y.cancelFreezenHorizontal(),Y.createAssistCanvas(),Ue()),Y.createFreezenVertical(f,u),Y.createAssistCanvas(),Ue()}}function Hs(e){Y.saveFrozen("freezenCancel",e),(!e||e==Q(d.currentSheetIndex))&&(Y.freezenverticaldata!=null&&Y.cancelFreezenVertical(),Y.freezenhorizontaldata!=null&&Y.cancelFreezenHorizontal(),Y.createAssistCanvas(),Ue())}function J0(e,n={}){let t=Q(d.currentSheetIndex),{range:l,order:a=t,success:o}=qe({},n);Hs(a),e?Sm(l,a):zs(a),o&&typeof o=="function"&&o()}function $0(e,n={}){let t=Q(d.currentSheetIndex),{range:l,order:a=t,success:o}=qe({},n);Hs(a),e?Dm(l,a):Ns(a),o&&typeof o=="function"&&o()}function eb(e,n={}){let t=Q(d.currentSheetIndex),{range:l,order:a=t,success:o}=qe({},n),s=!a||a==Q(d.currentSheetIndex),u=te().freezen;if(Hs(a),e){Y.saveFrozen("freezenRCRange",a,l);let f=typeof l=="string"&&m.iscelldata(l);if(s){if((!l||!(l.hasOwnProperty("column_focus")&&l.hasOwnProperty("row_focus")))&&!f){he()?alert(u.noSeletionError):U.info(u.noSeletionError,"");return}f&&(l=m.getcellrange(l),l={row_focus:l.row[0],column_focus:l.column[0]});let A=$("#luckysheet-cell-main").scrollTop(),h=nt(d.visibledatarow,A),g=l.row_focus;g>h&&(h=g),h==-1&&(h=0);let p=d.visibledatarow[h]-2-A+d.columnHeaderHeight,v=[d.visibledatarow[h],h+1,A,Y.cutVolumn(d.visibledatarow,h+1),p];Y.saveFreezen(v,p,null,null),Y.createFreezenHorizontal(v,p);let y=$("#luckysheet-cell-main").scrollLeft(),b=nt(d.visibledatacolumn,y),k=l.column_focus;k>b&&(b=k),b==-1&&(b=0);let w=d.visibledatacolumn[b]-2-y+d.rowHeaderWidth,C=[d.visibledatacolumn[b],b+1,y,Y.cutVolumn(d.visibledatacolumn,b+1),w];Y.saveFreezen(null,null,C,w),Y.createFreezenVertical(C,w),Y.createAssistCanvas(),Ue()}}else if(Y.saveFrozen("freezenRC",a),s){let f=$("#luckysheet-cell-main").scrollTop(),A=nt(d.visibledatarow,f);A==-1&&(A=0);let h=d.visibledatarow[A]-2-f+d.columnHeaderHeight,g=[d.visibledatarow[A],A+1,f,Y.cutVolumn(d.visibledatarow,A+1),h];Y.saveFreezen(g,h,null,null),Y.createFreezenHorizontal(g,h);let p=$("#luckysheet-cell-main").scrollLeft(),v=nt(d.visibledatacolumn,p);v==-1&&(v=0);let y=d.visibledatacolumn[v]-2-p+d.rowHeaderWidth,b=[d.visibledatacolumn[v],v+1,p,Y.cutVolumn(d.visibledatacolumn,v+1),y];Y.saveFreezen(null,null,b,y),Y.createFreezenVertical(b,y),Y.createAssistCanvas(),Ue()}}function _u(e,n=0,t={}){if(!V(n))return U.info("The index parameter is invalid.","");let l=Q(d.currentSheetIndex),{number:a=1,order:o=l,success:s}=qe({},t),f=te().info;if(!V(a)){he()?alert(f.tipInputNumber):U.info(f.tipInputNumber,"");return}if(a=parseInt(a),a<1||a>100){he()?alert(f.tipInputNumberLimit):U.info(f.tipInputNumberLimit,"");return}let A;o&&d.luckysheetfile[o]&&(A=d.luckysheetfile[o].index),Fr(e,n,a,"lefttop",A),s&&typeof s=="function"&&s()}function Ku(e,n=0,t={}){if(!V(n))return U.info("The index parameter is invalid.","");let l=Q(d.currentSheetIndex),{number:a=1,order:o=l,success:s}=qe({},t),f=te().info;if(!V(a)){he()?alert(f.tipInputNumber):U.info(f.tipInputNumber,"");return}if(a=parseInt(a),a<1||a>100){he()?alert(f.tipInputNumberLimit):U.info(f.tipInputNumberLimit,"");return}let A;o&&d.luckysheetfile[o]&&(A=d.luckysheetfile[o].index),Fr(e,n,a,"rightbottom",A),s&&typeof s=="function"&&s()}function tb(e=0,n={}){_u("row",e,n)}function lb(e=0,n={}){Ku("row",e,n)}function rb(e=0,n={}){_u("column",e,n)}function nb(e=0,n={}){Ku("column",e,n)}function Zu(e,n,t,l={}){if(!V(n)||!V(t))return U.info("Please enter the index for deleting rows or columns correctly.","");let a=Q(d.currentSheetIndex),{order:o=a,success:s}=qe({},l),u;o&&d.luckysheetfile[o]&&(u=d.luckysheetfile[o].index),ua(e,n,t,u),s&&typeof s=="function"&&s()}function ab(e,n,t={}){Zu("row",e,n,t)}function ib(e,n,t={}){Zu("column",e,n,t)}function Ju(e,n,t,l={}){if(!V(n)||!V(t))return U.info("Please enter the index for deleting rows or columns correctly.","");let a=Q(d.currentSheetIndex),{order:o=a,saveParam:s=!0,success:u}=qe({},l),f=d.luckysheetfile[o],A=e==="row"?"rowhidden":"colhidden",h=$.extend(!0,{},f.config);h[A]==null&&(h[A]={});for(let g=n;g<=t;g++)h[A][g]=0;if(d.clearjfundo){let g={};g.type=e==="row"?"showHidRows":"showHidCols",g.sheetIndex=f.index,g.config=$.extend(!0,{},f.config),g.curconfig=h,d.jfundo.length=0,d.jfredo.push(g)}d.luckysheetfile[o].config=h,s&&ae.saveParam("cg",f.index,h[A],{k:A}),o==a&&(d.config=h,Mt(d.flowdata.length,d.flowdata[0].length)),u&&typeof u=="function"&&u()}function $u(e,n,t,l={}){if(!V(n)||!V(t))return U.info("Please enter the index for deleting rows or columns correctly.","");let a=Q(d.currentSheetIndex),{order:o=a,saveParam:s=!0,success:u}=qe({},l),f=d.luckysheetfile[o],A=e==="row"?"rowhidden":"colhidden",h=$.extend(!0,{},f.config);if(h[A]!=null){for(let g=n;g<=t;g++)delete h[A][g];if(d.clearjfundo){let g={};g.type=e==="row"?"showHidRows":"showHidCols",g.sheetIndex=f.index,g.config=$.extend(!0,{},f.config),g.curconfig=h,d.jfundo.length=0,d.jfredo.push(g)}d.luckysheetfile[o].config=d.config,s&&ae.saveParam("cg",f.index,h[A],{k:A}),o===a&&(d.config=h,Mt(d.flowdata.length,d.flowdata[0].length)),u&&typeof u=="function"&&u()}}function ob(e,n,t={}){Ju("row",e,n,t)}function sb(e,n,t={}){$u("row",e,n,t)}function cb(e,n,t={}){Ju("column",e,n,t)}function ub(e,n,t={}){$u("column",e,n,t)}function db(e,n={}){if(N(e)!="object")return U.info("The rowInfo parameter is invalid.","");let{order:t=Q(d.currentSheetIndex),success:l}=qe({},n),a=d.luckysheetfile[t];if(a==null)return U.info("The order parameter is invalid.","");let o=$.extend(!0,{},a.config);o.rowlen==null&&(o.rowlen={});for(let s in e)if(parseInt(s)>=0){let u=e[s];u==="auto"?o.rowlen[parseInt(s)]=u:Number(u)>=0&&(o.rowlen[parseInt(s)]=Number(u))}a.config=o,ae.saveParam("cg",a.index,o.rowlen,{k:"rowlen"}),a.index==d.currentSheetIndex&&(d.config=o,Mt(d.flowdata.length,d.flowdata[0].length)),l&&typeof l=="function"&&l()}function fb(e,n={}){if(N(e)!="object")return U.info("The columnInfo parameter is invalid.","");let{order:t=Q(d.currentSheetIndex),success:l}=qe({},n),a=d.luckysheetfile[t];if(a==null)return U.info("The order parameter is invalid.","");let o=$.extend(!0,{},a.config);o.columnlen==null&&(o.columnlen={});for(let s in e)if(parseInt(s)>=0){let u=e[s];u==="auto"?o.columnlen[parseInt(s)]=u:Number(u)>=0&&(o.columnlen[parseInt(s)]=Number(u))}a.config=o,ae.saveParam("cg",a.index,o.columnlen,{k:"columnlen"}),a.index==d.currentSheetIndex&&(d.config=o,Mt(d.flowdata.length,d.flowdata[0].length)),l&&typeof l=="function"&&l()}function Ab(e,n={}){if(N(e)!="array"||e.length==0)return U.info("The rowInfo parameter is invalid.","");let{order:t=Q(d.currentSheetIndex),success:l}=qe({},n),a=d.luckysheetfile[t];if(a==null)return U.info("The order parameter is invalid.","");let s=$.extend(!0,{},a.config).rowlen||{},u={};return e.forEach(f=>{if(parseInt(f)>=0){let A=s[parseInt(f)]||d.defaultrowlen;u[parseInt(f)]=A}}),setTimeout(()=>{l&&typeof l=="function"&&l()},1),u}function hb(e,n={}){if(N(e)!="array"||e.length==0)return U.info("The columnInfo parameter is invalid.","");let{order:t=Q(d.currentSheetIndex),success:l}=qe({},n),a=d.luckysheetfile[t];if(a==null)return U.info("The order parameter is invalid.","");let s=$.extend(!0,{},a.config).columnlen||{},u={};return e.forEach(f=>{if(parseInt(f)>=0){let A=s[parseInt(f)]||d.defaultcollen;u[parseInt(f)]=A}}),setTimeout(()=>{l&&typeof l=="function"&&l()},1),u}function mb(e={}){let{order:n=Q(d.currentSheetIndex),success:t}=qe({},e);return setTimeout(()=>{t&&typeof t=="function"&&t()},1),d.luckysheetfile[n].defaultRowHeight||d.defaultrowlen}function gb(e={}){let{order:n=Q(d.currentSheetIndex),success:t}=qe({},e);return setTimeout(()=>{t&&typeof t=="function"&&t()},1),d.luckysheetfile[n].defaultColWidth||d.defaultcollen}function Rm(){let e=JSON.parse(JSON.stringify(d.luckysheet_select_save)),n=[];for(let t=0;t{let l=t.row,a=t.column;for(let o=l[0];o<=l[1];o++)for(let s=a[0];s<=a[1];s++)n.push({r:o,c:s})}),n}function pb(e){e=e||ed();let n=[];return e.forEach(t=>{n.push(d.flowdata[t.r][t.c])}),n}function Mu(){let e=[],n=JSON.parse(JSON.stringify(d.luckysheet_select_save)),t=d.currentSheetIndex;return n.forEach(l=>{let a=mt(t,{column:l.column,row:l.row});e.push(a)}),e}function vb(e={}){let n=Q(d.currentSheetIndex),{range:t,order:l=n}=qe({},e),a=d.luckysheetfile[l];if(!t||typeof t=="object")return Ct(t,a.index);if(typeof t=="string"){if(m.iscelldata(t))return Ct(m.getcellrange(t),a.index);U.info("The range is invalid, please check range parameter.","")}}function yb(e={}){let{range:n=d.luckysheet_select_save,order:t=Q(d.currentSheetIndex),success:l}=qe({},e);if(n=JSON.parse(JSON.stringify(n)),N(n)=="string"){if(!m.iscelldata(n))return U.info("The range parameter is invalid.","");let v=m.getcellrange(n);n=[{row:v.row,column:v.column}]}else if(N(n)=="object"){if(n.row==null||n.column==null)return U.info("The range parameter is invalid.","");n=[{row:n.row,column:n.column}]}if(N(n)!="array")return U.info("The range parameter is invalid.","");let a=d.luckysheetfile[t];if(a==null)return U.info("The order parameter is invalid.","");let o=$.extend(!0,{},a.config);if(o.merge!=null){let v=!1;for(let y=0;y1&&s.length>0){let v=!1,y=Re.getComputeMap(a.index);for(let b=0;b1){let v=!0,y=n[0].row[0],b=n[0].row[1],k=!0,w=n[0].column[0],C=n[0].column[1];for(let I=1;I0&&(A=rn(a.index));let h=a.data;(h==null||h.length==0)&&(h=ve.buildGridData(a));let g="",p="";u=u.sort((v,y)=>v-y),f=f.sort((v,y)=>v-y);for(let v=0;v";for(let b=0;b':p+=''),k==f[0]&&(o.rowlen==null||o.rowlen[y.toString()]==null?C+="height:19px;":C+="height:"+o.rowlen[y.toString()]+"px;");let x=/^(w|W)((0?)|(0\.0+))$/,T;if(h[y][k].ct!=null&&h[y][k].ct.fa!=null&&h[y][k].ct.fa.match(x)?T=Fe(y,k,h):!T&&Rn(h[y][k].ct)?T=us(y,k,h):T=Fe(y,k,h,"m"),C+=be.getStyleByCell(h,y,k),N(h[y][k])=="object"&&"mc"in h[y][k])if("rs"in h[y][k].mc){if(I='rowspan="'+h[y][k].mc.rs+'" colspan="'+h[y][k].mc.cs+'"',A&&A[y+"_"+k]){let R={color:{},style:{}},D={color:{},style:{}},S={color:{},style:{}},B={color:{},style:{}};for(let z=y;z23){let z=null,P=null;for(let L in R.color)R.color[L]>=F/2&&(z=L);for(let L in R.style)R.style[L]>=F/2&&(P=L);z!=null&&P!=null&&(C+="border-left:"+Dt.getHtmlBorderStyle(P,z))}if(JSON.stringify(D).length>23){let z=null,P=null;for(let L in D.color)D.color[L]>=F/2&&(z=L);for(let L in D.style)D.style[L]>=F/2&&(P=L);z!=null&&P!=null&&(C+="border-right:"+Dt.getHtmlBorderStyle(P,z))}if(JSON.stringify(S).length>23){let z=null,P=null;for(let L in S.color)S.color[L]>=E/2&&(z=L);for(let L in S.style)S.style[L]>=E/2&&(P=L);z!=null&&P!=null&&(C+="border-top:"+Dt.getHtmlBorderStyle(P,z))}if(JSON.stringify(B).length>23){let z=null,P=null;for(let L in B.color)B.color[L]>=E/2&&(z=L);for(let L in B.style)B.style[L]>=E/2&&(P=L);z!=null&&P!=null&&(C+="border-bottom:"+Dt.getHtmlBorderStyle(P,z))}}}else continue;else if(A&&A[y+"_"+k]){if(A[y+"_"+k].l){let R=A[y+"_"+k].l.style,D=A[y+"_"+k].l.color;C+="border-left:"+Dt.getHtmlBorderStyle(R,D)}if(A[y+"_"+k].r){let R=A[y+"_"+k].r.style,D=A[y+"_"+k].r.color;C+="border-right:"+Dt.getHtmlBorderStyle(R,D)}if(A[y+"_"+k].b){let R=A[y+"_"+k].b.style,D=A[y+"_"+k].b.color;C+="border-bottom:"+Dt.getHtmlBorderStyle(R,D)}if(A[y+"_"+k].t){let R=A[y+"_"+k].t.style,D=A[y+"_"+k].t.color;C+="border-top:"+Dt.getHtmlBorderStyle(R,D)}}w=we(w,{style:C,span:I}),T==null&&(T=Fe(y,k,h)),T==null&&(T=" "),w+=T}else{let C="";if(A&&A[y+"_"+k]){if(A[y+"_"+k].l){let I=A[y+"_"+k].l.style,x=A[y+"_"+k].l.color;C+="border-left:"+Dt.getHtmlBorderStyle(I,x)}if(A[y+"_"+k].r){let I=A[y+"_"+k].r.style,x=A[y+"_"+k].r.color;C+="border-right:"+Dt.getHtmlBorderStyle(I,x)}if(A[y+"_"+k].b){let I=A[y+"_"+k].b.style,x=A[y+"_"+k].b.color;C+="border-bottom:"+Dt.getHtmlBorderStyle(I,x)}if(A[y+"_"+k].t){let I=A[y+"_"+k].t.style,x=A[y+"_"+k].t.color;C+="border-top:"+Dt.getHtmlBorderStyle(I,x)}}w+="",y==u[0]&&(o.columnlen==null||o.columnlen[k.toString()]==null?p+='':p+=''),k==f[0]&&(o.rowlen==null||o.rowlen[y.toString()]==null?C+="height:19px;":C+="height:"+o.rowlen[y.toString()]+"px;"),w=we(w,{style:C,span:""}),w+=" "}w+="",g+=w}g+=""}}return g=''+p+g+"
",g}function bb(e,n={}){if(!["oneDimensional","twoDimensional"].includes(e))return U.info("The dimensional parameter is invalid.","");let{range:l=d.luckysheet_select_save[d.luckysheet_select_save.length-1],order:a=Q(d.currentSheetIndex)}=qe({},n),o=d.luckysheetfile[a];if(o==null)return U.info("The order parameter is invalid.","");if(N(l)=="string"){if(!m.iscelldata(l))return U.info("The range parameter is invalid.","");l=m.getcellrange(l)}if(N(l)!="object"||l.row==null||l.column==null)return U.info("The range parameter is invalid.","");let s=l.row[0],u=l.row[1],f=l.column[0],A=l.column[1],h=$.extend(!0,{},o.config);if(h.merge!=null&&Bt(h,s,u,f,A))return U.info("Cannot perform this operation on partially merged cells","");let g=o.data;(g==null||g.length==0)&&(g=ve.buildGridData(o));let p=[];if(e=="oneDimensional")for(let v=s;v<=u;v++)for(let y=f;y<=A;y++){let b=g[v][y];b==null||b.v==null?p.push(null):p.push(b.v)}else if(e=="twoDimensional")for(let v=s;v<=u;v++){let y=[];for(let b=f;b<=A;b++){let k=g[v][b];k==null||k.v==null?y.push(null):y.push(k.v)}p.push(y)}return p}function kb(e,n={}){let t=d.luckysheet_select_save[0],l=Q(d.currentSheetIndex),{range:a=t,order:o=l}=qe({},n),s=d.luckysheetfile[o],u=s.config;if(a&&typeof a=="string"&&m.iscelldata(a)&&(a=m.getcellrange(a)),!a||a.length>1){he()?alert(locale_drag.noMulti):U.info(locale_drag.noMulti,"");return}if(u.merge!=null){let h=!1,g=a.row[0],p=a.row[1],v=a.column[0],y=a.column[1];if(h=Bt(u,g,p,v,y),h){he()?alert(te().drag.noPartMerge):U.info(te().drag.noPartMerge,"");return}}let f=Ct(a,s.index),A=[];if(f.length!==0){if(e)if(f.length===1){let h={};for(let g=0;g1){he()?alert(te().drag.noMulti):U.info(te().drag.noMulti,"");return}if(A.merge!=null){let v=!1,y=s[0].row[0],b=s[0].row[1],k=s[0].column[0],w=s[0].column[1];if(v=Bt(A,y,b,k,w),v){he()?alert(te().drag.noPartMerge):U.info(te().drag.noPartMerge,"");return}}let h=Ct(s,u),g=[];if(h.length===0)return;let p=h[0].length;switch(e){case"normal":for(let v=0;v=p);v++)g.push(h[v][v]);break;case"anti":for(let v=0;v=p);v++)g.push(h[v][p-v-1]);break;case"offset":if(o.toString()=="NaN"){he()?alert(te().drag.inputCorrect):U.info(te().drag.inputCorrect,"");return}if(o<0){he()?alert(te().drag.offsetColumnLessZero):U.info(te().drag.offsetColumnLessZero,"");return}for(let v=0;v=p);v++)g.push(h[v][v+o]);break}Dt.copybyformat(new Event,JSON.stringify(g))}function xb(e={}){let n=Q(d.currentSheetIndex),t=JSON.parse(JSON.stringify(d.luckysheet_select_save)),{range:l=t,order:a=n}=qe({},e),s=d.luckysheetfile[a].config;if(l&&typeof l=="string"&&m.iscelldata(l)&&(l=m.getcellrange(l)),!l||l.length>1){he()?alert(te().drag.noMulti):U.info(te().drag.noMulti,"");return}if(s.merge!=null){let A=!1,h=l[0].row[0],g=l[0].row[1],p=l[0].column[0],v=l[0].column[1];if(A=Bt(s,h,g,p,v),A){he()?alert(te().drag.noPartMerge):U.info(te().drag.noPartMerge,"");return}}let u=Ct(l,a),f=[];if(u.length!==0){for(let A=0;A0?p=!0:p=!1),h.push(p)}f.push(h)}Dt.copybyformat(event,JSON.stringify(f))}}function Cb(e,n={}){if(N(e)=="string"){if(!m.iscelldata(e))return U.info("The range parameter is invalid.","");let s=m.getcellrange(e);e=[{row:s.row,column:s.column}]}else if(N(e)=="object"){if(e.row==null||e.column==null)return U.info("The range parameter is invalid.","");e=[{row:e.row,column:e.column}]}if(N(e)=="array"){for(let s=0;sg==="error"))return f.data.length=0,f.data.push(...h),!1;f.data.length=0,f.data.push(...h),f.index==d.currentSheetIndex&&Je(h,void 0,void 0,!0,!1),Ue(),u&&typeof u=="function"}function Sb(e,n={}){if(!["open","close"].includes(e))return U.info("The type parameter is invalid.","");let{range:l=d.luckysheet_select_save[d.luckysheet_select_save.length-1],order:a=Q(d.currentSheetIndex),success:o}=qe({},n),s=d.luckysheetfile[a];if(s==null)return U.info("The order parameter is invalid.","");if(N(l)=="string"){if(!m.iscelldata(l))return U.info("The range parameter is invalid.","");l=m.getcellrange(l)}if(N(l)!="object"||l.row==null||l.column==null)return U.info("The range parameter is invalid.","");if(setTimeout(()=>{o&&typeof o=="function"&&o()},1),e=="open")return s.filter_select=l,s.index==d.currentSheetIndex&&Ll(l,s.filter),{row:l.row,column:l.column};if(e=="close"){let u=$.extend(!0,{},s.filter_select);return s.filter_select=null,$("#luckysheet-filter-selected-sheet"+s.index).remove(),$("#luckysheet-filter-options-sheet"+s.index).remove(),{row:u.row,column:u.column}}}function Db(e,n={}){if(["all","horizontal","vertical"].indexOf(e)<0)return U.info("The type parameter must be included in ['all', 'horizontal', 'vertical']","");let l=Q(d.currentSheetIndex),a=JSON.parse(JSON.stringify(d.luckysheet_select_save)),{range:o=a,order:s=l,success:u}=qe({},n),f=d.luckysheetfile[s],A=$.extend(!0,{},f.config),h=$.extend(!0,[],f.data);if(h.length==0&&(h=$.extend(!0,[],ve.buildGridData(f))),N(o)=="string"){if(!m.iscelldata(o))return U.info("Incorrect selection format","");let p=m.getcellrange(o);o=[{row:p.row,column:p.column}]}else if(N(o)=="object"){if(!o.hasOwnProperty("row")||!o.hasOwnProperty("column"))return U.info("Incorrect selection format","");o=[{row:o.row,column:o.column}]}if(on(o))return U.info("Cannot merge overlapping range","");if(A.merge!=null){let p=!1;for(let v=0;v1){U.info(te().sort.noRangeError,"");return}o&&typeof o=="string"&&m.iscelldata(o)&&(o=m.getcellrange(o));let g=o.row[0],p=o.row[1],v=o.column[0],y=o.column[1],b=!1,k=[];for(let C=g;C<=p;C++){let I=[];for(let x=v;x<=y;x++){if(h[C][x]!=null&&h[C][x].mc!=null){b=!0;break}I.push(h[C][x])}k.push(I)}if(b){U.info(te().sort.mergeError,"");return}k=Jr([].concat(k),0,e==="asc");for(let C=g;C<=p;C++)for(let I=v;I<=y;I++)h[C][I]=k[C-g][I-v];let w={};A.rowlen!=null&&(A=vl(h,g,p,A),w={cfg:A,RowlChange:!0}),f.index==d.currentSheetIndex?Je(h,[{row:[g,p],column:[v,y]}],w):(f.data=h,f.config=A),u&&typeof u=="function"&&u()}function Mb(e,n,t={}){if(!n||!(n instanceof Array))return U.info("The sort parameter is invalid.","");let l=Q(d.currentSheetIndex),a=d.luckysheet_select_save[0],{range:o=a,order:s=l,success:u}=qe({},t),f=d.luckysheetfile[s],A=$.extend(!0,{},f.config),h=$.extend(!0,[],f.data);if(h.length==0&&(h=$.extend(!0,[],ve.buildGridData(f))),o instanceof Array&&o.length>1){U.info(te().sort.noRangeError,"");return}o&&typeof o=="string"&&m.iscelldata(o)&&(o=m.getcellrange(o));let g=o.row[0],p=o.row[1],v=o.column[0],y=o.column[1],b;e?b=g+1:b=g;let k=!1,w=[];for(let I=b;I<=p;I++){let x=[];for(let T=v;T<=y;T++){if(h[I][T]!=null&&h[I][T].mc!=null){k=!0;break}x.push(h[I][T])}w.push(x)}if(k){U.info(te().sort.mergeError,"");return}n.forEach(I=>{let x=I.i;x-=v,w=Jr([].concat(w),x,I.sort==="asc")});for(let I=b;I<=p;I++)for(let x=v;x<=y;x++)h[I][x]=w[I-b][x-v];let C={};A.rowlen!=null&&(A=vl(h,b,p,A),C={cfg:A,RowlChange:!0}),f.index===d.currentSheetIndex?Je(h,[{row:[b,p],column:[v,y]}],C):(f.data=h,f.config=A),u&&typeof u=="function"&&u()}function Eb(e,n,t={}){if(!e||!["greaterThan","lessThan","betweenness","equal","textContains","occurrenceDate","duplicateValue","top10","top10%","last10","last10%","AboveAverage","SubAverage"].includes(e))return U.info("The conditionName parameter is invalid.","");if(N(n)!="array"||n.length==0)return U.info("The conditionValue parameter is invalid.","");let{format:a={textColor:"#000000",cellColor:"#ff0000"},cellrange:o=d.luckysheet_select_save,order:s=Q(d.currentSheetIndex),success:u}=qe({},t);o=JSON.parse(JSON.stringify(o));let f=d.luckysheetfile[s],A=f.data;if((A==null||A.length==0)&&(A=ve.buildGridData(f)),f==null)return U.info("Incorrect worksheet index","");let h=te().conditionformat,g=[],p=[];if(e=="betweenness"){let I=n[0],x=n[1],T=Re.getRangeByTxt(I);if(T.length>1){Re.infoDialog(h.onlySingleCell,"");return}else if(T.length==1){let D=T[0].row[0],S=T[0].row[1],B=T[0].column[0],F=T[0].column[1];if(D==S&&B==F)I=Fe(D,B,A),g.push({row:T[0].row,column:T[0].column}),p.push(I);else{Re.infoDialog(h.onlySingleCell,"");return}}else if(T.length==0)if(isNaN(I)||I==""){Re.infoDialog(h.conditionValueCanOnly,"");return}else p.push(I);let R=Re.getRangeByTxt(x);if(R.length>1){Re.infoDialog(h.onlySingleCell,"");return}else if(R.length==1){let D=R[0].row[0],S=R[0].row[1],B=R[0].column[0],F=R[0].column[1];if(D==S&&B==F)x=Fe(D,B,A),g.push({row:R[0].row,column:R[0].column}),p.push(x);else{Re.infoDialog(h.onlySingleCell,"");return}}else if(R.length==0)if(isNaN(x)||x==""){Re.infoDialog(h.conditionValueCanOnly,"");return}else p.push(x)}else if(e=="greaterThan"||e=="lessThan"||e=="equal"){let I=n[0],x=Re.getRangeByTxt(I);if(x.length>1){Re.infoDialog(h.onlySingleCell,"");return}else if(x.length==1){let T=x[0].row[0],R=x[0].row[1],D=x[0].column[0],S=x[0].column[1];if(T==R&&D==S)I=Fe(T,D,A),g.push({row:x[0].row,column:x[0].column}),p.push(I);else{Re.infoDialog(h.onlySingleCell,"");return}}else if(x.length==0)if(isNaN(I)||I==""){Re.infoDialog(h.conditionValueCanOnly,"");return}else p.push(I)}else if(e=="textContains"){let I=n[0],x=Re.getRangeByTxt(I);if(x.length>1){Re.infoDialog(h.onlySingleCell,"");return}else if(x.length==1){let T=x[0].row[0],R=x[0].row[1],D=x[0].column[0],S=x[0].column[1];if(T==R&&D==S)I=Fe(T,D,A),g.push({row:x[0].row,column:x[0].column}),p.push(I);else{Re.infoDialog(h.onlySingleCell,"");return}}else if(x.length==0)if(I==""){Re.infoDialog(h.conditionValueCanOnly,"");return}else p.push(I)}else if(e=="occurrenceDate"){let I=n[0],x=n[1];if(!qt(I)||!qt(x))return U.info("The conditionValue parameter is invalid.","");let T;Al(I,x)>0?T=(0,Mo.default)(x).format("YYYY/MM/DD")+"-"+(0,Mo.default)(I).format("YYYY/MM/DD"):T=(0,Mo.default)(I).format("YYYY/MM/DD")+"-"+(0,Mo.default)(x).format("YYYY/MM/DD"),p.push(T)}else if(e=="duplicateValue"){let I=n[0];if(I!="0"||I!="1")return U.info("The conditionValue parameter is invalid.","");p.push(I)}else if(e=="top10"||e=="top10%"||e=="last10"||e=="last10%"){let I=n[0];if(parseInt(I)!=I||parseInt(I)<1||parseInt(I)>1e3){Re.infoDialog(h.pleaseEnterInteger,"");return}p.push(parseInt(I))}else(e=="AboveAverage"||e=="SubAverage")&&p.push(e);if(!a.hasOwnProperty("textColor")||!a.hasOwnProperty("cellColor"))return U.info("The format parameter is invalid.","");if(N(o)=="string"?o=Re.getRangeByTxt(o):N(o)=="object"&&(o=[o]),N(o)!="array")return U.info("The cellrange parameter is invalid.","");let v={type:"default",cellrange:o,format:a,conditionName:e,conditionRange:g,conditionValue:p},y=$.extend(!0,[],d.luckysheetfile),b=Re.getHistoryRules(y),k=f.luckysheet_conditionformat_save||[];k.push(v),f.luckysheet_conditionformat_save=k;let w=$.extend(!0,[],d.luckysheetfile),C=Re.getCurrentRules(w);Re.ref(b,C),ae.allowUpdate&&ae.saveParam("all",f.index,k,{k:"luckysheet_conditionformat_save"}),u&&typeof u=="function"&&u()}function Bb(e,n={}){if(!e||!["dataBar","colorGradation","icons"].includes(e))return U.info("The type parameter is invalid.","");let{format:l,cellrange:a=d.luckysheet_select_save,order:o=Q(d.currentSheetIndex),success:s}=qe({},n);a=JSON.parse(JSON.stringify(a));let u=d.luckysheetfile[o];if(u==null)return U.info("Incorrect worksheet index","");if(e=="dataBar"){if(l==null&&(l=["#638ec6","#ffffff"]),N(l)!="array"||l.length<1||l.length>2)return U.info("The format parameter is invalid.","")}else if(e=="colorGradation"){if(l==null&&(l=["rgb(99, 190, 123)","rgb(255, 235, 132)","rgb(248, 105, 107)"]),N(l)!="array"||l.length<2||l.length>3)return U.info("The format parameter is invalid.","")}else if(e=="icons"){l==null&&(l="threeWayArrowMultiColor");let y=["threeWayArrowMultiColor","threeTriangles","fourWayArrowMultiColor","fiveWayArrowMultiColor","threeWayArrowGrayColor","fourWayArrowGrayColor","fiveWayArrowGrayColor","threeColorTrafficLightRimless","threeSigns","greenRedBlackGradient","threeColorTrafficLightBordered","fourColorTrafficLight","threeSymbolsCircled","tricolorFlag","threeSymbolsnoCircle","threeStars","fiveQuadrantDiagram","fiveBoxes","grade4","grade5"];if(N(l)!="string"||!y.includes(l))return U.info("The format parameter is invalid.","");switch(l){case"threeWayArrowMultiColor":l={len:3,leftMin:0,top:0};break;case"threeTriangles":l={len:3,leftMin:0,top:1};break;case"fourWayArrowMultiColor":l={len:4,leftMin:0,top:2};break;case"fiveWayArrowMultiColor":l={len:5,leftMin:0,top:3};break;case"threeWayArrowGrayColor":l={len:3,leftMin:5,top:0};break;case"fourWayArrowGrayColor":l={len:4,leftMin:5,top:1};break;case"fiveWayArrowGrayColor":l={len:5,leftMin:5,top:2};break;case"threeColorTrafficLightRimless":l={len:3,leftMin:0,top:4};break;case"threeSigns":l={len:3,leftMin:0,top:5};break;case"greenRedBlackGradient":l={len:4,leftMin:0,top:6};break;case"threeColorTrafficLightBordered":l={len:3,leftMin:5,top:4};break;case"fourColorTrafficLight":l={len:4,leftMin:5,top:5};break;case"threeSymbolsCircled":l={len:3,leftMin:0,top:7};break;case"tricolorFlag":l={len:3,leftMin:0,top:8};break;case"threeSymbolsnoCircle":l={len:3,leftMin:5,top:7};break;case"threeStars":l={len:3,leftMin:0,top:9};break;case"fiveQuadrantDiagram":l={len:5,leftMin:0,top:10};break;case"fiveBoxes":l={len:5,leftMin:0,top:11};break;case"grade4":l={len:4,leftMin:5,top:9};break;case"grade5":l={len:5,leftMin:5,top:10};break}}if(N(a)=="string"?a=Re.getRangeByTxt(a):N(a)=="object"&&(a=[a]),N(a)!="array")return U.info("The cellrange parameter is invalid.","");let f={type:e,cellrange:a,format:l},A=$.extend(!0,[],d.luckysheetfile),h=Re.getHistoryRules(A),g=u.luckysheet_conditionformat_save||[];g.push(f),u.luckysheet_conditionformat_save=g;let p=$.extend(!0,[],d.luckysheetfile),v=Re.getCurrentRules(p);Re.ref(h,v),ae.allowUpdate&&ae.saveParam("all",u.index,g,{k:"luckysheet_conditionformat_save"}),s&&typeof s=="function"&&s()}function Pb(e,n={}){if(!V(e))return U.info("The itemIndex parameter is invalid.","");e=Number(e);let{order:t=Q(d.currentSheetIndex),success:l}=qe({},n),a=d.luckysheetfile[t];if(a==null)return U.info("The order parameter is invalid.","");let o=$.extend(!0,[],a.luckysheet_conditionformat_save);if(o.length==0)return U.info("This worksheet has no conditional format to delete","");if(o[e]==null)return U.info("The conditional format of the index cannot be found","");let s=o.splice(e,1),u=$.extend(!0,[],d.luckysheetfile),f=Re.getHistoryRules(u);a.luckysheet_conditionformat_save=o;let A=$.extend(!0,[],d.luckysheetfile),h=Re.getCurrentRules(A);return Re.ref(f,h),ae.allowUpdate&&ae.saveParam("all",a.index,ruleArr,{k:"luckysheet_conditionformat_save"}),setTimeout(()=>{l&&typeof l=="function"&&l()},1),s}function zb(e={}){let{range:n=d.luckysheet_select_save,order:t=Q(d.currentSheetIndex),success:l}=qe({},e);if(n=JSON.parse(JSON.stringify(n)),N(n)=="string"){if(!m.iscelldata(n))return U.info("The range parameter is invalid.","");let f=m.getcellrange(n);n=[{row:f.row,column:f.column}]}else if(N(n)=="object"){if(n.row==null||n.column==null)return U.info("The range parameter is invalid.","");n=[{row:n.row,column:n.column}]}if(N(n)!="array")return U.info("The range parameter is invalid.","");let a=d.luckysheetfile[t];if(a==null)return U.info("The order parameter is invalid.","");let o=$.extend(!0,{},a.config),s=!1;for(let f=0;f1){U.info(te().drag.noMulti,"");return}a&&typeof a=="string"&&m.iscelldata(a)&&(a=m.getcellrange(a));let s=Ct(a),u=[];if(s.length===0)return;let f,A,h;switch(e){case"flipUpDown":for(let g=s.length-1;g>=0;g--){let p=[];for(let v=0;v=0;v--){let y="";s[g]!=null&&s[g][v]!=null&&(y=s[g][v]),p.push(y)}u.push(p)}break;case"flipClockwise":for(let g=0;g=0;v--){let y="";s[v]!=null&&s[v][g]!=null&&(y=s[v][g]),p.push(y)}u.push(p)}break;case"flipCounterClockwise":for(let g=s[0].length-1;g>=0;g--){let p=[];for(let v=0;v=0;w--){let C="";if(p[w]!=null){if(C=p[w],(C.v=="0"||C.v==0)&&y)continue;y=!1}b.unshift(C)}let k=f-b.length;for(let w=0;w=0;w--){let C="";if(p[w]!=null){if(C=p[w],(C.v=="0"||C.v==0)&&y)continue;y=!1}b.unshift(C)}let k=f-b.length;for(let w=0;w1){U.info(te().drag.noMulti,"");return}o&&typeof o=="string"&&m.iscelldata(o)&&(o=m.getcellrange(o));let u=Ct(o);if(u.length==0)return;let f=[];for(let A=0;A0&&t.calcChain.forEach(A=>{A.index=o});let s=ve.generateRandomSheetName(d.luckysheetfile,!1);if(t.name){let A=!1;for(let h=0;hd.luckysheetfile.length&&(l=d.luckysheetfile.length);let A=d.luckysheetfile[l-1].index,h=$("#luckysheet-sheets-item"+A);$("#luckysheet-sheets-item"+o).insertAfter(h),d.luckysheetfile.splice(l,0,u)}let f={};if(d.luckysheetfile.forEach((A,h,g)=>{g[h].order=h,f[A.index.toString()]=h}),$("#luckysheet-sheet-area div.luckysheet-sheets-item").removeClass("luckysheet-sheets-item-active"),$("#luckysheet-sheets-item"+o).addClass("luckysheet-sheets-item-active"),$("#luckysheet-cell-main").append('
'),al(!0),ae.saveParam("sha",null,$.extend(!0,{},u)),ae.saveParam("shr",null,f),d.clearjfundo){d.jfundo.length=0;let A={};A.type="addSheet",A.sheetconfig=$.extend(!0,{},u),A.index=o,A.currentSheetIndex=d.currentSheetIndex,d.jfredo.push(A)}return ve.changeSheetExec(o,!1,!0),a&&typeof a=="function"&&a(),u}function Ob(e={}){let{order:n=Q(d.currentSheetIndex),success:t}=qe({},e),l=d.luckysheetfile[n];return l==null?U.info("The order parameter is invalid.",""):d.luckysheetfile.length===1?U.info(te().sheetconfig.noMoreSheet,""):(ve.deleteSheet(l.index),setTimeout(()=>{t&&typeof t=="function"&&t()},1),l)}function Xu(e={}){let{index:n,success:t}=qe({},e);n||(n=d.luckysheetfile.find(o=>o.order===d.currentSheetIndex));let l=d.luckysheetfile.findIndex(o=>o.index==n);if(l==-1)return U.info("The index parameter is invalid.","");let a=d.luckysheetfile[l];return d.luckysheetfile.length===1?U.info(te().sheetconfig.noMoreSheet,""):(ve.deleteSheet(a.index),setTimeout(()=>{t&&typeof t=="function"&&t()},1),a)}function Vb(e={}){let{targetOrder:n,order:t=Q(d.currentSheetIndex),success:l}=qe({},e),a=d.luckysheetfile[t];if(a==null)return U.info("The order parameter is invalid.","");if(n==null&&(n=t+1),!V(n))return U.info("The targetOrder parameter is invalid.","");let o=a.index,s=ve.generateRandomSheetIndex(),u=$.extend(!0,{},a);u.order=d.luckysheetfile.length,u.index=s,u.name=ve.generateCopySheetName(d.luckysheetfile,u.name);let f="";u.color!=null&&(f='
');let A=$("#luckysheet-sheets-item"+o);if(V(n)&&(A=$("#luckysheet-sheets-item"+d.luckysheetfile[n-1].index)),$("#luckysheet-sheet-container-c").append(we(sr,{index:u.index,active:"",name:u.name,order:u.order,style:"",colorset:f})),$("#luckysheet-sheets-item"+u.index).insertAfter(A),d.luckysheetfile.splice(n,0,u),$("#luckysheet-sheet-area div.luckysheet-sheets-item").removeClass("luckysheet-sheets-item-active"),$("#luckysheet-sheets-item"+s).addClass("luckysheet-sheets-item-active"),$("#luckysheet-cell-main").append('
'),al(!0),ae.saveParam("shc",s,{copyindex:o,name:u.name}),ve.changeSheetExec(s),ve.reOrderAllSheet(),d.clearjfundo)d.jfredo.push({type:"copySheet",copyindex:o,index:u.index,sheetIndex:u.index});else if(d.jfredo.length>0){let h=d.jfredo[d.jfredo.length-1];h.type=="copySheet"&&(h.index=u.index,h.sheetIndex=u.index)}return setTimeout(()=>{l&&typeof l=="function"&&l()},1),u}function qb(e={}){let{order:n=Q(d.currentSheetIndex),success:t}=qe({},e),l=d.luckysheetfile[n];return l==null?U.info("The order parameter is invalid.",""):(ve.setSheetHide(l.index),setTimeout(()=>{t&&typeof t=="function"&&t()},1),l)}function Hb(e={}){let{order:n=Q(d.currentSheetIndex),success:t}=qe({},e),l=d.luckysheetfile[n];return l==null?U.info("The order parameter is invalid.",""):(ve.setSheetShow(l.index),setTimeout(()=>{t&&typeof t=="function"&&t()},1),l)}function jb(e,n={}){if(e==null||!V(e)||d.luckysheetfile[e]==null)return U.info("The order parameter is invalid.","");let t=d.luckysheetfile[e],{success:l}=qe({},n);return $("#luckysheet-sheet-area div.luckysheet-sheets-item").removeClass("luckysheet-sheets-item-active"),$("#luckysheet-sheets-item"+t.index).addClass("luckysheet-sheets-item-active"),ve.changeSheet(t.index),setTimeout(()=>{l&&typeof l=="function"&&l()},1),ae.multipleRangeShow(),t}function Xb(e,n={}){if(N(e)!="string"||e.toString().length==0)return U.info("The name parameter is invalid.","");let{order:t=Q(d.currentSheetIndex),success:l}=qe({},n),a=d.luckysheetfile[t];if(a==null)return U.info("The order parameter is invalid.","");let o=a.name;if(a.name=e,$("#luckysheet-sheets-item"+a.index+" .luckysheet-sheets-item-name").text(e),ae.saveParam("all",a.index,e,{k:"name"}),d.clearjfundo){let s={};s.type="sheetName",s.sheetIndex=a.index,s.oldtxt=o,s.txt=e,d.jfundo.length=0,d.jfredo.push(s)}l&&typeof l=="function"&&l()}function Ub(e,n={}){if(N(e)!="string"||e.toString().length==0)return U.info("The color parameter is invalid.","");let{order:t=Q(d.currentSheetIndex),success:l}=qe({},n),a=d.luckysheetfile[t];if(a==null)return U.info("The order parameter is invalid.","");let o=a.color;if(a.color=e,$("#luckysheet-sheets-item"+a.index).find(".luckysheet-sheets-item-color").remove(),$("#luckysheet-sheets-item"+a.index).append('
'),ae.saveParam("all",a.index,e,{k:"color"}),d.clearjfundo){let s={};s.type="sheetColor",s.sheetIndex=a.index,s.oldcolor=o,s.color=e,d.jfundo.length=0,d.jfredo.push(s)}l&&typeof l=="function"&&l()}function Wb(e,n={}){if(e!="left"&&e!="right"&&!V(e))return U.info("Type parameter not available","");V(e)&&(e=parseInt(e));let t=Q(d.currentSheetIndex),{order:l=t,success:a}=qe({},n),o=d.luckysheetfile[l];if(o==null)return U.info("ncorrect worksheet index","");let s=o.index;if(e=="left"){if(l==0)return;let f=d.luckysheetfile[l-1].index;$("#luckysheet-sheets-item"+s).insertBefore($("#luckysheet-sheets-item"+f)),d.luckysheetfile.splice(l,1),d.luckysheetfile.splice(l-1,0,o)}else if(e=="right"){if(l==d.luckysheetfile.length-1)return;let f=d.luckysheetfile[l+1].index;$("#luckysheet-sheets-item"+s).insertAfter($("#luckysheet-sheets-item"+f)),d.luckysheetfile.splice(l,1),d.luckysheetfile.splice(l+1,0,o)}else{if(e<0&&(e=0),e>d.luckysheetfile.length-1&&(e=d.luckysheetfile.length-1),e==l)return;if(e{h[A].order=A,u[f.index.toString()]=A}),ae.saveParam("shr",null,u),a&&typeof a=="function"&&a()}function Gb(e,n={}){if(e==null||e.length==0)return U.info("Type orderList not available","");let t={};e.forEach(o=>{t[o.index.toString()]=o.order}),d.luckysheetfile.sort((o,s)=>{let u=t[o.index.toString()],f=t[s.index.toString()];return u!=null&&f!=null?u-f:u!=null?-1:(f!=null,1)});let l={};d.luckysheetfile.forEach((o,s,u)=>{if(u[s].order=s,l[o.index.toString()]=s,s>0){let f=u[s-1].index;$("#luckysheet-sheets-item"+o.index).insertAfter($("#luckysheet-sheets-item"+f))}});let{success:a}=qe({},n);a&&typeof a=="function"&&a(),!(n.broadcast&&n.broadcast===!1)&&(console.log("==> ",n.broadcast&&n.broadcast===!1),ae.saveParam("shr",null,l))}function Yb(e,n={}){if(!V(e)||e<.1||e>4)return U.info("The zoom parameter is invalid.","");let{order:t=Q(d.currentSheetIndex),success:l}=qe({},n),a=d.luckysheetfile[t];if(a==null)return U.info("The order parameter is invalid.","");if(a.zoomRatio=e,ae.saveParam("all",a.index,e,{k:"zoomRatio"}),a.index==d.currentSheetIndex){d.zoomRatio=e;let o=ve.getSheetByIndex();Se.images=o.images,Se.allImagesShow(),Se.init(),pr(),ki()}l&&typeof l=="function"&&l()}function Qb(e={}){let{order:n=Q(d.currentSheetIndex),success:t}=qe({},e),l=d.luckysheetfile[n];return l==null?U.info("The order parameter is invalid.",""):(l.showGridLines=!0,l.index==d.currentSheetIndex&&(d.showGridLines=!0,setTimeout(function(){Ue()},1)),setTimeout(()=>{t&&typeof t=="function"&&t()},1),l)}function _b(e={}){let{order:n=Q(d.currentSheetIndex),success:t}=qe({},e),l=d.luckysheetfile[n];return l==null?U.info("The order parameter is invalid.",""):(l.showGridLines=!1,l.index==d.currentSheetIndex&&(d.showGridLines=!1,setTimeout(function(){Ue()},1)),setTimeout(()=>{t&&typeof t=="function"&&t()},1),l)}function Kb(e={}){Je();let{success:n}=qe({},e);n&&typeof n=="function"&&n()}function Zb(e={}){let{scrollLeft:n,scrollTop:t,targetRow:l,targetColumn:a,success:o}=qe({},e);if(n!=null){if(!V(n))return U.info("The scrollLeft parameter is invalid.","");$("#luckysheet-scrollbar-x").scrollLeft(n)}else if(a!=null){if(!V(a))return U.info("The targetColumn parameter is invalid.","");let s=d.visibledatacolumn[a],u=a<=0?0:d.visibledatacolumn[a-1];$("#luckysheet-scrollbar-x").scrollLeft(u)}if(t!=null){if(!V(t))return U.info("The scrollTop parameter is invalid.","");$("#luckysheet-scrollbar-y").scrollTop(t)}else if(l!=null){if(!V(l))return U.info("The targetRow parameter is invalid.","");let s=d.visibledatarow[l],u=l<=0?0:d.visibledatarow[l-1];$("#luckysheet-scrollbar-y").scrollTop(u)}o&&typeof o=="function"&&o()}function Jb(e={}){Lt();let{success:n}=qe({},e);n&&typeof n=="function"&&n()}function $b(e={}){let{range:n=d.luckysheet_select_save[d.luckysheet_select_save.length-1]}=qe({},e);if(N(n)=="string"){if(!m.iscelldata(n))return U.info("The range parameter is invalid.","");let k=m.getcellrange(n);n={row:k.row,column:k.column}}if(N(n)!="object"||n.row==null||n.column==null)return U.info("The range parameter is invalid.","");let t=n.row[0],l=n.row[1],a=n.column[0],o=n.column[1];if(Bt(d.config,t,l,a,o))return U.info("Cannot perform this operation on partially merged cells","");let u=d.visibledatarow,f=d.visibledatacolumn,A,h;t-1<0?(A=0,h=u[l]):(A=u[t-1],h=u[l]-u[t-1]);let g,p;a-1<0?(g=0,p=f[o]):(g=f[a-1],p=f[o]-f[a-1]);let v=$("").attr({width:Math.ceil(p*d.devicePixelRatio),height:Math.ceil(h*d.devicePixelRatio)}).css({width:p,height:h});Zl(g,A,p,h,1,1,null,null,v);let y=v.get(0).getContext("2d");return y.beginPath(),y.moveTo(0,0),y.lineTo(0,d.devicePixelRatio*h),y.lineWidth=d.devicePixelRatio*2,y.strokeStyle=Dl.strokeStyle,y.stroke(),y.closePath(),y.beginPath(),y.moveTo(0,0),y.lineTo(d.devicePixelRatio*p,0),y.lineWidth=d.devicePixelRatio*2,y.strokeStyle=Dl.strokeStyle,y.stroke(),y.closePath(),v.get(0).toDataURL("image/png")}function ek(e,n={}){if(e==null||e.toString().length==0)return U.info("The name parameter is invalid.","");$("#luckysheet_info_detail_input").val(e);let{success:t}=qe({},n);t&&typeof t=="function"&&t()}function Uu(e={}){let n="",t=$("#luckysheet_info_detail_input");if(t.length==0)return U.info("Failed to get workbook name, label loading failed!"),n;n=$.trim(t.val());let{success:l}=qe({},e);return setTimeout(()=>{l&&typeof l=="function"&&l()},1),n}function tk(e={}){let n=$.extend(!0,{},d.jfredo[d.jfredo.length-1]);Gn.redo(new Event("custom")),jr();let{success:t}=qe({},e);return setTimeout(()=>{t&&typeof t=="function"&&t()},1),n}function lk(e={}){let n=$.extend(!0,{},d.jfundo[d.jfundo.length-1]);Gn.undo(new Event("custom")),jr();let{success:t}=qe({},e);return setTimeout(()=>{t&&typeof t=="function"&&t()},1),n}function Ro(){let e=$.extend(!0,[],d.luckysheetfile);return e.forEach((n,t,l)=>{if(n.data!=null&&n.data.length>0&&(n.celldata=ve.getGridData(n.data)),n.chart&&n.chart.length)for(let a=0;a',k.tooltipInfo1);return}}else if(t=="checkbox"){if(a.length==0||o.length==0){U.info('',k.tooltipInfo2);return}}else if(t=="number"||t=="number_integer"||t=="number_decimal"){if(!p.includes(l))return U.info("The optionItem.type2 parameter is invalid.","");if(!V(a)){U.info('',k.tooltipInfo3);return}if(l=="bw"||l=="nb"){if(!V(o)){U.info('',k.tooltipInfo3);return}if(Number(o)',k.tooltipInfo4);return}}}else if(t=="text_content"){if(!v.includes(l))return U.info("The optionItem.type2 parameter is invalid.","");if(a.length==0){U.info('',k.tooltipInfo5);return}}else if(t=="text_length"){if(!p.includes(l))return U.info("The optionItem.type2 parameter is invalid.","");if(!V(a)){U.info('',k.tooltipInfo3);return}if(l=="bw"||l=="nb"){if(!V(o)){U.info('',k.tooltipInfo3);return}if(Number(o)',k.tooltipInfo4);return}}}else if(t=="date"){if(!y.includes(l))return U.info("The optionItem.type2 parameter is invalid.","");if(!qt(a)){U.info('',k.tooltipInfo6);return}if(l=="bw"||l=="nb"){if(!qt(o)){U.info('',k.tooltipInfo6);return}if(Al(a,o)>0){U.info('',k.tooltipInfo7);return}}}else if(t=="validity"&&!b.includes(l))return U.info("The optionItem.type2 parameter is invalid.","");if(N(s)!="boolean")return U.info("The optionItem.remote parameter is invalid.","");if(N(u)!="boolean")return U.info("The optionItem.prohibitInput parameter is invalid.","");if(N(f)!="boolean")return U.info("The optionItem.hintShow parameter is invalid.","");let{range:w=d.luckysheet_select_save[d.luckysheet_select_save.length-1],order:C=Q(d.currentSheetIndex),success:I}=qe({},n);if(N(w)=="string"){if(!m.iscelldata(w))return U.info("The range parameter is invalid.","");let z=m.getcellrange(w);w={row:z.row,column:z.column}}if(N(w)!="object"||w.row==null||w.column==null)return U.info("The range parameter is invalid.","");let x=d.luckysheetfile[C];if(x==null)return U.info("The order parameter is invalid.","");let T={type:t,type2:l,value1:a,value2:o,checked:h,remote:s,prohibitInput:u,hintShow:f,hintText:A},R=$.extend(!0,{},x.dataVerification),D=$.extend(!0,[],x.data);D.length==0&&(D=ve.buildGridData(x));let S=w.row[0],B=w.row[1],F=w.column[0],E=w.column[1];for(let z=S;z<=B;z++)for(let P=F;P<=E;P++)R[z+"_"+P]=T,t=="checkbox"&&(T.checked?Xt(z,P,D,T.value1):Xt(z,P,D,T.value2));if(x.index==d.currentSheetIndex){let z=$.extend(!0,{},x.dataVerification);t=="checkbox"?Qe.refOfCheckbox(z,R,d.currentSheetIndex,D,w):Qe.ref(z,R,d.currentSheetIndex)}else x.dataVerification=R,x.data=D;I&&typeof I=="function"&&I()}function ck(e={}){let{range:n=d.luckysheet_select_save[d.luckysheet_select_save.length-1],order:t=Q(d.currentSheetIndex),success:l}=qe({},e);if(N(n)=="string"){if(!m.iscelldata(n))return U.info("The range parameter is invalid.","");let h=m.getcellrange(n);n={row:h.row,column:h.column}}if(N(n)!="object"||n.row==null||n.column==null)return U.info("The range parameter is invalid.","");let a=d.luckysheetfile[t];if(a==null)return U.info("The order parameter is invalid.","");let o=$.extend(!0,{},a.dataVerification),s=n.row[0],u=n.row[1],f=n.column[0],A=n.column[1];for(let h=s;h<=u;h++)for(let g=f;g<=A;g++)delete o[h+"_"+g];if(a.index==d.currentSheetIndex){let h=$.extend(!0,{},a.dataVerification);Qe.ref(h,o,d.currentSheetIndex)}else a.dataVerification=o;l&&typeof l=="function"&&l()}function uk(e,n={}){let{order:t=Q(d.currentSheetIndex),rowIndex:l,colIndex:a,success:o}=qe({},n),s=d.luckysheetfile[t];if(s==null)return U.info("The order parameter is invalid.","");if(s.index==d.currentSheetIndex){let u=d.luckysheet_select_save[d.luckysheet_select_save.length-1];l==null&&(l=u.row_focus||0),l<0&&(l=0),l>d.visibledatarow.length&&(l=d.visibledatarow.length),a==null&&(a=u.column_focus||0),a<0&&(a=0),a>d.visibledatacolumn.length&&(a=d.visibledatacolumn.length);let f=a==0?0:d.visibledatacolumn[a-1],A=l==0?0:d.visibledatarow[l-1],h=new Image;h.onload=function(){let g=h.width,p=h.height,v={src:e,left:f,top:A,originWidth:g,originHeight:p};Se.addImgItem(v),o&&typeof o=="function"&&o()},h.src=e}else{let u=s.images||{},f=s.config,A=s.zoomRatio||1,h=s.row,g=s.visibledatarow||[];if(g.length===0){let w=0;for(let C=0;Cg.length&&(l=g.length),a==null&&(a=0),a<0&&(a=0),a>v.length&&(a=v.length);let y=a==0?0:v[a-1],b=l==0?0:g[l-1],k=new Image;k.onload=function(){let w={src:e,left:y,top:b,originWidth:k.width,originHeight:k.height},C,I,x=400;w.originHeight{delete o[s]}):o=null,a.images=o,a.index==d.currentSheetIndex&&(Se.currentImgId!=null&&(t=="all"||t.includes(Se.currentImgId))&&($("#luckysheet-modal-dialog-activeImage").hide(),$("#luckysheet-modal-dialog-cropping").hide(),$("#luckysheet-modal-dialog-slider-imageCtrl").hide()),Se.images=o,Se.allImagesShow(),Se.init()),l&&typeof l=="function"&&l()}function fk(e={}){let{order:n=Q(d.currentSheetIndex),success:t}=qe({},e),l=d.luckysheetfile[n];return l==null?U.info("The order parameter is invalid.",""):(setTimeout(function(){t&&typeof t=="function"&&t()},1),l.images)}function Ak(e,n={}){let{success:t}=qe({},n);return setTimeout(()=>{t&&typeof t=="function"&&t()},0),ve.getGridData(e)}function hk(e,n={}){let{success:t}=qe({},n);return setTimeout(()=>{t&&typeof t=="function"&&t()},0),ve.buildGridData({celldata:e})}function js(){let e=d.toJsonOptions;return e.title=$("#luckysheet_info_detail_input").val(),e.data=Ro(),Vt().forEach((n,t)=>{n.data!=null&&(e.data[t].row=N(n.data)==="array"?n.data.length:0,e.data[t].column=N(n.data[0])==="array"?n.data[0].length:0)}),e}function mk(e="zh"){if(!["zh","en","es"].includes(e))return U.info("The lang parameter is invalid.","");let n=js();n.lang=e,luckysheet.create(n)}function gk(){ae.websocket!=null&&ae.websocket.close(1e3)}function pk(e){if(e==null)return{column:d.luckysheet_select_save[d.luckysheet_select_save.length-1].column,row:d.luckysheet_select_save[d.luckysheet_select_save.length-1].row};let n=Re.getRangeByTxt(e);return{column:n[0].column,row:n[0].row}}function di(e=d.luckysheet_select_save){return N(e)==="object"&&(e=[e]),Re.getTxtByRange(e)}function td(e){let{prevPage:n,nextPage:t,total:l}=te().button;$("#luckysheet-bottom-pager").remove(),$("#luckysheet-sheet-content").after('
'),$("#luckysheet-bottom-pager").sPage({page:e.pageIndex,total:e.total,selectOption:e.selectOption,pageSize:e.pageSize,showTotal:e.showTotal,showSkip:e.showSkip,showPN:e.showPN,prevPage:e.prevPage||n,nextPage:e.nextPage||t,totalTxt:e.totalTxt||l+e.total,backFun:function(a){a.pageIndex=a.page,!!$e.createHookFunction("onTogglePager",a)}})}function vk(e){m.execFunctionGroupForce(!0),Ue(),setTimeout(()=>{e&&typeof e=="function"&&e()})}function yk(e={}){let{data:n,success:t}=e,l=d.luckysheetfile;for(let s=0;s{l&&typeof l=="function"&&l()})}function Si(e,n){return ed().every(({r:a,c:o})=>{let s=d.flowdata[a][o];return s==null?!1:s[e]==n})}function bk(e,n,t,l,a,o,s){let u=Ha("chart"),f=Ct({row:n,column:t},e);var A=mt(e,{row:n,column:t},d.currentSheetIndex);return console.dir(f),Un.createChart(e,u,f,[{row:n,column:t}],A,l,a,o,s)}function kk(e){return Un.updateChart(e)}function wk(e){return Un.renderChart(e)}function xk(e){return Un.deleteChart(e)}function Ck(e,n,t,l,a,o,s){let u=Ha("chart"),f=Ct({row:n,column:t},e);var A=mt(e,{row:n,column:t},d.currentSheetIndex)}function Tk(){ae.closeWebSocket()}function Ik(){Bs()}function Sk(){Ps()}function Dk(e,n=!0){return Tl(this,null,function*(){Ss(e,n)})}var Mo,en=De(()=>{je();dt();wt();yt();Xl();jt();mo();rl();ui();tl();jt();$r();Fl();zr();za();wr();Qt();_t();Fa();Pt();Kr();La();Ao();vn();$t();ll();Ci();yl();Kl();Nr();cl();Ar();Br();el();Wt();zn();qs();wi();mr();hr();Mo=Ol(En());wt();Wa();wn();je();Bu();Hu();Io();Qr()});var Bm,Pm=De(()=>{Bm={container:"luckysheet",loading:{image:()=>` - `,imageClass:"loadingAnimation"},column:60,row:84,allowCopy:!0,showtoolbar:!0,showinfobar:!0,showsheetbar:!0,showstatisticBar:!0,pointEdit:!1,pointEditUpdate:null,pointEditZoom:1,data:[{name:"Sheet1",color:"",status:"1",order:"0",data:[],config:{},index:0},{name:"Sheet2",color:"",status:"0",order:"1",data:[],config:{},index:1},{name:"Sheet3",color:"",status:"0",order:"2",data:[],config:{},index:2}],title:"Luckysheet Demo",userInfo:!1,userMenuItem:[{url:"www.baidu.com",icon:'',name:"\u6211\u7684\u8868\u683C"},{url:"www.baidu.com",icon:'',name:"\u9000\u51FA\u767B\u9646"}],myFolderUrl:"www.baidu.com",config:{},fullscreenmode:!0,devicePixelRatio:window.devicePixelRatio,allowEdit:!0,loadUrl:"",loadSheetUrl:"",gridKey:"",updateUrl:"",updateImageUrl:"",allowUpdate:!1,functionButton:"",showConfigWindowResize:!0,enableAddRow:!0,enableAddBackTop:!0,autoFormatw:!1,accuracy:void 0,pageInfo:{queryExps:"",reportId:"",fields:"",mobile:"",frezon:"",currentPage:"",totalPage:10,pageUrl:""},editMode:!1,beforeCreateDom:null,fireMousedown:null,lang:"en",plugins:[],forceCalculation:!1,rowHeaderWidth:46,columnHeaderHeight:20,defaultColWidth:73,defaultRowHeight:19,defaultFontSize:10,limitSheetNameLength:!0,defaultSheetNameMaxLength:31,sheetFormulaBar:!0,showtoolbarConfig:{},showsheetbarConfig:{},showstatisticBarConfig:{},cellRightClickConfig:{},sheetRightClickConfig:{},imageUpdateMethodConfig:{}}});var Nm=kl((Xs,zm)=>{(function(e,n){typeof Xs=="object"&&typeof zm!="undefined"?n(Xs):typeof define=="function"&&define.amd?define(["exports"],n):(e=typeof globalThis!="undefined"?globalThis:e||self,n(e.zh={}))})(Xs,function(e){"use strict";var n=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},t={weekdays:{shorthand:["\u5468\u65E5","\u5468\u4E00","\u5468\u4E8C","\u5468\u4E09","\u5468\u56DB","\u5468\u4E94","\u5468\u516D"],longhand:["\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"]},months:{shorthand:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],longhand:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"]},rangeSeparator:" \u81F3 ",weekAbbreviation:"\u5468",scrollTitle:"\u6EDA\u52A8\u5207\u6362",toggleTitle:"\u70B9\u51FB\u5207\u6362 12/24 \u5C0F\u65F6\u65F6\u5236"};n.l10ns.zh=t;var l=n.l10ns;e.Mandarin=t,e.default=l,Object.defineProperty(e,"__esModule",{value:!0})})});var X,Eo,Rk,Fm,Lm=De(()=>{yl();po();mu();wt();ll();fu();jt();mo();tl();Kr();Pt();_t();Fl();za();Qt();dt();je();X=Ol(En()),Eo=Ol(Ma()),Rk={DISPIMG:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e0)for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ea)&&(a=parseFloat(t[e]))}return a==null?0:a}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},MIN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e2)return m.error.v;if(parseInt(o)==0)return l;if(parseInt(o)==1)return(0,X.default)(l).format("YYYY-MM-DD");if(parseInt(o)==2)return(0,X.default)(l).format("YYYY\u5E74M\u6708D\u65E5")}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},PROVINCE_BY_IDCARD:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=0;e--)if(s>=u[e][1])return u[e][0];return"\u672A\u627E\u5230\u5339\u914D\u661F\u5EA7\u4FE1\u606F"}catch(A){var f=A;return f=m.errorInfo(f),[m.error.v,f]}},ANIMAL_BY_IDCARD:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e0&&l<0?m.error.nm:Math.ceil(t/l)*l):m.error.v}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},ATAN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e1?m.error.nm:Math.acos(t)):m.error.v}catch(a){var l=a;return l=m.errorInfo(l),[m.error.v,l]}},ACOSH:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=1?m.error.nm:Math.log((1+t)/(1-t))/2):m.error.v}catch(a){var l=a;return l=m.errorInfo(l),[m.error.v,l]}},ATAN2:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e1)return m.error.v;if(t.rowl>1){var l=m.getcellrange(t.startCell),a=l.row[0];if(window.luckysheetCurrentRowa+t.rowl-1)return m.error.v;var o=t.data[window.luckysheetCurrentRow-a][0]}else var o=t.data;return o==null||me(o.v)?0:V(o.v)?Math.floor(parseFloat(o.v)):m.error.v}else{if(N(t)=="boolean"){if(t.toString().toLowerCase()=="true")return 1;if(t.toString().toLowerCase()=="false")return 0}return V(t)?Math.floor(parseFloat(t)):m.error.v}}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},ISEVEN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e1;){if(u%2){for(e=3,s=Math.floor(Math.sqrt(u));e<=s&&u%e;e+=2);f=e<=s?e:u}else f=2;for(u/=f,A*=f,e=t.length;e;t[--e]%f==0&&(t[e]/=f)===1&&t.splice(e,1));}return A>=Math.pow(2,53)?m.error.nm:A}catch(g){var h=g;return h=m.errorInfo(h),[m.error.v,h]}},LN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e0?a:-a}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},MROUND:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=0?l:-l}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},SUMSQ:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e0)for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e111||f>11&&f<101?a.push(m.error.v):a.push(h(f))):a.push(m.error.v)}u.push(a)}else for(var e=0;e111||f>11&&f<101?u.push(m.error.v):u.push(h(f))):u.push(m.error.v)}return u}else return H(l)?l:V(l)?(l=parseInt(l),l<1||l>111||l>11&&l<101?m.error.v:h(l)):m.error.v}catch(h){var A=h;return A=m.errorInfo(A),[m.error.v,A]}},ASIN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e1?m.error.nm:Math.asin(t)):m.error.v}catch(a){var l=a;return l=m.errorInfo(l),[m.error.v,l]}},COUNTIF:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=!*?]/.test(p)||(p='=="'+p+'"'),p=p.replace("<>","!=");var v=0;if(N(g)=="array"){for(var y=0;y-1||p.indexOf("?")>-1?m.isWildcard(k,p)&&v++:typeof k!="string"?new Function("return "+k+p)()&&v++:new Function('return "'+k+'"'+p)()&&v++}}else if(g!=null&&!me(g.v)){var k=g.v;p.indexOf("*")>-1||p.indexOf("?")>-1?m.isWildcard(k,p)&&v++:typeof k!="string"?new Function("return "+k+p)()&&v++:new Function('return "'+k+'"'+p)()&&v++}return v};var t=arguments[0],l;if(N(t)=="object"&&t.startCell!=null)l=t.data;else return m.error.v;var a=arguments[1],o;if(N(a)=="array")if(o=[],N(a[0])=="array"){if(!M.isDyadicArr(a))return m.error.v;for(var e=0;e1||a.coll>1)return 0;o=a.data.v}else o=a;if(N(o)=="array"){var f=[];if(N(o[0])=="array")for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;try{return Math.floor(Math.random()*1e9)/1e9}catch(n){var e=n;return e=m.errorInfo(e),[m.error.v,e]}},COUNTUNIQUE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e0?l:-l}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},EXP:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;try{return Math.PI}catch(n){var e=n;return e=m.errorInfo(e),[m.error.v,e]}},FLOOR:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e0&&l<0)return m.error.nm;var a=-Math.floor(Math.log(Math.abs(l))/Math.log(10));return t>=0?Math.floor(t/l)*l*Math.pow(10,a)/Math.pow(10,a):-(Math.ceil(Math.abs(t)/l)*l*Math.pow(10,a))/Math.pow(10,a)}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},GCD:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=Math.pow(2,53))return m.error.nm;for(var e=1;e=Math.pow(2,53))return m.error.nm;for(;a&&o;)a>o?a%=o:o%=a;a+=o}return a}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},RANDBETWEEN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;el?m.error.nm:t+Math.ceil((l-t+1)*Math.random())-1):m.error.v}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},ROUND:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e0?1:-1;return a*Math.round(Math.abs(t)*Math.pow(10,l))/Math.pow(10,l)}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},ROUNDDOWN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e0?1:-1;return a*Math.floor(Math.abs(t)*Math.pow(10,l))/Math.pow(10,l)}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},ROUNDUP:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e0?1:-1;return a*Math.ceil(Math.abs(t)*Math.pow(10,l))/Math.pow(10,l)}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},SERIESSUM:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e0)return 1;if(t==0)return 0;if(t<0)return-1}catch(a){var l=a;return l=m.errorInfo(l),[m.error.v,l]}},SIN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e0?1:-1;return a*Math.floor(Math.abs(t)*Math.pow(10,l))/Math.pow(10,l)}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},QUOTIENT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e-1?m.error.nm:Math.pow(t,l)):m.error.v}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},SUMIFS:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;eMath.min(l,a)||to?m.error.nm:a<=0||a>o?m.error.nm:o<=0?m.error.nm:s?A(t,l,a,o):f(t,l,a,o)}catch(f){var u=f;return u=m.errorInfo(u),[m.error.v,u]}},INTERCEPT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e1||arguments[1].coll>1)return m.error.v;var u=arguments[1].data;if(u==null||me(u.v))var s=0;else var s=u.v}else s=arguments[1];if(N(s)=="array"){if(l.length==0)return m.error.nm;for(var f=[],e=0;el.length){f.push(m.error.nm);continue}f.push(t.sort(function(g,p){return p-g})[s[e]-1])}return f}else return V(s)?(s=Math.ceil(parseFloat(s)),l.length==0?m.error.nm:s<=0||s>l.length?m.error.nm:t.sort(function(h,g){return g-h})[s-1]):m.error.v}catch(h){var A=h;return A=m.errorInfo(A),[m.error.v,A]}},STDEVA:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e1?(2*o.indexOf(t)+h+1)/2:o.indexOf(t)+1}catch(p){var g=p;return g=m.errorInfo(g),[m.error.v,g]}},PERCENTRANK_EXC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=A[e]&&(uthis.m[1])return m.error.na;for(var e=0;e=A[e]&&(uthis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=1?m.error.nm:Math.log((1+t)/(1-t))/2):m.error.v}catch(a){var l=a;return l=m.errorInfo(l),[m.error.v,l]}},MODE_SNGL:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ef&&(f=s[A],u=[]),s[A]==f&&(u[u.length]=A);if(f<=1)return m.error.na;for(var h=a.indexOf(u[0]),g=0;gthis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;el?m.error.nm:a<0||a>1?m.error.nm:o?jStat.binomial.cdf(t,l,a):jStat.binomial.pdf(t,l,a)}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},BINOM_INV:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e1)return m.error.nm;if(a<0||a>1)return m.error.nm;for(var o=0;o<=t;){if(jStat.binomial.cdf(o,t,l)>=a)return o;o++}}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},CONFIDENCE_NORM:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=1?m.error.nm:l<=0?m.error.nm:a<1?m.error.nm:jStat.normalci(1,t,l,a)[1]-1):m.error.v}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},CORREL:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e1)return m.error.nm;a.sort(function(p,v){return p-v});var u=window.luckysheet_function.FLOOR.f(a.length*s,2)/2,f=h(a,u);return f=g(f,u),f=jStat.mean(f),f}catch(h){var A=h;return A=m.errorInfo(A),[m.error.v,A]}},PERCENTILE_EXC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=1)return m.error.nm;a=a.sort(function(g,p){return g-p});var u=a.length;if(s<1/(u+1)||s>1-1/(u+1))return m.error.nm;var f=s*(u+1)-1,A=Math.floor(f);return f===A?a[f]:a[A]+(f-A)*(a[A+1]-a[A])}catch(g){var h=g;return h=m.errorInfo(h),[m.error.v,h]}},PERCENTILE_INC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e1)return m.error.nm;a=a.sort(function(g,p){return g-p});var u=a.length,f=s*(u-1),A=Math.floor(f);return f===A?a[f]:a[A]+(f-A)*(a[A+1]-a[A])}catch(g){var h=g;return h=m.errorInfo(h),[m.error.v,h]}},PEARSON:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=1?m.error.nm:jStat.normal.inv(t,0,1)):m.error.v}catch(a){var l=a;return l=m.errorInfo(l),[m.error.v,l]}},NORM_S_DIST:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=1?m.error.nm:a<=0?m.error.nm:jStat.normal.inv(t,l,a)}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},NORM_DIST:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e1?m.error.nm:t<0||l<1?m.error.nm:o?jStat.negbin.cdf(t,l,a):jStat.negbin.pdf(t,l,a)}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},MINA:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=1?m.error.nm:a<=0?m.error.nm:jStat.lognormal.inv(t,l,a)):m.error.v}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},LOGNORM_DIST:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e1))return m.error.nm}if(s!=1)return m.error.nm;var A=M.getFirstValue(arguments[2]);if(H(A))return A;if(!V(A))return m.error.v;A=parseFloat(A);var h=A;if(arguments.length==4){if(h=M.getFirstValue(arguments[3]),H(h))return h;if(!V(h))return m.error.v;h=parseFloat(h)}for(var g=0,e=0;e=A&&a[e]<=h&&(g+=o[e]);return g}catch(v){var p=v;return p=m.errorInfo(p),[m.error.v,p]}},QUARTILE_EXC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=4)return m.error.nm;switch(o){case 1:return window.luckysheet_function.PERCENTILE_EXC.f(l,.25);case 2:return window.luckysheet_function.PERCENTILE_EXC.f(l,.5);case 3:return window.luckysheet_function.PERCENTILE_EXC.f(l,.75)}}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},QUARTILE_INC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;switch(o){case 0:return Math.min.apply(Math,l);case 1:return window.luckysheet_function.PERCENTILE_INC.f(l,.25);case 2:return window.luckysheet_function.PERCENTILE_INC.f(l,.5);case 3:return window.luckysheet_function.PERCENTILE_INC.f(l,.75);case 4:return Math.max.apply(Math,l)}}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},POISSON_DIST:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e1?m.error.nm:l<1?m.error.nm:jStat.studentt.inv(t,l)):m.error.v}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},T_INV_2T:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e1?m.error.nm:l<1?m.error.nm:Math.abs(jStat.studentt.inv(t/2,l))):m.error.v}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},T_TEST:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;el.length?m.error.nm:l.sort(function(u,f){return u-f})[o-1]):m.error.v}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},SLOPE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=3){if(a=M.getFirstValue(arguments[2]),H(a))return a;if(!V(a))return m.error.v;a=parseInt(a)}var o=!0;if(arguments.length>=4&&(o=M.getCellBoolen(arguments[3]),H(o)))return o;if(t<=0||l<=0)return m.error.v;if([1,2,3,4].indexOf(a)==-1)return m.error.v;var s;if(o)switch(l=rt(l-1),a){case 1:s="$"+l+"$"+t;break;case 2:s=l+"$"+t;break;case 3:s="$"+l+t;break;case 4:s=l+t;break}else switch(a){case 1:s="R"+t+"C"+l;break;case 2:s="R"+t+"C["+l+"]";break;case 3:s="R["+t+"]C"+l;break;case 4:s="R["+t+"]C["+l+"]";break}if(arguments.length==5){var u=M.getFirstValue(arguments[4]);return H(u)?u:u+"!"+s}else return s}catch(A){var f=A;return f=m.errorInfo(f),[m.error.v,f]}},INDIRECT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=f.length||g<0||g>=f[0].length)return m.error.r;if(f[h][g]==null||me(f[h][g].v))return 0;let p=f[h][g].v;if(m.execFunctionGlobalData!=null){let y=m.execFunctionGlobalData[h+"_"+g+"_"+d.calculateSheetIndex];y!=null&&(p=y.v)}return{sheetName:u.name,startCell:t,rowl:h,coll:g,data:p}}else return m.error.r}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},ROW:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=4){if(o=M.getFirstValue(arguments[3]),H(o))return o;if(!V(o))return m.error.v;o=parseInt(o)}var s=arguments[0].coll;if(arguments.length==5){if(s=M.getFirstValue(arguments[4]),H(s))return s;if(!V(s))return m.error.v;s=parseInt(s)}if(o<1||s<1)return m.error.r;var u=m.getcellrange(t),f=u.row[0],A=u.column[0];f+=l,A+=a;var h=f+o-1,g=A+s-1;let C=Vt(),I=Q(d.calculateSheetIndex),x=C[I].data;if(f<0||h>=x.length||A<0||g>=x[0].length)return m.error.r;for(var p=[],v=f;v<=h;v++){for(var y=[],b=A;b<=g;b++)if(m.execFunctionGlobalData!=null&&m.execFunctionGlobalData[v+"_"+b+"_"+d.calculateSheetIndex]!=null){let R=m.execFunctionGlobalData[v+"_"+b+"_"+d.calculateSheetIndex];R!=null?y.push(R.v):y.push(0)}else x[v][b]!=null&&!me(x[v][b].v)?y.push(x[v][b].v):y.push(0);p.push(y)}return{sheetName:w,startCell:mt(d.calculateSheetIndex,{row:[f,h],column:[A,g]}),rowl:f,coll:A,data:p}}catch(w){var k=w;return k=m.errorInfo(k),[m.error.v,k]}},MATCH:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e1&&l.coll>1)return m.error.na;if(l.data!=null)if(N(l.data)=="array")for(var e=0;ef&&(u=A+1,f=a[A]):(u=A+1,f=a[A]))}else if(s===0){if(typeof t=="string"){if(t=t.replace(/\?/g,"."),a[A].toLowerCase().match(t.toLowerCase()))return A+1}else if(a[A]===t)return A+1}else if(s===-1){if(a[A]===t)return A+1;a[A]>t&&(f?a[A]this.m[1])return m.error.na;for(var e=0;ea[0].length)return m.error.r;if(f){a=Jr(a,0,!0);for(var A=0;Athis.m[1])return m.error.na;for(var e=0;e3&&(u=!!arguments[3]),s>o.rowl)return[m.error.v,"\u7D22\u5F15\u8D85\u8FC7\u4E86\u8303\u56F4\u7684\u957F\u5EA6\uFF0C"+o[0].length];if(s<1)return[m.error.v,"\u7D22\u5F15\u5FC5\u987B\u5927\u4E8E1"];for(var f=m.error.na,A=0;A-1&&(f=g);else if(m.acompareb(h,a))return f=g,f}return f}catch(v){var p=v;return p=m.errorInfo(p),[m.error.v,p]}},LOOKUP:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ea||V(u)&&u>o)return m.error.r;if(p){var f=m.getcellrange(t.startCell),A=f.row[0],h=f.column[0];let v=l;s==0||u==0?(s==0?(v=l[0],s=1):v=l[s-1],V(u)?u==0?(v=v[0],u=1):v=v[u-1]:u=1):(V(s)||(s=1),V(u)||(u=1),v=l[s-1][u-1]);let y=A+s-1,b=h+u-1;return{sheetName:t.sheetName,startCell:mt(d.calculateSheetIndex,{row:[y,y],column:[b,b]}),rowl:y,coll:b,data:v}}else return V(u)?(u=parseInt(u),s<=0||u<=0?m.error.v:l[s-1][u-1]):m.error.v}catch(p){var g=p;return g=m.errorInfo(g),[m.error.v,g]}},GETPIVOTDATA:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;earguments.length-1)return m.error.v;var l=arguments[t];if(N(l)=="array")return N(l[0])=="array"&&!M.isDyadicArr(l)?m.error.v:l;if(N(l)=="object"&&l.startCell!=null){if(l.data==null)return 0;if(N(l.data)=="array"){var a=M.getCellDataDyadicArr(l.data,"number");return a}else return me(l.data.v)?0:l.data.v}else return l}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},HYPERLINK:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e32767)return m.error.nm;if(t>24&&(t=t%24),l<0||l>32767)return m.error.nm;if(a<0||a>32767)return m.error.nm;var o=(0,X.default)().set({hour:t,minute:l,second:a});return(0,X.default)(o).format("h:mm:ss a")}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},TIMEVALUE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=3&&(o=arguments[2],!(typeof o=="string"&&o.length=="7"&&/^[0-1]{7}$/g.test(o)))){if(o=M.getFirstValue(arguments[2]),H(o))return o;if(!V(o))return m.error.v;if(o=parseInt(o),o<1||o>7&&o<11||o>17)return m.error.nm;o=t[o]}var s=[];if(arguments.length==4&&(s=M.getCellrangeDate(arguments[3]),H(s)))return s;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=o?1:0,u=(0,X.default)(l).isoWeeks()+s;return u}catch(A){var f=A;return f=m.errorInfo(f),[m.error.v,f]}},WEEKDAY:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=1e4)return m.error.nm;t>=0&&t<=1899&&(t=t+1900);var o=(0,X.default)().set({year:t,month:l-1,date:a});return(0,X.default)(o).year()<1900?m.error.nm:(0,X.default)(o).format("YYYY-MM-DD")}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},DATEVALUE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=3&&(o=arguments[2],!(typeof o=="string"&&o.length=="7"&&/^[0-1]{7}$/g.test(o)))){if(o=M.getFirstValue(arguments[2]),H(o))return o;if(!V(o))return m.error.v;if(o=parseInt(o),o<1||o>7&&o<11||o>17)return m.error.nm;o=t[o]}var s=[];if(arguments.length==4&&(s=M.getCellrangeDate(arguments[3]),H(s)))return s;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;var o=(0,X.default)(t).date(),s=(0,X.default)(t).month()+1,u=(0,X.default)(t).year(),f=(0,X.default)(l).date(),A=(0,X.default)(l).month()+1,h=(0,X.default)(l).year(),g;switch(a){case 0:o===31&&f===31?(o=30,f=30):o===31?o=30:o===30&&f===31&&(f=30),g=(f+A*30+h*360-(o+s*30+u*360))/360;break;case 1:var p=365;if(u===h||u+1===h&&(s>A||s===A&&o>=f))return(u===h&&M.isLeapYear(u)||M.feb29Between(t,l)||A===1&&f===29)&&(p=366),(0,X.default)(l).diff((0,X.default)(t),"days")/p;var v=h-u+1,y=((0,X.default)().set({year:h+1,month:0,date:1})-(0,X.default)().set({year:u,month:0,date:1}))/1e3/60/60/24,b=y/v;g=(0,X.default)(l).diff((0,X.default)(t),"days")/b;break;case 2:g=(0,X.default)(l).diff((0,X.default)(t),"days")/360;break;case 3:g=(0,X.default)(l).diff((0,X.default)(t),"days")/365;break;case 4:g=(f+A*30+h*360-(o+s*30+u*360))/360;break}return g}catch(w){var k=w;return k=m.errorInfo(k),[m.error.v,k]}},TODAY:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e9&&(l=9);for(var a="0.",e=1;e<=l;e++)a+="0";var o=t>0?1:-1;return o*Math.floor(Math.abs(t)*Math.pow(10,l))/Math.pow(10,l)}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},DOLLARDE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e12)return m.error.nm;if(o>a)return m.error.nm;if(l>=t)return 0;for(var u=(1-Math.pow(l/t,1/a)).toFixed(3),f=t*u*s/12,A=f,h=0,g=o===a?a-1:o,e=2;e<=g;e++)h=(t-A)*u,A+=h;if(o===1)var p=f;else if(o===a)var p=(t-A)*u;else var p=h;return p}catch(y){var v=y;return v=m.errorInfo(v),[m.error.v,v]}},DDB:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ea)return m.error.nm;if(l>=t)return 0;for(var u=0,f=0,e=1;e<=o;e++)f=Math.min((t-u)*(s/a),t-l-u),u+=f;return f}catch(h){var A=h;return A=m.errorInfo(A),[m.error.v,A]}},RATE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=4){if(o=M.getFirstValue(arguments[3]),H(o))return o;if(!V(o))return m.error.v;o=parseFloat(o)}var s=0;if(arguments.length>=5){if(s=M.getFirstValue(arguments[4]),H(s))return s;if(!V(s))return m.error.v;s=parseFloat(s)}var u=.1;if(arguments.length==6){if(u=M.getFirstValue(arguments[5]),H(u))return u;if(!V(u))return m.error.v;u=parseFloat(u)}if(s!=0&&s!=1)return m.error.nm;for(var f=1e-6,A=100,h=0,g=!1,p=u;hthis.m[1])return m.error.na;for(var e=0;es)return m.error.nm;if(u!=0&&u!=1)return m.error.nm;var f=window.luckysheet_function.PMT.f(t,l,a,0,u),A=0;o===1&&(u===0?A=f+a*t:A=f,o++);for(var e=o;e<=s;e++)u>0?A+=f-(window.luckysheet_function.FV.f(t,e-2,f,a,1)-f)*t:A+=f-window.luckysheet_function.FV.f(t,e-1,f,a,0)*t;return A}catch(g){var h=g;return h=m.errorInfo(h),[m.error.v,h]}},COUPNUM:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var s=(0,X.default)(t).date(),u=(0,X.default)(t).month()+1,f=(0,X.default)(t).year(),A=(0,X.default)(l).date(),h=(0,X.default)(l).month()+1,g=(0,X.default)(l).year(),p;switch(o){case 0:s===31&&A===31?(s=30,A=30):s===31?s=30:s===30&&A===31&&(A=30),p=(A+h*30+g*360-(s+u*30+f*360))/(360/a);break;case 1:var v=365;if(f===g||f+1===g&&(u>h||u===h&&s>=A))return(f===g&&M.isLeapYear(f)||M.feb29Between(t,l)||h===1&&A===29)&&(v=366),(0,X.default)(l).diff((0,X.default)(t),"days")/(v/a);var y=g-f+1,b=((0,X.default)().set({year:g+1,month:0,date:1})-(0,X.default)().set({year:f,month:0,date:1}))/1e3/60/60/24,k=b/y;p=(0,X.default)(l).diff((0,X.default)(t),"days")/(k/a);break;case 2:p=(0,X.default)(l).diff((0,X.default)(t),"days")/(360/a);break;case 3:p=(0,X.default)(l).diff((0,X.default)(t),"days")/(365/a);break;case 4:p=(A+h*30+g*360-(s+u*30+f*360))/(360/a);break}return Math.round(p)}catch(C){var w=C;return w=m.errorInfo(w),[m.error.v,w]}},SYD:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ea?m.error.nm:(t-l)*(a-o+1)*2/(a*(a+1))):m.error.v}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},TBILLEQ:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e0?m.error.nm:(0,X.default)(l)-(0,X.default)(t)>365*24*60*60*1e3?m.error.nm:365*a/(360-a*(0,X.default)(l).diff((0,X.default)(t),"days"))):m.error.v}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},TBILLYIELD:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=0?m.error.nm:(0,X.default)(l)-(0,X.default)(t)>365*24*60*60*1e3?m.error.nm:(100-a)/a*(360/(0,X.default)(l).diff((0,X.default)(t),"days"))):m.error.v}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},TBILLPRICE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e0?m.error.nm:(0,X.default)(l)-(0,X.default)(t)>365*24*60*60*1e3?m.error.nm:100*(1-a*(0,X.default)(l).diff((0,X.default)(t),"days")/360)):m.error.v}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},PV:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=4){if(o=M.getFirstValue(arguments[3]),H(o))return o;if(!V(o))return m.error.v;o=parseFloat(o)}var s=0;if(arguments.length>=5){if(s=M.getFirstValue(arguments[4]),H(s))return s;if(!V(s))return m.error.v;s=parseFloat(s)}if(s!=0&&s!=1)return m.error.nm;if(t===0)var u=-a*l-o;else var u=((1-Math.pow(1+t,l))/t*a*(1+t*s)-o)/Math.pow(1+t,l);return u}catch(A){var f=A;return f=m.errorInfo(f),[m.error.v,f]}},ACCRINT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=7){if(f=M.getFirstValue(arguments[6]),H(f))return f;if(!V(f))return m.error.v;f=parseInt(f)}var A=!0;if(arguments.length==8&&(A=M.getCellBoolen(arguments[7]),H(A)))return A;if(o<=0||s<=0)return m.error.nm;if(u!=1&&u!=2&&u!=4)return m.error.nm;if(f<0||f>4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(a)>=0)return m.error.nm;var h;if((0,X.default)(a)-(0,X.default)(l)>=0&&!A){var g=(0,X.default)(l).date(),p=(0,X.default)(l).month()+1,v=(0,X.default)(l).year(),y=(0,X.default)(a).date(),b=(0,X.default)(a).month()+1,k=(0,X.default)(a).year();switch(f){case 0:g===31&&y===31?(g=30,y=30):g===31?g=30:g===30&&y===31&&(y=30),h=(y+b*30+k*360-(g+p*30+v*360))/360;break;case 1:var w=365;if(v===k||v+1===k&&(p>b||p===b&&g>=y))return(v===k&&M.isLeapYear(v)||M.feb29Between(l,a)||b===1&&y===29)&&(w=366),(0,X.default)(a).diff((0,X.default)(l),"days")/w;var C=k-v+1,I=((0,X.default)().set({year:k+1,month:0,date:1})-(0,X.default)().set({year:v,month:0,date:1}))/1e3/60/60/24,x=I/C;h=(0,X.default)(a).diff((0,X.default)(l),"days")/x;break;case 2:h=(0,X.default)(a).diff((0,X.default)(l),"days")/360;break;case 3:h=(0,X.default)(a).diff((0,X.default)(l),"days")/365;break;case 4:h=(y+b*30+k*360-(g+p*30+v*360))/360;break}}else{var g=(0,X.default)(t).date(),p=(0,X.default)(t).month()+1,v=(0,X.default)(t).year(),y=(0,X.default)(a).date(),b=(0,X.default)(a).month()+1,k=(0,X.default)(a).year();switch(f){case 0:g===31&&y===31?(g=30,y=30):g===31?g=30:g===30&&y===31&&(y=30),h=(y+b*30+k*360-(g+p*30+v*360))/360;break;case 1:var w=365;if(v===k||v+1===k&&(p>b||p===b&&g>=y))return(v===k&&M.isLeapYear(v)||M.feb29Between(t,a)||b===1&&y===29)&&(w=366),(0,X.default)(a).diff((0,X.default)(t),"days")/w;var C=k-v+1,I=((0,X.default)().set({year:k+1,month:0,date:1})-(0,X.default)().set({year:v,month:0,date:1}))/1e3/60/60/24,x=I/C;h=(0,X.default)(a).diff((0,X.default)(t),"days")/x;break;case 2:h=(0,X.default)(a).diff((0,X.default)(t),"days")/360;break;case 3:h=(0,X.default)(a).diff((0,X.default)(t),"days")/365;break;case 4:h=(y+b*30+k*360-(g+p*30+v*360))/360;break}}return s*o*h}catch(R){var T=R;return T=m.errorInfo(T),[m.error.v,T]}},ACCRINTM:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var u=(0,X.default)(t).date(),f=(0,X.default)(t).month()+1,A=(0,X.default)(t).year(),h=(0,X.default)(l).date(),g=(0,X.default)(l).month()+1,p=(0,X.default)(l).year(),v;switch(s){case 0:u===31&&h===31?(u=30,h=30):u===31?u=30:u===30&&h===31&&(h=30),v=(h+g*30+p*360-(u+f*30+A*360))/360;break;case 1:var y=365;if(A===p||A+1===p&&(f>g||f===g&&u>=h))return(A===p&&M.isLeapYear(A)||M.feb29Between(t,l)||g===1&&h===29)&&(y=366),(0,X.default)(l).diff((0,X.default)(t),"days")/y;var b=p-A+1,k=((0,X.default)().set({year:p+1,month:0,date:1})-(0,X.default)().set({year:A,month:0,date:1}))/1e3/60/60/24,w=k/b;v=(0,X.default)(l).diff((0,X.default)(t),"days")/w;break;case 2:v=(0,X.default)(l).diff((0,X.default)(t),"days")/360;break;case 3:v=(0,X.default)(l).diff((0,X.default)(t),"days")/365;break;case 4:v=(h+g*30+p*360-(u+f*30+A*360))/360;break}return o*a*v}catch(I){var C=I;return C=m.errorInfo(C),[m.error.v,C]}},COUPDAYBS:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;for(var s,u=Math.ceil((0,X.default)(l).diff((0,X.default)(t),"months")/(12/a))+1,e=1;e<=u;e++){var f=(0,X.default)(l).subtract(12/a*e,"months");if(f<=(0,X.default)(t)){s=f;break}}var A;switch(o){case 0:var h=(0,X.default)(s).date(),g=(0,X.default)(s).month()+1,p=(0,X.default)(s).year(),v=(0,X.default)(t).date(),y=(0,X.default)(t).month()+1,b=(0,X.default)(t).year();h===31&&v===31?(h=30,v=30):h===31?h=30:h===30&&v===31&&(v=30),A=v+y*30+b*360-(h+g*30+p*360);break;case 1:case 2:case 3:A=(0,X.default)(t).diff((0,X.default)(s),"days");break;case 4:var h=(0,X.default)(s).date(),g=(0,X.default)(s).month()+1,p=(0,X.default)(s).year(),v=(0,X.default)(t).date(),y=(0,X.default)(t).month()+1,b=(0,X.default)(t).year();A=v+y*30+b*360-(h+g*30+p*360);break}return A}catch(w){var k=w;return k=m.errorInfo(k),[m.error.v,k]}},COUPDAYS:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var s;switch(o){case 0:s=360/a;break;case 1:for(var u=Math.ceil((0,X.default)(l).diff((0,X.default)(t),"months")/(12/a))+1,e=1;e<=u;e++){var f=(0,X.default)(l).subtract(12/a*e,"months");if(f<=(0,X.default)(t)){var A=(0,X.default)(l).subtract(12/a*(e-1),"months");s=(0,X.default)(A).diff((0,X.default)(f),"days");break}}break;case 2:s=360/a;break;case 3:s=365/a;break;case 4:s=360/a;break}return s}catch(g){var h=g;return h=m.errorInfo(h),[m.error.v,h]}},COUPDAYSNC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;for(var s,u=Math.ceil((0,X.default)(l).diff((0,X.default)(t),"months")/(12/a))+1,e=1;e<=u;e++){var f=(0,X.default)(l).subtract(12/a*e,"months");if(f<=(0,X.default)(t)){s=(0,X.default)(l).subtract(12/a*(e-1),"months");break}}var A;switch(o){case 0:var h=(0,X.default)(t).date(),g=(0,X.default)(t).month()+1,p=(0,X.default)(t).year(),v=(0,X.default)(s).date(),y=(0,X.default)(s).month()+1,b=(0,X.default)(s).year();h===31&&v===31?(h=30,v=30):h===31?h=30:h===30&&v===31&&(v=30),A=v+y*30+b*360-(h+g*30+p*360);break;case 1:case 2:case 3:A=(0,X.default)(s).diff((0,X.default)(t),"days");break;case 4:var h=(0,X.default)(t).date(),g=(0,X.default)(t).month()+1,p=(0,X.default)(t).year(),v=(0,X.default)(s).date(),y=(0,X.default)(s).month()+1,b=(0,X.default)(s).year();A=v+y*30+b*360-(h+g*30+p*360);break}return A}catch(w){var k=w;return k=m.errorInfo(k),[m.error.v,k]}},COUPNCD:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;for(var s,u=Math.ceil((0,X.default)(l).diff((0,X.default)(t),"months")/(12/a))+1,e=1;e<=u;e++){var f=(0,X.default)(l).subtract(12/a*e,"months");if(f<=(0,X.default)(t)){s=(0,X.default)(l).subtract(12/a*(e-1),"months");break}}return(0,X.default)(s).format("YYYY-MM-DD")}catch(h){var A=h;return A=m.errorInfo(A),[m.error.v,A]}},COUPPCD:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;for(var s,u=Math.ceil((0,X.default)(l).diff((0,X.default)(t),"months")/(12/a))+1,e=1;e<=u;e++){var f=(0,X.default)(l).subtract(12/a*e,"months");if(f<=(0,X.default)(t)){s=f;break}}return(0,X.default)(s).format("YYYY-MM-DD")}catch(h){var A=h;return A=m.errorInfo(A),[m.error.v,A]}},FV:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=4){if(o=M.getFirstValue(arguments[3]),H(o))return o;if(!V(o))return m.error.v;o=parseFloat(o)}var s=0;if(arguments.length>=5){if(s=M.getFirstValue(arguments[4]),H(s))return s;if(!V(s))return m.error.v;s=parseFloat(s)}if(s!=0&&s!=1)return m.error.nm;var u;if(t===0)u=o+a*l;else{var f=Math.pow(1+t,l);s===1?u=o*f+a*(1+t)*(f-1)/t:u=o*f+a*(f-1)/t}return-u}catch(h){var A=h;return A=m.errorInfo(A),[m.error.v,A]}},FVSCHEDULE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var A=window.luckysheet_function.COUPNUM.f(t,l,u,f);if(A>1){for(var h=1,g=0,p=h,e=1;e<=100;e++){var v=window.luckysheet_function.PRICE.f(t,l,a,p,s,u,f);if(Math.abs(v-o)<1e-6)break;v>o?g=p:h=p,p=(h+g)/2}var y=p}else var b=window.luckysheet_function.COUPDAYSNC.f(t,l,u,f),k=window.luckysheet_function.COUPDAYS.f(t,l,u,f),w=window.luckysheet_function.COUPDAYBS.f(t,l,u,f),C=s/100+a/u,I=o/100+w/k*(a/u),x=u*k/b,y=(C-I)/I*x;return y}catch(R){var T=R;return T=m.errorInfo(T),[m.error.v,T]}},YIELDDISC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var u=window.luckysheet_function.YEARFRAC.f(t,l,s);return(o/a-1)/u}catch(A){var f=A;return f=m.errorInfo(f),[m.error.v,f]}},NOMINAL:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e0&&(f=!0),a[e]<0&&(A=!0),!(f&&A));e++);if(!f||!A)return m.error.nm;if(a.length!=s.length)return m.error.nm;var h=function(I,x,T){for(var R=T+1,D=I[0],S=1;Sv&&Math.abs(k)>v;while(w);return p}catch(I){var C=I;return C=m.errorInfo(C),[m.error.v,C]}},MIRR:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e0&&(f=!0),l[e]<0&&(A=!0);if(!f||!A)return m.error.nm;var h=function(I,x,T){for(var R=T+1,D=I[0],S=1;Sv&&Math.abs(k)>v;while(w);return p}catch(I){var C=I;return C=m.errorInfo(C),[m.error.v,C]}},NPV:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e0)for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;es)return m.error.nm;if(u!=0&&u!=1)return m.error.nm;var f=window.luckysheet_function.PMT.f(t,l,a,0,u),A=0;o===1&&u===0&&(A=-a,o++);for(var e=o;e<=s;e++)u===1?A+=window.luckysheet_function.FV.f(t,e-2,f,a,1)-f:A+=window.luckysheet_function.FV.f(t,e-1,f,a,0);return A*=t,A}catch(g){var h=g;return h=m.errorInfo(h),[m.error.v,h]}},PMT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=4){if(o=M.getFirstValue(arguments[3]),H(o))return o;if(!V(o))return m.error.v;o=parseFloat(o)}var s=0;if(arguments.length==5){if(s=M.getFirstValue(arguments[4]),H(s))return s;if(!V(s))return m.error.v;s=parseFloat(s)}if(s!=0&&s!=1)return m.error.nm;var u;if(t===0)u=(a+o)/l;else{var f=Math.pow(1+t,l);s===1?u=(o*t/(f-1)+a*t/(1-1/f))/(1+t):u=o*t/(f-1)+a*t/(1-1/f)}return-u}catch(h){var A=h;return A=m.errorInfo(A),[m.error.v,A]}},IPMT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=5){if(s=M.getFirstValue(arguments[4]),H(s))return s;if(!V(s))return m.error.v;s=parseFloat(s)}var u=0;if(arguments.length>=6){if(u=M.getFirstValue(arguments[5]),H(u))return u;if(!V(u))return m.error.v;u=parseFloat(u)}if(l<1||l>a)return m.error.nm;if(u!=0&&u!=1)return m.error.nm;var f=window.luckysheet_function.PMT.f(t,a,o,s,u),A;l===1?u===1?A=0:A=-o:u===1?A=window.luckysheet_function.FV.f(t,l-2,f,o,1)-f:A=window.luckysheet_function.FV.f(t,l-1,f,o,0);var h=A*t;return h}catch(p){var g=p;return g=m.errorInfo(g),[m.error.v,g]}},PPMT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=5){if(s=M.getFirstValue(arguments[4]),H(s))return s;if(!V(s))return m.error.v;s=parseFloat(s)}var u=0;if(arguments.length>=6){if(u=M.getFirstValue(arguments[5]),H(u))return u;if(!V(u))return m.error.v;u=parseFloat(u)}if(l<1||l>a)return m.error.nm;if(u!=0&&u!=1)return m.error.nm;var f=window.luckysheet_function.PMT.f(t,a,o,s,u),A=window.luckysheet_function.IPMT.f(t,l,a,o,s,u);return f-A}catch(g){var h=g;return h=m.errorInfo(h),[m.error.v,h]}},INTRATE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var u=(0,X.default)(t).date(),f=(0,X.default)(t).month()+1,A=(0,X.default)(t).year(),h=(0,X.default)(l).date(),g=(0,X.default)(l).month()+1,p=(0,X.default)(l).year(),v;switch(s){case 0:u===31&&h===31?(u=30,h=30):u===31?u=30:u===30&&h===31&&(h=30),v=360/(h+g*30+p*360-(u+f*30+A*360));break;case 1:var y=365;if(A===p||A+1===p&&(f>g||f===g&&u>=h))return(A===p&&M.isLeapYear(A)||M.feb29Between(t,l)||g===1&&h===29)&&(y=366),v=y/(0,X.default)(l).diff((0,X.default)(t),"days"),v=(o-a)/a*v,v;var b=p-A+1,k=((0,X.default)().set({year:p+1,month:0,date:1})-(0,X.default)().set({year:A,month:0,date:1}))/1e3/60/60/24,w=k/b;v=w/(0,X.default)(l).diff((0,X.default)(t),"days");break;case 2:v=360/(0,X.default)(l).diff((0,X.default)(t),"days");break;case 3:v=365/(0,X.default)(l).diff((0,X.default)(t),"days");break;case 4:v=360/(h+g*30+p*360-(u+f*30+A*360));break}return v=(o-a)/a*v,v}catch(I){var C=I;return C=m.errorInfo(C),[m.error.v,C]}},PRICE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var A=window.luckysheet_function.COUPDAYSNC.f(t,l,u,f),h=window.luckysheet_function.COUPDAYS.f(t,l,u,f),g=window.luckysheet_function.COUPDAYBS.f(t,l,u,f),p=window.luckysheet_function.COUPNUM.f(t,l,u,f);if(p>1){for(var v=s/Math.pow(1+o/u,p-1+A/h),y=0,e=1;e<=p;e++)y+=100*a/u/Math.pow(1+o/u,e-1+A/h);var b=100*(a/u)*(g/h),k=v+y-b}else var w=h-g,v=100*(a/u)+s,y=o/u*(w/h)+1,b=100*(a/u)*(g/h),k=v/y-b;return k}catch(I){var C=I;return C=m.errorInfo(C),[m.error.v,C]}},PRICEDISC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var u=(0,X.default)(t).date(),f=(0,X.default)(t).month()+1,A=(0,X.default)(t).year(),h=(0,X.default)(l).date(),g=(0,X.default)(l).month()+1,p=(0,X.default)(l).year(),v;switch(s){case 0:u===31&&h===31?(u=30,h=30):u===31?u=30:u===30&&h===31&&(h=30),v=(h+g*30+p*360-(u+f*30+A*360))/360;break;case 1:var y=365;if(A===p||A+1===p&&(f>g||f===g&&u>=h))return(A===p&&M.isLeapYear(A)||M.feb29Between(t,l)||g===1&&h===29)&&(y=366),v=(0,X.default)(l).diff((0,X.default)(t),"days")/y,v=o-a*o*v,v;var b=p-A+1,k=((0,X.default)().set({year:p+1,month:0,date:1})-(0,X.default)().set({year:A,month:0,date:1}))/1e3/60/60/24,w=k/b;v=(0,X.default)(l).diff((0,X.default)(t),"days")/w;break;case 2:v=(0,X.default)(l).diff((0,X.default)(t),"days")/360;break;case 3:v=(0,X.default)(l).diff((0,X.default)(t),"days")/365;break;case 4:v=(h+g*30+p*360-(u+f*30+A*360))/360;break}return v=o-a*o*v,v}catch(I){var C=I;return C=m.errorInfo(C),[m.error.v,C]}},PRICEMAT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var f=(0,X.default)(t).date(),A=(0,X.default)(t).month()+1,h=(0,X.default)(t).year(),g=(0,X.default)(l).date(),p=(0,X.default)(l).month()+1,v=(0,X.default)(l).year(),y=(0,X.default)(a).date(),b=(0,X.default)(a).month()+1,k=(0,X.default)(a).year(),w;switch(u){case 0:f==31&&(f=30),g==31&&(g=30),y==31&&(y=30);var C=360,I=g+p*30+v*360-(f+A*30+h*360),x=g+p*30+v*360-(y+b*30+k*360),T=f+A*30+h*360-(y+b*30+k*360);break;case 1:var R=365;if(h===v||h+1===v&&(A>p||A===p&&f>=g)){(h===v&&M.isLeapYear(h)||M.feb29Between(t,l)||p===1&&g===29)&&(R=366);var C=R,I=(0,X.default)(l).diff((0,X.default)(t),"days"),x=(0,X.default)(t).diff((0,X.default)(a),"days"),T=(0,X.default)(l).diff((0,X.default)(a),"days");return w=(100+x/C*o*100)/(1+I/C*s)-T/C*o*100,w}var D=v-h+1,S=((0,X.default)().set({year:v+1,month:0,date:1})-(0,X.default)().set({year:h,month:0,date:1}))/1e3/60/60/24,B=S/D,C=B,I=(0,X.default)(l).diff((0,X.default)(t),"days"),x=(0,X.default)(t).diff((0,X.default)(a),"days"),T=(0,X.default)(l).diff((0,X.default)(a),"days");break;case 2:var C=360,I=(0,X.default)(l).diff((0,X.default)(t),"days"),x=(0,X.default)(t).diff((0,X.default)(a),"days"),T=(0,X.default)(l).diff((0,X.default)(a),"days");break;case 3:var C=365,I=(0,X.default)(l).diff((0,X.default)(t),"days"),x=(0,X.default)(t).diff((0,X.default)(a),"days"),T=(0,X.default)(l).diff((0,X.default)(a),"days");break;case 4:var C=360,I=g+p*30+v*360-(f+A*30+h*360),x=g+p*30+v*360-(y+b*30+k*360),T=f+A*30+h*360-(y+b*30+k*360);break}return w=(100+x/C*o*100)/(1+I/C*s)-T/C*o*100,w}catch(E){var F=E;return F=m.errorInfo(F),[m.error.v,F]}},RECEIVED:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var u=(0,X.default)(t).date(),f=(0,X.default)(t).month()+1,A=(0,X.default)(t).year(),h=(0,X.default)(l).date(),g=(0,X.default)(l).month()+1,p=(0,X.default)(l).year(),v;switch(s){case 0:u==31&&(u=30),h==31&&(h=30);var y=360,b=h+g*30+p*360-(u+f*30+A*360);break;case 1:var k=365;if(A===p||A+1===p&&(f>g||f===g&&u>=h)){(A===p&&M.isLeapYear(A)||M.feb29Between(t,l)||g===1&&h===29)&&(k=366);var y=k,b=(0,X.default)(l).diff((0,X.default)(t),"days");return v=a/(1-o*b/y),v}var w=p-A+1,C=((0,X.default)().set({year:p+1,month:0,date:1})-(0,X.default)().set({year:A,month:0,date:1}))/1e3/60/60/24,I=C/w,y=I,b=(0,X.default)(l).diff((0,X.default)(t),"days");break;case 2:var y=360,b=(0,X.default)(l).diff((0,X.default)(t),"days");break;case 3:var y=365,b=(0,X.default)(l).diff((0,X.default)(t),"days");break;case 4:var y=360,b=h+g*30+p*360-(u+f*30+A*360);break}return v=a/(1-o*b/y),v}catch(T){var x=T;return x=m.errorInfo(x),[m.error.v,x]}},DISC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var u=(0,X.default)(t).date(),f=(0,X.default)(t).month()+1,A=(0,X.default)(t).year(),h=(0,X.default)(l).date(),g=(0,X.default)(l).month()+1,p=(0,X.default)(l).year(),v;switch(s){case 0:u==31&&(u=30),h==31&&(h=30);var y=360,b=h+g*30+p*360-(u+f*30+A*360);break;case 1:var k=365;if(A===p||A+1===p&&(f>g||f===g&&u>=h)){(A===p&&M.isLeapYear(A)||M.feb29Between(t,l)||g===1&&h===29)&&(k=366);var y=k,b=(0,X.default)(l).diff((0,X.default)(t),"days");return v=(o-a)/o*(y/b),v}var w=p-A+1,C=((0,X.default)().set({year:p+1,month:0,date:1})-(0,X.default)().set({year:A,month:0,date:1}))/1e3/60/60/24,I=C/w,y=I,b=(0,X.default)(l).diff((0,X.default)(t),"days");break;case 2:var y=360,b=(0,X.default)(l).diff((0,X.default)(t),"days");break;case 3:var y=365,b=(0,X.default)(l).diff((0,X.default)(t),"days");break;case 4:var y=360,b=h+g*30+p*360-(u+f*30+A*360);break}return v=(o-a)/o*(y/b),v}catch(T){var x=T;return x=m.errorInfo(x),[m.error.v,x]}},NPER:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=4){if(o=M.getFirstValue(arguments[3]),H(o))return o;if(!V(o))return m.error.v;o=parseFloat(o)}var s=0;if(arguments.length>=5){if(s=M.getFirstValue(arguments[4]),H(s))return s;if(!V(s))return m.error.v;s=parseFloat(s)}if(s!=0&&s!=1)return m.error.nm;var u=l*(1+t*s)-o*t,f=a*t+l*(1+t*s);return Math.log(u/f)/Math.log(1+t)}catch(h){var A=h;return A=m.errorInfo(A),[m.error.v,A]}},SLN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;for(var f=window.luckysheet_function.COUPNUM.f(t,l,s,u),A=0,h=0,e=1;e<=f;e++)A+=100*(a/s)*e/Math.pow(1+o/s,e),h+=100*(a/s)/Math.pow(1+o/s,e);var g=(A+100*f/Math.pow(1+o/s,f))/(h+100/Math.pow(1+o/s,f));return g=g/s,g}catch(v){var p=v;return p=m.errorInfo(p),[m.error.v,p]}},MDURATION:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var f=window.luckysheet_function.DURATION.f(t,l,a,o,s,u);return f/(1+o/s)}catch(h){var A=h;return A=m.errorInfo(A),[m.error.v,A]}},BIN2DEC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e511)return m.error.nm;if(t<0)return"1"+new Array(9-(512+t).toString(2).length).join("0")+(512+t).toString(2);var a=parseInt(t,10).toString(2);return l==null?a:l<0||lthis.m[1])return m.error.na;for(var e=0;e549755813887)return m.error.nm;if(t<0)return(1099511627776+t).toString(16).toUpperCase();var a=parseInt(t,10).toString(16).toUpperCase();return l==null?a:l<0||lthis.m[1])return m.error.na;for(var e=0;e536870911)return m.error.nm;if(t<0)return(1073741824+t).toString(8);var a=parseInt(t,10).toString(8);return l==null?a:l<0||lthis.m[1])return m.error.na;for(var e=0;e511)return m.error.nm;if(a)return"1"+new Array(9-(512+o).toString(2).length).join("0")+(512+o).toString(2);var s=o.toString(2);return l==null?s:l<0||lthis.m[1])return m.error.na;for(var e=0;e=549755813888?l-1099511627776:l}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},HEX2OCT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e536870911&&a<1098974756864)return m.error.nm;if(a>=1098974756864)return(a-1098437885952).toString(8);var o=a.toString(8);return l==null?o:l<0||lthis.m[1])return m.error.na;for(var e=0;e511)return Ne.num;if(a)return"1"+new Array(9-(512+o).toString(2).length).join("0")+(512+o).toString(2);var s=o.toString(2);return l==null?s:l<0||lthis.m[1])return m.error.na;for(var e=0;e=536870912?l-1073741824:l}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},OCT2HEX:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=536870912)return"FF"+(a+3221225472).toString(16).toUpperCase();var o=a.toString(16).toUpperCase();return l==null?o:l<0||lthis.m[1])return m.error.na;for(var e=0;e0?"+":"";return t.toString()+o+(l===1?a:l.toString()+a)}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},IMREAL:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=0)return 0;var l=t.indexOf("+"),a=t.indexOf("-");l===0&&(l=t.indexOf("+",1)),a===0&&(a=t.indexOf("-",1));var o=t.substring(t.length-1,t.length),s=o==="i"||o==="j";return l>=0||a>=0?s?l>=0?isNaN(t.substring(0,l))||isNaN(t.substring(l+1,t.length-1))?m.error.nm:Number(t.substring(0,l)):isNaN(t.substring(0,a))||isNaN(t.substring(a+1,t.length-1))?m.error.nm:Number(t.substring(0,a)):m.error.nm:s?isNaN(t.substring(0,t.length-1))?m.error.nm:0:isNaN(t)?m.error.nm:t}catch(f){var u=f;return u=m.errorInfo(u),[m.error.v,u]}},IMAGINARY:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=0)return 1;t=t.replace("+i","+1i").replace("-i","-1i").replace("+j","+1j").replace("-j","-1j");var l=t.indexOf("+"),a=t.indexOf("-");l===0&&(l=t.indexOf("+",1)),a===0&&(a=t.indexOf("-",1));var o=t.substring(t.length-1,t.length),s=o==="i"||o==="j";return l>=0||a>=0?s?l>=0?isNaN(t.substring(0,l))||isNaN(t.substring(l+1,t.length-1))?m.error.nm:Number(t.substring(l+1,t.length-1)):isNaN(t.substring(0,a))||isNaN(t.substring(a+1,t.length-1))?m.error.nm:-Number(t.substring(a+1,t.length-1)):m.error.nm:s?isNaN(t.substring(0,t.length-1))?m.error.nm:t.substring(0,t.length-1):isNaN(t)?m.error.nm:0}catch(f){var u=f;return u=m.errorInfo(u),[m.error.v,u]}},IMCONJUGATE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;el):m.error.v}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},GTE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=l):m.error.v}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},LT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e255?m.error.v:String.fromCharCode(t)):m.error.v}catch(a){var l=a;return l=m.errorInfo(l),[m.error.v,l]}},ARABIC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e3999?m.error.v:a(t)):m.error.v}catch(a){var l=a;return l=m.errorInfo(l),[m.error.v,l]}},REGEXEXTRACT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e1?a.length-1:0]:null}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},REGEXMATCH:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=2){if(l=M.getFirstValue(arguments[1]),H(l))return l;if(!V(l))return m.error.v;l=parseInt(l)}var a=!1;if(arguments.length==3&&(a=M.getCellBoolen(arguments[2]),H(a)))return a;if(l>127)return m.error.v;var o=a?"0":"#,##0";return l<=0?t=Math.round(t*Math.pow(10,l))/Math.pow(10,l):l>0&&(o+="."+new Array(l+1).join("0")),ht(o,t)}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},FIND:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;el.length)return m.error.v;if(t=="")return a;if(l.indexOf(t)==-1)return m.error.v;var o=l.indexOf(t,a-1)+1;return o}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},FINDB:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;el.length)return m.error.v;if(t=="")return a;if(l.indexOf(t)==-1)return m.error.v;for(var o=l.split(""),s=l.indexOf(t,a-1),u=0,e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=t.length?t:l==0?"":t.substr(0,l)}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},RIGHT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=t.length?t:l==0?"":t.substr(-l,l)}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},MID:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;et.length?"":l+a>t.length?t.substr(l-1,t.length-l+1):t.substr(l-1,a)):m.error.v}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},LEN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e100&&(l=100),new Array(l+1).join(t))):m.error.v}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},SEARCH:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;el.length)return m.error.v;var o=l.toLowerCase().indexOf(t.toLowerCase(),a-1)+1;return o===0?m.error.v:o}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},SUBSTITUTE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ef.length)return t;for(var A=l.length,h=0,e=1;e<=o;e++)h=t.indexOf(l,h)+1;u=t.substring(0,h-1)+a+t.substring(h-1+A)}return u}catch(p){var g=p;return g=m.errorInfo(g),[m.error.v,g]}},CLEAN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e31&&a<127)&&l.push(t.charAt(e))}return l.join("")}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},TEXT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=0)&&(f=o[e]),(o[e][1]===g||y.indexOf(g)>=0)&&(A=o[e]);if(f===null){var b=s[l.substring(0,2)],k=u[l.substring(0,1)];l.substring(0,2)==="da"&&(k=["dekao",10,"da"]),b?(p=b[2],h=l.substring(2)):k&&(p=k[1],h=l.substring(k[2].length));for(var w=0;w=0)&&(f=o[w])}if(A===null){var C=s[a.substring(0,2)],I=u[a.substring(0,1)];a.substring(0,2)==="da"&&(I=["dekao",10,"da"]),C?(v=C[2],g=a.substring(2)):I&&(v=I[1],g=a.substring(I[2].length));for(var x=0;x=0)&&(A=o[x])}return f===null||A===null?m.error.na:f[3]!==A[3]?m.error.na:t*f[6]*p/(A[6]*v)}catch(R){var T=R;return T=m.errorInfo(T),[m.error.v,T]}},SUMX2MY2:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=2){var h=arguments[1];if(f=[],N(h)=="array"){if(N(h[0])=="array"&&!M.isDyadicArr(h))return m.error.v;f=M.getDataDyadicArr(h)}else if(N(h)=="object"&&h.startCell!=null)f=M.getCellDataDyadicArr(h,"text");else{if(!V(h))return m.error.v;var a=[];a.push(parseFloat(h)),f.push(a)}for(var e=0;e=3){var y=arguments[2];if(v=[],N(y)=="array"){if(N(y[0])=="array"&&!M.isDyadicArr(y))return m.error.v;v=M.getDataDyadicArr(y)}else if(N(y)=="object"&&y.startCell!=null)v=M.getCellDataDyadicArr(y,"text");else{if(!V(y))return m.error.v;var a=[];a.push(parseFloat(y)),v.push(a)}for(var e=0;ethis.m[1])return m.error.na;for(var e=0;eu[e-1]&&g++,a[h]>u[e]&&p++;f.push([g]),f.push([p])}else{for(var A=0,h=0;hu[e-1]&&A++;f.push([A])}return f}}catch(y){var v=y;return v=m.errorInfo(v),[m.error.v,v]}},GROWTH:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=2){var h=arguments[1];if(f=[],N(h)=="array"){if(N(h[0])=="array"&&!M.isDyadicArr(h))return m.error.v;f=M.getDataDyadicArr(h)}else if(N(h)=="object"&&h.startCell!=null)f=M.getCellDataDyadicArr(h,"text");else{if(!V(h))return m.error.v;var a=[];a.push(parseFloat(h)),f.push(a)}for(var e=0;e=3){var y=arguments[2];if(v=[],N(y)=="array"){if(N(y[0])=="array"&&!M.isDyadicArr(y))return m.error.v;v=M.getDataDyadicArr(y)}else if(N(y)=="object"&&y.startCell!=null)v=M.getCellDataDyadicArr(y,"text");else{if(!V(y))return m.error.v;var a=[];a.push(parseFloat(y)),v.push(a)}for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;eb?p[b][k]=v[b][k]:ythis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=2)for(var e=1;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e0?1:0;case"prefix":return b==0?"":y[f][A].ht==0?"^":y[f][A].ht==1?"'":y[f][A].ht==2?'"':"";case"protect":return 0;case"row":return f+1;case"type":return b==0?"b":"l";case"width":var h=s.config;return h.columnlen!=null&&A in h.columnlen?h.columnlen[A]:d.defaultcollen}}catch(p){var g=p;return g=m.errorInfo(g),[m.error.v,g]}},NA:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e-1}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},ISERROR:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e-1}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},ISLOGICAL:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e-1||l.toString().toLowerCase()=="true"||l.toString().toLowerCase()=="false"?!0:!!V(l)}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},ISNUMBER:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e-1||l.toString().toLowerCase()=="true"||l.toString().toLowerCase()=="false"?!1:!V(l)}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},TYPE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e-1?16:l.toString().toLowerCase()=="true"||l.toString().toLowerCase()=="false"?4:V(l)?1:2}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},N:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e-1?l:l.toString().toLowerCase()=="true"||l.toString().toLowerCase()=="false"?l.toString().toLowerCase()=="true"?1:0:V(l)?parseFloat(l):0}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},TO_DATE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e1?m.error.nm:f[u[0]]}catch(g){var h=g;return h=m.errorInfo(h),[m.error.v,h]}},DMAX:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ef[u[e]]&&(h=f[u[e]]);return h}catch(p){var g=p;return g=m.errorInfo(g),[m.error.v,g]}},DAVERAGE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e19&&(E=E%20),E=o[E]),C[F]=E)};if(u==null&&(u="#2ec7c9"),I("lineColor",u),C.fillColor=0,A)if(typeof A=="string"){A=A.toLowerCase();var x=null;A=="min"?x=window.luckysheet_function.MIN.f({data:y}):A=="max"?x=window.luckysheet_function.MAX.f({data:y}):A=="avg"||A=="mean"?x=window.luckysheet_function.AVERAGE.f({data:y}):A=="median"&&(x=window.luckysheet_function.MEDIAN.f({data:y})),x&&(C.normalRangeMin=x,C.normalRangeMax=x)}else C.normalRangeMin=A,C.normalRangeMax=A;h==null&&(h="#000"),I("normalRangeColor",h),I("maxSpotColor",g),I("minSpotColor",p),v==null&&(v="1.5"),C.spotRadius=v;var T=nr.init(y,C);return T}catch(D){var R=D;return R=m.errorInfo(R),[m.error.v,R]}},AREASPLINES:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e19&&(B=B%20),B=o[B]),k[S]=B)};if(u==null&&(u="#2ec7c9"),w("lineColor",u),w("fillColor",f),A==null&&(A="1"),k.lineWidth=A,h)if(typeof h=="string"){h=h.toLowerCase();var C=null;h=="min"?C=window.luckysheet_function.MIN.f({data:p}):h=="max"?C=window.luckysheet_function.MAX.f({data:p}):h=="avg"||h=="mean"?C=window.luckysheet_function.AVERAGE.f({data:p}):h=="median"&&(C=window.luckysheet_function.MEDIAN.f({data:p})),C&&(k.normalRangeMin=C,k.normalRangeMax=C)}else k.normalRangeMin=h,k.normalRangeMax=h;g==null&&(g="#000"),w("normalRangeColor",g);var I=nr.init(p,k);return I}catch(T){var x=T;return x=m.errorInfo(x),[m.error.v,x]}},COLUMNSPLINES:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e19&&(S=S%20),S=o[S]),g[D]=S)},v=arguments[1],y=arguments[2],b=arguments[3],k=arguments[4];g.type="column",v==null&&(v="1"),g.barSpacing=v,y==null&&(y="#fc5c5c"),p("barColor",y),b==null&&(b="#97b552"),p("negBarColor",b),k==null||k===!1||typeof k!="number"?g.chartRangeMax=void 0:g.chartRangeMax=k;var w=m.sparklinesColorMap(arguments);w&&(g.colorMap=w);var C=nr.init(u,g);return C}catch(x){var I=x;return I=m.errorInfo(I),[m.error.v,I]}},STACKCOLUMNSPLINES:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e19&&(P=P%20),P=o[P]),C[z]=P)},x=arguments[2],T=arguments[3];C.type="column",x==null&&(x="1"),C.barSpacing=x,T==null||T===!1||typeof T!="number"?C.chartRangeMax=void 0:C.chartRangeMax=T;var R=m.sparklinesColorMap(arguments,4);R&&(C.colorMap=R);var D=nr.init(u,C);return D}catch(B){var S=B;return S=m.errorInfo(S),[m.error.v,S]}},BARSPLINES:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e19&&(S=S%20),S=o[S]),g[D]=S)},v=arguments[1],y=arguments[2],b=arguments[3],k=arguments[4];g.type="bar",v==null&&(v="1"),g.barSpacing=v,y==null&&(y="#fc5c5c"),p("barColor",y),b==null&&(b="#97b552"),p("negBarColor",b),k==null||k===!1||typeof k!="number"?g.chartRangeMax=void 0:g.chartRangeMax=k;var w=m.sparklinesColorMap(arguments);w&&(g.colorMap=w);var C=nr.init(u,g);return C}catch(x){var I=x;return I=m.errorInfo(I),[m.error.v,I]}},STACKBARSPLINES:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e19&&(P=P%20),P=o[P]),C[z]=P)},x=arguments[2],T=arguments[3];C.type="bar",x==null&&(x="1"),C.barSpacing=x,T==null||T===!1||typeof T!="number"?C.chartRangeMax=void 0:C.chartRangeMax=T;var R=m.sparklinesColorMap(arguments,4);R&&(C.colorMap=R);var D=nr.init(u,C);return D}catch(B){var S=B;return S=m.errorInfo(S),[m.error.v,S]}},DISCRETESPLINES:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e19&&(R=R%20),R=o[R]),g[T]=R)},v=arguments[1],y=arguments[2],b=arguments[3];g.type="discrete",v==null&&(v=0),g.thresholdValue=v,y==null&&(y="#2ec7c9"),p("lineColor",y),b==null&&(b="#fc5c5c"),p("thresholdColor",b);var k=nr.init(u,g);return k}catch(C){var w=C;return w=m.errorInfo(w),[m.error.v,w]}},TRISTATESPLINES:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e19&&(S=S%20),S=o[S]),g[D]=S)},v=arguments[1],y=arguments[2],b=arguments[3],k=arguments[4];g.type="tristate",v==null&&(v="1"),g.barSpacing=v,y==null&&(y="#fc5c5c"),p("barColor",y),b==null&&(b="#97b552"),p("negBarColor",b),k==null&&(k="#999"),p("zeroBarColor",k);var w=m.sparklinesColorMap(arguments);w&&(g.colorMap=w);var C=nr.init(u,g);return C}catch(x){var I=x;return I=m.errorInfo(I),[m.error.v,I]}},PIESPLINES:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e19&&(D=D%20),D=o[D]),g[R]=D)},v=arguments[1],y=arguments[2],b=arguments[3];g.type="pie",v==null&&(v=0),g.offset=v,y==null&&(y=0),p("borderWidth",y),b==null&&(b="#97b552"),p("borderColor",b);var k=m.sparklinesColorMap(arguments,4);k&&(g.colorMap=k);var w=nr.init(u,g);return w}catch(I){var C=I;return C=m.errorInfo(C),[m.error.v,C]}},BOXSPLINES:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e19&&(R=R%20),R=o[R]),g[T]=R)},v=arguments[1],y=arguments[2],b=arguments[3];g.type="box",v==null&&(v=1.5),g.outlierIQR=v,y==null?y=0:p("target",y),b==null&&(b=1.5),p("spotRadius",b);var k=nr.init(u,g);return k}catch(C){var w=C;return w=m.errorInfo(w),[m.error.v,w]}},BULLETSPLINES:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e19&&(x=x%20),x=o[x]),A[I]=x)},g=[];Aa(arguments);var p=m.getValueByFuncData(arguments[0]),v=m.getValueByFuncData(arguments[1]);g.push(p),g.push(v);for(var e=2;ethis.m[1])return m.error.na;for(var e=0;e=2){if(A=M.getFirstValue(arguments[1]),H(A))return A;if(!V(A))return m.error.v;A=parseInt(A)}var h=1;if(arguments.length>=3){if(h=M.getFirstValue(arguments[2]),H(h))return h;if(!V(h))return m.error.v;h=Math.floor(parseFloat(h))}var g=!1;if(arguments.length==4&&(g=M.getCellBoolen(arguments[3]),H(g)))return g;if(g){if(A<1||A>a)return m.error.v}else if(A<1||A>o)return m.error.v;if(h!=1&&h!=-1)return m.error.v;var p=function(b,k){if(N(b)=="array"&&(b=b[A-1]),N(k)=="array"&&(k=k[A-1]),!isNaN(b)&&!isNaN(k))return b-k;if(isNaN(b))if(isNaN(k)){if(b>k)return 1;if(bk)return-1;if(bthis.m[1])return m.error.na;for(var e=0;e1&&u[0].length>1)return m.error.v;if(u.length>1){if(u.length!=l.length)return m.error.v;A="row";for(var e=0;e1){if(u[0].length!=l[0].length)return m.error.v;A="col";for(var e=0;e1&&u.data[0].length>1)return m.error.v;if(u.data.length>1){if(u.data.length!=l.length)return m.error.v;A="row";for(var e=0;e1){if(u.data[0].length!=l[0].length)return m.error.v;A="col";for(var e=0;e0&&p.push(a)}return p.length==0?g:p}catch(b){var y=b;return y=m.errorInfo(y),[m.error.v,y]}},UNIQUE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=2&&(o=M.getCellBoolen(arguments[1]),H(o)))return o;var s=!1;if(arguments.length==3&&(s=M.getCellBoolen(arguments[2]),H(s)))return s;if(o){l=l[0].map(function(y,b){return l.map(function(k){return k[b]})});for(var u={},f=[],A=[],e=0;ethis.m[1])return m.error.na;for(var e=0;e=1){if(t=M.getFirstValue(arguments[0]),H(t))return t;if(!V(t))return m.error.v;t=parseInt(t)}var l=1;if(arguments.length==2){if(l=M.getFirstValue(arguments[1]),H(l))return l;if(!V(l))return m.error.v;l=parseInt(l)}if(t<=0||l<=0)return m.error.v;for(var a=[],e=0;ethis.m[1])return m.error.na;for(var e=0;e=2){if(l=M.getFirstValue(arguments[1]),H(l))return l;if(!V(l))return m.error.v;l=parseInt(l)}var a=1;if(arguments.length>=3){if(a=M.getFirstValue(arguments[2]),H(a))return a;if(!V(a))return m.error.v;a=parseFloat(a)}var o=1;if(arguments.length==4){if(o=M.getFirstValue(arguments[3]),H(o))return o;if(!V(o))return m.error.v;o=parseFloat(o)}if(t<=0||l<=0)return m.error.v;for(var s=[],e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;try{let n=window.luckysheetCurrentRow,t=window.luckysheetCurrentColumn,l=window.luckysheetCurrentFunction,a=M.getFirstValue(arguments[0]);return H(a)?a:(Ae.remoteFunction(a,o=>{let s=Te.deepCopyFlowData(d.flowdata);m.execFunctionGroup(n,t,o),s[n][t]={v:o,f:l},Je(s,[{row:[n,n],column:[t,t]}])}),"Loading...")}catch(n){console.log(n);var e=n;return e=m.errorInfo(e),[m.error.v,e]}}},Fm=Rk});var rd,Om=De(()=>{rd=[{n:"DISPIMG",t:3,m:[2,2],p:[{example:"img_wx5a6n0A1ael_1600925814407",require:"m",repeat:"n",type:"string"},{example:"2",require:"m",repeat:"n",type:"number"}]},{n:"SUMIF",t:0,m:[2,3],p:[{example:"A1:A10",require:"m",repeat:"n",type:"range"},{example:'">20"',require:"m",repeat:"n",type:"rangeall"},{example:"B1:B10",require:"o",repeat:"n",type:"range"}]},{n:"TAN",t:0,m:[1,1],p:[{example:"45*PI()/180",require:"m",repeat:"n",type:"rangenumber"}]},{n:"TANH",t:0,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"CEILING",t:0,m:[2,2],p:[{example:"23.25",require:"m",repeat:"n",type:"rangenumber"},{example:"0.1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ATAN",t:0,m:[1,1],p:[{example:"0",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ASINH",t:0,m:[1,1],p:[{example:"0.9",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ABS",t:0,m:[1,1],p:[{example:"-2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ACOS",t:0,m:[1,1],p:[{example:"0",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ACOSH",t:0,m:[1,1],p:[{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"MULTINOMIAL",t:0,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"o",repeat:"y",type:"rangeall"}]},{n:"ATANH",t:0,m:[1,1],p:[{example:"0.9",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ATAN2",t:0,m:[2,2],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"3",require:"m",repeat:"n",type:"rangenumber"}]},{n:"COUNTBLANK",t:1,m:[1,1],p:[{example:"A2:C100",require:"m",repeat:"n",type:"range"}]},{n:"COSH",t:0,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"INT",t:0,m:[1,1],p:[{example:"99.44",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ISEVEN",t:0,m:[1,1],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ISODD",t:0,m:[1,1],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"LCM",t:0,m:[1,255],p:[{example:"A2:A5",require:"m",repeat:"n",type:"rangeall"},{example:"3",require:"o",repeat:"y",type:"rangeall"}]},{n:"LN",t:0,m:[1,1],p:[{example:"100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"LOG",t:0,m:[1,2],p:[{example:"128",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"n",type:"rangenumber"}]},{n:"LOG10",t:0,m:[1,1],p:[{example:"100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"MOD",t:0,m:[2,2],p:[{example:"10",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"MROUND",t:0,m:[2,2],p:[{example:"21",require:"m",repeat:"n",type:"rangenumber"},{example:"14",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ODD",t:0,m:[1,1],p:[{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SUMSQ",t:0,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"o",repeat:"y",type:"rangeall"}]},{n:"COMBIN",t:0,m:[2,2],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SUM",t:0,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"o",repeat:"y",type:"rangeall"}]},{n:"SUBTOTAL",t:0,m:[2,256],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"A2:A5",require:"m",repeat:"n",type:"range"},{example:"B2:B8",require:"o",repeat:"y",type:"range"}]},{n:"ASIN",t:0,m:[1,1],p:[{example:"0",require:"m",repeat:"n",type:"rangenumber"}]},{n:"COUNTIF",t:1,m:[2,2],p:[{example:"A1:A10",require:"m",repeat:"n",type:"range"},{example:'">20"',require:"m",repeat:"n",type:"rangeall"}]},{n:"RADIANS",t:0,m:[1,1],p:[{example:"180",require:"m",repeat:"n",type:"rangenumber"}]},{n:"RAND",t:0,m:[0,0],p:[]},{n:"COUNTUNIQUE",t:0,m:[1,255],p:[{example:"A1:C100",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"}]},{n:"DEGREES",t:0,m:[1,1],p:[{example:"PI()",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ERFC",t:9,m:[1,1],p:[{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"EVEN",t:0,m:[1,1],p:[{example:"3",require:"m",repeat:"n",type:"rangenumber"}]},{n:"EXP",t:0,m:[1,1],p:[{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"FACT",t:0,m:[1,1],p:[{example:"3",require:"m",repeat:"n",type:"rangenumber"}]},{n:"FACTDOUBLE",t:0,m:[1,1],p:[{example:"6",require:"m",repeat:"n",type:"rangenumber"}]},{n:"PI",t:0,m:[0,0],p:[]},{n:"FLOOR",t:0,m:[2,2],p:[{example:"23.25",require:"m",repeat:"n",type:"rangenumber"},{example:"0.1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"GCD",t:0,m:[1,255],p:[{example:"A2:A5",require:"m",repeat:"n",type:"rangeall"},{example:"96",require:"o",repeat:"y",type:"rangeall"}]},{n:"RANDBETWEEN",t:0,m:[2,2],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"10",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ROUND",t:0,m:[2,2],p:[{example:"99.44",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ROUNDDOWN",t:0,m:[2,2],p:[{example:"99.44",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ROUNDUP",t:0,m:[2,2],p:[{example:"99.44",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SERIESSUM",t:0,m:[4,4],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"{FACT(0)",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SIGN",t:0,m:[1,1],p:[{example:"-42",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SIN",t:0,m:[1,1],p:[{example:"PI()",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SINH",t:0,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SQRT",t:0,m:[1,1],p:[{example:"9",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SQRTPI",t:0,m:[1,1],p:[{example:"9",require:"m",repeat:"n",type:"rangenumber"}]},{n:"GAMMALN",t:1,m:[1,1],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"COS",t:0,m:[1,1],p:[{example:"PI()",require:"m",repeat:"n",type:"rangenumber"}]},{n:"TRUNC",t:0,m:[1,2],p:[{example:"3.141592654",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"n",type:"rangenumber"}]},{n:"QUOTIENT",t:0,m:[2,2],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"POWER",t:0,m:[2,2],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"0.5",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SUMIFS",t:0,m:[3,257],p:[{example:"A1:A10",require:"m",repeat:"n",type:"range"},{example:" B1:B10",require:"m",repeat:"n",type:"range"},{example:' ">20"',require:"m",repeat:"n",type:"rangeall"},{example:" C1:C10",require:"o",repeat:"y",type:"rangeall"}]},{n:"COUNTIFS",t:1,m:[2,256],p:[{example:"A1:A10",require:"m",repeat:"n",type:"range"},{example:' ">20"',require:"m",repeat:"n",type:"rangeall"},{example:" B1:B10",require:"o",repeat:"y",type:"rangeall"}]},{n:"PRODUCT",t:0,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"HARMEAN",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"HYPGEOMDIST",t:1,m:[5,5],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"},{example:"20",require:"m",repeat:"n",type:"rangenumber"},{example:"40",require:"m",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"INTERCEPT",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"KURT",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"LARGE",t:1,m:[2,2],p:[{example:"A2:B100",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"STDEVA",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"STDEVP",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"GEOMEAN",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"o",repeat:"y",type:"rangeall"}]},{n:"RANK_EQ",t:1,m:[2,3],p:[{example:"A10",require:"m",repeat:"n",type:"rangenumber"},{example:"A1:A100",require:"m",repeat:"n",type:"range"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"RANK_AVG",t:1,m:[2,3],p:[{example:"A10",require:"m",repeat:"n",type:"rangenumber"},{example:"A1:A100",require:"m",repeat:"n",type:"range"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"PERCENTRANK_EXC",t:1,m:[2,3],p:[{example:"A1:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"A2",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"o",repeat:"n",type:"rangenumber"}]},{n:"PERCENTRANK_INC",t:1,m:[2,3],p:[{example:"A1:A100",require:"m",repeat:"n",type:"rangenumber"},{example:" A2",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"o",repeat:"n",type:"rangenumber"}]},{n:"FORECAST",t:1,m:[3,3],p:[{example:"A1",require:"m",repeat:"n",type:"rangenumber"},{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"FISHERINV",t:1,m:[1,1],p:[{example:"0.962",require:"m",repeat:"n",type:"rangenumber"}]},{n:"FISHER",t:1,m:[1,1],p:[{example:"0.962",require:"m",repeat:"n",type:"rangenumber"}]},{n:"MODE_SNGL",t:1,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"o",repeat:"y",type:"rangenumber"}]},{n:"WEIBULL_DIST",t:1,m:[4,4],p:[{example:"2.4",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"3",require:"m",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"COUNT",t:1,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangeall"},{example:"B2:B100",require:"o",repeat:"y",type:"rangeall"}]},{n:"COUNTA",t:1,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangeall"},{example:"B2:B100",require:"o",repeat:"y",type:"rangeall"}]},{n:"AVEDEV",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"AVERAGE",t:1,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangeall"},{example:"B2:B100",require:"o",repeat:"y",type:"rangeall"}]},{n:"AVERAGEA",t:1,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangeall"},{example:"B2:B100",require:"o",repeat:"y",type:"rangeall"}]},{n:"BINOM_DIST",t:1,m:[4,4],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"0.005",require:"m",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"BINOM_INV",t:1,m:[3,3],p:[{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"0.005",require:"m",repeat:"n",type:"rangenumber"},{example:"0.8",require:"m",repeat:"n",type:"rangenumber"}]},{n:"CONFIDENCE_NORM",t:1,m:[3,3],p:[{example:"0.05",require:"m",repeat:"n",type:"rangenumber"},{example:"1.6",require:"m",repeat:"n",type:"rangenumber"},{example:"250",require:"m",repeat:"n",type:"rangenumber"}]},{n:"CORREL",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"COVARIANCE_P",t:1,m:[2,2],p:[{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"},{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"COVARIANCE_S",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"DEVSQ",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"EXPON_DIST",t:1,m:[3,3],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"0.5",require:"m",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"AVERAGEIF",t:1,m:[2,3],p:[{example:"A1:A10",require:"m",repeat:"n",type:"rangeall"},{example:'">20"',require:"m",repeat:"n",type:"rangeall"},{example:"B1:B10",require:"o",repeat:"n",type:"rangeall"}]},{n:"AVERAGEIFS",t:1,m:[2,255],p:[{example:"A1:A10",require:"m",repeat:"n",type:"rangeall"},{example:" B1:B10",require:"m",repeat:"n",type:"rangeall"},{example:' ">20"',require:"m",repeat:"n",type:"rangeall"},{example:" C1:C10",require:"m",repeat:"n",type:"rangeall"}]},{n:"PERMUT",t:1,m:[2,2],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"TRIMMEAN",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"range"},{example:"0.1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"PERCENTILE_EXC",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"0.25",require:"m",repeat:"n",type:"rangenumber"}]},{n:"PERCENTILE_INC",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"0.25",require:"m",repeat:"n",type:"rangenumber"}]},{n:"PEARSON",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"NORM_S_INV",t:1,m:[1,1],p:[{example:"0.75",require:"m",repeat:"n",type:"rangenumber"}]},{n:"NORM_S_DIST",t:1,m:[2,2],p:[{example:"2.4",require:"m",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"NORM_INV",t:1,m:[3,3],p:[{example:"0.75",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"NORM_DIST",t:1,m:[4,4],p:[{example:"2.4",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"NEGBINOM_DIST",t:1,m:[4,4],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"0.1",require:"m",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"MINA",t:1,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"o",repeat:"y",type:"rangenumber"}]},{n:"MIN",t:1,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"o",repeat:"y",type:"rangenumber"}]},{n:"MEDIAN",t:1,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"o",repeat:"y",type:"rangenumber"}]},{n:"MAXA",t:1,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"o",repeat:"y",type:"rangenumber"}]},{n:"MAX",t:1,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"o",repeat:"y",type:"rangenumber"}]},{n:"LOGNORM_INV",t:1,m:[3,3],p:[{example:"0.4",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"6",require:"m",repeat:"n",type:"rangenumber"}]},{n:"LOGNORM_DIST",t:1,m:[4,4],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"6",require:"m",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"Z_TEST",t:1,m:[2,3],p:[{example:"A2:A100",require:"m",repeat:"n",type:"range"},{example:"B2",require:"m",repeat:"n",type:"rangenumber"},{example:"3",require:"o",repeat:"n",type:"rangenumber"}]},{n:"PROB",t:1,m:[3,4],p:[{example:"A3:A6",require:"m",repeat:"n",type:"range"},{example:"2",require:"m",repeat:"n",type:"range"},{example:"3",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"o",repeat:"n",type:"rangenumber"}]},{n:"QUARTILE_EXC",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"3",require:"m",repeat:"n",type:"rangenumber"}]},{n:"QUARTILE_INC",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"3",require:"m",repeat:"n",type:"rangenumber"}]},{n:"POISSON_DIST",t:1,m:[3,3],p:[{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"RSQ",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"T_DIST",t:1,m:[3,3],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"},{example:"30",require:"m",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"T_DIST_2T",t:1,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"},{example:"30",require:"m",repeat:"n",type:"rangenumber"}]},{n:"T_DIST_RT",t:1,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"},{example:"30",require:"m",repeat:"n",type:"rangenumber"}]},{n:"T_INV",t:1,m:[2,2],p:[{example:"0.35",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"T_INV_2T",t:1,m:[2,2],p:[{example:"0.35",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"T_TEST",t:1,m:[4,4],p:[{example:"A1:A4",require:"m",repeat:"n",type:"rangenumber"},{example:"B1:B4",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"F_DIST",t:1,m:[4,4],p:[{example:"15.35",require:"m",repeat:"n",type:"rangenumber"},{example:"7",require:"m",repeat:"n",type:"rangenumber"},{example:"6",require:"m",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"F_DIST_RT",t:1,m:[3,3],p:[{example:"15.35",require:"m",repeat:"n",type:"rangenumber"},{example:"7",require:"m",repeat:"n",type:"rangenumber"},{example:"6",require:"m",repeat:"n",type:"rangenumber"}]},{n:"VAR_P",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"VAR_S",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"VARA",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"VARPA",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"STEYX",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"STANDARDIZE",t:1,m:[3,3],p:[{example:"96",require:"m",repeat:"n",type:"rangenumber"},{example:"80",require:"m",repeat:"n",type:"rangenumber"},{example:"6.7",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SMALL",t:1,m:[2,2],p:[{example:"A2:B100",require:"m",repeat:"n",type:"range"},{example:"4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SLOPE",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SKEW",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"o",repeat:"y",type:"rangeall"}]},{n:"SKEW_P",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"o",repeat:"y",type:"rangeall"}]},{n:"VLOOKUP",t:2,m:[3,4],p:[{example:"10003",require:"m",repeat:"n",type:"rangeall"},{example:"A2:B26",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"HLOOKUP",t:2,m:[3,4],p:[{example:"10003",require:"m",repeat:"n",type:"rangeall"},{example:"A2:Z6",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"LOOKUP",t:2,m:[2,3],p:[{example:"10003",require:"m",repeat:"n",type:"rangeall"},{example:"A1:A100",require:"m",repeat:"n",type:"rangeall"},{example:"B1:B100",require:"o",repeat:"n",type:"rangeall"}]},{n:"ADDRESS",t:2,m:[2,5],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"o",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"o",repeat:"n",type:"rangeall"},{example:'"Sheet2"',require:"o",repeat:"n",type:"rangeall"}]},{n:"INDIRECT",t:2,m:[1,2],p:[{example:'"Sheet2!"&B10',require:"m",repeat:"n",type:"rangeall"},{example:"FALSE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"ROW",t:2,m:[0,1],p:[{example:"A9",require:"o",repeat:"n",type:"rangeall"}]},{n:"ROWS",t:2,m:[1,1],p:[{example:"A9:A62",require:"m",repeat:"n",type:"rangenumber"}]},{n:"COLUMN",t:2,m:[0,1],p:[{example:"A9",require:"o",repeat:"n",type:"rangeall"}]},{n:"COLUMNS",t:2,m:[1,1],p:[{example:"A9:W62",require:"m",repeat:"n",type:"rangenumber"}]},{n:"OFFSET",t:2,m:[3,5],p:[{example:"A2",require:"m",repeat:"n",type:"range"},{example:"3",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"n",type:"rangenumber"}]},{n:"MATCH",t:2,m:[2,3],p:[{example:'"Sunday"',require:"m",repeat:"n",type:"rangeall"},{example:"A2:A9",require:"m",repeat:"n",type:"range"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"INDEX",t:2,m:[2,3],p:[{example:"A1:C20",require:"m",repeat:"n",type:"range"},{example:"5",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"GETPIVOTDATA",t:2,m:[2,254],p:[{example:'"SUM of number of units"',require:"m",repeat:"n",type:"rangeall"},{example:"'Pivot table'!A1",require:"m",repeat:"n",type:"rangeall"},{example:'"division"',require:"o",repeat:"y",type:"rangeall"},{example:'"east"',require:"o",repeat:"y",type:"rangeall"}]},{n:"CHOOSE",t:2,m:[2,255],p:[{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:'"A"',require:"m",repeat:"n",type:"rangeall"},{example:'"B"',require:"o",repeat:"y",type:"rangeall"}]},{n:"HYPERLINK",t:2,p:[{example:'"http://www.luckysheet.com/"',require:"m",repeat:"n",type:"rangeall"},{example:'"luckysheet"',require:"m",repeat:"n",type:"rangeall"}]},{n:"TIME",t:6,m:[3,3],p:[{example:"11",require:"m",repeat:"n",type:"rangenumber"},{example:"40",require:"m",repeat:"n",type:"rangenumber"},{example:"59",require:"m",repeat:"n",type:"rangenumber"}]},{n:"TIMEVALUE",t:6,m:[1,1],p:[{example:'"2:15 PM"',require:"m",repeat:"n",type:"rangeall"}]},{n:"EOMONTH",t:6,m:[2,2],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"m",repeat:"n",type:"rangenumber"}]},{n:"EDATE",t:6,m:[2,2],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SECOND",t:6,m:[1,1],p:[{example:"TIME(11",require:"m",repeat:"n",type:"rangeall"}]},{n:"MINUTE",t:6,m:[1,1],p:[{example:"TIME(11",require:"m",repeat:"n",type:"rangeall"}]},{n:"HOUR",t:6,m:[1,1],p:[{example:"TIME(11",require:"m",repeat:"n",type:"rangeall"}]},{n:"NOW",t:6,m:[0,0],p:[]},{n:"NETWORKDAYS",t:6,m:[2,3],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"m",repeat:"n",type:"rangeall"},{example:"16)",require:"o",repeat:"n",type:"rangeall"}]},{n:"NETWORKDAYS_INTL",t:6,m:[2,4],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"m",repeat:"n",type:"rangeall"},{example:"16)",require:"o",repeat:"n",type:"rangeall"},{example:"DATE(1969",require:"o",repeat:"n",type:"rangeall"}]},{n:"ISOWEEKNUM",t:6,m:[1,1],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"}]},{n:"WEEKNUM",t:6,m:[1,2],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"o",repeat:"n",type:"rangenumber"}]},{n:"WEEKDAY",t:6,m:[1,2],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DAY",t:6,m:[1,1],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"}]},{n:"DAYS",t:6,m:[2,2],p:[{example:"2011-3-15",require:"m",repeat:"n",type:"rangeall"},{example:"2011-2-1",require:"m",repeat:"n",type:"rangeall"}]},{n:"DAYS360",t:6,m:[2,3],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"m",repeat:"n",type:"rangeall"},{example:"FALSE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"DATE",t:6,m:[3,3],p:[{example:"1969",require:"m",repeat:"n",type:"rangenumber"},{example:"7",require:"m",repeat:"n",type:"rangenumber"},{example:"20",require:"m",repeat:"n",type:"rangenumber"}]},{n:"DATEVALUE",t:6,m:[1,1],p:[{example:'"1969-7-20"',require:"m",repeat:"n",type:"rangeall"}]},{n:"DATEDIF",t:6,m:[3,3],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"m",repeat:"n",type:"rangeall"},{example:"16)",require:"m",repeat:"n",type:"rangeall"}]},{n:"WORKDAY",t:6,m:[2,3],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"m",repeat:"n",type:"rangenumber"},{example:"16)",require:"o",repeat:"n",type:"rangeall"}]},{n:"WORKDAY_INTL",t:6,m:[2,4],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"m",repeat:"n",type:"rangenumber"},{example:"16)",require:"o",repeat:"n",type:"rangeall"},{example:"DATE(1969",require:"o",repeat:"n",type:"rangeall"}]},{n:"YEAR",t:6,m:[1,1],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"}]},{n:"YEARFRAC",t:6,m:[2,3],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"m",repeat:"n",type:"rangeall"},{example:"16)",require:"o",repeat:"n",type:"rangenumber"}]},{n:"TODAY",t:6,m:[0,0],p:[]},{n:"MONTH",t:6,m:[1,1],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"}]},{n:"EFFECT",t:8,m:[2,2],p:[{example:"0.99",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"}]},{n:"DOLLAR",t:12,m:[1,2],p:[{example:"1.2351",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"DOLLARDE",t:8,m:[2,2],p:[{example:"100.10",require:"m",repeat:"n",type:"rangenumber"},{example:"32",require:"m",repeat:"n",type:"rangenumber"}]},{n:"DOLLARFR",t:8,m:[2,2],p:[{example:"100.125",require:"m",repeat:"n",type:"rangenumber"},{example:"32",require:"m",repeat:"n",type:"rangenumber"}]},{n:"DB",t:8,m:[4,5],p:[{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"50",require:"m",repeat:"n",type:"rangenumber"},{example:"10",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"10",require:"m",repeat:"n",type:"rangenumber"}]},{n:"DDB",t:8,m:[4,5],p:[{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"50",require:"m",repeat:"n",type:"rangenumber"},{example:"10",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"2.25",require:"m",repeat:"n",type:"rangenumber"}]},{n:"RATE",t:8,m:[3,6],p:[{example:"12",require:"m",repeat:"n",type:"rangenumber"},{example:"-100",require:"m",repeat:"n",type:"rangenumber"},{example:"400",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"},{example:"0.1",require:"o",repeat:"n",type:"rangenumber"}]},{n:"CUMPRINC",t:8,m:[6,6],p:[{example:"0.12",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"},{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"5",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"m",repeat:"n",type:"rangenumber"}]},{n:"COUPNUM",t:8,m:[3,4],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"02",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"SYD",t:8,m:[4,4],p:[{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"50",require:"m",repeat:"n",type:"rangenumber"},{example:"10",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"TBILLEQ",t:8,m:[3,3],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"m",repeat:"n",type:"rangeall"},{example:"2)",require:"m",repeat:"n",type:"rangenumber"}]},{n:"TBILLYIELD",t:8,m:[3,3],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"95",require:"m",repeat:"n",type:"rangenumber"}]},{n:"TBILLPRICE",t:8,m:[3,3],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"0.09",require:"m",repeat:"n",type:"rangenumber"}]},{n:"PV",t:8,m:[3,5],p:[{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"},{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"D2",require:"o",repeat:"n",type:"rangenumber"},{example:"1",require:"o",repeat:"n",type:"rangenumber"}]},{n:"ACCRINT",t:8,m:[6,8],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"0.1",require:"m",repeat:"n",type:"rangenumber"},{example:"10000",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"ACCRINTM",t:8,m:[4,5],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"0.1",require:"m",repeat:"n",type:"rangenumber"},{example:"1000",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"}]},{n:"COUPDAYBS",t:8,m:[3,4],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"COUPDAYS",t:8,m:[3,4],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"COUPDAYSNC",t:8,m:[3,4],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"COUPNCD",t:8,m:[3,4],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"01)",require:"m",repeat:"n",type:"rangenumber"},{example:"DATE(2019",require:"o",repeat:"n",type:"rangenumber"}]},{n:"COUPPCD",t:8,m:[3,4],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"01)",require:"m",repeat:"n",type:"rangenumber"},{example:"DATE(2019",require:"o",repeat:"n",type:"rangenumber"}]},{n:"FV",t:8,m:[3,5],p:[{example:"0.12",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"},{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"400",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"FVSCHEDULE",t:8,m:[2,2],p:[{example:"10000",require:"m",repeat:"n",type:"rangenumber"},{example:"A2:A100",require:"m",repeat:"n",type:"range"}]},{n:"YIELD",t:8,m:[6,7],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"0.057",require:"m",repeat:"n",type:"rangenumber"},{example:"95",require:"m",repeat:"n",type:"rangenumber"},{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"m",repeat:"n",type:"rangenumber"}]},{n:"YIELDDISC",t:8,m:[4,5],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"95",require:"m",repeat:"n",type:"rangenumber"},{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"m",repeat:"n",type:"rangenumber"}]},{n:"NOMINAL",t:8,m:[2,2],p:[{example:"0.85",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"}]},{n:"XIRR",t:8,m:[2,3],p:[{example:"B2:B25",require:"m",repeat:"n",type:"range"},{example:"C2:C25",require:"m",repeat:"n",type:"range"},{example:"250",require:"o",repeat:"n",type:"rangenumber"}]},{n:"MIRR",t:8,m:[3,3],p:[{example:"A2:A25",require:"m",repeat:"n",type:"range"},{example:"0.1",require:"m",repeat:"n",type:"rangenumber"},{example:"0.12",require:"m",repeat:"n",type:"rangenumber"}]},{n:"IRR",t:8,m:[1,2],p:[{example:"A2:A25",require:"m",repeat:"n",type:"range"},{example:"200",require:"o",repeat:"n",type:"rangenumber"}]},{n:"NPV",t:8,m:[2,255],p:[{example:"0.1",require:"m",repeat:"n",type:"rangenumber"},{example:"200",require:"m",repeat:"n",type:"rangeall"},{example:"250",require:"o",repeat:"y",type:"rangeall"}]},{n:"XNPV",t:8,m:[3,3],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B25",require:"m",repeat:"n",type:"range"},{example:"C2:C25",require:"m",repeat:"n",type:"range"}]},{n:"CUMIPMT",t:8,m:[6,6],p:[{example:"0.12",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"},{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"5",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"m",repeat:"n",type:"rangenumber"}]},{n:"PMT",t:8,m:[3,5],p:[{example:"0.08",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"},{example:" 100000",require:"m",repeat:"n",type:"rangenumber"},{example:"D2",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"IPMT",t:8,m:[4,6],p:[{example:"0.1",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"},{example:"80000",require:"m",repeat:"n",type:"rangenumber"},{example:"E2",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"PPMT",t:8,m:[4,6],p:[{example:"0.1",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"3*12",require:"m",repeat:"n",type:"rangenumber"},{example:"100000",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"INTRATE",t:8,m:[4,5],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"100000",require:"m",repeat:"n",type:"rangenumber"},{example:"101200",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"}]},{n:"PRICE",t:8,m:[6,7],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"0.057",require:"m",repeat:"n",type:"rangenumber"},{example:"0.065",require:"m",repeat:"n",type:"rangenumber"},{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"PRICEDISC",t:8,m:[4,5],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"0.0525",require:"m",repeat:"n",type:"rangenumber"},{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"PRICEMAT",t:8,m:[5,6],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"0.061",require:"m",repeat:"n",type:"rangenumber"},{example:"0.061",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"RECEIVED",t:8,m:[4,5],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"10000000",require:"m",repeat:"n",type:"rangenumber"},{example:"0.0575",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DISC",t:8,m:[4,5],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"97.975",require:"m",repeat:"n",type:"rangenumber"},{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"o",repeat:"n",type:"rangenumber"}]},{n:"NPER",t:8,m:[3,5],p:[{example:"0.12",require:"m",repeat:"n",type:"rangenumber"},{example:"500",require:"m",repeat:"n",type:"rangenumber"},{example:"40000",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"SLN",t:8,m:[3,3],p:[{example:"300000",require:"m",repeat:"n",type:"rangenumber"},{example:"75000",require:"m",repeat:"n",type:"rangenumber"},{example:"10",require:"m",repeat:"n",type:"rangenumber"}]},{n:"DURATION",t:8,m:[5,6],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"0.08",require:"m",repeat:"n",type:"rangenumber"},{example:"0.09",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"MDURATION",t:8,m:[5,6],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"0.08",require:"m",repeat:"n",type:"rangenumber"},{example:"0.09",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"BIN2DEC",t:9,m:[1,1],p:[{example:"101",require:"m",repeat:"n",type:"rangeall"}]},{n:"BIN2HEX",t:9,m:[1,2],p:[{example:"101",require:"m",repeat:"n",type:"rangeall"},{example:"8",require:"o",repeat:"n",type:"rangenumber"}]},{n:"BIN2OCT",t:9,m:[1,2],p:[{example:"101",require:"m",repeat:"n",type:"rangeall"},{example:"8",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DEC2BIN",t:9,m:[1,2],p:[{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"8",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DEC2HEX",t:9,m:[1,2],p:[{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"8",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DEC2OCT",t:9,m:[1,2],p:[{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"8",require:"o",repeat:"n",type:"rangenumber"}]},{n:"HEX2BIN",t:9,m:[1,2],p:[{example:'"f3"',require:"m",repeat:"n",type:"rangeall"},{example:"8",require:"o",repeat:"n",type:"rangenumber"}]},{n:"HEX2DEC",t:9,m:[1,1],p:[{example:'"f3"',require:"m",repeat:"n",type:"rangeall"}]},{n:"HEX2OCT",t:9,m:[1,2],p:[{example:'"f3"',require:"m",repeat:"n",type:"rangeall"},{example:"8",require:"o",repeat:"n",type:"rangenumber"}]},{n:"OCT2BIN",t:9,m:[1,2],p:[{example:"37",require:"m",repeat:"n",type:"rangeall"},{example:"8",require:"o",repeat:"n",type:"rangenumber"}]},{n:"OCT2DEC",t:9,m:[1,1],p:[{example:"37",require:"m",repeat:"n",type:"rangeall"}]},{n:"OCT2HEX",t:9,m:[1,2],p:[{example:"37",require:"m",repeat:"n",type:"rangeall"},{example:"8",require:"o",repeat:"n",type:"rangenumber"}]},{n:"COMPLEX",t:9,m:[2,3],p:[{example:"3",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:'"j"',require:"o",repeat:"n",type:"rangestring"}]},{n:"IMREAL",t:9,m:[1,1],p:[{example:'"4+5i"',require:"m",repeat:"n",type:"rangeall"}]},{n:"IMAGINARY",t:9,m:[1,1],p:[{example:'"4+5i"',require:"m",repeat:"n",type:"rangeall"}]},{n:"IMCONJUGATE",t:9,m:[1,1],p:[{example:'"3+4i"',require:"m",repeat:"n",type:"rangeall"}]},{n:"IMABS",t:9,m:[1,1],p:[{example:'"3+4i"',require:"m",repeat:"n",type:"rangeall"}]},{n:"DELTA",t:9,m:[1,2],p:[{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"o",repeat:"n",type:"rangenumber"}]},{n:"IMSUM",t:9,m:[1,255],p:[{example:'"3+4i"',require:"m",repeat:"n",type:"rangeall"},{example:'"5-3i"',require:"o",repeat:"y",type:"rangeall"}]},{n:"IMSUB",t:9,m:[2,2],p:[{example:'"6+5i"',require:"m",repeat:"n",type:"rangeall"},{example:'"2+3i"',require:"m",repeat:"n",type:"rangeall"}]},{n:"IMPRODUCT",t:9,m:[1,255],p:[{example:'"3+4i"',require:"m",repeat:"n",type:"rangeall"},{example:'"5-3i"',require:"o",repeat:"y",type:"rangeall"}]},{n:"IMDIV",t:9,m:[2,2],p:[{example:'"11+16i"',require:"m",repeat:"n",type:"rangeall"},{example:'"3+2i"',require:"m",repeat:"n",type:"rangeall"}]},{n:"NOT",t:10,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"TRUE",t:10,m:[0,0],p:[]},{n:"FALSE",t:10,m:[0,0],p:[]},{n:"AND",t:10,m:[1,255],p:[{example:'A2 = "foo"',require:"m",repeat:"n",type:"rangeall"},{example:'A3 = "bar"',require:"o",repeat:"y",type:"rangeall"}]},{n:"IFERROR",t:10,m:[2,2],p:[{example:"A1",require:"m",repeat:"n",type:"rangeall"},{example:'"Error in cell A1"',require:"m",repeat:"n",type:"rangeall"}]},{n:"IF",t:10,m:[2,3],p:[{example:'A2 = "foo"',require:"m",repeat:"n",type:"rangeall"},{example:'"A2 is foo"',require:"m",repeat:"n",type:"rangeall"},{example:'"A2 was false"',require:"o",repeat:"n",type:"rangeall"}]},{n:"OR",t:10,m:[1,255],p:[{example:'A2 = "foo"',require:"m",repeat:"n",type:"rangeall"},{example:' A3 = "bar"',require:"m",repeat:"n",type:"rangeall"}]},{n:"NE",t:11,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"},{example:"A3",require:"m",repeat:"n",type:"rangeall"}]},{n:"EQ",t:11,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"},{example:"A3",require:"m",repeat:"n",type:"rangeall"}]},{n:"GT",t:11,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"},{example:"A3",require:"m",repeat:"n",type:"rangeall"}]},{n:"GTE",t:11,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"},{example:"A3",require:"m",repeat:"n",type:"rangeall"}]},{n:"LT",t:11,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"},{example:"A3",require:"m",repeat:"n",type:"rangeall"}]},{n:"LTE",t:11,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"},{example:"A3",require:"m",repeat:"n",type:"rangeall"}]},{n:"ADD",t:11,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"},{example:"A3",require:"m",repeat:"n",type:"rangenumber"}]},{n:"MINUS",t:11,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"},{example:"A3",require:"m",repeat:"n",type:"rangenumber"}]},{n:"MULTIPLY",t:11,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"},{example:"B2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"DIVIDE",t:11,m:[2,2],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"CONCAT",t:11,m:[2,2],p:[{example:'"de"',require:"m",repeat:"n",type:"rangeall"},{example:'"mystify"',require:"m",repeat:"n",type:"rangeall"}]},{n:"UNARY_PERCENT",t:11,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"CONCATENATE",t:12,m:[1,255],p:[{example:'"Super"',require:"m",repeat:"n",type:"rangeall"},{example:'"calla"',require:"o",repeat:"y",type:"rangeall"}]},{n:"CODE",t:12,m:[1,1],p:[{example:'"a"',require:"m",repeat:"n",type:"rangeall"}]},{n:"CHAR",t:12,m:[1,1],p:[{example:"97",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ARABIC",t:12,m:[1,1],p:[{example:'"XIV"',require:"m",repeat:"n",type:"rangeall"}]},{n:"ROMAN",t:12,m:[1,1],p:[{example:"499",require:"m",repeat:"n",type:"rangenumber"}]},{n:"REGEXEXTRACT",t:12,m:[2,2],p:[{example:'"Needle in a haystack"',require:"m",repeat:"n",type:"rangeall"},{example:'".e{2}dle"',require:"m",repeat:"n",type:"rangeall"}]},{n:"REGEXMATCH",t:12,m:[2,2],p:[{example:'"Spreadsheets"',require:"m",repeat:"n",type:"rangeall"},{example:'"S.r"',require:"m",repeat:"n",type:"rangeall"}]},{n:"REGEXREPLACE",t:12,m:[3,3],p:[{example:'"Spreadsheets"',require:"m",repeat:"n",type:"rangeall"},{example:'"S.*d"',require:"m",repeat:"n",type:"rangeall"},{example:'"Bed"',require:"m",repeat:"n",type:"rangeall"}]},{n:"T",t:12,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"FIXED",t:12,m:[1,3],p:[{example:"3.141592653",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"FIND",t:12,m:[2,3],p:[{example:'"n"',require:"m",repeat:"n",type:"rangeall"},{example:"A2",require:"m",repeat:"n",type:"rangeall"},{example:"14",require:"o",repeat:"n",type:"rangenumber"}]},{n:"FINDB",t:12,m:[2,3],p:[{example:'"new"',require:"m",repeat:"n",type:"rangeall"},{example:'"new year"',require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"o",repeat:"n",type:"rangenumber"}]},{n:"JOIN",t:12,m:[2,255],p:[{example:'" and-a "',require:"m",repeat:"n",type:"rangeall"},{example:"{1",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"o",repeat:"y",type:"rangeall"}]},{n:"LEFT",t:12,m:[1,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"RIGHT",t:12,m:[1,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"MID",t:12,m:[3,3],p:[{example:'"get this"',require:"m",repeat:"n",type:"rangeall"},{example:"5",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"LEN",t:12,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"LENB",t:12,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"LOWER",t:12,m:[1,1],p:[{example:'"LOREM IPSUM"',require:"m",repeat:"n",type:"rangeall"}]},{n:"UPPER",t:12,m:[1,1],p:[{example:'"lorem ipsum"',require:"m",repeat:"n",type:"rangeall"}]},{n:"EXACT",t:12,m:[2,2],p:[{example:"A1",require:"m",repeat:"n",type:"rangeall"},{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"REPLACE",t:12,m:[4,4],p:[{example:'"Spreadsheets"',require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"6",require:"m",repeat:"n",type:"rangenumber"},{example:'"Bed"',require:"m",repeat:"n",type:"rangeall"}]},{n:"REPT",t:12,m:[2,2],p:[{example:'"ha"',require:"m",repeat:"n",type:"rangeall"},{example:"4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SEARCH",t:12,m:[2,3],p:[{example:'"n"',require:"m",repeat:"n",type:"rangeall"},{example:"A2",require:"m",repeat:"n",type:"rangeall"},{example:"14",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SUBSTITUTE",t:12,m:[3,4],p:[{example:'"search for it"',require:"m",repeat:"n",type:"rangeall"},{example:'"search for"',require:"m",repeat:"n",type:"rangeall"},{example:'"Google"',require:"m",repeat:"n",type:"rangeall"},{example:"3",require:"m",repeat:"n",type:"rangenumber"}]},{n:"CLEAN",t:12,m:[1,1],p:[{example:'"AF"&CHAR(31)',require:"m",repeat:"n",type:"rangeall"}]},{n:"TEXT",t:12,m:[2,2],p:[{example:"1.23",require:"m",repeat:"n",type:"rangenumber"},{example:'"$0.00"',require:"m",repeat:"n",type:"rangeall"}]},{n:"TRIM",t:12,m:[1,1],p:[{example:'" lorem ipsum"',require:"m",repeat:"n",type:"rangeall"}]},{n:"VALUE",t:12,m:[1,1],p:[{example:'"123"',require:"m",repeat:"n",type:"rangeall"}]},{n:"PROPER",t:12,m:[1,1],p:[{example:'"united states"',require:"m",repeat:"n",type:"rangeall"}]},{n:"CONVERT",t:13,m:[3,3],p:[{example:"5.1",require:"m",repeat:"n",type:"rangenumber"},{example:'"g"',require:"m",repeat:"n",type:"rangeall"},{example:'"kg"',require:"m",repeat:"n",type:"rangeall"}]},{n:"SUMX2MY2",t:14,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SUMX2PY2",t:14,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SUMXMY2",t:14,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"TRANSPOSE",t:14,m:[1,1],p:[{example:"{1,2}",require:"m",repeat:"n",type:"range"}]},{n:"TREND",t:14,m:[1,4],p:[{example:"B2:B10",require:"m",repeat:"n",type:"rangenumber"},{example:"A2:A10",require:"o",repeat:"n",type:"rangenumber"},{example:"A11:A13",require:"o",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"FREQUENCY",t:14,m:[2,2],p:[{example:"A2:A40",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B5",require:"m",repeat:"n",type:"rangenumber"}]},{n:"GROWTH",t:14,m:[1,4],p:[{example:"B2:B10",require:"m",repeat:"n",type:"rangenumber"},{example:"A2:A10",require:"o",repeat:"n",type:"rangenumber"},{example:"A11:A13",require:"o",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"LINEST",t:14,m:[1,4],p:[{example:"B2:B10",require:"m",repeat:"n",type:"rangenumber"},{example:"A2:A10",require:"o",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"LOGEST",t:14,m:[1,4],p:[{example:"B2:B10",require:"m",repeat:"n",type:"rangenumber"},{example:"A2:A10",require:"o",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"MDETERM",t:14,m:[1,1],p:[{example:"A1:D4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"MINVERSE",t:14,m:[1,1],p:[{example:"A1:D4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"MMULT",t:14,m:[2,2],p:[{example:"A1:B3",require:"m",repeat:"n",type:"rangenumber"},{example:"C1:F2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SUMPRODUCT",t:14,m:[1,255],p:[{example:"A2:C5",require:"m",repeat:"n",type:"rangenumber"},{example:"D2:F5",require:"o",repeat:"y",type:"rangenumber"}]},{n:"ISFORMULA",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"range"}]},{n:"CELL",t:15,m:[2,2],p:[{example:'"type"',require:"m",repeat:"n",type:"rangeall"},{example:"C2",require:"m",repeat:"n",type:"range"}]},{n:"NA",t:15,m:[0,0],p:[]},{n:"ERROR_TYPE",t:15,m:[1,1],p:[{example:"A3",require:"m",repeat:"n",type:"rangeall"}]},{n:"ISBLANK",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"range"}]},{n:"ISERR",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"ISERROR",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"ISLOGICAL",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"ISNA",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"ISNONTEXT",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"ISNUMBER",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"ISREF",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"range"}]},{n:"ISTEXT",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"TYPE",t:15,m:[1,1],p:[{example:"C4",require:"m",repeat:"n",type:"rangeall"}]},{n:"N",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"TO_DATE",t:16,m:[1,1],p:[{example:"25405",require:"m",repeat:"n",type:"rangenumber"}]},{n:"TO_PURE_NUMBER",t:16,m:[1,1],p:[{example:"50%",require:"m",repeat:"n",type:"rangeall"}]},{n:"TO_TEXT",t:16,m:[1,1],p:[{example:"24",require:"m",repeat:"n",type:"rangeall"}]},{n:"TO_DOLLARS",t:16,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"TO_PERCENT",t:16,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"DGET",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DMAX",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DMIN",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DAVERAGE",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DCOUNT",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DCOUNTA",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DPRODUCT",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DSTDEV",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DSTDEVP",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DSUM",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DVAR",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DVARP",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"AGE_BY_IDCARD",t:"3",m:[1,2],p:[{example:"A1",require:"m",repeat:"n",type:"rangeall"},{example:'"2017-10-01"',require:"o",repeat:"n",type:"rangedatetime"}]},{n:"SEX_BY_IDCARD",t:"3",m:[1,1],p:[{example:'"31033519900101XXXX"',require:"m",repeat:"n",type:"rangeall"}]},{n:"BIRTHDAY_BY_IDCARD",t:"3",m:[1,2],p:[{example:'"31033519900101XXXX"',require:"m",repeat:"n",type:"rangeall"},{example:"0",require:"o",repeat:"n",type:"rangeall"}]},{n:"PROVINCE_BY_IDCARD",t:"3",m:[1,1],p:[{example:'"31033519900101XXXX"',require:"m",repeat:"n",type:"rangeall"}]},{n:"CITY_BY_IDCARD",t:"3",m:[1,1],p:[{example:'"31033519900101XXXX"',require:"m",repeat:"n",type:"rangeall"}]},{n:"STAR_BY_IDCARD",t:"3",m:[1,1],p:[{example:'"31033519900101XXXX"',require:"m",repeat:"n",type:"rangeall"}]},{n:"ANIMAL_BY_IDCARD",t:"3",m:[1,1],p:[{example:'"31033519900101XXXX"',require:"m",repeat:"n",type:"rangeall"}]},{n:"ISIDCARD",t:"3",m:[1,1],p:[{example:'"31033519900101XXXX"',require:"m",repeat:"n",type:"rangeall"}]},{n:"DM_TEXT_CUTWORD",t:"4",m:[1,2],p:[{example:'"I came to Beijing Tsinghua University"',require:"m",repeat:"n",type:"rangeall"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DM_TEXT_TFIDF",t:"4",m:[1,3],p:[{example:'"I came to Beijing Tsinghua University"',require:"m",repeat:"n",type:"rangeall"},{example:"20",require:"o",repeat:"n",type:"rangenumber"},{example:"1",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DM_TEXT_TEXTRANK",t:"4",m:[1,3],p:[{example:'"I came to Beijing Tsinghua University"',require:"m",repeat:"n",type:"rangeall"},{example:"20",require:"o",repeat:"n",type:"rangenumber"},{example:"1",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DATA_CN_STOCK_CLOSE",t:"5",m:[1,3],p:[{example:'"000001"',require:"m",repeat:"n",type:"rangeall"},{example:"2015-01-08",require:"o",repeat:"n",type:"rangedate"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DATA_CN_STOCK_OPEN",t:"5",m:[1,3],p:[{example:'"000001"',require:"m",repeat:"n",type:"rangeall"},{example:"2015-01-08",require:"o",repeat:"n",type:"rangedate"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DATA_CN_STOCK_MAX",t:"5",m:[1,3],p:[{example:'"000001"',require:"m",repeat:"n",type:"rangeall"},{example:"2015-01-08",require:"o",repeat:"n",type:"rangedate"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DATA_CN_STOCK_MIN",t:"5",m:[1,3],p:[{example:'"000001"',require:"m",repeat:"n",type:"rangeall"},{example:"2015-01-08",require:"o",repeat:"n",type:"rangedate"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DATA_CN_STOCK_VOLUMN",t:"5",m:[1,3],p:[{example:'"000001"',require:"m",repeat:"n",type:"rangeall"},{example:"2015-01-08",require:"o",repeat:"n",type:"rangedate"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DATA_CN_STOCK_AMOUNT",t:"5",m:[1,3],p:[{example:'"000001"',require:"m",repeat:"n",type:"rangeall"},{example:"2015-01-08",require:"o",repeat:"n",type:"rangedate"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"ISDATE",t:"6",m:[1,1],p:[{example:'"1990-01-01"',require:"m",repeat:"n",type:"rangeall"}]},{n:"LINESPLINES",t:"3",m:[1,8],p:[{example:"A1:A20",require:"m",repeat:"n",type:"rangeall"},{example:"#2ec7c9",require:"o",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"},{example:"avg",require:"o",repeat:"n",type:"rangeall"},{example:"#000",require:"o",repeat:"n",type:"rangeall"},{example:"#fc5c5c",require:"o",repeat:"n",type:"rangeall"},{example:"#fc5c5c",require:"o",repeat:"n",type:"rangeall"},{example:"1.5",require:"o",repeat:"n",type:"rangeall"}]},{n:"AREASPLINES",t:"3",m:[1,5],p:[{example:"A1:A20",require:"m",repeat:"n",type:"rangeall"},{example:"#2ec7c9",require:"o",repeat:"n",type:"rangeall"},{example:"#CCF3F4",require:"o",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"},{example:"avg",require:"o",repeat:"n",type:"rangeall"},{example:"#000",require:"o",repeat:"n",type:"rangeall"}]},{n:"COLUMNSPLINES",t:"3",m:[1,6],p:[{example:"A1:A20",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"},{example:"#fc5c5c",require:"o",repeat:"n",type:"rangeall"},{example:"#97b552",require:"o",repeat:"n",type:"rangeall"},{example:"100",require:"o",repeat:"n",type:"rangeall"},{example:"#97b552",require:"o",repeat:"y",type:"rangeall"}]},{n:"STACKCOLUMNSPLINES",t:"3",m:[1,5],p:[{example:"A1:A20",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"},{example:"100",require:"o",repeat:"n",type:"rangeall"},{example:"#97b552",require:"o",repeat:"y",type:"rangeall"}]},{n:"BARSPLINES",t:"3",m:[1,6],p:[{example:"A1:A20",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"},{example:"#fc5c5c",require:"o",repeat:"n",type:"rangeall"},{example:"#97b552",require:"o",repeat:"n",type:"rangeall"},{example:"100",require:"o",repeat:"n",type:"rangeall"},{example:"#97b552",require:"o",repeat:"y",type:"rangeall"}]},{n:"STACKBARSPLINES",t:"3",m:[1,5],p:[{example:"A1:A20",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"},{example:"100",require:"o",repeat:"n",type:"rangeall"},{example:"#97b552",require:"o",repeat:"y",type:"rangeall"}]},{n:"DISCRETESPLINES",t:"3",m:[1,4],p:[{example:"A1:A20",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"},{example:"#2ec7c9",require:"o",repeat:"n",type:"rangeall"},{example:"#fc5c5c",require:"o",repeat:"n",type:"rangeall"}]},{n:"TRISTATESPLINES",t:"3",m:[1,6],p:[{example:"A1:A20",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"},{example:"#fc5c5c",require:"o",repeat:"n",type:"rangeall"},{example:"#97b552",require:"o",repeat:"n",type:"rangeall"},{example:"#999",require:"o",repeat:"n",type:"rangeall"},{example:"#97b552",require:"o",repeat:"y",type:"rangeall"}]},{n:"PIESPLINES",t:"3",m:[1,5],p:[{example:"A1:A20",require:"m",repeat:"n",type:"rangeall"},{example:"0",require:"o",repeat:"n",type:"rangeall"},{example:"0",require:"o",repeat:"n",type:"rangeall"},{example:"#000",require:"o",repeat:"n",type:"rangeall"},{example:"#97b552",require:"o",repeat:"y",type:"rangeall"}]},{n:"BOXSPLINES",t:"3",m:[1,4],p:[{example:"A1:A20",require:"m",repeat:"n",type:"rangeall"},{example:"1.5",require:"o",repeat:"n",type:"rangeall"},{example:"10",require:"o",repeat:"n",type:"rangeall"},{example:"1.5",require:"o",repeat:"n",type:"rangeall"}]},{n:"BULLETSPLINES",t:"3",m:[2,3],p:[{example:"10",require:"m",repeat:"n",type:"rangeall"},{example:"8",require:"m",repeat:"n",type:"rangeall"},{example:"12",require:"o",repeat:"y",type:"rangeall"}]},{n:"COMPOSESPLINES",t:"3",m:[1,1],p:[{example:"PIESPLINES(A1:A20)",require:"m",repeat:"y",type:"rangeall"}]},{n:"SORT",t:"14",m:[1,4],p:[{example:"A2:A17",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"o",repeat:"n",type:"rangenumber"},{example:"-1",require:"o",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"FILTER",t:"14",m:[2,3],p:[{example:"A5:D20",require:"m",repeat:"n",type:"range"},{example:"1",require:"m",repeat:"n",type:"range"},{example:'""',require:"o",repeat:"n",type:"rangeall"}]},{n:"UNIQUE",t:"14",m:[1,3],p:[{example:"A2:B26",require:"m",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"},{example:"FALSE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"RANDARRAY",t:"14",m:[0,2],p:[{example:"1",require:"o",repeat:"n",type:"rangenumber"},{example:"1",require:"o",repeat:"n",type:"rangenumber"}]},{n:"SEQUENCE",t:"14",m:[1,4],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"o",repeat:"n",type:"rangenumber"},{example:"1",require:"o",repeat:"n",type:"rangenumber"},{example:"1",require:"o",repeat:"n",type:"rangenumber"}]},{n:"EVALUATE",t:"3",m:[1,1],p:[{example:'"A1+5*2^2"',require:"m",repeat:"n",type:"rangeall"}]},{n:"REMOTE",t:"5",m:[1,1],p:[{example:"SUM(A1:A10000000)",require:"m",repeat:"n",type:"string"}]}]});var Vm,qm=De(()=>{Om();Vm=e=>(rd.forEach(n=>{let t=e[n.n];n.d=t.d,n.a=t.a,n.p.forEach((l,a)=>{Object.assign(l,t.p[a])})}),rd)});var Mk,Hm,jm=De(()=>{Lm();je();yt();qm();Mk=function(e){let n=te(),t=[...Vm(n.functionlist)];for(let a=0;a{$("#luckysheet-icon-undo")[e?"removeClass":"addClass"]("disabled")},10)}function Bk(e){clearTimeout(Um),Um=setTimeout(()=>{$("#luckysheet-icon-redo")[e?"removeClass":"addClass"]("disabled")},10)}var Xm,Um,Wm,Gm=De(()=>{dt();je();Xl();wt();en();Wm=function(){Os(d,"jfredo",(e,n,t,l)=>{n!=="length"&&$e.createHookFunction("updated",t),Ek(d.jfredo.length)}),Os(d,"jfundo",(e,n,t,l)=>{Bk(d.jfundo.length)}),Os(d,"asyncLoad",(e,n,t,l)=>{n==="length"&&t===0&&$e.createHookFunction("workbookCreateAfter",js())})}});function nd(){d.cellMainSrollBarSize=0;let e=!1,n={},t=!1,l=null;$(document).on("touchstart","#luckysheet-grid-window-1",function(a){clearInterval(l),e=!0;let o=a.originalEvent.targetTouches[0];n={x:o.pageX,y:o.pageY,vy:0,moveType:"y"}}),$(document).on("touchmove","#luckysheet-grid-window-1",function(a){if(a.originalEvent.targetTouches.length>1||a.scale&&a.scale!==1)return;let o=a.originalEvent.targetTouches[0];if(e){let s=o.pageX-n.x,u=o.pageY-n.y;n.x=o.pageX,n.y=o.pageY;let f=$("#luckysheet-scrollbar-x").scrollLeft(),A=$("#luckysheet-scrollbar-y").scrollTop();f-=s,A-=u,f<0&&(f=0),A<0&&(A=0),$("#luckysheet-scrollbar-y").scrollTop(A),n.vy_y=u,n.scrollTop=A,$("#luckysheet-scrollbar-x").scrollLeft(f),n.vy_x=s,n.scrollLeft=f}else if(t){let s=Ke(o.pageX,o.pageY),u=s[0]+$("#luckysheet-cell-main").scrollLeft(),f=s[1]+$("#luckysheet-cell-main").scrollTop(),A=Tt(f),h=A[1],g=A[0],p=A[2],v=xt(u),y=v[1],b=v[0],k=v[2],w=$.extend(!0,{},d.luckysheet_select_save[d.luckysheet_select_save.length-1]),C=0,I=0,x=[];w.top>g?(C=g,I=w.top+w.height-g,w.row[1]>w.row_focus&&(w.row[1]=w.row_focus),x=[p,w.row[1]]):w.top==g?(C=g,I=w.top+w.height-g,x=[p,w.row[0]]):(C=w.top,I=h-w.top-1,w.row[0]b?(T=b,R=w.left+w.width-b,w.column[1]>w.column_focus&&(w.column[1]=w.column_focus),D=[k,w.column[1]]):w.left==b?(T=b,R=w.left+w.width-b,D=[k,w.column[0]]):(T=w.left,R=y-w.left-1,w.column[0]>31)*2+1)*.25,u=Math.abs(n.vy_y),f=((u>>31)*2+1)*.25;(o>0||u>0)&&(l=setInterval(function(){o-=s,u-=f,o<=0&&(o=0),u<=0&&(u=0),n.vy_y>0?n.scrollTop-=u:n.scrollTop+=u,$("#luckysheet-scrollbar-y").scrollTop(n.scrollTop),n.vy_x>0?n.scrollLeft-=o:n.scrollLeft+=o,$("#luckysheet-scrollbar-x").scrollLeft(n.scrollLeft),o<=0&&u<=0&&clearInterval(l)},20))}e=!1,t=!1}),$(document).on("touchstart",".luckysheet-cs-touchhandle",function(a){t=!0,e=!1,a.stopPropagation()}),document.addEventListener("touchmove",function(a){a.preventDefault()},{passive:!1})}var Ym=De(()=>{El();el();ll();Kl();je()});var Pk,ad,Qm=De(()=>{dt();Wt();el();rl();tl();zr();Qt();_t();je();yt();Pk={createDialog:function(){let e=this,n=te(),t=n.splitText,l=n.punctuation,a=n.button;$("#luckysheet-modal-dialog-mask").show(),$("#luckysheet-splitColumn-dialog").remove();let o='
'+t.splitDelimiters+'
'+t.splitDataPreview+'
';$("body").append(we(At,{id:"luckysheet-splitColumn-dialog",addclass:"luckysheet-splitColumn-dialog",title:t.splitTextTitle,content:o,botton:'",style:"z-index:100003"}));let s=$("#luckysheet-splitColumn-dialog").find(".luckysheet-modal-dialog-content").css("min-width",400).end(),u=s.outerHeight(),f=s.outerWidth(),A=$(window).width(),h=$(window).height(),g=$(document).scrollLeft(),p=$(document).scrollTop();$("#luckysheet-splitColumn-dialog").css({left:(A+g-f)/2,top:(h+p-u)/3}).show();let v=e.getDataArr();e.dataPreview(v)},init:function(){let e=this,t=te().splitText;$(document).off("change.SPCinpcheckbox").on("change.SPCcheckbox","#luckysheet-splitColumn-dialog .box input[type='checkbox']",function(){let l=e.getRegStr(),a=e.getDataArr(l);e.dataPreview(a)}),$(document).off("keyup.SPCinptext").on("keyup.SPCinptext","#luckysheet-splitColumn-dialog .box input[type='text']",function(){if($(this).siblings("input[type='checkbox']").is(":checked")){let l=e.getRegStr(),a=e.getDataArr(l);e.dataPreview(a)}}),$(document).off("click.SPCconfirm").on("click.SPCconfirm","#luckysheet-splitColumn-dialog #luckysheet-splitColumn-dialog-confirm",function(){$("#luckysheet-modal-dialog-mask").hide(),$("#luckysheet-splitColumn-dialog").hide();let l=e.getRegStr(),a=e.getDataArr(l),o=d.luckysheet_select_save[0].row[0],s=d.luckysheet_select_save[0].column[0];if(a[0].length==1)return;let u=!1;for(let f=0;f"+e[l][o]+"";n+=""+a+""}let t=""+n+"
";$("#luckysheet-splitColumn-dialog #splitColumnData").append(t)},getRegStr:function(){let e="",n=0;return $("#luckysheet-splitColumn-dialog .box input[type='checkbox']:checked").each(function(t,l){let a=$(l).attr("id");if(a=="splitColumn_type_01")e+="\\t",n++;else if(a=="splitColumn_type_02")n>0&&(e+="|"),e+=";",n++;else if(a=="splitColumn_type_03")n>0&&(e+="|"),e+=",",n++;else if(a=="splitColumn_type_04")n>0&&(e+="|"),e+="\\s",n++;else if(a=="splitColumn_type_05"){let o=$(l).siblings("input[type='text']").val().trim();o!=""&&(n>0&&(e+="|"),e+=o)}else a=="splitColumn_type_06"&&(e="["+e+"]+")}),e},getDataArr:function(e){let n=this,t=[],l=d.luckysheet_select_save[0].row[0],a=d.luckysheet_select_save[0].row[1],o=d.luckysheet_select_save[0].column[0];if(e!=null&&e!=""){let s=new RegExp(e,"g"),u=[];for(let h=l;h<=a;h++){let g=[],p=d.flowdata[h][o],v;p!=null&&p.m!=null?v=p.m:v=Fe(h,o,d.flowdata),v==null&&(v=""),g=v.toString().split(s),u.push(g)}let f=u.length,A=0;for(let h=0;hA&&(A=u[h].length);t=n.getNullData(f,A);for(let h=0;h0){let t=ve.getSheetByIndex(),l=t.data;if(l!=null)for(let a=0;a`,imageClass:"loadingAnimation"},column:60,row:84,allowCopy:!0,showtoolbar:!0,showinfobar:!0,showsheetbar:!0,showstatisticBar:!0,pointEdit:!1,pointEditUpdate:null,pointEditZoom:1,data:[{name:"Sheet1",color:"",status:"1",order:"0",data:[],config:{},index:0},{name:"Sheet2",color:"",status:"0",order:"1",data:[],config:{},index:1},{name:"Sheet3",color:"",status:"0",order:"2",data:[],config:{},index:2}],title:"Luckysheet Demo",userInfo:!1,userMenuItem:[{url:"www.baidu.com",icon:'',name:"\u6211\u7684\u8868\u683C"},{url:"www.baidu.com",icon:'',name:"\u9000\u51FA\u767B\u9646"}],myFolderUrl:"www.baidu.com",config:{},fullscreenmode:!0,devicePixelRatio:window.devicePixelRatio,allowEdit:!0,loadUrl:"",loadSheetUrl:"",gridKey:"",updateUrl:"",updateImageUrl:"",allowUpdate:!1,functionButton:"",showConfigWindowResize:!0,enableAddRow:!0,enableAddBackTop:!0,autoFormatw:!1,accuracy:void 0,pageInfo:{queryExps:"",reportId:"",fields:"",mobile:"",frezon:"",currentPage:"",totalPage:10,pageUrl:""},editMode:!1,beforeCreateDom:null,fireMousedown:null,lang:"en",plugins:[],forceCalculation:!1,rowHeaderWidth:46,columnHeaderHeight:20,defaultColWidth:73,defaultRowHeight:19,defaultFontSize:10,limitSheetNameLength:!0,defaultSheetNameMaxLength:31,sheetFormulaBar:!0,showtoolbarConfig:{},showsheetbarConfig:{},showstatisticBarConfig:{},cellRightClickConfig:{},sheetRightClickConfig:{},imageUpdateMethodConfig:{}}});var Nm=kl((Xs,zm)=>{(function(e,n){typeof Xs=="object"&&typeof zm!="undefined"?n(Xs):typeof define=="function"&&define.amd?define(["exports"],n):(e=typeof globalThis!="undefined"?globalThis:e||self,n(e.zh={}))})(Xs,function(e){"use strict";var n=typeof window!="undefined"&&window.flatpickr!==void 0?window.flatpickr:{l10ns:{}},t={weekdays:{shorthand:["\u5468\u65E5","\u5468\u4E00","\u5468\u4E8C","\u5468\u4E09","\u5468\u56DB","\u5468\u4E94","\u5468\u516D"],longhand:["\u661F\u671F\u65E5","\u661F\u671F\u4E00","\u661F\u671F\u4E8C","\u661F\u671F\u4E09","\u661F\u671F\u56DB","\u661F\u671F\u4E94","\u661F\u671F\u516D"]},months:{shorthand:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"],longhand:["\u4E00\u6708","\u4E8C\u6708","\u4E09\u6708","\u56DB\u6708","\u4E94\u6708","\u516D\u6708","\u4E03\u6708","\u516B\u6708","\u4E5D\u6708","\u5341\u6708","\u5341\u4E00\u6708","\u5341\u4E8C\u6708"]},rangeSeparator:" \u81F3 ",weekAbbreviation:"\u5468",scrollTitle:"\u6EDA\u52A8\u5207\u6362",toggleTitle:"\u70B9\u51FB\u5207\u6362 12/24 \u5C0F\u65F6\u65F6\u5236"};n.l10ns.zh=t;var l=n.l10ns;e.Mandarin=t,e.default=l,Object.defineProperty(e,"__esModule",{value:!0})})});var X,Eo,Rk,Fm,Lm=De(()=>{yl();po();mu();wt();ll();fu();jt();mo();tl();Kr();Pt();_t();Fl();za();Qt();dt();je();X=Ol(En()),Eo=Ol(Ma()),Rk={DISPIMG:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e0)for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ea)&&(a=parseFloat(t[e]))}return a==null?0:a}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},MIN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e2)return m.error.v;if(parseInt(o)==0)return l;if(parseInt(o)==1)return(0,X.default)(l).format("YYYY-MM-DD");if(parseInt(o)==2)return(0,X.default)(l).format("YYYY\u5E74M\u6708D\u65E5")}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},PROVINCE_BY_IDCARD:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=0;e--)if(s>=u[e][1])return u[e][0];return"\u672A\u627E\u5230\u5339\u914D\u661F\u5EA7\u4FE1\u606F"}catch(A){var f=A;return f=m.errorInfo(f),[m.error.v,f]}},ANIMAL_BY_IDCARD:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e0&&l<0?m.error.nm:Math.ceil(t/l)*l):m.error.v}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},ATAN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e1?m.error.nm:Math.acos(t)):m.error.v}catch(a){var l=a;return l=m.errorInfo(l),[m.error.v,l]}},ACOSH:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=1?m.error.nm:Math.log((1+t)/(1-t))/2):m.error.v}catch(a){var l=a;return l=m.errorInfo(l),[m.error.v,l]}},ATAN2:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e1)return m.error.v;if(t.rowl>1){var l=m.getcellrange(t.startCell),a=l.row[0];if(window.luckysheetCurrentRowa+t.rowl-1)return m.error.v;var o=t.data[window.luckysheetCurrentRow-a][0]}else var o=t.data;return o==null||me(o.v)?0:V(o.v)?Math.floor(parseFloat(o.v)):m.error.v}else{if(N(t)=="boolean"){if(t.toString().toLowerCase()=="true")return 1;if(t.toString().toLowerCase()=="false")return 0}return V(t)?Math.floor(parseFloat(t)):m.error.v}}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},ISEVEN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e1;){if(u%2){for(e=3,s=Math.floor(Math.sqrt(u));e<=s&&u%e;e+=2);f=e<=s?e:u}else f=2;for(u/=f,A*=f,e=t.length;e;t[--e]%f==0&&(t[e]/=f)===1&&t.splice(e,1));}return A>=Math.pow(2,53)?m.error.nm:A}catch(g){var h=g;return h=m.errorInfo(h),[m.error.v,h]}},LN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e0?a:-a}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},MROUND:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=0?l:-l}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},SUMSQ:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e0)for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e111||f>11&&f<101?a.push(m.error.v):a.push(h(f))):a.push(m.error.v)}u.push(a)}else for(var e=0;e111||f>11&&f<101?u.push(m.error.v):u.push(h(f))):u.push(m.error.v)}return u}else return H(l)?l:V(l)?(l=parseInt(l),l<1||l>111||l>11&&l<101?m.error.v:h(l)):m.error.v}catch(h){var A=h;return A=m.errorInfo(A),[m.error.v,A]}},ASIN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e1?m.error.nm:Math.asin(t)):m.error.v}catch(a){var l=a;return l=m.errorInfo(l),[m.error.v,l]}},COUNTIF:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=!*?]/.test(p)||(p='=="'+p+'"'),p=p.replace("<>","!=");var v=0;if(N(g)=="array"){for(var y=0;y-1||p.indexOf("?")>-1?m.isWildcard(k,p)&&v++:typeof k!="string"?new Function("return "+k+p)()&&v++:new Function('return "'+k+'"'+p)()&&v++}}else if(g!=null&&!me(g.v)){var k=g.v;p.indexOf("*")>-1||p.indexOf("?")>-1?m.isWildcard(k,p)&&v++:typeof k!="string"?new Function("return "+k+p)()&&v++:new Function('return "'+k+'"'+p)()&&v++}return v};var t=arguments[0],l;if(N(t)=="object"&&t.startCell!=null)l=t.data;else return m.error.v;var a=arguments[1],o;if(N(a)=="array")if(o=[],N(a[0])=="array"){if(!M.isDyadicArr(a))return m.error.v;for(var e=0;e1||a.coll>1)return 0;o=a.data.v}else o=a;if(N(o)=="array"){var f=[];if(N(o[0])=="array")for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;try{return Math.floor(Math.random()*1e9)/1e9}catch(n){var e=n;return e=m.errorInfo(e),[m.error.v,e]}},COUNTUNIQUE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e0?l:-l}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},EXP:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;try{return Math.PI}catch(n){var e=n;return e=m.errorInfo(e),[m.error.v,e]}},FLOOR:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e0&&l<0)return m.error.nm;var a=-Math.floor(Math.log(Math.abs(l))/Math.log(10));return t>=0?Math.floor(t/l)*l*Math.pow(10,a)/Math.pow(10,a):-(Math.ceil(Math.abs(t)/l)*l*Math.pow(10,a))/Math.pow(10,a)}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},GCD:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=Math.pow(2,53))return m.error.nm;for(var e=1;e=Math.pow(2,53))return m.error.nm;for(;a&&o;)a>o?a%=o:o%=a;a+=o}return a}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},RANDBETWEEN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;el?m.error.nm:t+Math.ceil((l-t+1)*Math.random())-1):m.error.v}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},ROUND:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e0?1:-1;return a*Math.round(Math.abs(t)*Math.pow(10,l))/Math.pow(10,l)}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},ROUNDDOWN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e0?1:-1;return a*Math.floor(Math.abs(t)*Math.pow(10,l))/Math.pow(10,l)}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},ROUNDUP:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e0?1:-1;return a*Math.ceil(Math.abs(t)*Math.pow(10,l))/Math.pow(10,l)}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},SERIESSUM:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e0)return 1;if(t==0)return 0;if(t<0)return-1}catch(a){var l=a;return l=m.errorInfo(l),[m.error.v,l]}},SIN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e0?1:-1;return a*Math.floor(Math.abs(t)*Math.pow(10,l))/Math.pow(10,l)}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},QUOTIENT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e-1?m.error.nm:Math.pow(t,l)):m.error.v}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},SUMIFS:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;eMath.min(l,a)||to?m.error.nm:a<=0||a>o?m.error.nm:o<=0?m.error.nm:s?A(t,l,a,o):f(t,l,a,o)}catch(f){var u=f;return u=m.errorInfo(u),[m.error.v,u]}},INTERCEPT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e1||arguments[1].coll>1)return m.error.v;var u=arguments[1].data;if(u==null||me(u.v))var s=0;else var s=u.v}else s=arguments[1];if(N(s)=="array"){if(l.length==0)return m.error.nm;for(var f=[],e=0;el.length){f.push(m.error.nm);continue}f.push(t.sort(function(g,p){return p-g})[s[e]-1])}return f}else return V(s)?(s=Math.ceil(parseFloat(s)),l.length==0?m.error.nm:s<=0||s>l.length?m.error.nm:t.sort(function(h,g){return g-h})[s-1]):m.error.v}catch(h){var A=h;return A=m.errorInfo(A),[m.error.v,A]}},STDEVA:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e1?(2*o.indexOf(t)+h+1)/2:o.indexOf(t)+1}catch(p){var g=p;return g=m.errorInfo(g),[m.error.v,g]}},PERCENTRANK_EXC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=A[e]&&(uthis.m[1])return m.error.na;for(var e=0;e=A[e]&&(uthis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=1?m.error.nm:Math.log((1+t)/(1-t))/2):m.error.v}catch(a){var l=a;return l=m.errorInfo(l),[m.error.v,l]}},MODE_SNGL:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ef&&(f=s[A],u=[]),s[A]==f&&(u[u.length]=A);if(f<=1)return m.error.na;for(var h=a.indexOf(u[0]),g=0;gthis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;el?m.error.nm:a<0||a>1?m.error.nm:o?jStat.binomial.cdf(t,l,a):jStat.binomial.pdf(t,l,a)}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},BINOM_INV:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e1)return m.error.nm;if(a<0||a>1)return m.error.nm;for(var o=0;o<=t;){if(jStat.binomial.cdf(o,t,l)>=a)return o;o++}}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},CONFIDENCE_NORM:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=1?m.error.nm:l<=0?m.error.nm:a<1?m.error.nm:jStat.normalci(1,t,l,a)[1]-1):m.error.v}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},CORREL:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e1)return m.error.nm;a.sort(function(p,v){return p-v});var u=window.luckysheet_function.FLOOR.f(a.length*s,2)/2,f=h(a,u);return f=g(f,u),f=jStat.mean(f),f}catch(h){var A=h;return A=m.errorInfo(A),[m.error.v,A]}},PERCENTILE_EXC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=1)return m.error.nm;a=a.sort(function(g,p){return g-p});var u=a.length;if(s<1/(u+1)||s>1-1/(u+1))return m.error.nm;var f=s*(u+1)-1,A=Math.floor(f);return f===A?a[f]:a[A]+(f-A)*(a[A+1]-a[A])}catch(g){var h=g;return h=m.errorInfo(h),[m.error.v,h]}},PERCENTILE_INC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e1)return m.error.nm;a=a.sort(function(g,p){return g-p});var u=a.length,f=s*(u-1),A=Math.floor(f);return f===A?a[f]:a[A]+(f-A)*(a[A+1]-a[A])}catch(g){var h=g;return h=m.errorInfo(h),[m.error.v,h]}},PEARSON:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=1?m.error.nm:jStat.normal.inv(t,0,1)):m.error.v}catch(a){var l=a;return l=m.errorInfo(l),[m.error.v,l]}},NORM_S_DIST:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=1?m.error.nm:a<=0?m.error.nm:jStat.normal.inv(t,l,a)}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},NORM_DIST:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e1?m.error.nm:t<0||l<1?m.error.nm:o?jStat.negbin.cdf(t,l,a):jStat.negbin.pdf(t,l,a)}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},MINA:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=1?m.error.nm:a<=0?m.error.nm:jStat.lognormal.inv(t,l,a)):m.error.v}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},LOGNORM_DIST:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e1))return m.error.nm}if(s!=1)return m.error.nm;var A=M.getFirstValue(arguments[2]);if(H(A))return A;if(!V(A))return m.error.v;A=parseFloat(A);var h=A;if(arguments.length==4){if(h=M.getFirstValue(arguments[3]),H(h))return h;if(!V(h))return m.error.v;h=parseFloat(h)}for(var g=0,e=0;e=A&&a[e]<=h&&(g+=o[e]);return g}catch(v){var p=v;return p=m.errorInfo(p),[m.error.v,p]}},QUARTILE_EXC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=4)return m.error.nm;switch(o){case 1:return window.luckysheet_function.PERCENTILE_EXC.f(l,.25);case 2:return window.luckysheet_function.PERCENTILE_EXC.f(l,.5);case 3:return window.luckysheet_function.PERCENTILE_EXC.f(l,.75)}}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},QUARTILE_INC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;switch(o){case 0:return Math.min.apply(Math,l);case 1:return window.luckysheet_function.PERCENTILE_INC.f(l,.25);case 2:return window.luckysheet_function.PERCENTILE_INC.f(l,.5);case 3:return window.luckysheet_function.PERCENTILE_INC.f(l,.75);case 4:return Math.max.apply(Math,l)}}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},POISSON_DIST:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e1?m.error.nm:l<1?m.error.nm:jStat.studentt.inv(t,l)):m.error.v}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},T_INV_2T:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e1?m.error.nm:l<1?m.error.nm:Math.abs(jStat.studentt.inv(t/2,l))):m.error.v}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},T_TEST:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;el.length?m.error.nm:l.sort(function(u,f){return u-f})[o-1]):m.error.v}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},SLOPE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=3){if(a=M.getFirstValue(arguments[2]),H(a))return a;if(!V(a))return m.error.v;a=parseInt(a)}var o=!0;if(arguments.length>=4&&(o=M.getCellBoolen(arguments[3]),H(o)))return o;if(t<=0||l<=0)return m.error.v;if([1,2,3,4].indexOf(a)==-1)return m.error.v;var s;if(o)switch(l=rt(l-1),a){case 1:s="$"+l+"$"+t;break;case 2:s=l+"$"+t;break;case 3:s="$"+l+t;break;case 4:s=l+t;break}else switch(a){case 1:s="R"+t+"C"+l;break;case 2:s="R"+t+"C["+l+"]";break;case 3:s="R["+t+"]C"+l;break;case 4:s="R["+t+"]C["+l+"]";break}if(arguments.length==5){var u=M.getFirstValue(arguments[4]);return H(u)?u:u+"!"+s}else return s}catch(A){var f=A;return f=m.errorInfo(f),[m.error.v,f]}},INDIRECT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=f.length||g<0||g>=f[0].length)return m.error.r;if(f[h][g]==null||me(f[h][g].v))return 0;let p=f[h][g].v;if(m.execFunctionGlobalData!=null){let y=m.execFunctionGlobalData[h+"_"+g+"_"+d.calculateSheetIndex];y!=null&&(p=y.v)}return{sheetName:u.name,startCell:t,rowl:h,coll:g,data:p}}else return m.error.r}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},ROW:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=4){if(o=M.getFirstValue(arguments[3]),H(o))return o;if(!V(o))return m.error.v;o=parseInt(o)}var s=arguments[0].coll;if(arguments.length==5){if(s=M.getFirstValue(arguments[4]),H(s))return s;if(!V(s))return m.error.v;s=parseInt(s)}if(o<1||s<1)return m.error.r;var u=m.getcellrange(t),f=u.row[0],A=u.column[0];f+=l,A+=a;var h=f+o-1,g=A+s-1;let C=Vt(),I=Q(d.calculateSheetIndex),x=C[I].data;if(f<0||h>=x.length||A<0||g>=x[0].length)return m.error.r;for(var p=[],v=f;v<=h;v++){for(var y=[],b=A;b<=g;b++)if(m.execFunctionGlobalData!=null&&m.execFunctionGlobalData[v+"_"+b+"_"+d.calculateSheetIndex]!=null){let R=m.execFunctionGlobalData[v+"_"+b+"_"+d.calculateSheetIndex];R!=null?y.push(R.v):y.push(0)}else x[v][b]!=null&&!me(x[v][b].v)?y.push(x[v][b].v):y.push(0);p.push(y)}return{sheetName:w,startCell:mt(d.calculateSheetIndex,{row:[f,h],column:[A,g]}),rowl:f,coll:A,data:p}}catch(w){var k=w;return k=m.errorInfo(k),[m.error.v,k]}},MATCH:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e1&&l.coll>1)return m.error.na;if(l.data!=null)if(N(l.data)=="array")for(var e=0;ef&&(u=A+1,f=a[A]):(u=A+1,f=a[A]))}else if(s===0){if(typeof t=="string"){if(t=t.replace(/\?/g,"."),a[A].toLowerCase().match(t.toLowerCase()))return A+1}else if(a[A]===t)return A+1}else if(s===-1){if(a[A]===t)return A+1;a[A]>t&&(f?a[A]this.m[1])return m.error.na;for(var e=0;ea[0].length)return m.error.r;if(f){a=Jr(a,0,!0);for(var A=0;Athis.m[1])return m.error.na;for(var e=0;e3&&(u=!!arguments[3]),s>o.rowl)return[m.error.v,"\u7D22\u5F15\u8D85\u8FC7\u4E86\u8303\u56F4\u7684\u957F\u5EA6\uFF0C"+o[0].length];if(s<1)return[m.error.v,"\u7D22\u5F15\u5FC5\u987B\u5927\u4E8E1"];for(var f=m.error.na,A=0;A-1&&(f=g);else if(m.acompareb(h,a))return f=g,f}return f}catch(v){var p=v;return p=m.errorInfo(p),[m.error.v,p]}},LOOKUP:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ea||V(u)&&u>o)return m.error.r;if(p){var f=m.getcellrange(t.startCell),A=f.row[0],h=f.column[0];let v=l;s==0||u==0?(s==0?(v=l[0],s=1):v=l[s-1],V(u)?u==0?(v=v[0],u=1):v=v[u-1]:u=1):(V(s)||(s=1),V(u)||(u=1),v=l[s-1][u-1]);let y=A+s-1,b=h+u-1;return{sheetName:t.sheetName,startCell:mt(d.calculateSheetIndex,{row:[y,y],column:[b,b]}),rowl:y,coll:b,data:v}}else return V(u)?(u=parseInt(u),s<=0||u<=0?m.error.v:l[s-1][u-1]):m.error.v}catch(p){var g=p;return g=m.errorInfo(g),[m.error.v,g]}},GETPIVOTDATA:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;earguments.length-1)return m.error.v;var l=arguments[t];if(N(l)=="array")return N(l[0])=="array"&&!M.isDyadicArr(l)?m.error.v:l;if(N(l)=="object"&&l.startCell!=null){if(l.data==null)return 0;if(N(l.data)=="array"){var a=M.getCellDataDyadicArr(l.data,"number");return a}else return me(l.data.v)?0:l.data.v}else return l}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},HYPERLINK:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e32767)return m.error.nm;if(t>24&&(t=t%24),l<0||l>32767)return m.error.nm;if(a<0||a>32767)return m.error.nm;var o=(0,X.default)().set({hour:t,minute:l,second:a});return(0,X.default)(o).format("h:mm:ss a")}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},TIMEVALUE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=3&&(o=arguments[2],!(typeof o=="string"&&o.length=="7"&&/^[0-1]{7}$/g.test(o)))){if(o=M.getFirstValue(arguments[2]),H(o))return o;if(!V(o))return m.error.v;if(o=parseInt(o),o<1||o>7&&o<11||o>17)return m.error.nm;o=t[o]}var s=[];if(arguments.length==4&&(s=M.getCellrangeDate(arguments[3]),H(s)))return s;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=o?1:0,u=(0,X.default)(l).isoWeeks()+s;return u}catch(A){var f=A;return f=m.errorInfo(f),[m.error.v,f]}},WEEKDAY:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=1e4)return m.error.nm;t>=0&&t<=1899&&(t=t+1900);var o=(0,X.default)().set({year:t,month:l-1,date:a});return(0,X.default)(o).year()<1900?m.error.nm:(0,X.default)(o).format("YYYY-MM-DD")}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},DATEVALUE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=3&&(o=arguments[2],!(typeof o=="string"&&o.length=="7"&&/^[0-1]{7}$/g.test(o)))){if(o=M.getFirstValue(arguments[2]),H(o))return o;if(!V(o))return m.error.v;if(o=parseInt(o),o<1||o>7&&o<11||o>17)return m.error.nm;o=t[o]}var s=[];if(arguments.length==4&&(s=M.getCellrangeDate(arguments[3]),H(s)))return s;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;var o=(0,X.default)(t).date(),s=(0,X.default)(t).month()+1,u=(0,X.default)(t).year(),f=(0,X.default)(l).date(),A=(0,X.default)(l).month()+1,h=(0,X.default)(l).year(),g;switch(a){case 0:o===31&&f===31?(o=30,f=30):o===31?o=30:o===30&&f===31&&(f=30),g=(f+A*30+h*360-(o+s*30+u*360))/360;break;case 1:var p=365;if(u===h||u+1===h&&(s>A||s===A&&o>=f))return(u===h&&M.isLeapYear(u)||M.feb29Between(t,l)||A===1&&f===29)&&(p=366),(0,X.default)(l).diff((0,X.default)(t),"days")/p;var v=h-u+1,y=((0,X.default)().set({year:h+1,month:0,date:1})-(0,X.default)().set({year:u,month:0,date:1}))/1e3/60/60/24,b=y/v;g=(0,X.default)(l).diff((0,X.default)(t),"days")/b;break;case 2:g=(0,X.default)(l).diff((0,X.default)(t),"days")/360;break;case 3:g=(0,X.default)(l).diff((0,X.default)(t),"days")/365;break;case 4:g=(f+A*30+h*360-(o+s*30+u*360))/360;break}return g}catch(w){var k=w;return k=m.errorInfo(k),[m.error.v,k]}},TODAY:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e9&&(l=9);for(var a="0.",e=1;e<=l;e++)a+="0";var o=t>0?1:-1;return o*Math.floor(Math.abs(t)*Math.pow(10,l))/Math.pow(10,l)}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},DOLLARDE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e12)return m.error.nm;if(o>a)return m.error.nm;if(l>=t)return 0;for(var u=(1-Math.pow(l/t,1/a)).toFixed(3),f=t*u*s/12,A=f,h=0,g=o===a?a-1:o,e=2;e<=g;e++)h=(t-A)*u,A+=h;if(o===1)var p=f;else if(o===a)var p=(t-A)*u;else var p=h;return p}catch(y){var v=y;return v=m.errorInfo(v),[m.error.v,v]}},DDB:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ea)return m.error.nm;if(l>=t)return 0;for(var u=0,f=0,e=1;e<=o;e++)f=Math.min((t-u)*(s/a),t-l-u),u+=f;return f}catch(h){var A=h;return A=m.errorInfo(A),[m.error.v,A]}},RATE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=4){if(o=M.getFirstValue(arguments[3]),H(o))return o;if(!V(o))return m.error.v;o=parseFloat(o)}var s=0;if(arguments.length>=5){if(s=M.getFirstValue(arguments[4]),H(s))return s;if(!V(s))return m.error.v;s=parseFloat(s)}var u=.1;if(arguments.length==6){if(u=M.getFirstValue(arguments[5]),H(u))return u;if(!V(u))return m.error.v;u=parseFloat(u)}if(s!=0&&s!=1)return m.error.nm;for(var f=1e-6,A=100,h=0,g=!1,p=u;hthis.m[1])return m.error.na;for(var e=0;es)return m.error.nm;if(u!=0&&u!=1)return m.error.nm;var f=window.luckysheet_function.PMT.f(t,l,a,0,u),A=0;o===1&&(u===0?A=f+a*t:A=f,o++);for(var e=o;e<=s;e++)u>0?A+=f-(window.luckysheet_function.FV.f(t,e-2,f,a,1)-f)*t:A+=f-window.luckysheet_function.FV.f(t,e-1,f,a,0)*t;return A}catch(g){var h=g;return h=m.errorInfo(h),[m.error.v,h]}},COUPNUM:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var s=(0,X.default)(t).date(),u=(0,X.default)(t).month()+1,f=(0,X.default)(t).year(),A=(0,X.default)(l).date(),h=(0,X.default)(l).month()+1,g=(0,X.default)(l).year(),p;switch(o){case 0:s===31&&A===31?(s=30,A=30):s===31?s=30:s===30&&A===31&&(A=30),p=(A+h*30+g*360-(s+u*30+f*360))/(360/a);break;case 1:var v=365;if(f===g||f+1===g&&(u>h||u===h&&s>=A))return(f===g&&M.isLeapYear(f)||M.feb29Between(t,l)||h===1&&A===29)&&(v=366),(0,X.default)(l).diff((0,X.default)(t),"days")/(v/a);var y=g-f+1,b=((0,X.default)().set({year:g+1,month:0,date:1})-(0,X.default)().set({year:f,month:0,date:1}))/1e3/60/60/24,k=b/y;p=(0,X.default)(l).diff((0,X.default)(t),"days")/(k/a);break;case 2:p=(0,X.default)(l).diff((0,X.default)(t),"days")/(360/a);break;case 3:p=(0,X.default)(l).diff((0,X.default)(t),"days")/(365/a);break;case 4:p=(A+h*30+g*360-(s+u*30+f*360))/(360/a);break}return Math.round(p)}catch(C){var w=C;return w=m.errorInfo(w),[m.error.v,w]}},SYD:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ea?m.error.nm:(t-l)*(a-o+1)*2/(a*(a+1))):m.error.v}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},TBILLEQ:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e0?m.error.nm:(0,X.default)(l)-(0,X.default)(t)>365*24*60*60*1e3?m.error.nm:365*a/(360-a*(0,X.default)(l).diff((0,X.default)(t),"days"))):m.error.v}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},TBILLYIELD:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=0?m.error.nm:(0,X.default)(l)-(0,X.default)(t)>365*24*60*60*1e3?m.error.nm:(100-a)/a*(360/(0,X.default)(l).diff((0,X.default)(t),"days"))):m.error.v}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},TBILLPRICE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e0?m.error.nm:(0,X.default)(l)-(0,X.default)(t)>365*24*60*60*1e3?m.error.nm:100*(1-a*(0,X.default)(l).diff((0,X.default)(t),"days")/360)):m.error.v}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},PV:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=4){if(o=M.getFirstValue(arguments[3]),H(o))return o;if(!V(o))return m.error.v;o=parseFloat(o)}var s=0;if(arguments.length>=5){if(s=M.getFirstValue(arguments[4]),H(s))return s;if(!V(s))return m.error.v;s=parseFloat(s)}if(s!=0&&s!=1)return m.error.nm;if(t===0)var u=-a*l-o;else var u=((1-Math.pow(1+t,l))/t*a*(1+t*s)-o)/Math.pow(1+t,l);return u}catch(A){var f=A;return f=m.errorInfo(f),[m.error.v,f]}},ACCRINT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=7){if(f=M.getFirstValue(arguments[6]),H(f))return f;if(!V(f))return m.error.v;f=parseInt(f)}var A=!0;if(arguments.length==8&&(A=M.getCellBoolen(arguments[7]),H(A)))return A;if(o<=0||s<=0)return m.error.nm;if(u!=1&&u!=2&&u!=4)return m.error.nm;if(f<0||f>4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(a)>=0)return m.error.nm;var h;if((0,X.default)(a)-(0,X.default)(l)>=0&&!A){var g=(0,X.default)(l).date(),p=(0,X.default)(l).month()+1,v=(0,X.default)(l).year(),y=(0,X.default)(a).date(),b=(0,X.default)(a).month()+1,k=(0,X.default)(a).year();switch(f){case 0:g===31&&y===31?(g=30,y=30):g===31?g=30:g===30&&y===31&&(y=30),h=(y+b*30+k*360-(g+p*30+v*360))/360;break;case 1:var w=365;if(v===k||v+1===k&&(p>b||p===b&&g>=y))return(v===k&&M.isLeapYear(v)||M.feb29Between(l,a)||b===1&&y===29)&&(w=366),(0,X.default)(a).diff((0,X.default)(l),"days")/w;var C=k-v+1,I=((0,X.default)().set({year:k+1,month:0,date:1})-(0,X.default)().set({year:v,month:0,date:1}))/1e3/60/60/24,x=I/C;h=(0,X.default)(a).diff((0,X.default)(l),"days")/x;break;case 2:h=(0,X.default)(a).diff((0,X.default)(l),"days")/360;break;case 3:h=(0,X.default)(a).diff((0,X.default)(l),"days")/365;break;case 4:h=(y+b*30+k*360-(g+p*30+v*360))/360;break}}else{var g=(0,X.default)(t).date(),p=(0,X.default)(t).month()+1,v=(0,X.default)(t).year(),y=(0,X.default)(a).date(),b=(0,X.default)(a).month()+1,k=(0,X.default)(a).year();switch(f){case 0:g===31&&y===31?(g=30,y=30):g===31?g=30:g===30&&y===31&&(y=30),h=(y+b*30+k*360-(g+p*30+v*360))/360;break;case 1:var w=365;if(v===k||v+1===k&&(p>b||p===b&&g>=y))return(v===k&&M.isLeapYear(v)||M.feb29Between(t,a)||b===1&&y===29)&&(w=366),(0,X.default)(a).diff((0,X.default)(t),"days")/w;var C=k-v+1,I=((0,X.default)().set({year:k+1,month:0,date:1})-(0,X.default)().set({year:v,month:0,date:1}))/1e3/60/60/24,x=I/C;h=(0,X.default)(a).diff((0,X.default)(t),"days")/x;break;case 2:h=(0,X.default)(a).diff((0,X.default)(t),"days")/360;break;case 3:h=(0,X.default)(a).diff((0,X.default)(t),"days")/365;break;case 4:h=(y+b*30+k*360-(g+p*30+v*360))/360;break}}return s*o*h}catch(R){var T=R;return T=m.errorInfo(T),[m.error.v,T]}},ACCRINTM:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var u=(0,X.default)(t).date(),f=(0,X.default)(t).month()+1,A=(0,X.default)(t).year(),h=(0,X.default)(l).date(),g=(0,X.default)(l).month()+1,p=(0,X.default)(l).year(),v;switch(s){case 0:u===31&&h===31?(u=30,h=30):u===31?u=30:u===30&&h===31&&(h=30),v=(h+g*30+p*360-(u+f*30+A*360))/360;break;case 1:var y=365;if(A===p||A+1===p&&(f>g||f===g&&u>=h))return(A===p&&M.isLeapYear(A)||M.feb29Between(t,l)||g===1&&h===29)&&(y=366),(0,X.default)(l).diff((0,X.default)(t),"days")/y;var b=p-A+1,k=((0,X.default)().set({year:p+1,month:0,date:1})-(0,X.default)().set({year:A,month:0,date:1}))/1e3/60/60/24,w=k/b;v=(0,X.default)(l).diff((0,X.default)(t),"days")/w;break;case 2:v=(0,X.default)(l).diff((0,X.default)(t),"days")/360;break;case 3:v=(0,X.default)(l).diff((0,X.default)(t),"days")/365;break;case 4:v=(h+g*30+p*360-(u+f*30+A*360))/360;break}return o*a*v}catch(I){var C=I;return C=m.errorInfo(C),[m.error.v,C]}},COUPDAYBS:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;for(var s,u=Math.ceil((0,X.default)(l).diff((0,X.default)(t),"months")/(12/a))+1,e=1;e<=u;e++){var f=(0,X.default)(l).subtract(12/a*e,"months");if(f<=(0,X.default)(t)){s=f;break}}var A;switch(o){case 0:var h=(0,X.default)(s).date(),g=(0,X.default)(s).month()+1,p=(0,X.default)(s).year(),v=(0,X.default)(t).date(),y=(0,X.default)(t).month()+1,b=(0,X.default)(t).year();h===31&&v===31?(h=30,v=30):h===31?h=30:h===30&&v===31&&(v=30),A=v+y*30+b*360-(h+g*30+p*360);break;case 1:case 2:case 3:A=(0,X.default)(t).diff((0,X.default)(s),"days");break;case 4:var h=(0,X.default)(s).date(),g=(0,X.default)(s).month()+1,p=(0,X.default)(s).year(),v=(0,X.default)(t).date(),y=(0,X.default)(t).month()+1,b=(0,X.default)(t).year();A=v+y*30+b*360-(h+g*30+p*360);break}return A}catch(w){var k=w;return k=m.errorInfo(k),[m.error.v,k]}},COUPDAYS:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var s;switch(o){case 0:s=360/a;break;case 1:for(var u=Math.ceil((0,X.default)(l).diff((0,X.default)(t),"months")/(12/a))+1,e=1;e<=u;e++){var f=(0,X.default)(l).subtract(12/a*e,"months");if(f<=(0,X.default)(t)){var A=(0,X.default)(l).subtract(12/a*(e-1),"months");s=(0,X.default)(A).diff((0,X.default)(f),"days");break}}break;case 2:s=360/a;break;case 3:s=365/a;break;case 4:s=360/a;break}return s}catch(g){var h=g;return h=m.errorInfo(h),[m.error.v,h]}},COUPDAYSNC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;for(var s,u=Math.ceil((0,X.default)(l).diff((0,X.default)(t),"months")/(12/a))+1,e=1;e<=u;e++){var f=(0,X.default)(l).subtract(12/a*e,"months");if(f<=(0,X.default)(t)){s=(0,X.default)(l).subtract(12/a*(e-1),"months");break}}var A;switch(o){case 0:var h=(0,X.default)(t).date(),g=(0,X.default)(t).month()+1,p=(0,X.default)(t).year(),v=(0,X.default)(s).date(),y=(0,X.default)(s).month()+1,b=(0,X.default)(s).year();h===31&&v===31?(h=30,v=30):h===31?h=30:h===30&&v===31&&(v=30),A=v+y*30+b*360-(h+g*30+p*360);break;case 1:case 2:case 3:A=(0,X.default)(s).diff((0,X.default)(t),"days");break;case 4:var h=(0,X.default)(t).date(),g=(0,X.default)(t).month()+1,p=(0,X.default)(t).year(),v=(0,X.default)(s).date(),y=(0,X.default)(s).month()+1,b=(0,X.default)(s).year();A=v+y*30+b*360-(h+g*30+p*360);break}return A}catch(w){var k=w;return k=m.errorInfo(k),[m.error.v,k]}},COUPNCD:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;for(var s,u=Math.ceil((0,X.default)(l).diff((0,X.default)(t),"months")/(12/a))+1,e=1;e<=u;e++){var f=(0,X.default)(l).subtract(12/a*e,"months");if(f<=(0,X.default)(t)){s=(0,X.default)(l).subtract(12/a*(e-1),"months");break}}return(0,X.default)(s).format("YYYY-MM-DD")}catch(h){var A=h;return A=m.errorInfo(A),[m.error.v,A]}},COUPPCD:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;for(var s,u=Math.ceil((0,X.default)(l).diff((0,X.default)(t),"months")/(12/a))+1,e=1;e<=u;e++){var f=(0,X.default)(l).subtract(12/a*e,"months");if(f<=(0,X.default)(t)){s=f;break}}return(0,X.default)(s).format("YYYY-MM-DD")}catch(h){var A=h;return A=m.errorInfo(A),[m.error.v,A]}},FV:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=4){if(o=M.getFirstValue(arguments[3]),H(o))return o;if(!V(o))return m.error.v;o=parseFloat(o)}var s=0;if(arguments.length>=5){if(s=M.getFirstValue(arguments[4]),H(s))return s;if(!V(s))return m.error.v;s=parseFloat(s)}if(s!=0&&s!=1)return m.error.nm;var u;if(t===0)u=o+a*l;else{var f=Math.pow(1+t,l);s===1?u=o*f+a*(1+t)*(f-1)/t:u=o*f+a*(f-1)/t}return-u}catch(h){var A=h;return A=m.errorInfo(A),[m.error.v,A]}},FVSCHEDULE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var A=window.luckysheet_function.COUPNUM.f(t,l,u,f);if(A>1){for(var h=1,g=0,p=h,e=1;e<=100;e++){var v=window.luckysheet_function.PRICE.f(t,l,a,p,s,u,f);if(Math.abs(v-o)<1e-6)break;v>o?g=p:h=p,p=(h+g)/2}var y=p}else var b=window.luckysheet_function.COUPDAYSNC.f(t,l,u,f),k=window.luckysheet_function.COUPDAYS.f(t,l,u,f),w=window.luckysheet_function.COUPDAYBS.f(t,l,u,f),C=s/100+a/u,I=o/100+w/k*(a/u),x=u*k/b,y=(C-I)/I*x;return y}catch(R){var T=R;return T=m.errorInfo(T),[m.error.v,T]}},YIELDDISC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var u=window.luckysheet_function.YEARFRAC.f(t,l,s);return(o/a-1)/u}catch(A){var f=A;return f=m.errorInfo(f),[m.error.v,f]}},NOMINAL:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e0&&(f=!0),a[e]<0&&(A=!0),!(f&&A));e++);if(!f||!A)return m.error.nm;if(a.length!=s.length)return m.error.nm;var h=function(I,x,T){for(var R=T+1,D=I[0],S=1;Sv&&Math.abs(k)>v;while(w);return p}catch(I){var C=I;return C=m.errorInfo(C),[m.error.v,C]}},MIRR:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e0&&(f=!0),l[e]<0&&(A=!0);if(!f||!A)return m.error.nm;var h=function(I,x,T){for(var R=T+1,D=I[0],S=1;Sv&&Math.abs(k)>v;while(w);return p}catch(I){var C=I;return C=m.errorInfo(C),[m.error.v,C]}},NPV:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e0)for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;es)return m.error.nm;if(u!=0&&u!=1)return m.error.nm;var f=window.luckysheet_function.PMT.f(t,l,a,0,u),A=0;o===1&&u===0&&(A=-a,o++);for(var e=o;e<=s;e++)u===1?A+=window.luckysheet_function.FV.f(t,e-2,f,a,1)-f:A+=window.luckysheet_function.FV.f(t,e-1,f,a,0);return A*=t,A}catch(g){var h=g;return h=m.errorInfo(h),[m.error.v,h]}},PMT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=4){if(o=M.getFirstValue(arguments[3]),H(o))return o;if(!V(o))return m.error.v;o=parseFloat(o)}var s=0;if(arguments.length==5){if(s=M.getFirstValue(arguments[4]),H(s))return s;if(!V(s))return m.error.v;s=parseFloat(s)}if(s!=0&&s!=1)return m.error.nm;var u;if(t===0)u=(a+o)/l;else{var f=Math.pow(1+t,l);s===1?u=(o*t/(f-1)+a*t/(1-1/f))/(1+t):u=o*t/(f-1)+a*t/(1-1/f)}return-u}catch(h){var A=h;return A=m.errorInfo(A),[m.error.v,A]}},IPMT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=5){if(s=M.getFirstValue(arguments[4]),H(s))return s;if(!V(s))return m.error.v;s=parseFloat(s)}var u=0;if(arguments.length>=6){if(u=M.getFirstValue(arguments[5]),H(u))return u;if(!V(u))return m.error.v;u=parseFloat(u)}if(l<1||l>a)return m.error.nm;if(u!=0&&u!=1)return m.error.nm;var f=window.luckysheet_function.PMT.f(t,a,o,s,u),A;l===1?u===1?A=0:A=-o:u===1?A=window.luckysheet_function.FV.f(t,l-2,f,o,1)-f:A=window.luckysheet_function.FV.f(t,l-1,f,o,0);var h=A*t;return h}catch(p){var g=p;return g=m.errorInfo(g),[m.error.v,g]}},PPMT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=5){if(s=M.getFirstValue(arguments[4]),H(s))return s;if(!V(s))return m.error.v;s=parseFloat(s)}var u=0;if(arguments.length>=6){if(u=M.getFirstValue(arguments[5]),H(u))return u;if(!V(u))return m.error.v;u=parseFloat(u)}if(l<1||l>a)return m.error.nm;if(u!=0&&u!=1)return m.error.nm;var f=window.luckysheet_function.PMT.f(t,a,o,s,u),A=window.luckysheet_function.IPMT.f(t,l,a,o,s,u);return f-A}catch(g){var h=g;return h=m.errorInfo(h),[m.error.v,h]}},INTRATE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var u=(0,X.default)(t).date(),f=(0,X.default)(t).month()+1,A=(0,X.default)(t).year(),h=(0,X.default)(l).date(),g=(0,X.default)(l).month()+1,p=(0,X.default)(l).year(),v;switch(s){case 0:u===31&&h===31?(u=30,h=30):u===31?u=30:u===30&&h===31&&(h=30),v=360/(h+g*30+p*360-(u+f*30+A*360));break;case 1:var y=365;if(A===p||A+1===p&&(f>g||f===g&&u>=h))return(A===p&&M.isLeapYear(A)||M.feb29Between(t,l)||g===1&&h===29)&&(y=366),v=y/(0,X.default)(l).diff((0,X.default)(t),"days"),v=(o-a)/a*v,v;var b=p-A+1,k=((0,X.default)().set({year:p+1,month:0,date:1})-(0,X.default)().set({year:A,month:0,date:1}))/1e3/60/60/24,w=k/b;v=w/(0,X.default)(l).diff((0,X.default)(t),"days");break;case 2:v=360/(0,X.default)(l).diff((0,X.default)(t),"days");break;case 3:v=365/(0,X.default)(l).diff((0,X.default)(t),"days");break;case 4:v=360/(h+g*30+p*360-(u+f*30+A*360));break}return v=(o-a)/a*v,v}catch(I){var C=I;return C=m.errorInfo(C),[m.error.v,C]}},PRICE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var A=window.luckysheet_function.COUPDAYSNC.f(t,l,u,f),h=window.luckysheet_function.COUPDAYS.f(t,l,u,f),g=window.luckysheet_function.COUPDAYBS.f(t,l,u,f),p=window.luckysheet_function.COUPNUM.f(t,l,u,f);if(p>1){for(var v=s/Math.pow(1+o/u,p-1+A/h),y=0,e=1;e<=p;e++)y+=100*a/u/Math.pow(1+o/u,e-1+A/h);var b=100*(a/u)*(g/h),k=v+y-b}else var w=h-g,v=100*(a/u)+s,y=o/u*(w/h)+1,b=100*(a/u)*(g/h),k=v/y-b;return k}catch(I){var C=I;return C=m.errorInfo(C),[m.error.v,C]}},PRICEDISC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var u=(0,X.default)(t).date(),f=(0,X.default)(t).month()+1,A=(0,X.default)(t).year(),h=(0,X.default)(l).date(),g=(0,X.default)(l).month()+1,p=(0,X.default)(l).year(),v;switch(s){case 0:u===31&&h===31?(u=30,h=30):u===31?u=30:u===30&&h===31&&(h=30),v=(h+g*30+p*360-(u+f*30+A*360))/360;break;case 1:var y=365;if(A===p||A+1===p&&(f>g||f===g&&u>=h))return(A===p&&M.isLeapYear(A)||M.feb29Between(t,l)||g===1&&h===29)&&(y=366),v=(0,X.default)(l).diff((0,X.default)(t),"days")/y,v=o-a*o*v,v;var b=p-A+1,k=((0,X.default)().set({year:p+1,month:0,date:1})-(0,X.default)().set({year:A,month:0,date:1}))/1e3/60/60/24,w=k/b;v=(0,X.default)(l).diff((0,X.default)(t),"days")/w;break;case 2:v=(0,X.default)(l).diff((0,X.default)(t),"days")/360;break;case 3:v=(0,X.default)(l).diff((0,X.default)(t),"days")/365;break;case 4:v=(h+g*30+p*360-(u+f*30+A*360))/360;break}return v=o-a*o*v,v}catch(I){var C=I;return C=m.errorInfo(C),[m.error.v,C]}},PRICEMAT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var f=(0,X.default)(t).date(),A=(0,X.default)(t).month()+1,h=(0,X.default)(t).year(),g=(0,X.default)(l).date(),p=(0,X.default)(l).month()+1,v=(0,X.default)(l).year(),y=(0,X.default)(a).date(),b=(0,X.default)(a).month()+1,k=(0,X.default)(a).year(),w;switch(u){case 0:f==31&&(f=30),g==31&&(g=30),y==31&&(y=30);var C=360,I=g+p*30+v*360-(f+A*30+h*360),x=g+p*30+v*360-(y+b*30+k*360),T=f+A*30+h*360-(y+b*30+k*360);break;case 1:var R=365;if(h===v||h+1===v&&(A>p||A===p&&f>=g)){(h===v&&M.isLeapYear(h)||M.feb29Between(t,l)||p===1&&g===29)&&(R=366);var C=R,I=(0,X.default)(l).diff((0,X.default)(t),"days"),x=(0,X.default)(t).diff((0,X.default)(a),"days"),T=(0,X.default)(l).diff((0,X.default)(a),"days");return w=(100+x/C*o*100)/(1+I/C*s)-T/C*o*100,w}var D=v-h+1,S=((0,X.default)().set({year:v+1,month:0,date:1})-(0,X.default)().set({year:h,month:0,date:1}))/1e3/60/60/24,B=S/D,C=B,I=(0,X.default)(l).diff((0,X.default)(t),"days"),x=(0,X.default)(t).diff((0,X.default)(a),"days"),T=(0,X.default)(l).diff((0,X.default)(a),"days");break;case 2:var C=360,I=(0,X.default)(l).diff((0,X.default)(t),"days"),x=(0,X.default)(t).diff((0,X.default)(a),"days"),T=(0,X.default)(l).diff((0,X.default)(a),"days");break;case 3:var C=365,I=(0,X.default)(l).diff((0,X.default)(t),"days"),x=(0,X.default)(t).diff((0,X.default)(a),"days"),T=(0,X.default)(l).diff((0,X.default)(a),"days");break;case 4:var C=360,I=g+p*30+v*360-(f+A*30+h*360),x=g+p*30+v*360-(y+b*30+k*360),T=f+A*30+h*360-(y+b*30+k*360);break}return w=(100+x/C*o*100)/(1+I/C*s)-T/C*o*100,w}catch(E){var F=E;return F=m.errorInfo(F),[m.error.v,F]}},RECEIVED:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var u=(0,X.default)(t).date(),f=(0,X.default)(t).month()+1,A=(0,X.default)(t).year(),h=(0,X.default)(l).date(),g=(0,X.default)(l).month()+1,p=(0,X.default)(l).year(),v;switch(s){case 0:u==31&&(u=30),h==31&&(h=30);var y=360,b=h+g*30+p*360-(u+f*30+A*360);break;case 1:var k=365;if(A===p||A+1===p&&(f>g||f===g&&u>=h)){(A===p&&M.isLeapYear(A)||M.feb29Between(t,l)||g===1&&h===29)&&(k=366);var y=k,b=(0,X.default)(l).diff((0,X.default)(t),"days");return v=a/(1-o*b/y),v}var w=p-A+1,C=((0,X.default)().set({year:p+1,month:0,date:1})-(0,X.default)().set({year:A,month:0,date:1}))/1e3/60/60/24,I=C/w,y=I,b=(0,X.default)(l).diff((0,X.default)(t),"days");break;case 2:var y=360,b=(0,X.default)(l).diff((0,X.default)(t),"days");break;case 3:var y=365,b=(0,X.default)(l).diff((0,X.default)(t),"days");break;case 4:var y=360,b=h+g*30+p*360-(u+f*30+A*360);break}return v=a/(1-o*b/y),v}catch(T){var x=T;return x=m.errorInfo(x),[m.error.v,x]}},DISC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var u=(0,X.default)(t).date(),f=(0,X.default)(t).month()+1,A=(0,X.default)(t).year(),h=(0,X.default)(l).date(),g=(0,X.default)(l).month()+1,p=(0,X.default)(l).year(),v;switch(s){case 0:u==31&&(u=30),h==31&&(h=30);var y=360,b=h+g*30+p*360-(u+f*30+A*360);break;case 1:var k=365;if(A===p||A+1===p&&(f>g||f===g&&u>=h)){(A===p&&M.isLeapYear(A)||M.feb29Between(t,l)||g===1&&h===29)&&(k=366);var y=k,b=(0,X.default)(l).diff((0,X.default)(t),"days");return v=(o-a)/o*(y/b),v}var w=p-A+1,C=((0,X.default)().set({year:p+1,month:0,date:1})-(0,X.default)().set({year:A,month:0,date:1}))/1e3/60/60/24,I=C/w,y=I,b=(0,X.default)(l).diff((0,X.default)(t),"days");break;case 2:var y=360,b=(0,X.default)(l).diff((0,X.default)(t),"days");break;case 3:var y=365,b=(0,X.default)(l).diff((0,X.default)(t),"days");break;case 4:var y=360,b=h+g*30+p*360-(u+f*30+A*360);break}return v=(o-a)/o*(y/b),v}catch(T){var x=T;return x=m.errorInfo(x),[m.error.v,x]}},NPER:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=4){if(o=M.getFirstValue(arguments[3]),H(o))return o;if(!V(o))return m.error.v;o=parseFloat(o)}var s=0;if(arguments.length>=5){if(s=M.getFirstValue(arguments[4]),H(s))return s;if(!V(s))return m.error.v;s=parseFloat(s)}if(s!=0&&s!=1)return m.error.nm;var u=l*(1+t*s)-o*t,f=a*t+l*(1+t*s);return Math.log(u/f)/Math.log(1+t)}catch(h){var A=h;return A=m.errorInfo(A),[m.error.v,A]}},SLN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;for(var f=window.luckysheet_function.COUPNUM.f(t,l,s,u),A=0,h=0,e=1;e<=f;e++)A+=100*(a/s)*e/Math.pow(1+o/s,e),h+=100*(a/s)/Math.pow(1+o/s,e);var g=(A+100*f/Math.pow(1+o/s,f))/(h+100/Math.pow(1+o/s,f));return g=g/s,g}catch(v){var p=v;return p=m.errorInfo(p),[m.error.v,p]}},MDURATION:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e4)return m.error.nm;if((0,X.default)(t)-(0,X.default)(l)>=0)return m.error.nm;var f=window.luckysheet_function.DURATION.f(t,l,a,o,s,u);return f/(1+o/s)}catch(h){var A=h;return A=m.errorInfo(A),[m.error.v,A]}},BIN2DEC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e511)return m.error.nm;if(t<0)return"1"+new Array(9-(512+t).toString(2).length).join("0")+(512+t).toString(2);var a=parseInt(t,10).toString(2);return l==null?a:l<0||lthis.m[1])return m.error.na;for(var e=0;e549755813887)return m.error.nm;if(t<0)return(1099511627776+t).toString(16).toUpperCase();var a=parseInt(t,10).toString(16).toUpperCase();return l==null?a:l<0||lthis.m[1])return m.error.na;for(var e=0;e536870911)return m.error.nm;if(t<0)return(1073741824+t).toString(8);var a=parseInt(t,10).toString(8);return l==null?a:l<0||lthis.m[1])return m.error.na;for(var e=0;e511)return m.error.nm;if(a)return"1"+new Array(9-(512+o).toString(2).length).join("0")+(512+o).toString(2);var s=o.toString(2);return l==null?s:l<0||lthis.m[1])return m.error.na;for(var e=0;e=549755813888?l-1099511627776:l}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},HEX2OCT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e536870911&&a<1098974756864)return m.error.nm;if(a>=1098974756864)return(a-1098437885952).toString(8);var o=a.toString(8);return l==null?o:l<0||lthis.m[1])return m.error.na;for(var e=0;e511)return Ne.num;if(a)return"1"+new Array(9-(512+o).toString(2).length).join("0")+(512+o).toString(2);var s=o.toString(2);return l==null?s:l<0||lthis.m[1])return m.error.na;for(var e=0;e=536870912?l-1073741824:l}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},OCT2HEX:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=536870912)return"FF"+(a+3221225472).toString(16).toUpperCase();var o=a.toString(16).toUpperCase();return l==null?o:l<0||lthis.m[1])return m.error.na;for(var e=0;e0?"+":"";return t.toString()+o+(l===1?a:l.toString()+a)}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},IMREAL:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=0)return 0;var l=t.indexOf("+"),a=t.indexOf("-");l===0&&(l=t.indexOf("+",1)),a===0&&(a=t.indexOf("-",1));var o=t.substring(t.length-1,t.length),s=o==="i"||o==="j";return l>=0||a>=0?s?l>=0?isNaN(t.substring(0,l))||isNaN(t.substring(l+1,t.length-1))?m.error.nm:Number(t.substring(0,l)):isNaN(t.substring(0,a))||isNaN(t.substring(a+1,t.length-1))?m.error.nm:Number(t.substring(0,a)):m.error.nm:s?isNaN(t.substring(0,t.length-1))?m.error.nm:0:isNaN(t)?m.error.nm:t}catch(f){var u=f;return u=m.errorInfo(u),[m.error.v,u]}},IMAGINARY:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=0)return 1;t=t.replace("+i","+1i").replace("-i","-1i").replace("+j","+1j").replace("-j","-1j");var l=t.indexOf("+"),a=t.indexOf("-");l===0&&(l=t.indexOf("+",1)),a===0&&(a=t.indexOf("-",1));var o=t.substring(t.length-1,t.length),s=o==="i"||o==="j";return l>=0||a>=0?s?l>=0?isNaN(t.substring(0,l))||isNaN(t.substring(l+1,t.length-1))?m.error.nm:Number(t.substring(l+1,t.length-1)):isNaN(t.substring(0,a))||isNaN(t.substring(a+1,t.length-1))?m.error.nm:-Number(t.substring(a+1,t.length-1)):m.error.nm:s?isNaN(t.substring(0,t.length-1))?m.error.nm:t.substring(0,t.length-1):isNaN(t)?m.error.nm:0}catch(f){var u=f;return u=m.errorInfo(u),[m.error.v,u]}},IMCONJUGATE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;el):m.error.v}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},GTE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=l):m.error.v}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},LT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e255?m.error.v:String.fromCharCode(t)):m.error.v}catch(a){var l=a;return l=m.errorInfo(l),[m.error.v,l]}},ARABIC:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e3999?m.error.v:a(t)):m.error.v}catch(a){var l=a;return l=m.errorInfo(l),[m.error.v,l]}},REGEXEXTRACT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e1?a.length-1:0]:null}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},REGEXMATCH:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=2){if(l=M.getFirstValue(arguments[1]),H(l))return l;if(!V(l))return m.error.v;l=parseInt(l)}var a=!1;if(arguments.length==3&&(a=M.getCellBoolen(arguments[2]),H(a)))return a;if(l>127)return m.error.v;var o=a?"0":"#,##0";return l<=0?t=Math.round(t*Math.pow(10,l))/Math.pow(10,l):l>0&&(o+="."+new Array(l+1).join("0")),ht(o,t)}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},FIND:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;el.length)return m.error.v;if(t=="")return a;if(l.indexOf(t)==-1)return m.error.v;var o=l.indexOf(t,a-1)+1;return o}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},FINDB:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;el.length)return m.error.v;if(t=="")return a;if(l.indexOf(t)==-1)return m.error.v;for(var o=l.split(""),s=l.indexOf(t,a-1),u=0,e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=t.length?t:l==0?"":t.substr(0,l)}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},RIGHT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=t.length?t:l==0?"":t.substr(-l,l)}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},MID:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;et.length?"":l+a>t.length?t.substr(l-1,t.length-l+1):t.substr(l-1,a)):m.error.v}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},LEN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e100&&(l=100),new Array(l+1).join(t))):m.error.v}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},SEARCH:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;el.length)return m.error.v;var o=l.toLowerCase().indexOf(t.toLowerCase(),a-1)+1;return o===0?m.error.v:o}catch(u){var s=u;return s=m.errorInfo(s),[m.error.v,s]}},SUBSTITUTE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ef.length)return t;for(var A=l.length,h=0,e=1;e<=o;e++)h=t.indexOf(l,h)+1;u=t.substring(0,h-1)+a+t.substring(h-1+A)}return u}catch(p){var g=p;return g=m.errorInfo(g),[m.error.v,g]}},CLEAN:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e31&&a<127)&&l.push(t.charAt(e))}return l.join("")}catch(s){var o=s;return o=m.errorInfo(o),[m.error.v,o]}},TEXT:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=0)&&(f=o[e]),(o[e][1]===g||y.indexOf(g)>=0)&&(A=o[e]);if(f===null){var b=s[l.substring(0,2)],k=u[l.substring(0,1)];l.substring(0,2)==="da"&&(k=["dekao",10,"da"]),b?(p=b[2],h=l.substring(2)):k&&(p=k[1],h=l.substring(k[2].length));for(var w=0;w=0)&&(f=o[w])}if(A===null){var C=s[a.substring(0,2)],I=u[a.substring(0,1)];a.substring(0,2)==="da"&&(I=["dekao",10,"da"]),C?(v=C[2],g=a.substring(2)):I&&(v=I[1],g=a.substring(I[2].length));for(var x=0;x=0)&&(A=o[x])}return f===null||A===null?m.error.na:f[3]!==A[3]?m.error.na:t*f[6]*p/(A[6]*v)}catch(R){var T=R;return T=m.errorInfo(T),[m.error.v,T]}},SUMX2MY2:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=2){var h=arguments[1];if(f=[],N(h)=="array"){if(N(h[0])=="array"&&!M.isDyadicArr(h))return m.error.v;f=M.getDataDyadicArr(h)}else if(N(h)=="object"&&h.startCell!=null)f=M.getCellDataDyadicArr(h,"text");else{if(!V(h))return m.error.v;var a=[];a.push(parseFloat(h)),f.push(a)}for(var e=0;e=3){var y=arguments[2];if(v=[],N(y)=="array"){if(N(y[0])=="array"&&!M.isDyadicArr(y))return m.error.v;v=M.getDataDyadicArr(y)}else if(N(y)=="object"&&y.startCell!=null)v=M.getCellDataDyadicArr(y,"text");else{if(!V(y))return m.error.v;var a=[];a.push(parseFloat(y)),v.push(a)}for(var e=0;ethis.m[1])return m.error.na;for(var e=0;eu[e-1]&&g++,a[h]>u[e]&&p++;f.push([g]),f.push([p])}else{for(var A=0,h=0;hu[e-1]&&A++;f.push([A])}return f}}catch(y){var v=y;return v=m.errorInfo(v),[m.error.v,v]}},GROWTH:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=2){var h=arguments[1];if(f=[],N(h)=="array"){if(N(h[0])=="array"&&!M.isDyadicArr(h))return m.error.v;f=M.getDataDyadicArr(h)}else if(N(h)=="object"&&h.startCell!=null)f=M.getCellDataDyadicArr(h,"text");else{if(!V(h))return m.error.v;var a=[];a.push(parseFloat(h)),f.push(a)}for(var e=0;e=3){var y=arguments[2];if(v=[],N(y)=="array"){if(N(y[0])=="array"&&!M.isDyadicArr(y))return m.error.v;v=M.getDataDyadicArr(y)}else if(N(y)=="object"&&y.startCell!=null)v=M.getCellDataDyadicArr(y,"text");else{if(!V(y))return m.error.v;var a=[];a.push(parseFloat(y)),v.push(a)}for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;eb?p[b][k]=v[b][k]:ythis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e=2)for(var e=1;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e0?1:0;case"prefix":return b==0?"":y[f][A].ht==0?"^":y[f][A].ht==1?"'":y[f][A].ht==2?'"':"";case"protect":return 0;case"row":return f+1;case"type":return b==0?"b":"l";case"width":var h=s.config;return h.columnlen!=null&&A in h.columnlen?h.columnlen[A]:d.defaultcollen}}catch(p){var g=p;return g=m.errorInfo(g),[m.error.v,g]}},NA:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e-1}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},ISERROR:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e-1}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},ISLOGICAL:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e-1||l.toString().toLowerCase()=="true"||l.toString().toLowerCase()=="false"?!0:!!V(l)}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},ISNUMBER:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e-1||l.toString().toLowerCase()=="true"||l.toString().toLowerCase()=="false"?!1:!V(l)}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},TYPE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e-1?16:l.toString().toLowerCase()=="true"||l.toString().toLowerCase()=="false"?4:V(l)?1:2}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},N:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e-1?l:l.toString().toLowerCase()=="true"||l.toString().toLowerCase()=="false"?l.toString().toLowerCase()=="true"?1:0:V(l)?parseFloat(l):0}catch(o){var a=o;return a=m.errorInfo(a),[m.error.v,a]}},TO_DATE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e1?m.error.nm:f[u[0]]}catch(g){var h=g;return h=m.errorInfo(h),[m.error.v,h]}},DMAX:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ef[u[e]]&&(h=f[u[e]]);return h}catch(p){var g=p;return g=m.errorInfo(g),[m.error.v,g]}},DAVERAGE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;for(var e=0;e19&&(E=E%20),E=o[E]),C[F]=E)};if(u==null&&(u="#2ec7c9"),I("lineColor",u),C.fillColor=0,A)if(typeof A=="string"){A=A.toLowerCase();var x=null;A=="min"?x=window.luckysheet_function.MIN.f({data:y}):A=="max"?x=window.luckysheet_function.MAX.f({data:y}):A=="avg"||A=="mean"?x=window.luckysheet_function.AVERAGE.f({data:y}):A=="median"&&(x=window.luckysheet_function.MEDIAN.f({data:y})),x&&(C.normalRangeMin=x,C.normalRangeMax=x)}else C.normalRangeMin=A,C.normalRangeMax=A;h==null&&(h="#000"),I("normalRangeColor",h),I("maxSpotColor",g),I("minSpotColor",p),v==null&&(v="1.5"),C.spotRadius=v;var T=nr.init(y,C);return T}catch(D){var R=D;return R=m.errorInfo(R),[m.error.v,R]}},AREASPLINES:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e19&&(B=B%20),B=o[B]),k[S]=B)};if(u==null&&(u="#2ec7c9"),w("lineColor",u),w("fillColor",f),A==null&&(A="1"),k.lineWidth=A,h)if(typeof h=="string"){h=h.toLowerCase();var C=null;h=="min"?C=window.luckysheet_function.MIN.f({data:p}):h=="max"?C=window.luckysheet_function.MAX.f({data:p}):h=="avg"||h=="mean"?C=window.luckysheet_function.AVERAGE.f({data:p}):h=="median"&&(C=window.luckysheet_function.MEDIAN.f({data:p})),C&&(k.normalRangeMin=C,k.normalRangeMax=C)}else k.normalRangeMin=h,k.normalRangeMax=h;g==null&&(g="#000"),w("normalRangeColor",g);var I=nr.init(p,k);return I}catch(T){var x=T;return x=m.errorInfo(x),[m.error.v,x]}},COLUMNSPLINES:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e19&&(S=S%20),S=o[S]),g[D]=S)},v=arguments[1],y=arguments[2],b=arguments[3],k=arguments[4];g.type="column",v==null&&(v="1"),g.barSpacing=v,y==null&&(y="#fc5c5c"),p("barColor",y),b==null&&(b="#97b552"),p("negBarColor",b),k==null||k===!1||typeof k!="number"?g.chartRangeMax=void 0:g.chartRangeMax=k;var w=m.sparklinesColorMap(arguments);w&&(g.colorMap=w);var C=nr.init(u,g);return C}catch(x){var I=x;return I=m.errorInfo(I),[m.error.v,I]}},STACKCOLUMNSPLINES:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e19&&(P=P%20),P=o[P]),C[z]=P)},x=arguments[2],T=arguments[3];C.type="column",x==null&&(x="1"),C.barSpacing=x,T==null||T===!1||typeof T!="number"?C.chartRangeMax=void 0:C.chartRangeMax=T;var R=m.sparklinesColorMap(arguments,4);R&&(C.colorMap=R);var D=nr.init(u,C);return D}catch(B){var S=B;return S=m.errorInfo(S),[m.error.v,S]}},BARSPLINES:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e19&&(S=S%20),S=o[S]),g[D]=S)},v=arguments[1],y=arguments[2],b=arguments[3],k=arguments[4];g.type="bar",v==null&&(v="1"),g.barSpacing=v,y==null&&(y="#fc5c5c"),p("barColor",y),b==null&&(b="#97b552"),p("negBarColor",b),k==null||k===!1||typeof k!="number"?g.chartRangeMax=void 0:g.chartRangeMax=k;var w=m.sparklinesColorMap(arguments);w&&(g.colorMap=w);var C=nr.init(u,g);return C}catch(x){var I=x;return I=m.errorInfo(I),[m.error.v,I]}},STACKBARSPLINES:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e19&&(P=P%20),P=o[P]),C[z]=P)},x=arguments[2],T=arguments[3];C.type="bar",x==null&&(x="1"),C.barSpacing=x,T==null||T===!1||typeof T!="number"?C.chartRangeMax=void 0:C.chartRangeMax=T;var R=m.sparklinesColorMap(arguments,4);R&&(C.colorMap=R);var D=nr.init(u,C);return D}catch(B){var S=B;return S=m.errorInfo(S),[m.error.v,S]}},DISCRETESPLINES:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e19&&(R=R%20),R=o[R]),g[T]=R)},v=arguments[1],y=arguments[2],b=arguments[3];g.type="discrete",v==null&&(v=0),g.thresholdValue=v,y==null&&(y="#2ec7c9"),p("lineColor",y),b==null&&(b="#fc5c5c"),p("thresholdColor",b);var k=nr.init(u,g);return k}catch(C){var w=C;return w=m.errorInfo(w),[m.error.v,w]}},TRISTATESPLINES:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e19&&(S=S%20),S=o[S]),g[D]=S)},v=arguments[1],y=arguments[2],b=arguments[3],k=arguments[4];g.type="tristate",v==null&&(v="1"),g.barSpacing=v,y==null&&(y="#fc5c5c"),p("barColor",y),b==null&&(b="#97b552"),p("negBarColor",b),k==null&&(k="#999"),p("zeroBarColor",k);var w=m.sparklinesColorMap(arguments);w&&(g.colorMap=w);var C=nr.init(u,g);return C}catch(x){var I=x;return I=m.errorInfo(I),[m.error.v,I]}},PIESPLINES:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e19&&(D=D%20),D=o[D]),g[R]=D)},v=arguments[1],y=arguments[2],b=arguments[3];g.type="pie",v==null&&(v=0),g.offset=v,y==null&&(y=0),p("borderWidth",y),b==null&&(b="#97b552"),p("borderColor",b);var k=m.sparklinesColorMap(arguments,4);k&&(g.colorMap=k);var w=nr.init(u,g);return w}catch(I){var C=I;return C=m.errorInfo(C),[m.error.v,C]}},BOXSPLINES:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e19&&(R=R%20),R=o[R]),g[T]=R)},v=arguments[1],y=arguments[2],b=arguments[3];g.type="box",v==null&&(v=1.5),g.outlierIQR=v,y==null?y=0:p("target",y),b==null&&(b=1.5),p("spotRadius",b);var k=nr.init(u,g);return k}catch(C){var w=C;return w=m.errorInfo(w),[m.error.v,w]}},BULLETSPLINES:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e19&&(x=x%20),x=o[x]),A[I]=x)},g=[];Aa(arguments);var p=m.getValueByFuncData(arguments[0]),v=m.getValueByFuncData(arguments[1]);g.push(p),g.push(v);for(var e=2;ethis.m[1])return m.error.na;for(var e=0;e=2){if(A=M.getFirstValue(arguments[1]),H(A))return A;if(!V(A))return m.error.v;A=parseInt(A)}var h=1;if(arguments.length>=3){if(h=M.getFirstValue(arguments[2]),H(h))return h;if(!V(h))return m.error.v;h=Math.floor(parseFloat(h))}var g=!1;if(arguments.length==4&&(g=M.getCellBoolen(arguments[3]),H(g)))return g;if(g){if(A<1||A>a)return m.error.v}else if(A<1||A>o)return m.error.v;if(h!=1&&h!=-1)return m.error.v;var p=function(b,k){if(N(b)=="array"&&(b=b[A-1]),N(k)=="array"&&(k=k[A-1]),!isNaN(b)&&!isNaN(k))return b-k;if(isNaN(b))if(isNaN(k)){if(b>k)return 1;if(bk)return-1;if(bthis.m[1])return m.error.na;for(var e=0;e1&&u[0].length>1)return m.error.v;if(u.length>1){if(u.length!=l.length)return m.error.v;A="row";for(var e=0;e1){if(u[0].length!=l[0].length)return m.error.v;A="col";for(var e=0;e1&&u.data[0].length>1)return m.error.v;if(u.data.length>1){if(u.data.length!=l.length)return m.error.v;A="row";for(var e=0;e1){if(u.data[0].length!=l[0].length)return m.error.v;A="col";for(var e=0;e0&&p.push(a)}return p.length==0?g:p}catch(b){var y=b;return y=m.errorInfo(y),[m.error.v,y]}},UNIQUE:function(){if(arguments.lengththis.m[1])return m.error.na;for(var e=0;e=2&&(o=M.getCellBoolen(arguments[1]),H(o)))return o;var s=!1;if(arguments.length==3&&(s=M.getCellBoolen(arguments[2]),H(s)))return s;if(o){l=l[0].map(function(y,b){return l.map(function(k){return k[b]})});for(var u={},f=[],A=[],e=0;ethis.m[1])return m.error.na;for(var e=0;e=1){if(t=M.getFirstValue(arguments[0]),H(t))return t;if(!V(t))return m.error.v;t=parseInt(t)}var l=1;if(arguments.length==2){if(l=M.getFirstValue(arguments[1]),H(l))return l;if(!V(l))return m.error.v;l=parseInt(l)}if(t<=0||l<=0)return m.error.v;for(var a=[],e=0;ethis.m[1])return m.error.na;for(var e=0;e=2){if(l=M.getFirstValue(arguments[1]),H(l))return l;if(!V(l))return m.error.v;l=parseInt(l)}var a=1;if(arguments.length>=3){if(a=M.getFirstValue(arguments[2]),H(a))return a;if(!V(a))return m.error.v;a=parseFloat(a)}var o=1;if(arguments.length==4){if(o=M.getFirstValue(arguments[3]),H(o))return o;if(!V(o))return m.error.v;o=parseFloat(o)}if(t<=0||l<=0)return m.error.v;for(var s=[],e=0;ethis.m[1])return m.error.na;for(var e=0;ethis.m[1])return m.error.na;try{let n=window.luckysheetCurrentRow,t=window.luckysheetCurrentColumn,l=window.luckysheetCurrentFunction,a=M.getFirstValue(arguments[0]);return H(a)?a:(Ae.remoteFunction(a,o=>{let s=Te.deepCopyFlowData(d.flowdata);m.execFunctionGroup(n,t,o),s[n][t]={v:o,f:l},Je(s,[{row:[n,n],column:[t,t]}])}),"Loading...")}catch(n){console.log(n);var e=n;return e=m.errorInfo(e),[m.error.v,e]}}},Fm=Rk});var rd,Om=De(()=>{rd=[{n:"DISPIMG",t:3,m:[2,2],p:[{example:"img_wx5a6n0A1ael_1600925814407",require:"m",repeat:"n",type:"string"},{example:"2",require:"m",repeat:"n",type:"number"}]},{n:"SUMIF",t:0,m:[2,3],p:[{example:"A1:A10",require:"m",repeat:"n",type:"range"},{example:'">20"',require:"m",repeat:"n",type:"rangeall"},{example:"B1:B10",require:"o",repeat:"n",type:"range"}]},{n:"TAN",t:0,m:[1,1],p:[{example:"45*PI()/180",require:"m",repeat:"n",type:"rangenumber"}]},{n:"TANH",t:0,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"CEILING",t:0,m:[2,2],p:[{example:"23.25",require:"m",repeat:"n",type:"rangenumber"},{example:"0.1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ATAN",t:0,m:[1,1],p:[{example:"0",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ASINH",t:0,m:[1,1],p:[{example:"0.9",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ABS",t:0,m:[1,1],p:[{example:"-2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ACOS",t:0,m:[1,1],p:[{example:"0",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ACOSH",t:0,m:[1,1],p:[{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"MULTINOMIAL",t:0,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"o",repeat:"y",type:"rangeall"}]},{n:"ATANH",t:0,m:[1,1],p:[{example:"0.9",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ATAN2",t:0,m:[2,2],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"3",require:"m",repeat:"n",type:"rangenumber"}]},{n:"COUNTBLANK",t:1,m:[1,1],p:[{example:"A2:C100",require:"m",repeat:"n",type:"range"}]},{n:"COSH",t:0,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"INT",t:0,m:[1,1],p:[{example:"99.44",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ISEVEN",t:0,m:[1,1],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ISODD",t:0,m:[1,1],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"LCM",t:0,m:[1,255],p:[{example:"A2:A5",require:"m",repeat:"n",type:"rangeall"},{example:"3",require:"o",repeat:"y",type:"rangeall"}]},{n:"LN",t:0,m:[1,1],p:[{example:"100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"LOG",t:0,m:[1,2],p:[{example:"128",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"n",type:"rangenumber"}]},{n:"LOG10",t:0,m:[1,1],p:[{example:"100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"MOD",t:0,m:[2,2],p:[{example:"10",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"MROUND",t:0,m:[2,2],p:[{example:"21",require:"m",repeat:"n",type:"rangenumber"},{example:"14",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ODD",t:0,m:[1,1],p:[{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SUMSQ",t:0,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"o",repeat:"y",type:"rangeall"}]},{n:"COMBIN",t:0,m:[2,2],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SUM",t:0,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"o",repeat:"y",type:"rangeall"}]},{n:"SUBTOTAL",t:0,m:[2,256],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"A2:A5",require:"m",repeat:"n",type:"range"},{example:"B2:B8",require:"o",repeat:"y",type:"range"}]},{n:"ASIN",t:0,m:[1,1],p:[{example:"0",require:"m",repeat:"n",type:"rangenumber"}]},{n:"COUNTIF",t:1,m:[2,2],p:[{example:"A1:A10",require:"m",repeat:"n",type:"range"},{example:'">20"',require:"m",repeat:"n",type:"rangeall"}]},{n:"RADIANS",t:0,m:[1,1],p:[{example:"180",require:"m",repeat:"n",type:"rangenumber"}]},{n:"RAND",t:0,m:[0,0],p:[]},{n:"COUNTUNIQUE",t:0,m:[1,255],p:[{example:"A1:C100",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"}]},{n:"DEGREES",t:0,m:[1,1],p:[{example:"PI()",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ERFC",t:9,m:[1,1],p:[{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"EVEN",t:0,m:[1,1],p:[{example:"3",require:"m",repeat:"n",type:"rangenumber"}]},{n:"EXP",t:0,m:[1,1],p:[{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"FACT",t:0,m:[1,1],p:[{example:"3",require:"m",repeat:"n",type:"rangenumber"}]},{n:"FACTDOUBLE",t:0,m:[1,1],p:[{example:"6",require:"m",repeat:"n",type:"rangenumber"}]},{n:"PI",t:0,m:[0,0],p:[]},{n:"FLOOR",t:0,m:[2,2],p:[{example:"23.25",require:"m",repeat:"n",type:"rangenumber"},{example:"0.1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"GCD",t:0,m:[1,255],p:[{example:"A2:A5",require:"m",repeat:"n",type:"rangeall"},{example:"96",require:"o",repeat:"y",type:"rangeall"}]},{n:"RANDBETWEEN",t:0,m:[2,2],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"10",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ROUND",t:0,m:[2,2],p:[{example:"99.44",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ROUNDDOWN",t:0,m:[2,2],p:[{example:"99.44",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ROUNDUP",t:0,m:[2,2],p:[{example:"99.44",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SERIESSUM",t:0,m:[4,4],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"{FACT(0)",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SIGN",t:0,m:[1,1],p:[{example:"-42",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SIN",t:0,m:[1,1],p:[{example:"PI()",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SINH",t:0,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SQRT",t:0,m:[1,1],p:[{example:"9",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SQRTPI",t:0,m:[1,1],p:[{example:"9",require:"m",repeat:"n",type:"rangenumber"}]},{n:"GAMMALN",t:1,m:[1,1],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"COS",t:0,m:[1,1],p:[{example:"PI()",require:"m",repeat:"n",type:"rangenumber"}]},{n:"TRUNC",t:0,m:[1,2],p:[{example:"3.141592654",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"n",type:"rangenumber"}]},{n:"QUOTIENT",t:0,m:[2,2],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"POWER",t:0,m:[2,2],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"0.5",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SUMIFS",t:0,m:[3,257],p:[{example:"A1:A10",require:"m",repeat:"n",type:"range"},{example:" B1:B10",require:"m",repeat:"n",type:"range"},{example:' ">20"',require:"m",repeat:"n",type:"rangeall"},{example:" C1:C10",require:"o",repeat:"y",type:"rangeall"}]},{n:"COUNTIFS",t:1,m:[2,256],p:[{example:"A1:A10",require:"m",repeat:"n",type:"range"},{example:' ">20"',require:"m",repeat:"n",type:"rangeall"},{example:" B1:B10",require:"o",repeat:"y",type:"rangeall"}]},{n:"PRODUCT",t:0,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"HARMEAN",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"HYPGEOMDIST",t:1,m:[5,5],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"},{example:"20",require:"m",repeat:"n",type:"rangenumber"},{example:"40",require:"m",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"INTERCEPT",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"KURT",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"LARGE",t:1,m:[2,2],p:[{example:"A2:B100",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"STDEVA",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"STDEVP",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"GEOMEAN",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"o",repeat:"y",type:"rangeall"}]},{n:"RANK_EQ",t:1,m:[2,3],p:[{example:"A10",require:"m",repeat:"n",type:"rangenumber"},{example:"A1:A100",require:"m",repeat:"n",type:"range"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"RANK_AVG",t:1,m:[2,3],p:[{example:"A10",require:"m",repeat:"n",type:"rangenumber"},{example:"A1:A100",require:"m",repeat:"n",type:"range"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"PERCENTRANK_EXC",t:1,m:[2,3],p:[{example:"A1:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"A2",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"o",repeat:"n",type:"rangenumber"}]},{n:"PERCENTRANK_INC",t:1,m:[2,3],p:[{example:"A1:A100",require:"m",repeat:"n",type:"rangenumber"},{example:" A2",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"o",repeat:"n",type:"rangenumber"}]},{n:"FORECAST",t:1,m:[3,3],p:[{example:"A1",require:"m",repeat:"n",type:"rangenumber"},{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"FISHERINV",t:1,m:[1,1],p:[{example:"0.962",require:"m",repeat:"n",type:"rangenumber"}]},{n:"FISHER",t:1,m:[1,1],p:[{example:"0.962",require:"m",repeat:"n",type:"rangenumber"}]},{n:"MODE_SNGL",t:1,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"o",repeat:"y",type:"rangenumber"}]},{n:"WEIBULL_DIST",t:1,m:[4,4],p:[{example:"2.4",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"3",require:"m",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"COUNT",t:1,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangeall"},{example:"B2:B100",require:"o",repeat:"y",type:"rangeall"}]},{n:"COUNTA",t:1,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangeall"},{example:"B2:B100",require:"o",repeat:"y",type:"rangeall"}]},{n:"AVEDEV",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"AVERAGE",t:1,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangeall"},{example:"B2:B100",require:"o",repeat:"y",type:"rangeall"}]},{n:"AVERAGEA",t:1,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangeall"},{example:"B2:B100",require:"o",repeat:"y",type:"rangeall"}]},{n:"BINOM_DIST",t:1,m:[4,4],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"0.005",require:"m",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"BINOM_INV",t:1,m:[3,3],p:[{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"0.005",require:"m",repeat:"n",type:"rangenumber"},{example:"0.8",require:"m",repeat:"n",type:"rangenumber"}]},{n:"CONFIDENCE_NORM",t:1,m:[3,3],p:[{example:"0.05",require:"m",repeat:"n",type:"rangenumber"},{example:"1.6",require:"m",repeat:"n",type:"rangenumber"},{example:"250",require:"m",repeat:"n",type:"rangenumber"}]},{n:"CORREL",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"COVARIANCE_P",t:1,m:[2,2],p:[{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"},{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"COVARIANCE_S",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"DEVSQ",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"EXPON_DIST",t:1,m:[3,3],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"0.5",require:"m",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"AVERAGEIF",t:1,m:[2,3],p:[{example:"A1:A10",require:"m",repeat:"n",type:"rangeall"},{example:'">20"',require:"m",repeat:"n",type:"rangeall"},{example:"B1:B10",require:"o",repeat:"n",type:"rangeall"}]},{n:"AVERAGEIFS",t:1,m:[2,255],p:[{example:"A1:A10",require:"m",repeat:"n",type:"rangeall"},{example:" B1:B10",require:"m",repeat:"n",type:"rangeall"},{example:' ">20"',require:"m",repeat:"n",type:"rangeall"},{example:" C1:C10",require:"m",repeat:"n",type:"rangeall"}]},{n:"PERMUT",t:1,m:[2,2],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"TRIMMEAN",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"range"},{example:"0.1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"PERCENTILE_EXC",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"0.25",require:"m",repeat:"n",type:"rangenumber"}]},{n:"PERCENTILE_INC",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"0.25",require:"m",repeat:"n",type:"rangenumber"}]},{n:"PEARSON",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"NORM_S_INV",t:1,m:[1,1],p:[{example:"0.75",require:"m",repeat:"n",type:"rangenumber"}]},{n:"NORM_S_DIST",t:1,m:[2,2],p:[{example:"2.4",require:"m",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"NORM_INV",t:1,m:[3,3],p:[{example:"0.75",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"NORM_DIST",t:1,m:[4,4],p:[{example:"2.4",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"NEGBINOM_DIST",t:1,m:[4,4],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"0.1",require:"m",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"MINA",t:1,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"o",repeat:"y",type:"rangenumber"}]},{n:"MIN",t:1,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"o",repeat:"y",type:"rangenumber"}]},{n:"MEDIAN",t:1,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"o",repeat:"y",type:"rangenumber"}]},{n:"MAXA",t:1,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"o",repeat:"y",type:"rangenumber"}]},{n:"MAX",t:1,m:[1,255],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"o",repeat:"y",type:"rangenumber"}]},{n:"LOGNORM_INV",t:1,m:[3,3],p:[{example:"0.4",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"6",require:"m",repeat:"n",type:"rangenumber"}]},{n:"LOGNORM_DIST",t:1,m:[4,4],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"6",require:"m",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"Z_TEST",t:1,m:[2,3],p:[{example:"A2:A100",require:"m",repeat:"n",type:"range"},{example:"B2",require:"m",repeat:"n",type:"rangenumber"},{example:"3",require:"o",repeat:"n",type:"rangenumber"}]},{n:"PROB",t:1,m:[3,4],p:[{example:"A3:A6",require:"m",repeat:"n",type:"range"},{example:"2",require:"m",repeat:"n",type:"range"},{example:"3",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"o",repeat:"n",type:"rangenumber"}]},{n:"QUARTILE_EXC",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"3",require:"m",repeat:"n",type:"rangenumber"}]},{n:"QUARTILE_INC",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"3",require:"m",repeat:"n",type:"rangenumber"}]},{n:"POISSON_DIST",t:1,m:[3,3],p:[{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"RSQ",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"T_DIST",t:1,m:[3,3],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"},{example:"30",require:"m",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"T_DIST_2T",t:1,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"},{example:"30",require:"m",repeat:"n",type:"rangenumber"}]},{n:"T_DIST_RT",t:1,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"},{example:"30",require:"m",repeat:"n",type:"rangenumber"}]},{n:"T_INV",t:1,m:[2,2],p:[{example:"0.35",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"T_INV_2T",t:1,m:[2,2],p:[{example:"0.35",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"T_TEST",t:1,m:[4,4],p:[{example:"A1:A4",require:"m",repeat:"n",type:"rangenumber"},{example:"B1:B4",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"F_DIST",t:1,m:[4,4],p:[{example:"15.35",require:"m",repeat:"n",type:"rangenumber"},{example:"7",require:"m",repeat:"n",type:"rangenumber"},{example:"6",require:"m",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"m",repeat:"n",type:"rangeall"}]},{n:"F_DIST_RT",t:1,m:[3,3],p:[{example:"15.35",require:"m",repeat:"n",type:"rangenumber"},{example:"7",require:"m",repeat:"n",type:"rangenumber"},{example:"6",require:"m",repeat:"n",type:"rangenumber"}]},{n:"VAR_P",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"VAR_S",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"VARA",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"VARPA",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"y",type:"rangenumber"}]},{n:"STEYX",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"STANDARDIZE",t:1,m:[3,3],p:[{example:"96",require:"m",repeat:"n",type:"rangenumber"},{example:"80",require:"m",repeat:"n",type:"rangenumber"},{example:"6.7",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SMALL",t:1,m:[2,2],p:[{example:"A2:B100",require:"m",repeat:"n",type:"range"},{example:"4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SLOPE",t:1,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SKEW",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"o",repeat:"y",type:"rangeall"}]},{n:"SKEW_P",t:1,m:[1,255],p:[{example:"1",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"o",repeat:"y",type:"rangeall"}]},{n:"VLOOKUP",t:2,m:[3,4],p:[{example:"10003",require:"m",repeat:"n",type:"rangeall"},{example:"A2:B26",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"HLOOKUP",t:2,m:[3,4],p:[{example:"10003",require:"m",repeat:"n",type:"rangeall"},{example:"A2:Z6",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"LOOKUP",t:2,m:[2,3],p:[{example:"10003",require:"m",repeat:"n",type:"rangeall"},{example:"A1:A100",require:"m",repeat:"n",type:"rangeall"},{example:"B1:B100",require:"o",repeat:"n",type:"rangeall"}]},{n:"ADDRESS",t:2,m:[2,5],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"o",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"o",repeat:"n",type:"rangeall"},{example:'"Sheet2"',require:"o",repeat:"n",type:"rangeall"}]},{n:"INDIRECT",t:2,m:[1,2],p:[{example:'"Sheet2!"&B10',require:"m",repeat:"n",type:"rangeall"},{example:"FALSE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"ROW",t:2,m:[0,1],p:[{example:"A9",require:"o",repeat:"n",type:"rangeall"}]},{n:"ROWS",t:2,m:[1,1],p:[{example:"A9:A62",require:"m",repeat:"n",type:"rangenumber"}]},{n:"COLUMN",t:2,m:[0,1],p:[{example:"A9",require:"o",repeat:"n",type:"rangeall"}]},{n:"COLUMNS",t:2,m:[1,1],p:[{example:"A9:W62",require:"m",repeat:"n",type:"rangenumber"}]},{n:"OFFSET",t:2,m:[3,5],p:[{example:"A2",require:"m",repeat:"n",type:"range"},{example:"3",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"n",type:"rangenumber"}]},{n:"MATCH",t:2,m:[2,3],p:[{example:'"Sunday"',require:"m",repeat:"n",type:"rangeall"},{example:"A2:A9",require:"m",repeat:"n",type:"range"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"INDEX",t:2,m:[2,3],p:[{example:"A1:C20",require:"m",repeat:"n",type:"range"},{example:"5",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"GETPIVOTDATA",t:2,m:[2,254],p:[{example:'"SUM of number of units"',require:"m",repeat:"n",type:"rangeall"},{example:"'Pivot table'!A1",require:"m",repeat:"n",type:"rangeall"},{example:'"division"',require:"o",repeat:"y",type:"rangeall"},{example:'"east"',require:"o",repeat:"y",type:"rangeall"}]},{n:"CHOOSE",t:2,m:[2,255],p:[{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:'"A"',require:"m",repeat:"n",type:"rangeall"},{example:'"B"',require:"o",repeat:"y",type:"rangeall"}]},{n:"HYPERLINK",t:2,p:[{example:'"http://www.luckysheet.com/"',require:"m",repeat:"n",type:"rangeall"},{example:'"luckysheet"',require:"m",repeat:"n",type:"rangeall"}]},{n:"TIME",t:6,m:[3,3],p:[{example:"11",require:"m",repeat:"n",type:"rangenumber"},{example:"40",require:"m",repeat:"n",type:"rangenumber"},{example:"59",require:"m",repeat:"n",type:"rangenumber"}]},{n:"TIMEVALUE",t:6,m:[1,1],p:[{example:'"2:15 PM"',require:"m",repeat:"n",type:"rangeall"}]},{n:"EOMONTH",t:6,m:[2,2],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"m",repeat:"n",type:"rangenumber"}]},{n:"EDATE",t:6,m:[2,2],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SECOND",t:6,m:[1,1],p:[{example:"TIME(11",require:"m",repeat:"n",type:"rangeall"}]},{n:"MINUTE",t:6,m:[1,1],p:[{example:"TIME(11",require:"m",repeat:"n",type:"rangeall"}]},{n:"HOUR",t:6,m:[1,1],p:[{example:"TIME(11",require:"m",repeat:"n",type:"rangeall"}]},{n:"NOW",t:6,m:[0,0],p:[]},{n:"NETWORKDAYS",t:6,m:[2,3],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"m",repeat:"n",type:"rangeall"},{example:"16)",require:"o",repeat:"n",type:"rangeall"}]},{n:"NETWORKDAYS_INTL",t:6,m:[2,4],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"m",repeat:"n",type:"rangeall"},{example:"16)",require:"o",repeat:"n",type:"rangeall"},{example:"DATE(1969",require:"o",repeat:"n",type:"rangeall"}]},{n:"ISOWEEKNUM",t:6,m:[1,1],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"}]},{n:"WEEKNUM",t:6,m:[1,2],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"o",repeat:"n",type:"rangenumber"}]},{n:"WEEKDAY",t:6,m:[1,2],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DAY",t:6,m:[1,1],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"}]},{n:"DAYS",t:6,m:[2,2],p:[{example:"2011-3-15",require:"m",repeat:"n",type:"rangeall"},{example:"2011-2-1",require:"m",repeat:"n",type:"rangeall"}]},{n:"DAYS360",t:6,m:[2,3],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"m",repeat:"n",type:"rangeall"},{example:"FALSE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"DATE",t:6,m:[3,3],p:[{example:"1969",require:"m",repeat:"n",type:"rangenumber"},{example:"7",require:"m",repeat:"n",type:"rangenumber"},{example:"20",require:"m",repeat:"n",type:"rangenumber"}]},{n:"DATEVALUE",t:6,m:[1,1],p:[{example:'"1969-7-20"',require:"m",repeat:"n",type:"rangeall"}]},{n:"DATEDIF",t:6,m:[3,3],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"m",repeat:"n",type:"rangeall"},{example:"16)",require:"m",repeat:"n",type:"rangeall"}]},{n:"WORKDAY",t:6,m:[2,3],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"m",repeat:"n",type:"rangenumber"},{example:"16)",require:"o",repeat:"n",type:"rangeall"}]},{n:"WORKDAY_INTL",t:6,m:[2,4],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"m",repeat:"n",type:"rangenumber"},{example:"16)",require:"o",repeat:"n",type:"rangeall"},{example:"DATE(1969",require:"o",repeat:"n",type:"rangeall"}]},{n:"YEAR",t:6,m:[1,1],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"}]},{n:"YEARFRAC",t:6,m:[2,3],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"7",require:"m",repeat:"n",type:"rangeall"},{example:"16)",require:"o",repeat:"n",type:"rangenumber"}]},{n:"TODAY",t:6,m:[0,0],p:[]},{n:"MONTH",t:6,m:[1,1],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"}]},{n:"EFFECT",t:8,m:[2,2],p:[{example:"0.99",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"}]},{n:"DOLLAR",t:12,m:[1,2],p:[{example:"1.2351",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"DOLLARDE",t:8,m:[2,2],p:[{example:"100.10",require:"m",repeat:"n",type:"rangenumber"},{example:"32",require:"m",repeat:"n",type:"rangenumber"}]},{n:"DOLLARFR",t:8,m:[2,2],p:[{example:"100.125",require:"m",repeat:"n",type:"rangenumber"},{example:"32",require:"m",repeat:"n",type:"rangenumber"}]},{n:"DB",t:8,m:[4,5],p:[{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"50",require:"m",repeat:"n",type:"rangenumber"},{example:"10",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"10",require:"m",repeat:"n",type:"rangenumber"}]},{n:"DDB",t:8,m:[4,5],p:[{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"50",require:"m",repeat:"n",type:"rangenumber"},{example:"10",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"2.25",require:"m",repeat:"n",type:"rangenumber"}]},{n:"RATE",t:8,m:[3,6],p:[{example:"12",require:"m",repeat:"n",type:"rangenumber"},{example:"-100",require:"m",repeat:"n",type:"rangenumber"},{example:"400",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"},{example:"0.1",require:"o",repeat:"n",type:"rangenumber"}]},{n:"CUMPRINC",t:8,m:[6,6],p:[{example:"0.12",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"},{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"5",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"m",repeat:"n",type:"rangenumber"}]},{n:"COUPNUM",t:8,m:[3,4],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"02",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"SYD",t:8,m:[4,4],p:[{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"50",require:"m",repeat:"n",type:"rangenumber"},{example:"10",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"TBILLEQ",t:8,m:[3,3],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"m",repeat:"n",type:"rangeall"},{example:"2)",require:"m",repeat:"n",type:"rangenumber"}]},{n:"TBILLYIELD",t:8,m:[3,3],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"95",require:"m",repeat:"n",type:"rangenumber"}]},{n:"TBILLPRICE",t:8,m:[3,3],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"0.09",require:"m",repeat:"n",type:"rangenumber"}]},{n:"PV",t:8,m:[3,5],p:[{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"},{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"D2",require:"o",repeat:"n",type:"rangenumber"},{example:"1",require:"o",repeat:"n",type:"rangenumber"}]},{n:"ACCRINT",t:8,m:[6,8],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"0.1",require:"m",repeat:"n",type:"rangenumber"},{example:"10000",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"ACCRINTM",t:8,m:[4,5],p:[{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(1969",require:"m",repeat:"n",type:"rangeall"},{example:"0.1",require:"m",repeat:"n",type:"rangenumber"},{example:"1000",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"}]},{n:"COUPDAYBS",t:8,m:[3,4],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"COUPDAYS",t:8,m:[3,4],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"COUPDAYSNC",t:8,m:[3,4],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"COUPNCD",t:8,m:[3,4],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"01)",require:"m",repeat:"n",type:"rangenumber"},{example:"DATE(2019",require:"o",repeat:"n",type:"rangenumber"}]},{n:"COUPPCD",t:8,m:[3,4],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"01)",require:"m",repeat:"n",type:"rangenumber"},{example:"DATE(2019",require:"o",repeat:"n",type:"rangenumber"}]},{n:"FV",t:8,m:[3,5],p:[{example:"0.12",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"},{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"400",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"FVSCHEDULE",t:8,m:[2,2],p:[{example:"10000",require:"m",repeat:"n",type:"rangenumber"},{example:"A2:A100",require:"m",repeat:"n",type:"range"}]},{n:"YIELD",t:8,m:[6,7],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"0.057",require:"m",repeat:"n",type:"rangenumber"},{example:"95",require:"m",repeat:"n",type:"rangenumber"},{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"m",repeat:"n",type:"rangenumber"}]},{n:"YIELDDISC",t:8,m:[4,5],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"95",require:"m",repeat:"n",type:"rangenumber"},{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"m",repeat:"n",type:"rangenumber"}]},{n:"NOMINAL",t:8,m:[2,2],p:[{example:"0.85",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"}]},{n:"XIRR",t:8,m:[2,3],p:[{example:"B2:B25",require:"m",repeat:"n",type:"range"},{example:"C2:C25",require:"m",repeat:"n",type:"range"},{example:"250",require:"o",repeat:"n",type:"rangenumber"}]},{n:"MIRR",t:8,m:[3,3],p:[{example:"A2:A25",require:"m",repeat:"n",type:"range"},{example:"0.1",require:"m",repeat:"n",type:"rangenumber"},{example:"0.12",require:"m",repeat:"n",type:"rangenumber"}]},{n:"IRR",t:8,m:[1,2],p:[{example:"A2:A25",require:"m",repeat:"n",type:"range"},{example:"200",require:"o",repeat:"n",type:"rangenumber"}]},{n:"NPV",t:8,m:[2,255],p:[{example:"0.1",require:"m",repeat:"n",type:"rangenumber"},{example:"200",require:"m",repeat:"n",type:"rangeall"},{example:"250",require:"o",repeat:"y",type:"rangeall"}]},{n:"XNPV",t:8,m:[3,3],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B25",require:"m",repeat:"n",type:"range"},{example:"C2:C25",require:"m",repeat:"n",type:"range"}]},{n:"CUMIPMT",t:8,m:[6,6],p:[{example:"0.12",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"},{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"5",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"m",repeat:"n",type:"rangenumber"}]},{n:"PMT",t:8,m:[3,5],p:[{example:"0.08",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"},{example:" 100000",require:"m",repeat:"n",type:"rangenumber"},{example:"D2",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"IPMT",t:8,m:[4,6],p:[{example:"0.1",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"},{example:"80000",require:"m",repeat:"n",type:"rangenumber"},{example:"E2",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"}]},{n:"PPMT",t:8,m:[4,6],p:[{example:"0.1",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"3*12",require:"m",repeat:"n",type:"rangenumber"},{example:"100000",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"INTRATE",t:8,m:[4,5],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"100000",require:"m",repeat:"n",type:"rangenumber"},{example:"101200",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"m",repeat:"n",type:"rangenumber"}]},{n:"PRICE",t:8,m:[6,7],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"0.057",require:"m",repeat:"n",type:"rangenumber"},{example:"0.065",require:"m",repeat:"n",type:"rangenumber"},{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"PRICEDISC",t:8,m:[4,5],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"0.0525",require:"m",repeat:"n",type:"rangenumber"},{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"PRICEMAT",t:8,m:[5,6],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"0.061",require:"m",repeat:"n",type:"rangenumber"},{example:"0.061",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"RECEIVED",t:8,m:[4,5],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"10000000",require:"m",repeat:"n",type:"rangenumber"},{example:"0.0575",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DISC",t:8,m:[4,5],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"97.975",require:"m",repeat:"n",type:"rangenumber"},{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"12",require:"o",repeat:"n",type:"rangenumber"}]},{n:"NPER",t:8,m:[3,5],p:[{example:"0.12",require:"m",repeat:"n",type:"rangenumber"},{example:"500",require:"m",repeat:"n",type:"rangenumber"},{example:"40000",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"SLN",t:8,m:[3,3],p:[{example:"300000",require:"m",repeat:"n",type:"rangenumber"},{example:"75000",require:"m",repeat:"n",type:"rangenumber"},{example:"10",require:"m",repeat:"n",type:"rangenumber"}]},{n:"DURATION",t:8,m:[5,6],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"0.08",require:"m",repeat:"n",type:"rangenumber"},{example:"0.09",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"MDURATION",t:8,m:[5,6],p:[{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"DATE(2010",require:"m",repeat:"n",type:"rangeall"},{example:"0.08",require:"m",repeat:"n",type:"rangenumber"},{example:"0.09",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"BIN2DEC",t:9,m:[1,1],p:[{example:"101",require:"m",repeat:"n",type:"rangeall"}]},{n:"BIN2HEX",t:9,m:[1,2],p:[{example:"101",require:"m",repeat:"n",type:"rangeall"},{example:"8",require:"o",repeat:"n",type:"rangenumber"}]},{n:"BIN2OCT",t:9,m:[1,2],p:[{example:"101",require:"m",repeat:"n",type:"rangeall"},{example:"8",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DEC2BIN",t:9,m:[1,2],p:[{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"8",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DEC2HEX",t:9,m:[1,2],p:[{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"8",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DEC2OCT",t:9,m:[1,2],p:[{example:"100",require:"m",repeat:"n",type:"rangenumber"},{example:"8",require:"o",repeat:"n",type:"rangenumber"}]},{n:"HEX2BIN",t:9,m:[1,2],p:[{example:'"f3"',require:"m",repeat:"n",type:"rangeall"},{example:"8",require:"o",repeat:"n",type:"rangenumber"}]},{n:"HEX2DEC",t:9,m:[1,1],p:[{example:'"f3"',require:"m",repeat:"n",type:"rangeall"}]},{n:"HEX2OCT",t:9,m:[1,2],p:[{example:'"f3"',require:"m",repeat:"n",type:"rangeall"},{example:"8",require:"o",repeat:"n",type:"rangenumber"}]},{n:"OCT2BIN",t:9,m:[1,2],p:[{example:"37",require:"m",repeat:"n",type:"rangeall"},{example:"8",require:"o",repeat:"n",type:"rangenumber"}]},{n:"OCT2DEC",t:9,m:[1,1],p:[{example:"37",require:"m",repeat:"n",type:"rangeall"}]},{n:"OCT2HEX",t:9,m:[1,2],p:[{example:"37",require:"m",repeat:"n",type:"rangeall"},{example:"8",require:"o",repeat:"n",type:"rangenumber"}]},{n:"COMPLEX",t:9,m:[2,3],p:[{example:"3",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:'"j"',require:"o",repeat:"n",type:"rangestring"}]},{n:"IMREAL",t:9,m:[1,1],p:[{example:'"4+5i"',require:"m",repeat:"n",type:"rangeall"}]},{n:"IMAGINARY",t:9,m:[1,1],p:[{example:'"4+5i"',require:"m",repeat:"n",type:"rangeall"}]},{n:"IMCONJUGATE",t:9,m:[1,1],p:[{example:'"3+4i"',require:"m",repeat:"n",type:"rangeall"}]},{n:"IMABS",t:9,m:[1,1],p:[{example:'"3+4i"',require:"m",repeat:"n",type:"rangeall"}]},{n:"DELTA",t:9,m:[1,2],p:[{example:"2",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"o",repeat:"n",type:"rangenumber"}]},{n:"IMSUM",t:9,m:[1,255],p:[{example:'"3+4i"',require:"m",repeat:"n",type:"rangeall"},{example:'"5-3i"',require:"o",repeat:"y",type:"rangeall"}]},{n:"IMSUB",t:9,m:[2,2],p:[{example:'"6+5i"',require:"m",repeat:"n",type:"rangeall"},{example:'"2+3i"',require:"m",repeat:"n",type:"rangeall"}]},{n:"IMPRODUCT",t:9,m:[1,255],p:[{example:'"3+4i"',require:"m",repeat:"n",type:"rangeall"},{example:'"5-3i"',require:"o",repeat:"y",type:"rangeall"}]},{n:"IMDIV",t:9,m:[2,2],p:[{example:'"11+16i"',require:"m",repeat:"n",type:"rangeall"},{example:'"3+2i"',require:"m",repeat:"n",type:"rangeall"}]},{n:"NOT",t:10,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"TRUE",t:10,m:[0,0],p:[]},{n:"FALSE",t:10,m:[0,0],p:[]},{n:"AND",t:10,m:[1,255],p:[{example:'A2 = "foo"',require:"m",repeat:"n",type:"rangeall"},{example:'A3 = "bar"',require:"o",repeat:"y",type:"rangeall"}]},{n:"IFERROR",t:10,m:[2,2],p:[{example:"A1",require:"m",repeat:"n",type:"rangeall"},{example:'"Error in cell A1"',require:"m",repeat:"n",type:"rangeall"}]},{n:"IF",t:10,m:[2,3],p:[{example:'A2 = "foo"',require:"m",repeat:"n",type:"rangeall"},{example:'"A2 is foo"',require:"m",repeat:"n",type:"rangeall"},{example:'"A2 was false"',require:"o",repeat:"n",type:"rangeall"}]},{n:"OR",t:10,m:[1,255],p:[{example:'A2 = "foo"',require:"m",repeat:"n",type:"rangeall"},{example:' A3 = "bar"',require:"m",repeat:"n",type:"rangeall"}]},{n:"NE",t:11,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"},{example:"A3",require:"m",repeat:"n",type:"rangeall"}]},{n:"EQ",t:11,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"},{example:"A3",require:"m",repeat:"n",type:"rangeall"}]},{n:"GT",t:11,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"},{example:"A3",require:"m",repeat:"n",type:"rangeall"}]},{n:"GTE",t:11,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"},{example:"A3",require:"m",repeat:"n",type:"rangeall"}]},{n:"LT",t:11,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"},{example:"A3",require:"m",repeat:"n",type:"rangeall"}]},{n:"LTE",t:11,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"},{example:"A3",require:"m",repeat:"n",type:"rangeall"}]},{n:"ADD",t:11,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"},{example:"A3",require:"m",repeat:"n",type:"rangenumber"}]},{n:"MINUS",t:11,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"},{example:"A3",require:"m",repeat:"n",type:"rangenumber"}]},{n:"MULTIPLY",t:11,m:[2,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"},{example:"B2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"DIVIDE",t:11,m:[2,2],p:[{example:"4",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"CONCAT",t:11,m:[2,2],p:[{example:'"de"',require:"m",repeat:"n",type:"rangeall"},{example:'"mystify"',require:"m",repeat:"n",type:"rangeall"}]},{n:"UNARY_PERCENT",t:11,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"CONCATENATE",t:12,m:[1,255],p:[{example:'"Super"',require:"m",repeat:"n",type:"rangeall"},{example:'"calla"',require:"o",repeat:"y",type:"rangeall"}]},{n:"CODE",t:12,m:[1,1],p:[{example:'"a"',require:"m",repeat:"n",type:"rangeall"}]},{n:"CHAR",t:12,m:[1,1],p:[{example:"97",require:"m",repeat:"n",type:"rangenumber"}]},{n:"ARABIC",t:12,m:[1,1],p:[{example:'"XIV"',require:"m",repeat:"n",type:"rangeall"}]},{n:"ROMAN",t:12,m:[1,1],p:[{example:"499",require:"m",repeat:"n",type:"rangenumber"}]},{n:"REGEXEXTRACT",t:12,m:[2,2],p:[{example:'"Needle in a haystack"',require:"m",repeat:"n",type:"rangeall"},{example:'".e{2}dle"',require:"m",repeat:"n",type:"rangeall"}]},{n:"REGEXMATCH",t:12,m:[2,2],p:[{example:'"Spreadsheets"',require:"m",repeat:"n",type:"rangeall"},{example:'"S.r"',require:"m",repeat:"n",type:"rangeall"}]},{n:"REGEXREPLACE",t:12,m:[3,3],p:[{example:'"Spreadsheets"',require:"m",repeat:"n",type:"rangeall"},{example:'"S.*d"',require:"m",repeat:"n",type:"rangeall"},{example:'"Bed"',require:"m",repeat:"n",type:"rangeall"}]},{n:"T",t:12,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"FIXED",t:12,m:[1,3],p:[{example:"3.141592653",require:"m",repeat:"n",type:"rangenumber"},{example:"2",require:"o",repeat:"n",type:"rangenumber"},{example:"FALSE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"FIND",t:12,m:[2,3],p:[{example:'"n"',require:"m",repeat:"n",type:"rangeall"},{example:"A2",require:"m",repeat:"n",type:"rangeall"},{example:"14",require:"o",repeat:"n",type:"rangenumber"}]},{n:"FINDB",t:12,m:[2,3],p:[{example:'"new"',require:"m",repeat:"n",type:"rangeall"},{example:'"new year"',require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"o",repeat:"n",type:"rangenumber"}]},{n:"JOIN",t:12,m:[2,255],p:[{example:'" and-a "',require:"m",repeat:"n",type:"rangeall"},{example:"{1",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"o",repeat:"y",type:"rangeall"}]},{n:"LEFT",t:12,m:[1,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"RIGHT",t:12,m:[1,2],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"},{example:"2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"MID",t:12,m:[3,3],p:[{example:'"get this"',require:"m",repeat:"n",type:"rangeall"},{example:"5",require:"m",repeat:"n",type:"rangenumber"},{example:"4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"LEN",t:12,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"LENB",t:12,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"LOWER",t:12,m:[1,1],p:[{example:'"LOREM IPSUM"',require:"m",repeat:"n",type:"rangeall"}]},{n:"UPPER",t:12,m:[1,1],p:[{example:'"lorem ipsum"',require:"m",repeat:"n",type:"rangeall"}]},{n:"EXACT",t:12,m:[2,2],p:[{example:"A1",require:"m",repeat:"n",type:"rangeall"},{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"REPLACE",t:12,m:[4,4],p:[{example:'"Spreadsheets"',require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"6",require:"m",repeat:"n",type:"rangenumber"},{example:'"Bed"',require:"m",repeat:"n",type:"rangeall"}]},{n:"REPT",t:12,m:[2,2],p:[{example:'"ha"',require:"m",repeat:"n",type:"rangeall"},{example:"4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SEARCH",t:12,m:[2,3],p:[{example:'"n"',require:"m",repeat:"n",type:"rangeall"},{example:"A2",require:"m",repeat:"n",type:"rangeall"},{example:"14",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SUBSTITUTE",t:12,m:[3,4],p:[{example:'"search for it"',require:"m",repeat:"n",type:"rangeall"},{example:'"search for"',require:"m",repeat:"n",type:"rangeall"},{example:'"Google"',require:"m",repeat:"n",type:"rangeall"},{example:"3",require:"m",repeat:"n",type:"rangenumber"}]},{n:"CLEAN",t:12,m:[1,1],p:[{example:'"AF"&CHAR(31)',require:"m",repeat:"n",type:"rangeall"}]},{n:"TEXT",t:12,m:[2,2],p:[{example:"1.23",require:"m",repeat:"n",type:"rangenumber"},{example:'"$0.00"',require:"m",repeat:"n",type:"rangeall"}]},{n:"TRIM",t:12,m:[1,1],p:[{example:'" lorem ipsum"',require:"m",repeat:"n",type:"rangeall"}]},{n:"VALUE",t:12,m:[1,1],p:[{example:'"123"',require:"m",repeat:"n",type:"rangeall"}]},{n:"PROPER",t:12,m:[1,1],p:[{example:'"united states"',require:"m",repeat:"n",type:"rangeall"}]},{n:"CONVERT",t:13,m:[3,3],p:[{example:"5.1",require:"m",repeat:"n",type:"rangenumber"},{example:'"g"',require:"m",repeat:"n",type:"rangeall"},{example:'"kg"',require:"m",repeat:"n",type:"rangeall"}]},{n:"SUMX2MY2",t:14,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SUMX2PY2",t:14,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SUMXMY2",t:14,m:[2,2],p:[{example:"A2:A100",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B100",require:"m",repeat:"n",type:"rangenumber"}]},{n:"TRANSPOSE",t:14,m:[1,1],p:[{example:"{1,2}",require:"m",repeat:"n",type:"range"}]},{n:"TREND",t:14,m:[1,4],p:[{example:"B2:B10",require:"m",repeat:"n",type:"rangenumber"},{example:"A2:A10",require:"o",repeat:"n",type:"rangenumber"},{example:"A11:A13",require:"o",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"FREQUENCY",t:14,m:[2,2],p:[{example:"A2:A40",require:"m",repeat:"n",type:"rangenumber"},{example:"B2:B5",require:"m",repeat:"n",type:"rangenumber"}]},{n:"GROWTH",t:14,m:[1,4],p:[{example:"B2:B10",require:"m",repeat:"n",type:"rangenumber"},{example:"A2:A10",require:"o",repeat:"n",type:"rangenumber"},{example:"A11:A13",require:"o",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"LINEST",t:14,m:[1,4],p:[{example:"B2:B10",require:"m",repeat:"n",type:"rangenumber"},{example:"A2:A10",require:"o",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"LOGEST",t:14,m:[1,4],p:[{example:"B2:B10",require:"m",repeat:"n",type:"rangenumber"},{example:"A2:A10",require:"o",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"MDETERM",t:14,m:[1,1],p:[{example:"A1:D4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"MINVERSE",t:14,m:[1,1],p:[{example:"A1:D4",require:"m",repeat:"n",type:"rangenumber"}]},{n:"MMULT",t:14,m:[2,2],p:[{example:"A1:B3",require:"m",repeat:"n",type:"rangenumber"},{example:"C1:F2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"SUMPRODUCT",t:14,m:[1,255],p:[{example:"A2:C5",require:"m",repeat:"n",type:"rangenumber"},{example:"D2:F5",require:"o",repeat:"y",type:"rangenumber"}]},{n:"ISFORMULA",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"range"}]},{n:"CELL",t:15,m:[2,2],p:[{example:'"type"',require:"m",repeat:"n",type:"rangeall"},{example:"C2",require:"m",repeat:"n",type:"range"}]},{n:"NA",t:15,m:[0,0],p:[]},{n:"ERROR_TYPE",t:15,m:[1,1],p:[{example:"A3",require:"m",repeat:"n",type:"rangeall"}]},{n:"ISBLANK",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"range"}]},{n:"ISERR",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"ISERROR",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"ISLOGICAL",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"ISNA",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"ISNONTEXT",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"ISNUMBER",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"ISREF",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"range"}]},{n:"ISTEXT",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"TYPE",t:15,m:[1,1],p:[{example:"C4",require:"m",repeat:"n",type:"rangeall"}]},{n:"N",t:15,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangeall"}]},{n:"TO_DATE",t:16,m:[1,1],p:[{example:"25405",require:"m",repeat:"n",type:"rangenumber"}]},{n:"TO_PURE_NUMBER",t:16,m:[1,1],p:[{example:"50%",require:"m",repeat:"n",type:"rangeall"}]},{n:"TO_TEXT",t:16,m:[1,1],p:[{example:"24",require:"m",repeat:"n",type:"rangeall"}]},{n:"TO_DOLLARS",t:16,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"TO_PERCENT",t:16,m:[1,1],p:[{example:"A2",require:"m",repeat:"n",type:"rangenumber"}]},{n:"DGET",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DMAX",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DMIN",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DAVERAGE",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DCOUNT",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DCOUNTA",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DPRODUCT",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DSTDEV",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DSTDEVP",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DSUM",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DVAR",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"DVARP",t:17,m:[3,3],p:[{example:"A2:F20",require:"m",repeat:"n",type:"range"},{example:"G2",require:"m",repeat:"n",type:"rangeall"},{example:"A22:D23",require:"m",repeat:"n",type:"range"}]},{n:"AGE_BY_IDCARD",t:"3",m:[1,2],p:[{example:"A1",require:"m",repeat:"n",type:"rangeall"},{example:'"2017-10-01"',require:"o",repeat:"n",type:"rangedatetime"}]},{n:"SEX_BY_IDCARD",t:"3",m:[1,1],p:[{example:'"31033519900101XXXX"',require:"m",repeat:"n",type:"rangeall"}]},{n:"BIRTHDAY_BY_IDCARD",t:"3",m:[1,2],p:[{example:'"31033519900101XXXX"',require:"m",repeat:"n",type:"rangeall"},{example:"0",require:"o",repeat:"n",type:"rangeall"}]},{n:"PROVINCE_BY_IDCARD",t:"3",m:[1,1],p:[{example:'"31033519900101XXXX"',require:"m",repeat:"n",type:"rangeall"}]},{n:"CITY_BY_IDCARD",t:"3",m:[1,1],p:[{example:'"31033519900101XXXX"',require:"m",repeat:"n",type:"rangeall"}]},{n:"STAR_BY_IDCARD",t:"3",m:[1,1],p:[{example:'"31033519900101XXXX"',require:"m",repeat:"n",type:"rangeall"}]},{n:"ANIMAL_BY_IDCARD",t:"3",m:[1,1],p:[{example:'"31033519900101XXXX"',require:"m",repeat:"n",type:"rangeall"}]},{n:"ISIDCARD",t:"3",m:[1,1],p:[{example:'"31033519900101XXXX"',require:"m",repeat:"n",type:"rangeall"}]},{n:"DM_TEXT_CUTWORD",t:"4",m:[1,2],p:[{example:'"I came to Beijing Tsinghua University"',require:"m",repeat:"n",type:"rangeall"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DM_TEXT_TFIDF",t:"4",m:[1,3],p:[{example:'"I came to Beijing Tsinghua University"',require:"m",repeat:"n",type:"rangeall"},{example:"20",require:"o",repeat:"n",type:"rangenumber"},{example:"1",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DM_TEXT_TEXTRANK",t:"4",m:[1,3],p:[{example:'"I came to Beijing Tsinghua University"',require:"m",repeat:"n",type:"rangeall"},{example:"20",require:"o",repeat:"n",type:"rangenumber"},{example:"1",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DATA_CN_STOCK_CLOSE",t:"5",m:[1,3],p:[{example:'"000001"',require:"m",repeat:"n",type:"rangeall"},{example:"2015-01-08",require:"o",repeat:"n",type:"rangedate"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DATA_CN_STOCK_OPEN",t:"5",m:[1,3],p:[{example:'"000001"',require:"m",repeat:"n",type:"rangeall"},{example:"2015-01-08",require:"o",repeat:"n",type:"rangedate"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DATA_CN_STOCK_MAX",t:"5",m:[1,3],p:[{example:'"000001"',require:"m",repeat:"n",type:"rangeall"},{example:"2015-01-08",require:"o",repeat:"n",type:"rangedate"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DATA_CN_STOCK_MIN",t:"5",m:[1,3],p:[{example:'"000001"',require:"m",repeat:"n",type:"rangeall"},{example:"2015-01-08",require:"o",repeat:"n",type:"rangedate"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DATA_CN_STOCK_VOLUMN",t:"5",m:[1,3],p:[{example:'"000001"',require:"m",repeat:"n",type:"rangeall"},{example:"2015-01-08",require:"o",repeat:"n",type:"rangedate"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"DATA_CN_STOCK_AMOUNT",t:"5",m:[1,3],p:[{example:'"000001"',require:"m",repeat:"n",type:"rangeall"},{example:"2015-01-08",require:"o",repeat:"n",type:"rangedate"},{example:"0",require:"o",repeat:"n",type:"rangenumber"}]},{n:"ISDATE",t:"6",m:[1,1],p:[{example:'"1990-01-01"',require:"m",repeat:"n",type:"rangeall"}]},{n:"LINESPLINES",t:"3",m:[1,8],p:[{example:"A1:A20",require:"m",repeat:"n",type:"rangeall"},{example:"#2ec7c9",require:"o",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"},{example:"avg",require:"o",repeat:"n",type:"rangeall"},{example:"#000",require:"o",repeat:"n",type:"rangeall"},{example:"#fc5c5c",require:"o",repeat:"n",type:"rangeall"},{example:"#fc5c5c",require:"o",repeat:"n",type:"rangeall"},{example:"1.5",require:"o",repeat:"n",type:"rangeall"}]},{n:"AREASPLINES",t:"3",m:[1,5],p:[{example:"A1:A20",require:"m",repeat:"n",type:"rangeall"},{example:"#2ec7c9",require:"o",repeat:"n",type:"rangeall"},{example:"#CCF3F4",require:"o",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"},{example:"avg",require:"o",repeat:"n",type:"rangeall"},{example:"#000",require:"o",repeat:"n",type:"rangeall"}]},{n:"COLUMNSPLINES",t:"3",m:[1,6],p:[{example:"A1:A20",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"},{example:"#fc5c5c",require:"o",repeat:"n",type:"rangeall"},{example:"#97b552",require:"o",repeat:"n",type:"rangeall"},{example:"100",require:"o",repeat:"n",type:"rangeall"},{example:"#97b552",require:"o",repeat:"y",type:"rangeall"}]},{n:"STACKCOLUMNSPLINES",t:"3",m:[1,5],p:[{example:"A1:A20",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"},{example:"100",require:"o",repeat:"n",type:"rangeall"},{example:"#97b552",require:"o",repeat:"y",type:"rangeall"}]},{n:"BARSPLINES",t:"3",m:[1,6],p:[{example:"A1:A20",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"},{example:"#fc5c5c",require:"o",repeat:"n",type:"rangeall"},{example:"#97b552",require:"o",repeat:"n",type:"rangeall"},{example:"100",require:"o",repeat:"n",type:"rangeall"},{example:"#97b552",require:"o",repeat:"y",type:"rangeall"}]},{n:"STACKBARSPLINES",t:"3",m:[1,5],p:[{example:"A1:A20",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"},{example:"100",require:"o",repeat:"n",type:"rangeall"},{example:"#97b552",require:"o",repeat:"y",type:"rangeall"}]},{n:"DISCRETESPLINES",t:"3",m:[1,4],p:[{example:"A1:A20",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"},{example:"#2ec7c9",require:"o",repeat:"n",type:"rangeall"},{example:"#fc5c5c",require:"o",repeat:"n",type:"rangeall"}]},{n:"TRISTATESPLINES",t:"3",m:[1,6],p:[{example:"A1:A20",require:"m",repeat:"n",type:"rangeall"},{example:"1",require:"o",repeat:"n",type:"rangeall"},{example:"#fc5c5c",require:"o",repeat:"n",type:"rangeall"},{example:"#97b552",require:"o",repeat:"n",type:"rangeall"},{example:"#999",require:"o",repeat:"n",type:"rangeall"},{example:"#97b552",require:"o",repeat:"y",type:"rangeall"}]},{n:"PIESPLINES",t:"3",m:[1,5],p:[{example:"A1:A20",require:"m",repeat:"n",type:"rangeall"},{example:"0",require:"o",repeat:"n",type:"rangeall"},{example:"0",require:"o",repeat:"n",type:"rangeall"},{example:"#000",require:"o",repeat:"n",type:"rangeall"},{example:"#97b552",require:"o",repeat:"y",type:"rangeall"}]},{n:"BOXSPLINES",t:"3",m:[1,4],p:[{example:"A1:A20",require:"m",repeat:"n",type:"rangeall"},{example:"1.5",require:"o",repeat:"n",type:"rangeall"},{example:"10",require:"o",repeat:"n",type:"rangeall"},{example:"1.5",require:"o",repeat:"n",type:"rangeall"}]},{n:"BULLETSPLINES",t:"3",m:[2,3],p:[{example:"10",require:"m",repeat:"n",type:"rangeall"},{example:"8",require:"m",repeat:"n",type:"rangeall"},{example:"12",require:"o",repeat:"y",type:"rangeall"}]},{n:"COMPOSESPLINES",t:"3",m:[1,1],p:[{example:"PIESPLINES(A1:A20)",require:"m",repeat:"y",type:"rangeall"}]},{n:"SORT",t:"14",m:[1,4],p:[{example:"A2:A17",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"o",repeat:"n",type:"rangenumber"},{example:"-1",require:"o",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"FILTER",t:"14",m:[2,3],p:[{example:"A5:D20",require:"m",repeat:"n",type:"range"},{example:"1",require:"m",repeat:"n",type:"range"},{example:'""',require:"o",repeat:"n",type:"rangeall"}]},{n:"UNIQUE",t:"14",m:[1,3],p:[{example:"A2:B26",require:"m",repeat:"n",type:"rangenumber"},{example:"TRUE()",require:"o",repeat:"n",type:"rangeall"},{example:"FALSE()",require:"o",repeat:"n",type:"rangeall"}]},{n:"RANDARRAY",t:"14",m:[0,2],p:[{example:"1",require:"o",repeat:"n",type:"rangenumber"},{example:"1",require:"o",repeat:"n",type:"rangenumber"}]},{n:"SEQUENCE",t:"14",m:[1,4],p:[{example:"1",require:"m",repeat:"n",type:"rangenumber"},{example:"1",require:"o",repeat:"n",type:"rangenumber"},{example:"1",require:"o",repeat:"n",type:"rangenumber"},{example:"1",require:"o",repeat:"n",type:"rangenumber"}]},{n:"EVALUATE",t:"3",m:[1,1],p:[{example:'"A1+5*2^2"',require:"m",repeat:"n",type:"rangeall"}]},{n:"REMOTE",t:"5",m:[1,1],p:[{example:"SUM(A1:A10000000)",require:"m",repeat:"n",type:"string"}]}]});var Vm,qm=De(()=>{Om();Vm=e=>(rd.forEach(n=>{let t=e[n.n];n.d=t.d,n.a=t.a,n.p.forEach((l,a)=>{Object.assign(l,t.p[a])})}),rd)});var Mk,Hm,jm=De(()=>{Lm();je();yt();qm();Mk=function(e){let n=te(),t=[...Vm(n.functionlist)];for(let a=0;a{$("#luckysheet-icon-undo")[e?"removeClass":"addClass"]("disabled")},10)}function Bk(e){clearTimeout(Um),Um=setTimeout(()=>{$("#luckysheet-icon-redo")[e?"removeClass":"addClass"]("disabled")},10)}var Xm,Um,Wm,Gm=De(()=>{dt();je();Xl();wt();en();Wm=function(){Os(d,"jfredo",(e,n,t,l)=>{n!=="length"&&$e.createHookFunction("updated",t),Ek(d.jfredo.length)}),Os(d,"jfundo",(e,n,t,l)=>{Bk(d.jfundo.length)}),Os(d,"asyncLoad",(e,n,t,l)=>{n==="length"&&t===0&&$e.createHookFunction("workbookCreateAfter",js())})}});function nd(){d.cellMainSrollBarSize=0;let e=!1,n={},t=!1,l=null;$(document).on("touchstart","#luckysheet-grid-window-1",function(a){clearInterval(l),e=!0;let o=a.originalEvent.targetTouches[0];n={x:o.pageX,y:o.pageY,vy:0,moveType:"y"}}),$(document).on("touchmove","#luckysheet-grid-window-1",function(a){if(a.originalEvent.targetTouches.length>1||a.scale&&a.scale!==1)return;let o=a.originalEvent.targetTouches[0];if(e){let s=o.pageX-n.x,u=o.pageY-n.y;n.x=o.pageX,n.y=o.pageY;let f=$("#luckysheet-scrollbar-x").scrollLeft(),A=$("#luckysheet-scrollbar-y").scrollTop();f-=s,A-=u,f<0&&(f=0),A<0&&(A=0),$("#luckysheet-scrollbar-y").scrollTop(A),n.vy_y=u,n.scrollTop=A,$("#luckysheet-scrollbar-x").scrollLeft(f),n.vy_x=s,n.scrollLeft=f}else if(t){let s=Ke(o.pageX,o.pageY),u=s[0]+$("#luckysheet-cell-main").scrollLeft(),f=s[1]+$("#luckysheet-cell-main").scrollTop(),A=Tt(f),h=A[1],g=A[0],p=A[2],v=xt(u),y=v[1],b=v[0],k=v[2],w=$.extend(!0,{},d.luckysheet_select_save[d.luckysheet_select_save.length-1]),C=0,I=0,x=[];w.top>g?(C=g,I=w.top+w.height-g,w.row[1]>w.row_focus&&(w.row[1]=w.row_focus),x=[p,w.row[1]]):w.top==g?(C=g,I=w.top+w.height-g,x=[p,w.row[0]]):(C=w.top,I=h-w.top-1,w.row[0]b?(T=b,R=w.left+w.width-b,w.column[1]>w.column_focus&&(w.column[1]=w.column_focus),D=[k,w.column[1]]):w.left==b?(T=b,R=w.left+w.width-b,D=[k,w.column[0]]):(T=w.left,R=y-w.left-1,w.column[0]>31)*2+1)*.25,u=Math.abs(n.vy_y),f=((u>>31)*2+1)*.25;(o>0||u>0)&&(l=setInterval(function(){o-=s,u-=f,o<=0&&(o=0),u<=0&&(u=0),n.vy_y>0?n.scrollTop-=u:n.scrollTop+=u,$("#luckysheet-scrollbar-y").scrollTop(n.scrollTop),n.vy_x>0?n.scrollLeft-=o:n.scrollLeft+=o,$("#luckysheet-scrollbar-x").scrollLeft(n.scrollLeft),o<=0&&u<=0&&clearInterval(l)},20))}e=!1,t=!1}),$(document).on("touchstart",".luckysheet-cs-touchhandle",function(a){t=!0,e=!1,a.stopPropagation()}),document.addEventListener("touchmove",function(a){a.preventDefault()},{passive:!1})}var Ym=De(()=>{El();el();ll();Kl();je()});var Pk,ad,Qm=De(()=>{dt();Wt();el();rl();tl();zr();Qt();_t();je();yt();Pk={createDialog:function(){let e=this,n=te(),t=n.splitText,l=n.punctuation,a=n.button;$("#luckysheet-modal-dialog-mask").show(),$("#luckysheet-splitColumn-dialog").remove();let o='
'+t.splitDelimiters+'
'+t.splitDataPreview+'
';$("body").append(we(At,{id:"luckysheet-splitColumn-dialog",addclass:"luckysheet-splitColumn-dialog",title:t.splitTextTitle,content:o,botton:'",style:"z-index:100003"}));let s=$("#luckysheet-splitColumn-dialog").find(".luckysheet-modal-dialog-content").css("min-width",400).end(),u=s.outerHeight(),f=s.outerWidth(),A=$(window).width(),h=$(window).height(),g=$(document).scrollLeft(),p=$(document).scrollTop();$("#luckysheet-splitColumn-dialog").css({left:(A+g-f)/2,top:(h+p-u)/3}).show();let v=e.getDataArr();e.dataPreview(v)},init:function(){let e=this,t=te().splitText;$(document).off("change.SPCinpcheckbox").on("change.SPCcheckbox","#luckysheet-splitColumn-dialog .box input[type='checkbox']",function(){let l=e.getRegStr(),a=e.getDataArr(l);e.dataPreview(a)}),$(document).off("keyup.SPCinptext").on("keyup.SPCinptext","#luckysheet-splitColumn-dialog .box input[type='text']",function(){if($(this).siblings("input[type='checkbox']").is(":checked")){let l=e.getRegStr(),a=e.getDataArr(l);e.dataPreview(a)}}),$(document).off("click.SPCconfirm").on("click.SPCconfirm","#luckysheet-splitColumn-dialog #luckysheet-splitColumn-dialog-confirm",function(){$("#luckysheet-modal-dialog-mask").hide(),$("#luckysheet-splitColumn-dialog").hide();let l=e.getRegStr(),a=e.getDataArr(l),o=d.luckysheet_select_save[0].row[0],s=d.luckysheet_select_save[0].column[0];if(a[0].length==1)return;let u=!1;for(let f=0;f"+e[l][o]+"";n+=""+a+""}let t=""+n+"
";$("#luckysheet-splitColumn-dialog #splitColumnData").append(t)},getRegStr:function(){let e="",n=0;return $("#luckysheet-splitColumn-dialog .box input[type='checkbox']:checked").each(function(t,l){let a=$(l).attr("id");if(a=="splitColumn_type_01")e+="\\t",n++;else if(a=="splitColumn_type_02")n>0&&(e+="|"),e+=";",n++;else if(a=="splitColumn_type_03")n>0&&(e+="|"),e+=",",n++;else if(a=="splitColumn_type_04")n>0&&(e+="|"),e+="\\s",n++;else if(a=="splitColumn_type_05"){let o=$(l).siblings("input[type='text']").val().trim();o!=""&&(n>0&&(e+="|"),e+=o)}else a=="splitColumn_type_06"&&(e="["+e+"]+")}),e},getDataArr:function(e){let n=this,t=[],l=d.luckysheet_select_save[0].row[0],a=d.luckysheet_select_save[0].row[1],o=d.luckysheet_select_save[0].column[0];if(e!=null&&e!=""){let s=new RegExp(e,"g"),u=[];for(let h=l;h<=a;h++){let g=[],p=d.flowdata[h][o],v;p!=null&&p.m!=null?v=p.m:v=Fe(h,o,d.flowdata),v==null&&(v=""),g=v.toString().split(s),u.push(g)}let f=u.length,A=0;for(let h=0;hA&&(A=u[h].length);t=n.getNullData(f,A);for(let h=0;h0){let t=ve.getSheetByIndex(),l=t.data;if(l!=null)for(let a=0;a
${n.protection} diff --git a/wolai-frontend/public/luckysheet/plugins/js/plugin.js b/wolai-frontend/public/luckysheet/plugins/js/plugin.js index fda4b6df..5418d0a0 100644 --- a/wolai-frontend/public/luckysheet/plugins/js/plugin.js +++ b/wolai-frontend/public/luckysheet/plugins/js/plugin.js @@ -1 +1 @@ -((t,e)=>{"object"==typeof module&&"object"==typeof module.exports?module.exports=t.document?e(t,!0):function(t){if(t.document)return e(t);throw new Error("jQuery requires a window with a document")}:e(t)})("undefined"!=typeof window?window:this,function(_,M){function W(t,e){return e.toUpperCase()}var t=[],x=_.document,l=t.slice,L=t.concat,F=t.push,i=t.indexOf,H={},B=H.toString,d=H.hasOwnProperty,g={},e="2.2.4",C=function(t,e){return new C.fn.init(t,e)},q=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,z=/^-ms-/,U=/-([\da-z])/gi;function G(t){var e=!!t&&"length"in t&&t.length,n=C.type(t);return"function"!==n&&!C.isWindow(t)&&("array"===n||0===e||"number"==typeof e&&0{function h(t,e,n){var r="0x"+e-65536;return r!=r||n?e:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)}function W(){x()}var t,d,w,o,L,g,F,H,_,u,c,x,C,e,k,m,r,i,v,S="sizzle"+ +new Date,y=M.document,O=0,B=0,q=ct(),z=ct(),b=ct(),U=function(t,e){return t===e&&(c=!0),0},G={}.hasOwnProperty,n=[],V=n.pop,$=n.push,E=n.push,X=n.slice,T=function(t,e){for(var n=0,r=t.length;n+~]|"+s+")"+s+"*"),et=new RegExp("="+s+"*([^\\]'\"]*?)"+s+"*\\]","g"),nt=new RegExp(Q),rt=new RegExp("^"+a+"$"),f={ID:new RegExp("^#("+a+")"),CLASS:new RegExp("^\\.("+a+")"),TAG:new RegExp("^("+a+"|[*])"),ATTR:new RegExp("^"+K),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+s+"*(even|odd|(([+-]|)(\\d*)n|)"+s+"*(?:([+-]|)"+s+"*(\\d+)|))"+s+"*\\)|)","i"),bool:new RegExp("^(?:"+Y+")$","i"),needsContext:new RegExp("^"+s+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+s+"*((?:-\\d)?\\d*)"+s+"*\\)|)(?=[^-]|$)","i")},it=/^(?:input|select|textarea|button)$/i,ot=/^h\d$/i,l=/^[^{]+\{\s*\[native \w/,st=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,at=/[+~]/,ut=/'|\\/g,p=new RegExp("\\\\([\\da-f]{1,6}"+s+"?|("+s+")|.)","ig");try{E.apply(n=X.call(y.childNodes),y.childNodes),n[y.childNodes.length].nodeType}catch(t){E={apply:n.length?function(t,e){$.apply(t,X.call(e))}:function(t,e){for(var n=t.length,r=0;t[n++]=e[r++];);t.length=n-1}}}function I(t,e,n,r){var i,o,s,a,u,c,l,h,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:y)!==C&&x(e),e=e||C,k)){if(11!==p&&(c=st.exec(t)))if(i=c[1]){if(9===p){if(!(s=e.getElementById(i)))return n;if(s.id===i)return n.push(s),n}else if(f&&(s=f.getElementById(i))&&v(e,s)&&s.id===i)return n.push(s),n}else{if(c[2])return E.apply(n,e.getElementsByTagName(t)),n;if((i=c[3])&&d.getElementsByClassName&&e.getElementsByClassName)return E.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!b[t+" "]&&(!m||!m.test(t))){if(1!==p)f=e,h=t;else if("object"!==e.nodeName.toLowerCase()){for((a=e.getAttribute("id"))?a=a.replace(ut,"\\$&"):e.setAttribute("id",a=S),o=(l=g(t)).length,u=rt.test(a)?"#"+a:"[id='"+a+"']";o--;)l[o]=u+" "+N(l[o]);h=l.join(","),f=at.test(t)&&ft(e.parentNode)||e}if(h)try{return E.apply(n,f.querySelectorAll(h)),n}catch(t){}finally{a===S&&e.removeAttribute("id")}}}return H(t.replace(A,"$1"),e,n,r)}function ct(){var n=[];function r(t,e){return n.push(t+" ")>w.cacheLength&&delete r[n.shift()],r[t+" "]=e}return r}function j(t){return t[S]=!0,t}function P(t){var e=C.createElement("div");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e)}}function lt(t,e){for(var n=t.split("|"),r=n.length;r--;)w.attrHandle[n[r]]=e}function ht(t,e){var n=e&&t,r=n&&1===t.nodeType&&1===e.nodeType&&(~e.sourceIndex||1<<31)-(~t.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function D(s){return j(function(o){return o=+o,j(function(t,e){for(var n,r=s([],t.length,o),i=r.length;i--;)t[n=r[i]]&&(t[n]=!(e[n]=t[n]))})})}function ft(t){return t&&void 0!==t.getElementsByTagName&&t}for(t in d=I.support={},L=I.isXML=function(t){t=t&&(t.ownerDocument||t).documentElement;return!!t&&"HTML"!==t.nodeName},x=I.setDocument=function(t){var t=t?t.ownerDocument||t:y;return t!==C&&9===t.nodeType&&t.documentElement&&(e=(C=t).documentElement,k=!L(C),(t=C.defaultView)&&t.top!==t&&(t.addEventListener?t.addEventListener("unload",W,!1):t.attachEvent&&t.attachEvent("onunload",W)),d.attributes=P(function(t){return t.className="i",!t.getAttribute("className")}),d.getElementsByTagName=P(function(t){return t.appendChild(C.createComment("")),!t.getElementsByTagName("*").length}),d.getElementsByClassName=l.test(C.getElementsByClassName),d.getById=P(function(t){return e.appendChild(t).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(w.find.ID=function(t,e){if(void 0!==e.getElementById&&k)return(e=e.getElementById(t))?[e]:[]},w.filter.ID=function(t){var e=t.replace(p,h);return function(t){return t.getAttribute("id")===e}}):(delete w.find.ID,w.filter.ID=function(t){var e=t.replace(p,h);return function(t){t=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return t&&t.value===e}}),w.find.TAG=d.getElementsByTagName?function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):d.qsa?e.querySelectorAll(t):void 0}:function(t,e){var n,r=[],i=0,o=e.getElementsByTagName(t);if("*"!==t)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},w.find.CLASS=d.getElementsByClassName&&function(t,e){return void 0!==e.getElementsByClassName&&k?e.getElementsByClassName(t):void 0},r=[],m=[],(d.qsa=l.test(C.querySelectorAll))&&(P(function(t){e.appendChild(t).innerHTML="",t.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+s+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||m.push("\\["+s+"*(?:value|"+Y+")"),t.querySelectorAll("[id~="+S+"-]").length||m.push("~="),t.querySelectorAll(":checked").length||m.push(":checked"),t.querySelectorAll("a#"+S+"+*").length||m.push(".#.+[+~]")}),P(function(t){var e=C.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&m.push("name"+s+"*[*^$|!~]?="),t.querySelectorAll(":enabled").length||m.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),m.push(",.*:")})),(d.matchesSelector=l.test(i=e.matches||e.webkitMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.msMatchesSelector))&&P(function(t){d.disconnectedMatch=i.call(t,"div"),i.call(t,"[s!='']:x"),r.push("!=",Q)}),m=m.length&&new RegExp(m.join("|")),r=r.length&&new RegExp(r.join("|")),t=l.test(e.compareDocumentPosition),v=t||l.test(e.contains)?function(t,e){var n=9===t.nodeType?t.documentElement:t,e=e&&e.parentNode;return t===e||!(!e||1!==e.nodeType||!(n.contains?n.contains(e):t.compareDocumentPosition&&16&t.compareDocumentPosition(e)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},U=t?function(t,e){var n;return t===e?(c=!0,0):(n=!t.compareDocumentPosition-!e.compareDocumentPosition)||(1&(n=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!d.sortDetached&&e.compareDocumentPosition(t)===n?t===C||t.ownerDocument===y&&v(y,t)?-1:e===C||e.ownerDocument===y&&v(y,e)?1:u?T(u,t)-T(u,e):0:4&n?-1:1)}:function(t,e){if(t===e)return c=!0,0;var n,r=0,i=t.parentNode,o=e.parentNode,s=[t],a=[e];if(!i||!o)return t===C?-1:e===C?1:i?-1:o?1:u?T(u,t)-T(u,e):0;if(i===o)return ht(t,e);for(n=t;n=n.parentNode;)s.unshift(n);for(n=e;n=n.parentNode;)a.unshift(n);for(;s[r]===a[r];)r++;return r?ht(s[r],a[r]):s[r]===y?-1:a[r]===y?1:0}),C},I.matches=function(t,e){return I(t,null,null,e)},I.matchesSelector=function(t,e){if((t.ownerDocument||t)!==C&&x(t),e=e.replace(et,"='$1']"),d.matchesSelector&&k&&!b[e+" "]&&(!r||!r.test(e))&&(!m||!m.test(e)))try{var n=i.call(t,e);if(n||d.disconnectedMatch||t.document&&11!==t.document.nodeType)return n}catch(t){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(p,h),t[3]=(t[3]||t[4]||t[5]||"").replace(p,h),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||I.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&I.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return f.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&nt.test(n)&&(e=(e=g(n,!0))&&n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(p,h).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=q[t+" "];return e||(e=new RegExp("(^|"+s+")"+t+"("+s+"|$)"))&&q(t,function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(t){t=I.attr(t,e);return null==t?"!="===n:!n||(t+="","="===n?t===r:"!="===n?t!==r:"^="===n?r&&0===t.indexOf(r):"*="===n?r&&-1function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e})(t);for(t in{submit:!0,reset:!0})w.pseudos[t]=(n=>function(t){var e=t.nodeName.toLowerCase();return("input"===e||"button"===e)&&t.type===n})(t);function pt(){}function N(t){for(var e=0,n=t.length,r="";e{for(var r=0,i=e.length;r(?:<\/\1>|)$/,Y=/^.[^:#\[\.,]*$/;function K(t,n,r){if(C.isFunction(n))return C.grep(t,function(t,e){return!!n.call(t,e,t)!==r});if(n.nodeType)return C.grep(t,function(t){return t===n!==r});if("string"==typeof n){if(Y.test(n))return C.filter(n,t,r);n=C.filter(n,t)}return C.grep(t,function(t){return-1)[^>]*|#([\w-]*))$/,Z=((C.fn.init=function(t,e,n){if(t){if(n=n||Q,"string"!=typeof t)return t.nodeType?(this.context=this[0]=t,this.length=1,this):C.isFunction(t)?void 0!==n.ready?n.ready(t):t(C):(void 0!==t.selector&&(this.selector=t.selector,this.context=t.context),C.makeArray(t,this));if(!(r="<"===t[0]&&">"===t[t.length-1]&&3<=t.length?[null,t,null]:J.exec(t))||!r[1]&&e)return(!e||e.jquery?e||n:this.constructor(e)).find(t);if(r[1]){if(e=e instanceof C?e[0]:e,C.merge(this,C.parseHTML(r[1],e&&e.nodeType?e.ownerDocument||e:x,!0)),X.test(r[1])&&C.isPlainObject(e))for(var r in e)C.isFunction(this[r])?this[r](e[r]):this.attr(r,e[r])}else(n=x.getElementById(r[2]))&&n.parentNode&&(this.length=1,this[0]=n),this.context=x,this.selector=t}return this}).prototype=C.fn,Q=C(x),/^(?:parents|prev(?:Until|All))/),tt={children:!0,contents:!0,next:!0,prev:!0};function et(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}C.fn.extend({has:function(t){var e=C(t,this),n=e.length;return this.filter(function(){for(var t=0;t",""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function w(t,e){var n=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[];return void 0===e||e&&C.nodeName(t,e)?C.merge([t],n):n}function ht(t,e){for(var n=0,r=t.length;nx",g.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue;var dt=/^key/,gt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,mt=/^([^.]*)(?:\.(.+)|)/;function vt(){return!0}function c(){return!1}function yt(){try{return x.activeElement}catch(t){}}function bt(t,e,n,r,i,o){var s,a;if("object"==typeof e){for(a in"string"!=typeof n&&(r=r||n,n=void 0),e)bt(t,a,n,r,e[a],o);return t}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=c;else if(!i)return t;return 1===o&&(s=i,(i=function(t){return C().off(t),s.apply(this,arguments)}).guid=s.guid||(s.guid=C.guid++)),t.each(function(){C.event.add(this,e,i,r,n)})}C.event={global:{},add:function(e,t,n,r,i){var o,s,a,u,c,l,h,f,p,d=v.get(e);if(d)for(n.handler&&(n=(o=n).handler,i=o.selector),n.guid||(n.guid=C.guid++),a=(a=d.events)||(d.events={}),s=(s=d.handle)||(d.handle=function(t){return void 0!==C&&C.event.triggered!==t.type?C.event.dispatch.apply(e,arguments):void 0}),u=(t=(t||"").match(k)||[""]).length;u--;)h=p=(f=mt.exec(t[u])||[])[1],f=(f[2]||"").split(".").sort(),h&&(c=C.event.special[h]||{},h=(i?c.delegateType:c.bindType)||h,c=C.event.special[h]||{},p=C.extend({type:h,origType:p,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&C.expr.match.needsContext.test(i),namespace:f.join(".")},o),(l=a[h])||((l=a[h]=[]).delegateCount=0,c.setup&&!1!==c.setup.call(e,r,f,s))||e.addEventListener&&e.addEventListener(h,s),c.add&&(c.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),i?l.splice(l.delegateCount++,0,p):l.push(p),C.event.global[h]=!0)},remove:function(t,e,n,r,i){var o,s,a,u,c,l,h,f,p,d,g,m=v.hasData(t)&&v.get(t);if(m&&(u=m.events)){for(c=(e=(e||"").match(k)||[""]).length;c--;)if(p=g=(a=mt.exec(e[c])||[])[1],d=(a[2]||"").split(".").sort(),p){for(h=C.event.special[p]||{},f=u[p=(r?h.delegateType:h.bindType)||p]||[],a=a[2]&&new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=f.length;o--;)l=f[o],!i&&g!==l.origType||n&&n.guid!==l.guid||a&&!a.test(l.namespace)||r&&r!==l.selector&&("**"!==r||!l.selector)||(f.splice(o,1),l.selector&&f.delegateCount--,h.remove&&h.remove.call(t,l));s&&!f.length&&(h.teardown&&!1!==h.teardown.call(t,d,m.handle)||C.removeEvent(t,p,m.handle),delete u[p])}else for(p in u)C.event.remove(t,p+e[c],n,r,!0);C.isEmptyObject(u)&&v.remove(t,"handle events")}},dispatch:function(t){t=C.event.fix(t);var e,n,r,i,o,s=l.call(arguments),a=(v.get(this,"events")||{})[t.type]||[],u=C.event.special[t.type]||{};if((s[0]=t).delegateTarget=this,!u.preDispatch||!1!==u.preDispatch.call(this,t)){for(o=C.event.handlers.call(this,t,a),e=0;(r=o[e++])&&!t.isPropagationStopped();)for(t.currentTarget=r.elem,n=0;(i=r.handlers[n++])&&!t.isImmediatePropagationStopped();)t.rnamespace&&!t.rnamespace.test(i.namespace)||(t.handleObj=i,t.data=i.data,void 0!==(i=((C.event.special[i.origType]||{}).handle||i.handler).apply(r.elem,s))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()));return u.postDispatch&&u.postDispatch.call(this,t),t.result}},handlers:function(t,e){var n,r,i,o,s=[],a=e.delegateCount,u=t.target;if(a&&u.nodeType&&("click"!==t.type||isNaN(t.button)||t.button<1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&(!0!==u.disabled||"click"!==t.type)){for(r=[],n=0;n]*)\/>/gi,_t=/\s*$/g;function St(t,e){return C.nodeName(t,"table")&&C.nodeName(11!==e.nodeType?e:e.firstChild,"tr")?t.getElementsByTagName("tbody")[0]||t.appendChild(t.ownerDocument.createElement("tbody")):t}function Ot(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function Et(t){var e=Ct.exec(t.type);return e?t.type=e[1]:t.removeAttribute("type"),t}function Tt(t,e){var n,r,i,o,s,a;if(1===e.nodeType){if(v.hasData(t)&&(o=v.access(t),s=v.set(e,o),a=o.events))for(i in delete s.handle,s.events={},a)for(n=0,r=a[i].length;n")},clone:function(t,e,n){var r,i,o,s,a,u,c,l=t.cloneNode(!0),h=C.contains(t.ownerDocument,t);if(!(g.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||C.isXMLDoc(t)))for(s=w(l),r=0,i=(o=w(t)).length;r")).appendTo(e.documentElement))[0].contentDocument).write(),e.close(),n=Pt(t,e),It.detach()),jt[t]=n),n}function Nt(t){var e=t.ownerDocument.defaultView;return(e=e&&e.opener?e:_).getComputedStyle(t)}function Rt(t,e,n,r){var i,o={};for(i in e)o[i]=t.style[i],t.style[i]=e[i];for(i in n=n.apply(t,r||[]),e)t.style[i]=o[i];return n}var Mt,o,Wt,Lt,s,p,Ft=/^margin/,Ht=new RegExp("^("+t+")(?!px)[a-z%]+$","i"),O=x.documentElement;function Bt(){p.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",p.innerHTML="",O.appendChild(s);var t=_.getComputedStyle(p);Mt="1%"!==t.top,Lt="2px"===t.marginLeft,o="4px"===t.width,p.style.marginRight="50%",Wt="4px"===t.marginRight,O.removeChild(s)}function E(t,e,n){var r,i,o=t.style;return""!==(i=(n=n||Nt(t))?n.getPropertyValue(e)||n[e]:void 0)&&void 0!==i||C.contains(t.ownerDocument,t)||(i=C.style(t,e)),n&&!g.pixelMarginRight()&&Ht.test(i)&&Ft.test(e)&&(t=o.width,e=o.minWidth,r=o.maxWidth,o.minWidth=o.maxWidth=o.width=i,i=n.width,o.width=t,o.minWidth=e,o.maxWidth=r),void 0!==i?i+"":i}function qt(t,e){return{get:function(){return t()?void delete this.get:(this.get=e).apply(this,arguments)}}}s=x.createElement("div"),(p=x.createElement("div")).style&&(p.style.backgroundClip="content-box",p.cloneNode(!0).style.backgroundClip="",g.clearCloneStyle="content-box"===p.style.backgroundClip,s.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",s.appendChild(p),C.extend(g,{pixelPosition:function(){return Bt(),Mt},boxSizingReliable:function(){return null==o&&Bt(),o},pixelMarginRight:function(){return null==o&&Bt(),Wt},reliableMarginLeft:function(){return null==o&&Bt(),Lt},reliableMarginRight:function(){var t,e=p.appendChild(x.createElement("div"));return e.style.cssText=p.style.cssText="-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",p.style.width="1px",O.appendChild(s),t=!parseFloat(_.getComputedStyle(e).marginRight),O.removeChild(s),p.removeChild(e),t}}));var zt=/^(none|table(?!-c[ea]).+)/,Ut={position:"absolute",visibility:"hidden",display:"block"},Gt={letterSpacing:"0",fontWeight:"400"},Vt=["Webkit","O","Moz","ms"],$t=x.createElement("div").style;function Xt(t){if(t in $t)return t;for(var e=t[0].toUpperCase()+t.slice(1),n=Vt.length;n--;)if((t=Vt[n]+e)in $t)return t}function Yt(t,e,n){var r=f.exec(e);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):e}function Kt(t,e,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===e?1:0,s=0;o<4;o+=2)"margin"===n&&(s+=C.css(t,n+a[o],!0,i)),r?("content"===n&&(s-=C.css(t,"padding"+a[o],!0,i)),"margin"!==n&&(s-=C.css(t,"border"+a[o]+"Width",!0,i))):(s+=C.css(t,"padding"+a[o],!0,i),"padding"!==n&&(s+=C.css(t,"border"+a[o]+"Width",!0,i)));return s}function Qt(t,e,n){var r=!0,i="width"===e?t.offsetWidth:t.offsetHeight,o=Nt(t),s="border-box"===C.css(t,"boxSizing",!1,o);if(i<=0||null==i){if(((i=E(t,e,o))<0||null==i)&&(i=t.style[e]),Ht.test(i))return i;r=s&&(g.boxSizingReliable()||i===t.style[e]),i=parseFloat(i)||0}return i+Kt(t,e,n||(s?"border":"content"),r,o)+"px"}function Jt(t,e){for(var n,r,i,o=[],s=0,a=t.length;s{for(var r,i,o,s,a=t.contents,u=t.dataTypes;"*"===u[0];)u.shift(),void 0===r&&(r=t.mimeType||e.getResponseHeader("Content-Type"));if(r)for(i in a)if(a[i]&&a[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||t.converters[i+" "+u[0]]){o=i;break}s=s||i}o=o||s}return o?(o!==u[0]&&u.unshift(o),n[o]):void 0})(p,w,n)),s=((t,e,n,r)=>{var i,o,s,a,u,c={},l=t.dataTypes.slice();if(l[1])for(s in t.converters)c[s.toLowerCase()]=t.converters[s];for(o=l.shift();o;)if(t.responseFields[o]&&(n[t.responseFields[o]]=e),!u&&r&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),u=o,o=l.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(s=c[u+" "+o]||c["* "+o]))for(i in c)if(a=i.split(" "),a[1]===o&&(s=c[u+" "+a[0]]||c["* "+a[0]])){!0===s?s=c[i]:!0!==c[i]&&(o=a[0],l.unshift(a[1]));break}if(!0!==s)if(s&&t.throws)e=s(e);else try{e=s(e)}catch(t){return{state:"parsererror",error:s?t:"No conversion from "+u+" to "+o}}}return{state:"success",data:e}})(p,s,w,r),r?(p.ifModified&&((n=w.getResponseHeader("Last-Modified"))&&(C.lastModified[c]=n),n=w.getResponseHeader("etag"))&&(C.etag[c]=n),204===t||"HEAD"===p.type?a="nocontent":304===t?a="notmodified":(a=s.state,i=s.data,r=!(o=s.error))):(o=a,!t&&a||(a="error",t<0&&(t=0))),w.status=t,w.statusText=(e||a)+"",r?m.resolveWith(d,[i,a,w]):m.rejectWith(d,[w,a,o]),w.statusCode(y),y=void 0,f&&g.trigger(r?"ajaxSuccess":"ajaxError",[w,p,r?i:o]),v.fireWith(d,[w,a]),f)&&(g.trigger("ajaxComplete",[w,p]),--C.active||C.event.trigger("ajaxStop"))}},getJSON:function(t,e,n){return C.get(t,e,n,"json")},getScript:function(t,e){return C.get(t,void 0,e,"script")}}),C.each(["get","post"],function(t,i){C[i]=function(t,e,n,r){return C.isFunction(e)&&(r=r||n,n=e,e=void 0),C.ajax(C.extend({url:t,type:i,dataType:r,data:e,success:n},C.isPlainObject(t)&&t))}}),C._evalUrl=function(t){return C.ajax({url:t,type:"GET",dataType:"script",async:!1,global:!1,throws:!0})},C.fn.extend({wrapAll:function(e){var t;return C.isFunction(e)?this.each(function(t){C(this).wrapAll(e.call(this,t))}):(this[0]&&(t=C(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t}).append(this)),this)},wrapInner:function(n){return C.isFunction(n)?this.each(function(t){C(this).wrapInner(n.call(this,t))}):this.each(function(){var t=C(this),e=t.contents();e.length?e.wrapAll(n):t.append(n)})},wrap:function(e){var n=C.isFunction(e);return this.each(function(t){C(this).wrapAll(n?e.call(this,t):e)})},unwrap:function(){return this.parent().each(function(){C.nodeName(this,"body")||C(this).replaceWith(this.childNodes)}).end()}}),C.expr.filters.hidden=function(t){return!C.expr.filters.visible(t)},C.expr.filters.visible=function(t){return 0").prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(t){r.remove(),i=null,t&&e("error"===t.type?404:200,t.type)}),x.head.appendChild(r[0])},abort:function(){i&&i()}}}),[]),De=/(=)\?(?=&|$)|\?\?/,Ne=(C.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var t=Pe.pop()||C.expando+"_"+fe++;return this[t]=!0,t}}),C.ajaxPrefilter("json jsonp",function(t,e,n){var r,i,o,s=!1!==t.jsonp&&(De.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&De.test(t.data)&&"data");return s||"jsonp"===t.dataTypes[0]?(r=t.jsonpCallback=C.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(De,"$1"+r):!1!==t.jsonp&&(t.url+=(pe.test(t.url)?"&":"?")+t.jsonp+"="+r),t.converters["script json"]=function(){return o||C.error(r+" was not called"),o[0]},t.dataTypes[0]="json",i=_[r],_[r]=function(){o=arguments},n.always(function(){void 0===i?C(_).removeProp(r):_[r]=i,t[r]&&(t.jsonpCallback=e.jsonpCallback,Pe.push(r)),o&&C.isFunction(i)&&i(o[0]),o=i=void 0}),"script"):void 0}),C.parseHTML=function(t,e,n){if(!t||"string"!=typeof t)return null;"boolean"==typeof e&&(n=e,e=!1),e=e||x;var r=X.exec(t),n=!n&&[];return r?[e.createElement(r[1])]:(r=pt([t],e,n),n&&n.length&&C(n).remove(),C.merge([],r.childNodes))},C.fn.load);function Re(t){return C.isWindow(t)?t:9===t.nodeType&&t.defaultView}C.fn.load=function(t,e,n){var r,i,o,s,a;return"string"!=typeof t&&Ne?Ne.apply(this,arguments):(s=this,-1<(a=t.indexOf(" "))&&(r=C.trim(t.slice(a)),t=t.slice(0,a)),C.isFunction(e)?(n=e,e=void 0):e&&"object"==typeof e&&(i="POST"),0").append(C.parseHTML(t)).find(r):t)}).always(n&&function(t,e){s.each(function(){n.apply(this,o||[t.responseText,e,t])})}),this)},C.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(t,e){C.fn[e]=function(t){return this.on(e,t)}}),C.expr.filters.animated=function(e){return C.grep(C.timers,function(t){return e===t.elem}).length},C.offset={setOffset:function(t,e,n){var r,i,o,s,a=C.css(t,"position"),u=C(t),c={};"static"===a&&(t.style.position="relative"),o=u.offset(),r=C.css(t,"top"),s=C.css(t,"left"),a=("absolute"===a||"fixed"===a)&&-1<(r+s).indexOf("auto")?(i=(a=u.position()).top,a.left):(i=parseFloat(r)||0,parseFloat(s)||0),null!=(e=C.isFunction(e)?e.call(t,n,C.extend({},o)):e).top&&(c.top=e.top-o.top+i),null!=e.left&&(c.left=e.left-o.left+a),"using"in e?e.using.call(t,c):u.css(c)}},C.fn.extend({offset:function(e){var t,n,r,i;return arguments.length?void 0===e?this:this.each(function(t){C.offset.setOffset(this,e,t)}):(r={top:0,left:0},(i=(n=this[0])&&n.ownerDocument)?(t=i.documentElement,C.contains(t,n)?(r=n.getBoundingClientRect(),n=Re(i),{top:r.top+n.pageYOffset-t.clientTop,left:r.left+n.pageXOffset-t.clientLeft}):r):void 0)},position:function(){var t,e,n,r;if(this[0])return n=this[0],r={top:0,left:0},"fixed"===C.css(n,"position")?e=n.getBoundingClientRect():(t=this.offsetParent(),e=this.offset(),(r=C.nodeName(t[0],"html")?r:t.offset()).top+=C.css(t[0],"borderTopWidth",!0),r.left+=C.css(t[0],"borderLeftWidth",!0)),{top:e.top-r.top-C.css(n,"marginTop",!0),left:e.left-r.left-C.css(n,"marginLeft",!0)}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent;t&&"static"===C.css(t,"position");)t=t.offsetParent;return t||O})}}),C.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,i){var o="pageYOffset"===i;C.fn[e]=function(t){return h(this,function(t,e,n){var r=Re(t);return void 0===n?r?r[i]:t[e]:void(r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):t[e]=n)},e,t,arguments.length)}}),C.each(["top","left"],function(t,n){C.cssHooks[n]=qt(g.pixelPosition,function(t,e){return e?(e=E(t,n),Ht.test(e)?C(t).position()[n]+"px":e):void 0})}),C.each({Height:"height",Width:"width"},function(o,s){C.each({padding:"inner"+o,content:s,"":"outer"+o},function(r,t){C.fn[t]=function(t,e){var n=arguments.length&&(r||"boolean"!=typeof t),i=r||(!0===t||!0===e?"margin":"border");return h(this,function(t,e,n){var r;return C.isWindow(t)?t.document.documentElement["client"+o]:9===t.nodeType?(r=t.documentElement,Math.max(t.body["scroll"+o],r["scroll"+o],t.body["offset"+o],r["offset"+o],r["client"+o])):void 0===n?C.css(t,e,i):C.style(t,e,n,i)},s,n?t:void 0,n,null)}})}),C.fn.extend({bind:function(t,e,n){return this.on(t,null,e,n)},unbind:function(t,e){return this.off(t,null,e)},delegate:function(t,e,n,r){return this.on(e,t,n,r)},undelegate:function(t,e,n){return 1===arguments.length?this.off(t,"**"):this.off(e,t||"**",n)},size:function(){return this.length}}),C.fn.andSelf=C.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return C});var Me=_.jQuery,We=_.$;return C.noConflict=function(t){return _.$===C&&(_.$=We),t&&_.jQuery===C&&(_.jQuery=Me),C},M||(_.jQuery=_.$=C),C}),((t,e)=>{"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).uuid={})})(this,function(t){var e,n=new Uint8Array(16);function l(){if(e=e||"undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto))return e(n);throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported")}var r=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function i(t){return"string"==typeof t&&r.test(t)}for(var h,f,o=[],s=0;s<256;++s)o.push((s+256).toString(16).substr(1));function p(t){var e=1>>24,n[1]=e>>>16&255,n[2]=e>>>8&255,n[3]=255&e,n[4]=(e=parseInt(t.slice(9,13),16))>>>8,n[5]=255&e,n[6]=(e=parseInt(t.slice(14,18),16))>>>8,n[7]=255&e,n[8]=(e=parseInt(t.slice(19,23),16))>>>8,n[9]=255&e,n[10]=(e=parseInt(t.slice(24,36),16))/1099511627776&255,n[11]=e/4294967296&255,n[12]=e>>>24&255,n[13]=e>>>16&255,n[14]=e>>>8&255,n[15]=255&e,n;throw TypeError("Invalid UUID")}function a(t,s,a){function e(t,e,n,r){if("string"==typeof t&&(t=(t=>{t=unescape(encodeURIComponent(t));for(var e=[],n=0;n>>9<<4)+1}function v(t,e){var n=(65535&t)+(65535&e);return(t>>16)+(e>>16)+(n>>16)<<16|65535&n}function c(t,e,n,r,i,o){return v((e=v(v(e,t),v(r,o)))<>>32-i,n)}function y(t,e,n,r,i,o,s){return c(e&n|~e&r,t,e,i,o,s)}function b(t,e,n,r,i,o,s){return c(e&r|n&~r,t,e,i,o,s)}function w(t,e,n,r,i,o,s){return c(e^n^r,t,e,i,o,s)}function _(t,e,n,r,i,o,s){return c(n^(e|~r),t,e,i,o,s)}var x=a("v3",48,function(t){if("string"==typeof t){var e=unescape(encodeURIComponent(t));t=new Uint8Array(e.length);for(var n=0;n{t[e>>5]|=128<{if(0===t.length)return[];for(var e=8*t.length,n=new Uint32Array(m(e)),r=0;r>5]|=(255&t[r/8])<>5]>>>a%32&255,u=parseInt(s.charAt(u>>>4&15)+s.charAt(15&u),16);i.push(u)}return i});function C(t,e){return t<>>32-e}var k=a("v5",80,function(t){var e=[1518500249,1859775393,2400959708,3395469782],n=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof t){var r=unescape(encodeURIComponent(t));t=[];for(var i=0;i{switch(t){case 0:return e&n^~e&r;case 1:return e^n^r;case 2:return e&n^e&r^n&r;case 3:return e^n^r}})(_,m,v,y)+b+e[_]+f[w]>>>0,b=y,y=v,v=C(m,30)>>>0,m=g,g=_;n[0]=n[0]+g>>>0,n[1]=n[1]+m>>>0,n[2]=n[2]+v>>>0,n[3]=n[3]+y>>>0,n[4]=n[4]+b>>>0}return[n[0]>>24&255,n[0]>>16&255,n[0]>>8&255,255&n[0],n[1]>>24&255,n[1]>>16&255,n[1]>>8&255,255&n[1],n[2]>>24&255,n[2]>>16&255,n[2]>>8&255,255&n[2],n[3]>>24&255,n[3]>>16&255,n[3]>>8&255,255&n[3],n[4]>>24&255,n[4]>>16&255,n[4]>>8&255,255&n[4]]});t.NIL="00000000-0000-0000-0000-000000000000",t.parse=u,t.stringify=p,t.v1=function(t,e,n){var r=e&&n||0,i=e||new Array(16),o=(t=t||{}).node||h,n=void 0!==t.clockseq?t.clockseq:f,s=(null!=o&&null!=n||(s=t.random||(t.rng||l)(),null==o&&(o=h=[1|s[0],s[1],s[2],s[3],s[4],s[5]]),null==n&&(n=f=16383&(s[6]<<8|s[7]))),void 0!==t.msecs?t.msecs:Date.now()),a=void 0!==t.nsecs?t.nsecs:g+1,u=s-d+(a-g)/1e4;if(u<0&&void 0===t.clockseq&&(n=n+1&16383),1e4<=(a=(u<0||d>>24&255,i[r++]=u>>>16&255,i[r++]=u>>>8&255,i[r++]=255&u,t=s/4294967296*1e4&268435455;i[r++]=t>>>8&255,i[r++]=255&t,i[r++]=t>>>24&15|16,i[r++]=t>>>16&255,i[r++]=n>>>8|128,i[r++]=255&n;for(var c=0;c<6;++c)i[r+c]=o[c];return e||p(i)},t.v3=x,t.v4=function(t,e,n){var r=(t=t||{}).random||(t.rng||l)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,e){n=n||0;for(var i=0;i<16;++i)e[n+i]=r[i];return e}return p(r)},t.v5=k,t.validate=i,t.version=function(t){if(i(t))return parseInt(t.substr(14,1),16);throw TypeError("Invalid UUID")},Object.defineProperty(t,"__esModule",{value:!0})}),((t,e)=>{"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.clipboard=e():t.clipboard=e()})(this,function(){return n=[function(t,e,n){function a(t){var e=new v,t=function(n,t,r){p("listener called"),n.success=!0,t.forEach(function(t,e){r.clipboardData.setData(e,t),e===m&&r.clipboardData.getData(e)!=t&&(p("setting text/plain failed"),n.success=!1)}),r.preventDefault()}.bind(this,e,t);document.addEventListener("copy",t);try{document.execCommand("copy")}finally{document.removeEventListener("copy",t)}return e.success}function u(t,e){c(t);t=a(e);return l(),t}function c(t){var e=document.getSelection(),n=document.createRange();n.selectNodeContents(t),e.removeAllRanges(),e.addRange(n)}function l(){document.getSelection().removeAllRanges()}function h(){return"undefined"==typeof ClipboardEvent&&void 0!==window.clipboardData&&void 0!==window.clipboardData.setData}function r(){return new f(function(t,e){var n=window.clipboardData.getData("Text");""===n?e(new Error("Empty clipboard or could not read plain text from clipboard")):t(n)})}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=n(5),f="undefined"==typeof Promise?i.Promise:Promise,p=function(t){},d=!0,g=function(){(console.warn||console.log).call(arguments)}.bind(console,"[clipboard-polyfill]"),m="text/plain",n=(s.setDebugLog=function(t){p=t},s.suppressWarnings=function(){d=!1,o.suppressDTWarnings()},s.write=function(s){return d&&!s.getData(m)&&g("clipboard.write() was called without a `text/plain` data type. On some platforms, this may result in an empty clipboard. Call clipboard.suppressWarnings() to suppress this warning."),new f(function(t,e){var n,r,i,o;h()?(t=>{if(void 0!==(t=t.getData(m)))return window.clipboardData.setData("Text",t);throw"No `text/plain` value was specified."})(s)?t():e(new Error("Copying failed, possibly because the user rejected it.")):a(s)?(p("regular execCopy worked"),t()):-1 assuming success'),t()):u(document.body,s)?(p("copyUsingTempSelection worked"),t()):(n=s,(r=document.createElement("div")).setAttribute("style","-webkit-user-select: text !important"),r.textContent="temporary element",document.body.appendChild(r),n=u(r,n),document.body.removeChild(r),n?(p("copyUsingTempElem worked"),t()):void 0!==(r=s.getData(m))&&(n=r,p("copyTextUsingDOM"),(r=document.createElement("div")).setAttribute("style","-webkit-user-select: text !important"),(i=r).attachShadow&&(p("Using shadow DOM."),i=r.attachShadow({mode:"open"})),(o=document.createElement("span")).innerText=n,i.appendChild(o),document.body.appendChild(r),c(o),n=document.execCommand("copy"),l(),document.body.removeChild(r),n)?(p("copyTextUsingDOM worked"),t()):e(new Error("Copy command failed.")))})},s.writeText=function(t){var e;return navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(t):((e=new o.DT).setData(m,t),this.write(e))},s.read=function(){return new f(function(n,t){h()?r().then(function(t){return n((t=t,(e=new o.DT).setData(m,t),e));var e},t):t("Read is not supported in your browser.")})},s.readText=function(){return navigator.clipboard&&navigator.clipboard.readText?navigator.clipboard.readText():h()?r():new f(function(t,e){e("Read is not supported in your browser.")})},s.DT=o.DT,s);function s(){}e.default=n;var v=function(){this.success=!1};t.exports=n},function(t,e,H){!function(L,F){t.exports=(()=>{function c(t){return"function"==typeof t}function e(){var t=setTimeout;return function(){return t(r,1)}}function r(){for(var t=0;t<_;t+=2)(0,T[t])(T[t+1]),T[t]=void 0,T[t+1]=void 0;_=0}function s(t,e){var n,r=arguments,i=this,o=new this.constructor(u),s=(void 0===o[A]&&y(o),i._state);return s?(n=r[s-1],k(function(){return v(s,o,n,i._result)})):g(i,o,t,e),o}function a(t){var e;return t&&"object"==typeof t&&t.constructor===this?t:(f(e=new this(u),t),e)}function u(){}function l(t){try{return t.then}catch(t){return D.error=t,D}}function o(t,r,i){k(function(e){var n=!1,t=((t,e,n,r)=>{try{t.call(e,n,r)}catch(t){return t}})(i,r,function(t){n||(n=!0,(r!==t?f:p)(e,t))},function(t){n||(n=!0,d(e,t))},e._label);!n&&t&&(n=!0,d(e,t))},t)}function h(t,e,n){var r,i;e.constructor===t.constructor&&n===s&&e.constructor.resolve===a?(r=t,(i=e)._state===j?p(r,i._result):i._state===P?d(r,i._result):g(i,void 0,function(t){return f(r,t)},function(t){return d(r,t)})):n===D?(d(t,D.error),D.error=null):void 0!==n&&c(n)?o(t,e,n):p(t,e)}function f(t,e){var n;t===e?d(t,new TypeError("You cannot resolve a promise with itself")):(n=typeof e,null===e||"object"!=n&&"function"!=n?p(t,e):h(t,e,l(e)))}function n(t){t._onerror&&t._onerror(t._result),m(t)}function p(t,e){t._state===I&&(t._result=e,t._state=j,0!==t._subscribers.length)&&k(m,t)}function d(t,e){t._state===I&&(t._state=P,t._result=e,k(n,t))}function g(t,e,n,r){var i=t._subscribers,o=i.length;t._onerror=null,i[o]=e,i[o+j]=n,i[o+P]=r,0===o&&t._state&&k(m,t)}function m(t){var e=t._subscribers,n=t._state;if(0!==e.length){for(var r,i=void 0,o=t._result,s=0;s{try{return t(e)}catch(t){return N.error=t,N}})(n,r))===N?(u=!0,s=o.error,o.error=null):a=!0,e===o)return void d(e,new TypeError("A promises callback cannot return that same promise."))}else o=r,a=!0;e._state===I&&(i&&a?f(e,o):u?d(e,s):t===j?p(e,o):t===P&&d(e,o))}function y(t){t[A]=R++,t._state=void 0,t._result=void 0,t._subscribers=[]}function i(t,e){this._instanceConstructor=t,this.promise=new t(u),this.promise[A]||y(this.promise),w(e)?(this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0!==this.length&&(this.length=this.length||0,this._enumerate(e),0!==this._remaining)||p(this.promise,this._result)):d(this.promise,new Error("Array Methods must be provided an Array"))}function b(t){if(this[A]=R++,this._result=this._state=void 0,this._subscribers=[],u!==t){if("function"!=typeof t)throw new TypeError("You must pass a resolver function as the first argument to the promise constructor");if(!(this instanceof b))throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");var e=this,n=t;try{n(function(t){f(e,t)},function(t){d(e,t)})}catch(n){d(e,n)}}}var w=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},_=0,x=void 0,C=void 0,k=function(t,e){T[_]=t,T[_+1]=e,2===(_+=2)&&(C?C(r):W())},S="undefined"!=typeof window?window:void 0,O=S||{},E=O.MutationObserver||O.WebKitMutationObserver,O="undefined"==typeof self&&void 0!==L&&"[object process]"==={}.toString.call(L),M="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,T=new Array(1e3),W=void 0,W=O?function(){return L.nextTick(r)}:(E?()=>{var t=0,e=new E(r),n=document.createTextNode("");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}:M?()=>{var t=new MessageChannel;return t.port1.onmessage=r,function(){return t.port2.postMessage(0)}}:void 0===S?()=>{try{var t=H(4);return void 0!==(x=t.runOnLoop||t.runOnContext)?function(){x(r)}:e()}catch(t){return e()}}:e)(),A=Math.random().toString(36).substring(16),I=void 0,j=1,P=2,D=new t,N=new t,R=0;return i.prototype._enumerate=function(t){for(var e=0;this._state===I&&e{"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof exports&&"object"==typeof module?module.exports=t(require("jquery")):t(jQuery)})(function(It,jt){var Pt={beforeShow:e,move:e,change:e,show:e,hide:e,color:!1,flat:!1,showInput:!1,allowEmpty:!1,showButtons:!0,clickoutFiresChange:!0,showInitial:!1,showPalette:!1,showPaletteOnly:!1,hideAfterPaletteSelect:!1,togglePaletteOnly:!1,showSelectionPalette:!0,localStorageKey:!1,appendTo:"body",maxSelectionSize:7,cancelText:"cancel",chooseText:"choose",togglePaletteMoreText:"more",togglePaletteLessText:"less",clearText:"Clear Color Selection",noColorSelectedText:"No Color Selected",preferredFormat:!1,className:"",containerClassName:"",replacerClassName:"",showAlpha:!1,theme:"sp-light",palette:[["#ffffff","#000000","#ff0000","#ff8000","#ffff00","#008000","#0000ff","#4b0082","#9400d3"]],selectionPalette:[],disabled:!1,offset:null},Dt=[],Nt=!!/msie/i.exec(window.navigator.userAgent),Rt=((o=document.createElement("div").style).cssText="background-color:rgba(0,0,0,.5)",t(o.backgroundColor,"rgba")||t(o.backgroundColor,"hsla")),Ht=["
","
","
","
"].join(""),Bt=(()=>{var t="";if(Nt)for(var e=1;e<=6;e++)t+="
";return["
","
","
","
","","
","
","
","
","
","
","
","
","
","
","
","
","
","
","
","
","
",t,"
","
","
","
","
","","
","
","
","","","
","
","
"].join("")})();function t(t,e){return!!~(""+t).indexOf(e)}function Mt(t,e,n,r){for(var i=[],o=0;o')):i.push(It("
").append(It('').attr("title",r.noColorSelectedText)).html())}return"
"+i.join("")+"
"}function p(t,e){i=t,(e=It.extend({},Pt,e)).callbacks={move:Wt(e.move,i),change:Wt(e.change,i),show:Wt(e.show,i),hide:Wt(e.hide,i),beforeShow:Wt(e.beforeShow,i)};var M,W,n,a=e,u=a.flat,L=a.showSelectionPalette,r=a.localStorageKey,i=a.theme,o=a.callbacks,F=(M=R,function(){var t=this,e=arguments;W=W||setTimeout(function(){W=null,M.apply(t,e)},10)}),c=!10,H=!1,l=0,h=0,f=0,B=0,q=0,z=0,U=0,s=0,p=0,d=0,g=1,G=[],m=[],V={},v=a.selectionPalette.slice(0),$=a.maxSelectionSize,X="sp-dragging",y=null,b=t.ownerDocument,w=(b.body,It(t)),Y=!1,_=It(Bt,b).addClass(i),K=_.find(".sp-picker-container"),Q=_.find(".sp-color"),J=_.find(".sp-dragger"),Z=_.find(".sp-hue"),tt=_.find(".sp-slider"),x=_.find(".sp-alpha-inner"),et=_.find(".sp-alpha"),nt=_.find(".sp-alpha-handle"),C=_.find(".sp-input"),rt=_.find(".sp-palette"),it=_.find(".sp-initial"),e=_.find(".sp-cancel"),t=_.find(".sp-clear"),ot=_.find(".sp-choose"),st=_.find(".sp-palette-toggle"),at=w.is("input"),ut=at&&"color"===w.attr("type")&&Ft(),ct=at&&!u,k=ct?It(Ht).addClass(i).addClass(a.className).addClass(a.replacerClassName):It([]),lt=ct?k:w,S=k.find(".sp-preview-inner"),i=a.color||at&&w.val(),ht=!1,O=a.preferredFormat,ft=!a.showButtons||a.clickoutFiresChange,E=!i,T=a.allowEmpty&&!ut;function pt(){if(a.showPaletteOnly&&(a.showPalette=!0),st.text(a.showPaletteOnly?a.togglePaletteMoreText:a.togglePaletteLessText),a.palette){G=a.palette.slice(0),m=It.isArray(G[0])?G:[G],V={};for(var t=0;t$;)v.shift();if(r&&window.localStorage)try{window.localStorage[r]=v.join(";")}catch(t){}}}function mt(){var n=j(),t=It.map(m,function(t,e){return Mt(t,n,"sp-palette-row sp-palette-row-"+e,a)});dt(),v&&t.push(Mt((()=>{var t=[];if(a.showPalette)for(var e=0;eo&&nMath.abs(e-r),y=n?"x":"y"):y=null;var r=!y||"y"===y;y&&"x"!==y||(p=parseFloat(t/l)),r&&(d=parseFloat((h-e)/h)),E=!1,a.showAlpha||(g=1),P()},yt,bt),i?(I(i),D(),O=a.preferredFormat||tinycolor(i).format,gt(i)):D(),u&&xt(),n=Nt?"mousedown.spectrum":"click.spectrum touchstart.spectrum",rt.delegate(".sp-thumb-el",n,Tt),it.delegate(".sp-thumb-el:nth-child(1)",n,{ignore:!0},Tt);var At={show:xt,hide:A,toggle:_t,reflow:R,option:function(t,e){return t===jt?It.extend({},a):e===jt?a[t]:(a[t]=e,"preferredFormat"===t&&(O=a.preferredFormat),void pt())},enable:function(){Y=!1,w.attr("disabled",!1),lt.removeClass("sp-disabled")},disable:Et,offset:function(t){a.offset=t,R()},set:function(t){I(t),N()},get:j,destroy:function(){w.show(),lt.unbind("click.spectrum touchstart.spectrum"),_.remove(),k.remove(),Dt[At.id]=null},container:_};return At.id=Dt.push(At)-1,At}function e(){}function qt(t){t.stopPropagation()}function Wt(t,e){var n=Array.prototype.slice,r=n.call(arguments,2);return function(){return t.apply(e,r.concat(n.call(arguments)))}}function Lt(r,i,e,t){i=i||function(){},e=e||function(){},t=t||function(){};var o=document,s=!1,a={},u=0,c=0,l="ontouchstart"in window,n={};function h(t){t.stopPropagation&&t.stopPropagation(),t.preventDefault&&t.preventDefault(),t.returnValue=!1}function f(t){if(s){if(Nt&&o.documentMode<9&&!t.button)return p();var e=t.originalEvent&&t.originalEvent.touches&&t.originalEvent.touches[0],n=e&&e.pageX||t.pageX,e=e&&e.pageY||t.pageY,n=Math.max(0,Math.min(n-a.left,c)),e=Math.max(0,Math.min(e-a.top,u));l&&h(t),i.apply(r,[n,e,t])}}function p(){s&&(It(o).unbind(n),It(o.body).removeClass("sp-dragging"),setTimeout(function(){t.apply(r,arguments)},0)),s=!1}n.selectstart=h,n.dragstart=h,n["touchmove mousemove"]=f,n["touchend mouseup"]=p,It(r).bind("touchstart mousedown",function(t){(t.which?3==t.which:2==t.button)||s||!1!==e.apply(r,arguments)&&(s=!0,u=It(r).height(),c=It(r).width(),a=It(r).offset(),It(o).bind(n),It(o.body).addClass("sp-dragging"),f(t),h(t))})}function Ft(){return It.fn.spectrum.inputTypeColorSupport()}var v,y,b,w,_,x,C,n,k,r,i,o,S,s="spectrum.id";function O(t,e){var n,r,i,o,s,a,u,c,l,h,f,p,d,g;return e=e||{},(t=t||"")instanceof O?t:this instanceof O?(f={r:0,g:0,b:0},g=d=!(p=1),p=H(p="object"==typeof(n="string"==typeof(n=t)?(t=>{t=t.replace(v,"").replace(y,"").toLowerCase();var e,n=!1;if(k[t])t=k[t],n=!0;else if("transparent"==t)return{r:0,g:0,b:0,a:0,format:"name"};return(e=S.rgb.exec(t))?{r:e[1],g:e[2],b:e[3]}:(e=S.rgba.exec(t))?{r:e[1],g:e[2],b:e[3],a:e[4]}:(e=S.hsl.exec(t))?{h:e[1],s:e[2],l:e[3]}:(e=S.hsla.exec(t))?{h:e[1],s:e[2],l:e[3],a:e[4]}:(e=S.hsv.exec(t))?{h:e[1],s:e[2],v:e[3]}:(e=S.hsva.exec(t))?{h:e[1],s:e[2],v:e[3],a:e[4]}:(e=S.hex8.exec(t))?{a:T(e[1])/255,r:T(e[2]),g:T(e[3]),b:T(e[4]),format:n?"name":"hex8"}:(e=S.hex6.exec(t))?{r:T(e[1]),g:T(e[2]),b:T(e[3]),format:n?"name":"hex"}:!!(e=S.hex3.exec(t))&&{r:T(e[1]+""+e[1]),g:T(e[2]+""+e[2]),b:T(e[3]+""+e[3]),format:n?"name":"hex"}})(n):n)&&(n.hasOwnProperty("r")&&n.hasOwnProperty("g")&&n.hasOwnProperty("b")?(c=n.r,l=n.g,h=n.b,f={r:255*E(c,255),g:255*E(l,255),b:255*E(h,255)},d=!0,g="%"===String(n.r).substr(-1)?"prgb":"rgb"):n.hasOwnProperty("h")&&n.hasOwnProperty("s")&&n.hasOwnProperty("v")?(n.s=A(n.s),n.v=A(n.v),c=n.h,l=n.s,h=n.v,c=6*E(c,360),l=E(l,100),h=E(h,100),s=w.floor(c),f={r:255*[h,u=h*(1-(c-=s)*l),a=h*(1-l),a,c=h*(1-(1-c)*l),h][l=s%6],g:255*[c,h,h,u,a,a][l],b:255*[a,a,c,h,h,u][l]},d=!0,g="hsv"):n.hasOwnProperty("h")&&n.hasOwnProperty("s")&&n.hasOwnProperty("l")&&(n.s=A(n.s),n.l=A(n.l),s=n.h,a=n.s,c=n.l,s=E(s,360),a=E(a,100),c=E(c,100),0===a?r=i=o=c:(r=m(a=2*c-(c=c<.5?c*(1+a):c+a-c*a),c,s+1/3),i=m(a,c,s),o=m(a,c,s-1/3)),f={r:255*r,g:255*i,b:255*o},d=!0,g="hsl"),n.hasOwnProperty("a"))?n.a:p),h={ok:d,format:n.format||g,r:x(255,C(f.r,0)),g:x(255,C(f.g,0)),b:x(255,C(f.b,0)),a:p},this._originalInput=t,this._r=h.r,this._g=h.g,this._b=h.b,this._a=h.a,this._roundA=_(100*this._a)/100,this._format=e.format||h.format,this._gradientType=e.gradientType,this._r<1&&(this._r=_(this._r)),this._g<1&&(this._g=_(this._g)),this._b<1&&(this._b=_(this._b)),this._ok=h.ok,void(this._tc_id=b++)):new O(t,e);function m(t,e,n){return n<0&&(n+=1),1>1)+720)%360;--e;)r.h=(r.h+i)%360,o.push(O(r));return o}function F(t,e){e=e||6;for(var t=O(t).toHsv(),n=t.h,r=t.s,i=t.v,o=[],s=1/e;e--;)o.push(O({h:n,s:r,v:i})),i=(i+s)%1;return o}function H(t){return t=parseFloat(t),t=isNaN(t)||t<0||1")[0],t._cachedResult="color"===e.type&&""!==e.value),t._cachedResult},It.spectrum={},It.spectrum.localization={},It.spectrum.palettes={},It.fn.spectrum.processNativeColorInputs=function(){var t=It("input[type=color]");t.length&&!Ft()&&t.spectrum({preferredFormat:"hex6"})},v=/^[\s,#]+/,y=/\s+$/,b=0,w=Math,_=w.round,x=w.min,C=w.max,n=w.random,O.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},setAlpha:function(t){return this._a=H(t),this._roundA=_(100*this._a)/100,this},toHsv:function(){var t=u(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=u(this._r,this._g,this._b),e=_(360*t.h),n=_(100*t.s),t=_(100*t.v);return 1==this._a?"hsv("+e+", "+n+"%, "+t+"%)":"hsva("+e+", "+n+"%, "+t+"%, "+this._roundA+")"},toHsl:function(){var t=a(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=a(this._r,this._g,this._b),e=_(360*t.h),n=_(100*t.s),t=_(100*t.l);return 1==this._a?"hsl("+e+", "+n+"%, "+t+"%)":"hsla("+e+", "+n+"%, "+t+"%, "+this._roundA+")"},toHex:function(t){return c(this._r,this._g,this._b,t)},toHexString:function(t){return"#"+this.toHex(t)},toHex8:function(){return l(this._r,this._g,this._b,this._a)},toHex8String:function(){return"#"+this.toHex8()},toRgb:function(){return{r:_(this._r),g:_(this._g),b:_(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+_(this._r)+", "+_(this._g)+", "+_(this._b)+")":"rgba("+_(this._r)+", "+_(this._g)+", "+_(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:_(100*E(this._r,255))+"%",g:_(100*E(this._g,255))+"%",b:_(100*E(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+_(100*E(this._r,255))+"%, "+_(100*E(this._g,255))+"%, "+_(100*E(this._b,255))+"%)":"rgba("+_(100*E(this._r,255))+"%, "+_(100*E(this._g,255))+"%, "+_(100*E(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&(r[c(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var e="#"+l(this._r,this._g,this._b,this._a),n=e;return"progid:DXImageTransform.Microsoft.gradient("+(this._gradientType?"GradientType = 1, ":"")+"startColorstr="+e+",endColorstr="+(n=t?O(t).toHex8String():n)+")"},toString:function(t){var e=!!t,n=(t=t||this._format,!1),r=this._a<1&&0<=this._a;return e||!r||"hex"!==t&&"hex6"!==t&&"hex3"!==t&&"name"!==t?("rgb"===t&&(n=this.toRgbString()),"prgb"===t&&(n=this.toPercentageRgbString()),"hex"!==t&&"hex6"!==t||(n=this.toHexString()),"hex3"===t&&(n=this.toHexString(!0)),"hex8"===t&&(n=this.toHex8String()),"name"===t&&(n=this.toName()),"hsl"===t&&(n=this.toHslString()),(n="hsv"===t?this.toHsvString():n)||this.toHexString()):"name"===t&&0===this._a?this.toName():this.toRgbString()},_applyModification:function(t,e){t=t.apply(null,[this].concat([].slice.call(e)));return this._r=t._r,this._g=t._g,this._b=t._b,this.setAlpha(t._a),this},lighten:function(){return this._applyModification(I,arguments)},brighten:function(){return this._applyModification(j,arguments)},darken:function(){return this._applyModification(P,arguments)},desaturate:function(){return this._applyModification(d,arguments)},saturate:function(){return this._applyModification(g,arguments)},greyscale:function(){return this._applyModification(m,arguments)},spin:function(){return this._applyModification(D,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(L,arguments)},complement:function(){return this._applyCombination(N,arguments)},monochromatic:function(){return this._applyCombination(F,arguments)},splitcomplement:function(){return this._applyCombination(W,arguments)},triad:function(){return this._applyCombination(R,arguments)},tetrad:function(){return this._applyCombination(M,arguments)}},O.fromRatio=function(t,e){if("object"==typeof t){var n,r={};for(n in t)t.hasOwnProperty(n)&&(r[n]="a"===n?t[n]:A(t[n]));t=r}return O(t,e)},O.equals=function(t,e){return!(!t||!e)&&O(t).toRgbString()==O(e).toRgbString()},O.random=function(){return O.fromRatio({r:n(),g:n(),b:n()})},O.mix=function(t,e,n){n=0===n?0:n||50;var t=O(t).toRgb(),e=O(e).toRgb(),n=n/100,r=2*n-1,i=e.a-t.a,i=1-(r=(1+(r*i==-1?r:(r+i)/(1+r*i)))/2),r={r:e.r*r+t.r*i,g:e.g*r+t.g*i,b:e.b*r+t.b*i,a:e.a*n+t.a*(1-n)};return O(r)},O.readability=function(t,e){var t=O(t),e=O(e),n=t.toRgb(),r=e.toRgb(),t=t.getBrightness(),e=e.getBrightness(),n=Math.max(n.r,r.r)-Math.min(n.r,r.r)+Math.max(n.g,r.g)-Math.min(n.g,r.g)+Math.max(n.b,r.b)-Math.min(n.b,r.b);return{brightness:Math.abs(t-e),color:n}},O.isReadable=function(t,e){t=O.readability(t,e);return 125{var e,n={};for(e in t)t.hasOwnProperty(e)&&(n[t[e]]=e);return n})(k),i="[\\s|\\(]+("+(o="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)")+")[,|\\s]+("+o+")[,|\\s]+("+o+")\\s*\\)?",o="[\\s|\\(]+("+o+")[,|\\s]+("+o+")[,|\\s]+("+o+")[,|\\s]+("+o+")\\s*\\)?",S={rgb:new RegExp("rgb"+i),rgba:new RegExp("rgba"+o),hsl:new RegExp("hsl"+i),hsla:new RegExp("hsla"+o),hsv:new RegExp("hsv"+i),hsva:new RegExp("hsva"+o),hex3:/^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex8:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/},window.tinycolor=O,It(function(){It.fn.spectrum.load&&It.fn.spectrum.processNativeColorInputs()})}),(()=>{var t=function(x){x.ui=x.ui||{},x.ui.version="1.12.1";var i,r,C,k,o,s,a,u,c,n,l=0,h=Array.prototype.slice;function S(t,e,n){return[parseFloat(t[0])*(c.test(t[0])?e/100:1),parseFloat(t[1])*(c.test(t[1])?n/100:1)]}function O(t,e){return parseInt(x.css(t,e),10)||0}x.cleanData=(i=x.cleanData,function(t){for(var e,n,r=0;null!=(n=t[r]);r++)try{(e=x._data(n,"events"))&&e.remove&&x(n).triggerHandler("remove")}catch(t){}i(t)}),x.widget=function(t,n,e){var r,i,o,s={},a=t.split(".")[0],u=a+"-"+(t=t.split(".")[1]);return e||(e=n,n=x.Widget),x.isArray(e)&&(e=x.extend.apply(null,[{}].concat(e))),x.expr[":"][u.toLowerCase()]=function(t){return!!x.data(t,u)},x[a]=x[a]||{},r=x[a][t],i=x[a][t]=function(t,e){if(!this._createWidget)return new i(t,e);arguments.length&&this._createWidget(t,e)},x.extend(i,r,{version:e.version,_proto:x.extend({},e),_childConstructors:[]}),(o=new n).options=x.widget.extend({},o.options),x.each(e,function(e,r){function i(){return n.prototype[e].apply(this,arguments)}function o(t){return n.prototype[e].apply(this,t)}x.isFunction(r)?s[e]=function(){var t,e=this._super,n=this._superApply;return this._super=i,this._superApply=o,t=r.apply(this,arguments),this._super=e,this._superApply=n,t}:s[e]=r}),i.prototype=x.widget.extend(o,{widgetEventPrefix:r&&o.widgetEventPrefix||t},s,{constructor:i,namespace:a,widgetName:t,widgetFullName:u}),r?(x.each(r._childConstructors,function(t,e){var n=e.prototype;x.widget(n.namespace+"."+n.widgetName,i,e._proto)}),delete r._childConstructors):n._childConstructors.push(i),x.widget.bridge(t,i),i},x.widget.extend=function(t){for(var e,n,r=h.call(arguments,1),i=0,o=r.length;i",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=l++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var n=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){n._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var n,r,i,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(n=t.split(".")).shift(),n.length){for(r=o[t]=x.widget.extend({},this.options[t]),i=0;i
")).children()[0],x("body").append(e),t=n.offsetWidth,e.css("overflow","scroll"),t===(n=n.offsetWidth)&&(n=e[0].clientWidth),e.remove(),r=t-n)},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),n=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(k(r),k(i))?o.important="horizontal":o.important="vertical",h.using.call(this,t,o)}),s.offset(x.extend(c,{using:t}))})},x.ui.position={fit:{left:function(t,e){var n,r=e.within,i=r.isWindow?r.scrollLeft:r.offset.left,r=r.width,o=t.left-e.collisionPosition.marginLeft,s=i-o,a=o+e.collisionWidth-r-i;r?@[\]^`{|}~])/g,function(t){return t.replace(e,"\\$1")}),x.fn.labels=function(){var t,e,n;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(e=this.eq(0).parents("label"),(t=this.attr("id"))&&(n=(n=this.eq(0).parents().last()).add((n.length?n:this).siblings()),t="label[for='"+x.ui.escapeSelector(t)+"']",e=e.add(n.find(t).addBack(t))),this.pushStack(e))},x.fn.extend({uniqueId:(t=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&x(this).removeAttr("id")})}});var e,t,f,p=/ui-corner-([a-z]){2,6}/g,d=(x.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"
",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var o=this,s=[];x.each(this.options.items,function(r,t){var e,i;if(t)return"controlgroupLabel"===r?((e=o.element.find(t)).each(function(){var t=x(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("")}),o._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),void(s=s.concat(e.get()))):void(x.fn[r]&&(i=o["_"+r+"Options"]?o["_"+r+"Options"]("middle"):{classes:{}},o.element.find(t).each(function(){var t=x(this),e=t[r]("instance"),n=x.widget.extend({},i);"button"===r&&t.parent(".ui-spinner").length||((e=e||t[r]()[r]("instance"))&&(n.classes=o._resolveClassesValues(n.classes,e)),t[r](n),n=t[r]("widget"),x.data(n[0],"ui-controlgroup-data",e||t[r]("instance")),s.push(n[0]))})))}),this.childWidgets=x(x.unique(s)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=x(this).data("ui-controlgroup-data");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){e=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,e)},_buildSimpleOptions:function(t,e){var n="vertical"===this.options.direction,r={classes:{}};return r.classes[e]={middle:"",first:"ui-corner-"+(n?"top":"left"),last:"ui-corner-"+(n?"bottom":"right"),only:"ui-corner-all"}[t],r},_spinnerOptions:function(t){t=this._buildSimpleOptions(t,"ui-spinner");return t.classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:!!e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(n,r){var i={};return x.each(n,function(t){var e=r.options.classes[t]||"",e=x.trim(e.replace(p,""));i[t]=(e+" "+n[t]).replace(/\s+/g," ")}),i},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"!==t?this.refresh():this._callChildMethod(e?"disable":"enable")},refresh:function(){var i,o=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),i=this.childWidgets,(i=this.options.onlyVisible?i.filter(":visible"):i).length&&(x.each(["first","last"],function(t,e){var n,r=i[e]().data("ui-controlgroup-data");r&&o["_"+r.widgetName+"Options"]?((n=o["_"+r.widgetName+"Options"](1===i.length?"only":e)).classes=o._resolveClassesValues(n.classes,r),r.element[r.widgetName](n)):o._updateCornerClass(i[e](),e)}),this._callChildMethod("refresh"))}}),x.widget("ui.checkboxradio",[x.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,e=this,n=this._super()||{};return this._readType(),t=this.element.labels(),this.label=x(t[t.length-1]),this.label.length||x.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){e.originalLabel+=3===this.nodeType?x(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(n.disabled=t),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon)&&this._addClass(this.icon,null,"ui-state-hover"),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||x.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,e="input[name='"+x.ui.escapeSelector(t)+"']";return t?(this.form.length?x(this.form[0].elements).filter(e):x(e).filter(function(){return 0===x(this).form().length})).not(this.element):x([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=x(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){"label"===t&&!e||(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e):this.refresh())},_updateIcon:function(t){var e="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=x(""),this.iconSpace=x(" "),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(e+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):e+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",e),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),(t=this.iconSpace?t.not(this.iconSpace[0]):t).remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),x.ui.checkboxradio,x.widget("ui.button",{version:"1.12.1",defaultElement:"
"),n.push('
'),this.pageList=[],t.showPN&&(1==t.page?this.pageList.push(''):this.pageList.push('')),e<=6)for(var r=1;r...');for(r=e-3;r<=e;r++)this.creatHtml(r)}else{this.pageList.push(''),3...');for(r=t.page-1;r<=Number(t.page)+1;r++)this.creatHtml(r);t.page<=e-3&&this.pageList.push(''),this.pageList.push("")}if(t.showPN&&(t.page==e?this.pageList.push(''):this.pageList.push('')),n.push(this.pageList.join("")),n.push("
"),0"+t.selectOption[o]+"行/页":i+=">"+t.selectOption[o]+"行/页";n.push(i+="")}t.showSkip&&n.push('
跳至  页  
'),this.element.html(n.join(""))},clickBtn:function(){var n=this,r=this.settings,i=this.element,o=this.pageTatol;this.element.on("change","select",function(t){var e=parseInt(document.getElementById("selectNum").value);r.pageSize=e,r.page=1,n.element.empty(),n.viewHtml(),r.backFun(r)}),this.element.off("click","button"),this.element.on("click","button",function(){var t=s(this).data("page");switch(t){case"prev":r.page=1<=r.page-1?r.page-1:1,t=r.page;break;case"next":r.page=Number(r.page)+1<=o?Number(r.page)+1:o,t=r.page;break;case"before":r.page=1<=r.page-r.fastForward?r.page-r.fastForward:1,t=r.page;break;case"after":r.page=Number(r.page)+Number(r.fastForward)<=o?Number(r.page)+Number(r.fastForward):o,t=r.page;break;case"go":var e=parseInt(i.find("input").val());if(!(/^[0-9]*$/.test(e)&&1<=e&&e<=o))return;t=r.page=e;break;default:r.page=t}t!=n.pageNum&&(n.pageNum=r.page,n.viewHtml(),r.backFun(r))}),this.element.off("keyup","input"),this.element.on("keyup","input",function(t){13==t.keyCode&&(t=parseInt(i.find("input").val()),/^[0-9]*$/.test(t))&&1<=t&&t<=o&&t!=n.pageNum&&(r.page=t,n.pageNum=t,n.viewHtml(),r.backFun(r))}),0{"object"==typeof module&&"object"==typeof module.exports?module.exports=t.document?e(t,!0):function(t){if(t.document)return e(t);throw new Error("jQuery requires a window with a document")}:e(t)})("undefined"!=typeof window?window:this,function(_,M){function W(t,e){return e.toUpperCase()}var t=[],x=_.document,l=t.slice,L=t.concat,F=t.push,i=t.indexOf,H={},B=H.toString,d=H.hasOwnProperty,g={},e="2.2.4",C=function(t,e){return new C.fn.init(t,e)},q=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,z=/^-ms-/,U=/-([\da-z])/gi;function G(t){var e=!!t&&"length"in t&&t.length,n=C.type(t);return"function"!==n&&!C.isWindow(t)&&("array"===n||0===e||"number"==typeof e&&0{function h(t,e,n){var r="0x"+e-65536;return r!=r||n?e:r<0?String.fromCharCode(65536+r):String.fromCharCode(r>>10|55296,1023&r|56320)}function W(){x()}var t,d,w,o,L,g,F,H,_,u,c,x,C,e,k,m,r,i,v,S="sizzle"+ +new Date,y=M.document,O=0,B=0,q=ct(),z=ct(),b=ct(),U=function(t,e){return t===e&&(c=!0),0},G={}.hasOwnProperty,n=[],V=n.pop,$=n.push,E=n.push,X=n.slice,T=function(t,e){for(var n=0,r=t.length;n+~]|"+s+")"+s+"*"),et=new RegExp("="+s+"*([^\\]'\"]*?)"+s+"*\\]","g"),nt=new RegExp(Q),rt=new RegExp("^"+a+"$"),f={ID:new RegExp("^#("+a+")"),CLASS:new RegExp("^\\.("+a+")"),TAG:new RegExp("^("+a+"|[*])"),ATTR:new RegExp("^"+K),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+s+"*(even|odd|(([+-]|)(\\d*)n|)"+s+"*(?:([+-]|)"+s+"*(\\d+)|))"+s+"*\\)|)","i"),bool:new RegExp("^(?:"+Y+")$","i"),needsContext:new RegExp("^"+s+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+s+"*((?:-\\d)?\\d*)"+s+"*\\)|)(?=[^-]|$)","i")},it=/^(?:input|select|textarea|button)$/i,ot=/^h\d$/i,l=/^[^{]+\{\s*\[native \w/,st=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,at=/[+~]/,ut=/'|\\/g,p=new RegExp("\\\\([\\da-f]{1,6}"+s+"?|("+s+")|.)","ig");try{E.apply(n=X.call(y.childNodes),y.childNodes),n[y.childNodes.length].nodeType}catch(t){E={apply:n.length?function(t,e){$.apply(t,X.call(e))}:function(t,e){for(var n=t.length,r=0;t[n++]=e[r++];);t.length=n-1}}}function I(t,e,n,r){var i,o,s,a,u,c,l,h,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:y)!==C&&x(e),e=e||C,k)){if(11!==p&&(c=st.exec(t)))if(i=c[1]){if(9===p){if(!(s=e.getElementById(i)))return n;if(s.id===i)return n.push(s),n}else if(f&&(s=f.getElementById(i))&&v(e,s)&&s.id===i)return n.push(s),n}else{if(c[2])return E.apply(n,e.getElementsByTagName(t)),n;if((i=c[3])&&d.getElementsByClassName&&e.getElementsByClassName)return E.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!b[t+" "]&&(!m||!m.test(t))){if(1!==p)f=e,h=t;else if("object"!==e.nodeName.toLowerCase()){for((a=e.getAttribute("id"))?a=a.replace(ut,"\\$&"):e.setAttribute("id",a=S),o=(l=g(t)).length,u=rt.test(a)?"#"+a:"[id='"+a+"']";o--;)l[o]=u+" "+N(l[o]);h=l.join(","),f=at.test(t)&&ft(e.parentNode)||e}if(h)try{return E.apply(n,f.querySelectorAll(h)),n}catch(t){}finally{a===S&&e.removeAttribute("id")}}}return H(t.replace(A,"$1"),e,n,r)}function ct(){var n=[];function r(t,e){return n.push(t+" ")>w.cacheLength&&delete r[n.shift()],r[t+" "]=e}return r}function j(t){return t[S]=!0,t}function P(t){var e=C.createElement("div");try{return!!t(e)}catch(t){return!1}finally{e.parentNode&&e.parentNode.removeChild(e)}}function lt(t,e){for(var n=t.split("|"),r=n.length;r--;)w.attrHandle[n[r]]=e}function ht(t,e){var n=e&&t,r=n&&1===t.nodeType&&1===e.nodeType&&(~e.sourceIndex||1<<31)-(~t.sourceIndex||1<<31);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===e)return-1;return t?1:-1}function D(s){return j(function(o){return o=+o,j(function(t,e){for(var n,r=s([],t.length,o),i=r.length;i--;)t[n=r[i]]&&(t[n]=!(e[n]=t[n]))})})}function ft(t){return t&&void 0!==t.getElementsByTagName&&t}for(t in d=I.support={},L=I.isXML=function(t){t=t&&(t.ownerDocument||t).documentElement;return!!t&&"HTML"!==t.nodeName},x=I.setDocument=function(t){var t=t?t.ownerDocument||t:y;return t!==C&&9===t.nodeType&&t.documentElement&&(e=(C=t).documentElement,k=!L(C),(t=C.defaultView)&&t.top!==t&&(t.addEventListener?t.addEventListener("unload",W,!1):t.attachEvent&&t.attachEvent("onunload",W)),d.attributes=P(function(t){return t.className="i",!t.getAttribute("className")}),d.getElementsByTagName=P(function(t){return t.appendChild(C.createComment("")),!t.getElementsByTagName("*").length}),d.getElementsByClassName=l.test(C.getElementsByClassName),d.getById=P(function(t){return e.appendChild(t).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(w.find.ID=function(t,e){if(void 0!==e.getElementById&&k)return(e=e.getElementById(t))?[e]:[]},w.filter.ID=function(t){var e=t.replace(p,h);return function(t){return t.getAttribute("id")===e}}):(delete w.find.ID,w.filter.ID=function(t){var e=t.replace(p,h);return function(t){t=void 0!==t.getAttributeNode&&t.getAttributeNode("id");return t&&t.value===e}}),w.find.TAG=d.getElementsByTagName?function(t,e){return void 0!==e.getElementsByTagName?e.getElementsByTagName(t):d.qsa?e.querySelectorAll(t):void 0}:function(t,e){var n,r=[],i=0,o=e.getElementsByTagName(t);if("*"!==t)return o;for(;n=o[i++];)1===n.nodeType&&r.push(n);return r},w.find.CLASS=d.getElementsByClassName&&function(t,e){return void 0!==e.getElementsByClassName&&k?e.getElementsByClassName(t):void 0},r=[],m=[],(d.qsa=l.test(C.querySelectorAll))&&(P(function(t){e.appendChild(t).innerHTML="",t.querySelectorAll("[msallowcapture^='']").length&&m.push("[*^$]="+s+"*(?:''|\"\")"),t.querySelectorAll("[selected]").length||m.push("\\["+s+"*(?:value|"+Y+")"),t.querySelectorAll("[id~="+S+"-]").length||m.push("~="),t.querySelectorAll(":checked").length||m.push(":checked"),t.querySelectorAll("a#"+S+"+*").length||m.push(".#.+[+~]")}),P(function(t){var e=C.createElement("input");e.setAttribute("type","hidden"),t.appendChild(e).setAttribute("name","D"),t.querySelectorAll("[name=d]").length&&m.push("name"+s+"*[*^$|!~]?="),t.querySelectorAll(":enabled").length||m.push(":enabled",":disabled"),t.querySelectorAll("*,:x"),m.push(",.*:")})),(d.matchesSelector=l.test(i=e.matches||e.webkitMatchesSelector||e.mozMatchesSelector||e.oMatchesSelector||e.msMatchesSelector))&&P(function(t){d.disconnectedMatch=i.call(t,"div"),i.call(t,"[s!='']:x"),r.push("!=",Q)}),m=m.length&&new RegExp(m.join("|")),r=r.length&&new RegExp(r.join("|")),t=l.test(e.compareDocumentPosition),v=t||l.test(e.contains)?function(t,e){var n=9===t.nodeType?t.documentElement:t,e=e&&e.parentNode;return t===e||!(!e||1!==e.nodeType||!(n.contains?n.contains(e):t.compareDocumentPosition&&16&t.compareDocumentPosition(e)))}:function(t,e){if(e)for(;e=e.parentNode;)if(e===t)return!0;return!1},U=t?function(t,e){var n;return t===e?(c=!0,0):(n=!t.compareDocumentPosition-!e.compareDocumentPosition)||(1&(n=(t.ownerDocument||t)===(e.ownerDocument||e)?t.compareDocumentPosition(e):1)||!d.sortDetached&&e.compareDocumentPosition(t)===n?t===C||t.ownerDocument===y&&v(y,t)?-1:e===C||e.ownerDocument===y&&v(y,e)?1:u?T(u,t)-T(u,e):0:4&n?-1:1)}:function(t,e){if(t===e)return c=!0,0;var n,r=0,i=t.parentNode,o=e.parentNode,s=[t],a=[e];if(!i||!o)return t===C?-1:e===C?1:i?-1:o?1:u?T(u,t)-T(u,e):0;if(i===o)return ht(t,e);for(n=t;n=n.parentNode;)s.unshift(n);for(n=e;n=n.parentNode;)a.unshift(n);for(;s[r]===a[r];)r++;return r?ht(s[r],a[r]):s[r]===y?-1:a[r]===y?1:0}),C},I.matches=function(t,e){return I(t,null,null,e)},I.matchesSelector=function(t,e){if((t.ownerDocument||t)!==C&&x(t),e=e.replace(et,"='$1']"),d.matchesSelector&&k&&!b[e+" "]&&(!r||!r.test(e))&&(!m||!m.test(e)))try{var n=i.call(t,e);if(n||d.disconnectedMatch||t.document&&11!==t.document.nodeType)return n}catch(t){}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(t){return t[1]=t[1].replace(p,h),t[3]=(t[3]||t[4]||t[5]||"").replace(p,h),"~="===t[2]&&(t[3]=" "+t[3]+" "),t.slice(0,4)},CHILD:function(t){return t[1]=t[1].toLowerCase(),"nth"===t[1].slice(0,3)?(t[3]||I.error(t[0]),t[4]=+(t[4]?t[5]+(t[6]||1):2*("even"===t[3]||"odd"===t[3])),t[5]=+(t[7]+t[8]||"odd"===t[3])):t[3]&&I.error(t[0]),t},PSEUDO:function(t){var e,n=!t[6]&&t[2];return f.CHILD.test(t[0])?null:(t[3]?t[2]=t[4]||t[5]||"":n&&nt.test(n)&&(e=(e=g(n,!0))&&n.indexOf(")",n.length-e)-n.length)&&(t[0]=t[0].slice(0,e),t[2]=n.slice(0,e)),t.slice(0,3))}},filter:{TAG:function(t){var e=t.replace(p,h).toLowerCase();return"*"===t?function(){return!0}:function(t){return t.nodeName&&t.nodeName.toLowerCase()===e}},CLASS:function(t){var e=q[t+" "];return e||(e=new RegExp("(^|"+s+")"+t+"("+s+"|$)"))&&q(t,function(t){return e.test("string"==typeof t.className&&t.className||void 0!==t.getAttribute&&t.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(t){t=I.attr(t,e);return null==t?"!="===n:!n||(t+="","="===n?t===r:"!="===n?t!==r:"^="===n?r&&0===t.indexOf(r):"*="===n?r&&-1function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e})(t);for(t in{submit:!0,reset:!0})w.pseudos[t]=(n=>function(t){var e=t.nodeName.toLowerCase();return("input"===e||"button"===e)&&t.type===n})(t);function pt(){}function N(t){for(var e=0,n=t.length,r="";e{for(var r=0,i=e.length;r(?:<\/\1>|)$/,Y=/^.[^:#\[\.,]*$/;function K(t,n,r){if(C.isFunction(n))return C.grep(t,function(t,e){return!!n.call(t,e,t)!==r});if(n.nodeType)return C.grep(t,function(t){return t===n!==r});if("string"==typeof n){if(Y.test(n))return C.filter(n,t,r);n=C.filter(n,t)}return C.grep(t,function(t){return-1)[^>]*|#([\w-]*))$/,Z=((C.fn.init=function(t,e,n){if(t){if(n=n||Q,"string"!=typeof t)return t.nodeType?(this.context=this[0]=t,this.length=1,this):C.isFunction(t)?void 0!==n.ready?n.ready(t):t(C):(void 0!==t.selector&&(this.selector=t.selector,this.context=t.context),C.makeArray(t,this));if(!(r="<"===t[0]&&">"===t[t.length-1]&&3<=t.length?[null,t,null]:J.exec(t))||!r[1]&&e)return(!e||e.jquery?e||n:this.constructor(e)).find(t);if(r[1]){if(e=e instanceof C?e[0]:e,C.merge(this,C.parseHTML(r[1],e&&e.nodeType?e.ownerDocument||e:x,!0)),X.test(r[1])&&C.isPlainObject(e))for(var r in e)C.isFunction(this[r])?this[r](e[r]):this.attr(r,e[r])}else(n=x.getElementById(r[2]))&&n.parentNode&&(this.length=1,this[0]=n),this.context=x,this.selector=t}return this}).prototype=C.fn,Q=C(x),/^(?:parents|prev(?:Until|All))/),tt={children:!0,contents:!0,next:!0,prev:!0};function et(t,e){for(;(t=t[e])&&1!==t.nodeType;);return t}C.fn.extend({has:function(t){var e=C(t,this),n=e.length;return this.filter(function(){for(var t=0;t",""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function w(t,e){var n=void 0!==t.getElementsByTagName?t.getElementsByTagName(e||"*"):void 0!==t.querySelectorAll?t.querySelectorAll(e||"*"):[];return void 0===e||e&&C.nodeName(t,e)?C.merge([t],n):n}function ht(t,e){for(var n=0,r=t.length;nx",g.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue;var dt=/^key/,gt=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,mt=/^([^.]*)(?:\.(.+)|)/;function vt(){return!0}function c(){return!1}function yt(){try{return x.activeElement}catch(t){}}function bt(t,e,n,r,i,o){var s,a;if("object"==typeof e){for(a in"string"!=typeof n&&(r=r||n,n=void 0),e)bt(t,a,n,r,e[a],o);return t}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=c;else if(!i)return t;return 1===o&&(s=i,(i=function(t){return C().off(t),s.apply(this,arguments)}).guid=s.guid||(s.guid=C.guid++)),t.each(function(){C.event.add(this,e,i,r,n)})}C.event={global:{},add:function(e,t,n,r,i){var o,s,a,u,c,l,h,f,p,d=v.get(e);if(d)for(n.handler&&(n=(o=n).handler,i=o.selector),n.guid||(n.guid=C.guid++),a=(a=d.events)||(d.events={}),s=(s=d.handle)||(d.handle=function(t){return void 0!==C&&C.event.triggered!==t.type?C.event.dispatch.apply(e,arguments):void 0}),u=(t=(t||"").match(k)||[""]).length;u--;)h=p=(f=mt.exec(t[u])||[])[1],f=(f[2]||"").split(".").sort(),h&&(c=C.event.special[h]||{},h=(i?c.delegateType:c.bindType)||h,c=C.event.special[h]||{},p=C.extend({type:h,origType:p,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&C.expr.match.needsContext.test(i),namespace:f.join(".")},o),(l=a[h])||((l=a[h]=[]).delegateCount=0,c.setup&&!1!==c.setup.call(e,r,f,s))||e.addEventListener&&e.addEventListener(h,s),c.add&&(c.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),i?l.splice(l.delegateCount++,0,p):l.push(p),C.event.global[h]=!0)},remove:function(t,e,n,r,i){var o,s,a,u,c,l,h,f,p,d,g,m=v.hasData(t)&&v.get(t);if(m&&(u=m.events)){for(c=(e=(e||"").match(k)||[""]).length;c--;)if(p=g=(a=mt.exec(e[c])||[])[1],d=(a[2]||"").split(".").sort(),p){for(h=C.event.special[p]||{},f=u[p=(r?h.delegateType:h.bindType)||p]||[],a=a[2]&&new RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=f.length;o--;)l=f[o],!i&&g!==l.origType||n&&n.guid!==l.guid||a&&!a.test(l.namespace)||r&&r!==l.selector&&("**"!==r||!l.selector)||(f.splice(o,1),l.selector&&f.delegateCount--,h.remove&&h.remove.call(t,l));s&&!f.length&&(h.teardown&&!1!==h.teardown.call(t,d,m.handle)||C.removeEvent(t,p,m.handle),delete u[p])}else for(p in u)C.event.remove(t,p+e[c],n,r,!0);C.isEmptyObject(u)&&v.remove(t,"handle events")}},dispatch:function(t){t=C.event.fix(t);var e,n,r,i,o,s=l.call(arguments),a=(v.get(this,"events")||{})[t.type]||[],u=C.event.special[t.type]||{};if((s[0]=t).delegateTarget=this,!u.preDispatch||!1!==u.preDispatch.call(this,t)){for(o=C.event.handlers.call(this,t,a),e=0;(r=o[e++])&&!t.isPropagationStopped();)for(t.currentTarget=r.elem,n=0;(i=r.handlers[n++])&&!t.isImmediatePropagationStopped();)t.rnamespace&&!t.rnamespace.test(i.namespace)||(t.handleObj=i,t.data=i.data,void 0!==(i=((C.event.special[i.origType]||{}).handle||i.handler).apply(r.elem,s))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()));return u.postDispatch&&u.postDispatch.call(this,t),t.result}},handlers:function(t,e){var n,r,i,o,s=[],a=e.delegateCount,u=t.target;if(a&&u.nodeType&&("click"!==t.type||isNaN(t.button)||t.button<1))for(;u!==this;u=u.parentNode||this)if(1===u.nodeType&&(!0!==u.disabled||"click"!==t.type)){for(r=[],n=0;n]*)\/>/gi,_t=/\s*$/g;function St(t,e){return C.nodeName(t,"table")&&C.nodeName(11!==e.nodeType?e:e.firstChild,"tr")?t.getElementsByTagName("tbody")[0]||t.appendChild(t.ownerDocument.createElement("tbody")):t}function Ot(t){return t.type=(null!==t.getAttribute("type"))+"/"+t.type,t}function Et(t){var e=Ct.exec(t.type);return e?t.type=e[1]:t.removeAttribute("type"),t}function Tt(t,e){var n,r,i,o,s,a;if(1===e.nodeType){if(v.hasData(t)&&(o=v.access(t),s=v.set(e,o),a=o.events))for(i in delete s.handle,s.events={},a)for(n=0,r=a[i].length;n")},clone:function(t,e,n){var r,i,o,s,a,u,c,l=t.cloneNode(!0),h=C.contains(t.ownerDocument,t);if(!(g.noCloneChecked||1!==t.nodeType&&11!==t.nodeType||C.isXMLDoc(t)))for(s=w(l),r=0,i=(o=w(t)).length;r")).appendTo(e.documentElement))[0].contentDocument).write(),e.close(),n=Pt(t,e),It.detach()),jt[t]=n),n}function Nt(t){var e=t.ownerDocument.defaultView;return(e=e&&e.opener?e:_).getComputedStyle(t)}function Rt(t,e,n,r){var i,o={};for(i in e)o[i]=t.style[i],t.style[i]=e[i];for(i in n=n.apply(t,r||[]),e)t.style[i]=o[i];return n}var Mt,o,Wt,Lt,s,p,Ft=/^margin/,Ht=new RegExp("^("+t+")(?!px)[a-z%]+$","i"),O=x.documentElement;function Bt(){p.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",p.innerHTML="",O.appendChild(s);var t=_.getComputedStyle(p);Mt="1%"!==t.top,Lt="2px"===t.marginLeft,o="4px"===t.width,p.style.marginRight="50%",Wt="4px"===t.marginRight,O.removeChild(s)}function E(t,e,n){var r,i,o=t.style;return""!==(i=(n=n||Nt(t))?n.getPropertyValue(e)||n[e]:void 0)&&void 0!==i||C.contains(t.ownerDocument,t)||(i=C.style(t,e)),n&&!g.pixelMarginRight()&&Ht.test(i)&&Ft.test(e)&&(t=o.width,e=o.minWidth,r=o.maxWidth,o.minWidth=o.maxWidth=o.width=i,i=n.width,o.width=t,o.minWidth=e,o.maxWidth=r),void 0!==i?i+"":i}function qt(t,e){return{get:function(){return t()?void delete this.get:(this.get=e).apply(this,arguments)}}}s=x.createElement("div"),(p=x.createElement("div")).style&&(p.style.backgroundClip="content-box",p.cloneNode(!0).style.backgroundClip="",g.clearCloneStyle="content-box"===p.style.backgroundClip,s.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",s.appendChild(p),C.extend(g,{pixelPosition:function(){return Bt(),Mt},boxSizingReliable:function(){return null==o&&Bt(),o},pixelMarginRight:function(){return null==o&&Bt(),Wt},reliableMarginLeft:function(){return null==o&&Bt(),Lt},reliableMarginRight:function(){var t,e=p.appendChild(x.createElement("div"));return e.style.cssText=p.style.cssText="-webkit-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",e.style.marginRight=e.style.width="0",p.style.width="1px",O.appendChild(s),t=!parseFloat(_.getComputedStyle(e).marginRight),O.removeChild(s),p.removeChild(e),t}}));var zt=/^(none|table(?!-c[ea]).+)/,Ut={position:"absolute",visibility:"hidden",display:"block"},Gt={letterSpacing:"0",fontWeight:"400"},Vt=["Webkit","O","Moz","ms"],$t=x.createElement("div").style;function Xt(t){if(t in $t)return t;for(var e=t[0].toUpperCase()+t.slice(1),n=Vt.length;n--;)if((t=Vt[n]+e)in $t)return t}function Yt(t,e,n){var r=f.exec(e);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):e}function Kt(t,e,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===e?1:0,s=0;o<4;o+=2)"margin"===n&&(s+=C.css(t,n+a[o],!0,i)),r?("content"===n&&(s-=C.css(t,"padding"+a[o],!0,i)),"margin"!==n&&(s-=C.css(t,"border"+a[o]+"Width",!0,i))):(s+=C.css(t,"padding"+a[o],!0,i),"padding"!==n&&(s+=C.css(t,"border"+a[o]+"Width",!0,i)));return s}function Qt(t,e,n){var r=!0,i="width"===e?t.offsetWidth:t.offsetHeight,o=Nt(t),s="border-box"===C.css(t,"boxSizing",!1,o);if(i<=0||null==i){if(((i=E(t,e,o))<0||null==i)&&(i=t.style[e]),Ht.test(i))return i;r=s&&(g.boxSizingReliable()||i===t.style[e]),i=parseFloat(i)||0}return i+Kt(t,e,n||(s?"border":"content"),r,o)+"px"}function Jt(t,e){for(var n,r,i,o=[],s=0,a=t.length;s{for(var r,i,o,s,a=t.contents,u=t.dataTypes;"*"===u[0];)u.shift(),void 0===r&&(r=t.mimeType||e.getResponseHeader("Content-Type"));if(r)for(i in a)if(a[i]&&a[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||t.converters[i+" "+u[0]]){o=i;break}s=s||i}o=o||s}return o?(o!==u[0]&&u.unshift(o),n[o]):void 0})(p,w,n)),s=((t,e,n,r)=>{var i,o,s,a,u,c={},l=t.dataTypes.slice();if(l[1])for(s in t.converters)c[s.toLowerCase()]=t.converters[s];for(o=l.shift();o;)if(t.responseFields[o]&&(n[t.responseFields[o]]=e),!u&&r&&t.dataFilter&&(e=t.dataFilter(e,t.dataType)),u=o,o=l.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(s=c[u+" "+o]||c["* "+o]))for(i in c)if(a=i.split(" "),a[1]===o&&(s=c[u+" "+a[0]]||c["* "+a[0]])){!0===s?s=c[i]:!0!==c[i]&&(o=a[0],l.unshift(a[1]));break}if(!0!==s)if(s&&t.throws)e=s(e);else try{e=s(e)}catch(t){return{state:"parsererror",error:s?t:"No conversion from "+u+" to "+o}}}return{state:"success",data:e}})(p,s,w,r),r?(p.ifModified&&((n=w.getResponseHeader("Last-Modified"))&&(C.lastModified[c]=n),n=w.getResponseHeader("etag"))&&(C.etag[c]=n),204===t||"HEAD"===p.type?a="nocontent":304===t?a="notmodified":(a=s.state,i=s.data,r=!(o=s.error))):(o=a,!t&&a||(a="error",t<0&&(t=0))),w.status=t,w.statusText=(e||a)+"",r?m.resolveWith(d,[i,a,w]):m.rejectWith(d,[w,a,o]),w.statusCode(y),y=void 0,f&&g.trigger(r?"ajaxSuccess":"ajaxError",[w,p,r?i:o]),v.fireWith(d,[w,a]),f)&&(g.trigger("ajaxComplete",[w,p]),--C.active||C.event.trigger("ajaxStop"))}},getJSON:function(t,e,n){return C.get(t,e,n,"json")},getScript:function(t,e){return C.get(t,void 0,e,"script")}}),C.each(["get","post"],function(t,i){C[i]=function(t,e,n,r){return C.isFunction(e)&&(r=r||n,n=e,e=void 0),C.ajax(C.extend({url:t,type:i,dataType:r,data:e,success:n},C.isPlainObject(t)&&t))}}),C._evalUrl=function(t){return C.ajax({url:t,type:"GET",dataType:"script",async:!1,global:!1,throws:!0})},C.fn.extend({wrapAll:function(e){var t;return C.isFunction(e)?this.each(function(t){C(this).wrapAll(e.call(this,t))}):(this[0]&&(t=C(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var t=this;t.firstElementChild;)t=t.firstElementChild;return t}).append(this)),this)},wrapInner:function(n){return C.isFunction(n)?this.each(function(t){C(this).wrapInner(n.call(this,t))}):this.each(function(){var t=C(this),e=t.contents();e.length?e.wrapAll(n):t.append(n)})},wrap:function(e){var n=C.isFunction(e);return this.each(function(t){C(this).wrapAll(n?e.call(this,t):e)})},unwrap:function(){return this.parent().each(function(){C.nodeName(this,"body")||C(this).replaceWith(this.childNodes)}).end()}}),C.expr.filters.hidden=function(t){return!C.expr.filters.visible(t)},C.expr.filters.visible=function(t){return 0").prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(t){r.remove(),i=null,t&&e("error"===t.type?404:200,t.type)}),x.head.appendChild(r[0])},abort:function(){i&&i()}}}),[]),De=/(=)\?(?=&|$)|\?\?/,Ne=(C.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var t=Pe.pop()||C.expando+"_"+fe++;return this[t]=!0,t}}),C.ajaxPrefilter("json jsonp",function(t,e,n){var r,i,o,s=!1!==t.jsonp&&(De.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&De.test(t.data)&&"data");return s||"jsonp"===t.dataTypes[0]?(r=t.jsonpCallback=C.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(De,"$1"+r):!1!==t.jsonp&&(t.url+=(pe.test(t.url)?"&":"?")+t.jsonp+"="+r),t.converters["script json"]=function(){return o||C.error(r+" was not called"),o[0]},t.dataTypes[0]="json",i=_[r],_[r]=function(){o=arguments},n.always(function(){void 0===i?C(_).removeProp(r):_[r]=i,t[r]&&(t.jsonpCallback=e.jsonpCallback,Pe.push(r)),o&&C.isFunction(i)&&i(o[0]),o=i=void 0}),"script"):void 0}),C.parseHTML=function(t,e,n){if(!t||"string"!=typeof t)return null;"boolean"==typeof e&&(n=e,e=!1),e=e||x;var r=X.exec(t),n=!n&&[];return r?[e.createElement(r[1])]:(r=pt([t],e,n),n&&n.length&&C(n).remove(),C.merge([],r.childNodes))},C.fn.load);function Re(t){return C.isWindow(t)?t:9===t.nodeType&&t.defaultView}C.fn.load=function(t,e,n){var r,i,o,s,a;return"string"!=typeof t&&Ne?Ne.apply(this,arguments):(s=this,-1<(a=t.indexOf(" "))&&(r=C.trim(t.slice(a)),t=t.slice(0,a)),C.isFunction(e)?(n=e,e=void 0):e&&"object"==typeof e&&(i="POST"),0").append(C.parseHTML(t)).find(r):t)}).always(n&&function(t,e){s.each(function(){n.apply(this,o||[t.responseText,e,t])})}),this)},C.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(t,e){C.fn[e]=function(t){return this.on(e,t)}}),C.expr.filters.animated=function(e){return C.grep(C.timers,function(t){return e===t.elem}).length},C.offset={setOffset:function(t,e,n){var r,i,o,s,a=C.css(t,"position"),u=C(t),c={};"static"===a&&(t.style.position="relative"),o=u.offset(),r=C.css(t,"top"),s=C.css(t,"left"),a=("absolute"===a||"fixed"===a)&&-1<(r+s).indexOf("auto")?(i=(a=u.position()).top,a.left):(i=parseFloat(r)||0,parseFloat(s)||0),null!=(e=C.isFunction(e)?e.call(t,n,C.extend({},o)):e).top&&(c.top=e.top-o.top+i),null!=e.left&&(c.left=e.left-o.left+a),"using"in e?e.using.call(t,c):u.css(c)}},C.fn.extend({offset:function(e){var t,n,r,i;return arguments.length?void 0===e?this:this.each(function(t){C.offset.setOffset(this,e,t)}):(r={top:0,left:0},(i=(n=this[0])&&n.ownerDocument)?(t=i.documentElement,C.contains(t,n)?(r=n.getBoundingClientRect(),n=Re(i),{top:r.top+n.pageYOffset-t.clientTop,left:r.left+n.pageXOffset-t.clientLeft}):r):void 0)},position:function(){var t,e,n,r;if(this[0])return n=this[0],r={top:0,left:0},"fixed"===C.css(n,"position")?e=n.getBoundingClientRect():(t=this.offsetParent(),e=this.offset(),(r=C.nodeName(t[0],"html")?r:t.offset()).top+=C.css(t[0],"borderTopWidth",!0),r.left+=C.css(t[0],"borderLeftWidth",!0)),{top:e.top-r.top-C.css(n,"marginTop",!0),left:e.left-r.left-C.css(n,"marginLeft",!0)}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent;t&&"static"===C.css(t,"position");)t=t.offsetParent;return t||O})}}),C.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,i){var o="pageYOffset"===i;C.fn[e]=function(t){return h(this,function(t,e,n){var r=Re(t);return void 0===n?r?r[i]:t[e]:void(r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):t[e]=n)},e,t,arguments.length)}}),C.each(["top","left"],function(t,n){C.cssHooks[n]=qt(g.pixelPosition,function(t,e){return e?(e=E(t,n),Ht.test(e)?C(t).position()[n]+"px":e):void 0})}),C.each({Height:"height",Width:"width"},function(o,s){C.each({padding:"inner"+o,content:s,"":"outer"+o},function(r,t){C.fn[t]=function(t,e){var n=arguments.length&&(r||"boolean"!=typeof t),i=r||(!0===t||!0===e?"margin":"border");return h(this,function(t,e,n){var r;return C.isWindow(t)?t.document.documentElement["client"+o]:9===t.nodeType?(r=t.documentElement,Math.max(t.body["scroll"+o],r["scroll"+o],t.body["offset"+o],r["offset"+o],r["client"+o])):void 0===n?C.css(t,e,i):C.style(t,e,n,i)},s,n?t:void 0,n,null)}})}),C.fn.extend({bind:function(t,e,n){return this.on(t,null,e,n)},unbind:function(t,e){return this.off(t,null,e)},delegate:function(t,e,n,r){return this.on(e,t,n,r)},undelegate:function(t,e,n){return 1===arguments.length?this.off(t,"**"):this.off(e,t||"**",n)},size:function(){return this.length}}),C.fn.andSelf=C.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return C});var Me=_.jQuery,We=_.$;return C.noConflict=function(t){return _.$===C&&(_.$=We),t&&_.jQuery===C&&(_.jQuery=Me),C},M||(_.jQuery=_.$=C),C}),((t,e)=>{"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).uuid={})})(this,function(t){var e,n=new Uint8Array(16);function l(){if(e=e||"undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto))return e(n);throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported")}var r=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function i(t){return"string"==typeof t&&r.test(t)}for(var h,f,o=[],s=0;s<256;++s)o.push((s+256).toString(16).substr(1));function p(t){var e=1>>24,n[1]=e>>>16&255,n[2]=e>>>8&255,n[3]=255&e,n[4]=(e=parseInt(t.slice(9,13),16))>>>8,n[5]=255&e,n[6]=(e=parseInt(t.slice(14,18),16))>>>8,n[7]=255&e,n[8]=(e=parseInt(t.slice(19,23),16))>>>8,n[9]=255&e,n[10]=(e=parseInt(t.slice(24,36),16))/1099511627776&255,n[11]=e/4294967296&255,n[12]=e>>>24&255,n[13]=e>>>16&255,n[14]=e>>>8&255,n[15]=255&e,n;throw TypeError("Invalid UUID")}function a(t,s,a){function e(t,e,n,r){if("string"==typeof t&&(t=(t=>{t=unescape(encodeURIComponent(t));for(var e=[],n=0;n>>9<<4)+1}function v(t,e){var n=(65535&t)+(65535&e);return(t>>16)+(e>>16)+(n>>16)<<16|65535&n}function c(t,e,n,r,i,o){return v((e=v(v(e,t),v(r,o)))<>>32-i,n)}function y(t,e,n,r,i,o,s){return c(e&n|~e&r,t,e,i,o,s)}function b(t,e,n,r,i,o,s){return c(e&r|n&~r,t,e,i,o,s)}function w(t,e,n,r,i,o,s){return c(e^n^r,t,e,i,o,s)}function _(t,e,n,r,i,o,s){return c(n^(e|~r),t,e,i,o,s)}var x=a("v3",48,function(t){if("string"==typeof t){var e=unescape(encodeURIComponent(t));t=new Uint8Array(e.length);for(var n=0;n{t[e>>5]|=128<{if(0===t.length)return[];for(var e=8*t.length,n=new Uint32Array(m(e)),r=0;r>5]|=(255&t[r/8])<>5]>>>a%32&255,u=parseInt(s.charAt(u>>>4&15)+s.charAt(15&u),16);i.push(u)}return i});function C(t,e){return t<>>32-e}var k=a("v5",80,function(t){var e=[1518500249,1859775393,2400959708,3395469782],n=[1732584193,4023233417,2562383102,271733878,3285377520];if("string"==typeof t){var r=unescape(encodeURIComponent(t));t=[];for(var i=0;i{switch(t){case 0:return e&n^~e&r;case 1:return e^n^r;case 2:return e&n^e&r^n&r;case 3:return e^n^r}})(_,m,v,y)+b+e[_]+f[w]>>>0,b=y,y=v,v=C(m,30)>>>0,m=g,g=_;n[0]=n[0]+g>>>0,n[1]=n[1]+m>>>0,n[2]=n[2]+v>>>0,n[3]=n[3]+y>>>0,n[4]=n[4]+b>>>0}return[n[0]>>24&255,n[0]>>16&255,n[0]>>8&255,255&n[0],n[1]>>24&255,n[1]>>16&255,n[1]>>8&255,255&n[1],n[2]>>24&255,n[2]>>16&255,n[2]>>8&255,255&n[2],n[3]>>24&255,n[3]>>16&255,n[3]>>8&255,255&n[3],n[4]>>24&255,n[4]>>16&255,n[4]>>8&255,255&n[4]]});t.NIL="00000000-0000-0000-0000-000000000000",t.parse=u,t.stringify=p,t.v1=function(t,e,n){var r=e&&n||0,i=e||new Array(16),o=(t=t||{}).node||h,n=void 0!==t.clockseq?t.clockseq:f,s=(null!=o&&null!=n||(s=t.random||(t.rng||l)(),null==o&&(o=h=[1|s[0],s[1],s[2],s[3],s[4],s[5]]),null==n&&(n=f=16383&(s[6]<<8|s[7]))),void 0!==t.msecs?t.msecs:Date.now()),a=void 0!==t.nsecs?t.nsecs:g+1,u=s-d+(a-g)/1e4;if(u<0&&void 0===t.clockseq&&(n=n+1&16383),1e4<=(a=(u<0||d>>24&255,i[r++]=u>>>16&255,i[r++]=u>>>8&255,i[r++]=255&u,t=s/4294967296*1e4&268435455;i[r++]=t>>>8&255,i[r++]=255&t,i[r++]=t>>>24&15|16,i[r++]=t>>>16&255,i[r++]=n>>>8|128,i[r++]=255&n;for(var c=0;c<6;++c)i[r+c]=o[c];return e||p(i)},t.v3=x,t.v4=function(t,e,n){var r=(t=t||{}).random||(t.rng||l)();if(r[6]=15&r[6]|64,r[8]=63&r[8]|128,e){n=n||0;for(var i=0;i<16;++i)e[n+i]=r[i];return e}return p(r)},t.v5=k,t.validate=i,t.version=function(t){if(i(t))return parseInt(t.substr(14,1),16);throw TypeError("Invalid UUID")},Object.defineProperty(t,"__esModule",{value:!0})}),((t,e)=>{"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.clipboard=e():t.clipboard=e()})(this,function(){return n=[function(t,e,n){function a(t){var e=new v,t=function(n,t,r){p("listener called"),n.success=!0,t.forEach(function(t,e){r.clipboardData.setData(e,t),e===m&&r.clipboardData.getData(e)!=t&&(p("setting text/plain failed"),n.success=!1)}),r.preventDefault()}.bind(this,e,t);document.addEventListener("copy",t);try{document.execCommand("copy")}finally{document.removeEventListener("copy",t)}return e.success}function u(t,e){c(t);t=a(e);return l(),t}function c(t){var e=document.getSelection(),n=document.createRange();n.selectNodeContents(t),e.removeAllRanges(),e.addRange(n)}function l(){document.getSelection().removeAllRanges()}function h(){return"undefined"==typeof ClipboardEvent&&void 0!==window.clipboardData&&void 0!==window.clipboardData.setData}function r(){return new f(function(t,e){var n=window.clipboardData.getData("Text");""===n?e(new Error("Empty clipboard or could not read plain text from clipboard")):t(n)})}Object.defineProperty(e,"__esModule",{value:!0});var i=n(1),o=n(5),f="undefined"==typeof Promise?i.Promise:Promise,p=function(t){},d=!0,g=function(){(console.warn||console.log).call(arguments)}.bind(console,"[clipboard-polyfill]"),m="text/plain",n=(s.setDebugLog=function(t){p=t},s.suppressWarnings=function(){d=!1,o.suppressDTWarnings()},s.write=function(s){return d&&!s.getData(m)&&g("clipboard.write() was called without a `text/plain` data type. On some platforms, this may result in an empty clipboard. Call clipboard.suppressWarnings() to suppress this warning."),new f(function(t,e){var n,r,i,o;h()?(t=>{if(void 0!==(t=t.getData(m)))return window.clipboardData.setData("Text",t);throw"No `text/plain` value was specified."})(s)?t():e(new Error("Copying failed, possibly because the user rejected it.")):a(s)?(p("regular execCopy worked"),t()):-1 assuming success'),t()):u(document.body,s)?(p("copyUsingTempSelection worked"),t()):(n=s,(r=document.createElement("div")).setAttribute("style","-webkit-user-select: text !important"),r.textContent="temporary element",document.body.appendChild(r),n=u(r,n),document.body.removeChild(r),n?(p("copyUsingTempElem worked"),t()):void 0!==(r=s.getData(m))&&(n=r,p("copyTextUsingDOM"),(r=document.createElement("div")).setAttribute("style","-webkit-user-select: text !important"),(i=r).attachShadow&&(p("Using shadow DOM."),i=r.attachShadow({mode:"open"})),(o=document.createElement("span")).innerText=n,i.appendChild(o),document.body.appendChild(r),c(o),n=document.execCommand("copy"),l(),document.body.removeChild(r),n)?(p("copyTextUsingDOM worked"),t()):e(new Error("Copy command failed.")))})},s.writeText=function(t){var e;return navigator.clipboard&&navigator.clipboard.writeText?navigator.clipboard.writeText(t):((e=new o.DT).setData(m,t),this.write(e))},s.read=function(){return new f(function(n,t){h()?r().then(function(t){return n((t=t,(e=new o.DT).setData(m,t),e));var e},t):t("Read is not supported in your browser.")})},s.readText=function(){return navigator.clipboard&&navigator.clipboard.readText?navigator.clipboard.readText():h()?r():new f(function(t,e){e("Read is not supported in your browser.")})},s.DT=o.DT,s);function s(){}e.default=n;var v=function(){this.success=!1};t.exports=n},function(t,e,H){!function(L,F){t.exports=(()=>{function c(t){return"function"==typeof t}function e(){var t=setTimeout;return function(){return t(r,1)}}function r(){for(var t=0;t<_;t+=2)(0,T[t])(T[t+1]),T[t]=void 0,T[t+1]=void 0;_=0}function s(t,e){var n,r=arguments,i=this,o=new this.constructor(u),s=(void 0===o[A]&&y(o),i._state);return s?(n=r[s-1],k(function(){return v(s,o,n,i._result)})):g(i,o,t,e),o}function a(t){var e;return t&&"object"==typeof t&&t.constructor===this?t:(f(e=new this(u),t),e)}function u(){}function l(t){try{return t.then}catch(t){return D.error=t,D}}function o(t,r,i){k(function(e){var n=!1,t=((t,e,n,r)=>{try{t.call(e,n,r)}catch(t){return t}})(i,r,function(t){n||(n=!0,(r!==t?f:p)(e,t))},function(t){n||(n=!0,d(e,t))},e._label);!n&&t&&(n=!0,d(e,t))},t)}function h(t,e,n){var r,i;e.constructor===t.constructor&&n===s&&e.constructor.resolve===a?(r=t,(i=e)._state===j?p(r,i._result):i._state===P?d(r,i._result):g(i,void 0,function(t){return f(r,t)},function(t){return d(r,t)})):n===D?(d(t,D.error),D.error=null):void 0!==n&&c(n)?o(t,e,n):p(t,e)}function f(t,e){var n;t===e?d(t,new TypeError("You cannot resolve a promise with itself")):(n=typeof e,null===e||"object"!=n&&"function"!=n?p(t,e):h(t,e,l(e)))}function n(t){t._onerror&&t._onerror(t._result),m(t)}function p(t,e){t._state===I&&(t._result=e,t._state=j,0!==t._subscribers.length)&&k(m,t)}function d(t,e){t._state===I&&(t._state=P,t._result=e,k(n,t))}function g(t,e,n,r){var i=t._subscribers,o=i.length;t._onerror=null,i[o]=e,i[o+j]=n,i[o+P]=r,0===o&&t._state&&k(m,t)}function m(t){var e=t._subscribers,n=t._state;if(0!==e.length){for(var r,i=void 0,o=t._result,s=0;s{try{return t(e)}catch(t){return N.error=t,N}})(n,r))===N?(u=!0,s=o.error,o.error=null):a=!0,e===o)return void d(e,new TypeError("A promises callback cannot return that same promise."))}else o=r,a=!0;e._state===I&&(i&&a?f(e,o):u?d(e,s):t===j?p(e,o):t===P&&d(e,o))}function y(t){t[A]=R++,t._state=void 0,t._result=void 0,t._subscribers=[]}function i(t,e){this._instanceConstructor=t,this.promise=new t(u),this.promise[A]||y(this.promise),w(e)?(this.length=e.length,this._remaining=e.length,this._result=new Array(this.length),0!==this.length&&(this.length=this.length||0,this._enumerate(e),0!==this._remaining)||p(this.promise,this._result)):d(this.promise,new Error("Array Methods must be provided an Array"))}function b(t){if(this[A]=R++,this._result=this._state=void 0,this._subscribers=[],u!==t){if("function"!=typeof t)throw new TypeError("You must pass a resolver function as the first argument to the promise constructor");if(!(this instanceof b))throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");var e=this,n=t;try{n(function(t){f(e,t)},function(t){d(e,t)})}catch(n){d(e,n)}}}var w=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},_=0,x=void 0,C=void 0,k=function(t,e){T[_]=t,T[_+1]=e,2===(_+=2)&&(C?C(r):W())},S="undefined"!=typeof window?window:void 0,O=S||{},E=O.MutationObserver||O.WebKitMutationObserver,O="undefined"==typeof self&&void 0!==L&&"[object process]"==={}.toString.call(L),M="undefined"!=typeof Uint8ClampedArray&&"undefined"!=typeof importScripts&&"undefined"!=typeof MessageChannel,T=new Array(1e3),W=void 0,W=O?function(){return L.nextTick(r)}:(E?()=>{var t=0,e=new E(r),n=document.createTextNode("");return e.observe(n,{characterData:!0}),function(){n.data=t=++t%2}}:M?()=>{var t=new MessageChannel;return t.port1.onmessage=r,function(){return t.port2.postMessage(0)}}:void 0===S?()=>{try{var t=H(4);return void 0!==(x=t.runOnLoop||t.runOnContext)?function(){x(r)}:e()}catch(t){return e()}}:e)(),A=Math.random().toString(36).substring(16),I=void 0,j=1,P=2,D=new t,N=new t,R=0;return i.prototype._enumerate=function(t){for(var e=0;this._state===I&&e{"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof exports&&"object"==typeof module?module.exports=t(require("jquery")):t(jQuery)})(function(It,jt){var Pt={beforeShow:e,move:e,change:e,show:e,hide:e,color:!1,flat:!1,showInput:!1,allowEmpty:!1,showButtons:!0,clickoutFiresChange:!0,showInitial:!1,showPalette:!1,showPaletteOnly:!1,hideAfterPaletteSelect:!1,togglePaletteOnly:!1,showSelectionPalette:!0,localStorageKey:!1,appendTo:"body",maxSelectionSize:7,cancelText:"cancel",chooseText:"choose",togglePaletteMoreText:"more",togglePaletteLessText:"less",clearText:"Clear Color Selection",noColorSelectedText:"No Color Selected",preferredFormat:!1,className:"",containerClassName:"",replacerClassName:"",showAlpha:!1,theme:"sp-light",palette:[["#ffffff","#000000","#ff0000","#ff8000","#ffff00","#008000","#0000ff","#4b0082","#9400d3"]],selectionPalette:[],disabled:!1,offset:null},Dt=[],Nt=!!/msie/i.exec(window.navigator.userAgent),Rt=((o=document.createElement("div").style).cssText="background-color:rgba(0,0,0,.5)",t(o.backgroundColor,"rgba")||t(o.backgroundColor,"hsla")),Ht=["
","
","
","
"].join(""),Bt=(()=>{var t="";if(Nt)for(var e=1;e<=6;e++)t+="
";return["
","
","
","
","","
","
","
","
","
","
","
","
","
","
","
","
","
","
","
","
","
",t,"
","
","
","
","
","","
","
","
","","","
","
","
"].join("")})();function t(t,e){return!!~(""+t).indexOf(e)}function Mt(t,e,n,r){for(var i=[],o=0;o')):i.push(It("
").append(It('').attr("title",r.noColorSelectedText)).html())}return"
"+i.join("")+"
"}function p(t,e){i=t,(e=It.extend({},Pt,e)).callbacks={move:Wt(e.move,i),change:Wt(e.change,i),show:Wt(e.show,i),hide:Wt(e.hide,i),beforeShow:Wt(e.beforeShow,i)};var M,W,n,a=e,u=a.flat,L=a.showSelectionPalette,r=a.localStorageKey,i=a.theme,o=a.callbacks,F=(M=R,function(){var t=this,e=arguments;W=W||setTimeout(function(){W=null,M.apply(t,e)},10)}),c=!10,H=!1,l=0,h=0,f=0,B=0,q=0,z=0,U=0,s=0,p=0,d=0,g=1,G=[],m=[],V={},v=a.selectionPalette.slice(0),$=a.maxSelectionSize,X="sp-dragging",y=null,b=t.ownerDocument,w=(b.body,It(t)),Y=!1,_=It(Bt,b).addClass(i),K=_.find(".sp-picker-container"),Q=_.find(".sp-color"),J=_.find(".sp-dragger"),Z=_.find(".sp-hue"),tt=_.find(".sp-slider"),x=_.find(".sp-alpha-inner"),et=_.find(".sp-alpha"),nt=_.find(".sp-alpha-handle"),C=_.find(".sp-input"),rt=_.find(".sp-palette"),it=_.find(".sp-initial"),e=_.find(".sp-cancel"),t=_.find(".sp-clear"),ot=_.find(".sp-choose"),st=_.find(".sp-palette-toggle"),at=w.is("input"),ut=at&&"color"===w.attr("type")&&Ft(),ct=at&&!u,k=ct?It(Ht).addClass(i).addClass(a.className).addClass(a.replacerClassName):It([]),lt=ct?k:w,S=k.find(".sp-preview-inner"),i=a.color||at&&w.val(),ht=!1,O=a.preferredFormat,ft=!a.showButtons||a.clickoutFiresChange,E=!i,T=a.allowEmpty&&!ut;function pt(){if(a.showPaletteOnly&&(a.showPalette=!0),st.text(a.showPaletteOnly?a.togglePaletteMoreText:a.togglePaletteLessText),a.palette){G=a.palette.slice(0),m=It.isArray(G[0])?G:[G],V={};for(var t=0;t$;)v.shift();if(r&&window.localStorage)try{window.localStorage[r]=v.join(";")}catch(t){}}}function mt(){var n=j(),t=It.map(m,function(t,e){return Mt(t,n,"sp-palette-row sp-palette-row-"+e,a)});dt(),v&&t.push(Mt((()=>{var t=[];if(a.showPalette)for(var e=0;eo&&nMath.abs(e-r),y=n?"x":"y"):y=null;var r=!y||"y"===y;y&&"x"!==y||(p=parseFloat(t/l)),r&&(d=parseFloat((h-e)/h)),E=!1,a.showAlpha||(g=1),P()},yt,bt),i?(I(i),D(),O=a.preferredFormat||tinycolor(i).format,gt(i)):D(),u&&xt(),n=Nt?"mousedown.spectrum":"click.spectrum touchstart.spectrum",rt.delegate(".sp-thumb-el",n,Tt),it.delegate(".sp-thumb-el:nth-child(1)",n,{ignore:!0},Tt);var At={show:xt,hide:A,toggle:_t,reflow:R,option:function(t,e){return t===jt?It.extend({},a):e===jt?a[t]:(a[t]=e,"preferredFormat"===t&&(O=a.preferredFormat),void pt())},enable:function(){Y=!1,w.attr("disabled",!1),lt.removeClass("sp-disabled")},disable:Et,offset:function(t){a.offset=t,R()},set:function(t){I(t),N()},get:j,destroy:function(){w.show(),lt.unbind("click.spectrum touchstart.spectrum"),_.remove(),k.remove(),Dt[At.id]=null},container:_};return At.id=Dt.push(At)-1,At}function e(){}function qt(t){t.stopPropagation()}function Wt(t,e){var n=Array.prototype.slice,r=n.call(arguments,2);return function(){return t.apply(e,r.concat(n.call(arguments)))}}function Lt(r,i,e,t){i=i||function(){},e=e||function(){},t=t||function(){};var o=document,s=!1,a={},u=0,c=0,l="ontouchstart"in window,n={};function h(t){t.stopPropagation&&t.stopPropagation(),t.preventDefault&&t.preventDefault(),t.returnValue=!1}function f(t){if(s){if(Nt&&o.documentMode<9&&!t.button)return p();var e=t.originalEvent&&t.originalEvent.touches&&t.originalEvent.touches[0],n=e&&e.pageX||t.pageX,e=e&&e.pageY||t.pageY,n=Math.max(0,Math.min(n-a.left,c)),e=Math.max(0,Math.min(e-a.top,u));l&&h(t),i.apply(r,[n,e,t])}}function p(){s&&(It(o).unbind(n),It(o.body).removeClass("sp-dragging"),setTimeout(function(){t.apply(r,arguments)},0)),s=!1}n.selectstart=h,n.dragstart=h,n["touchmove mousemove"]=f,n["touchend mouseup"]=p,It(r).bind("touchstart mousedown",function(t){(t.which?3==t.which:2==t.button)||s||!1!==e.apply(r,arguments)&&(s=!0,u=It(r).height(),c=It(r).width(),a=It(r).offset(),It(o).bind(n),It(o.body).addClass("sp-dragging"),f(t),h(t))})}function Ft(){return It.fn.spectrum.inputTypeColorSupport()}var v,y,b,w,_,x,C,n,k,r,i,o,S,s="spectrum.id";function O(t,e){var n,r,i,o,s,a,u,c,l,h,f,p,d,g;return e=e||{},(t=t||"")instanceof O?t:this instanceof O?(f={r:0,g:0,b:0},g=d=!(p=1),p=H(p="object"==typeof(n="string"==typeof(n=t)?(t=>{t=t.replace(v,"").replace(y,"").toLowerCase();var e,n=!1;if(k[t])t=k[t],n=!0;else if("transparent"==t)return{r:0,g:0,b:0,a:0,format:"name"};return(e=S.rgb.exec(t))?{r:e[1],g:e[2],b:e[3]}:(e=S.rgba.exec(t))?{r:e[1],g:e[2],b:e[3],a:e[4]}:(e=S.hsl.exec(t))?{h:e[1],s:e[2],l:e[3]}:(e=S.hsla.exec(t))?{h:e[1],s:e[2],l:e[3],a:e[4]}:(e=S.hsv.exec(t))?{h:e[1],s:e[2],v:e[3]}:(e=S.hsva.exec(t))?{h:e[1],s:e[2],v:e[3],a:e[4]}:(e=S.hex8.exec(t))?{a:T(e[1])/255,r:T(e[2]),g:T(e[3]),b:T(e[4]),format:n?"name":"hex8"}:(e=S.hex6.exec(t))?{r:T(e[1]),g:T(e[2]),b:T(e[3]),format:n?"name":"hex"}:!!(e=S.hex3.exec(t))&&{r:T(e[1]+""+e[1]),g:T(e[2]+""+e[2]),b:T(e[3]+""+e[3]),format:n?"name":"hex"}})(n):n)&&(n.hasOwnProperty("r")&&n.hasOwnProperty("g")&&n.hasOwnProperty("b")?(c=n.r,l=n.g,h=n.b,f={r:255*E(c,255),g:255*E(l,255),b:255*E(h,255)},d=!0,g="%"===String(n.r).substr(-1)?"prgb":"rgb"):n.hasOwnProperty("h")&&n.hasOwnProperty("s")&&n.hasOwnProperty("v")?(n.s=A(n.s),n.v=A(n.v),c=n.h,l=n.s,h=n.v,c=6*E(c,360),l=E(l,100),h=E(h,100),s=w.floor(c),f={r:255*[h,u=h*(1-(c-=s)*l),a=h*(1-l),a,c=h*(1-(1-c)*l),h][l=s%6],g:255*[c,h,h,u,a,a][l],b:255*[a,a,c,h,h,u][l]},d=!0,g="hsv"):n.hasOwnProperty("h")&&n.hasOwnProperty("s")&&n.hasOwnProperty("l")&&(n.s=A(n.s),n.l=A(n.l),s=n.h,a=n.s,c=n.l,s=E(s,360),a=E(a,100),c=E(c,100),0===a?r=i=o=c:(r=m(a=2*c-(c=c<.5?c*(1+a):c+a-c*a),c,s+1/3),i=m(a,c,s),o=m(a,c,s-1/3)),f={r:255*r,g:255*i,b:255*o},d=!0,g="hsl"),n.hasOwnProperty("a"))?n.a:p),h={ok:d,format:n.format||g,r:x(255,C(f.r,0)),g:x(255,C(f.g,0)),b:x(255,C(f.b,0)),a:p},this._originalInput=t,this._r=h.r,this._g=h.g,this._b=h.b,this._a=h.a,this._roundA=_(100*this._a)/100,this._format=e.format||h.format,this._gradientType=e.gradientType,this._r<1&&(this._r=_(this._r)),this._g<1&&(this._g=_(this._g)),this._b<1&&(this._b=_(this._b)),this._ok=h.ok,void(this._tc_id=b++)):new O(t,e);function m(t,e,n){return n<0&&(n+=1),1>1)+720)%360;--e;)r.h=(r.h+i)%360,o.push(O(r));return o}function F(t,e){e=e||6;for(var t=O(t).toHsv(),n=t.h,r=t.s,i=t.v,o=[],s=1/e;e--;)o.push(O({h:n,s:r,v:i})),i=(i+s)%1;return o}function H(t){return t=parseFloat(t),t=isNaN(t)||t<0||1")[0],t._cachedResult="color"===e.type&&""!==e.value),t._cachedResult},It.spectrum={},It.spectrum.localization={},It.spectrum.palettes={},It.fn.spectrum.processNativeColorInputs=function(){var t=It("input[type=color]");t.length&&!Ft()&&t.spectrum({preferredFormat:"hex6"})},v=/^[\s,#]+/,y=/\s+$/,b=0,w=Math,_=w.round,x=w.min,C=w.max,n=w.random,O.prototype={isDark:function(){return this.getBrightness()<128},isLight:function(){return!this.isDark()},isValid:function(){return this._ok},getOriginalInput:function(){return this._originalInput},getFormat:function(){return this._format},getAlpha:function(){return this._a},getBrightness:function(){var t=this.toRgb();return(299*t.r+587*t.g+114*t.b)/1e3},setAlpha:function(t){return this._a=H(t),this._roundA=_(100*this._a)/100,this},toHsv:function(){var t=u(this._r,this._g,this._b);return{h:360*t.h,s:t.s,v:t.v,a:this._a}},toHsvString:function(){var t=u(this._r,this._g,this._b),e=_(360*t.h),n=_(100*t.s),t=_(100*t.v);return 1==this._a?"hsv("+e+", "+n+"%, "+t+"%)":"hsva("+e+", "+n+"%, "+t+"%, "+this._roundA+")"},toHsl:function(){var t=a(this._r,this._g,this._b);return{h:360*t.h,s:t.s,l:t.l,a:this._a}},toHslString:function(){var t=a(this._r,this._g,this._b),e=_(360*t.h),n=_(100*t.s),t=_(100*t.l);return 1==this._a?"hsl("+e+", "+n+"%, "+t+"%)":"hsla("+e+", "+n+"%, "+t+"%, "+this._roundA+")"},toHex:function(t){return c(this._r,this._g,this._b,t)},toHexString:function(t){return"#"+this.toHex(t)},toHex8:function(){return l(this._r,this._g,this._b,this._a)},toHex8String:function(){return"#"+this.toHex8()},toRgb:function(){return{r:_(this._r),g:_(this._g),b:_(this._b),a:this._a}},toRgbString:function(){return 1==this._a?"rgb("+_(this._r)+", "+_(this._g)+", "+_(this._b)+")":"rgba("+_(this._r)+", "+_(this._g)+", "+_(this._b)+", "+this._roundA+")"},toPercentageRgb:function(){return{r:_(100*E(this._r,255))+"%",g:_(100*E(this._g,255))+"%",b:_(100*E(this._b,255))+"%",a:this._a}},toPercentageRgbString:function(){return 1==this._a?"rgb("+_(100*E(this._r,255))+"%, "+_(100*E(this._g,255))+"%, "+_(100*E(this._b,255))+"%)":"rgba("+_(100*E(this._r,255))+"%, "+_(100*E(this._g,255))+"%, "+_(100*E(this._b,255))+"%, "+this._roundA+")"},toName:function(){return 0===this._a?"transparent":!(this._a<1)&&(r[c(this._r,this._g,this._b,!0)]||!1)},toFilter:function(t){var e="#"+l(this._r,this._g,this._b,this._a),n=e;return"progid:DXImageTransform.Microsoft.gradient("+(this._gradientType?"GradientType = 1, ":"")+"startColorstr="+e+",endColorstr="+(n=t?O(t).toHex8String():n)+")"},toString:function(t){var e=!!t,n=(t=t||this._format,!1),r=this._a<1&&0<=this._a;return e||!r||"hex"!==t&&"hex6"!==t&&"hex3"!==t&&"name"!==t?("rgb"===t&&(n=this.toRgbString()),"prgb"===t&&(n=this.toPercentageRgbString()),"hex"!==t&&"hex6"!==t||(n=this.toHexString()),"hex3"===t&&(n=this.toHexString(!0)),"hex8"===t&&(n=this.toHex8String()),"name"===t&&(n=this.toName()),"hsl"===t&&(n=this.toHslString()),(n="hsv"===t?this.toHsvString():n)||this.toHexString()):"name"===t&&0===this._a?this.toName():this.toRgbString()},_applyModification:function(t,e){t=t.apply(null,[this].concat([].slice.call(e)));return this._r=t._r,this._g=t._g,this._b=t._b,this.setAlpha(t._a),this},lighten:function(){return this._applyModification(I,arguments)},brighten:function(){return this._applyModification(j,arguments)},darken:function(){return this._applyModification(P,arguments)},desaturate:function(){return this._applyModification(d,arguments)},saturate:function(){return this._applyModification(g,arguments)},greyscale:function(){return this._applyModification(m,arguments)},spin:function(){return this._applyModification(D,arguments)},_applyCombination:function(t,e){return t.apply(null,[this].concat([].slice.call(e)))},analogous:function(){return this._applyCombination(L,arguments)},complement:function(){return this._applyCombination(N,arguments)},monochromatic:function(){return this._applyCombination(F,arguments)},splitcomplement:function(){return this._applyCombination(W,arguments)},triad:function(){return this._applyCombination(R,arguments)},tetrad:function(){return this._applyCombination(M,arguments)}},O.fromRatio=function(t,e){if("object"==typeof t){var n,r={};for(n in t)t.hasOwnProperty(n)&&(r[n]="a"===n?t[n]:A(t[n]));t=r}return O(t,e)},O.equals=function(t,e){return!(!t||!e)&&O(t).toRgbString()==O(e).toRgbString()},O.random=function(){return O.fromRatio({r:n(),g:n(),b:n()})},O.mix=function(t,e,n){n=0===n?0:n||50;var t=O(t).toRgb(),e=O(e).toRgb(),n=n/100,r=2*n-1,i=e.a-t.a,i=1-(r=(1+(r*i==-1?r:(r+i)/(1+r*i)))/2),r={r:e.r*r+t.r*i,g:e.g*r+t.g*i,b:e.b*r+t.b*i,a:e.a*n+t.a*(1-n)};return O(r)},O.readability=function(t,e){var t=O(t),e=O(e),n=t.toRgb(),r=e.toRgb(),t=t.getBrightness(),e=e.getBrightness(),n=Math.max(n.r,r.r)-Math.min(n.r,r.r)+Math.max(n.g,r.g)-Math.min(n.g,r.g)+Math.max(n.b,r.b)-Math.min(n.b,r.b);return{brightness:Math.abs(t-e),color:n}},O.isReadable=function(t,e){t=O.readability(t,e);return 125{var e,n={};for(e in t)t.hasOwnProperty(e)&&(n[t[e]]=e);return n})(k),i="[\\s|\\(]+("+(o="(?:[-\\+]?\\d*\\.\\d+%?)|(?:[-\\+]?\\d+%?)")+")[,|\\s]+("+o+")[,|\\s]+("+o+")\\s*\\)?",o="[\\s|\\(]+("+o+")[,|\\s]+("+o+")[,|\\s]+("+o+")[,|\\s]+("+o+")\\s*\\)?",S={rgb:new RegExp("rgb"+i),rgba:new RegExp("rgba"+o),hsl:new RegExp("hsl"+i),hsla:new RegExp("hsla"+o),hsv:new RegExp("hsv"+i),hsva:new RegExp("hsva"+o),hex3:/^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex8:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/},window.tinycolor=O,It(function(){It.fn.spectrum.load&&It.fn.spectrum.processNativeColorInputs()})}),(()=>{var t=function(x){x.ui=x.ui||{},x.ui.version="1.12.1";var i,r,C,k,o,s,a,u,c,n,l=0,h=Array.prototype.slice;function S(t,e,n){return[parseFloat(t[0])*(c.test(t[0])?e/100:1),parseFloat(t[1])*(c.test(t[1])?n/100:1)]}function O(t,e){return parseInt(x.css(t,e),10)||0}x.cleanData=(i=x.cleanData,function(t){for(var e,n,r=0;null!=(n=t[r]);r++)try{(e=x._data(n,"events"))&&e.remove&&x(n).triggerHandler("remove")}catch(t){}i(t)}),x.widget=function(t,n,e){var r,i,o,s={},a=t.split(".")[0],u=a+"-"+(t=t.split(".")[1]);return e||(e=n,n=x.Widget),x.isArray(e)&&(e=x.extend.apply(null,[{}].concat(e))),x.expr[":"][u.toLowerCase()]=function(t){return!!x.data(t,u)},x[a]=x[a]||{},r=x[a][t],i=x[a][t]=function(t,e){if(!this._createWidget)return new i(t,e);arguments.length&&this._createWidget(t,e)},x.extend(i,r,{version:e.version,_proto:x.extend({},e),_childConstructors:[]}),(o=new n).options=x.widget.extend({},o.options),x.each(e,function(e,r){function i(){return n.prototype[e].apply(this,arguments)}function o(t){return n.prototype[e].apply(this,t)}x.isFunction(r)?s[e]=function(){var t,e=this._super,n=this._superApply;return this._super=i,this._superApply=o,t=r.apply(this,arguments),this._super=e,this._superApply=n,t}:s[e]=r}),i.prototype=x.widget.extend(o,{widgetEventPrefix:r&&o.widgetEventPrefix||t},s,{constructor:i,namespace:a,widgetName:t,widgetFullName:u}),r?(x.each(r._childConstructors,function(t,e){var n=e.prototype;x.widget(n.namespace+"."+n.widgetName,i,e._proto)}),delete r._childConstructors):n._childConstructors.push(i),x.widget.bridge(t,i),i},x.widget.extend=function(t){for(var e,n,r=h.call(arguments,1),i=0,o=r.length;i",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=l++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var n=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){n._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var n,r,i,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(n=t.split(".")).shift(),n.length){for(r=o[t]=x.widget.extend({},this.options[t]),i=0;i
")).children()[0],x("body").append(e),t=n.offsetWidth,e.css("overflow","scroll"),t===(n=n.offsetWidth)&&(n=e[0].clientWidth),e.remove(),r=t-n)},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),n=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthC(k(r),k(i))?o.important="horizontal":o.important="vertical",h.using.call(this,t,o)}),s.offset(x.extend(c,{using:t}))})},x.ui.position={fit:{left:function(t,e){var n,r=e.within,i=r.isWindow?r.scrollLeft:r.offset.left,r=r.width,o=t.left-e.collisionPosition.marginLeft,s=i-o,a=o+e.collisionWidth-r-i;r?@[\]^`{|}~])/g,function(t){return t.replace(e,"\\$1")}),x.fn.labels=function(){var t,e,n;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(e=this.eq(0).parents("label"),(t=this.attr("id"))&&(n=(n=this.eq(0).parents().last()).add((n.length?n:this).siblings()),t="label[for='"+x.ui.escapeSelector(t)+"']",e=e.add(n.find(t).addBack(t))),this.pushStack(e))},x.fn.extend({uniqueId:(t=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&x(this).removeAttr("id")})}});var e,t,f,p=/ui-corner-([a-z]){2,6}/g,d=(x.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"
",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var o=this,s=[];x.each(this.options.items,function(r,t){var e,i;if(t)return"controlgroupLabel"===r?((e=o.element.find(t)).each(function(){var t=x(this);t.children(".ui-controlgroup-label-contents").length||t.contents().wrapAll("")}),o._addClass(e,null,"ui-widget ui-widget-content ui-state-default"),void(s=s.concat(e.get()))):void(x.fn[r]&&(i=o["_"+r+"Options"]?o["_"+r+"Options"]("middle"):{classes:{}},o.element.find(t).each(function(){var t=x(this),e=t[r]("instance"),n=x.widget.extend({},i);"button"===r&&t.parent(".ui-spinner").length||((e=e||t[r]()[r]("instance"))&&(n.classes=o._resolveClassesValues(n.classes,e)),t[r](n),n=t[r]("widget"),x.data(n[0],"ui-controlgroup-data",e||t[r]("instance")),s.push(n[0]))})))}),this.childWidgets=x(x.unique(s)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var t=x(this).data("ui-controlgroup-data");t&&t[e]&&t[e]()})},_updateCornerClass:function(t,e){e=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,"ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all"),this._addClass(t,null,e)},_buildSimpleOptions:function(t,e){var n="vertical"===this.options.direction,r={classes:{}};return r.classes[e]={middle:"",first:"ui-corner-"+(n?"top":"left"),last:"ui-corner-"+(n?"bottom":"right"),only:"ui-corner-all"}[t],r},_spinnerOptions:function(t){t=this._buildSimpleOptions(t,"ui-spinner");return t.classes["ui-spinner-up"]="",t.classes["ui-spinner-down"]="",t},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:!!e&&"auto",classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(n,r){var i={};return x.each(n,function(t){var e=r.options.classes[t]||"",e=x.trim(e.replace(p,""));i[t]=(e+" "+n[t]).replace(/\s+/g," ")}),i},_setOption:function(t,e){"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"!==t?this.refresh():this._callChildMethod(e?"disable":"enable")},refresh:function(){var i,o=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),i=this.childWidgets,(i=this.options.onlyVisible?i.filter(":visible"):i).length&&(x.each(["first","last"],function(t,e){var n,r=i[e]().data("ui-controlgroup-data");r&&o["_"+r.widgetName+"Options"]?((n=o["_"+r.widgetName+"Options"](1===i.length?"only":e)).classes=o._resolveClassesValues(n.classes,r),r.element[r.widgetName](n)):o._updateCornerClass(i[e](),e)}),this._callChildMethod("refresh"))}}),x.widget("ui.checkboxradio",[x.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var t,e=this,n=this._super()||{};return this._readType(),t=this.element.labels(),this.label=x(t[t.length-1]),this.label.length||x.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){e.originalLabel+=3===this.nodeType?x(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),null!=(t=this.element[0].disabled)&&(n.disabled=t),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon)&&this._addClass(this.icon,null,"ui-state-hover"),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var t=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===t&&/radio|checkbox/.test(this.type)||x.error("Can't create checkboxradio on element.nodeName="+t+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var t=this.element[0].name,e="input[name='"+x.ui.escapeSelector(t)+"']";return t?(this.form.length?x(this.form[0].elements).filter(e):x(e).filter(function(){return 0===x(this).form().length})).not(this.element):x([])},_toggleClasses:function(){var t=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",t)._toggleClass(this.icon,null,"ui-icon-blank",!t),"radio"===this.type&&this._getRadioGroup().each(function(){var t=x(this).checkboxradio("instance");t&&t._removeClass(t.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){"label"===t&&!e||(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e):this.refresh())},_updateIcon:function(t){var e="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=x(""),this.iconSpace=x(" "),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(e+=t?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,t?"ui-icon-blank":"ui-icon-check")):e+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",e),t||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),(t=this.iconSpace?t.not(this.iconSpace[0]):t).remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),x.ui.checkboxradio,x.widget("ui.button",{version:"1.12.1",defaultElement:"
"),n.push('
'),this.pageList=[],t.showPN&&(1==t.page?this.pageList.push(''):this.pageList.push('')),e<=6)for(var r=1;r...');for(r=e-3;r<=e;r++)this.creatHtml(r)}else{this.pageList.push(''),3...');for(r=t.page-1;r<=Number(t.page)+1;r++)this.creatHtml(r);t.page<=e-3&&this.pageList.push(''),this.pageList.push("")}if(t.showPN&&(t.page==e?this.pageList.push(''):this.pageList.push('')),n.push(this.pageList.join("")),n.push("
"),0"+t.selectOption[o]+"行/页":i+=">"+t.selectOption[o]+"行/页";n.push(i+="")}t.showSkip&&n.push('
跳至  页  
'),this.element.html(n.join(""))},clickBtn:function(){var n=this,r=this.settings,i=this.element,o=this.pageTatol;this.element.on("change","select",function(t){var e=parseInt(document.getElementById("selectNum").value);r.pageSize=e,r.page=1,n.element.empty(),n.viewHtml(),r.backFun(r)}),this.element.off("click","button"),this.element.on("click","button",function(){var t=s(this).data("page");switch(t){case"prev":r.page=1<=r.page-1?r.page-1:1,t=r.page;break;case"next":r.page=Number(r.page)+1<=o?Number(r.page)+1:o,t=r.page;break;case"before":r.page=1<=r.page-r.fastForward?r.page-r.fastForward:1,t=r.page;break;case"after":r.page=Number(r.page)+Number(r.fastForward)<=o?Number(r.page)+Number(r.fastForward):o,t=r.page;break;case"go":var e=parseInt(i.find("input").val());if(!(/^[0-9]*$/.test(e)&&1<=e&&e<=o))return;t=r.page=e;break;default:r.page=t}t!=n.pageNum&&(n.pageNum=r.page,n.viewHtml(),r.backFun(r))}),this.element.off("keyup","input"),this.element.on("keyup","input",function(t){13==t.keyCode&&(t=parseInt(i.find("input").val()),/^[0-9]*$/.test(t))&&1<=t&&t<=o&&t!=n.pageNum&&(r.page=t,n.pageNum=t,n.viewHtml(),r.backFun(r))}),0 { try { const msg = err && err.message ? String(err.message) : String(err || ""); - // eslint-disable-next-line no-console + console.log("[dev-server][onlyoffice-ws] proxy error", msg); } catch {} try { @@ -201,7 +201,7 @@ function proxyConvexUpgrade(req, socket, head) { const onError = (err) => { try { const msg = err && err.message ? String(err.message) : String(err || ""); - // eslint-disable-next-line no-console + console.log("[dev-server][convex-ws] proxy error", msg); } catch {} try { @@ -264,7 +264,7 @@ function proxyConvexHttp(req, res) { upstreamReq.on("error", (err) => { try { - // eslint-disable-next-line no-console + console.log("[dev-server][convex-http] proxy error", err && err.message ? err.message : String(err || "")); } catch {} try { @@ -309,7 +309,7 @@ async function main() { server.on("upgrade", (req, socket, head) => { if (isConvexPath(req.url || "/")) { try { - // eslint-disable-next-line no-console + console.log( "[dev-server][convex-ws] upgrade", req.url, @@ -326,7 +326,7 @@ async function main() { } if (isOnlyOfficePath(req.url || "/")) { try { - // eslint-disable-next-line no-console + console.log( "[dev-server][onlyoffice-ws] upgrade", req.url, @@ -353,7 +353,7 @@ async function main() { }); server.listen(port, hostname, () => { - // eslint-disable-next-line no-console + console.log( `[dev-server] ready http://${hostname}:${port} (ONLYOFFICE ws via ${ONLYOFFICE_PREFIX} -> ${process.env.ONLYOFFICE_INTERNAL_URL || "http://127.0.0.1:8081"}; Convex ws via ${CONVEX_PREFIX} -> ${process.env.CONVEX_INTERNAL_URL || "http://127.0.0.1:3210"})`, ); @@ -361,7 +361,7 @@ async function main() { } main().catch((err) => { - // eslint-disable-next-line no-console + console.error(err instanceof Error ? err.stack : String(err)); process.exit(1); }); diff --git a/wolai-frontend/src/app/(app)/wolai-import/page.tsx b/wolai-frontend/src/app/(app)/wolai-import/page.tsx new file mode 100644 index 00000000..54963120 --- /dev/null +++ b/wolai-frontend/src/app/(app)/wolai-import/page.tsx @@ -0,0 +1,151 @@ +"use client"; + +import { useMemo, useState } from "react"; +import { useRouter, useSearchParams } from "next/navigation"; +import { Button } from "@/components/ui/button"; +import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; +import { Input } from "@/components/ui/input"; +import { cn } from "@/lib/utils"; + +export default function WolaiImportPage() { + const router = useRouter(); + const searchParams = useSearchParams(); + const parentId = useMemo(() => searchParams.get("parentId") ?? "", [searchParams]); + + const [file, setFile] = useState(null); + const [zipPath, setZipPath] = useState(""); + const [rootMdPath, setRootMdPath] = useState(""); + const [busy, setBusy] = useState(false); + const [error, setError] = useState(""); + const [warnings, setWarnings] = useState([]); + + const handleSubmit = async () => { + if (!zipPath.trim() && !file) { + setError("请填写本地 ZIP 路径,或选择 ZIP 文件"); + return; + } + setBusy(true); + setError(""); + setWarnings([]); + try { + const useLocalPath = Boolean(zipPath.trim()); + let res: Response; + if (useLocalPath) { + res = await fetch("/api/wolai-import", { + method: "POST", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ + zipPath: zipPath.trim(), + parentId: parentId || undefined, + rootMdPath: rootMdPath.trim() || undefined, + }), + }); + } else { + if (!file) { + setError("请选择 ZIP 文件"); + return; + } + const formData = new FormData(); + formData.set("file", file); + if (parentId) formData.set("parentId", parentId); + if (rootMdPath.trim()) formData.set("rootMdPath", rootMdPath.trim()); + res = await fetch("/api/wolai-import", { method: "POST", body: formData }); + } + const payload = (await res.json().catch(() => null)) as any; + if (!res.ok) { + const msg = payload?.error ? String(payload.error) : `导入失败:${res.status}`; + setError(msg); + if (res.status === 409 && Array.isArray(payload?.candidates)) { + setWarnings([`无法自动判断入口页面,请在“入口 rootMdPath”填入其中一个:`, ...payload.candidates.map(String)]); + } + return; + } + + const ws = Array.isArray(payload?.warnings) ? payload.warnings.map(String) : []; + setWarnings(ws); + + const rootDocumentId = String(payload?.rootDocumentId ?? ""); + if (rootDocumentId) { + router.push(`/documents/${encodeURIComponent(rootDocumentId)}`); + return; + } + setError("导入完成但缺少 rootDocumentId"); + } catch (err) { + const msg = err instanceof Error ? err.message : "导入失败"; + setError(msg); + } finally { + setBusy(false); + } + }; + + return ( +
+ + + 导入 Wolai(Markdown ZIP) + + +
+
本地 ZIP 路径(大文件推荐)
+ setZipPath(e.target.value)} + placeholder="例如:C:\\Users\\liaib\\Downloads\\个人.zip" + disabled={busy} + /> +
+ 说明:你的 个人.zip 约 1.26GB,浏览器上传很容易 500。 + 建议填本地路径并清空 ZIP 文件选择(或不选择文件)。 +
+
+ +
+
ZIP 文件
+ setFile(e.target.files?.[0] ?? null)} + disabled={busy} + /> +
说明:请使用 Wolai 导出的“Markdown(含附件/图片)”ZIP。
+
+ +
+
入口 rootMdPath(可选)
+ setRootMdPath(e.target.value)} + placeholder="例如:dQeAax/个人.md(留空则自动判断)" + disabled={busy} + /> +
+ 自动判断失败时会返回候选列表,你可以把其中一个填进来重试。 +
+
+ + {parentId ? ( +
+ 将作为子页面导入到:{parentId} +
+ ) : null} + + {error ?
{error}
: null} + {warnings.length > 0 ? ( +
+ {warnings.join("\n")} +
+ ) : null} + +
+ + +
+
+
+
+ ); +} diff --git a/wolai-frontend/src/app/api/ai-agent/run/route.ts b/wolai-frontend/src/app/api/ai-agent/run/route.ts index 8e5f8b8f..5bdb674c 100644 --- a/wolai-frontend/src/app/api/ai-agent/run/route.ts +++ b/wolai-frontend/src/app/api/ai-agent/run/route.ts @@ -16,6 +16,18 @@ import { createOnlyOfficeServerTools, type OnlyOfficeSupabaseClient } from "@/li import { buildClientToolKey, registerClientToolCall } from "@/lib/ai-agent/runtime/clientToolBridge"; import { getAuthedConvexClient } from "@/lib/convex/route"; import { api } from "@/lib/convex/api"; +import type { ConvexHttpClient } from "convex/browser"; +import { + DEFAULT_AGENT_MAX_STEPS, + MAX_AGENT_STEPS, + MIN_AGENT_STEPS, + DEFAULT_CLIENT_TOOL_TIMEOUT_MS, + MAX_MINDMAP_ATTACHMENTS, + MAX_SELECTED_NODES, + DEFAULT_SEARCH_COUNT, +} from "@/lib/constants"; +import { safeGetJsonBody, errorResponses, validateRequestBody } from "@/lib/api-utils"; +import { isPlainObject, hasProperty, toRecord } from "@/lib/type-guards"; export const dynamic = "force-dynamic"; @@ -39,8 +51,46 @@ type RequestPayload = { options?: { searxng?: boolean; ai?: { provider?: "online" | "local"; model?: string } }; }; -const DEFAULT_MAX_STEPS = 10; -const DEFAULT_CLIENT_TOOL_TIMEOUT_MS = 60_000; +/** 按作用域分组的工具集 ID 映射 */ +const SCOPE_TOOLSET_MAP: Record = { + mindmap: [ + "toolset.readonly", + "toolset.rag_read", + "toolset.media_read", + "toolset.mindmap_read", + "toolset.mindmap_write", + ], + document: [ + "toolset.readonly", + "toolset.rag_read", + "toolset.media_read", + "toolset.docs_read", + "toolset.doc_read", + "toolset.doc_write", + "toolset.slash_write", + ], + onlyoffice: [ + "toolset.readonly", + "toolset.rag_read", + "toolset.media_read", + "toolset.docs_read", + "toolset.onlyoffice_read", + "toolset.onlyoffice_write", + "toolset.onlyoffice_editor", + ], + global: [ + "toolset.readonly", + "toolset.rag_read", + "toolset.media_read", + "toolset.docs_read", + "toolset.slash_write", + ], +}; + +/** 获取指定作用域允许的工具集 ID */ +const getToolSetIdsForScope = (scope: AgentScope): string[] => { + return SCOPE_TOOLSET_MAP[scope] ?? SCOPE_TOOLSET_MAP.global; +}; const makeRunId = () => { try { @@ -67,22 +117,31 @@ const toSseFrame = (event: string, data: unknown) => { }; export async function POST(request: Request) { - const payload = (await request.json().catch(() => null)) as RequestPayload | null; - if (!payload || !Array.isArray(payload.messages) || payload.messages.length === 0) { - return NextResponse.json({ error: "缺少 messages" }, { status: 400 }); + const payload = await safeGetJsonBody(request); + if (!payload) { + return errorResponses.badRequest("请求体不能为空"); + } + const validationError = validateRequestBody(payload, ["messages"] as const); + if (validationError) { + return validationError; + } + if (!Array.isArray(payload.messages) || payload.messages.length === 0) { + return errorResponses.badRequest("缺少 messages"); } // v1:鉴权(Convex 迁移阶段使用固定开发用户;非 Convex 模式仍走 Supabase session) const convexOn = isConvexEnabled(); - const { userId, supabase, convexClient } = await (async () => { - if (convexOn) { - const { auth, client } = await getAuthedConvexClient(); - return { userId: auth.userId, supabase: null as any, convexClient: client }; - } - return { userId: "", supabase: null as any, convexClient: null as any }; - })(); + const supabase = null as unknown; + let userId = ""; + let convexClient: ConvexHttpClient | null = null; + + if (convexOn) { + const { auth, client } = await getAuthedConvexClient(); + userId = auth.userId ?? ""; + convexClient = client; + } if (!userId) { - return NextResponse.json({ error: "未登录" }, { status: 401 }); + return errorResponses.unauthorized(); } const provider = payload.options?.ai?.provider === "local" ? "local" : "online"; @@ -92,11 +151,7 @@ export async function POST(request: Request) { ? await loadLocalAiConfig().catch(() => null) : await loadOnlineAiConfig().catch(() => null); if (!cfg) { - const tip = - provider === "local" - ? "未找到本地 AI 配置(LOCAL_AI_BASE_URL/LOCAL_AI_MODEL 或 ai.local.md / ai-local.md)" - : "未找到在线 AI 配置(ai.md 或 ONLINE_AI_* 环境变量)"; - return NextResponse.json({ error: tip }, { status: 500 }); + return errorResponses.aiConfigError(provider); } const registry = createToolRegistry({ tools: builtinTools, toolSets: builtinToolSets }); @@ -116,15 +171,8 @@ export async function POST(request: Request) { return mindmapId ? "mindmap" : "global"; })(); - // v1:按“使用位置”隔离工具,避免工具混淆/误调用(即使用户手动传入,也会被过滤) - const allowToolSetIds: string[] = - scope === "mindmap" - ? ["toolset.readonly", "toolset.rag_read", "toolset.media_read", "toolset.mindmap_read", "toolset.mindmap_write"] - : scope === "document" - ? ["toolset.readonly", "toolset.rag_read", "toolset.media_read", "toolset.docs_read", "toolset.doc_read", "toolset.doc_write", "toolset.slash_write"] - : scope === "onlyoffice" - ? ["toolset.readonly", "toolset.rag_read", "toolset.media_read", "toolset.docs_read", "toolset.onlyoffice_read", "toolset.onlyoffice_write", "toolset.onlyoffice_editor"] - : ["toolset.readonly", "toolset.rag_read", "toolset.media_read", "toolset.docs_read", "toolset.slash_write"]; + // v1:按"使用位置"隔离工具,避免工具混淆/误调用(即使用户手动传入,也会被过滤) + const allowToolSetIds = getToolSetIdsForScope(scope); const allowlist = new Set(); for (const sid of allowToolSetIds) { const s = registry.toolSetsById.get(sid); @@ -139,12 +187,12 @@ export async function POST(request: Request) { // v1:mindmap 工具必须在提供上下文时才允许,避免模型盲调导致误操作 const selectedUids = Array.isArray(payload.context?.selectedUids) - ? payload.context!.selectedUids!.map((x) => String(x)).filter(Boolean).slice(0, 6) + ? payload.context!.selectedUids!.map((x) => String(x)).filter(Boolean).slice(0, MAX_SELECTED_NODES) : []; const hasMindmapContext = Boolean(documentId && mindmapId); const hasDocumentContext = Boolean(documentId); const documentBlocks = payload.context?.documentBlocks ?? null; - const attachments = Array.isArray(payload.attachments) ? payload.attachments.slice(0, 12) : []; + const attachments = Array.isArray(payload.attachments) ? payload.attachments.slice(0, MAX_MINDMAP_ATTACHMENTS) : []; const attachmentLines = attachments .map((a, idx) => `${idx + 1}. id=${String(a.id)} title=${String(a.title)} mime=${String(a.mimeType ?? "")} url=${String(a.fileUrl)}`) .join("\n"); @@ -251,8 +299,8 @@ export async function POST(request: Request) { loadMindmap: async () => { if (!convexClient) throw new Error("Convex 未初始化"); const [mm, meta] = await Promise.all([ - convexClient.query(api.mindmaps.get, { userId, docId: documentId, mindmapId }), - convexClient.query(api.documents.getMeta, { userId, id: documentId }), + convexClient.query(api.mindmaps.get, { docId: documentId, mindmapId }), + convexClient.query(api.documents.getMeta, { id: documentId }), ]); const title = meta?.title ?? null; const workspaceId = meta?.workspace_id ?? (mm as any)?.meta?.workspace_id ?? null; @@ -263,7 +311,7 @@ export async function POST(request: Request) { }, saveMindmap: async ({ data }) => { if (!convexClient) throw new Error("Convex 未初始化"); - await convexClient.mutation(api.mindmaps.put, { userId, docId: documentId, mindmapId, data }); + await convexClient.mutation(api.mindmaps.put, { docId: documentId, mindmapId, data }); }, } : {}), @@ -286,13 +334,13 @@ export async function POST(request: Request) { const base = normalizeBlocksForTools(documentBlocks); if (base.length > 0) return { blocks: base, source: "client" }; if (!convexClient) throw new Error("Convex 未初始化"); - const res = await convexClient.query(api.documents.getContent, { userId, id: documentId }); + const res = await convexClient.query(api.documents.getContent, { id: documentId }); const blocks = normalizeBlocksForTools(res?.content ?? null); return { blocks, source: "convex" }; }, saveBlocks: async (blocks: unknown[]) => { if (!convexClient) throw new Error("Convex 未初始化"); - await convexClient.mutation(api.documents.updateContent, { userId, id: documentId, content: blocks }); + await convexClient.mutation(api.documents.updateContent, { id: documentId, content: blocks }); }, } : {}), @@ -318,15 +366,15 @@ export async function POST(request: Request) { if (!convexClient) throw new Error("Convex 未初始化"); const wsIds = workspaceId ? [workspaceId] - : ((await convexClient.query(api.workspaces.fetchWorkspaceSummaries, { userId }))?.workspaces ?? []).map((w: any) => + : ((await convexClient.query(api.workspaces.fetchWorkspaceSummaries, {}))?.workspaces ?? []).map((w: any) => String(w?.id ?? ""), ); const q = query.toLowerCase(); const results: any[] = []; for (const wid of wsIds.filter(Boolean)) { - const docs = await convexClient.query(api.documents.listByWorkspace, { userId, workspaceId: wid }); + const docs = await convexClient.query(api.documents.listByWorkspace, { workspaceId: wid }); const extra = includeDeleted - ? await convexClient.query(api.documents.listTrashedByWorkspace, { userId, workspaceId: wid }).catch(() => []) + ? await convexClient.query(api.documents.listTrashedByWorkspace, { workspaceId: wid }).catch(() => []) : []; const all = [...(Array.isArray(docs) ? docs : []), ...(Array.isArray(extra) ? extra : [])]; for (const d of all) { @@ -348,9 +396,9 @@ export async function POST(request: Request) { }, readDoc: async ({ documentId: rid, maxChars, includeContent }) => { if (!convexClient) throw new Error("Convex 未初始化"); - const meta = await convexClient.query(api.documents.getMeta, { userId, id: rid }); + const meta = await convexClient.query(api.documents.getMeta, { id: rid }); if (!meta) throw new Error("页面不存在"); - const contentRes = await convexClient.query(api.documents.getContent, { userId, id: rid }); + const contentRes = await convexClient.query(api.documents.getContent, { id: rid }); const blocks = normalizeBlocksForTools(contentRes?.content ?? null); const rawText = extractPlainTextFromBlocks(blocks, maxChars); return { @@ -403,21 +451,20 @@ export async function POST(request: Request) { allowedToolIds, ...(convexOn ? { - loadWorkspaceIds: async (uid: string) => { + loadWorkspaceIds: async (_uid: string) => { if (!convexClient) throw new Error("Convex 未初始化"); - const res = await convexClient.query(api.workspaces.fetchWorkspaceSummaries, { userId: uid }); + const res = await convexClient.query(api.workspaces.fetchWorkspaceSummaries, {}); return (res?.workspaces ?? []).map((w: any) => String(w?.id ?? "")).filter(Boolean); }, inferWorkspaceIdFromDoc: async (docId: string) => { if (!convexClient) throw new Error("Convex 未初始化"); - const meta = await convexClient.query(api.documents.getMeta, { userId, id: docId }); + const meta = await convexClient.query(api.documents.getMeta, { id: docId }); return meta ? String((meta as any).workspace_id ?? "") || null : null; }, createDoc: async ({ workspaceId, parentId, title }) => { if (!convexClient) throw new Error("Convex 未初始化"); const id = typeof crypto !== "undefined" && "randomUUID" in crypto ? crypto.randomUUID() : `doc_${Date.now()}_${Math.random().toString(16).slice(2, 8)}`; const created = await convexClient.mutation(api.documents.create, { - userId, id, workspaceId, parentId, @@ -436,8 +483,8 @@ export async function POST(request: Request) { }, renameDoc: async ({ documentId: did, title }) => { if (!convexClient) throw new Error("Convex 未初始化"); - await convexClient.mutation(api.documents.updateTitle, { userId, id: did, title }); - const meta = await convexClient.query(api.documents.getMeta, { userId, id: did }); + await convexClient.mutation(api.documents.updateTitle, { id: did, title }); + const meta = await convexClient.query(api.documents.getMeta, { id: did }); if (!meta) throw new Error("页面不存在"); return { id: String((meta as any).id ?? did), @@ -458,8 +505,8 @@ export async function POST(request: Request) { } if (toolId === "search_web") { const query = String(toolArgs.query ?? "").trim(); - const count = Number(toolArgs.count ?? 6); - return await searchSearxng(query, Number.isFinite(count) ? count : 6); + const count = Number(toolArgs.count ?? DEFAULT_SEARCH_COUNT); + return await searchSearxng(query, Number.isFinite(count) ? count : DEFAULT_SEARCH_COUNT); } if (toolId.startsWith("rag_")) { if (!ragTools) throw new Error(`工具未初始化:${toolId}`); @@ -492,9 +539,9 @@ export async function POST(request: Request) { }; const maxSteps = (() => { - const raw = Number(payload.maxSteps ?? DEFAULT_MAX_STEPS); - if (!Number.isFinite(raw)) return DEFAULT_MAX_STEPS; - return Math.max(1, Math.min(24, Math.floor(raw))); + const raw = Number(payload.maxSteps ?? DEFAULT_AGENT_MAX_STEPS); + if (!Number.isFinite(raw)) return DEFAULT_AGENT_MAX_STEPS; + return Math.max(MIN_AGENT_STEPS, Math.min(MAX_AGENT_STEPS, Math.floor(raw))); })(); const stream = payload.stream !== false; diff --git a/wolai-frontend/src/app/api/media/sign/route.ts b/wolai-frontend/src/app/api/media/sign/route.ts index 0457ae76..ca2d3cc8 100644 --- a/wolai-frontend/src/app/api/media/sign/route.ts +++ b/wolai-frontend/src/app/api/media/sign/route.ts @@ -6,6 +6,41 @@ import { getAuthedConvexClient } from "@/lib/convex/route"; export const dynamic = "force-dynamic"; +const base64UrlEncodeUtf8 = (input: string) => { + return Buffer.from(input, "utf8") + .toString("base64") + .replace(/\+/g, "-") + .replace(/\//g, "_") + .replace(/=+$/g, ""); +}; + +const getRequestOrigin = (request: Request) => { + const xfProto = request.headers.get("x-forwarded-proto")?.split(",")[0]?.trim(); + const xfHost = request.headers.get("x-forwarded-host")?.split(",")[0]?.trim(); + const host = xfHost || request.headers.get("host") || new URL(request.url).host; + const protocol = (xfProto || new URL(request.url).protocol.replace(/:$/, "")) + ":"; + return `${protocol}//${host}`; +}; + +const isLocalHostname = (hostname: string) => + hostname === "127.0.0.1" || hostname === "localhost" || hostname === "host.docker.internal"; + +const maybeProxyForBrowser = (request: Request, rawUrl: string) => { + const input = String(rawUrl || "").trim(); + if (!input) return input; + if (input.startsWith("/api/onlyoffice/proxy")) return input; + try { + const u = new URL(input); + if (!isLocalHostname(u.hostname)) return input; + const origin = getRequestOrigin(request); + const proxy = new URL("/api/onlyoffice/proxy", origin); + proxy.searchParams.set("u", base64UrlEncodeUtf8(input)); + return proxy.toString(); + } catch { + return input; + } +}; + export async function GET(request: Request) { if (isConvexEnabled()) { let auth; @@ -40,7 +75,7 @@ export async function GET(request: Request) { } return NextResponse.json({ - signedUrl, + signedUrl: maybeProxyForBrowser(request, signedUrl), asset: { id: asset.id, file_name: asset.file_name, diff --git a/wolai-frontend/src/app/api/media/signed-url/route.ts b/wolai-frontend/src/app/api/media/signed-url/route.ts index bcd588fa..d863efe9 100644 --- a/wolai-frontend/src/app/api/media/signed-url/route.ts +++ b/wolai-frontend/src/app/api/media/signed-url/route.ts @@ -4,6 +4,41 @@ import { HttpError, requireAuthContext } from "@/lib/auth/authContext"; export const dynamic = "force-dynamic"; +const base64UrlEncodeUtf8 = (input: string) => { + return Buffer.from(input, "utf8") + .toString("base64") + .replace(/\+/g, "-") + .replace(/\//g, "_") + .replace(/=+$/g, ""); +}; + +const getRequestOrigin = (request: Request) => { + const xfProto = request.headers.get("x-forwarded-proto")?.split(",")[0]?.trim(); + const xfHost = request.headers.get("x-forwarded-host")?.split(",")[0]?.trim(); + const host = xfHost || request.headers.get("host") || new URL(request.url).host; + const protocol = (xfProto || new URL(request.url).protocol.replace(/:$/, "")) + ":"; + return `${protocol}//${host}`; +}; + +const isLocalHostname = (hostname: string) => + hostname === "127.0.0.1" || hostname === "localhost" || hostname === "host.docker.internal"; + +const maybeProxyForBrowser = (request: Request, rawUrl: string) => { + const input = String(rawUrl || "").trim(); + if (!input) return input; + if (input.startsWith("/api/onlyoffice/proxy")) return input; + try { + const u = new URL(input); + if (!isLocalHostname(u.hostname)) return input; + const origin = getRequestOrigin(request); + const proxy = new URL("/api/onlyoffice/proxy", origin); + proxy.searchParams.set("u", base64UrlEncodeUtf8(input)); + return proxy.toString(); + } catch { + return input; + } +}; + export async function GET(request: Request) { if (isConvexEnabled()) { try { @@ -23,9 +58,8 @@ export async function GET(request: Request) { // 说明:Convex + MinIO 模式下,这个接口目前主要用于“外链文件”走 ONLYOFFICE 的场景。 // 由于外链本身已经是可访问的 URL,这里只做最小透传。 - return NextResponse.json({ signedUrl: fileUrl }); + return NextResponse.json({ signedUrl: maybeProxyForBrowser(request, fileUrl) }); } return NextResponse.json({ error: "当前仅支持 Convex 模式" }, { status: 501 }); } - diff --git a/wolai-frontend/src/app/api/onlyoffice/proxy/route.ts b/wolai-frontend/src/app/api/onlyoffice/proxy/route.ts index 847e37d6..6656c104 100644 --- a/wolai-frontend/src/app/api/onlyoffice/proxy/route.ts +++ b/wolai-frontend/src/app/api/onlyoffice/proxy/route.ts @@ -71,7 +71,7 @@ const handle = async (request: Request, method: "GET" | "HEAD") => { let targetUrl: string; try { targetUrl = decodeBase64UrlToUtf8(encoded); - // eslint-disable-next-line no-new + new URL(targetUrl); } catch { return NextResponse.json({ error: "u 不是有效的 base64url URL" }, { status: 400 }); diff --git a/wolai-frontend/src/app/api/wolai-import/route.ts b/wolai-frontend/src/app/api/wolai-import/route.ts new file mode 100644 index 00000000..1ad7ef9e --- /dev/null +++ b/wolai-frontend/src/app/api/wolai-import/route.ts @@ -0,0 +1,985 @@ +import { NextResponse } from "next/server"; +import { randomUUID } from "crypto"; +import path from "path"; +import { JSDOM } from "jsdom"; +import { BlockNoteEditor, BlockNoteSchema, markdownToBlocks } from "@blocknote/core"; +import type { Block } from "@blocknote/core"; +import type { Json } from "@/types/supabase"; +import type { MediaAsset } from "@/types/media"; +import { isConvexEnabled } from "@/lib/convex/enabled"; +import { HttpError, requireAuthContext } from "@/lib/auth/authContext"; +import { getConvexAuthedHttpClient } from "@/lib/convex/server"; +import { api } from "@/lib/convex/api"; +import { getDocumentsBaseDir } from "@/lib/server/local-paths"; +import { promises as fs } from "fs"; +import os from "os"; +import { spawn } from "child_process"; + +export const runtime = "nodejs"; +export const dynamic = "force-dynamic"; + +let domShimReady = false; +function ensureDomShim() { + if (domShimReady) return; + const dom = new JSDOM(""); + const g = globalThis as any; + + // 说明:Node.js(以及 Next.js 运行时)可能已经提供了只读的 globalThis.navigator(getter-only)。 + // 这里仅在必要时注入 window/document 等基础对象,避免覆盖只读属性导致 500。 + if (!g.window) g.window = dom.window; + if (!g.document) g.document = dom.window.document; + if (!g.DOMParser) g.DOMParser = dom.window.DOMParser; + if (!g.HTMLElement) g.HTMLElement = dom.window.HTMLElement; + if (!g.Node) g.Node = dom.window.Node; + domShimReady = true; +} + +const documentsBaseDir = getDocumentsBaseDir(); + +async function ensureDocumentScaffold(id: string, title: string) { + const folder = path.join(documentsBaseDir, id); + const indexFile = path.join(folder, "index.md"); + await fs.mkdir(folder, { recursive: true }); + try { + await fs.access(indexFile); + } catch { + const safeTitle = title && title.trim() ? title.trim() : "无标题"; + await fs.writeFile(indexFile, `# ${safeTitle}\n`, "utf8"); + } +} + +type InputStore = { + kind: "dir"; + baseDir: string; + listFiles: () => Promise; + readText: (relPath: string) => Promise; + readBytes: (relPath: string) => Promise; + exists: (relPath: string) => Promise; +}; + +type ImportNode = + | { kind: "doc"; key: string; title: string; mdPath: string; parentKey: string | null } + | { kind: "folder"; key: string; title: string; dirPath: string; parentKey: string | null }; + +type TokenRecord = + | { kind: "image"; token: string; url: string; alt: string } + | { kind: "file"; token: string; url: string; label: string } + | { kind: "page"; token: string; targetMdRel: string; label: string }; + +function normalizeZipPath(value: string): string { + return value.replace(/\\/g, "/").replace(/^\.\//, ""); +} + +function isRemoteUrl(url: string): boolean { + // 说明:Wolai 导出里可能包含 mailto/tel/#锚点等“非文件路径”链接,这里统一视为远端(不当作本地文件处理)。 + return /^(https?:\/\/|data:|mailto:|tel:)/i.test(url) || url.trim().startsWith("#"); +} + +function stripAngleBrackets(url: string): string { + const trimmed = url.trim(); + if (trimmed.startsWith("<") && trimmed.endsWith(">")) { + return trimmed.slice(1, -1).trim(); + } + return trimmed; +} + +function safeBasename(filePath: string): string { + const base = path.posix.basename(filePath); + return base || "未命名资源"; +} + +function parseTopHeadingTitle(markdown: string): string | null { + const lines = markdown.split(/\r?\n/); + for (const line of lines) { + const t = line.trim(); + if (!t) continue; + const m = /^#\s+(.+)$/.exec(t); + if (!m) return null; + const title = m[1]?.trim() ?? ""; + return title || null; + } + return null; +} + +function stripTopHeadingIfMatches(markdown: string, title: string): string { + const lines = markdown.split(/\r?\n/); + let idx = 0; + while (idx < lines.length && !lines[idx].trim()) idx += 1; + const first = lines[idx] ?? ""; + const m = /^#\s+(.+)$/.exec(first.trim()); + if (!m) return markdown; + const head = (m[1] ?? "").trim(); + if (!head || head !== title.trim()) return markdown; + const rest = [...lines.slice(0, idx), ...lines.slice(idx + 1)]; + while (rest.length > 0 && !rest[0].trim()) rest.shift(); + return rest.join("\n"); +} + +function resolveRelativePosix(baseDirRel: string, rel: string): string { + const cleaned = normalizeZipPath(stripAngleBrackets(rel)); + if (!cleaned) return cleaned; + if (cleaned.startsWith("/")) return cleaned.replace(/^\/+/, ""); + return path.posix.normalize(path.posix.join(baseDirRel, cleaned)); +} + +function stripMarkdownLinkTitle(raw: string): string { + // 说明:处理 Wolai 导出的 title 属性:path "title" + return raw.split(/\s+\"/)[0]?.trim() ?? raw.trim(); +} + +function stripLocalQueryAndHash(url: string): string { + // 说明:本地文件路径不应包含 ?query/#hash;否则会导致资源无法匹配。 + const noHash = url.split("#")[0] ?? url; + const noQuery = (noHash ?? url).split("?")[0] ?? noHash ?? url; + return noQuery.trim(); +} + +function guessMimeType(fileName: string): string { + const ext = path.extname(fileName).toLowerCase(); + switch (ext) { + case ".png": + return "image/png"; + case ".jpg": + case ".jpeg": + return "image/jpeg"; + case ".gif": + return "image/gif"; + case ".webp": + return "image/webp"; + case ".svg": + return "image/svg+xml"; + case ".pdf": + return "application/pdf"; + case ".doc": + return "application/msword"; + case ".docx": + return "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; + case ".xls": + return "application/vnd.ms-excel"; + case ".xlsx": + return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; + case ".ppt": + return "application/vnd.ms-powerpoint"; + case ".pptx": + return "application/vnd.openxmlformats-officedocument.presentationml.presentation"; + case ".mp3": + return "audio/mpeg"; + case ".wav": + return "audio/wav"; + case ".m4a": + return "audio/mp4"; + case ".mp4": + return "video/mp4"; + case ".mov": + return "video/quicktime"; + default: + return "application/octet-stream"; + } +} + +function resolveAssetTypeByMime(mime: string): "image" | "video" | "audio" | "file" { + if (mime.startsWith("image/")) return "image"; + if (mime.startsWith("video/")) return "video"; + if (mime.startsWith("audio/")) return "audio"; + return "file"; +} + +function toFsPath(baseDir: string, relPath: string): string { + const normalized = normalizeZipPath(relPath); + const parts = normalized.split("/").filter(Boolean); + return path.join(baseDir, ...parts); +} + +async function listFilesRecursive(rootDir: string): Promise { + const out: string[] = []; + const stack: Array<{ abs: string; rel: string }> = [{ abs: rootDir, rel: "" }]; + + while (stack.length > 0) { + const current = stack.pop()!; + const entries = await fs.readdir(current.abs, { withFileTypes: true }); + for (const entry of entries) { + const abs = path.join(current.abs, entry.name); + const rel = current.rel ? `${current.rel}/${entry.name}` : entry.name; + if (entry.isDirectory()) { + stack.push({ abs, rel }); + } else if (entry.isFile()) { + out.push(normalizeZipPath(rel)); + } + } + } + + return out; +} + +function escapePwshSingleQuoted(value: string): string { + return value.replace(/'/g, "''"); +} + +async function extractZipToTemp(zipPath: string): Promise { + const tmp = await fs.mkdtemp(path.join(os.tmpdir(), "wolai-import-")); + const literalZip = escapePwshSingleQuoted(zipPath); + const literalOut = escapePwshSingleQuoted(tmp); + const command = `Expand-Archive -LiteralPath '${literalZip}' -DestinationPath '${literalOut}' -Force`; + + await new Promise((resolve, reject) => { + const child = spawn("powershell", ["-NoProfile", "-Command", command], { + stdio: ["ignore", "pipe", "pipe"], + }); + let stderr = ""; + child.stderr.on("data", (chunk) => { + stderr += chunk.toString(); + }); + child.on("error", (err) => reject(err)); + child.on("close", (code) => { + if (code === 0) resolve(); + else reject(new Error(`解压失败(code=${code}):${stderr || "unknown"}`)); + }); + }); + + return tmp; +} + +async function createDirStore(baseDir: string): Promise { + const abs = path.resolve(baseDir); + return { + kind: "dir", + baseDir: abs, + listFiles: async () => await listFilesRecursive(abs), + readText: async (relPath) => await fs.readFile(toFsPath(abs, relPath), "utf8"), + readBytes: async (relPath) => new Uint8Array(await fs.readFile(toFsPath(abs, relPath))), + exists: async (relPath) => { + try { + await fs.access(toFsPath(abs, relPath)); + return true; + } catch { + return false; + } + }, + }; +} + +const MAX_ASSET_BYTES = 100 * 1024 * 1024; + +function detectRootMdPath(mdPaths: string[]): { rootMdPath: string | null; candidates: string[] } { + const normalized = mdPaths.map(normalizeZipPath); + const topDirs = Array.from(new Set(normalized.map((p) => p.split("/")[0]).filter(Boolean))); + if (topDirs.length === 1) { + const top = topDirs[0]!; + const candidates = normalized + .filter((p) => p.startsWith(`${top}/`)) + .filter((p) => p.split("/").length === 2) + .sort((a, b) => a.localeCompare(b, "zh-Hans-CN")); + if (candidates.length === 1) return { rootMdPath: candidates[0]!, candidates }; + if (candidates.length > 1) return { rootMdPath: null, candidates }; + } + + const sorted = normalized + .slice() + .sort((a, b) => a.split("/").length - b.split("/").length || a.localeCompare(b, "zh-Hans-CN")); + if (sorted.length === 0) return { rootMdPath: null, candidates: [] }; + return { rootMdPath: sorted[0]!, candidates: sorted.slice(0, 8) }; +} + +function buildImportNodes(opts: { + scopePrefix: string; + rootMdPath: string; + mdPaths: string[]; +}): { nodes: ImportNode[]; mdRelToKey: Map } { + const scope = opts.scopePrefix.endsWith("/") ? opts.scopePrefix : `${opts.scopePrefix}/`; + const withinScope = opts.mdPaths.map(normalizeZipPath).filter((p) => p.startsWith(scope)); + const root = normalizeZipPath(opts.rootMdPath); + const mdSet = new Set(withinScope); + + const allDirs: Set = new Set(); + for (const md of withinScope) { + const dir = path.posix.dirname(md); + const segments = dir.split("/").filter(Boolean); + let accum = ""; + for (const seg of segments) { + accum = accum ? `${accum}/${seg}` : seg; + allDirs.add(`${accum}/`); + } + } + + const representing: Map = new Map(); + for (const dir of allDirs) { + const dirName = dir.split("/").filter(Boolean).pop() ?? ""; + if (!dirName) continue; + const prefer = `${dir}${dirName}.md`; + const index = `${dir}index.md`; + if (mdSet.has(prefer)) representing.set(dir, prefer); + else if (mdSet.has(index)) representing.set(dir, index); + } + representing.set(scope, root); + + // 说明:仅为“包含 markdown 的目录”创建合成文件夹页(避免 image/ 这类纯资源目录)。 + const folderNodes: Array> = []; + for (const dir of allDirs) { + if (dir === scope) continue; + if (representing.has(dir)) continue; + folderNodes.push({ + kind: "folder", + key: `__dir__${dir}`, + title: (dir.split("/").filter(Boolean).pop() ?? "目录").trim() || "目录", + dirPath: dir, + parentKey: null, + }); + } + + const docNodes: Array> = withinScope.map((md) => ({ + kind: "doc", + key: md, + title: path.posix.basename(md, ".md") || "无标题", + mdPath: md, + parentKey: null, + })); + + const nodesByKey = new Map(); + for (const n of [...folderNodes, ...docNodes]) nodesByKey.set(n.key, n); + + const getContainerKeyForDir = (dir: string): string => { + const normalizedDir = dir.endsWith("/") ? dir : `${dir}/`; + const rep = representing.get(normalizedDir); + if (rep) return rep; + return `__dir__${normalizedDir}`; + }; + + for (const node of folderNodes) { + const parentDir = path.posix.dirname(node.dirPath.endsWith("/") ? node.dirPath.slice(0, -1) : node.dirPath); + const parentDirNorm = parentDir === "." ? "" : `${parentDir}/`; + node.parentKey = parentDirNorm ? getContainerKeyForDir(parentDirNorm) : root; + } + + for (const node of docNodes) { + if (node.mdPath === root) { + node.parentKey = null; + continue; + } + const dir = `${path.posix.dirname(node.mdPath)}/`; + const rep = representing.get(dir); + if (rep && rep !== node.mdPath) { + node.parentKey = rep; + continue; + } + if (rep && rep === node.mdPath) { + const parentDir = path.posix.dirname(dir.endsWith("/") ? dir.slice(0, -1) : dir); + const parentDirNorm = parentDir === "." ? "" : `${parentDir}/`; + node.parentKey = parentDirNorm ? getContainerKeyForDir(parentDirNorm) : root; + continue; + } + node.parentKey = getContainerKeyForDir(dir); + } + + for (const node of [...folderNodes, ...docNodes]) { + if (node.key === root) continue; + if (!node.parentKey) continue; + if (!nodesByKey.has(node.parentKey)) node.parentKey = root; + } + + // 说明:构建 md 相对路径 -> key 的映射,用于内部链接替换 + const mdRelToKey = new Map(); + for (const md of withinScope) { + const rel = md.startsWith(scope) ? md.slice(scope.length) : md; + mdRelToKey.set(rel, md); + } + + // 说明:输出需要按“父先子后”的顺序创建 + const all = [...folderNodes, ...docNodes]; + const depth = (key: string): number => { + let d = 0; + let cur = nodesByKey.get(key) ?? null; + const seen = new Set(); + while (cur && cur.parentKey) { + if (seen.has(cur.parentKey)) break; + seen.add(cur.parentKey); + d += 1; + cur = nodesByKey.get(cur.parentKey) ?? null; + } + return d; + }; + + all.sort((a, b) => depth(a.key) - depth(b.key) || a.title.localeCompare(b.title, "zh-Hans-CN")); + return { nodes: all, mdRelToKey }; +} + +function extractStandaloneMarkdownLink(line: string): { label: string; href: string } | null { + const trimmed = line.trim(); + if (!trimmed.startsWith("[") || !trimmed.includes("](") || !trimmed.endsWith(")")) return null; + const m = /^\[([^\]]+)\]\(([^)]+)\)$/.exec(trimmed); + if (!m) return null; + const label = (m[1] ?? "").trim(); + const raw = (m[2] ?? "").trim(); + const href = stripAngleBrackets(stripMarkdownLinkTitle(raw)); + return { label, href }; +} + +function replaceImagesAndLinks(opts: { + markdown: string; + mdDirRel: string; + mdRelToDocId: Map; + uploadedUrlByRelAssetPath: Map< + string, + { + url: string; + assetId: string; + fileName: string; + mimeType: string; + fileSize: number; + assetType: "image" | "video" | "audio" | "file"; + } + >; +}): { markdown: string; tokens: TokenRecord[]; warnings: string[] } { + const warnings: string[] = []; + const tokens: TokenRecord[] = []; + + const lines = opts.markdown.split(/\r?\n/); + const out: string[] = []; + + const imageRe = /!\[([^\]]*)\]\(([^)]+)\)/g; + const linkRe = /\[([^\]]+)\]\(([^)]+)\)/g; + + for (const rawLine of lines) { + let line = rawLine; + + // 1) 先处理“整行的页面链接/附件链接”,便于转成块 + const standalone = extractStandaloneMarkdownLink(line); + if (standalone) { + const href0 = standalone.href; + const href = isRemoteUrl(href0) ? href0 : stripLocalQueryAndHash(href0); + if (!isRemoteUrl(href)) { + const target = resolveRelativePosix(opts.mdDirRel, href); + if (target.toLowerCase().endsWith(".md")) { + const docId = opts.mdRelToDocId.get(target); + if (docId) { + const token = `[[[MNOTE_PAGE_REF:${randomUUID()}]]]`; + tokens.push({ kind: "page", token, targetMdRel: target, label: standalone.label }); + out.push(token); + continue; + } + } + + const asset = opts.uploadedUrlByRelAssetPath.get(target); + if (asset) { + const token = `[[[MNOTE_FILE:${randomUUID()}]]]`; + tokens.push({ kind: "file", token, url: asset.url, label: standalone.label }); + out.push(token); + continue; + } + } + } + + // 2) 图片语法替换为 token(避免 BlockNote 的图片解析在 Node 环境报错) + line = line.replace(imageRe, (_full, altRaw, urlRaw) => { + const alt = String(altRaw ?? "").trim(); + const raw0 = stripAngleBrackets(stripMarkdownLinkTitle(String(urlRaw ?? "").trim())); + const url = isRemoteUrl(raw0) ? raw0 : stripLocalQueryAndHash(raw0); + const token = `[[[MNOTE_IMAGE:${randomUUID()}]]]`; + tokens.push({ kind: "image", token, url, alt }); + // 说明:用空行包起来,尽量让 markdownToBlocks 生成“单独段落”,便于后续替换为 media block。 + return `\n\n${token}\n\n`; + }); + + // 3) 重写内联链接(页面链接 -> /documents/,附件链接 -> Convex url) + line = line.replace(linkRe, (full, labelRaw, hrefRaw) => { + const label = String(labelRaw ?? ""); + const href0 = stripAngleBrackets(stripMarkdownLinkTitle(String(hrefRaw ?? "").trim())); + const href = isRemoteUrl(href0) ? href0 : stripLocalQueryAndHash(href0); + if (isRemoteUrl(href)) return full; + + const target = resolveRelativePosix(opts.mdDirRel, href); + if (target.toLowerCase().endsWith(".md")) { + const docId = opts.mdRelToDocId.get(target); + if (docId) return `[${label}](/documents/${encodeURIComponent(docId)})`; + return full; + } + + const asset = opts.uploadedUrlByRelAssetPath.get(target); + if (asset) return `[${label}](${asset.url})`; + return full; + }); + + out.push(line); + } + + return { markdown: out.join("\n"), tokens, warnings }; +} + +function isSingleTokenParagraph(block: any, token: string): boolean { + if (!block || typeof block !== "object") return false; + if (!Array.isArray(block.content)) return false; + if (block.content.length !== 1) return false; + const node = block.content[0]; + if (!node || typeof node !== "object") return false; + if (node.type !== "text") return false; + return String(node.text ?? "").trim() === token; +} + +function replaceTokensInBlocks(opts: { + blocks: any[]; + tokens: TokenRecord[]; + pageRefResolver: (rel: string) => { pageId: string; title: string } | null; + mediaResolver: (url: string) => { props: Record } | null; +}): { blocks: any[]; unresolved: TokenRecord[] } { + const tokenMap = new Map(opts.tokens.map((t) => [t.token, t])); + const unresolved = new Set(opts.tokens.map((t) => t.token)); + + const walk = (items: any[]): any[] => { + const out: any[] = []; + for (const block of items) { + const maybe = + block && Array.isArray(block.content) && block.content.length === 1 && block.content[0]?.type === "text" + ? String(block.content[0].text ?? "").trim() + : null; + + if (maybe && tokenMap.has(maybe) && isSingleTokenParagraph(block, maybe)) { + const token = tokenMap.get(maybe)!; + unresolved.delete(maybe); + + if (token.kind === "page") { + const resolved = opts.pageRefResolver(token.targetMdRel); + if (!resolved) { + out.push(block); + continue; + } + out.push({ + id: randomUUID(), + type: "pageReference", + props: { pageId: resolved.pageId, title: token.label || resolved.title || "无标题" }, + content: [], + children: [], + }); + continue; + } + + if (token.kind === "image" || token.kind === "file") { + const resolved = opts.mediaResolver(token.url); + if (!resolved) { + out.push(block); + continue; + } + out.push({ id: randomUUID(), type: "media", props: resolved.props, content: [], children: [] }); + continue; + } + } + + const next = { ...block }; + if (Array.isArray(next.children) && next.children.length > 0) { + next.children = walk(next.children); + } + out.push(next); + } + return out; + }; + + return { blocks: walk(opts.blocks), unresolved: opts.tokens.filter((t) => unresolved.has(t.token)) }; +} + +async function uploadToConvexMedia(opts: { + client: any; + userId: string; + workspaceId: string; + documentId: string; + fileName: string; + bytes: Uint8Array; + mimeType: string; +}): Promise { + const assetId = randomUUID(); + const assetType = resolveAssetTypeByMime(opts.mimeType); + + const uploadUrl = await opts.client.mutation(api.mediaAssets.generateUploadUrl, { userId: opts.userId }); + if (!uploadUrl || typeof uploadUrl !== "string") throw new Error("获取上传地址失败"); + + const uploadRes = await fetch(uploadUrl, { + method: "POST", + headers: { "Content-Type": opts.mimeType || "application/octet-stream" }, + body: Buffer.from(opts.bytes), + }); + if (!uploadRes.ok) { + const text = await uploadRes.text().catch(() => ""); + throw new Error(`上传到 Convex 失败:${uploadRes.status} ${text}`); + } + const uploadJson = (await uploadRes.json().catch(() => null)) as { storageId?: string } | null; + const storageId = uploadJson?.storageId ?? ""; + if (!storageId) throw new Error("上传到 Convex 失败:缺少 storageId"); + + const created = await opts.client.mutation(api.mediaAssets.createWithStorage, { + userId: opts.userId, + storageId: storageId as any, + asset: { + id: assetId, + workspace_id: opts.workspaceId, + document_id: opts.documentId, + asset_type: assetType, + file_name: opts.fileName || null, + file_size: opts.bytes.length, + mime_type: opts.mimeType || null, + }, + }); + + return created as unknown as MediaAsset; +} + +export async function POST(request: Request) { + if (!isConvexEnabled()) { + return NextResponse.json({ error: "当前仅支持 Convex 模式" }, { status: 501 }); + } + + let auth; + try { + auth = await requireAuthContext(); + } catch (err) { + if (err instanceof HttpError) { + return NextResponse.json({ error: "未登录" }, { status: err.status }); + } + return NextResponse.json({ error: "未登录" }, { status: 401 }); + } + + try { + ensureDomShim(); + + const contentType = request.headers.get("content-type") ?? ""; + const isJson = contentType.includes("application/json"); + + let parentId: string | null = null; + let rootMdPathInput: string | null = null; + let zipPath: string | null = null; + let extractedDir: string | null = null; + let store: InputStore | null = null; + + if (isJson) { + const payload = (await request.json().catch(() => null)) as any; + parentId = String(payload?.parentId ?? "").trim() || null; + rootMdPathInput = String(payload?.rootMdPath ?? "").trim() || null; + zipPath = String(payload?.zipPath ?? "").trim() || null; + extractedDir = String(payload?.extractedDir ?? "").trim() || null; + } else { + const formData = await request.formData(); + parentId = String(formData.get("parentId") ?? "").trim() || null; + rootMdPathInput = String(formData.get("rootMdPath") ?? "").trim() || null; + const localZipPath = String(formData.get("zipPath") ?? "").trim(); + zipPath = localZipPath || null; + + const file = formData.get("file"); + if (file instanceof File) { + // 说明:浏览器上传大 ZIP(比如 1GB)会导致内存/超时问题,这里直接给出提示。 + const size = Number((file as any).size ?? 0); + if (size > 200 * 1024 * 1024) { + return NextResponse.json( + { error: "ZIP 太大,请使用“本地 ZIP 路径”方式导入(不要上传文件)" }, + { status: 413 }, + ); + } + return NextResponse.json( + { error: "当前仅支持“本地 ZIP 路径”导入(大文件避免上传)" }, + { status: 400 }, + ); + } + } + + if (extractedDir) { + store = await createDirStore(extractedDir); + } else if (zipPath) { + const stat = await fs.stat(zipPath); + if (!stat.isFile()) { + return NextResponse.json({ error: "zipPath 不是文件" }, { status: 400 }); + } + const extractDir = await extractZipToTemp(zipPath); + // 说明:使用解压输出目录作为 store 根目录,使相对路径保持 dQeAax/... 这种形态。 + store = await createDirStore(extractDir); + extractedDir = extractDir; + } else { + return NextResponse.json({ error: "缺少 zipPath(本地 ZIP 路径)" }, { status: 400 }); + } + + const allFilePaths = await store.listFiles(); + const mdPaths = allFilePaths.filter((p) => p.toLowerCase().endsWith(".md")); + if (mdPaths.length === 0) return NextResponse.json({ error: "未发现 .md 文件" }, { status: 400 }); + + let rootMdPath = rootMdPathInput ? normalizeZipPath(rootMdPathInput) : null; + if (rootMdPath && !(await store.exists(rootMdPath))) { + return NextResponse.json({ error: "rootMdPath 不存在", rootMdPath }, { status: 400 }); + } + if (!rootMdPath) { + const detected = detectRootMdPath(mdPaths); + if (!detected.rootMdPath) { + return NextResponse.json( + { error: "无法自动判断入口页面,请指定 rootMdPath", candidates: detected.candidates }, + { status: 409 }, + ); + } + rootMdPath = detected.rootMdPath; + } + + const scopePrefix = `${path.posix.dirname(rootMdPath)}/`; + const { nodes, mdRelToKey } = buildImportNodes({ scopePrefix, rootMdPath, mdPaths }); + + let client; + try { + client = await getConvexAuthedHttpClient(); + } catch (err) { + const msg = err instanceof Error ? err.message : "未登录"; + const status = msg.includes("未登录") ? 401 : 500; + return NextResponse.json({ error: msg }, { status }); + } + + // workspace / accessScope:有 parentId 则继承,否则走默认 workspace + let workspaceId = ""; + let accessScope: "private" | "shared" | "public" = "private"; + if (parentId) { + const parentMeta = await client.query(api.documents.getMeta, { id: parentId }); + if (!parentMeta) return NextResponse.json({ error: "父页面不存在或无权限" }, { status: 404 }); + workspaceId = String((parentMeta as any).workspace_id ?? ""); + accessScope = ((parentMeta as any).access_scope ?? "private") as typeof accessScope; + if (!workspaceId) return NextResponse.json({ error: "无法读取父页面 workspaceId" }, { status: 400 }); + } else { + const workspaceBootstrap = await client.mutation(api.workspaces.ensureDefaultWorkspace, { + fallbackName: auth.email ?? auth.name ?? "我的空间", + workspaceIdIfCreate: randomUUID(), + }); + workspaceId = String((workspaceBootstrap as any)?.activeWorkspaceId ?? ""); + if (!workspaceId) return NextResponse.json({ error: "缺少目标工作空间" }, { status: 400 }); + } + + // 读取每个 md 的标题(优先 # 顶部标题),并写回 node.title + for (const node of nodes) { + if (node.kind !== "doc") continue; + const text = await store.readText(node.mdPath).catch(() => ""); + if (!text) continue; + node.title = parseTopHeadingTitle(text) ?? node.title; + } + + // 先创建全部节点(documents / 合成目录页) + const keyToDocId = new Map(); + for (const node of nodes) { + const docId = randomUUID(); + const parentDocId = + node.key === rootMdPath + ? parentId + : node.parentKey + ? keyToDocId.get(node.parentKey) ?? parentId + : parentId; + + const created = await client.mutation(api.documents.create, { + id: docId, + workspaceId, + parentId: parentDocId ?? null, + title: node.title, + accessScope, + content: [], + }); + + if (!created || (created as any).id !== docId) { + return NextResponse.json({ error: "创建页面失败(Convex 返回异常)" }, { status: 500 }); + } + keyToDocId.set(node.key, docId); + await ensureDocumentScaffold(docId, node.title); + } + + // 逐页导入内容(markdown -> blocks;图片/附件 -> media block + media_assets) + const schema = BlockNoteSchema.create(); + const editor = BlockNoteEditor.create({ schema }); + const warnings: string[] = []; + let importedCount = 0; + + for (const node of nodes) { + if (node.kind !== "doc") continue; + const docId = keyToDocId.get(node.key) ?? ""; + if (!docId) continue; + let markdown = await store.readText(node.mdPath); + markdown = stripTopHeadingIfMatches(markdown, node.title); + + const mdDirFull = `${path.posix.dirname(node.mdPath)}/`; + const mdDirRel = mdDirFull.startsWith(scopePrefix) ? mdDirFull.slice(scopePrefix.length) : mdDirFull; + + // 预扫:把本页引用到的本地资源上传到 Convex,并建立 relPath -> url 映射 + const uploadedUrlByRelAssetPath = new Map< + string, + { + url: string; + assetId: string; + fileName: string; + mimeType: string; + fileSize: number; + assetType: "image" | "video" | "audio" | "file"; + } + >(); + + const localAssetPaths = new Set(); + { + const imgRe = /!\[[^\]]*\]\(([^)]+)\)/g; + let m: RegExpExecArray | null; + while ((m = imgRe.exec(markdown))) { + const raw0 = stripAngleBrackets(stripMarkdownLinkTitle(String(m[1] ?? "").trim())); + const raw = isRemoteUrl(raw0) ? raw0 : stripLocalQueryAndHash(raw0); + if (!raw || isRemoteUrl(raw)) continue; + const resolved = resolveRelativePosix(mdDirRel, raw); + if (resolved) localAssetPaths.add(resolved); + } + } + { + const linkRe = /\[[^\]]+\]\(([^)]+)\)/g; + let m: RegExpExecArray | null; + while ((m = linkRe.exec(markdown))) { + const raw0 = stripAngleBrackets(stripMarkdownLinkTitle(String(m[1] ?? "").trim())); + const raw = isRemoteUrl(raw0) ? raw0 : stripLocalQueryAndHash(raw0); + if (!raw || isRemoteUrl(raw)) continue; + const resolved = resolveRelativePosix(mdDirRel, raw); + if (!resolved) continue; + if (resolved.toLowerCase().endsWith(".md")) continue; + localAssetPaths.add(resolved); + } + } + + for (const relAssetPath of Array.from(localAssetPaths)) { + const zipPath = `${scopePrefix}${relAssetPath}`.replace(/\/{2,}/g, "/"); + if (!(await store.exists(zipPath))) { + warnings.push(`[${node.title}] 未找到资源文件:${relAssetPath}`); + continue; + } + const absAssetPath = toFsPath(store.baseDir, zipPath); + const stat = await fs.stat(absAssetPath).catch(() => null); + if (stat && typeof stat.size === "number" && stat.size > MAX_ASSET_BYTES) { + const mb = (stat.size / 1024 / 1024).toFixed(1); + warnings.push(`[${node.title}] 资源过大已跳过(${mb}MB):${relAssetPath}`); + continue; + } + + const bytes = await store.readBytes(zipPath); + const fileName = safeBasename(relAssetPath); + const mimeType = guessMimeType(fileName); + const assetType = resolveAssetTypeByMime(mimeType); + const created = await uploadToConvexMedia({ + client, + userId: auth.userId, + workspaceId, + documentId: docId, + fileName, + bytes, + mimeType, + }); + uploadedUrlByRelAssetPath.set(relAssetPath, { + url: String((created as any).file_url ?? ""), + assetId: String((created as any).id ?? ""), + fileName: String((created as any).file_name ?? fileName), + mimeType: String((created as any).mime_type ?? mimeType), + fileSize: Number((created as any).file_size ?? bytes.length), + assetType, + }); + } + + const mdRelToDocId = new Map(); + for (const [rel, key] of mdRelToKey.entries()) { + const id = keyToDocId.get(key); + if (id) mdRelToDocId.set(rel, id); + } + + const replaced = replaceImagesAndLinks({ + markdown, + mdDirRel, + mdRelToDocId, + uploadedUrlByRelAssetPath, + }); + markdown = replaced.markdown; + warnings.push(...replaced.warnings); + + let blocks: Block[] = []; + try { + blocks = markdownToBlocks(markdown, editor.pmSchema) as any; + } catch (err) { + const msg = err instanceof Error ? err.message : String(err); + warnings.push(`[${node.title}] Markdown 解析失败,已降级为纯文本:${msg}`); + blocks = [ + { + id: randomUUID(), + type: "paragraph", + props: { backgroundColor: "default", textColor: "default", textAlignment: "left" }, + content: [{ type: "text", text: markdown, styles: {} }], + children: [], + } as any, + ]; + } + + const replacedBlocks = replaceTokensInBlocks({ + blocks: blocks as any[], + tokens: replaced.tokens, + pageRefResolver: (rel) => { + const id = mdRelToDocId.get(rel) ?? ""; + if (!id) return null; + return { pageId: id, title: path.posix.basename(rel, ".md") || "无标题" }; + }, + mediaResolver: (url) => { + if (isRemoteUrl(url)) { + const fileName = safeBasename(url); + const mimeType = guessMimeType(fileName); + const assetType = resolveAssetTypeByMime(mimeType); + return { + props: { + fileUrl: url, + thumbnailUrl: url, + caption: "", + captionAlign: "left", + hasBorder: true, + linkUrl: "", + assetId: "", + assetType, + fileName, + fileSize: 0, + mimeType, + width: 0, + ocrStatus: "idle", + documentId: docId, + }, + }; + } + + const relAssetPath = resolveRelativePosix(mdDirRel, url); + const asset = uploadedUrlByRelAssetPath.get(relAssetPath); + if (!asset || !asset.url) return null; + return { + props: { + fileUrl: asset.url, + thumbnailUrl: asset.url, + caption: "", + captionAlign: "left", + hasBorder: true, + linkUrl: "", + assetId: asset.assetId || "", + assetType: asset.assetType, + fileName: asset.fileName || safeBasename(relAssetPath), + fileSize: asset.fileSize || 0, + mimeType: asset.mimeType || guessMimeType(asset.fileName || safeBasename(relAssetPath)), + width: 0, + ocrStatus: "idle", + documentId: docId, + }, + }; + }, + }); + + for (const token of replacedBlocks.unresolved) { + warnings.push(`[${node.title}] 未能解析 token:${token.token}`); + } + + // 说明:Convex 的 Json 不允许出现 undefined(尤其是表格类 block 里可能带有 columnWidths: [undefined])。 + // 用 JSON 序列化做一次深度净化:对象属性的 undefined 会被移除,数组里的 undefined 会变成 null。 + const sanitizedBlocks = JSON.parse(JSON.stringify(replacedBlocks.blocks)) as Json; + await client.mutation(api.documents.updateContent, { id: docId, content: sanitizedBlocks }); + importedCount += 1; + } + + const rootId = keyToDocId.get(rootMdPath) ?? ""; + return NextResponse.json({ + ok: true, + rootDocumentId: rootId, + importedCount, + warnings: warnings.slice(0, 200), + documentsBaseDir, + extractedDir, + }); + } catch (error) { + console.error("Wolai 导入失败", error); + const message = error instanceof Error ? error.message : "导入失败"; + const stack = error instanceof Error ? error.stack : undefined; + return NextResponse.json({ error: message, stack }, { status: 500 }); + } +} diff --git a/wolai-frontend/src/app/onlyoffice/OnlyOfficeClientPage.tsx b/wolai-frontend/src/app/onlyoffice/OnlyOfficeClientPage.tsx index 9c78e8db..e21a46fe 100644 --- a/wolai-frontend/src/app/onlyoffice/OnlyOfficeClientPage.tsx +++ b/wolai-frontend/src/app/onlyoffice/OnlyOfficeClientPage.tsx @@ -78,7 +78,7 @@ const setupOnlyOfficeGlobalErrorCapture = () => { window.__MNOTE_ONLYOFFICE_DOMPATCHED__ = true; try { const orig = Node.prototype.removeChild; - // eslint-disable-next-line no-extend-native + (Node.prototype as any).removeChild = function removeChildPatched(child: T): T { try { return orig.call(this, child) as T; @@ -195,7 +195,7 @@ const setupOnlyOfficeInternalRequestRewrite = (baseUrl: string, onlyofficeBaseUr }; const origOpen = (win as any).XMLHttpRequest?.prototype?.open; if (typeof origOpen !== "function") return; - // eslint-disable-next-line no-extend-native + (win as any).XMLHttpRequest.prototype.open = function openPatched( method: string, url: string, @@ -204,7 +204,7 @@ const setupOnlyOfficeInternalRequestRewrite = (baseUrl: string, onlyofficeBaseUr password?: string | null, ) { const nextUrl = typeof url === "string" ? rewriteUrl(url) : url; - // eslint-disable-next-line prefer-rest-params + return origOpen.call(this, method, nextUrl, async, user as any, password as any); }; (win as any).__MNOTE_ONLYOFFICE_XHR_REWRITE__ = true; @@ -225,7 +225,7 @@ const setupOnlyOfficeInternalRequestRewrite = (baseUrl: string, onlyofficeBaseUr const w = (f as HTMLIFrameElement).contentWindow; if (!w) continue; // 说明:同源时才能访问 location;跨域会抛异常,直接跳过。 - // eslint-disable-next-line no-unused-expressions + w.location?.origin; patchWindow(w); } catch { @@ -259,7 +259,7 @@ const docTypeFromExt = (ext: string) => { const waitForDocEditorReady = async (timeoutMs = 120_000) => { const start = Date.now(); - // eslint-disable-next-line no-constant-condition + while (true) { // @ts-expect-error ONLYOFFICE 全局对象 const ok = Boolean(window.DocsAPI && window.DocsAPI.DocEditor); @@ -267,7 +267,7 @@ const waitForDocEditorReady = async (timeoutMs = 120_000) => { if (Date.now() - start > timeoutMs) { throw new Error("等待 ONLYOFFICE DocEditor 初始化超时"); } - // eslint-disable-next-line no-await-in-loop + await new Promise((r) => setTimeout(r, 250)); } }; @@ -606,7 +606,7 @@ export default function OnlyOfficePage() { // 说明:api.js 的 onload 并不代表 DocsAPI/DocEditor 已完全就绪(在慢网/高负载时会出现空白页)。 // 因此这里额外等待 DocEditor 挂载,避免偶发“白屏但无错误”的体验。 await waitForDocEditorReady(120_000); - // eslint-disable-next-line new-cap,@typescript-eslint/no-explicit-any + const pluginConfigUrl = `${window.location.origin}/onlyoffice/plugins/agent-tools/config.json`; const config: any = { @@ -708,7 +708,7 @@ export default function OnlyOfficePage() { config.editorConfig.token = editorConfigToken; } - // eslint-disable-next-line new-cap,@typescript-eslint/no-explicit-any + // eslint-disable-next-line @typescript-eslint/no-explicit-any new (window as any).DocsAPI.DocEditor("onlyoffice-frame", config); }) .catch((err: Error) => { diff --git a/wolai-frontend/src/components/ai-agent/AiAgentPanel.tsx b/wolai-frontend/src/components/ai-agent/AiAgentPanel.tsx index 498b8ac2..2c7677df 100644 --- a/wolai-frontend/src/components/ai-agent/AiAgentPanel.tsx +++ b/wolai-frontend/src/components/ai-agent/AiAgentPanel.tsx @@ -5,6 +5,7 @@ import { Button } from "@/components/ui/button"; import { Card } from "@/components/ui/card"; import { Textarea } from "@/components/ui/textarea"; import { ScrollArea } from "@/components/ui/scroll-area"; +import { clamp, MIN_AGENT_STEPS, MAX_AGENT_STEPS } from "@/lib/constants"; type ChatMsg = { role: "user" | "assistant"; content: string }; type ToolLog = @@ -201,14 +202,14 @@ export function AiAgentPanel() { { const v = Number(e.target.value); if (!Number.isFinite(v)) return; - setMaxSteps(Math.max(1, Math.min(24, Math.floor(v)))); + setMaxSteps(clamp(Math.floor(v), MIN_AGENT_STEPS, MAX_AGENT_STEPS)); }} disabled={running} /> diff --git a/wolai-frontend/src/components/editor/DocumentAiAgentPanel.tsx b/wolai-frontend/src/components/editor/DocumentAiAgentPanel.tsx index 5dab7977..be2ee9e7 100644 --- a/wolai-frontend/src/components/editor/DocumentAiAgentPanel.tsx +++ b/wolai-frontend/src/components/editor/DocumentAiAgentPanel.tsx @@ -15,6 +15,7 @@ import { SheetHeader, SheetTitle, } from "@/components/ui/sheet"; +import { clamp, MIN_AGENT_STEPS, MAX_AGENT_STEPS } from "@/lib/constants"; type AgentMessage = { role: "user" | "assistant"; content: string }; @@ -79,8 +80,6 @@ type ChatSession = { type PanelPage = "chat" | "tools" | "history" | "account" | "settings"; -const clamp = (n: number, min: number, max: number) => Math.max(min, Math.min(max, n)); - const generateId = () => { if (typeof crypto !== "undefined" && "randomUUID" in crypto) return crypto.randomUUID(); return `sess_${Math.random().toString(16).slice(2, 10)}`; @@ -194,8 +193,8 @@ export function DocumentAiAgentPanel({ const p = (window.localStorage.getItem("doc_ai_provider") || "").trim(); const m = window.localStorage.getItem("doc_ai_model") || ""; const parsed = Number(stepsRaw); - if (Number.isFinite(parsed) && parsed >= 1) { - setMaxSteps(Math.max(1, Math.min(24, Math.floor(parsed)))); + if (Number.isFinite(parsed) && parsed >= MIN_AGENT_STEPS) { + setMaxSteps(clamp(Math.floor(parsed), MIN_AGENT_STEPS, MAX_AGENT_STEPS)); } if (p === "local" || p === "online") setAiProvider(p); if (typeof m === "string") setAiModel(m); @@ -270,7 +269,7 @@ export function DocumentAiAgentPanel({ // ignore } // 只在 documentId 变化时读取一次 - // eslint-disable-next-line react-hooks/exhaustive-deps + }, [documentId]); useEffect(() => { @@ -688,14 +687,14 @@ export function DocumentAiAgentPanel({ { const v = Number(e.target.value); if (!Number.isFinite(v)) return; - setMaxSteps(Math.max(1, Math.min(24, Math.floor(v)))); + setMaxSteps(clamp(Math.floor(v), MIN_AGENT_STEPS, MAX_AGENT_STEPS)); }} disabled={loading} /> diff --git a/wolai-frontend/src/components/editor/blocknote-editor.tsx b/wolai-frontend/src/components/editor/blocknote-editor.tsx index 77f61d60..ce6025c9 100644 --- a/wolai-frontend/src/components/editor/blocknote-editor.tsx +++ b/wolai-frontend/src/components/editor/blocknote-editor.tsx @@ -23,11 +23,12 @@ import { CustomSideMenu } from "./menus/CustomSideMenu"; import { CustomSlashMenu } from "./menus/CustomSlashMenu"; import { MoveEmbedPickerHost } from "@/components/documents/move-embed-picker-host"; import { useDebouncedCallback } from "@/hooks/use-debounced-callback"; -import { DocumentToc, type TocEntry } from "@/components/editor/document-toc"; +import { DocumentToc, type TocEntry } from "@/components/editor/document-toc"; import { useSearchPaletteStore } from "@/store/search-palette"; import { useEditorBridgeStore } from "@/store/editor-bridge"; import type { ReferenceTarget } from "@/types/search"; import FullScreenTableEditor from "@/components/online-table/FullScreenTableEditor"; +import { clamp, MIN_BLOCK_LEVEL, MAX_BLOCK_LEVEL } from "@/lib/constants"; import { ASSETS_CHANGED_EVENT, emitAssetsChanged } from "@/lib/events"; interface BlockNoteEditorProps { @@ -64,7 +65,7 @@ const buildHeadingToc = (blocks: Block[]): TocEntry[] => { const walk = (targetBlocks: Block[]) => { targetBlocks.forEach((block) => { if (block.type === "heading") { - const level = Math.min(5, Math.max(1, Number(block.props.level) || 1)); + const level = clamp(Number(block.props.level) || 1, MIN_BLOCK_LEVEL, MAX_BLOCK_LEVEL); counters[level - 1] += 1; for (let i = level; i < counters.length; i += 1) { counters[i] = 0; diff --git a/wolai-frontend/src/components/editor/blocks/MediaBlock.tsx b/wolai-frontend/src/components/editor/blocks/MediaBlock.tsx index b27f9c33..a090c260 100644 --- a/wolai-frontend/src/components/editor/blocks/MediaBlock.tsx +++ b/wolai-frontend/src/components/editor/blocks/MediaBlock.tsx @@ -656,9 +656,6 @@ const MediaBlockContent = ({ block, editor }: any) => { > 查看原文件 - {assetType === "file" && isOfficeDoc && ( - void openWithOnlyOffice()}>使用 ONLYOFFICE 打开 - )} { void downloadAsset(); diff --git a/wolai-frontend/src/components/editor/blocks/MindmapAiAgentPanel.tsx b/wolai-frontend/src/components/editor/blocks/MindmapAiAgentPanel.tsx index 551fe2b5..5fd68c6b 100644 --- a/wolai-frontend/src/components/editor/blocks/MindmapAiAgentPanel.tsx +++ b/wolai-frontend/src/components/editor/blocks/MindmapAiAgentPanel.tsx @@ -273,7 +273,7 @@ export function MindmapAiAgentPanel({ } catch { // ignore } - // eslint-disable-next-line react-hooks/exhaustive-deps + }, [mindmapId]); useEffect(() => { diff --git a/wolai-frontend/src/components/editor/blocks/MindmapBlock.tsx b/wolai-frontend/src/components/editor/blocks/MindmapBlock.tsx index d854e307..812fb1e9 100644 --- a/wolai-frontend/src/components/editor/blocks/MindmapBlock.tsx +++ b/wolai-frontend/src/components/editor/blocks/MindmapBlock.tsx @@ -2502,8 +2502,8 @@ const MindmapBlockView = ({ const handleImageConfirm = async () => { const url = imageUrl.trim(); // 获取原始图片尺寸,如果没有则使用默认值 - let width = Number(imageWidth) || 0; - let height = Number(imageHeight) || 0; + const width = Number(imageWidth) || 0; + const height = Number(imageHeight) || 0; if (!url) { window.alert("请输入图片链接"); diff --git a/wolai-frontend/src/components/editor/document-content.tsx b/wolai-frontend/src/components/editor/document-content.tsx index c03e8c01..b345c898 100644 --- a/wolai-frontend/src/components/editor/document-content.tsx +++ b/wolai-frontend/src/components/editor/document-content.tsx @@ -14,6 +14,7 @@ import { useDebouncedCallback } from "@/hooks/use-debounced-callback"; import { ImagePickerProvider } from "@/components/media/image-picker-context"; import { useRouter } from "next/navigation"; import { DocumentAiAgentPanel } from "./DocumentAiAgentPanel"; +import { CONTENT_LOADING_DELAY_MS } from "@/lib/constants"; const BlockNoteEditor = dynamic( () => import("@/components/editor/blocknote-editor").then((mod) => mod.BlockNoteEditor), @@ -96,7 +97,7 @@ export function DocumentContent({ } }, [documentId, editorBridge, openTableId, router]); - /* eslint-disable react-hooks/set-state-in-effect */ + useEffect(() => { setPageTitle(title ?? "无标题"); }, [title]); @@ -108,7 +109,7 @@ export function DocumentContent({ useEffect(() => { setStats(initialStats ?? defaultStats); }, [initialStats]); - /* eslint-enable react-hooks/set-state-in-effect */ + useEffect(() => { let canceled = false; @@ -128,12 +129,12 @@ export function DocumentContent({ clearTimeout(contentLoadingTimerRef.current); contentLoadingTimerRef.current = null; } - // 避免“秒闪”的加载提示:只有当加载超过短阈值时才显示提示 + // 避免"秒闪"的加载提示:只有当加载超过短阈值时才显示提示 contentLoadingTimerRef.current = setTimeout(() => { if (!canceled) { setShowContentLoadingIndicator(true); } - }, 200); + }, CONTENT_LOADING_DELAY_MS); try { const response = await fetch(`/api/documents/content?documentId=${encodeURIComponent(documentId)}`, { diff --git a/wolai-frontend/src/components/online-table/FullScreenTableEditor.tsx b/wolai-frontend/src/components/online-table/FullScreenTableEditor.tsx index 7a7501c0..a4d4d913 100644 --- a/wolai-frontend/src/components/online-table/FullScreenTableEditor.tsx +++ b/wolai-frontend/src/components/online-table/FullScreenTableEditor.tsx @@ -503,7 +503,7 @@ const FullScreenTableEditor: React.FC = ({ tableId, }; if (process.env.NODE_ENV !== "production") { - // eslint-disable-next-line no-console + console.log("[FullScreenTableEditor] init luckysheet", { tableId, sheets: options.data }); } try { diff --git a/wolai-frontend/src/components/onlyoffice/OnlyOfficeAiAgentPanel.tsx b/wolai-frontend/src/components/onlyoffice/OnlyOfficeAiAgentPanel.tsx index 655dc5fd..400bd603 100644 --- a/wolai-frontend/src/components/onlyoffice/OnlyOfficeAiAgentPanel.tsx +++ b/wolai-frontend/src/components/onlyoffice/OnlyOfficeAiAgentPanel.tsx @@ -5,6 +5,7 @@ import { Bot, Settings, Wrench, X } from "lucide-react"; import { Button } from "@/components/ui/button"; import { ScrollArea } from "@/components/ui/scroll-area"; import { Textarea } from "@/components/ui/textarea"; +import { clamp } from "@/lib/constants"; type AgentMessage = { role: "user" | "assistant"; content: string }; @@ -35,8 +36,6 @@ const ONLINE_MODELS = [ "gemini-3-flash-preview", ] as const; -const clamp = (n: number, min: number, max: number) => Math.max(min, Math.min(max, n)); - const isRecord = (v: unknown): v is Record => typeof v === "object" && v !== null && !Array.isArray(v); diff --git a/wolai-frontend/src/components/sidebar/sidebar.tsx b/wolai-frontend/src/components/sidebar/sidebar.tsx index a6e3fa55..b8065a88 100644 --- a/wolai-frontend/src/components/sidebar/sidebar.tsx +++ b/wolai-frontend/src/components/sidebar/sidebar.tsx @@ -3,6 +3,7 @@ import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react"; import Link from "next/link"; import { useRouter, useSelectedLayoutSegments } from "next/navigation"; +import { useAuthActions } from "@convex-dev/auth/react"; import { ArrowRightLeft, ArrowUpRight, @@ -15,6 +16,7 @@ import { LayoutGrid, Library, Link as LinkIcon, + LogOut, MoreHorizontal, PanelRightOpen, Plus, @@ -178,6 +180,7 @@ function SidebarContent({ initialData, sidebarQuery }: SidebarContentProps) { const isLoading = sidebarQuery.isLoading; const segments = useSelectedLayoutSegments(); const router = useRouter(); + const { signOut } = useAuthActions(); const activeId = segments?.[1] ?? ""; const editorBridge = useEditorBridgeStore((state) => state.bridge); @@ -186,6 +189,7 @@ function SidebarContent({ initialData, sidebarQuery }: SidebarContentProps) { const [expanded, setExpanded] = useState>(() => collectNodeIds(tree)); const [contextMenu, setContextMenu] = useState(null); const [workspaceMenuOpen, setWorkspaceMenuOpen] = useState(false); + const [signingOut, setSigningOut] = useState(false); const [trashOpen, setTrashOpen] = useState(false); const [trashSearch, setTrashSearch] = useState(""); const [trashTab, setTrashTab] = useState<"documents" | "assets">("documents"); @@ -1729,6 +1733,26 @@ function SidebarContent({ initialData, sidebarQuery }: SidebarContentProps) { [sidebarData.activeWorkspaceId, sidebarQuery], ); + const handleSignOut = useCallback(async () => { + if (signingOut) { + return; + } + if (!window.confirm("确认退出登录吗?")) { + return; + } + setSigningOut(true); + try { + await signOut(); + setWorkspaceMenuOpen(false); + router.replace("/auth"); + router.refresh(); + } catch (error: any) { + window.alert(`退出登录失败:${error?.message ?? "请稍后再试"}`); + } finally { + setSigningOut(false); + } + }, [router, signOut, signingOut]); + const openContextMenu = useCallback((event: React.MouseEvent, node: DocumentNode) => { event.preventDefault(); event.stopPropagation(); @@ -1826,6 +1850,17 @@ function SidebarContent({ initialData, sidebarQuery }: SidebarContentProps) { )} ))} +
+ +
)}
diff --git a/wolai-frontend/src/hooks/use-convex-sidebar-data.ts b/wolai-frontend/src/hooks/use-convex-sidebar-data.ts index ee69510b..5ed53b65 100644 --- a/wolai-frontend/src/hooks/use-convex-sidebar-data.ts +++ b/wolai-frontend/src/hooks/use-convex-sidebar-data.ts @@ -3,6 +3,7 @@ import { useQuery, useConvexAuth } from "convex/react"; import type { SidebarInitialData } from "@/components/sidebar/types"; import type { MediaAsset } from "@/types/media"; import { api } from "@/lib/convex/api"; +import { toBrowserAccessibleUrl } from "@/lib/url/browser-file-url"; /** * Convex 模式下的侧边栏数据 hook @@ -61,6 +62,12 @@ export function useConvexSidebarData(workspaceId: string): { shouldFetch ? undefined : "skip" ); + const normalizeAssetUrls = (asset: MediaAsset): MediaAsset => { + const fileUrl = toBrowserAccessibleUrl(asset.file_url) ?? asset.file_url; + const thumbUrl = toBrowserAccessibleUrl(asset.thumbnail_url) ?? asset.thumbnail_url; + return { ...asset, file_url: fileUrl, thumbnail_url: thumbUrl }; + }; + // 组合数据,格式与 SidebarInitialData 一致 const data: SidebarInitialData | null = useMemo(() => { // 当 skip 时,返回值是 undefined @@ -135,13 +142,13 @@ export function useConvexSidebarData(workspaceId: string): { workspaces: workspacesResult.workspaces, documents, trashedDocuments, - trashedMediaAssets: (trashedMediaAssets ?? []) as MediaAsset[], + trashedMediaAssets: ((trashedMediaAssets ?? []) as MediaAsset[]).map(normalizeAssetUrls), trashedMindmapAssets, mindmapDocs, mindmapAssets, mindmapAssetChildren: {}, tableAssets: [], - mediaAssets: (mediaAssets ?? []) as MediaAsset[], + mediaAssets: ((mediaAssets ?? []) as MediaAsset[]).map(normalizeAssetUrls), }; }, [ currentUser, diff --git a/wolai-frontend/src/lib/ai/openaiCompatibleChat.ts b/wolai-frontend/src/lib/ai/openaiCompatibleChat.ts index c0c7bca4..4b0fc08f 100644 --- a/wolai-frontend/src/lib/ai/openaiCompatibleChat.ts +++ b/wolai-frontend/src/lib/ai/openaiCompatibleChat.ts @@ -1,3 +1,11 @@ +import { + MIN_API_TIMEOUT_MS, + MAX_API_TIMEOUT_MS, + DEFAULT_API_TIMEOUT_MS, + MIN_COMPLETION_TOKENS, + MAX_COMPLETION_TOKENS, +} from "@/lib/constants"; + export type OpenAiCompatibleChatMessage = { role: "system" | "user" | "assistant"; content: string; @@ -34,18 +42,18 @@ export const openAiCompatibleChat = async ( messages: OpenAiCompatibleChatMessage[], opts: OpenAiCompatibleChatOptions, ): Promise<{ text: string; raw: unknown }> => { - const timeoutMs = Math.max(500, Math.min(120_000, opts.timeoutMs ?? 20_000)); + const timeoutMs = Math.max(MIN_API_TIMEOUT_MS, Math.min(MAX_API_TIMEOUT_MS, opts.timeoutMs ?? DEFAULT_API_TIMEOUT_MS)); const controller = new AbortController(); const t = setTimeout(() => controller.abort(), timeoutMs); try { const url = `${opts.baseUrl.replace(/\/+$/, "")}/chat/completions`; const maxCompletionTokens = typeof opts.maxCompletionTokens === "number" && Number.isFinite(opts.maxCompletionTokens) - ? Math.max(64, Math.min(16_000, Math.floor(opts.maxCompletionTokens))) + ? Math.max(MIN_COMPLETION_TOKENS, Math.min(MAX_COMPLETION_TOKENS, Math.floor(opts.maxCompletionTokens))) : undefined; const maxTokens = typeof opts.maxTokens === "number" && Number.isFinite(opts.maxTokens) - ? Math.max(64, Math.min(16_000, Math.floor(opts.maxTokens))) + ? Math.max(MIN_COMPLETION_TOKENS, Math.min(MAX_COMPLETION_TOKENS, Math.floor(opts.maxTokens))) : undefined; const res = await fetch(url, { method: "POST", diff --git a/wolai-frontend/src/lib/api-utils.ts b/wolai-frontend/src/lib/api-utils.ts new file mode 100644 index 00000000..41440da3 --- /dev/null +++ b/wolai-frontend/src/lib/api-utils.ts @@ -0,0 +1,161 @@ +/** + * API 工具函数 + * 提供统一的错误处理和响应解析 + */ + +import { NextResponse } from "next/server"; + +/** + * API 错误类 + */ +export class ApiError extends Error { + constructor( + message: string, + public status: number, + public details?: unknown, + ) { + super(message); + this.name = "ApiError"; + } +} + +/** + * 统一的 API 错误响应格式 + */ +export interface ApiErrorResponse { + error: string; + details?: unknown; +} + +/** + * 创建 API 错误响应 + * @param message 错误消息 + * @param status HTTP 状态码 + * @param details 额外的错误详情 + * @returns NextResponse + */ +export function apiErrorResponse( + message: string, + status = 500, + details?: unknown, +): NextResponse { + const payload: ApiErrorResponse = + typeof details === "undefined" ? { error: message } : { error: message, details }; + return NextResponse.json(payload, { status }); +} + +/** + * 常用错误响应的快捷方法 + */ +export const errorResponses = { + /** 400 - 请求参数错误 */ + badRequest: (message: string = "请求参数错误") => apiErrorResponse(message, 400), + + /** 401 - 未登录 */ + unauthorized: (message: string = "未登录") => apiErrorResponse(message, 401), + + /** 403 - 无权限 */ + forbidden: (message: string = "无权限访问") => apiErrorResponse(message, 403), + + /** 404 - 资源不存在 */ + notFound: (message: string = "资源不存在") => apiErrorResponse(message, 404), + + /** 500 - 服务器错误 */ + internalError: (message: string = "服务器错误") => apiErrorResponse(message, 500), + + /** AI 配置错误 */ + aiConfigError: (provider: "online" | "local") => + apiErrorResponse( + provider === "local" + ? "未找到本地 AI 配置(LOCAL_AI_BASE_URL/LOCAL_AI_MODEL 或 ai.local.md / ai-local.md)" + : "未找到在线 AI 配置(ai.md 或 ONLINE_AI_* 环境变量)", + 500, + ), +} as const; + +/** + * 处理 fetch 响应并解析 JSON + * 如果响应不成功,抛出 ApiError + * @param response Fetch Response 对象 + * @param defaultErrorMessage 默认错误消息 + * @returns 解析后的 JSON 数据 + */ +export async function handleApiResponse( + response: Response, + defaultErrorMessage: string = "请求失败", +): Promise { + if (!response.ok) { + let message = defaultErrorMessage; + let details: unknown; + + try { + const payload = await response.json(); + if (payload && typeof payload === "object") { + if ("error" in payload && typeof payload.error === "string") { + message = payload.error; + } + if ("details" in payload) { + details = payload.details; + } + } + } catch { + // JSON 解析失败,使用默认消息 + } + + throw new ApiError(message, response.status, details); + } + + return response.json() as Promise; +} + +/** + * 安全地解析 JSON,失败时返回 null + * @param raw JSON 字符串 + * @returns 解析后的对象或 null + */ +export function safeParseJson(raw: string | null | undefined): T | null { + if (!raw) return null; + try { + return JSON.parse(raw) as T; + } catch { + return null; + } +} + +/** + * 验证请求体是否包含必需字段 + * @param body 请求体对象 + * @param requiredFields 必需字段列表 + * @returns 如果验证失败,返回错误响应;否则返回 null + */ +export function validateRequestBody>( + body: T | null, + requiredFields: (keyof T)[], +): NextResponse | null { + if (!body) { + return apiErrorResponse("请求体为空", 400); + } + + for (const field of requiredFields) { + if (!(field in body) || body[field] === null || body[field] === undefined) { + return apiErrorResponse(`缺少必需字段: ${String(field)}`, 400); + } + } + + return null; +} + +/** + * 从请求中安全地获取 JSON + * @param request Next.js Request 对象 + * @returns 解析后的 JSON 或 null + */ +export async function safeGetJsonBody( + request: Request, +): Promise { + try { + return (await request.json()) as T; + } catch { + return null; + } +} diff --git a/wolai-frontend/src/lib/constants.ts b/wolai-frontend/src/lib/constants.ts new file mode 100644 index 00000000..c797721d --- /dev/null +++ b/wolai-frontend/src/lib/constants.ts @@ -0,0 +1,127 @@ +/** + * 全局常量定义 + * 集中管理项目中的魔法数字和硬编码值 + */ + +// ============================================ +// AI Agent 相关常量 +// ============================================ + +/** AI Agent 默认最大步数 */ +export const DEFAULT_AGENT_MAX_STEPS = 10; + +/** AI Agent 最大步数限制 */ +export const MAX_AGENT_STEPS = 24; + +/** AI Agent 最小步数 */ +export const MIN_AGENT_STEPS = 1; + +/** 客户端工具默认超时时间(毫秒) */ +export const DEFAULT_CLIENT_TOOL_TIMEOUT_MS = 60_000; + +// ============================================ +// 网络请求相关常量 +// ============================================ + +/** OpenAI 兼容 API 最小超时(毫秒) */ +export const MIN_API_TIMEOUT_MS = 500; + +/** OpenAI 兼容 API 默认超时(毫秒) */ +export const DEFAULT_API_TIMEOUT_MS = 20_000; + +/** OpenAI 兼容 API 最大超时(毫秒) */ +export const MAX_API_TIMEOUT_MS = 120_000; + +/** OpenAI 最小输出 token 数 */ +export const MIN_COMPLETION_TOKENS = 64; + +/** OpenAI 最大输出 token 数 */ +export const MAX_COMPLETION_TOKENS = 16_000; + +// ============================================ +// 编辑器相关常量 +// ============================================ + +/** 内容加载延迟时间(毫秒) */ +export const CONTENT_LOADING_DELAY_MS = 200; + +/** 编辑器块标题最小级别 */ +export const MIN_BLOCK_LEVEL = 1; + +/** 编辑器块标题最大级别 */ +export const MAX_BLOCK_LEVEL = 5; + +/** 零延迟 setTimeout(用于将任务推入事件循环) */ +export const ZERO_DELAY_MS = 0; + +// ============================================ +// 思维导图相关常量 +// ============================================ + +/** 思维导图最大附件数量 */ +export const MAX_MINDMAP_ATTACHMENTS = 12; + +/** 思维导图最大选中节点数 */ +export const MAX_SELECTED_NODES = 6; + +// ============================================ +// RAG 搜索相关常量 +// ============================================ + +/** RAG 默认搜索结果数量 */ +export const DEFAULT_RAG_TOP_K = 12; + +/** RAG 默认 chunk 结果数量 */ +export const DEFAULT_RAG_CHUNK_TOP_K = 12; + +/** 文档搜索默认结果数量 */ +export const DEFAULT_DOCS_SEARCH_LIMIT = 12; + +/** 文档读取默认最大字符数 */ +export const DEFAULT_DOCS_READ_MAX_CHARS = 2500; + +/** 文档获取默认最大块数 */ +export const DEFAULT_DOC_GET_MAX_BLOCKS = 80; + +/** 文档查找默认最大结果数 */ +export const DEFAULT_DOC_FIND_MAX_RESULTS = 8; + +// ============================================ +// 资产/附件相关常量 +// ============================================ + +/** 思维导图从资产转换最大项目数 */ +export const DEFAULT_ASSET_TO_MINDMAP_MAX_ITEMS = 120; + +/** 搜索默认结果数量 */ +export const DEFAULT_SEARCH_COUNT = 6; + +// ============================================ +// UI 相关常量 +// ============================================ + +/** 表格嵌入预览最小高度(像素) */ +export const MIN_EMBED_HEIGHT = 120; + +/** 表格嵌入预览最大高度(像素) */ +export const MAX_EMBED_HEIGHT = 600; + +/** 表格嵌入预览默认高度(像素) */ +export const DEFAULT_EMBED_HEIGHT = 300; + +/** 上下文菜单距离窗口边缘的最小内边距(像素) */ +export const CONTEXT_MENU_PADDING = 12; + +// ============================================ +// 工具函数 +// ============================================ + +/** + * 将数值限制在指定范围内 + * @param n 输入值 + * @param min 最小值 + * @param max 最大值 + * @returns 限制后的值 + */ +export const clamp = (n: number, min: number, max: number): number => + Math.max(min, Math.min(max, n)); diff --git a/wolai-frontend/src/lib/documents.test.ts b/wolai-frontend/src/lib/documents.test.ts new file mode 100644 index 00000000..e63f6fae --- /dev/null +++ b/wolai-frontend/src/lib/documents.test.ts @@ -0,0 +1,130 @@ +import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import { buildDocumentTree, type DocumentRecord } from "./documents"; + +type TreeLike = { id: string; children: TreeLike[] }; + +function collectIds(nodes: TreeLike[]): string[] { + const ids: string[] = []; + const walk = (list: TreeLike[]) => { + list.forEach((node) => { + ids.push(node.id); + if (node.children.length > 0) { + walk(node.children); + } + }); + }; + walk(nodes); + return ids; +} + +describe("buildDocumentTree", () => { + let warnSpy: ReturnType | null = null; + + beforeEach(() => { + warnSpy = vi.spyOn(console, "warn").mockImplementation(() => undefined); + }); + + afterEach(() => { + warnSpy?.mockRestore(); + warnSpy = null; + }); + + it("应当去重重复的记录 id(根节点)", () => { + const base: DocumentRecord = { + access_scope: "private", + id: "doc-1", + workspace_id: "ws-1", + title: "A", + parent_id: null, + sort_order: null, + is_starred: null, + is_template: false, + created_at: "2025-01-01T00:00:00.000Z", + updated_at: null, + }; + + const tree = buildDocumentTree([base, { ...base, title: "B" }]); + expect(tree).toHaveLength(1); + expect(tree[0].id).toBe("doc-1"); + expect(tree[0].title).toBe("B"); + }); + + it("应当去重重复的记录 id(子节点)", () => { + const parent: DocumentRecord = { + access_scope: "private", + id: "doc-p", + workspace_id: "ws-1", + title: "P", + parent_id: null, + sort_order: null, + is_starred: null, + is_template: false, + created_at: "2025-01-01T00:00:00.000Z", + updated_at: null, + }; + const child: DocumentRecord = { + access_scope: "private", + id: "doc-c", + workspace_id: "ws-1", + title: "C", + parent_id: "doc-p", + sort_order: null, + is_starred: null, + is_template: false, + created_at: "2025-01-01T00:00:01.000Z", + updated_at: null, + }; + + const tree = buildDocumentTree([parent, child, { ...child, title: "C2" }]); + expect(tree).toHaveLength(1); + expect(tree[0].children).toHaveLength(1); + expect(tree[0].children[0].id).toBe("doc-c"); + expect(tree[0].children[0].title).toBe("C2"); + }); + + it("生成的树中不应出现重复 id", () => { + const records: DocumentRecord[] = [ + { + access_scope: "private", + id: "a", + workspace_id: "ws-1", + title: "A", + parent_id: null, + sort_order: null, + is_starred: null, + is_template: false, + created_at: "2025-01-01T00:00:00.000Z", + updated_at: null, + }, + { + access_scope: "private", + id: "b", + workspace_id: "ws-1", + title: "B", + parent_id: "a", + sort_order: null, + is_starred: null, + is_template: false, + created_at: "2025-01-01T00:00:01.000Z", + updated_at: null, + }, + { + access_scope: "private", + id: "b", + workspace_id: "ws-1", + title: "B2", + parent_id: "a", + sort_order: null, + is_starred: null, + is_template: false, + created_at: "2025-01-01T00:00:01.000Z", + updated_at: "2025-01-01T00:00:02.000Z", + }, + ]; + + const tree = buildDocumentTree(records); + const ids = collectIds(tree); + const unique = new Set(ids); + expect(unique.size).toBe(ids.length); + }); +}); diff --git a/wolai-frontend/src/lib/documents.ts b/wolai-frontend/src/lib/documents.ts index dc17c74a..c2bcf74d 100644 --- a/wolai-frontend/src/lib/documents.ts +++ b/wolai-frontend/src/lib/documents.ts @@ -16,13 +16,36 @@ export interface DocumentNode extends DocumentRecord { } export function buildDocumentTree(records: DocumentRecord[]): DocumentNode[] { + // 防御性处理:当上游数据意外包含重复 id 时,避免生成重复节点导致渲染 key 冲突。 + // 以“最后一次出现”为准(与原先 nodeMap.set 的覆盖行为保持一致)。 + const seen = new Set(); + const duplicatedIds = new Set(); + const uniqueRecords: DocumentRecord[] = []; + for (let i = records.length - 1; i >= 0; i--) { + const record = records[i]; + if (seen.has(record.id)) { + duplicatedIds.add(record.id); + continue; + } + seen.add(record.id); + uniqueRecords.push(record); + } + uniqueRecords.reverse(); + + if (duplicatedIds.size > 0 && process.env.NODE_ENV !== "production") { + // eslint-disable-next-line no-console + console.warn( + `[buildDocumentTree] 检测到重复文档 id(已自动去重):${Array.from(duplicatedIds).slice(0, 10).join(", ")}${duplicatedIds.size > 10 ? "…" : ""}`, + ); + } + const nodeMap = new Map(); - records.forEach((record) => { + uniqueRecords.forEach((record) => { nodeMap.set(record.id, { ...record, children: [] }); }); const roots: DocumentNode[] = []; - records.forEach((record) => { + uniqueRecords.forEach((record) => { const node = nodeMap.get(record.id); if (!node) return; if (record.parent_id && nodeMap.has(record.parent_id)) { diff --git a/wolai-frontend/src/lib/file-tree/rows.test.ts b/wolai-frontend/src/lib/file-tree/rows.test.ts index f20af1ca..4fdd0b8c 100644 --- a/wolai-frontend/src/lib/file-tree/rows.test.ts +++ b/wolai-frontend/src/lib/file-tree/rows.test.ts @@ -91,6 +91,31 @@ describe("buildVisibleRows", () => { expect(new Set(rows.map((r) => r.rowId)).size).toBe(rows.length); }); + + it("输入树包含重复 docId 时应自动去重", () => { + const a = { + access_scope: "private" as const, + id: "a", + workspace_id: "w", + title: "A", + parent_id: null, + sort_order: 0, + is_starred: null, + is_template: false, + created_at: "", + updated_at: null, + children: [], + }; + + const rows = buildVisibleRows({ + nodes: [a, a], + expanded: new Set(["a"]), + assetsByDoc: {}, + }); + + expect(rows.filter((r) => r.rowId === "doc:a").length).toBe(1); + expect(new Set(rows.map((r) => r.rowId)).size).toBe(rows.length); + }); }); describe("parseFileTreeRowId", () => { @@ -102,4 +127,3 @@ describe("parseFileTreeRowId", () => { expect(parseFileTreeRowId("doc:")).toBeNull(); }); }); - diff --git a/wolai-frontend/src/lib/file-tree/rows.ts b/wolai-frontend/src/lib/file-tree/rows.ts index 7a7c4b7b..c18c7492 100644 --- a/wolai-frontend/src/lib/file-tree/rows.ts +++ b/wolai-frontend/src/lib/file-tree/rows.ts @@ -19,8 +19,14 @@ export function buildVisibleRows({ expandedAssetFolderIds?: Set; }): FileTreeRow[] { const rows: FileTreeRow[] = []; + const visitedDocIds = new Set(); const walk = (node: DocumentNode, depth: number) => { + // 防御性处理:上游数据异常时(例如同一 docId 在树中重复出现),避免生成重复 rowId 导致 React key 冲突。 + // 同时也能避免潜在的“循环引用/重复引用”导致的递归问题。 + if (visitedDocIds.has(node.id)) return; + visitedDocIds.add(node.id); + const assets = assetsByDoc[node.id] ?? []; const hasChildren = node.children.length > 0 || assets.length > 0; const isExpanded = expanded.has(node.id); diff --git a/wolai-frontend/src/lib/runtime-config.ts b/wolai-frontend/src/lib/runtime-config.ts index d628e0fb..d66a2ff4 100644 --- a/wolai-frontend/src/lib/runtime-config.ts +++ b/wolai-frontend/src/lib/runtime-config.ts @@ -62,9 +62,9 @@ const readFromPublicJson = (): Partial => { // 说明:桌面端与网页端共用 public/mnote-env.json 作为“公共环境文件”。 // 桌面端运行时 process.cwd() 会被 Electron 切到 desktop-next 根目录。 // 网页端运行时 process.cwd() 通常为 wolai-frontend。 - // eslint-disable-next-line @typescript-eslint/no-var-requires + const fs = require("fs") as typeof import("fs"); - // eslint-disable-next-line @typescript-eslint/no-var-requires + const path = require("path") as typeof import("path"); // 说明:Next standalone 产物的 server.js 会执行 `process.chdir(__dirname)`, diff --git a/wolai-frontend/src/lib/type-guards.ts b/wolai-frontend/src/lib/type-guards.ts new file mode 100644 index 00000000..e3ccf0ce --- /dev/null +++ b/wolai-frontend/src/lib/type-guards.ts @@ -0,0 +1,187 @@ +/** + * 类型守卫和类型断言工具 + * 用于替代 `any` 类型,提供更安全的类型检查 + */ + +/** + * 检查值是否为普通对象(非 null、非数组) + */ +export function isPlainObject(value: unknown): value is Record { + return typeof value === "object" && value !== null && !Array.isArray(value); +} + +/** + * 检查值是否为字符串 + */ +export function isString(value: unknown): value is string { + return typeof value === "string"; +} + +/** + * 检查值是否为数字(有限) + */ +export function isFiniteNumber(value: unknown): value is number { + return typeof value === "number" && Number.isFinite(value); +} + +/** + * 检查值是否为数组 + */ +export function isArray(value: unknown, itemGuard?: (item: unknown) => item is T): value is T[] { + if (!Array.isArray(value)) return false; + if (itemGuard) { + return value.every(itemGuard); + } + return true; +} + +/** + * 检查对象是否包含指定的属性 + */ +export function hasProperty( + obj: unknown, + key: K, +): obj is Record { + return isPlainObject(obj) && key in obj; +} + +/** + * 检查对象是否包含多个指定的属性 + */ +export function hasProperties( + obj: unknown, + keys: K[], +): obj is Record { + if (!isPlainObject(obj)) return false; + return keys.every(key => key in obj); +} + +/** + * 从对象中安全地提取字符串属性 + */ +export function getStringProperty(obj: unknown, key: string, defaultValue: string = ""): string { + if (!isPlainObject(obj)) return defaultValue; + const value = obj[key]; + return isString(value) ? value : defaultValue; +} + +/** + * 从对象中安全地提取数字属性 + */ +export function getNumberProperty(obj: unknown, key: string, defaultValue: number = 0): number { + if (!isPlainObject(obj)) return defaultValue; + const value = obj[key]; + return isFiniteNumber(value) ? value : defaultValue; +} + +/** + * 从对象中安全地提取布尔属性 + */ +export function getBooleanProperty(obj: unknown, key: string, defaultValue: boolean = false): boolean { + if (!isPlainObject(obj)) return defaultValue; + const value = obj[key]; + return typeof value === "boolean" ? value : defaultValue; +} + +/** + * 从对象中安全地提取数组属性 + */ +export function getArrayProperty( + obj: unknown, + key: string, + defaultValue: T[] = [], +): T[] { + if (!isPlainObject(obj)) return defaultValue; + const value = obj[key]; + return Array.isArray(value) ? value as T[] : defaultValue; +} + +/** + * 检查是否为 Supabase 行对象(包含 id 属性) + */ +export function isDatabaseRow(value: unknown): value is { id: string | number; [key: string]: unknown } { + return isPlainObject(value) && ("id" in value); +} + +/** + * 检查是否为 Supabase 行数组 + */ +export function isDatabaseRowArray(value: unknown): value is Array<{ id: string | number; [key: string]: unknown }> { + return isArray(value) && value.every(isDatabaseRow); +} + +/** + * 类型断言:确保值不为 null/undefined + */ +export function assertNotNullOrUndefined(value: T | null | undefined, message?: string): T { + if (value === null || value === undefined) { + throw new Error(message ?? "值不能为 null 或 undefined"); + } + return value; +} + +/** + * 将 unknown 转换为 Record,如果类型不匹配则返回空对象 + */ +export function toRecord(value: unknown): Record { + return isPlainObject(value) ? value : {}; +} + +/** + * 安全地访问嵌套对象属性 + * @example getNestedValue(obj, 'a.b.c') === obj?.a?.b?.c + */ +export function getNestedValue( + obj: unknown, + path: string, + defaultValue?: T, +): T | undefined { + const keys = path.split("."); + let current: unknown = obj; + + for (const key of keys) { + if (!isPlainObject(current)) { + return defaultValue; + } + current = current[key]; + } + + return current as T ?? defaultValue; +} + +/** + * 检查响应是否为错误响应 + */ +export function isErrorResponse(value: unknown): value is { error: string; details?: unknown } { + return isPlainObject(value) && isString(value.error); +} + +/** + * 从 unknown 类型中提取工具参数 + * 用于 AI agent 工具调用时的类型安全 + */ +export function getToolArgs(args: unknown): Record { + if (isPlainObject(args)) { + return args; + } + // 如果是数组或其他类型,返回空对象 + return {}; +} + +/** + * 检查是否为 AI Agent 消息 + */ +export function isAgentMessage(value: unknown): value is { role: "user" | "assistant"; content: string } { + return ( + isPlainObject(value) && + (value.role === "user" || value.role === "assistant") && + isString(value.content) + ); +} + +/** + * 检查是否为 AI Agent 消息数组 + */ +export function isAgentMessageArray(value: unknown): value is Array<{ role: "user" | "assistant"; content: string }> { + return isArray(value) && value.every(isAgentMessage); +} diff --git a/wolai-frontend/src/lib/url/browser-file-url.ts b/wolai-frontend/src/lib/url/browser-file-url.ts new file mode 100644 index 00000000..06f458d6 --- /dev/null +++ b/wolai-frontend/src/lib/url/browser-file-url.ts @@ -0,0 +1,42 @@ +"use client"; + +const isLocalHostname = (hostname: string) => + hostname === "127.0.0.1" || hostname === "localhost" || hostname === "host.docker.internal"; + +const base64UrlEncodeUtf8 = (input: string) => { + const bytes = new TextEncoder().encode(input); + let binary = ""; + bytes.forEach((b) => { + binary += String.fromCharCode(b); + }); + const b64 = btoa(binary); + return b64.replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, ""); +}; + +/** + * 将“仅本机可达”的 URL(例如 http://127.0.0.1:3210/api/storage/...)转换为浏览器可访问的地址。 + * + * - 本地访问(页面本身是 localhost/127)时不改写 + * - 外网访问时,若目标是 localhost/127/host.docker.internal,则改为走 /api/onlyoffice/proxy 由 Next 服务端回源 + */ +export const toBrowserAccessibleUrl = (rawUrl: string | null | undefined): string | null => { + const input = String(rawUrl ?? "").trim(); + if (!input) return rawUrl ?? null; + if (typeof window === "undefined") return input; + + try { + if (input.startsWith("/api/onlyoffice/proxy")) return input; + const pageHost = window.location.hostname; + if (isLocalHostname(pageHost)) return input; + + const u = new URL(input); + if (!isLocalHostname(u.hostname)) return input; + + const proxy = new URL("/api/onlyoffice/proxy", window.location.origin); + proxy.searchParams.set("u", base64UrlEncodeUtf8(input)); + return proxy.toString(); + } catch { + return input; + } +}; + diff --git a/wolai-frontend/src/types/jsdom.d.ts b/wolai-frontend/src/types/jsdom.d.ts new file mode 100644 index 00000000..05df99c5 --- /dev/null +++ b/wolai-frontend/src/types/jsdom.d.ts @@ -0,0 +1,8 @@ +declare module "jsdom" { + export class JSDOM { + constructor(html?: string, options?: unknown); + // 说明:仅用于服务端导入时的最小类型声明(用于 window/document/DOMParser 等 DOM shim)。 + // 若需更完整的类型能力,可改为使用 jsdom 自带的类型定义。 + window: Window & typeof globalThis; + } +}