diff --git a/.eslintrc.js b/.eslintrc.js index 652e8cccc7..2b33b7a98d 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -9,7 +9,7 @@ module.exports = { 'plugin:react/recommended', 'plugin:react-hooks/recommended', 'plugin:@typescript-eslint/recommended', - 'plugin:markdown/recommended', + 'plugin:markdown/recommended-legacy', 'plugin:prettier/recommended', ], parser: '@typescript-eslint/parser', @@ -62,6 +62,7 @@ module.exports = { }, ], radix: 0, + 'no-alert': 0, 'unused-imports/no-unused-imports': 2, 'no-underscore-dangle': 0, 'no-useless-constructor': 0, diff --git a/.github/renovate.json b/.github/renovate.json index ccb5453219..f5369d5eef 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -3,6 +3,7 @@ "extends": [ "config:base", "schedule:weekly", "group:allNonMajor" ], + "rangeStrategy": "bump", "labels": ["dependencies"], "ignorePaths": [ "src/**", @@ -16,6 +17,8 @@ ], "ignoreDeps": [ "node", - "typescript" + "typescript", + "eslint-config-taro", + "babel-preset-taro" ] } diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7587496187..b16d801e86 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -52,7 +52,7 @@ jobs: - name: Upload coverage reports to Codecov if: ${{ always() }} - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/issue-close.yml b/.github/workflows/issue-close.yml new file mode 100644 index 0000000000..ad0cec2c6f --- /dev/null +++ b/.github/workflows/issue-close.yml @@ -0,0 +1,20 @@ +name: Close Issue + +on: + schedule: + - cron: "0 2 * * 1" + workflow_dispatch: # Allow for running this manually. + +jobs: + issue-to-be-closed: + if: github.repository == 'jdf2e/nutui-react' + runs-on: ubuntu-latest + steps: + - name: close-issues + uses: actions-cool/issues-helper@v3 + with: + actions: 'close-issues' + token: ${{ secrets.GITHUB_TOKEN }} + labels: 'to be closed' + inactive-day: 7 + close-reason: 'completed' diff --git a/.github/workflows/realease-tag.yml b/.github/workflows/realease-tag.yml new file mode 100644 index 0000000000..2eeb383b49 --- /dev/null +++ b/.github/workflows/realease-tag.yml @@ -0,0 +1,34 @@ +name: Create Release Tag + +on: + push: + tags: + - 'v*' + +jobs: + release-tag: + if: github.repository == 'jdf2e/nutui-react' + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Install pnpm + run: corepack enable + + - uses: actions/setup-node@v4 + with: + node-version: '18' + cache: 'pnpm' + + - name: Install dependencies + run: pnpm install + + - name: Generate Changlog + run: pnpm changelog + + - name: Create Release Tag + id: release_tag + uses: ncipollo/release-action@v1 + with: + bodyFile: '.github/changelog.md' \ No newline at end of file diff --git a/.github/workflows/sync-gitee.yml b/.github/workflows/sync-gitee.yml index 18e35eb317..6bea9b9638 100644 --- a/.github/workflows/sync-gitee.yml +++ b/.github/workflows/sync-gitee.yml @@ -1,11 +1,13 @@ name: Sync to Gitee on: - push: - branches: [next] + workflow_dispatch: + schedule: + - cron: '0 1 * * *' jobs: deploy-site-sync-gitee: + if: github.repository == 'jdf2e/nutui-react' runs-on: ubuntu-latest steps: - name: Sync to Gitee diff --git a/.github/workflows/sync-h5.yml b/.github/workflows/sync-h5.yml index 834908a136..4a0fee5bdf 100644 --- a/.github/workflows/sync-h5.yml +++ b/.github/workflows/sync-h5.yml @@ -11,13 +11,14 @@ on: jobs: copy: + if: github.repository == 'jdf2e/nutui-react' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npm i fs-extra --force - run: node scripts/copy-docs-h5-or-taro.js - name : Sync - uses : JamesIves/github-pages-deploy-action@4.1.7 + uses : JamesIves/github-pages-deploy-action@v4.5.0 with : branch : new-site # action 应该部署到的分支 。 folder : site_docs #操作应该部署的文件夹 。 diff --git a/.github/workflows/sync-migrate.yml b/.github/workflows/sync-migrate.yml index 08d2e44d55..12262fe14f 100644 --- a/.github/workflows/sync-migrate.yml +++ b/.github/workflows/sync-migrate.yml @@ -12,13 +12,14 @@ on: jobs: copy: + if: github.repository == 'jdf2e/nutui-react' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npm i fs-extra --force - run: node scripts/copy-migrate-from-v1.js - name : Sync - uses : JamesIves/github-pages-deploy-action@4.1.7 + uses : JamesIves/github-pages-deploy-action@v4.5.0 with : branch : new-site # action 应该部署到的分支 。 folder : site_docs_migrate #操作应该部署的文件夹 。 diff --git a/.github/workflows/sync-taro.yml b/.github/workflows/sync-taro.yml index c61f4dade8..78af9cad25 100644 --- a/.github/workflows/sync-taro.yml +++ b/.github/workflows/sync-taro.yml @@ -11,13 +11,14 @@ on: jobs: copy: + if: github.repository == 'jdf2e/nutui-react' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: npm i fs-extra --force - run: node scripts/copy-docs-h5-or-taro.js taro - name : Sync - uses : JamesIves/github-pages-deploy-action@4.1.7 + uses : JamesIves/github-pages-deploy-action@v4.5.0 with : branch : new-site # action 应该部署到的分支 。 folder : site_docs #操作应该部署的文件夹 。 diff --git a/.gitignore b/.gitignore index c807e35dc5..ad4f4dc734 100644 --- a/.gitignore +++ b/.gitignore @@ -41,4 +41,7 @@ pnpm-debug.log* *.ntvs* *.njsproj *.sln -*.sw? \ No newline at end of file +*.sw? + +# vitest +/html \ No newline at end of file diff --git a/.husky/pre-commit b/.husky/pre-commit index 002044f08d..892610a36f 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,5 +1,2 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" - node ./scripts/verifymail.js npx lint-staged diff --git a/.npmrc b/.npmrc index 08b2f83185..0580b35957 100644 --- a/.npmrc +++ b/.npmrc @@ -1,3 +1,3 @@ -registry=https://registry.npmmirror.com/ +registry=https://registry.npmjs.org/ engine-strict=true strict-peer-dependencies=false diff --git a/CHANGELOG.md b/CHANGELOG.md index 2a738d77e4..568f0c12d1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,319 @@ +# v2.5.1 +`2024-03-29` + + +*🏡 chore(deps): update dependency @types/testing-library__jest-dom to v6 (#2127) @renovate[bot] +* 📖 docs(readme): change npm to pnpm in the document (#2131) @JedediahXu +* :sparkles: feat(popover): rtl (#2121) @xiaoyatong +* :sparkles: feat(ellipsis): rtl (#2128) @irisSong +* :sparkles: feat(Form): rtl (#2120) @xiaoyatong +* :sparkles: feat(progress): Taro新增lazy属性 (#2108) @Alex-huxiyang +* :bug: fix(datepicker): 修复 datepicker 类型为hour-minutes/time时选中值无法回显的问题 (#2141) @yeyu98 +* :bug: fix(Toast): demo拆解与规范 (#2073) @OrdinarySF +* :bug: fix(calendar): demo拆解与规范 (#2137) @mikasayw +* :bug: fix(DatePicker): demo拆解与规范 (#2133) @yeyu98 +* :bug: fix(uploader): demo拆解与规范 (#2140) @irisSong +* :bug: fix(tabs): 修复 tab 过多时滚动定位不准确的问题 (#2135) @eiinu +* :bug: fix(range): demo拆解与规范 (#2139) @ShuchenEason +* :bug: fix(imagepreview): demo拆解与规范 (#2134) @Alex-huxiyang +* :bug: fix(textarea): demo拆解与规范 (#2132) @Amylee9712 +* :bug: fix(tour): demo拆解与规范 (#2130) @Alex-huxiyang +* :bug: fix(actionsheet): demo拆解与规范 (#2124) @ZissyW +* :bug: fix(icon): update taro demo (#2129) @eiinu +* :bug: fix(popup): demo拆解与规范 (#2122) @ZissyW +* :bug: fix(numberkeyboard): demo拆解与规范 (#2123) @ZissyW + + +# v2.5.0 +`2024-03-22` + + + +* :sparkles: feat(Popover): 新增单条数据的demo展示 (#2117) @xiaoyatong +* :sparkles: feat(progress): 支持taro的lazy属性 & demo拆解与规范 (#2086) @Alex-huxiyang +* :bug: fix(dialog): 关闭按钮默认在底部,24px白色图标 (#2118) @irisSong +* :bug: fix(noticebar): fix docs (#2119) @xiaoyatong +* :bug: fix(virtuallist): demo拆解与规范 (#2116) @eiinu +* :bug: fix: 修复address组件onChange参数透传问题 (#2110) @DreamSeeker321 +* :bug: fix(Icon): 小程序下展示异常问题修复 (#2114) @xiaoyatong +* :bug: fix(swiper): demo拆解与规范 (#2115) @Alex-huxiyang +* :bug: fix(audio): demo拆解与规范 (#2111) @Alex-huxiyang +* :bug: fix(animatingnumbers): demo拆解与规范 (#2109) @Alex-huxiyang +* :bug: fix(video): demo拆解与规范 (#2104) @eiinu +* :bug: fix(avatarcropper): demo拆解与规范 (#2103) @eiinu +* :bug: fix(steps): demo拆解与规范 (#2105) @eiinu +* :bug: fix: 修复 demo 目录报错 (#2107) @eiinu +* :bug: fix(swipe): 修改demo文案 (#2106) @xiaoyatong +* :bug: fix(shortpassword): demo拆解与规范 (#2102) @Alex-huxiyang +* :bug: fix(circleprogress): demo拆解与规范 (#2091) @Alex-huxiyang +* :bug: fix: vitest (#2101) @xiaoyatong +* :bug: fix(table): demo拆解与规范 (#2074) @Alex-huxiyang +* :bug: fix(timeselect): demo拆解与规范 (#2087) @Alex-huxiyang +* :bug: fix(tabs): demo拆解与规范 (#2066) @yeyu98 +* :bug: fix(signature): demo拆解与规范 (#2099) @Alex-huxiyang +* :bug: fix(tag): taro 下自定义icon无法展示 (#2088) @eiinu +* :bug: fix(animate): demo拆解与规范 (#2085) @eiinu +* :bug: fix(collapse): demo拆解与规范 (#2094) @eiinu +* :bug: fix(barrage): 简化demo (#2100) @xiaoyatong +* :bug: fix(barrage): demo拆解与规范 (#2098) @joyfully-W +* :bug: fix: taro-demo full class (#2095) @eiinu +* :bug: fix(Ellipsis): 修复小程序环境下给Ellipsis设置字号后工作不正常的问题 (#2078) @FPG-Alan +* :bug: fix: test (#2096) @xiaoyatong +* :bug: fix: 代码块修改为等宽字体 (#2092) @eiinu +* 🚦 Revert "feat(progress): 支持taro的lazy属性 & demo拆解与规范 (#2086)" @oasis-cloud +* 🏡 chore(calendarcard): demo 拆解与规范 (#2026) @eiinu +* 🏡 chore: 优化组件类型导出 (#2036) @eiinu +* 🏡 chore(deps): update dependency happy-dom to v14 (#2097) @renovate[bot] +* 🏡 chore: update changelog @oasis-cloud +* 📖 docs(overlay): fix typo @eiinu + + +# v2.4.2 +`2024-03-20` + +* 🔨 chore(row): 优化 className (#2054) @eiinu +* :sparkles: feat(backtop): rtl (#2051) @xiaoyatong +* :sparkles: feat(NoticeBar): 增加right 属性,支持更多可自定义内容 @xiaoyatong +* :bug: fix(address): demo拆解与规范 (#2068) @Alex-huxiyang +* :bug: fix(avatar): demo规范与调整 (#2071) @Alex-huxiyang +* :bug: fix(badge): demo拆解与规范 (#2060) @sd +* :bug: fix(calendarcard): 修复受控模式 (#2063) @eiinu +* :bug: fix(Card): demo拆解与规范 (#2072) @joyfully-W +* :bug: fix(dialog): demo拆解与规范 (#2069) @irisSong +* :bug: fix(fixedNav): demo拆解与规范 (#2048) @Alex-huxiyang +* :bug: fix(icon): 处理 rtl 部分 (#2050) @xiaoyatong +* :bug: fix(indicator): demo拆解与规范 (#2090) @eiinu +* :bug: fix(infiniteLoading): demo拆解与规范+增加joy logo的demo (#2081) @irisSong +* :bug: fix(input): demo拆解与规范 (#2035) @yeyu1998 +* :bug: fix(navbar): demo拆解与规范 (#2055) @Alex-huxiyang +* :bug: fix(pagination): demo拆解与规范 (#2079) @Alex-huxiyang +* :bug: fix(price): demo拆解与规范 (#2082) @Alex-huxiyang +* :bug: fix(pulltorefresh): demo中下拉图标修改为joy logo (#2084) @irisSong +* :bug: fix(rate): demo拆解与规范 (#2045) @sandra +* :bug: fix(SearchBar): demo拆解与规范 (#2064) @joyfully-W +* :bug: fix(sideNavBar): demo拆解与规范 (#2058) @Alex-huxiyang +* :bug: fix(skeleton): demo拆解与规范 (#2047) @sd +* :bug: fix(sticky): demo拆解与规范 (#2024) @Alex-huxiyang +* :bug: fix(swiper): rtl (#2061) @xiaoyatong +* :bug: fix(tabbar): demo拆解与规范&脚本增强 (#2059) @Alex-huxiyang +* :bug: fix(trendarrow): demo拆解与规范 (#2075) @ber +* :bug: fix(watermark): demo拆解与规范 (#2083) @eiinu +* :bug: fix: update copy-docs-h5-or-taro.js (#2080) @eiinu +* test: migrate jest to vitest (#2057) @eiinu + + +# v2.4.1 +`2024-03-15` + +* :sparkles: feat(badge): 新增 fill 属性 (#2042) @eiinu +* :sparkles: feat(button): 增加xlarge,按钮内图标大小追随按钮当前字号 (#2037) @xiaoyatong +* :sparkles: feat(ci): add issue-close.yml (#2031) @eiinu +* :sparkles: feat(infiniteloading): add type props (#2027) @irisSong +* :sparkles: feat(pulltorefresh): 增加 type 属性,支持深色背景设置 (#2044) @xiaoyatong +* :sparkles: feat(tabs): rtl (#2004) @irisSong +* :bug: fix(backtop): demo拆解与规范 (#2025) @Alex-huxiyang +* :bug: fix(badge): 修复value传入0时显示不正确的问题 (#2006) @boiboif +* :bug: fix(build): 移除构建产物中重复的类型文件 (#2038) @eiinu +* :bug: fix(calendarcard): 选择范围时支持仅选择单个日期 (#2009) @eiinu +* :bug: fix(configProvidder): demo拆解与自动替换脚本&configProvider规范统一 (#2005) @Alex-huxiyang +* :bug: fix(divider): demo拆解与规范 (#2013) @Alex-huxiyang +* :bug: fix(elevator): demo拆解与规范 (#2030) @Alex-huxiyang +* :bug: fix(ellipsis): 修复设置行数超过内容高度时只显示一行内容的问题 (#2028) @boiboif +* :bug: fix(Empty): 调整默认图片为jd图片 (#2032) @xiaoyatong +* :bug: fix(grid): demo拆解与规范 (#2014) @Alex-huxiyang +* :bug: fix(icon): demo拆解与规范 (#2010) @Alex-huxiyang +* :bug: fix(Image): demo拆解与规范 (#2011) @Alex-huxiyang +* :bug: fix(layout): demo拆解与规范 & 修复脚本在不同操作系统的正则匹配出错 (#2016) @Alex-huxiyang +* :bug: fix(overlay): demo拆解与规范 (#2012) @Alex-huxiyang +* :bug: fix(popover): 调整demo (#2043) @xiaoyatong +* :bug: fix(range): touchmove 回调中 rect 获取失败时终止 (#2029) @eiinu +* :bug: fix(space): demo拆解与规范 (#2021) @Alex-huxiyang +* :bug: fix(switch):switch组件demo代码重构 (#2033) @jiangjin3323 +* :bug: fix: docs (#2023) @xiaoyatong +* :bug: fix: fix swipe slide element get rect width error (#2017) @awefeng +* :bug: fix: 构建站点主题变量未成功引入 (#2002) @oasis +style(button): jmapp style (#2019) @zhehu1 + + +# v2.4.0 +`2024-03-08` + +* :sparkles: feat(inputnumber): update UI (#1989) @oasis-cloud +* :sparkles: feat(checkbox): list model (#1957) @oasis-cloud +* :sparkles: feat(dialog): added custom content area demo (#1995) @irisSong +* :sparkles: feat(dialog): support bottom close button (#1978) @irisSong +* :sparkles: feat(dialog): support confirm button loading effect (#1983) @bbf +* :sparkles: feat(empty): 图片变更 (#1988) @xiaoyatong +* :sparkles: feat(noticebar): supports the center layout (#1972) @irisSong +* :sparkles: feat(popover): 增加 light 和 dark 模式的区分 (#1977) @xiaoyatong +* :sparkles: feat(swipe): 增加自定义高度的demo (#1996) @xiaoyatong +* :sparkles: feat(rtl): badge (#1986) @eiinu +* :sparkles: feat(rtl): collapse (#1981) @eiinu +* :sparkles: feat(rtl): noticebar (#1984) @eiinu +* :sparkles: feat(rtl): table (#1982) @eiinu +* :sparkles: feat(animatingNumbers): support rtl (#1985) @irisSong +* :bug: fix(badge): the text set by value unwrap (#1992) @irisSong +* :bug: fix(cell): unify the demos of Cell (#1998) @Alex-huxiyang +* :bug: fix(toast): add deprecated prop msg (#1999) @eiinu +* :bug: fix(toast): 变更 taro下的属性 msg 为 content,增加 taro 下 demo (#1994) @xiaoyatong +* :bug: fix(virtuallist): 修复 vitrual list 组件 Taro 下获取窗口高度不正确的问题 (#1993) @CDog34 +* :bug: fix: dts 插件升级导致构建产物路径错误 (#1979) @oasis-cloud +* :bug: fix: tabs 小程序滚动操作问题 (#1969) @feiyang1020 +* 🔨 chore(deps): bump typescript v5 (#1975) @eiinu +* 🔨 chore(deps): update commitlint monorepo to v19 (#1976) @renovate[bot] +* 🔨 chore: 构建 demo 要定义 __PROJECTID__ (#1974) @oasis-cloud +* 📖 docs(tabs): fix typo (#1997) @eiinu + + +# v2.3.12 +`2024-03-01` + +* :sparkles: feat(inputnumber): taro 环境下增加 number类型的键盘 (#1965) @LING_ZI_QING +* :sparkles: feat(rtl): support progress & range (#1961) @eiinu +* :bug: fix(elevator): 修复增加页码的逻辑 (#1960) @oasis-cloud +* :bug: fix(elevator): 解决部分安卓手机右侧导航高亮偏差问题 (#1966) @irisSong +* :bug: fix(form): after setting validateTrigger, `trigger` should be excluded (#1963) @oasis-cloud +* :bug: fix(form): 组件更新时,标签结构变化,会导致失去焦点 (#1973) @oasis-cloud +* :bug: fix(inputnumber): provide finalValue (#1959) @oasis-cloud +* 📖 docs: 修复文档 (#1964) @xiaoyatong +* 🛠 refactor(docs): 文档支持通过标签使用已有的 demo 代码 (#1950) @Alex-huxiyang +* 🛠 refactor: adjust build target to ES6, reduce size of configprovider (#1949) @oasis-cloud +* 🔨 chore(ci): update workflows (#1970) @eiinu +* 🔨 chore(dev): development mode, remove duplicate CSS stylesheets (#1958) @oasis-cloud +* 🔨 chore: remove CSS logic conflicting with MDX (#1971) @oasis-cloud + + +# v2.3.11 +`2024-02-23` + +* :sparkles: feat(inputnumber): support allow empty (#1943) @oasis +* :bug: fix(actionsheet): 关闭弹窗后内容显示在页面,优化 popup 相关属性传递 (#1954) @LING_ZI_QING +* :bug: fix(rtl): css 样式变量部分 (#1944) @xiaoyatong +* :bug: fix(form): validateFields support promise (#1955) @oasis + + +# v2.3.10 +`2024-02-06` + +* :sparkles: feat(form): support renderProps (#1937) @oasis-cloud +* :sparkles: feat(shortpassword): support ref for form (#1930) @oasis-cloud +* :sparkles: feat: 生成用于 rtl 校对的 css 文件 (#1927) @oasis-cloud +* :bug: fix(barrage): 解决新增弹幕重叠问题+不同宽度弹幕滚动速度不一致问题+重构taro版本 (#1942) @irisSong +* :bug: fix(popover): can not be closed (#1931) @oasis-cloud +* :bug: fix(sticky): 适配 taro (#1928) @xiaoyatong +* :bug: fix(tabs): 修订左对齐样式 (#1929) @xiaoyatong +* 📖 docs(tabs): 文档可读性优化 (#1935) @Alex-huxiyang + + +# v2.3.9 +`2024-02-02` + +* :sparkles: feat: generate stylesheets containing RTL-related styles (#1889) @oasis-cloud +* :bug: fix(infiniteloading): infiniteloading 点击后再滑动,操作出现异常 (#1919) @JQ +* :bug: fix(input): controlled mode, content clearing does not work (#1912) @oasis-cloud +* :bug: fix(popup): support destroyOnClose (#1914) @oasis-cloud +* :bug: fix(rtl): 修复文本 margin (#1926) @xiaoyatong +* :bug: fix(textarea): 修复maxlength=-1时无法输入字符的情况 (#1910) @xiaoyatong +* :bug: fix(input): 受控模式下在 H5 无法清空内容 (#1925) @oasis-cloud +* :bug: fix(rtl): 左右方向箭头的处理 (#1922) @xiaoyatong +* 📖 docs(backtop): 文档可读性优化 (#1909) @Alex-huxiyang +* 📖 docs(image): correct the error attribute (#1916) @oasis-cloud +* 📖 docs(layout): 文档可读性优化 (#1904) @Alex-huxiyang +* 📖 docs(navbar): 文档可读性优化 (#1915) @Alex-huxiyang +* 📖 docs(sidenavbar): 文档可读性优化 (#1920) @Alex-huxiyang +* 📖 docs(sticky): 文档可读性优化 (#1906) @Alex-huxiyang +* 📖 docs(tabbar): 文档可读性优化 (#1921) @Alex-huxiyang + + +# v2.3.8 +`2024-01-26` + +* 🔨 chore: 修复dev环境下demo分包体超过2M问题 (#1905) @xiaoyatong +* 📖 docs(configprovider): 文档可读性优化 (#1882) @Alex-huxiyang +* 📖 docs(grid): 文档可读性优化 (#1903) @Alex-huxiyang +* 📖 docs(swiper): customize pagination controls (#1892) @oasis-cloud +* :sparkles: feat(navbar): title区域自适应宽度 (#1891) @irisSong +* :sparkles: feat(rate): 新增 touchable 属性支持滑动选择 (#1880) @eiinu +* :sparkles: feat(video): support passing through attributes for Taro Video (#1890) @xiaoyatong +* :sparkles: feat: radiogroup add shape props (#1898) @oasis-cloud +* :bug: fix(ellipsis): 修复小程序文本省略问题 (#1888) @eiinu +* :bug: fix(ellipsis): 在 taro 小程序下尽量展示的平滑舒适 (#1902) @xiaoyatong +* :bug: fix(image): 文档可读性优化 (#1887) @Alex-huxiyang +* :bug: fix(overlay): 文档可读性优化 (#1894) @Alex-huxiyang +* :bug: fix(rate): 修复 rate 高度问题 (#1883) @eiinu +* :bug: fix(steps): 小程序的真机情况下出现的换行的情况 (#1899) @xiaoyatong +* :bug: fix(swiper): 轮播跳帧 (#1886) @oasis-cloud +* :bug: fix(tabs): 解决组件嵌套tabs,横向滚动位置计算偏差问题 (#1884) @irisSong +* :bug: fix: doc、demo调整&优化 @huxiyang3 +* :bug: fix: taro.createSelectorQuery not function (#1907) @oasis-cloud + + +# v2.3.7 +`2024-01-19` + +* :sparkles: feat(checkbox): 增加至少选择项数量的设置功能 (#1859) @oasis +* :sparkles: feat(dialog): 增加关闭按钮 (#1872) @irisSong +* :sparkles: feat(imagepreview): 新增 closeIcon & closeIconPosition (#1873) @eiinu +* :sparkles: feat(numberkeyboard): add title right actions (#1881) @xiaoyatong +* :sparkles: feat: support debugging RTL in the H5 development environment (#1865) @oasis +* :bug: fix(space): 主/交叉轴的 demo 与国际化改进 (#1867) @Alex-huxiyang +* :bug: fix(animatingnumbers): 修复单元测试问题 (#1878) @eiinu +* :bug: fix(button): demo和doc一致化、文档代码优化、属性补充 (#1875) @Alex-huxiyang +* :bug: fix(cell): doc、demo一致化改进 (#1877) @Alex-huxiyang +* :bug: fix(popover): 置于滚动容器中,popover 需要跟随滚动,修复选中项的样式 (#1869) @oasis +* :bug: fix(table): fixed sticky css (#1866) @xiaoyatong +* :bug: fix(tabs): 纵向图标未对齐问题 (#1868) @irisSong +* :bug: fix(Textarea): 文档demo中props拼写错误修改 (#1874) @irisSong +* :bug: fix(uploader): fix the styles when custom progress (#1863) @xiaoyatong +* :bug: fix: 增加 CSS 变量配置颜色的例子,完善 color 属性的使用场景描述 (#1857) @oasis +* 📖 docs(avatar): add list display mode (#1862) @oasis +* 📖 docs(icon): 更新文档 (#1879) @eiinu +* 📖 docs(shortpassword): 增加onComplete的demo及文档 (#1860) @xiaoyatong +* 🛠 refactor(circleprogress): optimize animation duration (#1861) @oasis + + +# v2.3.6 +`2024-01-12` + +* :sparkles: feat(space): update demos and docs of justify and align (#1856) @Alex-huxiyang +* :sparkles: feat(tag): image text (#1851) @oasis +* :sparkles: feat: doc文档优化 (#1850) @Alex-huxiyang +* :bug: fix(swiper): fix props of saving image at taro, fix parameter of onChange, update taro version to 3.6.22 (#1847) @xiaoyatong +* :bug: fix: fix some components display bad with the white screen at taro when is development (#1852) @xiaoyatong +* 🔨 chore(deps): update icons to v1.0.2 (#1853) @oasis + + +# v2.3.5 +`2024-01-05` + +* :sparkles: feat(avatarcropper): 新增属性shape,可设置裁剪样式为圆形 (#1842) @Marvin Gui +* :sparkles: feat(dialog): 新增 CSS 变量 (#1844) @LING_ZI_QING +* :sparkles: feat(range): marks type optimization (#1833) @oasis-cloud +* :sparkles: feat(tabs): 新增 CSS 变量 (#1835) @LING_ZI_QING +* :bug: fix(avatarcropper): fix cannot display when it is development at taro (#1840) @xiaoyatong +* :bug: fix(empty): fix import at taro (#1839) @xiaoyatong +* :bug: fix(picker): 优化 options 的 text 属性的判空逻辑 (#1837) @oasis-cloud +* :bug: fix(picker): 修复 safari 下 mask 样式问题 (#1843) @eiinu +* :bug: fix(pulltorefresh): 修复安卓小程序下拉卡顿问题 (#1830) @NickH +* :bug: fix(tabs): docs and jmapp css variables (#1838) @xiaoyatong +* 🔨 chore(deps): update @nutui/icons to v1.0.1 (#1836) @oasis-cloud + + +# v2.3.4 +`2023-12-29` + +* 📖 docs(nabvar): showtoas 改为 showToast (#1826) @MingHui +* :bug: fix(datepicker): 未设置 value/defaultValue 时渲染 0 (#1819) @RyanCW +* :bug: fix(infiniteLoading): ssr (#1828) @xiaoyatong +* :bug: fix(infiniteLoading): 修改类名及demo (#1818) @xiaoyatong +* :bug: fix(popover): icon cannot be displayed at taro (#1820) @xiaoyatong +* :bug: fix(popver): bottom positon (#1823) @xiaoyatong +* :bug: fix(tabbar): fix icon color (#1816) @xiaoyatong +* :bug: fix(virtualList): 等高模式下的抖动处理, 不定高模式快速滑动白屏 (#1825) @oasis-cloud +* :bug: fix(watermark): fix demos (#1817) @xiaoyatong +* 🛠 refactor(infiniteloading): onRefresh、onLoadMore 改为 Promise 类型,去掉显示调用 done 方法 (#1827) @oasis-cloud + + # v2.3.3 `2023-12-22` @@ -51,7 +367,7 @@ * 📖 docs(tour): fix tour demo (#1759) @xiaoyatong * 📖 docs: address and collapse doc icons (#1692) @xiaoyatong * 📖 docs: fix docs (#1678) @xiaoyatong -* :sparkles: feat(calendarcard): 限制范围时禁止面板切换 (#1688) @Eiinu +* :sparkles: feat(calendarcard): 限制范围时禁止面板切换 (#1688) @eiinu * :sparkles: feat(checkbox): add button mode (#1738) @xiaoyatong * :sparkles: feat(empty): adds title,size,and actions (#1697) @xiaoyatong * :sparkles: feat(example): add with-rsbuild example (#1661) @Kurisu @@ -73,7 +389,7 @@ * :bug: fix(dialog): 调整dialog button大小 (#1720) @xiaoyatong * :bug: fix(form): 设置 errorMessageAlign="right" 错误文案无法右对齐 (#1709) @oasis-cloud * :bug: fix(form): 重置功能无法清空报错信息 (#1711) @oasis-cloud -* :bug: fix(image): 修复开启 lazy 后 loading 失效问题 (#1768) @Eiinu +* :bug: fix(image): 修复开启 lazy 后 loading 失效问题 (#1768) @eiinu * :bug: fix(indicator): 修订样式名称和样式变量 (#1712) @xiaoyatong * :bug: fix(swiper): demo 中分页器样式显示错误 (#1703) @xiaoyatong * :bug: fix: address close icon cannot be customed (#1685) @xiaoyatong @@ -125,7 +441,7 @@ style: 修订className (#1770) @xiaoyatong * :sparkles: feat(image): 增加 demo (#1658) @xiaoyatong * :sparkles: feat(theme): 修订 fontSize (#1674) @xiaoyatong * :bug: fix(elevator): 索引定位不准 (#1667) @oasis-cloud -* :bug: fix(swiper): swiper-item 宽高异常问题 (#1657) @Eiinu +* :bug: fix(swiper): swiper-item 宽高异常问题 (#1657) @eiinu * :bug: fix(uploader): Update uploader.tsx (#1656) @Kurisu * :bug: fix(uploader): uploader when item type is undefined (#1650) @xiaoyatong * 🛠 refactor: css 变量命名规范(主题色部分,不含灰阶) (#1679) @xiaoyatong @@ -143,8 +459,8 @@ style: 修订className (#1770) @xiaoyatong # v2.1.0 `2023-11-17` -* :sparkles: feat(Button): size 增加可选值 mini (#1617) @Eiinu -* :sparkles: feat(calendarcard): 增加自定义 className (#1636) @Eiinu +* :sparkles: feat(Button): size 增加可选值 mini (#1617) @eiinu +* :sparkles: feat(calendarcard): 增加自定义 className (#1636) @eiinu * :sparkles: feat(infiniteLoading): 通过scrolltolower触发加载事件 (#1633) @oasis-cloud * :sparkles: feat(safearea): 新增安全区组件 (#1642) @oasis-cloud * :sparkles: feat(toast): 通过 config 方法设置内容区的className (#1632) @oasis-cloud @@ -164,14 +480,14 @@ style: 修订className (#1770) @xiaoyatong `2023-11-10` * 🚀 perf(deps): 升级 icons 依赖,icons 包体积缩减 (#1604) @oasis-cloud -* 🚀 perf(CalendarCard): taro demo 性能优化 (#1593) @Eiinu -* :sparkles: feat(Toast): 新增 wordBreak 属性 (#1606) @Eiinu +* 🚀 perf(CalendarCard): taro demo 性能优化 (#1593) @eiinu +* :sparkles: feat(Toast): 新增 wordBreak 属性 (#1606) @eiinu * :sparkles: feat: picker and datepicker add onCancel (#1603) @xiaoyatong * :sparkles: feat: 类似微信头像裁剪组件 (#1564) @Marvin Gui -* :bug: fix(CalendarCard): 初始化渲染逻辑优化 (#1596) @Eiinu +* :bug: fix(CalendarCard): 初始化渲染逻辑优化 (#1596) @eiinu * :bug: fix(circleprogress): 计算出现 NaN 导致组件展示为 100% 的情况 (#1602) @oasis-cloud * :bug: fix(elevator): 替换文档展示pagation到showKeys (#1598) @HaiTao -* :bug: fix(tag): 修复加载样式问题 #1588 (#1592) @Eiinu +* :bug: fix(tag): 修复加载样式问题 #1588 (#1592) @eiinu * :bug: fix: picker & DatePicker onConfirm failed (#1601) @xiaoyatong * :bug: fix: swiper indicator zindex at taro (#1586) @xiaoyatong * :bug: fix: taro event detail is undefined (#1591) @xiaoyatong @@ -183,8 +499,8 @@ style: 修订className (#1770) @xiaoyatong # v2.0.23 `2023-11-03` -* :sparkles: feat(image): ssr 适配 (#1579) @Eiinu -* :sparkles: feat: 新增组件 calendar (#1565) @Eiinu +* :sparkles: feat(image): ssr 适配 (#1579) @eiinu +* :sparkles: feat: 新增组件 calendar (#1565) @eiinu * :bug: fix: calendar scrolltop bad (#1583) @xiaoyatong * :bug: fix: noticebar 垂直滚动初始化时,无法及时展示元素信息 (#1576) @xiaoyatong * :bug: fix: popup zindex at taro and picker adds popupProps (#1581) @xiaoyatong @@ -279,7 +595,7 @@ style: 修订className (#1770) @xiaoyatong `2023-09-06` * :sparkles: feat: form 支持分割线 (#1389) @oasis-cloud -* :bug: fix(pulltorefresh): 修复 H5 卡顿 & 小程序滑动距离问题 @Eiinu +* :bug: fix(pulltorefresh): 修复 H5 卡顿 & 小程序滑动距离问题 @eiinu * :bug: fix: csstransition using findDOMNode which is deprecated (#1370) @oasis-cloud * :bug: fix: dialog 的函数调用增加对 classname 和 style 的支持 (#1391) @oasis-cloud * :bug: fix: swipe 阻止页面滚动 (#1380) @oasis-cloud @@ -294,7 +610,7 @@ style: 修订className (#1770) @xiaoyatong * :sparkles: feat: support next.js (#1326) @oasis-cloud * :bug: fix: dialog content 失效 (#1323) @oasis-cloud * :bug: fix: space 复制按钮重复 (#1322) @oasis-cloud -* 🔨 chore(tabs): 更新文档与 demo (#1339) @Eiinu +* 🔨 chore(tabs): 更新文档与 demo (#1339) @eiinu # v2.0.14 @@ -366,7 +682,7 @@ style: 修订className (#1770) @xiaoyatong * :sparkles: feat: 增加了space组件 (#1259) @ivan-My * 🛠 refactor: tabs 去除 console (#1261) @vapao -* 🔨 chore(script): 简化开发环境启动逻辑 (#1264) @Eiinu +* 🔨 chore(script): 简化开发环境启动逻辑 (#1264) @eiinu @@ -400,13 +716,13 @@ style: 修订className (#1770) @xiaoyatong `2023-07-14` * :sparkles: feat: configprovider 组件支持传入 className 和 style 属性 (#1219) @大喵 -* :bug: fix(button): fill=none & type=default 样式修复 (#1215) @Eiinu +* :bug: fix(button): fill=none & type=default 样式修复 (#1215) @eiinu * :bug: fix(form): formItem 的 props 改为 Partial (#1221) @oasis-cloud * :bug: fix: cascader onChange 触发2次问题修复 (#1224) @xiaoyatong -* :bug: fix: countdown手动控制demo展示样式优化 (#1229) @songsong -* :bug: fix: signature组件提取样式变量+修复taro h5 demo签字时滚动问题 (#1220) @songsong +* :bug: fix: countdown手动控制demo展示样式优化 (#1229) @irisSong +* :bug: fix: signature组件提取样式变量+修复taro h5 demo签字时滚动问题 (#1220) @irisSong * :bug: fix: tabs组件在抖音小程序展示异常 (#1211) @oasis-cloud -* :bug: fix: 修复signature小程序下demo签字时页面跟随滚动问题 (#1225) @songsong +* :bug: fix: 修复signature小程序下demo签字时页面跟随滚动问题 (#1225) @irisSong * :bug: fix: 文档格式化 @hanyuxinting @@ -427,18 +743,18 @@ style: 修订className (#1770) @xiaoyatong `2023-07-07` * :sparkles: feat: 日历增加不可选状态、增加style、className 的透传 (#1193) @xiaoyatong -* :bug: fix: animatingNumber组件暗黑模式适配+demo优化 (#1184) @songsong +* :bug: fix: animatingNumber组件暗黑模式适配+demo优化 (#1184) @irisSong * :bug: fix: circleprogress color 属性的类型优化 (#1191) @junjun666 -* 🔨 chore(backtop): 优化 demo 和文档 (#1186) @Eiinu -* 🔨 chore(deps): add @nutui/touch-emulator (#1196) @Eiinu -* 🔨 chore(progress): update demo (#1192) @Eiinu +* 🔨 chore(backtop): 优化 demo 和文档 (#1186) @eiinu +* 🔨 chore(deps): add @nutui/touch-emulator (#1196) @eiinu +* 🔨 chore(progress): update demo (#1192) @eiinu * 🔨 chore: overlay 动效优化 (#1183) @junjun666 # v2.0.1 `2023-07-05` * :sparkles: feat: tag 新增 info 类型 (#1180) @xiaoyatong -* :bug: fix(searchbar): 修复 Taro-H5 下 onSearch 无法触发的问题 (#1178) @Eiinu +* :bug: fix(searchbar): 修复 Taro-H5 下 onSearch 无法触发的问题 (#1178) @eiinu * :bug: fix: button 组件在 taro h5 中不设置 opentype (#1167) @oasis-cloud * :bug: fix: datepicker 修改列数据后,更新下一级数据 (#1179) @xiaoyatong * :bug: fix: demo 中 input 布局换行 (#1170) @oasis-cloud @@ -448,7 +764,7 @@ style: 修订className (#1770) @xiaoyatong * :bug: fix: 关闭主题定制入口 (#1171) @oasis-cloud * :bug: fix: 调整 demo 中 image 组件的间距 (#1168) @oasis-cloud * 📖 docs: swiper 文档中的 autoplay 描述修复 (#1165) @oasis-cloud -* 📖 docs: update doc link (#1176) @Eiinu +* 📖 docs: update doc link (#1176) @eiinu # v2.0.0-beta.3 @@ -457,7 +773,7 @@ style: 修订className (#1770) @xiaoyatong * 🔨 chore: 增加组件名称调整的内容 (#1161) @oasis-cloud * 📖 docs: 统一升级文档中的修改的描述术语 (#1159) @xiaoyatong * :bug: fix: 修改migrate文档 (#1164) @junjun666 -* :bug: fix: 单元测试问题修复 (#1158) @Eiinu +* :bug: fix: 单元测试问题修复 (#1158) @eiinu * 🛠 refactor: 调整 MenuItem CellGroup SwiperItem 使用方式为 Menu.Item Cell.Group… (#1160) @oasis-cloud @@ -467,24 +783,24 @@ style: 修订className (#1770) @xiaoyatong * :sparkles: feat: 日历组件新增选择周 type='week' 模式 (#1152) @xiaoyatong * :bug: fix: dialog spelling mistake (#1148) @Katz * :bug: fix: fit&wxwork (#1146) @junjun666 -* :bug: fix: 优化 TrendArrow 组件 props (#1150) @songsong -* :bug: fix: 修改navbar组件demo样式 (#1145) @songsong +* :bug: fix: 优化 TrendArrow 组件 props (#1150) @irisSong +* :bug: fix: 修改navbar组件demo样式 (#1145) @irisSong * 🛠 refactor: 属性定义走查修复 (#1149) @xiaoyatong -* 🔨 chore(virtuallist): 调整 itemRender (#1151) @Eiinu +* 🔨 chore(virtuallist): 调整 itemRender (#1151) @eiinu # v2.0.0-beta.1 `2023-06-21` -* :bug: fix(collapse): 测试问题修复 (#1132) @Eiinu +* :bug: fix(collapse): 测试问题修复 (#1132) @eiinu * :bug: fix: address taro 白屏 (#1140) @xiaoyatong * :bug: fix: popup title (#1143) @xiaoyatong * :bug: fix: remove bem (#1138) @oasis-cloud * :bug: fix: 修复toast组件屏幕锁定不能滚动的问题 (#1134) @junjun666 -* :bug: fix: 单元测试问题修复 (#1137) @Eiinu +* :bug: fix: 单元测试问题修复 (#1137) @eiinu * 🛠 refactor: address (#1104) @xiaoyatong * 🛠 refactor: calendar (#1087) @xiaoyatong -* 🔨 chore(ci): delete sync-gitcode.yml @Eiinu +* 🔨 chore(ci): delete sync-gitcode.yml @eiinu * 🔨 chore: popover review (#1127) @junjun666 * 🔨 chore: 更新 taro 版本到 3.6.8 @oasis-cloud * 🔨 chore: 移除 @bem-react/classname (#1142) @oasis-cloud @@ -493,13 +809,13 @@ style: 修订className (#1770) @xiaoyatong # v2.0.0-alpha.18 `2023-06-16` -* 🔨 chore(tabbar): 调整 Badge 相关 Props (#1126) @Eiinu -* 📖 docs: update migrate-from-v1.md (#1131) @Eiinu +* 🔨 chore(tabbar): 调整 Badge 相关 Props (#1126) @eiinu +* 📖 docs: update migrate-from-v1.md (#1131) @eiinu * :sparkles: feat: 修改升级文档 (#1125) @oasis-cloud * :bug: fix: button 组件在 taro h5 中的类型优化 (#1133) @oasis-cloud * :bug: fix: uploader 英文文档修改 (#1124) @oasis-cloud * :bug: fix: 修复inputnumber在taro H5样式失效的问题 (#1130) @junjun666 -* :bug: fix: 完善migrate-from-v1文档 (#1129) @songsong +* :bug: fix: 完善migrate-from-v1文档 (#1129) @irisSong # v2.0.0-alpha.17 @@ -510,36 +826,36 @@ style: 修订className (#1770) @xiaoyatong * 🛠 refactor: form (#1118) @oasis-cloud * 📖 docs: 修改布局文档相关 @hanyuxinting * 📖 docs: 文档走查及问题修复 (#1123) @xiaoyatong -* 📖 docs: 文档走查及问题修复-基础&布局组件(#1117) @Eiinu +* 📖 docs: 文档走查及问题修复-基础&布局组件(#1117) @eiinu * 📖 docs: 文档走查及问题修复-导航组件 (#1119) @xiaoyatong # v2.0.0-alpha.16 `2023-06-09` -* :bug: fix(toast): 修复连续调用 show 方法时无法销毁的问题 (#1102) @Eiinu +* :bug: fix(toast): 修复连续调用 show 方法时无法销毁的问题 (#1102) @eiinu * :bug: fix: dialog 需要增加 overlay 的样式,否则按需加载样式出现异常 (#1103) @oasis-cloud * :bug: fix: menu 组件被使用 transform 的组件嵌套后,遮罩层发生偏移 (#1093) @oasis-cloud * :bug: fix: noticebar 修复小程序多行展示问题 (#1107) @xiaoyatong * :bug: fix: pikcer 在关闭动画未结束时修改 visible,导致状态更新异常 (#1097) @oasis-cloud * 🛠 refactor: datepicker (#1091) @xiaoyatong * 🔨 chore: 修复 Taro Demo 的字号 (#1105) @oasis-cloud -* 🔨 chore(script): 生成 Props 功能增强 (#1096) @Eiinu +* 🔨 chore(script): 生成 Props 功能增强 (#1096) @eiinu * 📖 docs: 文档修订 (#1106) @xiaoyatong # v2.0.0-alpha.15 `2023-06-07` -* :sparkles: feat(ci): add codecov (#1092) @Eiinu -* :sparkles: feat(ci): add lint action (#1098) @Eiinu +* :sparkles: feat(ci): add codecov (#1092) @eiinu +* :sparkles: feat(ci): add lint action (#1098) @eiinu * :sparkles: feat: imagepreview 组件在小程序中支持长按图片保存 (#1090) @oasis-cloud -* :bug: fix: 单元测试问题修复 (#1095) @Eiinu +* :bug: fix: 单元测试问题修复 (#1095) @eiinu * 🛠 refactor: card (#1069) @拧巴的猫 * 🛠 refactor: infiniteloading (#1085) @junjun666 * 🛠 refactor: signature (#1080) @拧巴的猫 * 🛠 refactor: tag (#1089) @xiaoyatong -* 🛠 refactor: TimeSelect (#1088) @Eiinu +* 🛠 refactor: TimeSelect (#1088) @eiinu # v2.0.0-alpha.14 @@ -548,12 +864,12 @@ style: 修订className (#1770) @xiaoyatong * 🛠 refactor: barrage (#1072) @junjun666 * 🛠 refactor: popover (#1060) @junjun666 * 🛠 refactor: sidenavbar (#1057) @oasis-cloud -* :bug: fix(backtop): 修改 demo (#1083) @Eiinu +* :bug: fix(backtop): 修改 demo (#1083) @eiinu * :bug: fix: ellipsis 在 taro 构建的 H5 中偶现无法暂时省略号的情况 (#1076) @oasis-cloud * :bug: fix: input 组件忽略 maxlength 和 password 属性 (#1079) @oasis-cloud * :bug: fix: menu 的 closeOnClickOverlay 改为 closeOnOverlayClick (#1084) @oasis-cloud * :bug: fix: picker 组件渲染的时候触发 onConfirm (#1082) @oasis-cloud -* 📖 docs(textarea): 更新文档说明 (#1086) @Eiinu +* 📖 docs(textarea): 更新文档说明 (#1086) @eiinu * 📖 docs: checkbox demo 增加头部 (#1075) @oasis-cloud * 📖 docs: 文档中 css 变量表格的文案优化 (#1077) @oasis-cloud @@ -564,7 +880,7 @@ style: 修订className (#1770) @xiaoyatong * 🛠 refactor: animatingNumbers (#1048) @拧巴的猫 * 🛠 refactor: trendArrow (#1066) @拧巴的猫 * 🛠 refactor: video (#1034) @junjun666 -* 🛠 refactor: watermark (#1071) @Eiinu +* 🛠 refactor: watermark (#1071) @eiinu * :sparkles: feat: 构建类型文件中的注释,方便在编辑器中查看属性的说明 (#1068) @oasis-cloud * :bug: fix: popup 在 taro 中的动效优化 (#1065) @oasis-cloud * :bug: fix: 修改 uploader 和 video 的 taro 文档 (#1070) @junjun666 @@ -578,9 +894,9 @@ style: 修订className (#1770) @xiaoyatong * 🛠 refactor: actionSheet (#1053) @xiaoyatong * 🛠 refactor: countdown (#1040) @拧巴的猫 * 🛠 refactor: searchBar (#1047) @xiaoyatong -* 🛠 refactor: shortPassword (#1046) @Eiinu +* 🛠 refactor: shortPassword (#1046) @eiinu * 🛠 refactor: toast (#1026) @justExplore -* 🛠 refactor: virtualList (#1056) @Eiinu +* 🛠 refactor: virtualList (#1056) @eiinu * :sparkles: feat: ellipsis add width attribute (#1038) @Zhu Da Shuai * :sparkles: feat: 导出主题中的 CSS 变量类型 (#1050) @oasis-cloud * 📖 docs: import touch-emulator (#1045) @oasis-cloud @@ -589,10 +905,10 @@ style: 修订className (#1770) @xiaoyatong # v2.0.0-alpha.11 `2023-05-24` -* 🛠 refactor: collapse (#1027) @Eiinu -* 🛠 refactor: Skeleton (#1036) @Eiinu +* 🛠 refactor: collapse (#1027) @eiinu +* 🛠 refactor: Skeleton (#1036) @eiinu * :sparkles: feat: 添加土耳其语 (#1028) @manin -* :bug: fix(fixednav): 修改 onSelect 参数顺序 (#1035) @Eiinu +* :bug: fix(fixednav): 修改 onSelect 参数顺序 (#1035) @eiinu * :bug: fix: 修复taro下拉刷新组件偶发未触发canRelease状态时松手,组件不会自动回弹的问题 (#1029) @Z-Bokle * 🔨 chore: 增加同步升级文档到 docs 仓库的脚本 (#1044) @oasis-cloud * 🔨 chore: 完善组件导出的类型 (#1039) @oasis-cloud @@ -603,7 +919,7 @@ style: 修订className (#1770) @xiaoyatong # v2.0.0-alpha.10 `2023-05-19` -* :sparkles: feat(progress): 添加 lazy、delay 属性 (#1023) @Eiinu +* :sparkles: feat(progress): 添加 lazy、delay 属性 (#1023) @eiinu * :bug: fix: swiper loop 模式位置计算错误 (#1018) @oasis-cloud * 🛠 refactor: imagepreview (#1019) @xiaoyatong * 🛠 refactor: noticebar (#1024) @xiaoyatong @@ -614,28 +930,28 @@ style: 修订className (#1770) @xiaoyatong # v2.0.0-alpha.9 `2023-05-17` -* :sparkles: feat: add create-properties.js (#1001) @Eiinu +* :sparkles: feat: add create-properties.js (#1001) @eiinu * :sparkles: feat: cascader支持受控 (#1000) @xiaoyatong * :sparkles: feat: elevator 支持右侧索引是否展示 (#1006) @拧巴的猫 -* :bug: fix(image): lazy 优化观察对象数量 (#1015) @Eiinu +* :bug: fix(image): lazy 优化观察对象数量 (#1015) @eiinu * :bug: fix: tabs children 变更后需要展示新的 title (#999) @oasis-cloud * :bug: fix: 格式化,删掉某些无用代码 (#1014) @xiaoyatong * 🛠 refactor: notify (#983) @拧巴的猫 -* 🛠 refactor: NumberKeyboard (#1012) @Eiinu +* 🛠 refactor: NumberKeyboard (#1012) @eiinu * 🛠 refactor: price (#989) @拧巴的猫 * 🛠 refactor: pulltorefresh (#1011) @oasis-cloud * 🛠 refactor: radio (#1009) @oasis-cloud -* 🛠 refactor: Range (#991) @Eiinu +* 🛠 refactor: Range (#991) @eiinu * 🛠 refactor: swiper 重构;indcator 的索引计算改为从 0 开始 (#1008) @oasis-cloud -* 🔨 chore: autoplay -> autoPlay (#1007) @Eiinu -* 📖 docs(tabbar): update description (#1004) @Eiinu +* 🔨 chore: autoplay -> autoPlay (#1007) @eiinu +* 📖 docs(tabbar): update description (#1004) @eiinu # v2.0.0-alpha.8 `2023-05-12` * :sparkles:feat: cascader支持受控 (#1000) @xiaoyatong * :bug: fix: tabs children 变更后需要展示新的 title (#999) @oasis-cloud -* 🛠 refactor: Range (#991) @Eiinu +* 🛠 refactor: Range (#991) @eiinu # v2.0.0-alpha.7 `2023-05-12` @@ -647,10 +963,10 @@ style: 修订className (#1770) @xiaoyatong * 🛠 refactor: cascader (#993) @xiaoyatong * 🛠 refactor: picker (#975) @xiaoyatong * 🛠 refactor: table (#982) @xiaoyatong -* 🛠 refactor: TextArea (#979) @Eiinu +* 🛠 refactor: TextArea (#979) @eiinu * :bug: fix: image src 初始状态未空,导致出发加载失败事件 (#988) @oasis-cloud -* 📖 docs(progress): demo 代码更新 (#986) @Eiinu -* 📖 docs(progress): update demo (#987) @Eiinu +* 📖 docs(progress): demo 代码更新 (#986) @eiinu +* 📖 docs(progress): update demo (#987) @eiinu * 📖 docs: tabs 文档中的 titleNode 修改为 title (#995) @oasis-cloud * 🔨 chore: taro es 构建移入 vite 配置文件 (#990) @oasis-cloud @@ -675,7 +991,7 @@ style: 修订className (#1770) @xiaoyatong * 🛠 refactor: circleprogress-v2.0 (#949) @junjun666 * 🛠 refactor: input (#962) @oasis-cloud -* 🛠 refactor: Tabbar (#935) @Eiinu +* 🛠 refactor: Tabbar (#935) @eiinu * :bug: fix: badge 组件的默认样式中,去掉 margin-right (#967) @xiaoyatong * 🎨 style: fix endLine display error (#964) @HaiTao @@ -700,7 +1016,7 @@ style: 修订className (#1770) @xiaoyatong * 🛠 refactor: drag (#937) @拧巴的猫 * 🛠 refactor: elevator (#927) @拧巴的猫 * 🛠 refactor: menu (#923) @oasis-cloud -* 🛠 refactor: progress (#943) @Eiinu +* 🛠 refactor: progress (#943) @eiinu * 🔨 chore: sync pnpm-lock @oasis-cloud * :bug: fix: 修改taro增加主题编译 (#950) @junjun666 diff --git a/README.md b/README.md index f38974563e..dd476a336e 100644 --- a/README.md +++ b/README.md @@ -65,10 +65,10 @@ git clone https://github.com/jdf2e/nutui-react.git cd nutui-react # Install dependencies -npm install +pnpm install # Start development -npm run dev +pnpm run dev # visit in browser: http:http://localhost:3000 (you don't have to open it manually if you've run it in the browser again) ``` @@ -81,15 +81,15 @@ git clone https://github.com/jdf2e/nutui-react.git cd nutui-react # Install dependencies -npm install +pnpm install # Start development # dir:src/sites/mobile-taro/dist/weapp -npm run dev:taro:weapp +pnpm run dev:taro:weapp # OR run as jd mini-program # dir:src/sites/mobile-taro/dist/jd -npm run dev:taro:jd +pnpm run dev:taro:jd ``` ## Build Versions diff --git a/README_ZH.md b/README_ZH.md index c609328f5f..a93d0422f1 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -63,11 +63,11 @@ git clone https://github.com/jdf2e/nutui-react.git cd nutui-react # 安装依赖 -npm install +pnpm install # 进入开发模式 # 浏览器访问:http://localhost:3000(如果已启动前台程序,则不需打开此地址) -npm run dev +pnpm run dev ``` ### 本地运行小程序 @@ -79,15 +79,15 @@ git clone https://github.com/jdf2e/nutui-react.git cd nutui-react # 安装依赖 -npm install +pnpm install # 进入小程序开发模式 # 访问:src/sites/mobile-taro/dist/weapp -npm run dev:taro:weapp +pnpm run dev:taro:weapp # 其他小程序类似,如京东小程序 # 访问:src/sites/mobile-taro/dist/jd -npm run dev:taro:jd +pnpm run dev:taro:jd ``` ## 构建版本 diff --git a/demo.html b/demo.html index 9161262071..1c4700ecf7 100644 --- a/demo.html +++ b/demo.html @@ -1,5 +1,5 @@ - + diff --git a/gitlog.sh b/gitlog.sh deleted file mode 100755 index 034a77db1e..0000000000 --- a/gitlog.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -# 提取 某个时间之后的提交信息 -latestPublishedDate="$1" -log=$(git log --since="$latestPublishedDate" --pretty=format:%s\ @%an) - -## Feat 和 Fix 转小写,句号转空 -log=$(echo "$log" | sed 's/feat/feat/i;s/fix/fix/i;s/。//') - -# 提交信息进行不区分大小写的排序 -log=$(echo "$log" | sort -f) - -# 增加 emoji -log=$(echo "$log" | sed 's/^feat/* :sparkles: feat/i;s/^fix/* :bug: fix/i;s/^chore/* 🔨 chore/i;s/^refactor/* 🛠 refactor/i;s/^docs/* 📖 docs/i') - -version="$2" -today=$(date "+%Y-%m-%d") -todayChangeLog=$(echo -e "# v$2\n\`$today\`\n\n$log") -oldChangeLog=$(cat ./CHANGELOG.md) - -echo -e "$todayChangeLog\n\n\n$oldChangeLog" > ./CHANGELOG.md \ No newline at end of file diff --git a/jest.config.ts b/jest.config.ts deleted file mode 100644 index 5bbaf643f5..0000000000 --- a/jest.config.ts +++ /dev/null @@ -1,28 +0,0 @@ -export default { - clearMocks: true, - collectCoverage: true, - coverageDirectory: 'coverage', - coveragePathIgnorePatterns: [ - './node_modules', - './dist', - './scripts', - './src/sites', - './src/styles', - ], - moduleNameMapper: { - '^@/(.*)$': '/src/$1', - }, - preset: 'ts-jest', - setupFiles: ['jest-canvas-mock'], - testPathIgnorePatterns: [ - './node_modules', - './dist', - './scripts', - './src/sites', - './src/styles', - ], - testEnvironment: 'jsdom', - testRegex: '(/__tests__/*|(\\.|/)(test|spec))\\.(ts|tsx)$', - transform: { '\\.[jt]sx?$': 'ts-jest' }, - transformIgnorePatterns: ['/node_modules/', '\\.pnp\\.[^\\/]+$'], -} diff --git a/migrate-from-v1.md b/migrate-from-v1.md index 1d552552c3..d602675db8 100644 --- a/migrate-from-v1.md +++ b/migrate-from-v1.md @@ -507,6 +507,7 @@ plugins: [ - `pullTxt` 重命名为 `pullingText`,类型变更为 `ReactNode` - `loadTxt` 重命名为 `loadingText`,类型变更为 `ReactNode` - `containerId` 重命名为 `target` +- 修订类名如 `top-box`、`bottom-box` 为 `nut-infinite-top-tips`、`nut-infinite-bottom-tips` #### Notify diff --git a/package.json b/package.json index 65cb8fe542..fe32610a97 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "@nutui/nutui-react", - "version": "2.3.3", + "name": "@nutui/nutui-react-taro", + "version": "2.5.1", "style": "dist/style.css", "main": "dist/nutui.react.umd.js", "module": "dist/esm/nutui-react.es.js", @@ -48,8 +48,10 @@ "generate:file": "node scripts/generate-nutui.js", "generate:themes": "node scripts/generate-themes.js", "generate:themes-dev": "node scripts/generate-themes-dev.js", - "checked": "npm run generate:file && tsc --project ./tsconfig.h5.json", + "checked": "npm run generate:file && tsc --project ./tsconfig.h5.json --noEmit", + "changelog": "node ./scripts/generate-changelog.js", "dev": "vite --open --force", + "dev:rtl": "VITE_RTL=rtl vite --open --force", "dev:jmapp": "VITE_APP_PROJECT_ID=jmapp vite --open --force", "dev:theme": "npm run generate:themes-dev && npm run checked && vite --force --config vite.config.theme.ts", "replace:scss": "node scripts/replace-scss-alias.js", @@ -63,15 +65,16 @@ "build:site": "npm run checked && vite build --config vite.config.build.site.ts", "build:site:jmapp": "npm run checked && VITE_APP_PROJECT_ID=jmapp vite build --config vite.config.build.site.ts", "build:taro:site": "npm run checked:taro && npm run generate:file:taro:pages && pnpm --dir ./packages/nutui-taro-demo build:h5", - "build:taro:site:jmapp": "npm run checked:taro && VITE_APP_PROJECT_ID=jmapp npm run generate:file:taro:pages && pnpm --dir ./packages/nutui-taro-demo build:h5", + "build:taro:site:jmapp": "npm run checked:taro && VITE_APP_PROJECT_ID=jmapp npm run generate:file:taro:pages && VITE_APP_PROJECT_ID=jmapp pnpm --dir ./packages/nutui-taro-demo build:h5", "build:theme:site": "npm run checked && vite build --config vite.config.theme.ts && npm run generate:themes-dev", "lint": "eslint ./src/packages", "lint:fix": "eslint --fix ./src/packages", "publish:beta": "npm publish --tag beta", - "prepare": "husky install && npm run generate:file && npm run generate:file:taro && npm run generate:file:taro:pages", - "test": "jest", + "prepare": "husky && npm run generate:file && npm run generate:file:taro && npm run generate:file:taro:pages", + "test": "vitest --coverage", + "test:ui": "vitest --ui --coverage", "generate:file:taro": "node scripts/taro/generate-nutui-taro.js", - "checked:taro": "npm run generate:file:taro && tsc --project ./tsconfig.taro.json", + "checked:taro": "npm run generate:file:taro && tsc --project ./tsconfig.taro.json --noEmit", "generate:file:taro:pages": "node scripts/taro/generate-taro-pages.js", "dev:taro:weapp": "pnpm --dir ./packages/nutui-taro-demo dev:weapp", "dev:taro:jd": "pnpm --dir ./packages/nutui-taro-demo dev:jd", @@ -91,120 +94,126 @@ "*.{ts,tsx,js,md}": "eslint" }, "dependencies": { - "@babel/runtime": "^7.21.0", - "@nutui/icons-react": "^1.0.0", - "@nutui/icons-react-taro": "^1.0.0", + "@babel/runtime": "^7.23.9", + "@nutui/icons-react": "^1.0.4", + "@nutui/icons-react-taro": "^1.0.4", "@nutui/touch-emulator": "^1.0.0", "@react-spring/web": "~9.6.1", "@use-gesture/react": "10.2.20", "async-validator": "^4.2.5", - "classnames": "^2.3.2", + "classnames": "^2.5.1", "lodash.isequal": "^4.5.0", "lodash.kebabcase": "^4.1.1", "react-transition-group": "^4.4.5" }, "devDependencies": { - "@babel/core": "^7.21.4", + "@babel/core": "^7.23.9", "@babel/plugin-proposal-class-properties": "^7.18.6", "@babel/plugin-proposal-object-rest-spread": "^7.20.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.21.4", - "@babel/preset-env": "^7.21.4", - "@babel/preset-react": "^7.18.6", - "@babel/preset-typescript": "^7.21.4", - "@commitlint/cli": "^18.0.0", - "@commitlint/config-conventional": "^18.0.0", - "@loadable/component": "^5.15.3", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10", - "@rollup/plugin-babel": "^6.0.3", - "@rollup/plugin-commonjs": "^25.0.0", + "@babel/plugin-transform-runtime": "^7.23.9", + "@babel/preset-env": "^7.23.9", + "@babel/preset-react": "^7.23.3", + "@babel/preset-typescript": "^7.23.3", + "@commitlint/cli": "^19.0.3", + "@commitlint/config-conventional": "^19.0.3", + "@loadable/component": "^5.16.3", + "@pmmmwh/react-refresh-webpack-plugin": "0.5.10", + "@rollup/plugin-babel": "^6.0.4", + "@rollup/plugin-commonjs": "^25.0.7", "@rollup/plugin-node-resolve": "15.2.3", - "@rollup/plugin-typescript": "^11.1.0", - "@tarojs/components": "3.6.18", - "@tarojs/plugin-platform-alipay": "3.6.18", - "@tarojs/plugin-platform-weapp": "3.6.18", - "@tarojs/react": "3.6.18", - "@tarojs/taro": "3.6.18", - "@testing-library/jest-dom": "^6.0.0", - "@testing-library/react": "^14.0.0", - "@types/jest": "^29.0.0", - "@types/loadable__component": "^5.13.4", - "@types/lodash.isequal": "^4.5.6", - "@types/lodash.kebabcase": "^4.1.7", - "@types/node": "^20.0.0", + "@rollup/plugin-typescript": "^11.1.6", + "@tarojs/components": "3.6.22", + "@tarojs/plugin-platform-alipay": "3.6.22", + "@tarojs/plugin-platform-weapp": "3.6.22", + "@tarojs/react": "3.6.22", + "@tarojs/taro": "3.6.22", + "@testing-library/jest-dom": "^6.4.2", + "@testing-library/react": "^14.2.1", + "@types/loadable__component": "^5.13.8", + "@types/lodash.isequal": "^4.5.8", + "@types/lodash.kebabcase": "^4.1.9", + "@types/node": "^20.11.19", "@types/postcss-import": "^14.0.3", - "@types/react": "^18.0.35", - "@types/react-dom": "^18.0.11", - "@types/react-syntax-highlighter": "^15.0.0", - "@types/react-test-renderer": "^18.0.0", - "@types/react-transition-group": "^4.4.5", - "@types/testing-library__jest-dom": "^5.14.5", - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0", - "@vitejs/plugin-react": "^4.0.0", - "autoprefixer": "^10.4.14", - "axios": "^1.0.0", + "@types/react": "^18.2.57", + "@types/react-dom": "^18.2.19", + "@types/react-syntax-highlighter": "^15.5.11", + "@types/react-test-renderer": "^18.0.7", + "@types/react-transition-group": "^4.4.10", + "@types/testing-library__jest-dom": "^6.0.0", + "@typescript-eslint/eslint-plugin": "^7.0.2", + "@typescript-eslint/parser": "^7.0.2", + "@vitejs/plugin-react": "^4.2.1", + "autoprefixer": "^10.4.17", + "axios": "^1.6.7", "babel-plugin-react-scoped-css": "^1.1.1", - "eslint": "^8.0.0", - "eslint-config-airbnb": "^19.0.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-markdown": "^3.0.0", - "eslint-plugin-prettier": "^5.0.0", - "eslint-plugin-react": "^7.32.2", + "eslint": "^8.56.0", + "eslint-config-airbnb": "^19.0.4", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-jsx-a11y": "^6.8.0", + "eslint-plugin-markdown": "^4.0.1", + "eslint-plugin-prettier": "^5.1.3", + "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-unused-imports": "^3.0.0", - "fs-extra": "^11.0.0", - "glob": "^10.0.0", - "husky": "^8.0.0", - "inquirer": "^9.0.0", - "jest": "^29.0.0", - "jest-canvas-mock": "^2.5.0", - "jest-environment-jsdom": "^29.7.0", - "jscodeshift": "^0.15.0", - "lint-staged": "^15.0.0", + "eslint-plugin-unused-imports": "^3.1.0", + "fs-extra": "^11.2.0", + "glob": "^10.3.10", + "husky": "^9.0.11", + "inquirer": "^9.2.15", + "jscodeshift": "^0.15.1", + "lint-staged": "^15.2.2", "lzutf8": "0.6.3", + "@mdx-js/mdx": "^3.0.1", + "@mdx-js/react": "^3.0.1", + "@mdx-js/rollup": "^3.0.1", + "highlight.js": "^11.9.0", "map-stream": "0.0.7", "markdown-it": "^14.0.0", - "marked": "^11.0.0", - "mobx": "^6.9.0", - "mobx-react-lite": "^4.0.0", - "postcss": "^8.4.21", - "postcss-import": "^15.0.0", + "marked": "^12.0.0", + "mobx": "^6.12.0", + "mobx-react-lite": "^4.0.5", + "postcss": "^8.4.35", + "postcss-import": "^16.0.1", "postcss-modules": "^6.0.0", - "prettier": "^3.0.0", + "postcss-rtlcss": "^5.1.0", + "postcss-scss": "^4.0.9", + "prettier": "^3.2.5", "react": "^18.2.0", "react-color": "^2.19.3", "react-dom": "^18.2.0", - "react-markdown": "^9.0.0", + "react-markdown": "^9.0.1", "react-refresh": "^0.14.0", - "react-router-dom": "^6.0.0", + "react-router-dom": "^6.22.1", "react-syntax-highlighter": "^15.5.0", "react-test-renderer": "^18.2.0", "reactcss": "^1.2.3", "remark-directive": "^3.0.0", "remark-gfm": "^4.0.0", - "rollup": "^4.0.0", + "rollup": "^4.12.0", "rollup-plugin-delete": "^2.0.0", - "rollup-plugin-dts": "^6.0.0", - "sass": "^1.62.0", + "rollup-plugin-dts": "^6.1.0", + "sass": "^1.71.1", "shelljs": "^0.8.5", - "ts-jest": "^29.1.1", - "ts-node": "^10.9.1", + "ts-node": "^10.9.2", "turndown": "^7.1.2", "turndown-plugin-gfm": "^1.0.2", - "typescript": "^4.9.5", + "typescript": "^5.3.3", "unist-util-visit": "^5.0.0", "vinyl-fs": "^4.0.0", - "vite": "^5.0.0", - "vite-plugin-dts": "^3.6.4" + "vite": "^5.1.3", + "vite-plugin-dts": "3.6.4", + "vitest": "^1.4.0", + "@vitest/coverage-v8": "^1.4.0", + "@vitest/ui": "^1.4.0", + "happy-dom": "^14.2.0", + "vitest-canvas-mock": "^0.3.3" }, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" }, "resolutions": { - "@types/react": "18", - "@types/react-dom": "18" + "@types/react": "^18.2.57", + "@types/react-dom": "^18.2.19" } } \ No newline at end of file diff --git a/packages/nutui-codemod/package.json b/packages/nutui-codemod/package.json index 5c62006b57..b9a66421ee 100644 --- a/packages/nutui-codemod/package.json +++ b/packages/nutui-codemod/package.json @@ -26,14 +26,14 @@ }, "license": "MIT", "dependencies": { - "chalk": "^5.0.0", + "chalk": "^5.3.0", "is-git-clean": "^1.1.0", - "jscodeshift": "^0.15.0" + "jscodeshift": "^0.15.1" }, "devDependencies": { - "jest": "^29.5.0", - "prettier": "^3.0.0", - "release-it": "^17.0.0", - "ts-jest": "^29.1.0" + "jest": "^29.7.0", + "prettier": "^3.2.5", + "release-it": "^17.1.1", + "ts-jest": "^29.1.2" } } diff --git a/packages/nutui-taro-demo/.gitignore b/packages/nutui-taro-demo/.gitignore index 8f6968b7d1..ccba12def7 100644 --- a/packages/nutui-taro-demo/.gitignore +++ b/packages/nutui-taro-demo/.gitignore @@ -7,6 +7,7 @@ node_modules/ src/base/ src/business/ src/dentry/ +src/dentry1/ src/exhibition/ src/feedback/ src/layout/ diff --git a/packages/nutui-taro-demo/config/index.js b/packages/nutui-taro-demo/config/index.js index 78f6d22394..a8fa6203d0 100644 --- a/packages/nutui-taro-demo/config/index.js +++ b/packages/nutui-taro-demo/config/index.js @@ -25,10 +25,18 @@ const config = { plugins: ['@tarojs/plugin-html'], compiler: 'webpack5', alias: { + '@nutui/nutui-react-taro/dist/locales/en-US.ts': path.resolve( + __dirname, + '../../../src/locales/en-US.ts' + ), '@/packages': path.resolve(__dirname, '../../../src/packages'), '@/sites': path.resolve(__dirname, '../../../src/sites'), '@/locales': path.resolve(__dirname, '../../../src/locales'), '@/utils': path.resolve(__dirname, '../../../src/utils'), + '@nutui/nutui-react-taro': path.resolve( + __dirname, + '../../../src/packages/nutui.react.taro.ts' + ), }, sass: { resource: [ diff --git a/packages/nutui-taro-demo/package.json b/packages/nutui-taro-demo/package.json index b51f43fb3e..d07931c100 100644 --- a/packages/nutui-taro-demo/package.json +++ b/packages/nutui-taro-demo/package.json @@ -44,53 +44,53 @@ ], "author": "", "dependencies": { - "@babel/runtime": "^7.21.0", + "@babel/runtime": "^7.23.9", "@nutui/touch-emulator": "^1.0.0", - "@pmmmwh/react-refresh-webpack-plugin": "^0.5.10", - "@tarojs/components": "3.6.18", - "@tarojs/helper": "3.6.18", - "@tarojs/plugin-framework-react": "3.6.18", - "@tarojs/plugin-html": "3.6.18", - "@tarojs/plugin-platform-alipay": "3.6.18", - "@tarojs/plugin-platform-h5": "3.6.18", - "@tarojs/plugin-platform-jd": "3.6.18", - "@tarojs/plugin-platform-qq": "3.6.18", - "@tarojs/plugin-platform-swan": "3.6.18", - "@tarojs/plugin-platform-tt": "3.6.18", - "@tarojs/plugin-platform-weapp": "3.6.18", - "@tarojs/react": "3.6.18", - "@tarojs/router": "3.6.18", - "@tarojs/runtime": "3.6.18", - "@tarojs/shared": "3.6.18", - "@tarojs/taro": "3.6.18", - "@tarojs/taro-h5": "3.6.18", - "babel-plugin-import": "^1.13.6", + "@pmmmwh/react-refresh-webpack-plugin": "0.5.10", + "@tarojs/components": "3.6.22", + "@tarojs/helper": "3.6.22", + "@tarojs/plugin-framework-react": "3.6.22", + "@tarojs/plugin-html": "3.6.22", + "@tarojs/plugin-platform-alipay": "3.6.22", + "@tarojs/plugin-platform-h5": "3.6.22", + "@tarojs/plugin-platform-jd": "3.6.22", + "@tarojs/plugin-platform-qq": "3.6.22", + "@tarojs/plugin-platform-swan": "3.6.22", + "@tarojs/plugin-platform-tt": "3.6.22", + "@tarojs/plugin-platform-weapp": "3.6.22", + "@tarojs/react": "3.6.22", + "@tarojs/router": "3.6.22", + "@tarojs/runtime": "3.6.22", + "@tarojs/shared": "3.6.22", + "@tarojs/taro": "3.6.22", + "@tarojs/taro-h5": "3.6.22", + "babel-plugin-import": "^1.13.8", "react": "^18.2.0", "react-dom": "^18.2.0", - "react-refresh": "^0.14.0", - "webpack": "^5.79.0" + "react-refresh": "^0.14.0" + }, "devDependencies": { - "@babel/core": "^7.21.4", - "@tarojs/cli": "3.6.18", - "@tarojs/webpack5-runner": "3.6.18", - "@types/react": "^18.0.35", - "@types/react-dom": "^18.0.11", + "@babel/core": "^7.23.9", + "@tarojs/cli": "3.6.22", + "@tarojs/webpack5-runner": "3.6.22", + "@types/react": "^18.2.57", + "@types/react-dom": "^18.2.19", "@types/react-router-dom": "^5.3.3", - "@types/react-syntax-highlighter": "^15.0.0", - "@types/react-test-renderer": "^18.0.0", - "@types/react-transition-group": "^4.4.5", - "@types/webpack-env": "^1.18.0", - "@typescript-eslint/eslint-plugin": "^6.0.0", - "@typescript-eslint/parser": "^6.0.0", + "@types/react-syntax-highlighter": "^15.5.11", + "@types/react-test-renderer": "^18.0.7", + "@types/react-transition-group": "^4.4.10", + "@types/webpack-env": "^1.18.4", + "@typescript-eslint/eslint-plugin": "^7.0.2", + "@typescript-eslint/parser": "^7.0.2", "babel-preset-taro": "^3.6.4", - "eslint": "^8.38.0", + "eslint": "^8.56.0", "eslint-config-taro": "^3.6.4", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-react": "^7.32.2", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-react": "^7.33.2", "eslint-plugin-react-hooks": "^4.6.0", - "postcss": "^8.4.21", - "stylelint": "^16.0.0", - "typescript": "^4.9.5" + "postcss": "^8.4.35", + "stylelint": "^16.2.1", + "typescript": "^5.3.3" } } diff --git a/packages/nutui-taro-demo/project.config.json b/packages/nutui-taro-demo/project.config.json index b57478506f..c087d49e28 100644 --- a/packages/nutui-taro-demo/project.config.json +++ b/packages/nutui-taro-demo/project.config.json @@ -44,4 +44,4 @@ "tabIndent": "insertSpaces", "tabSize": 2 } -} \ No newline at end of file +} diff --git a/packages/nutui-taro-demo/src/app.config.ts b/packages/nutui-taro-demo/src/app.config.ts index 30cbdaa099..06b2236af0 100644 --- a/packages/nutui-taro-demo/src/app.config.ts +++ b/packages/nutui-taro-demo/src/app.config.ts @@ -1,129 +1,133 @@ - const subPackages = [ { - "root": "base", - "pages": [ - "pages/button/index", - "pages/cell/index", - "pages/configprovider/index", - "pages/icon/index", - "pages/image/index", - "pages/overlay/index" - ] + root: 'base', + pages: [ + 'pages/button/index', + 'pages/cell/index', + 'pages/configprovider/index', + 'pages/icon/index', + 'pages/image/index', + 'pages/overlay/index', + ], + }, + { + root: 'layout', + pages: [ + 'pages/divider/index', + 'pages/grid/index', + 'pages/layout/index', + 'pages/safearea/index', + 'pages/space/index', + 'pages/sticky/index', + ], }, { - "root": "layout", - "pages": [ - "pages/divider/index", - "pages/grid/index", - "pages/layout/index", - "pages/safearea/index", - "pages/space/index", - "pages/sticky/index" - ] + root: 'nav', + pages: [ + 'pages/backtop/index', + 'pages/elevator/index', + 'pages/fixednav/index', + 'pages/navbar/index', + 'pages/sidenavbar/index', + 'pages/tabbar/index', + 'pages/tabs/index', + ], }, { - "root": "nav", - "pages": [ - "pages/backtop/index", - "pages/elevator/index", - "pages/fixednav/index", - "pages/navbar/index", - "pages/sidenavbar/index", - "pages/tabbar/index", - "pages/tabs/index" - ] + root: 'dentry', + pages: [ + 'pages/address/index', + 'pages/calendar/index', + 'pages/calendarcard/index', + 'pages/cascader/index', + 'pages/checkbox/index', + 'pages/datepicker/index', + 'pages/form/index', + 'pages/input/index', + 'pages/inputnumber/index', + ], }, { - "root": "dentry", - "pages": [ - "pages/address/index", - "pages/calendar/index", - "pages/calendarcard/index", - "pages/cascader/index", - "pages/checkbox/index", - "pages/datepicker/index", - "pages/form/index", - "pages/input/index", - "pages/inputnumber/index", - "pages/menu/index", - "pages/numberkeyboard/index", - "pages/picker/index", - "pages/radio/index", - "pages/range/index", - "pages/rate/index", - "pages/searchbar/index", - "pages/shortpassword/index", - "pages/signature/index", - "pages/switch/index", - "pages/textarea/index", - "pages/uploader/index" - ] + root: 'dentry1', + pages: [ + 'pages/menu/index', + 'pages/numberkeyboard/index', + 'pages/picker/index', + 'pages/radio/index', + 'pages/range/index', + 'pages/rate/index', + 'pages/searchbar/index', + 'pages/shortpassword/index', + 'pages/signature/index', + 'pages/switch/index', + 'pages/textarea/index', + 'pages/uploader/index', + ], }, { - "root": "feedback", - "pages": [ - "pages/actionsheet/index", - "pages/badge/index", - "pages/dialog/index", - "pages/drag/index", - "pages/empty/index", - "pages/infiniteloading/index", - "pages/loading/index", - "pages/noticebar/index", - "pages/notify/index", - "pages/popover/index", - "pages/popup/index", - "pages/pulltorefresh/index", - "pages/skeleton/index", - "pages/swipe/index", - "pages/toast/index" - ] + root: 'feedback', + pages: [ + 'pages/actionsheet/index', + 'pages/badge/index', + 'pages/dialog/index', + 'pages/drag/index', + 'pages/empty/index', + 'pages/infiniteloading/index', + 'pages/loading/index', + 'pages/noticebar/index', + 'pages/notify/index', + 'pages/popover/index', + 'pages/popup/index', + 'pages/pulltorefresh/index', + 'pages/skeleton/index', + 'pages/swipe/index', + 'pages/toast/index', + ], }, { - "root": "exhibition", - "pages": [ - "pages/animate/index", - "pages/animatingnumbers/index", - "pages/avatar/index", - "pages/circleprogress/index", - "pages/collapse/index", - "pages/countdown/index", - "pages/ellipsis/index", - "pages/imagepreview/index", - "pages/indicator/index", - "pages/pagination/index", - "pages/price/index", - "pages/progress/index", - "pages/steps/index", - "pages/swiper/index", - "pages/table/index", - "pages/tag/index", - "pages/tour/index", - "pages/video/index", - "pages/virtuallist/index" - ] + root: 'exhibition', + pages: [ + 'pages/animate/index', + 'pages/animatingnumbers/index', + 'pages/avatar/index', + 'pages/circleprogress/index', + 'pages/collapse/index', + 'pages/countdown/index', + 'pages/ellipsis/index', + 'pages/imagepreview/index', + 'pages/indicator/index', + 'pages/pagination/index', + 'pages/price/index', + 'pages/progress/index', + 'pages/steps/index', + 'pages/swiper/index', + 'pages/table/index', + 'pages/tag/index', + 'pages/tour/index', + 'pages/video/index', + 'pages/virtuallist/index', + ], }, { - "root": "business", - "pages": [ - "pages/avatarcropper/index", - "pages/barrage/index", - "pages/card/index", - "pages/timeselect/index", - "pages/trendarrow/index", - "pages/watermark/index" - ] - } -]; + root: 'business', + pages: [ + 'pages/avatarcropper/index', + 'pages/barrage/index', + 'pages/card/index', + 'pages/timeselect/index', + 'pages/trendarrow/index', + 'pages/watermark/index', + ], + }, +] -export default defineAppConfig ({ +export default defineAppConfig({ pages: ['pages/index/index'], subPackages, window: { backgroundTextStyle: 'light', navigationBarBackgroundColor: '#fff', navigationBarTitleText: 'NutUI-React', - navigationBarTextStyle: 'black' - } -}) \ No newline at end of file + navigationBarTextStyle: 'black', + }, +}) diff --git a/packages/nutui-taro-demo/src/app.scss b/packages/nutui-taro-demo/src/app.scss index 1af3ee1761..376205b621 100644 --- a/packages/nutui-taro-demo/src/app.scss +++ b/packages/nutui-taro-demo/src/app.scss @@ -24,6 +24,14 @@ body { overflow-y: auto; padding: 0px 17px 10px 17px; + &.full { + padding: 57px 0 0 0; + + h2 { + padding-left: 17px; + } + } + &-full { padding: 0 0 0 0 !important; diff --git a/packages/nutui-taro-demo/src/pages/index/index.tsx b/packages/nutui-taro-demo/src/pages/index/index.tsx index 76fec74158..47f9666161 100644 --- a/packages/nutui-taro-demo/src/pages/index/index.tsx +++ b/packages/nutui-taro-demo/src/pages/index/index.tsx @@ -7,6 +7,7 @@ import Schema from 'async-validator' // const navs = pkg.nav // console.log(navs) + try { console.log('xxx', Schema) } catch (e) {} @@ -50,8 +51,8 @@ const Index = () => {
{navs.map((nav) => ( -
    -
  1. {nav.name}
  2. +
      + {nav.enName === 'dentry1' ? null :
    1. {nav.name}
    2. }
        {nav.packages.map((com) => com.show && com.taro ? ( diff --git a/packages/nutui-templates/create-app-demo/package.json b/packages/nutui-templates/create-app-demo/package.json index 33adf61fef..e3cf32e80d 100644 --- a/packages/nutui-templates/create-app-demo/package.json +++ b/packages/nutui-templates/create-app-demo/package.json @@ -3,8 +3,8 @@ "version": "0.1.0", "private": true, "dependencies": { - "@nutui/icons-react": "^0.0.1", - "@nutui/nutui-react": "^2.0.14", + "@nutui/icons-react": "^1.0.1", + "@nutui/nutui-react": "^2.4.0", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", diff --git a/packages/nutui-templates/next-demo/package.json b/packages/nutui-templates/next-demo/package.json index 9e49fbcc69..c43ef64a2c 100644 --- a/packages/nutui-templates/next-demo/package.json +++ b/packages/nutui-templates/next-demo/package.json @@ -9,8 +9,8 @@ "lint": "next lint" }, "dependencies": { - "@nutui/icons-react": "^0.0.1", - "@nutui/nutui-react": "^2.0.13", + "@nutui/icons-react": "^1.0.1", + "@nutui/nutui-react": "^2.4.0", "@types/node": "20.5.0", "@types/react": "18.2.20", "@types/react-dom": "18.2.7", diff --git a/packages/nutui-templates/vite-demo/package.json b/packages/nutui-templates/vite-demo/package.json index f1daac3600..1409cdf362 100644 --- a/packages/nutui-templates/vite-demo/package.json +++ b/packages/nutui-templates/vite-demo/package.json @@ -10,8 +10,8 @@ "preview": "vite preview" }, "dependencies": { - "@nutui/icons-react": "^0.0.1", - "@nutui/nutui-react": "^2.0.14", + "@nutui/icons-react": "^1.0.1", + "@nutui/nutui-react": "^2.4.0", "react": "^18.2.0", "react-dom": "^18.2.0" }, @@ -28,4 +28,4 @@ "vite": "^4.4.5", "vite-plugin-imp": "^2.4.0" } -} +} \ No newline at end of file diff --git a/packages/nutui-templates/with-rsbuild/package.json b/packages/nutui-templates/with-rsbuild/package.json index 88cb0df085..127986c6ed 100644 --- a/packages/nutui-templates/with-rsbuild/package.json +++ b/packages/nutui-templates/with-rsbuild/package.json @@ -8,8 +8,8 @@ "preview": "rsbuild preview" }, "dependencies": { - "@nutui/icons-react": "^0.0.4", - "@nutui/nutui-react": "^2.1.0", + "@nutui/icons-react": "^1.0.1", + "@nutui/nutui-react": "^2.4.0", "react": "^18.2.0", "react-dom": "^18.2.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e36fc92611..5b63cb969e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,22 +5,22 @@ settings: excludeLinksFromLockfile: false overrides: - '@types/react': '18' - '@types/react-dom': '18' + '@types/react': ^18.2.57 + '@types/react-dom': ^18.2.19 importers: .: dependencies: '@babel/runtime': - specifier: ^7.21.0 - version: 7.23.5 + specifier: ^7.23.9 + version: 7.23.9 '@nutui/icons-react': - specifier: ^1.0.0 - version: 1.0.0 + specifier: ^1.0.4 + version: 1.0.4 '@nutui/icons-react-taro': - specifier: ^1.0.0 - version: 1.0.0 + specifier: ^1.0.4 + version: 1.0.4 '@nutui/touch-emulator': specifier: ^1.0.0 version: 1.0.0 @@ -34,8 +34,8 @@ importers: specifier: ^4.2.5 version: 4.2.5 classnames: - specifier: ^2.3.2 - version: 2.3.2 + specifier: ^2.5.1 + version: 2.5.1 lodash.isequal: specifier: ^4.5.0 version: 4.5.0 @@ -47,185 +47,194 @@ importers: version: 4.4.5(react-dom@18.2.0)(react@18.2.0) devDependencies: '@babel/core': - specifier: ^7.21.4 - version: 7.23.5 + specifier: ^7.23.9 + version: 7.23.9 '@babel/plugin-proposal-class-properties': specifier: ^7.18.6 - version: 7.18.6(@babel/core@7.23.5) + version: 7.18.6(@babel/core@7.23.9) '@babel/plugin-proposal-object-rest-spread': specifier: ^7.20.7 - version: 7.20.7(@babel/core@7.23.5) + version: 7.20.7(@babel/core@7.23.9) '@babel/plugin-syntax-dynamic-import': specifier: ^7.8.3 - version: 7.8.3(@babel/core@7.23.5) + version: 7.8.3(@babel/core@7.23.9) '@babel/plugin-transform-runtime': - specifier: ^7.21.4 - version: 7.23.4(@babel/core@7.23.5) + specifier: ^7.23.9 + version: 7.23.9(@babel/core@7.23.9) '@babel/preset-env': - specifier: ^7.21.4 - version: 7.23.5(@babel/core@7.23.5) + specifier: ^7.23.9 + version: 7.23.9(@babel/core@7.23.9) '@babel/preset-react': - specifier: ^7.18.6 - version: 7.23.3(@babel/core@7.23.5) + specifier: ^7.23.3 + version: 7.23.3(@babel/core@7.23.9) '@babel/preset-typescript': - specifier: ^7.21.4 - version: 7.23.3(@babel/core@7.23.5) + specifier: ^7.23.3 + version: 7.23.3(@babel/core@7.23.9) '@commitlint/cli': - specifier: ^18.0.0 - version: 18.4.3(typescript@4.9.5) + specifier: ^19.0.3 + version: 19.0.3(@types/node@20.11.19)(typescript@5.3.3) '@commitlint/config-conventional': - specifier: ^18.0.0 - version: 18.4.3 + specifier: ^19.0.3 + version: 19.0.3 '@loadable/component': - specifier: ^5.15.3 - version: 5.15.3(react@18.2.0) + specifier: ^5.16.3 + version: 5.16.3(react@18.2.0) + '@mdx-js/mdx': + specifier: ^3.0.1 + version: 3.0.1 + '@mdx-js/react': + specifier: ^3.0.1 + version: 3.0.1(@types/react@18.2.57)(react@18.2.0) + '@mdx-js/rollup': + specifier: ^3.0.1 + version: 3.0.1(rollup@4.12.0) '@pmmmwh/react-refresh-webpack-plugin': - specifier: ^0.5.10 - version: 0.5.11(react-refresh@0.14.0)(webpack@5.89.0) + specifier: 0.5.10 + version: 0.5.10(react-refresh@0.14.0)(webpack@5.79.0) '@rollup/plugin-babel': - specifier: ^6.0.3 - version: 6.0.4(@babel/core@7.23.5)(rollup@4.6.1) + specifier: ^6.0.4 + version: 6.0.4(@babel/core@7.23.9)(rollup@4.12.0) '@rollup/plugin-commonjs': - specifier: ^25.0.0 - version: 25.0.7(rollup@4.6.1) + specifier: ^25.0.7 + version: 25.0.7(rollup@4.12.0) '@rollup/plugin-node-resolve': specifier: 15.2.3 - version: 15.2.3(rollup@4.6.1) + version: 15.2.3(rollup@4.12.0) '@rollup/plugin-typescript': - specifier: ^11.1.0 - version: 11.1.5(rollup@4.6.1)(typescript@4.9.5) + specifier: ^11.1.6 + version: 11.1.6(rollup@4.12.0)(typescript@5.3.3) '@tarojs/components': - specifier: 3.6.18 - version: 3.6.18(@types/react@18.2.42)(postcss@8.4.32)(react@18.2.0) + specifier: 3.6.22 + version: 3.6.22(@types/react@18.2.57)(postcss@8.4.35)(react@18.2.0) '@tarojs/plugin-platform-alipay': - specifier: 3.6.18 - version: 3.6.18(@types/react@18.2.42)(postcss@8.4.32)(react@18.2.0) + specifier: 3.6.22 + version: 3.6.22(@types/react@18.2.57)(postcss@8.4.35)(react@18.2.0) '@tarojs/plugin-platform-weapp': - specifier: 3.6.18 - version: 3.6.18(@types/react@18.2.42)(postcss@8.4.32) + specifier: 3.6.22 + version: 3.6.22(@types/react@18.2.57)(postcss@8.4.35) '@tarojs/react': - specifier: 3.6.18 - version: 3.6.18(react@18.2.0) + specifier: 3.6.22 + version: 3.6.22(react@18.2.0) '@tarojs/taro': - specifier: 3.6.18 - version: 3.6.18(@types/react@18.2.42)(postcss@8.4.32) + specifier: 3.6.22 + version: 3.6.22(@types/react@18.2.57)(postcss@8.4.35) '@testing-library/jest-dom': - specifier: ^6.0.0 - version: 6.1.5(@types/jest@29.5.11)(jest@29.7.0) + specifier: ^6.4.2 + version: 6.4.2(vitest@1.4.0) '@testing-library/react': - specifier: ^14.0.0 - version: 14.1.2(react-dom@18.2.0)(react@18.2.0) - '@types/jest': - specifier: ^29.0.0 - version: 29.5.11 + specifier: ^14.2.1 + version: 14.2.1(react-dom@18.2.0)(react@18.2.0) '@types/loadable__component': - specifier: ^5.13.4 + specifier: ^5.13.8 version: 5.13.8 '@types/lodash.isequal': - specifier: ^4.5.6 + specifier: ^4.5.8 version: 4.5.8 '@types/lodash.kebabcase': - specifier: ^4.1.7 + specifier: ^4.1.9 version: 4.1.9 '@types/node': - specifier: ^20.0.0 - version: 20.10.4 + specifier: ^20.11.19 + version: 20.11.19 '@types/postcss-import': specifier: ^14.0.3 version: 14.0.3 '@types/react': - specifier: '18' - version: 18.2.42 + specifier: ^18.2.57 + version: 18.2.57 '@types/react-dom': - specifier: '18' - version: 18.2.17 + specifier: ^18.2.19 + version: 18.2.19 '@types/react-syntax-highlighter': - specifier: ^15.0.0 + specifier: ^15.5.11 version: 15.5.11 '@types/react-test-renderer': - specifier: ^18.0.0 + specifier: ^18.0.7 version: 18.0.7 '@types/react-transition-group': - specifier: ^4.4.5 + specifier: ^4.4.10 version: 4.4.10 '@types/testing-library__jest-dom': - specifier: ^5.14.5 - version: 5.14.9 - '@typescript-eslint/eslint-plugin': specifier: ^6.0.0 - version: 6.13.2(@typescript-eslint/parser@6.13.2)(eslint@8.55.0)(typescript@4.9.5) + version: 6.0.0(vitest@1.4.0) + '@typescript-eslint/eslint-plugin': + specifier: ^7.0.2 + version: 7.0.2(@typescript-eslint/parser@7.0.2)(eslint@8.56.0)(typescript@5.3.3) '@typescript-eslint/parser': - specifier: ^6.0.0 - version: 6.13.2(eslint@8.55.0)(typescript@4.9.5) + specifier: ^7.0.2 + version: 7.0.2(eslint@8.56.0)(typescript@5.3.3) '@vitejs/plugin-react': - specifier: ^4.0.0 - version: 4.2.1(vite@5.0.6) + specifier: ^4.2.1 + version: 4.2.1(vite@5.1.3) + '@vitest/coverage-v8': + specifier: ^1.4.0 + version: 1.4.0(vitest@1.4.0) + '@vitest/ui': + specifier: ^1.4.0 + version: 1.4.0(vitest@1.4.0) autoprefixer: - specifier: ^10.4.14 - version: 10.4.16(postcss@8.4.32) + specifier: ^10.4.17 + version: 10.4.17(postcss@8.4.35) axios: - specifier: ^1.0.0 - version: 1.6.2 + specifier: ^1.6.7 + version: 1.6.7 babel-plugin-react-scoped-css: specifier: ^1.1.1 - version: 1.1.1(@babel/core@7.23.5) + version: 1.1.1(@babel/core@7.23.9) eslint: - specifier: ^8.0.0 - version: 8.55.0 + specifier: ^8.56.0 + version: 8.56.0 eslint-config-airbnb: - specifier: ^19.0.0 - version: 19.0.4(eslint-plugin-import@2.29.0)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.55.0) + specifier: ^19.0.4 + version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.56.0) eslint-config-prettier: - specifier: ^9.0.0 - version: 9.1.0(eslint@8.55.0) + specifier: ^9.1.0 + version: 9.1.0(eslint@8.56.0) eslint-plugin-import: - specifier: ^2.27.5 - version: 2.29.0(@typescript-eslint/parser@6.13.2)(eslint@8.55.0) + specifier: ^2.29.1 + version: 2.29.1(@typescript-eslint/parser@7.0.2)(eslint@8.56.0) eslint-plugin-jsx-a11y: - specifier: ^6.7.1 - version: 6.8.0(eslint@8.55.0) + specifier: ^6.8.0 + version: 6.8.0(eslint@8.56.0) eslint-plugin-markdown: - specifier: ^3.0.0 - version: 3.0.1(eslint@8.55.0) + specifier: ^4.0.1 + version: 4.0.1(eslint@8.56.0) eslint-plugin-prettier: - specifier: ^5.0.0 - version: 5.0.1(eslint-config-prettier@9.1.0)(eslint@8.55.0)(prettier@3.1.0) + specifier: ^5.1.3 + version: 5.1.3(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.5) eslint-plugin-react: - specifier: ^7.32.2 - version: 7.33.2(eslint@8.55.0) + specifier: ^7.33.2 + version: 7.33.2(eslint@8.56.0) eslint-plugin-react-hooks: specifier: ^4.6.0 - version: 4.6.0(eslint@8.55.0) + version: 4.6.0(eslint@8.56.0) eslint-plugin-unused-imports: - specifier: ^3.0.0 - version: 3.0.0(@typescript-eslint/eslint-plugin@6.13.2)(eslint@8.55.0) + specifier: ^3.1.0 + version: 3.1.0(@typescript-eslint/eslint-plugin@7.0.2)(eslint@8.56.0) fs-extra: - specifier: ^11.0.0 + specifier: ^11.2.0 version: 11.2.0 glob: - specifier: ^10.0.0 + specifier: ^10.3.10 version: 10.3.10 + happy-dom: + specifier: ^14.2.0 + version: 14.2.0 + highlight.js: + specifier: ^11.9.0 + version: 11.9.0 husky: - specifier: ^8.0.0 - version: 8.0.3 + specifier: ^9.0.11 + version: 9.0.11 inquirer: - specifier: ^9.0.0 - version: 9.2.12 - jest: - specifier: ^29.0.0 - version: 29.7.0(@types/node@20.10.4)(ts-node@10.9.1) - jest-canvas-mock: - specifier: ^2.5.0 - version: 2.5.2 - jest-environment-jsdom: - specifier: ^29.7.0 - version: 29.7.0 + specifier: ^9.2.15 + version: 9.2.15 jscodeshift: - specifier: ^0.15.0 - version: 0.15.1(@babel/preset-env@7.23.5) + specifier: ^0.15.1 + version: 0.15.1(@babel/preset-env@7.23.9) lint-staged: - specifier: ^15.0.0 - version: 15.2.0 + specifier: ^15.2.2 + version: 15.2.2 lzutf8: specifier: 0.6.3 version: 0.6.3 @@ -236,26 +245,32 @@ importers: specifier: ^14.0.0 version: 14.0.0 marked: - specifier: ^11.0.0 - version: 11.0.0 + specifier: ^12.0.0 + version: 12.0.0 mobx: - specifier: ^6.9.0 + specifier: ^6.12.0 version: 6.12.0 mobx-react-lite: - specifier: ^4.0.0 + specifier: ^4.0.5 version: 4.0.5(mobx@6.12.0)(react-dom@18.2.0)(react@18.2.0) postcss: - specifier: ^8.4.21 - version: 8.4.32 + specifier: ^8.4.35 + version: 8.4.35 postcss-import: - specifier: ^15.0.0 - version: 15.1.0(postcss@8.4.32) + specifier: ^16.0.1 + version: 16.0.1(postcss@8.4.35) postcss-modules: specifier: ^6.0.0 - version: 6.0.0(postcss@8.4.32) + version: 6.0.0(postcss@8.4.35) + postcss-rtlcss: + specifier: ^5.1.0 + version: 5.1.0(postcss@8.4.35) + postcss-scss: + specifier: ^4.0.9 + version: 4.0.9(postcss@8.4.35) prettier: - specifier: ^3.0.0 - version: 3.1.0 + specifier: ^3.2.5 + version: 3.2.5 react: specifier: ^18.2.0 version: 18.2.0 @@ -266,14 +281,14 @@ importers: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) react-markdown: - specifier: ^9.0.0 - version: 9.0.1(@types/react@18.2.42)(react@18.2.0) + specifier: ^9.0.1 + version: 9.0.1(@types/react@18.2.57)(react@18.2.0) react-refresh: specifier: ^0.14.0 version: 0.14.0 react-router-dom: - specifier: ^6.0.0 - version: 6.20.1(react-dom@18.2.0)(react@18.2.0) + specifier: ^6.22.1 + version: 6.22.1(react-dom@18.2.0)(react@18.2.0) react-syntax-highlighter: specifier: ^15.5.0 version: 15.5.0(react@18.2.0) @@ -290,26 +305,23 @@ importers: specifier: ^4.0.0 version: 4.0.0 rollup: - specifier: ^4.0.0 - version: 4.6.1 + specifier: ^4.12.0 + version: 4.12.0 rollup-plugin-delete: specifier: ^2.0.0 version: 2.0.0 rollup-plugin-dts: - specifier: ^6.0.0 - version: 6.1.0(rollup@4.6.1)(typescript@4.9.5) + specifier: ^6.1.0 + version: 6.1.0(rollup@4.12.0)(typescript@5.3.3) sass: - specifier: ^1.62.0 - version: 1.69.5 + specifier: ^1.71.1 + version: 1.71.1 shelljs: specifier: ^0.8.5 version: 0.8.5 - ts-jest: - specifier: ^29.1.1 - version: 29.1.1(@babel/core@7.23.5)(jest@29.7.0)(typescript@4.9.5) ts-node: - specifier: ^10.9.1 - version: 10.9.1(@swc/core@1.3.23)(@types/node@20.10.4)(typescript@4.9.5) + specifier: ^10.9.2 + version: 10.9.2(@swc/core@1.3.96)(@types/node@20.11.19)(typescript@5.3.3) turndown: specifier: ^7.1.2 version: 7.1.2 @@ -317,8 +329,8 @@ importers: specifier: ^1.0.2 version: 1.0.2 typescript: - specifier: ^4.9.5 - version: 4.9.5 + specifier: ^5.3.3 + version: 5.3.3 unist-util-visit: specifier: ^5.0.0 version: 5.0.0 @@ -326,101 +338,107 @@ importers: specifier: ^4.0.0 version: 4.0.0 vite: - specifier: ^5.0.0 - version: 5.0.6(@types/node@20.10.4)(sass@1.69.5) + specifier: ^5.1.3 + version: 5.1.3(@types/node@20.11.19)(sass@1.71.1) vite-plugin-dts: - specifier: ^3.6.4 - version: 3.6.4(@types/node@20.10.4)(rollup@4.6.1)(typescript@4.9.5)(vite@5.0.6) + specifier: 3.6.4 + version: 3.6.4(@types/node@20.11.19)(rollup@4.12.0)(typescript@5.3.3)(vite@5.1.3) + vitest: + specifier: ^1.4.0 + version: 1.4.0(@types/node@20.11.19)(@vitest/ui@1.4.0)(happy-dom@14.2.0)(sass@1.71.1) + vitest-canvas-mock: + specifier: ^0.3.3 + version: 0.3.3(vitest@1.4.0) packages/nutui-codemod: dependencies: chalk: - specifier: ^5.0.0 + specifier: ^5.3.0 version: 5.3.0 is-git-clean: specifier: ^1.1.0 version: 1.1.0 jscodeshift: - specifier: ^0.15.0 - version: 0.15.1(@babel/preset-env@7.23.5) + specifier: ^0.15.1 + version: 0.15.1(@babel/preset-env@7.23.9) devDependencies: jest: - specifier: ^29.5.0 - version: 29.7.0(@types/node@20.10.4)(ts-node@10.9.1) + specifier: ^29.7.0 + version: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) prettier: - specifier: ^3.0.0 - version: 3.1.0 + specifier: ^3.2.5 + version: 3.2.5 release-it: - specifier: ^17.0.0 - version: 17.0.0(typescript@4.9.5) + specifier: ^17.1.1 + version: 17.1.1(typescript@5.3.3) ts-jest: - specifier: ^29.1.0 - version: 29.1.1(@babel/core@7.23.5)(jest@29.7.0)(typescript@4.9.5) + specifier: ^29.1.2 + version: 29.1.2(@babel/core@7.23.9)(jest@29.7.0)(typescript@5.3.3) packages/nutui-taro-demo: dependencies: '@babel/runtime': - specifier: ^7.21.0 - version: 7.23.5 + specifier: ^7.23.9 + version: 7.23.9 '@nutui/touch-emulator': specifier: ^1.0.0 version: 1.0.0 '@pmmmwh/react-refresh-webpack-plugin': - specifier: ^0.5.10 - version: 0.5.11(react-refresh@0.14.0)(webpack@5.89.0) + specifier: 0.5.10 + version: 0.5.10(react-refresh@0.14.0)(webpack@5.79.0) '@tarojs/components': - specifier: 3.6.18 - version: 3.6.18(@types/react@18.2.42)(postcss@8.4.32)(react@18.2.0) + specifier: 3.6.22 + version: 3.6.22(@types/react@18.2.57)(postcss@8.4.35)(react@18.2.0) '@tarojs/helper': - specifier: 3.6.18 - version: 3.6.18 + specifier: 3.6.22 + version: 3.6.22 '@tarojs/plugin-framework-react': - specifier: 3.6.18 - version: 3.6.18(@pmmmwh/react-refresh-webpack-plugin@0.5.11)(@types/react@18.2.42)(postcss@8.4.32)(react-refresh@0.14.0)(react@18.2.0) + specifier: 3.6.22 + version: 3.6.22(@pmmmwh/react-refresh-webpack-plugin@0.5.10)(@types/react@18.2.57)(postcss@8.4.35)(react-refresh@0.14.0)(react@18.2.0) '@tarojs/plugin-html': - specifier: 3.6.18 - version: 3.6.18(@types/react@18.2.42)(postcss@8.4.32) + specifier: 3.6.22 + version: 3.6.22(@types/react@18.2.57)(postcss@8.4.35) '@tarojs/plugin-platform-alipay': - specifier: 3.6.18 - version: 3.6.18(@types/react@18.2.42)(postcss@8.4.32)(react@18.2.0) + specifier: 3.6.22 + version: 3.6.22(@types/react@18.2.57)(postcss@8.4.35)(react@18.2.0) '@tarojs/plugin-platform-h5': - specifier: 3.6.18 - version: 3.6.18(@types/react@18.2.42)(postcss@8.4.32) + specifier: 3.6.22 + version: 3.6.22(@types/react@18.2.57)(postcss@8.4.35) '@tarojs/plugin-platform-jd': - specifier: 3.6.18 - version: 3.6.18(@types/react@18.2.42)(postcss@8.4.32) + specifier: 3.6.22 + version: 3.6.22(@types/react@18.2.57)(postcss@8.4.35) '@tarojs/plugin-platform-qq': - specifier: 3.6.18 - version: 3.6.18(@types/react@18.2.42)(postcss@8.4.32) + specifier: 3.6.22 + version: 3.6.22(@types/react@18.2.57)(postcss@8.4.35) '@tarojs/plugin-platform-swan': - specifier: 3.6.18 - version: 3.6.18(@types/react@18.2.42)(postcss@8.4.32) + specifier: 3.6.22 + version: 3.6.22(@types/react@18.2.57)(postcss@8.4.35) '@tarojs/plugin-platform-tt': - specifier: 3.6.18 - version: 3.6.18(@types/react@18.2.42)(postcss@8.4.32) + specifier: 3.6.22 + version: 3.6.22(@types/react@18.2.57)(postcss@8.4.35) '@tarojs/plugin-platform-weapp': - specifier: 3.6.18 - version: 3.6.18(@types/react@18.2.42)(postcss@8.4.32) + specifier: 3.6.22 + version: 3.6.22(@types/react@18.2.57)(postcss@8.4.35) '@tarojs/react': - specifier: 3.6.18 - version: 3.6.18(react@18.2.0) + specifier: 3.6.22 + version: 3.6.22(react@18.2.0) '@tarojs/router': - specifier: 3.6.18 - version: 3.6.18(@types/react@18.2.42)(postcss@8.4.32) + specifier: 3.6.22 + version: 3.6.22(@types/react@18.2.57)(postcss@8.4.35) '@tarojs/runtime': - specifier: 3.6.18 - version: 3.6.18 + specifier: 3.6.22 + version: 3.6.22 '@tarojs/shared': - specifier: 3.6.18 - version: 3.6.18 + specifier: 3.6.22 + version: 3.6.22 '@tarojs/taro': - specifier: 3.6.18 - version: 3.6.18(@types/react@18.2.42)(postcss@8.4.32) + specifier: 3.6.22 + version: 3.6.22(@types/react@18.2.57)(postcss@8.4.35) '@tarojs/taro-h5': - specifier: 3.6.18 - version: 3.6.18(@types/react@18.2.42)(postcss@8.4.32) + specifier: 3.6.22 + version: 3.6.22(@types/react@18.2.57)(postcss@8.4.35) babel-plugin-import: - specifier: ^1.13.6 + specifier: ^1.13.8 version: 1.13.8 react: specifier: ^18.2.0 @@ -431,73 +449,70 @@ importers: react-refresh: specifier: ^0.14.0 version: 0.14.0 - webpack: - specifier: ^5.79.0 - version: 5.89.0(@swc/core@1.3.23) devDependencies: '@babel/core': - specifier: ^7.21.4 - version: 7.23.5 + specifier: ^7.23.9 + version: 7.23.9 '@tarojs/cli': - specifier: 3.6.18 - version: 3.6.18(@types/react@18.2.42)(postcss@8.4.32) + specifier: 3.6.22 + version: 3.6.22(@types/react@18.2.57)(postcss@8.4.35) '@tarojs/webpack5-runner': - specifier: 3.6.18 - version: 3.6.18(@babel/core@7.23.5)(@swc/core@1.3.23)(@types/react@18.2.42)(postcss@8.4.32)(prettier@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack@5.89.0) + specifier: 3.6.22 + version: 3.6.22(@babel/core@7.23.9)(@swc/core@1.3.96)(@types/react@18.2.57)(postcss@8.4.35)(prettier@3.2.5)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(webpack@5.79.0) '@types/react': - specifier: '18' - version: 18.2.42 + specifier: ^18.2.57 + version: 18.2.57 '@types/react-dom': - specifier: '18' - version: 18.2.17 + specifier: ^18.2.19 + version: 18.2.19 '@types/react-router-dom': specifier: ^5.3.3 version: 5.3.3 '@types/react-syntax-highlighter': - specifier: ^15.0.0 + specifier: ^15.5.11 version: 15.5.11 '@types/react-test-renderer': - specifier: ^18.0.0 + specifier: ^18.0.7 version: 18.0.7 '@types/react-transition-group': - specifier: ^4.4.5 + specifier: ^4.4.10 version: 4.4.10 '@types/webpack-env': - specifier: ^1.18.0 + specifier: ^1.18.4 version: 1.18.4 '@typescript-eslint/eslint-plugin': - specifier: ^6.0.0 - version: 6.13.2(@typescript-eslint/parser@6.13.2)(eslint@8.55.0)(typescript@4.9.5) + specifier: ^7.0.2 + version: 7.0.2(@typescript-eslint/parser@7.0.2)(eslint@8.56.0)(typescript@5.3.3) '@typescript-eslint/parser': - specifier: ^6.0.0 - version: 6.13.2(eslint@8.55.0)(typescript@4.9.5) + specifier: ^7.0.2 + version: 7.0.2(eslint@8.56.0)(typescript@5.3.3) babel-preset-taro: specifier: ^3.6.4 - version: 3.6.20(@babel/core@7.23.5) + version: 3.6.20(@babel/core@7.23.9) eslint: - specifier: ^8.38.0 - version: 8.55.0 + specifier: ^8.56.0 + version: 8.56.0 eslint-config-taro: specifier: ^3.6.4 - version: 3.6.20(@babel/core@7.23.5)(eslint@8.55.0)(typescript@4.9.5) + version: 3.6.20(@babel/core@7.23.9)(eslint@8.56.0)(typescript@5.3.3) eslint-plugin-import: - specifier: ^2.27.5 - version: 2.29.0(@typescript-eslint/parser@6.13.2)(eslint@8.55.0) + specifier: ^2.29.1 + version: 2.29.1(@typescript-eslint/parser@7.0.2)(eslint@8.56.0) eslint-plugin-react: - specifier: ^7.32.2 - version: 7.33.2(eslint@8.55.0) + specifier: ^7.33.2 + version: 7.33.2(eslint@8.56.0) eslint-plugin-react-hooks: specifier: ^4.6.0 - version: 4.6.0(eslint@8.55.0) + version: 4.6.0(eslint@8.56.0) postcss: - specifier: ^8.4.21 - version: 8.4.32 + specifier: ^8.4.35 + version: 8.4.35 stylelint: - specifier: ^16.0.0 - version: 16.0.1(typescript@4.9.5) + specifier: ^16.2.1 + version: 16.2.1(typescript@5.3.3) typescript: - specifier: ^4.9.5 - version: 4.9.5 + specifier: ^5.3.3 + version: 5.3.3 packages: @@ -506,8 +521,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@adobe/css-tools@4.3.2: - resolution: {integrity: sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==} + /@adobe/css-tools@4.3.3: + resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} dev: true /@ampproject/remapping@2.2.1: @@ -528,20 +543,20 @@ packages: resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} - /@babel/core@7.23.5: - resolution: {integrity: sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==} + /@babel/core@7.23.9: + resolution: {integrity: sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 '@babel/code-frame': 7.23.5 - '@babel/generator': 7.23.5 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) - '@babel/helpers': 7.23.5 - '@babel/parser': 7.23.5 - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.5 - '@babel/types': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helpers': 7.23.9 + '@babel/parser': 7.23.9 + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 convert-source-map: 2.0.0 debug: 4.3.4 gensync: 1.0.0-beta.2 @@ -550,16 +565,16 @@ packages: transitivePeerDependencies: - supports-color - /@babel/eslint-parser@7.23.3(@babel/core@7.23.5)(eslint@8.55.0): + /@babel/eslint-parser@7.23.3(@babel/core@7.23.9)(eslint@8.56.0): resolution: {integrity: sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} peerDependencies: '@babel/core': ^7.11.0 eslint: ^7.5.0 || ^8.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 8.55.0 + eslint: 8.56.0 eslint-visitor-keys: 2.1.0 semver: 6.3.1 dev: true @@ -573,6 +588,15 @@ packages: '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + '@jridgewell/gen-mapping': 0.3.3 + '@jridgewell/trace-mapping': 0.3.20 + jsesc: 2.5.2 + /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} engines: {node: '>=6.9.0'} @@ -595,40 +619,65 @@ packages: lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-create-class-features-plugin@7.23.5(@babel/core@7.23.5): + /@babel/helper-compilation-targets@7.23.6: + resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/helper-validator-option': 7.23.5 + browserslist: 4.22.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + /@babel/helper-create-class-features-plugin@7.23.5(@babel/core@7.23.9): resolution: {integrity: sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.5) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 semver: 6.3.1 - /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.5): + /@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.23.9): resolution: {integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-annotate-as-pure': 7.22.5 regexpu-core: 5.3.2 semver: 6.3.1 - /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.23.5): + /@babel/helper-define-polyfill-provider@0.4.3(@babel/core@7.23.9): resolution: {integrity: sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 + '@babel/helper-compilation-targets': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + debug: 4.3.4 + lodash.debounce: 4.0.8 + resolve: 1.22.8 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/helper-define-polyfill-provider@0.5.0(@babel/core@7.23.9): + resolution: {integrity: sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.9 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 debug: 4.3.4 @@ -652,7 +701,7 @@ packages: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.23.9 /@babel/helper-member-expression-to-functions@7.23.0: resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} @@ -666,13 +715,13 @@ packages: dependencies: '@babel/types': 7.23.5 - /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.5): + /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-module-imports': 7.22.15 '@babel/helper-simple-access': 7.22.5 @@ -689,24 +738,24 @@ packages: resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} engines: {node: '>=6.9.0'} - /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.5): + /@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.23.9): resolution: {integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-wrap-function': 7.22.20 - /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.5): + /@babel/helper-replace-supers@7.22.20(@babel/core@7.23.9): resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-member-expression-to-functions': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 @@ -727,7 +776,7 @@ packages: resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.23.5 + '@babel/types': 7.23.9 /@babel/helper-string-parser@7.23.4: resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} @@ -749,13 +798,13 @@ packages: '@babel/template': 7.22.15 '@babel/types': 7.23.5 - /@babel/helpers@7.23.5: - resolution: {integrity: sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==} + /@babel/helpers@7.23.9: + resolution: {integrity: sha512-87ICKgU5t5SzOT7sBMfCOZQ2rHjRU+Pcb9BoILMYz600W6DkVRLFBPwQ18gwUVvggqXivaUakpnxWQGbpywbBQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.22.15 - '@babel/traverse': 7.23.5 - '@babel/types': 7.23.5 + '@babel/template': 7.23.9 + '@babel/traverse': 7.23.9 + '@babel/types': 7.23.9 transitivePeerDependencies: - supports-color @@ -774,99 +823,117 @@ packages: dependencies: '@babel/types': 7.23.5 - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.5): + /@babel/parser@7.23.9: + resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.9 + + /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.5): + /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.13.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.5) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.9) - /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.3(@babel/core@7.23.5): + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.23.7(@babel/core@7.23.9): + resolution: {integrity: sha512-LlRT7HgaifEpQA1ZgLVOIJZZFVPWN5iReq/7/JixwBtwcoeVGDBD53ZV28rrsLYOZs1Y/EHhA8N/Z6aazHR8cw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + dependencies: + '@babel/core': 7.23.9 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.23.5): + /@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@7.23.9): resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.5) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) dev: true - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.23.5): + /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.23.9): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.5) + '@babel/core': 7.23.9 + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-proposal-decorators@7.23.5(@babel/core@7.23.5): + /@babel/plugin-proposal-decorators@7.23.5(@babel/core@7.23.9): resolution: {integrity: sha512-6IsY8jOeWibsengGlWIezp7cuZEFzNlAghFpzh9wiZwhQ42/hRcPnY/QV9HJoKTlujupinSlnQPiEy/u2C1ZfQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.5) + '@babel/core': 7.23.9 + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.5) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) '@babel/helper-split-export-declaration': 7.22.6 - '@babel/plugin-syntax-decorators': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-syntax-decorators': 7.23.3(@babel/core@7.23.9) - /@babel/plugin-proposal-export-default-from@7.23.3(@babel/core@7.23.5): + /@babel/plugin-proposal-export-default-from@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-Q23MpLZfSGZL1kU7fWqV262q65svLSCIP5kZ/JCW/rKTCm/FrLjpvEd2kfUYMVeHh4QhV/xzyoRAHWrAZJrE3Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.23.9) dev: true - /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.5): + /@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.23.9): resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) dev: true - /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.23.5): + /@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@7.23.9): resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. @@ -874,984 +941,1146 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) - /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.23.5): + /@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@7.23.9): resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) dev: true - /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.5): + /@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.23.9): resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} engines: {node: '>=6.9.0'} deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.5): + /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9): resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.5): + /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.9): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.23.9): resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.5): + /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.23.9): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.5): + /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.9): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-decorators@7.23.3(@babel/core@7.23.5): + /@babel/plugin-syntax-decorators@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.9): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-export-default-from@7.23.3(@babel/core@7.23.5): + /@babel/plugin-syntax-export-default-from@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-KeENO5ck1IeZ/l2lFZNy+mpobV3D2Zy5C1YFnWm+YuY5mQiAWc4yAp13dqgguwsBsFVLh4LPCEqCa5qW13N+hw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.9): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-flow@7.23.3(@babel/core@7.23.5): + /@babel/plugin-syntax-flow@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.5): + /@babel/plugin-syntax-import-assertions@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.5): + /@babel/plugin-syntax-import-attributes@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.5): + /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.9): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.9): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.5): + /@babel/plugin-syntax-jsx@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.5): + /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.9): resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.23.9): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.5): + /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.23.9): resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.23.9): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.9): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.5): + /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.23.9): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.5): + /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.9): resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.5): + /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.9): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.5): + /@babel/plugin-syntax-typescript@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.5): + /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.9): resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-arrow-functions@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-async-generator-functions@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-async-generator-functions@7.23.4(@babel/core@7.23.9): resolution: {integrity: sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + dev: true + + /@babel/plugin-transform-async-generator-functions@7.23.9(@babel/core@7.23.9): + resolution: {integrity: sha512-8Q3veQEDGe14dTYuwagbRtwxQDnytyg1JFu4/HwEMETeofocrB0U0ejBJIXoeG/t2oXZ8kzCyI0ZZfbT80VFNQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.5) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) - /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-async-to-generator@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.5) + '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.23.9) - /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-block-scoped-functions@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-block-scoping@7.23.4(@babel/core@7.23.9): resolution: {integrity: sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-class-properties@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.5) + '@babel/core': 7.23.9 + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-class-static-block@7.23.4(@babel/core@7.23.9): resolution: {integrity: sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.12.0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.5) + '@babel/core': 7.23.9 + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.5) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) - /@babel/plugin-transform-classes@7.23.5(@babel/core@7.23.5): + /@babel/plugin-transform-classes@7.23.5(@babel/core@7.23.9): resolution: {integrity: sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-optimise-call-expression': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.5) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) + '@babel/helper-split-export-declaration': 7.22.6 + globals: 11.12.0 + dev: true + + /@babel/plugin-transform-classes@7.23.8(@babel/core@7.23.9): + resolution: {integrity: sha512-yAYslGsY1bX6Knmg46RjiCiNSwJKv2IUC8qOdYKqMMr0491SXFhcHqOdRDeCRohOOIzwN/90C6mQ9qAKgrP7dg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) '@babel/helper-split-export-declaration': 7.22.6 globals: 11.12.0 - /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-computed-properties@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.15 - /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-destructuring@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-dotall-regex@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-duplicate-keys@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-dynamic-import@7.23.4(@babel/core@7.23.9): resolution: {integrity: sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) - /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-exponentiation-operator@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-export-namespace-from@7.23.4(@babel/core@7.23.9): resolution: {integrity: sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) - /@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-flow-strip-types@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.9) - /@babel/plugin-transform-for-of@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-for-of@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 + '@babel/helper-plugin-utils': 7.22.5 + dev: true + + /@babel/plugin-transform-for-of@7.23.6(@babel/core@7.23.9): + resolution: {integrity: sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-function-name@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-compilation-targets': 7.22.15 + '@babel/core': 7.23.9 + '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-json-strings@7.23.4(@babel/core@7.23.9): resolution: {integrity: sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) - /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-literals@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-logical-assignment-operators@7.23.4(@babel/core@7.23.9): resolution: {integrity: sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) - /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-member-expression-literals@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-modules-amd@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) + '@babel/core': 7.23.9 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-modules-commonjs@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) + '@babel/core': 7.23.9 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-simple-access': 7.22.5 - /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-modules-systemjs@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-identifier': 7.22.20 + dev: true + + /@babel/plugin-transform-modules-systemjs@7.23.9(@babel/core@7.23.9): + resolution: {integrity: sha512-KDlPRM6sLo4o1FkiSlXoAa8edLXFsKKIda779fbLrvmeuc3itnjCtaO6RrtoaANsIJANj+Vk1zqbZIMhkCAHVw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-identifier': 7.22.20 - /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-modules-umd@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) + '@babel/core': 7.23.9 + '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.5): + /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.9): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-new-target@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-nullish-coalescing-operator@7.23.4(@babel/core@7.23.9): resolution: {integrity: sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) - /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-numeric-separator@7.23.4(@babel/core@7.23.9): resolution: {integrity: sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) - /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-object-rest-spread@7.23.4(@babel/core@7.23.9): resolution: {integrity: sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.5 - '@babel/helper-compilation-targets': 7.22.15 + '@babel/core': 7.23.9 + '@babel/helper-compilation-targets': 7.23.6 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) - /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-object-super@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.5) + '@babel/helper-replace-supers': 7.22.20(@babel/core@7.23.9) - /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-optional-catch-binding@7.23.4(@babel/core@7.23.9): resolution: {integrity: sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) - /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-optional-chaining@7.23.4(@babel/core@7.23.9): resolution: {integrity: sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) - /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-parameters@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-private-methods@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.5) + '@babel/core': 7.23.9 + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-private-property-in-object@7.23.4(@babel/core@7.23.9): resolution: {integrity: sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.5) + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.5) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) - /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-property-literals@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-react-display-name@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.5): + /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.9): resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.5) + '@babel/core': 7.23.9 + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) dev: true - /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-react-jsx-self@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-react-jsx-source@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.9): resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) '@babel/types': 7.23.5 dev: true - /@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-react-pure-annotations@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-annotate-as-pure': 7.22.5 '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-regenerator@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 regenerator-transform: 0.15.2 - /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-reserved-words@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-runtime@7.23.4(@babel/core@7.23.5): + /@babel/plugin-transform-runtime@7.23.4(@babel/core@7.23.9): resolution: {integrity: sha512-ITwqpb6V4btwUG0YJR82o2QvmWrLgDnx/p2A3CTPYGaRgULkDiC0DRA2C4jlRB9uXGUEfaSS/IGHfVW+ohzYDw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 + '@babel/helper-module-imports': 7.22.15 + '@babel/helper-plugin-utils': 7.22.5 + babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.9) + babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.9) + babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.9) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/plugin-transform-runtime@7.23.9(@babel/core@7.23.9): + resolution: {integrity: sha512-A7clW3a0aSjm3ONU9o2HAILSegJCYlEZmOhmBRReVtIpY/Z/p7yIZ+wR41Z+UipwdGuqwtID/V/dOdZXjwi9gQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/core': 7.23.9 '@babel/helper-module-imports': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 - babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.5) - babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.5) - babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.5) + babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.23.9) + babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.23.9) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.9) semver: 6.3.1 transitivePeerDependencies: - supports-color - /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-shorthand-properties@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-spread@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-sticky-regex@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-template-literals@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-typeof-symbol@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-typescript@7.23.5(@babel/core@7.23.5): + /@babel/plugin-transform-typescript@7.23.5(@babel/core@7.23.9): resolution: {integrity: sha512-2fMkXEJkrmwgu2Bsv1Saxgj30IXZdJ+84lQcKKI7sm719oXs0BBw2ZENKdJdR1PjWndgLCEBNXJOri0fk7RYQA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.5) + '@babel/helper-create-class-features-plugin': 7.23.5(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.9) - /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-unicode-escapes@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-unicode-property-regex@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-unicode-regex@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.5): + /@babel/plugin-transform-unicode-sets-regex@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.5) + '@babel/core': 7.23.9 + '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.23.9) '@babel/helper-plugin-utils': 7.22.5 - /@babel/preset-env@7.23.5(@babel/core@7.23.5): + /@babel/preset-env@7.23.5(@babel/core@7.23.9): resolution: {integrity: sha512-0d/uxVD6tFGWXGDSfyMD1p2otoaKmu6+GD+NfAx0tMaH+dxORnp7T9TaVQ6mKyya7iBtCIVxHjWT7MuzzM9z+A==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.5) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.5) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.5) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-async-generator-functions': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-classes': 7.23.5(@babel/core@7.23.5) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-for-of': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.5) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.5) - babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.5) - babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.5) - babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.5) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.9) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.9) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-async-generator-functions': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-classes': 7.23.5(@babel/core@7.23.9) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-for-of': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-modules-systemjs': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.9) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.9) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.9) + babel-plugin-polyfill-corejs2: 0.4.6(@babel/core@7.23.9) + babel-plugin-polyfill-corejs3: 0.8.6(@babel/core@7.23.9) + babel-plugin-polyfill-regenerator: 0.5.3(@babel/core@7.23.9) + core-js-compat: 3.34.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@babel/preset-env@7.23.9(@babel/core@7.23.9): + resolution: {integrity: sha512-3kBGTNBBk9DQiPoXYS0g0BYlwTQYUTifqgKTjxUwEUkduRT2QOa0FPGBJ+NROQhGyYO5BuTJwGvBnqKDykac6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.9 + '@babel/helper-compilation-targets': 7.23.6 + '@babel/helper-plugin-utils': 7.22.5 + '@babel/helper-validator-option': 7.23.5 + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.23.7(@babel/core@7.23.9) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.9) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-import-assertions': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-import-attributes': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.9) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.9) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.9) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-async-generator-functions': 7.23.9(@babel/core@7.23.9) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-block-scoped-functions': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-class-static-block': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-classes': 7.23.8(@babel/core@7.23.9) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-dotall-regex': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-duplicate-keys': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-dynamic-import': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-export-namespace-from': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-for-of': 7.23.6(@babel/core@7.23.9) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-json-strings': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-logical-assignment-operators': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-member-expression-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-modules-amd': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-modules-systemjs': 7.23.9(@babel/core@7.23.9) + '@babel/plugin-transform-modules-umd': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.9) + '@babel/plugin-transform-new-target': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-numeric-separator': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-object-rest-spread': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-object-super': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-optional-catch-binding': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-private-property-in-object': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-property-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-regenerator': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-reserved-words': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-typeof-symbol': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-escapes': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-property-regex': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-sets-regex': 7.23.3(@babel/core@7.23.9) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.23.9) + babel-plugin-polyfill-corejs2: 0.4.8(@babel/core@7.23.9) + babel-plugin-polyfill-corejs3: 0.9.0(@babel/core@7.23.9) + babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.23.9) core-js-compat: 3.34.0 semver: 6.3.1 transitivePeerDependencies: - supports-color - /@babel/preset-flow@7.23.3(@babel/core@7.23.5): + /@babel/preset-flow@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.9) - /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.5): + /@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.23.9): resolution: {integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==} peerDependencies: '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 '@babel/types': 7.23.5 esutils: 2.0.3 - /@babel/preset-react@7.23.3(@babel/core@7.23.5): + /@babel/preset-react@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.9) + '@babel/plugin-transform-react-pure-annotations': 7.23.3(@babel/core@7.23.9) dev: true - /@babel/preset-typescript@7.23.3(@babel/core@7.23.5): + /@babel/preset-typescript@7.23.3(@babel/core@7.23.9): resolution: {integrity: sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-typescript': 7.23.5(@babel/core@7.23.5) + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-typescript': 7.23.5(@babel/core@7.23.9) - /@babel/register@7.22.15(@babel/core@7.23.5): + /@babel/register@7.22.15(@babel/core@7.23.9): resolution: {integrity: sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 @@ -1869,8 +2098,8 @@ packages: regenerator-runtime: 0.14.0 dev: true - /@babel/runtime@7.23.5: - resolution: {integrity: sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==} + /@babel/runtime@7.23.9: + resolution: {integrity: sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.0 @@ -1880,9 +2109,17 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.23.5 - '@babel/parser': 7.23.5 + '@babel/parser': 7.23.9 '@babel/types': 7.23.5 + /@babel/template@7.23.9: + resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + /@babel/traverse@7.23.5: resolution: {integrity: sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==} engines: {node: '>=6.9.0'} @@ -1893,13 +2130,30 @@ packages: '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 - '@babel/parser': 7.23.5 + '@babel/parser': 7.23.9 '@babel/types': 7.23.5 debug: 4.3.4 globals: 11.12.0 transitivePeerDependencies: - supports-color + /@babel/traverse@7.23.9: + resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + debug: 4.3.4 + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + /@babel/types@7.23.5: resolution: {integrity: sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==} engines: {node: '>=6.9.0'} @@ -1908,49 +2162,56 @@ packages: '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + /@babel/types@7.23.9: + resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: true - /@commitlint/cli@18.4.3(typescript@4.9.5): - resolution: {integrity: sha512-zop98yfB3A6NveYAZ3P1Mb6bIXuCeWgnUfVNkH4yhIMQpQfzFwseadazOuSn0OOfTt0lWuFauehpm9GcqM5lww==} + /@commitlint/cli@19.0.3(@types/node@20.11.19)(typescript@5.3.3): + resolution: {integrity: sha512-mGhh/aYPib4Vy4h+AGRloMY+CqkmtdeKPV9poMcZeImF5e3knQ5VYaSeAM0mEzps1dbKsHvABwaDpafLUuM96g==} engines: {node: '>=v18'} hasBin: true dependencies: - '@commitlint/format': 18.4.3 - '@commitlint/lint': 18.4.3 - '@commitlint/load': 18.4.3(typescript@4.9.5) - '@commitlint/read': 18.4.3 - '@commitlint/types': 18.4.3 - execa: 5.1.1 - lodash.isfunction: 3.0.9 - resolve-from: 5.0.0 - resolve-global: 1.0.0 + '@commitlint/format': 19.0.3 + '@commitlint/lint': 19.0.3 + '@commitlint/load': 19.0.3(@types/node@20.11.19)(typescript@5.3.3) + '@commitlint/read': 19.0.3 + '@commitlint/types': 19.0.3 + execa: 8.0.1 yargs: 17.7.2 transitivePeerDependencies: + - '@types/node' - typescript dev: true - /@commitlint/config-conventional@18.4.3: - resolution: {integrity: sha512-729eRRaNta7JZF07qf6SAGSghoDEp9mH7yHU0m7ff0q89W97wDrWCyZ3yoV3mcQJwbhlmVmZPTkPcm7qiAu8WA==} + /@commitlint/config-conventional@19.0.3: + resolution: {integrity: sha512-vh0L8XeLaEzTe8VCxSd0gAFvfTK0RFolrzw4o431bIuWJfi/yRCHJlsDwus7wW2eJaFFDR0VFXJyjGyDQhi4vA==} engines: {node: '>=v18'} dependencies: + '@commitlint/types': 19.0.3 conventional-changelog-conventionalcommits: 7.0.2 dev: true - /@commitlint/config-validator@18.4.3: - resolution: {integrity: sha512-FPZZmTJBARPCyef9ohRC9EANiQEKSWIdatx5OlgeHKu878dWwpyeFauVkhzuBRJFcCA4Uvz/FDtlDKs008IHcA==} + /@commitlint/config-validator@19.0.3: + resolution: {integrity: sha512-2D3r4PKjoo59zBc2auodrSCaUnCSALCx54yveOFwwP/i2kfEAQrygwOleFWswLqK0UL/F9r07MFi5ev2ohyM4Q==} engines: {node: '>=v18'} dependencies: - '@commitlint/types': 18.4.3 + '@commitlint/types': 19.0.3 ajv: 8.12.0 dev: true - /@commitlint/ensure@18.4.3: - resolution: {integrity: sha512-MI4fwD9TWDVn4plF5+7JUyLLbkOdzIRBmVeNlk4dcGlkrVA+/l5GLcpN66q9LkFsFv6G2X31y89ApA3hqnqIFg==} + /@commitlint/ensure@19.0.3: + resolution: {integrity: sha512-SZEpa/VvBLoT+EFZVb91YWbmaZ/9rPH3ESrINOl0HD2kMYsjvl0tF7nMHh0EpTcv4+gTtZBAe1y/SS6/OhfZzQ==} engines: {node: '>=v18'} dependencies: - '@commitlint/types': 18.4.3 + '@commitlint/types': 19.0.3 lodash.camelcase: 4.3.0 lodash.kebabcase: 4.1.1 lodash.snakecase: 4.1.1 @@ -1958,122 +2219,121 @@ packages: lodash.upperfirst: 4.3.1 dev: true - /@commitlint/execute-rule@18.4.3: - resolution: {integrity: sha512-t7FM4c+BdX9WWZCPrrbV5+0SWLgT3kCq7e7/GhHCreYifg3V8qyvO127HF796vyFql75n4TFF+5v1asOOWkV1Q==} + /@commitlint/execute-rule@19.0.0: + resolution: {integrity: sha512-mtsdpY1qyWgAO/iOK0L6gSGeR7GFcdW7tIjcNFxcWkfLDF5qVbPHKuGATFqRMsxcO8OUKNj0+3WOHB7EHm4Jdw==} engines: {node: '>=v18'} dev: true - /@commitlint/format@18.4.3: - resolution: {integrity: sha512-8b+ItXYHxAhRAXFfYki5PpbuMMOmXYuzLxib65z2XTqki59YDQJGpJ/wB1kEE5MQDgSTQWtKUrA8n9zS/1uIDQ==} + /@commitlint/format@19.0.3: + resolution: {integrity: sha512-QjjyGyoiVWzx1f5xOteKHNLFyhyweVifMgopozSgx1fGNrGV8+wp7k6n1t6StHdJ6maQJ+UUtO2TcEiBFRyR6Q==} engines: {node: '>=v18'} dependencies: - '@commitlint/types': 18.4.3 - chalk: 4.1.2 + '@commitlint/types': 19.0.3 + chalk: 5.3.0 dev: true - /@commitlint/is-ignored@18.4.3: - resolution: {integrity: sha512-ZseOY9UfuAI32h9w342Km4AIaTieeFskm2ZKdrG7r31+c6zGBzuny9KQhwI9puc0J3GkUquEgKJblCl7pMnjwg==} + /@commitlint/is-ignored@19.0.3: + resolution: {integrity: sha512-MqDrxJaRSVSzCbPsV6iOKG/Lt52Y+PVwFVexqImmYYFhe51iVJjK2hRhOG2jUAGiUHk4jpdFr0cZPzcBkSzXDQ==} engines: {node: '>=v18'} dependencies: - '@commitlint/types': 18.4.3 - semver: 7.5.4 + '@commitlint/types': 19.0.3 + semver: 7.6.0 dev: true - /@commitlint/lint@18.4.3: - resolution: {integrity: sha512-18u3MRgEXNbnYkMOWoncvq6QB8/90m9TbERKgdPqVvS+zQ/MsuRhdvHYCIXGXZxUb0YI4DV2PC4bPneBV/fYuA==} + /@commitlint/lint@19.0.3: + resolution: {integrity: sha512-uHPyRqIn57iIplYa5xBr6oNu5aPXKGC4WLeuHfqQHclwIqbJ33g3yA5fIA+/NYnp5ZM2EFiujqHFaVUYj6HlKA==} engines: {node: '>=v18'} dependencies: - '@commitlint/is-ignored': 18.4.3 - '@commitlint/parse': 18.4.3 - '@commitlint/rules': 18.4.3 - '@commitlint/types': 18.4.3 + '@commitlint/is-ignored': 19.0.3 + '@commitlint/parse': 19.0.3 + '@commitlint/rules': 19.0.3 + '@commitlint/types': 19.0.3 dev: true - /@commitlint/load@18.4.3(typescript@4.9.5): - resolution: {integrity: sha512-v6j2WhvRQJrcJaj5D+EyES2WKTxPpxENmNpNG3Ww8MZGik3jWRXtph0QTzia5ZJyPh2ib5aC/6BIDymkUUM58Q==} + /@commitlint/load@19.0.3(@types/node@20.11.19)(typescript@5.3.3): + resolution: {integrity: sha512-18Tk/ZcDFRKIoKfEcl7kC+bYkEQ055iyKmGsYDoYWpKf6FUvBrP9bIWapuy/MB+kYiltmP9ITiUx6UXtqC9IRw==} engines: {node: '>=v18'} dependencies: - '@commitlint/config-validator': 18.4.3 - '@commitlint/execute-rule': 18.4.3 - '@commitlint/resolve-extends': 18.4.3 - '@commitlint/types': 18.4.3 - '@types/node': 18.19.3 - chalk: 4.1.2 - cosmiconfig: 8.3.6(typescript@4.9.5) - cosmiconfig-typescript-loader: 5.0.0(@types/node@18.19.3)(cosmiconfig@8.3.6)(typescript@4.9.5) + '@commitlint/config-validator': 19.0.3 + '@commitlint/execute-rule': 19.0.0 + '@commitlint/resolve-extends': 19.0.3 + '@commitlint/types': 19.0.3 + chalk: 5.3.0 + cosmiconfig: 8.3.6(typescript@5.3.3) + cosmiconfig-typescript-loader: 5.0.0(@types/node@20.11.19)(cosmiconfig@8.3.6)(typescript@5.3.3) lodash.isplainobject: 4.0.6 lodash.merge: 4.6.2 lodash.uniq: 4.5.0 - resolve-from: 5.0.0 transitivePeerDependencies: + - '@types/node' - typescript dev: true - /@commitlint/message@18.4.3: - resolution: {integrity: sha512-ddJ7AztWUIoEMAXoewx45lKEYEOeOlBVWjk8hDMUGpprkuvWULpaXczqdjwVtjrKT3JhhN+gMs8pm5G3vB2how==} + /@commitlint/message@19.0.0: + resolution: {integrity: sha512-c9czf6lU+9oF9gVVa2lmKaOARJvt4soRsVmbR7Njwp9FpbBgste5i7l/2l5o8MmbwGh4yE1snfnsy2qyA2r/Fw==} engines: {node: '>=v18'} dev: true - /@commitlint/parse@18.4.3: - resolution: {integrity: sha512-eoH7CXM9L+/Me96KVcfJ27EIIbA5P9sqw3DqjJhRYuhaULIsPHFs5S5GBDCqT0vKZQDx0DgxhMpW6AQbnKrFtA==} + /@commitlint/parse@19.0.3: + resolution: {integrity: sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA==} engines: {node: '>=v18'} dependencies: - '@commitlint/types': 18.4.3 + '@commitlint/types': 19.0.3 conventional-changelog-angular: 7.0.0 conventional-commits-parser: 5.0.0 dev: true - /@commitlint/read@18.4.3: - resolution: {integrity: sha512-H4HGxaYA6OBCimZAtghL+B+SWu8ep4X7BwgmedmqWZRHxRLcX2q0bWBtUm5FsMbluxbOfrJwOs/Z0ah4roP/GQ==} + /@commitlint/read@19.0.3: + resolution: {integrity: sha512-b5AflTyAXkUx5qKw4TkjjcOccXZHql3JqMi522knTQktq2AubKXFz60Sws+K4FsefwPws6fGz9mqiI/NvsvxFA==} engines: {node: '>=v18'} dependencies: - '@commitlint/top-level': 18.4.3 - '@commitlint/types': 18.4.3 - fs-extra: 11.2.0 - git-raw-commits: 2.0.11 + '@commitlint/top-level': 19.0.0 + '@commitlint/types': 19.0.3 + git-raw-commits: 4.0.0 minimist: 1.2.8 dev: true - /@commitlint/resolve-extends@18.4.3: - resolution: {integrity: sha512-30sk04LZWf8+SDgJrbJCjM90gTg2LxsD9cykCFeFu+JFHvBFq5ugzp2eO/DJGylAdVaqxej3c7eTSE64hR/lnw==} + /@commitlint/resolve-extends@19.0.3: + resolution: {integrity: sha512-18BKmta8OC8+Ub+Q3QGM9l27VjQaXobloVXOrMvu8CpEwJYv62vC/t7Ka5kJnsW0tU9q1eMqJFZ/nN9T/cOaIA==} engines: {node: '>=v18'} dependencies: - '@commitlint/config-validator': 18.4.3 - '@commitlint/types': 18.4.3 - import-fresh: 3.3.0 + '@commitlint/config-validator': 19.0.3 + '@commitlint/types': 19.0.3 + global-directory: 4.0.1 + import-meta-resolve: 4.0.0 lodash.mergewith: 4.6.2 resolve-from: 5.0.0 - resolve-global: 1.0.0 dev: true - /@commitlint/rules@18.4.3: - resolution: {integrity: sha512-8KIeukDf45BiY+Lul1T0imSNXF0sMrlLG6JpLLKolkmYVQ6PxxoNOriwyZ3UTFFpaVbPy0rcITaV7U9JCAfDTA==} + /@commitlint/rules@19.0.3: + resolution: {integrity: sha512-TspKb9VB6svklxNCKKwxhELn7qhtY1rFF8ls58DcFd0F97XoG07xugPjjbVnLqmMkRjZDbDIwBKt9bddOfLaPw==} engines: {node: '>=v18'} dependencies: - '@commitlint/ensure': 18.4.3 - '@commitlint/message': 18.4.3 - '@commitlint/to-lines': 18.4.3 - '@commitlint/types': 18.4.3 - execa: 5.1.1 + '@commitlint/ensure': 19.0.3 + '@commitlint/message': 19.0.0 + '@commitlint/to-lines': 19.0.0 + '@commitlint/types': 19.0.3 + execa: 8.0.1 dev: true - /@commitlint/to-lines@18.4.3: - resolution: {integrity: sha512-fy1TAleik4Zfru1RJ8ZU6cOSvgSVhUellxd3WZV1D5RwHZETt1sZdcA4mQN2y3VcIZsUNKkW0Mq8CM9/L9harQ==} + /@commitlint/to-lines@19.0.0: + resolution: {integrity: sha512-vkxWo+VQU5wFhiP9Ub9Sre0FYe019JxFikrALVoD5UGa8/t3yOJEpEhxC5xKiENKKhUkTpEItMTRAjHw2SCpZw==} engines: {node: '>=v18'} dev: true - /@commitlint/top-level@18.4.3: - resolution: {integrity: sha512-E6fJPBLPFL5R8+XUNSYkj4HekIOuGMyJo3mIx2PkYc3clel+pcWQ7TConqXxNWW4x1ugigiIY2RGot55qUq1hw==} + /@commitlint/top-level@19.0.0: + resolution: {integrity: sha512-KKjShd6u1aMGNkCkaX4aG1jOGdn7f8ZI8TR1VEuNqUOjWTOdcDSsmglinglJ18JTjuBX5I1PtjrhQCRcixRVFQ==} engines: {node: '>=v18'} dependencies: - find-up: 5.0.0 + find-up: 7.0.0 dev: true - /@commitlint/types@18.4.3: - resolution: {integrity: sha512-cvzx+vtY/I2hVBZHCLrpoh+sA0hfuzHwDc+BAFPimYLjJkpHnghQM+z8W/KyLGkygJh3BtI3xXXq+dKjnSWEmA==} + /@commitlint/types@19.0.3: + resolution: {integrity: sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA==} engines: {node: '>=v18'} dependencies: - chalk: 4.1.2 + '@types/conventional-commits-parser': 5.0.0 + chalk: 5.3.0 dev: true /@cspotcode/source-map-support@0.8.1: @@ -2083,38 +2343,38 @@ packages: '@jridgewell/trace-mapping': 0.3.9 dev: true - /@csstools/css-parser-algorithms@2.3.2(@csstools/css-tokenizer@2.2.1): - resolution: {integrity: sha512-sLYGdAdEY2x7TSw9FtmdaTrh2wFtRJO5VMbBrA8tEqEod7GEggFmxTSK9XqExib3yMuYNcvcTdCZIP6ukdjAIA==} + /@csstools/css-parser-algorithms@2.6.0(@csstools/css-tokenizer@2.2.3): + resolution: {integrity: sha512-YfEHq0eRH98ffb5/EsrrDspVWAuph6gDggAE74ZtjecsmyyWpW768hOyiONa8zwWGbIWYfa2Xp4tRTrpQQ00CQ==} engines: {node: ^14 || ^16 || >=18} peerDependencies: - '@csstools/css-tokenizer': ^2.2.1 + '@csstools/css-tokenizer': ^2.2.3 dependencies: - '@csstools/css-tokenizer': 2.2.1 + '@csstools/css-tokenizer': 2.2.3 dev: true - /@csstools/css-tokenizer@2.2.1: - resolution: {integrity: sha512-Zmsf2f/CaEPWEVgw29odOj+WEVoiJy9s9NOv5GgNY9mZ1CZ7394By6wONrONrTsnNDv6F9hR02nvFihrGVGHBg==} + /@csstools/css-tokenizer@2.2.3: + resolution: {integrity: sha512-pp//EvZ9dUmGuGtG1p+n17gTHEOqu9jO+FiCUjNN3BDmyhdA2Jq9QsVeR7K8/2QCK17HSsioPlTW9ZkzoWb3Lg==} engines: {node: ^14 || ^16 || >=18} dev: true - /@csstools/media-query-list-parser@2.1.5(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1): - resolution: {integrity: sha512-IxVBdYzR8pYe89JiyXQuYk4aVVoCPhMJkz6ElRwlVysjwURTsTk/bmY/z4FfeRE+CRBMlykPwXEVUg8lThv7AQ==} + /@csstools/media-query-list-parser@2.1.8(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3): + resolution: {integrity: sha512-DiD3vG5ciNzeuTEoh74S+JMjQDs50R3zlxHnBnfd04YYfA/kh2KiBCGhzqLxlJcNq+7yNQ3stuZZYLX6wK/U2g==} engines: {node: ^14 || ^16 || >=18} peerDependencies: - '@csstools/css-parser-algorithms': ^2.3.2 - '@csstools/css-tokenizer': ^2.2.1 + '@csstools/css-parser-algorithms': ^2.6.0 + '@csstools/css-tokenizer': ^2.2.3 dependencies: - '@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1) - '@csstools/css-tokenizer': 2.2.1 + '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) + '@csstools/css-tokenizer': 2.2.3 dev: true - /@csstools/selector-specificity@3.0.0(postcss-selector-parser@6.0.13): - resolution: {integrity: sha512-hBI9tfBtuPIi885ZsZ32IMEU/5nlZH/KOVYJCOh7gyMxaVLGmLedYqFN6Ui1LXkI8JlC8IsuC0rF0btcRZKd5g==} + /@csstools/selector-specificity@3.0.2(postcss-selector-parser@6.0.15): + resolution: {integrity: sha512-RpHaZ1h9LE7aALeQXmXrJkRG84ZxIsctEN2biEUmFyKpzFM3zZ35eUMcIzZFsw/2olQE6v69+esEqU2f1MKycg==} engines: {node: ^14 || ^16 || >=18} peerDependencies: postcss-selector-parser: ^6.0.13 dependencies: - postcss-selector-parser: 6.0.13 + postcss-selector-parser: 6.0.15 dev: true /@devexpress/error-stack-parser@2.0.6: @@ -2129,7 +2389,6 @@ packages: cpu: [arm64] os: [android] requiresBuild: true - dev: true optional: true /@esbuild/android-arm@0.19.8: @@ -2138,7 +2397,6 @@ packages: cpu: [arm] os: [android] requiresBuild: true - dev: true optional: true /@esbuild/android-x64@0.19.8: @@ -2147,7 +2405,6 @@ packages: cpu: [x64] os: [android] requiresBuild: true - dev: true optional: true /@esbuild/darwin-arm64@0.19.8: @@ -2156,7 +2413,6 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true - dev: true optional: true /@esbuild/darwin-x64@0.19.8: @@ -2165,7 +2421,6 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: true optional: true /@esbuild/freebsd-arm64@0.19.8: @@ -2174,7 +2429,6 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true - dev: true optional: true /@esbuild/freebsd-x64@0.19.8: @@ -2183,7 +2437,6 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true - dev: true optional: true /@esbuild/linux-arm64@0.19.8: @@ -2192,7 +2445,6 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-arm@0.19.8: @@ -2201,7 +2453,6 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-ia32@0.19.8: @@ -2210,7 +2461,6 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-loong64@0.14.54: @@ -2219,6 +2469,7 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-loong64@0.19.8: @@ -2227,7 +2478,6 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-mips64el@0.19.8: @@ -2236,7 +2486,6 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-ppc64@0.19.8: @@ -2245,7 +2494,6 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-riscv64@0.19.8: @@ -2254,7 +2502,6 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-s390x@0.19.8: @@ -2263,7 +2510,6 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/linux-x64@0.19.8: @@ -2272,7 +2518,6 @@ packages: cpu: [x64] os: [linux] requiresBuild: true - dev: true optional: true /@esbuild/netbsd-x64@0.19.8: @@ -2281,7 +2526,6 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true - dev: true optional: true /@esbuild/openbsd-x64@0.19.8: @@ -2290,7 +2534,6 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true - dev: true optional: true /@esbuild/sunos-x64@0.19.8: @@ -2299,7 +2542,6 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true - dev: true optional: true /@esbuild/win32-arm64@0.19.8: @@ -2308,7 +2550,6 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: true optional: true /@esbuild/win32-ia32@0.19.8: @@ -2317,7 +2558,6 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: true optional: true /@esbuild/win32-x64@0.19.8: @@ -2326,7 +2566,6 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: true optional: true /@eslint-community/eslint-utils@4.4.0(eslint@8.41.0): @@ -2339,13 +2578,13 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.55.0): + /@eslint-community/eslint-utils@4.4.0(eslint@8.56.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.55.0 + eslint: 8.56.0 eslint-visitor-keys: 3.4.3 dev: true @@ -2376,8 +2615,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@eslint/js@8.55.0: - resolution: {integrity: sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==} + /@eslint/js@8.56.0: + resolution: {integrity: sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true @@ -2461,14 +2700,14 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.10.4 + '@types/node': 20.11.19 chalk: 4.1.2 jest-message-util: 29.7.0 jest-util: 29.7.0 slash: 3.0.0 dev: true - /@jest/core@29.7.0(ts-node@10.9.1): + /@jest/core@29.7.0(ts-node@10.9.2): resolution: {integrity: sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -2482,14 +2721,14 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.10.4 + '@types/node': 20.11.19 ansi-escapes: 4.3.2 chalk: 4.1.2 ci-info: 3.9.0 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@20.10.4)(ts-node@10.9.1) + jest-config: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -2517,7 +2756,7 @@ packages: dependencies: '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.10.4 + '@types/node': 20.11.19 jest-mock: 29.7.0 dev: true @@ -2544,7 +2783,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@sinonjs/fake-timers': 10.3.0 - '@types/node': 20.10.4 + '@types/node': 20.11.19 jest-message-util: 29.7.0 jest-mock: 29.7.0 jest-util: 29.7.0 @@ -2577,7 +2816,7 @@ packages: '@jest/transform': 29.7.0 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.20 - '@types/node': 20.10.4 + '@types/node': 20.11.19 chalk: 4.1.2 collect-v8-coverage: 1.0.2 exit: 0.1.2 @@ -2639,7 +2878,7 @@ packages: resolution: {integrity: sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@jest/types': 29.6.3 '@jridgewell/trace-mapping': 0.3.20 babel-plugin-istanbul: 6.1.1 @@ -2664,7 +2903,7 @@ packages: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.10.4 + '@types/node': 20.11.19 '@types/yargs': 15.0.19 chalk: 4.1.2 dev: true @@ -2676,7 +2915,7 @@ packages: '@jest/schemas': 29.6.3 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 20.10.4 + '@types/node': 20.11.19 '@types/yargs': 17.0.32 chalk: 4.1.2 dev: true @@ -2712,6 +2951,12 @@ packages: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 + /@jridgewell/trace-mapping@0.3.25: + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + dependencies: + '@jridgewell/resolve-uri': 3.1.1 + '@jridgewell/sourcemap-codec': 1.4.15 + /@jridgewell/trace-mapping@0.3.9: resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} dependencies: @@ -2723,43 +2968,98 @@ packages: resolution: {integrity: sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==} dev: true - /@ljharb/through@2.3.11: - resolution: {integrity: sha512-ccfcIDlogiXNq5KcbAwbaO7lMh3Tm1i3khMPYpxlK8hH/W53zN81KM9coerRLOnTGu3nfXIniAmQbRI9OxbC0w==} + /@ljharb/through@2.3.12: + resolution: {integrity: sha512-ajo/heTlG3QgC8EGP6APIejksVAYt4ayz4tqoP3MolFELzcH1x1fzwEYRJTPO0IELutZ5HQ0c26/GqAYy79u3g==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.5 dev: true - /@loadable/component@5.15.3(react@18.2.0): - resolution: {integrity: sha512-VOgYgCABn6+/7aGIpg7m0Ruj34tGetaJzt4bQ345FwEovDQZ+dua+NWLmuJKv8rWZyxOUSfoJkmGnzyDXH2BAQ==} + /@loadable/component@5.16.3(react@18.2.0): + resolution: {integrity: sha512-2mVvHs2988oVX2/zM0y6nYhJ4rTVHhkhRnpupBA0Rjl5tS8op9uSR4u5SLVfMLxzpspr2UiIBQD+wEuMsuq4Dg==} engines: {node: '>=8'} peerDependencies: react: ^16.3.0 || ^17.0.0 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.23.9 hoist-non-react-statics: 3.3.2 react: 18.2.0 react-is: 16.13.1 dev: true - /@microsoft/api-extractor-model@7.28.3(@types/node@20.10.4): + /@mdx-js/mdx@3.0.1: + resolution: {integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==} + dependencies: + '@types/estree': 1.0.5 + '@types/estree-jsx': 1.0.3 + '@types/hast': 3.0.3 + '@types/mdx': 2.0.11 + collapse-white-space: 2.1.0 + devlop: 1.1.0 + estree-util-build-jsx: 3.0.1 + estree-util-is-identifier-name: 3.0.0 + estree-util-to-js: 2.0.0 + estree-walker: 3.0.3 + hast-util-to-estree: 3.1.0 + hast-util-to-jsx-runtime: 2.3.0 + markdown-extensions: 2.0.0 + periscopic: 3.1.0 + remark-mdx: 3.0.1 + remark-parse: 11.0.0 + remark-rehype: 11.0.0 + source-map: 0.7.4 + unified: 11.0.4 + unist-util-position-from-estree: 2.0.0 + unist-util-stringify-position: 4.0.0 + unist-util-visit: 5.0.0 + vfile: 6.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@mdx-js/react@3.0.1(@types/react@18.2.57)(react@18.2.0): + resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} + peerDependencies: + '@types/react': ^18.2.57 + react: '>=16' + dependencies: + '@types/mdx': 2.0.11 + '@types/react': 18.2.57 + react: 18.2.0 + dev: true + + /@mdx-js/rollup@3.0.1(rollup@4.12.0): + resolution: {integrity: sha512-j0II91OCm4ld+l5QVgXXMQGxVVcAWIQJakYWi1dv5pefDHASJyCYER2TsdH7Alf958GoFSM7ugukWyvDq/UY4A==} + peerDependencies: + rollup: '>=2' + dependencies: + '@mdx-js/mdx': 3.0.1 + '@rollup/pluginutils': 5.1.0(rollup@4.12.0) + rollup: 4.12.0 + source-map: 0.7.4 + vfile: 6.0.1 + transitivePeerDependencies: + - supports-color + dev: true + + /@microsoft/api-extractor-model@7.28.3(@types/node@20.11.19): resolution: {integrity: sha512-wT/kB2oDbdZXITyDh2SQLzaWwTOFbV326fP0pUwNW00WeliARs0qjmXBWmGWardEzp2U3/axkO3Lboqun6vrig==} dependencies: '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.62.0(@types/node@20.10.4) + '@rushstack/node-core-library': 3.62.0(@types/node@20.11.19) transitivePeerDependencies: - '@types/node' dev: true - /@microsoft/api-extractor@7.38.5(@types/node@20.10.4): - resolution: {integrity: sha512-c/w2zfqBcBJxaCzpJNvFoouWewcYrUOfeu5ZkWCCIXTF9a/gXM85RGevEzlMAIEGM/kssAAZSXRJIZ3Q5vLFow==} + /@microsoft/api-extractor@7.39.0(@types/node@20.11.19): + resolution: {integrity: sha512-PuXxzadgnvp+wdeZFPonssRAj/EW4Gm4s75TXzPk09h3wJ8RS3x7typf95B4vwZRrPTQBGopdUl+/vHvlPdAcg==} hasBin: true dependencies: - '@microsoft/api-extractor-model': 7.28.3(@types/node@20.10.4) + '@microsoft/api-extractor-model': 7.28.3(@types/node@20.11.19) '@microsoft/tsdoc': 0.14.2 '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 3.62.0(@types/node@20.10.4) + '@rushstack/node-core-library': 3.62.0(@types/node@20.11.19) '@rushstack/rig-package': 0.5.1 '@rushstack/ts-command-line': 4.17.1 colors: 1.2.5 @@ -2767,7 +3067,7 @@ packages: resolve: 1.22.8 semver: 7.5.4 source-map: 0.6.1 - typescript: 5.0.4 + typescript: 5.3.3 transitivePeerDependencies: - '@types/node' dev: true @@ -2812,12 +3112,12 @@ packages: fastq: 1.15.0 dev: true - /@nutui/icons-react-taro@1.0.0: - resolution: {integrity: sha512-GlRqrRrhiRe6zZCzpc+nHzg9gjwM4uKWaXl8lde0ctVY6pYG1OMzyyb1sNgRZY3gRZj0bzY1cVXBXWkit/CVHQ==} + /@nutui/icons-react-taro@1.0.4: + resolution: {integrity: sha512-2sDhJXJPAgatSg8dSWVYLYVvxCZo2OIWpSzVO0xkyCU0X6pWtKt7Hh26UbT9PTWaTfg9cX9xqwYvBkkxUypvSQ==} dev: false - /@nutui/icons-react@1.0.0: - resolution: {integrity: sha512-ARNcPJiSmBWQx3JJ3B/y7vby5AE8VK2HBHoEWN5xuwgDwra1R6yvYIzpSbt3CANlGBNGGtOABPv1mvPIxKs9yg==} + /@nutui/icons-react@1.0.4: + resolution: {integrity: sha512-nLFYpJvMBkKzT+PpfMaYoO6vJXMTM0yxAragTkEHt9HAFNjdTdvByCSRfUazHHdLdr1AJxS9h62VB1+jmBEtWA==} dev: false /@nutui/touch-emulator@1.0.0: @@ -2953,14 +3253,14 @@ packages: tslib: 2.6.2 dev: true - /@pmmmwh/react-refresh-webpack-plugin@0.5.11(react-refresh@0.14.0)(webpack@5.89.0): - resolution: {integrity: sha512-7j/6vdTym0+qZ6u4XbSAxrWBGYSdCfTzySkj7WAFgDLmSyWlOrWvpyzxlFh5jtw9dn0oL/jtW+06XfFiisN3JQ==} + /@pmmmwh/react-refresh-webpack-plugin@0.5.10(react-refresh@0.14.0)(webpack@5.79.0): + resolution: {integrity: sha512-j0Ya0hCFZPd4x40qLzbhGsh9TMtdb+CJQiso+WxLOPNasohq9cc5SNUcwsZaRH6++Xh91Xkm/xHCkuIiIu0LUA==} engines: {node: '>= 10.13'} peerDependencies: '@types/webpack': 4.x || 5.x react-refresh: '>=0.10.0 <1.0.0' sockjs-client: ^1.4.0 - type-fest: '>=0.17.0 <5.0.0' + type-fest: '>=0.17.0 <4.0.0' webpack: '>=4.43.0 <6.0.0' webpack-dev-server: 3.x || 4.x webpack-hot-middleware: 2.x @@ -2989,7 +3289,7 @@ packages: react-refresh: 0.14.0 schema-utils: 3.3.0 source-map: 0.7.4 - webpack: 5.89.0(@swc/core@1.3.23) + webpack: 5.79.0(@swc/core@1.3.96) /@pnpm/config.env-replace@1.1.0: resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} @@ -3012,6 +3312,10 @@ packages: config-chain: 1.1.13 dev: true + /@polka/url@1.0.0-next.25: + resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + dev: true + /@react-spring/animated@9.6.1(react@18.2.0): resolution: {integrity: sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ==} peerDependencies: @@ -3066,12 +3370,12 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: false - /@remix-run/router@1.13.1: - resolution: {integrity: sha512-so+DHzZKsoOcoXrILB4rqDkMDy7NLMErRdOxvzvOKb507YINKUP4Di+shbTZDhSE/pBZ+vr7XGIpcOO0VLSA+Q==} + /@remix-run/router@1.15.1: + resolution: {integrity: sha512-zcU0gM3z+3iqj8UX45AmWY810l3oUmXM7uH4dt5xtzvMhRtYVhKGOmgOd1877dOPPepfCjUv57w+syamWIYe7w==} engines: {node: '>=14.0.0'} dev: true - /@rollup/plugin-babel@6.0.4(@babel/core@7.23.5)(rollup@4.6.1): + /@rollup/plugin-babel@6.0.4(@babel/core@7.23.9)(rollup@4.12.0): resolution: {integrity: sha512-YF7Y52kFdFT/xVSuVdjkV5ZdX/3YtmX0QulG+x0taQOtJdHYzVU61aSSkAgVJ7NOv6qPkIYiJSgSWWN/DM5sGw==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3084,13 +3388,13 @@ packages: rollup: optional: true dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/helper-module-imports': 7.22.15 - '@rollup/pluginutils': 5.1.0(rollup@4.6.1) - rollup: 4.6.1 + '@rollup/pluginutils': 5.1.0(rollup@4.12.0) + rollup: 4.12.0 dev: true - /@rollup/plugin-commonjs@25.0.7(rollup@4.6.1): + /@rollup/plugin-commonjs@25.0.7(rollup@4.12.0): resolution: {integrity: sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3099,16 +3403,16 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.6.1) + '@rollup/pluginutils': 5.1.0(rollup@4.12.0) commondir: 1.0.1 estree-walker: 2.0.2 glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.30.5 - rollup: 4.6.1 + rollup: 4.12.0 dev: true - /@rollup/plugin-node-resolve@15.2.3(rollup@4.6.1): + /@rollup/plugin-node-resolve@15.2.3(rollup@4.12.0): resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3117,17 +3421,17 @@ packages: rollup: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.6.1) + '@rollup/pluginutils': 5.1.0(rollup@4.12.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 - rollup: 4.6.1 + rollup: 4.12.0 dev: true - /@rollup/plugin-typescript@11.1.5(rollup@4.6.1)(typescript@4.9.5): - resolution: {integrity: sha512-rnMHrGBB0IUEv69Q8/JGRD/n4/n6b3nfpufUu26axhUcboUzv/twfZU8fIBbTOphRAe0v8EyxzeDpKXqGHfyDA==} + /@rollup/plugin-typescript@11.1.6(rollup@4.12.0)(typescript@5.3.3): + resolution: {integrity: sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==} engines: {node: '>=14.0.0'} peerDependencies: rollup: ^2.14.0||^3.0.0||^4.0.0 @@ -3139,13 +3443,13 @@ packages: tslib: optional: true dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.6.1) + '@rollup/pluginutils': 5.1.0(rollup@4.12.0) resolve: 1.22.8 - rollup: 4.6.1 - typescript: 4.9.5 + rollup: 4.12.0 + typescript: 5.3.3 dev: true - /@rollup/pluginutils@5.1.0(rollup@4.6.1): + /@rollup/pluginutils@5.1.0(rollup@4.12.0): resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} engines: {node: '>=14.0.0'} peerDependencies: @@ -3157,110 +3461,114 @@ packages: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 - rollup: 4.6.1 + rollup: 4.12.0 dev: true - /@rollup/rollup-android-arm-eabi@4.6.1: - resolution: {integrity: sha512-0WQ0ouLejaUCRsL93GD4uft3rOmB8qoQMU05Kb8CmMtMBe7XUDLAltxVZI1q6byNqEtU7N1ZX1Vw5lIpgulLQA==} + /@rollup/rollup-android-arm-eabi@4.12.0: + resolution: {integrity: sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-android-arm64@4.6.1: - resolution: {integrity: sha512-1TKm25Rn20vr5aTGGZqo6E4mzPicCUD79k17EgTLAsXc1zysyi4xXKACfUbwyANEPAEIxkzwue6JZ+stYzWUTA==} + /@rollup/rollup-android-arm64@4.12.0: + resolution: {integrity: sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-arm64@4.6.1: - resolution: {integrity: sha512-cEXJQY/ZqMACb+nxzDeX9IPLAg7S94xouJJCNVE5BJM8JUEP4HeTF+ti3cmxWeSJo+5D+o8Tc0UAWUkfENdeyw==} + /@rollup/rollup-darwin-arm64@4.12.0: + resolution: {integrity: sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-darwin-x64@4.6.1: - resolution: {integrity: sha512-LoSU9Xu56isrkV2jLldcKspJ7sSXmZWkAxg7sW/RfF7GS4F5/v4EiqKSMCFbZtDu2Nc1gxxFdQdKwkKS4rwxNg==} + /@rollup/rollup-darwin-x64@4.12.0: + resolution: {integrity: sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm-gnueabihf@4.6.1: - resolution: {integrity: sha512-EfI3hzYAy5vFNDqpXsNxXcgRDcFHUWSx5nnRSCKwXuQlI5J9dD84g2Usw81n3FLBNsGCegKGwwTVsSKK9cooSQ==} + /@rollup/rollup-linux-arm-gnueabihf@4.12.0: + resolution: {integrity: sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-gnu@4.6.1: - resolution: {integrity: sha512-9lhc4UZstsegbNLhH0Zu6TqvDfmhGzuCWtcTFXY10VjLLUe4Mr0Ye2L3rrtHaDd/J5+tFMEuo5LTCSCMXWfUKw==} + /@rollup/rollup-linux-arm64-gnu@4.12.0: + resolution: {integrity: sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==} cpu: [arm64] os: [linux] - libc: [glibc] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-arm64-musl@4.6.1: - resolution: {integrity: sha512-FfoOK1yP5ksX3wwZ4Zk1NgyGHZyuRhf99j64I5oEmirV8EFT7+OhUZEnP+x17lcP/QHJNWGsoJwrz4PJ9fBEXw==} + /@rollup/rollup-linux-arm64-musl@4.12.0: + resolution: {integrity: sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==} cpu: [arm64] os: [linux] - libc: [musl] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-gnu@4.6.1: - resolution: {integrity: sha512-DNGZvZDO5YF7jN5fX8ZqmGLjZEXIJRdJEdTFMhiyXqyXubBa0WVLDWSNlQ5JR2PNgDbEV1VQowhVRUh+74D+RA==} - cpu: [x64] + /@rollup/rollup-linux-riscv64-gnu@4.12.0: + resolution: {integrity: sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==} + cpu: [riscv64] os: [linux] - libc: [glibc] requiresBuild: true dev: true optional: true - /@rollup/rollup-linux-x64-musl@4.6.1: - resolution: {integrity: sha512-RkJVNVRM+piYy87HrKmhbexCHg3A6Z6MU0W9GHnJwBQNBeyhCJG9KDce4SAMdicQnpURggSvtbGo9xAWOfSvIQ==} + /@rollup/rollup-linux-x64-gnu@4.12.0: + resolution: {integrity: sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==} cpu: [x64] os: [linux] - libc: [musl] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-arm64-msvc@4.6.1: - resolution: {integrity: sha512-v2FVT6xfnnmTe3W9bJXl6r5KwJglMK/iRlkKiIFfO6ysKs0rDgz7Cwwf3tjldxQUrHL9INT/1r4VA0n9L/F1vQ==} + /@rollup/rollup-linux-x64-musl@4.12.0: + resolution: {integrity: sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /@rollup/rollup-win32-arm64-msvc@4.12.0: + resolution: {integrity: sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-ia32-msvc@4.6.1: - resolution: {integrity: sha512-YEeOjxRyEjqcWphH9dyLbzgkF8wZSKAKUkldRY6dgNR5oKs2LZazqGB41cWJ4Iqqcy9/zqYgmzBkRoVz3Q9MLw==} + /@rollup/rollup-win32-ia32-msvc@4.12.0: + resolution: {integrity: sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@rollup/rollup-win32-x64-msvc@4.6.1: - resolution: {integrity: sha512-0zfTlFAIhgz8V2G8STq8toAjsYYA6eci1hnXuyOTUFnymrtJwnS6uGKiv3v5UrPZkBlamLvrLV2iiaeqCKzb0A==} + /@rollup/rollup-win32-x64-msvc@4.12.0: + resolution: {integrity: sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==} cpu: [x64] os: [win32] requiresBuild: true dev: true optional: true - /@rushstack/node-core-library@3.62.0(@types/node@20.10.4): + /@rushstack/node-core-library@3.62.0(@types/node@20.11.19): resolution: {integrity: sha512-88aJn2h8UpSvdwuDXBv1/v1heM6GnBf3RjEy6ZPP7UnzHNCqOHA2Ut+ScYUbXcqIdfew9JlTAe3g+cnX9xQ/Aw==} peerDependencies: '@types/node': '*' @@ -3268,7 +3576,7 @@ packages: '@types/node': optional: true dependencies: - '@types/node': 20.10.4 + '@types/node': 20.11.19 colors: 1.2.5 fs-extra: 7.0.1 import-lazy: 4.0.0 @@ -3324,8 +3632,8 @@ packages: engines: {node: '>=14.16'} dev: true - /@sindresorhus/merge-streams@1.0.0: - resolution: {integrity: sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==} + /@sindresorhus/merge-streams@2.3.0: + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} engines: {node: '>=18'} dev: true @@ -3346,29 +3654,12 @@ packages: engines: {node: '>=12.10.0', npm: '>=6.0.0'} hasBin: true - /@swc/core-darwin-arm64@1.3.23: - resolution: {integrity: sha512-IGOEHmE4aBDX7gQWpanI3A0ni47UcvX7rmcy0H8kE6mm/y7mEMWskvNsYhYzJl4GVZgw38v1/lL/A7MRX6g71A==} - engines: {node: '>=10'} - cpu: [arm64] - os: [darwin] - requiresBuild: true - optional: true - /@swc/core-darwin-arm64@1.3.96: resolution: {integrity: sha512-8hzgXYVd85hfPh6mJ9yrG26rhgzCmcLO0h1TIl8U31hwmTbfZLzRitFQ/kqMJNbIBCwmNH1RU2QcJnL3d7f69A==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] requiresBuild: true - dev: true - optional: true - - /@swc/core-darwin-x64@1.3.23: - resolution: {integrity: sha512-eQSN+JJqx/5Dk2C5uet2l7HifGsDBorQHD3PAVnge5jxl+rXU/zbzX9Un56+uuUB0QYeS4Dyr8cN7NHuIKGxBA==} - engines: {node: '>=10'} - cpu: [x64] - os: [darwin] - requiresBuild: true optional: true /@swc/core-darwin-x64@1.3.96: @@ -3377,15 +3668,6 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true - dev: true - optional: true - - /@swc/core-linux-arm-gnueabihf@1.3.23: - resolution: {integrity: sha512-zxYvggbw6R/sTNey0qgsigFMY59DYepm1+JNojxOKjbnvxmgyeIa5sPdu/5gLj0TtJOiWvSGrpMPNUIVreUSGA==} - engines: {node: '>=10'} - cpu: [arm] - os: [linux] - requiresBuild: true optional: true /@swc/core-linux-arm-gnueabihf@1.3.96: @@ -3394,16 +3676,6 @@ packages: cpu: [arm] os: [linux] requiresBuild: true - dev: true - optional: true - - /@swc/core-linux-arm64-gnu@1.3.23: - resolution: {integrity: sha512-l8UWhcNvZ6RzNZBBToMYuKYijF0h7mbw2RuFV5rpCYF/k/Wh85PaDHPQIQ6qjMHJsIBHYXUt0HLAP+fiAfBiDw==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - libc: [glibc] - requiresBuild: true optional: true /@swc/core-linux-arm64-gnu@1.3.96: @@ -3413,16 +3685,6 @@ packages: os: [linux] libc: [glibc] requiresBuild: true - dev: true - optional: true - - /@swc/core-linux-arm64-musl@1.3.23: - resolution: {integrity: sha512-TZDPp1wUE1ynVyY0vwIToyOULKEQ91H49R+p6Iu/2YY+UQQwUamhX0Gp8O85RT+j72/iHyhbQkz7yRg6v+GB5A==} - engines: {node: '>=10'} - cpu: [arm64] - os: [linux] - libc: [musl] - requiresBuild: true optional: true /@swc/core-linux-arm64-musl@1.3.96: @@ -3432,16 +3694,6 @@ packages: os: [linux] libc: [musl] requiresBuild: true - dev: true - optional: true - - /@swc/core-linux-x64-gnu@1.3.23: - resolution: {integrity: sha512-rKqWnOmUyQfoKZuuXs/S0RNobN+kcUyMtwoCdRdCNqOlk1XZRCMpjGc9Aqn73K3xlZ6JXX6oLrXKn375b2dydw==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - libc: [glibc] - requiresBuild: true optional: true /@swc/core-linux-x64-gnu@1.3.96: @@ -3451,16 +3703,6 @@ packages: os: [linux] libc: [glibc] requiresBuild: true - dev: true - optional: true - - /@swc/core-linux-x64-musl@1.3.23: - resolution: {integrity: sha512-1MK9eocIhuIr/+yUKnTNHpYovMQvfKTJQbU4UMfQLg2qyCGKAvO+jOy5JIGR9x04MWqz9U3EHHS/7Id35ekhFQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [linux] - libc: [musl] - requiresBuild: true optional: true /@swc/core-linux-x64-musl@1.3.96: @@ -3470,15 +3712,6 @@ packages: os: [linux] libc: [musl] requiresBuild: true - dev: true - optional: true - - /@swc/core-win32-arm64-msvc@1.3.23: - resolution: {integrity: sha512-3nmdugj0SJIGWeCJBhvPWIfnE2Ax8H2KZsJfcaWmWg0SDh19aAt48Ncyd8WHHBandJmVm2fSjaANSjp+cS2S9A==} - engines: {node: '>=10'} - cpu: [arm64] - os: [win32] - requiresBuild: true optional: true /@swc/core-win32-arm64-msvc@1.3.96: @@ -3487,15 +3720,6 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true - dev: true - optional: true - - /@swc/core-win32-ia32-msvc@1.3.23: - resolution: {integrity: sha512-2AlGRhys1BsfLjXyWOd+5J/Ko2kkVQVuy3ZR8OBGy7XI54p0PpepabloYI9irr+4bi9vtyxoc5rS21PmJxB83Q==} - engines: {node: '>=10'} - cpu: [ia32] - os: [win32] - requiresBuild: true optional: true /@swc/core-win32-ia32-msvc@1.3.96: @@ -3504,15 +3728,6 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true - dev: true - optional: true - - /@swc/core-win32-x64-msvc@1.3.23: - resolution: {integrity: sha512-qYKP8sIM7VVLuDb5BkRBoHy28OHZWrUhPTO7WgpErhVVM9wnzmMi/Jgg8SyfMy6oheBjO0QiwWbXONxBwByjnQ==} - engines: {node: '>=10'} - cpu: [x64] - os: [win32] - requiresBuild: true optional: true /@swc/core-win32-x64-msvc@1.3.96: @@ -3521,26 +3736,8 @@ packages: cpu: [x64] os: [win32] requiresBuild: true - dev: true optional: true - /@swc/core@1.3.23: - resolution: {integrity: sha512-Aa7yw5+7ErOxr+G0J1eU2hkb9nEMSdt1Ye3isdAgg9mrsPuttk+cfLp6nP/Lux/VUnu5k4eOxeTy9UhjJhRAFw==} - engines: {node: '>=10'} - hasBin: true - requiresBuild: true - optionalDependencies: - '@swc/core-darwin-arm64': 1.3.23 - '@swc/core-darwin-x64': 1.3.23 - '@swc/core-linux-arm-gnueabihf': 1.3.23 - '@swc/core-linux-arm64-gnu': 1.3.23 - '@swc/core-linux-arm64-musl': 1.3.23 - '@swc/core-linux-x64-gnu': 1.3.23 - '@swc/core-linux-x64-musl': 1.3.23 - '@swc/core-win32-arm64-msvc': 1.3.23 - '@swc/core-win32-ia32-msvc': 1.3.23 - '@swc/core-win32-x64-msvc': 1.3.23 - /@swc/core@1.3.96: resolution: {integrity: sha512-zwE3TLgoZwJfQygdv2SdCK9mRLYluwDOM53I+dT6Z5ZvrgVENmY3txvWDvduzkV+/8IuvrRbVezMpxcojadRdQ==} engines: {node: '>=10'} @@ -3564,22 +3761,9 @@ packages: '@swc/core-win32-arm64-msvc': 1.3.96 '@swc/core-win32-ia32-msvc': 1.3.96 '@swc/core-win32-x64-msvc': 1.3.96 - dev: true /@swc/counter@0.1.2: resolution: {integrity: sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==} - dev: true - - /@swc/register@0.1.10(@swc/core@1.3.23): - resolution: {integrity: sha512-6STwH/q4dc3pitXLVkV7sP0Hiy+zBsU2wOF1aXpXR95pnH3RYHKIsDC+gvesfyB7jxNT9OOZgcqOp9RPxVTx9A==} - hasBin: true - peerDependencies: - '@swc/core': ^1.0.46 - dependencies: - '@swc/core': 1.3.23 - lodash.clonedeep: 4.5.0 - pirates: 4.0.6 - source-map-support: 0.5.21 /@swc/register@0.1.10(@swc/core@1.3.96): resolution: {integrity: sha512-6STwH/q4dc3pitXLVkV7sP0Hiy+zBsU2wOF1aXpXR95pnH3RYHKIsDC+gvesfyB7jxNT9OOZgcqOp9RPxVTx9A==} @@ -3591,11 +3775,9 @@ packages: lodash.clonedeep: 4.5.0 pirates: 4.0.6 source-map-support: 0.5.21 - dev: true /@swc/types@0.1.5: resolution: {integrity: sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==} - dev: true /@szmarczak/http-timer@1.1.2: resolution: {integrity: sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==} @@ -3611,34 +3793,78 @@ packages: defer-to-connect: 2.0.1 dev: true - /@tarojs/api@3.6.18: - resolution: {integrity: sha512-deQga4zzgOpZeXoqKLWU4Gn1qrLMnK2y1uOKEXz50ZgR9Uw/Qh2V49lxRY5w0YzYpqaZ29lh0KIxW8jXDiXM0w==} + /@tarojs/api@3.6.22: + resolution: {integrity: sha512-OHNZv7f+PidW5kHyxWKtPmiMLhB6MXMWAYDqHZv+anXVdxDJZEkO72F1E1QVCklX7xPlSo3rH6tj1rNxeQyZQA==} dependencies: - '@babel/runtime': 7.23.5 - '@tarojs/runtime': 3.6.18 - '@tarojs/shared': 3.6.18 + '@babel/runtime': 7.23.9 + '@tarojs/runtime': 3.6.22 + '@tarojs/shared': 3.6.22 - /@tarojs/cli@3.6.18(@types/react@18.2.42)(postcss@8.4.32): - resolution: {integrity: sha512-Vm73dap6hdH93xP7hZva6QtdrkOUuz6ciFArUfx1S9hSHQRGsLuKA19qHSDqAc3wFBlVzsB45A7VraLFTVmO8w==} + /@tarojs/binding-darwin-arm64@3.6.22: + resolution: {integrity: sha512-gr+jOjMKesWfsTY0nSvXr0QMyHxiuck+BtRNp9QJLXYmF6jQBNyMt1R/nqiHG6glCkk6RzUhS9Rze5vi3Lkp2Q==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@tarojs/binding-darwin-x64@3.6.22: + resolution: {integrity: sha512-a/n+b9MjRM3XDAS/DQiN7qi7tRr5d5Oj9h63oDDXVgGTpIgo1GntSdZX4whX4B77zqAKN/p3V1liWHZr0JkGGg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /@tarojs/binding-linux-x64-gnu@3.6.22: + resolution: {integrity: sha512-ylm5rW+OO5m82+Wt99gtsrh5dTPGhQwzuUMVMZn/VS486uM9oVi6YjgoxVruyllmJbWtHaWd+j9VYNSDsJZgEA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + libc: [glibc] + requiresBuild: true + dev: true + optional: true + + /@tarojs/binding-win32-x64-msvc@3.6.22: + resolution: {integrity: sha512-bqhQW0PfwR2ERsjcCclKbiE22T2OSJPG9u19WQMI93KcogM5weAB2VKmxBdjN1NXtqKjK3pjwofSHQd8Y2LAGA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /@tarojs/binding@3.6.22: + resolution: {integrity: sha512-q6LVE1XBrUrUw4vqS8hQxhAA5hX890Dlk2TxRo3jDpwNr2qC0/LqUrBBSfqpZtLsyuA1UGMnckzTTYXYABlotg==} + optionalDependencies: + '@tarojs/binding-darwin-arm64': 3.6.22 + '@tarojs/binding-darwin-x64': 3.6.22 + '@tarojs/binding-linux-x64-gnu': 3.6.22 + '@tarojs/binding-win32-x64-msvc': 3.6.22 + dev: true + + /@tarojs/cli@3.6.22(@types/react@18.2.57)(postcss@8.4.35): + resolution: {integrity: sha512-HwhYCcn/bWBbfUXL2ep1ICqXir7EsiXJuREJEKoWZ7LgO9qh2ZWf7GzOHswhClpKjyYKLMiHtmLPfx9hIS4FKQ==} engines: {node: '>=12'} hasBin: true dependencies: - '@tarojs/helper': 3.6.18 + '@tarojs/binding': 3.6.22 + '@tarojs/helper': 3.6.22 '@tarojs/plugin-doctor': 0.0.11 - '@tarojs/service': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/shared': 3.6.18 + '@tarojs/service': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/shared': 3.6.22 adm-zip: 0.4.16 cli-highlight: 2.1.11 download-git-repo: 2.0.0 envinfo: 7.11.0 - eslint: 8.55.0 + eslint: 8.56.0 glob: 7.2.3 inquirer: 8.2.6 - joi: 17.11.0 latest-version: 5.1.0 lodash: 4.17.21 - mem-fs: 2.3.0 - mem-fs-editor: 9.7.0(mem-fs@2.3.0) minimist: 1.2.8 npm-check: 6.0.1 ora: 5.4.1 @@ -3647,6 +3873,7 @@ packages: validate-npm-package-name: 5.0.0 xml2js: 0.5.0 transitivePeerDependencies: + - '@swc/helpers' - '@types/react' - '@types/webpack' - '@types/webpack-dev-server' @@ -3655,8 +3882,8 @@ packages: - vue dev: true - /@tarojs/components-advanced@3.6.18(@types/react@18.2.42)(react@18.2.0): - resolution: {integrity: sha512-6TOPjwe/DhjBSxOzXyVQerovJ2Wn7vMXHWZAeo2BxFFa8DCyeQBs75eoruQEHrBajdkMRJre+4CGGTgsHhPrHg==} + /@tarojs/components-advanced@3.6.22(@types/react@18.2.57)(react@18.2.0): + resolution: {integrity: sha512-O5ocw40AeeTwlRSV4H5UOWMPALEvjdE5Y297zcnWYJvuBId6Si6hd2hjdQ2HYXLzE0+dVrU8dCtM0WZScvqb6Q==} peerDependencies: react: '>=17' vue: '*' @@ -3666,14 +3893,14 @@ packages: vue: optional: true dependencies: - '@tarojs/components': 3.6.18(@types/react@18.2.42)(postcss@8.4.32)(react@18.2.0) - '@tarojs/runtime': 3.6.18 - '@tarojs/shared': 3.6.18 - '@tarojs/taro': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - classnames: 2.3.2 + '@tarojs/components': 3.6.22(@types/react@18.2.57)(postcss@8.4.35)(react@18.2.0) + '@tarojs/runtime': 3.6.22 + '@tarojs/shared': 3.6.22 + '@tarojs/taro': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + classnames: 2.5.1 csstype: 3.1.2 memoize-one: 6.0.0 - postcss: 8.4.32 + postcss: 8.4.35 react: 18.2.0 transitivePeerDependencies: - '@types/react' @@ -3681,13 +3908,13 @@ packages: - '@types/webpack' - '@types/webpack-dev-server' - /@tarojs/components-react@3.6.18(@types/react@18.2.42)(postcss@8.4.32): - resolution: {integrity: sha512-3QPGpxXd6jYfxh8GgaIYxkzfYF49Aqd7c445+AJROKEc6BECGCbMI2ivEyUtdsyCKLI0JcyohrTn0TNlUc6Vhw==} + /@tarojs/components-react@3.6.22(@types/react@18.2.57)(postcss@8.4.35): + resolution: {integrity: sha512-18HOKIb6ek+HCa1bcsTFhaOqNUy4kcpkHSy0eDO068eeMy3MT04pGIm/y/cUOrXyFpU4UyCthi0iYAaOpTwNvw==} dependencies: - '@babel/runtime': 7.23.5 - '@tarojs/components': 3.6.18(@types/react@18.2.42)(postcss@8.4.32)(react@18.2.0) - '@tarojs/taro': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - classnames: 2.3.2 + '@babel/runtime': 7.23.9 + '@tarojs/components': 3.6.22(@types/react@18.2.57)(postcss@8.4.35)(react@18.2.0) + '@tarojs/taro': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + classnames: 2.5.1 intersection-observer: 0.7.0 resolve-pathname: 3.0.0 swiper: 6.8.0 @@ -3701,8 +3928,8 @@ packages: - vue dev: false - /@tarojs/components@3.6.18(@types/react@18.2.42)(postcss@8.4.32)(react@18.2.0): - resolution: {integrity: sha512-qygrUZWPK0oy8/bZEEW/W0tteoGfdIf7HngxBIG8gdkw607+MYK3ft582KnAbKby7WGYbk9BUciBb5v1VlSAwA==} + /@tarojs/components@3.6.22(@types/react@18.2.57)(postcss@8.4.35)(react@18.2.0): + resolution: {integrity: sha512-U7HJSdS81PX9K3iG173NLt1zQdWluudCHpSIMcvTnGnTXJt6HqasXYJ8P8x0udQ6EZJtGL0ySNyIPFF9tdItAQ==} peerDependencies: '@types/react': '*' '@types/react-native': '*' @@ -3716,11 +3943,11 @@ packages: optional: true dependencies: '@stencil/core': 2.22.3 - '@tarojs/components-advanced': 3.6.18(@types/react@18.2.42)(react@18.2.0) - '@tarojs/router': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/taro': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@types/react': 18.2.42 - classnames: 2.3.2 + '@tarojs/components-advanced': 3.6.22(@types/react@18.2.57)(react@18.2.0) + '@tarojs/router': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/taro': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@types/react': 18.2.57 + classnames: 2.5.1 hls.js: 1.4.13 intersection-observer: 0.7.0 resolve-pathname: 3.0.0 @@ -3732,21 +3959,21 @@ packages: - postcss - react - /@tarojs/helper@3.6.18: - resolution: {integrity: sha512-nq74W65q+Fa4FKqeBCZ0CUOjGsv8IQ/H3x5iI8SWm1bbfVXvIy/5j5EIJYFbXEo0BHYdaq3vs+l7rSrb1LUjbg==} + /@tarojs/helper@3.6.20: + resolution: {integrity: sha512-sKsvv//FR2rfKfg2P+geMc2f69kSSgLpSr3e0B1CnGdzfI9CROVt2SKGo4jcrDVpDuRMbitfX4HsaMalOdzRfQ==} dependencies: - '@babel/core': 7.23.5 - '@babel/parser': 7.23.5 - '@babel/plugin-proposal-decorators': 7.23.5(@babel/core@7.23.5) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.5) - '@babel/plugin-transform-runtime': 7.23.4(@babel/core@7.23.5) - '@babel/preset-env': 7.23.5(@babel/core@7.23.5) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.5) - '@babel/register': 7.22.15(@babel/core@7.23.5) - '@babel/runtime': 7.23.5 + '@babel/core': 7.23.9 + '@babel/parser': 7.23.9 + '@babel/plugin-proposal-decorators': 7.23.5(@babel/core@7.23.9) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.9) + '@babel/plugin-transform-runtime': 7.23.9(@babel/core@7.23.9) + '@babel/preset-env': 7.23.9(@babel/core@7.23.9) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.9) + '@babel/register': 7.22.15(@babel/core@7.23.9) + '@babel/runtime': 7.23.9 '@babel/traverse': 7.23.5 - '@swc/core': 1.3.23 - '@swc/register': 0.1.10(@swc/core@1.3.23) + '@swc/core': 1.3.96 + '@swc/register': 0.1.10(@swc/core@1.3.96) ansi-escapes: 4.3.2 chalk: 3.0.0 chokidar: 3.5.3 @@ -3754,7 +3981,7 @@ packages: debug: 4.3.4 dotenv: 16.3.1 dotenv-expand: 9.0.0 - esbuild: 0.14.54 + esbuild: 0.19.8 find-yarn-workspace-root: 2.0.0 fs-extra: 8.1.0 lodash: 4.17.21 @@ -3763,20 +3990,22 @@ packages: supports-hyperlinks: 2.3.0 yauzl: 2.10.0 transitivePeerDependencies: + - '@swc/helpers' - supports-color + dev: true - /@tarojs/helper@3.6.20: - resolution: {integrity: sha512-sKsvv//FR2rfKfg2P+geMc2f69kSSgLpSr3e0B1CnGdzfI9CROVt2SKGo4jcrDVpDuRMbitfX4HsaMalOdzRfQ==} + /@tarojs/helper@3.6.22: + resolution: {integrity: sha512-u2hnXcsg4gwF9JKQU4PWwVffUX52CL+7rfJwVZYUm3lgJ4xvbz3i6mYSBEnj+L6VquHnhr/jjPKAbE1ne2dQTA==} dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/parser': 7.23.5 - '@babel/plugin-proposal-decorators': 7.23.5(@babel/core@7.23.5) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.5) - '@babel/plugin-transform-runtime': 7.23.4(@babel/core@7.23.5) - '@babel/preset-env': 7.23.5(@babel/core@7.23.5) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.5) - '@babel/register': 7.22.15(@babel/core@7.23.5) - '@babel/runtime': 7.23.5 + '@babel/plugin-proposal-decorators': 7.23.5(@babel/core@7.23.9) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.9) + '@babel/plugin-transform-runtime': 7.23.9(@babel/core@7.23.9) + '@babel/preset-env': 7.23.9(@babel/core@7.23.9) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.9) + '@babel/register': 7.22.15(@babel/core@7.23.9) + '@babel/runtime': 7.23.9 '@babel/traverse': 7.23.5 '@swc/core': 1.3.96 '@swc/register': 0.1.10(@swc/core@1.3.96) @@ -3798,7 +4027,6 @@ packages: transitivePeerDependencies: - '@swc/helpers' - supports-color - dev: true /@tarojs/plugin-doctor-darwin-arm64@0.0.11: resolution: {integrity: sha512-H3C0TQD7k9YalSR2kgrVEvP1TfhSeRQDQQXhSurLStNuTqhrk8JSzxbxYC/Of5edM/uu+5xOzT0YfMV2LKG5UA==} @@ -3924,8 +4152,8 @@ packages: - supports-color dev: true - /@tarojs/plugin-framework-react@3.6.18(@pmmmwh/react-refresh-webpack-plugin@0.5.11)(@types/react@18.2.42)(postcss@8.4.32)(react-refresh@0.14.0)(react@18.2.0): - resolution: {integrity: sha512-SBmyfYDu4Ehj7kXX4LdrD/EZO3qPqEo0usiatj6KEMFv7VR/LxUUvyHs2hkdVpFYniVNBeHskuob8WuE5aLPqw==} + /@tarojs/plugin-framework-react@3.6.22(@pmmmwh/react-refresh-webpack-plugin@0.5.10)(@types/react@18.2.57)(postcss@8.4.35)(react-refresh@0.14.0)(react@18.2.0): + resolution: {integrity: sha512-C0zisUrKTVfF305sFOZjQi6Yxh7UYhhiETv9eRuLwVQvm5ZCkscBcqQC/hFygTT9m6Ex7wqaCpCpRh6+CASw2Q==} peerDependencies: '@pmmmwh/react-refresh-webpack-plugin': '*' '@prefresh/webpack': '*' @@ -3944,17 +4172,18 @@ packages: react-refresh: optional: true dependencies: - '@pmmmwh/react-refresh-webpack-plugin': 0.5.11(react-refresh@0.14.0)(webpack@5.89.0) - '@tarojs/helper': 3.6.18 - '@tarojs/runtime': 3.6.18 - '@tarojs/service': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/shared': 3.6.18 + '@pmmmwh/react-refresh-webpack-plugin': 0.5.10(react-refresh@0.14.0)(webpack@5.79.0) + '@tarojs/helper': 3.6.22 + '@tarojs/runtime': 3.6.22 + '@tarojs/service': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/shared': 3.6.22 acorn: 8.11.2 acorn-walk: 8.3.1 lodash: 4.17.21 react: 18.2.0 react-refresh: 0.14.0 transitivePeerDependencies: + - '@swc/helpers' - '@types/react' - '@types/webpack' - '@types/webpack-dev-server' @@ -3963,17 +4192,18 @@ packages: - vue dev: false - /@tarojs/plugin-html@3.6.18(@types/react@18.2.42)(postcss@8.4.32): - resolution: {integrity: sha512-t3rbNTgJZbrQxEeSJ1T2v+cUC6/+oM/u3qdd4q36uwwf9mBXTph1Lhzrg+SoG7zXSOu/X5PUhF1LPVXl0adncA==} + /@tarojs/plugin-html@3.6.22(@types/react@18.2.57)(postcss@8.4.35): + resolution: {integrity: sha512-5fVO6ZsmFZDKMy0SCq8wLRHP/GitE4L58bwuFCoj4Hxl4AC5VKzhXDBxM8JFY6S2eVXozJpHNknrZ8PaVv7+7A==} dependencies: '@babel/generator': 7.23.5 '@babel/parser': 7.23.5 '@babel/traverse': 7.23.5 '@babel/types': 7.23.5 - '@tarojs/runtime': 3.6.18 - '@tarojs/service': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/shared': 3.6.18 + '@tarojs/runtime': 3.6.22 + '@tarojs/service': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/shared': 3.6.22 transitivePeerDependencies: + - '@swc/helpers' - '@types/react' - '@types/webpack' - '@types/webpack-dev-server' @@ -3982,13 +4212,14 @@ packages: - vue dev: false - /@tarojs/plugin-platform-alipay@3.6.18(@types/react@18.2.42)(postcss@8.4.32)(react@18.2.0): - resolution: {integrity: sha512-GlDtbJJFmjKLq/B0VdV95LsfzylAqOVc6I7ib3qe9e4ZrL+PdGIlfm1R5w7rSfAsmbxwj1WxBvmY7PBBqqqjhg==} + /@tarojs/plugin-platform-alipay@3.6.22(@types/react@18.2.57)(postcss@8.4.35)(react@18.2.0): + resolution: {integrity: sha512-dmhWl2BHsL1eUNjYRKrOwQJGkpdN/LGyu+++iFSM3ra8PzwaGRxq61u1LxC+7nkf8/9dJKtG5UoEoWprxQD5yg==} dependencies: - '@tarojs/components': 3.6.18(@types/react@18.2.42)(postcss@8.4.32)(react@18.2.0) - '@tarojs/service': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/shared': 3.6.18 + '@tarojs/components': 3.6.22(@types/react@18.2.57)(postcss@8.4.35)(react@18.2.0) + '@tarojs/service': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/shared': 3.6.22 transitivePeerDependencies: + - '@swc/helpers' - '@types/react' - '@types/react-native' - '@types/webpack' @@ -3998,20 +4229,21 @@ packages: - supports-color - vue - /@tarojs/plugin-platform-h5@3.6.18(@types/react@18.2.42)(postcss@8.4.32): - resolution: {integrity: sha512-APgjNyLBLbhUAM4x/os2RnHKQdLygzZojLS6m0qah/9rNo8RoGVinN/j6i8d2DIdrxEViY5kD4aexzw0qdQl+g==} + /@tarojs/plugin-platform-h5@3.6.22(@types/react@18.2.57)(postcss@8.4.35): + resolution: {integrity: sha512-g3Xkyu7AAqZEGQtQ/rZ9WAecRPlg7YfvXoXgopRNlUXVqGX2Hoc1GTI/Zy/mQH2jXR4/ALIBkAUs2kBN+pPH6w==} dependencies: - '@tarojs/components': 3.6.18(@types/react@18.2.42)(postcss@8.4.32)(react@18.2.0) - '@tarojs/components-react': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/router': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/service': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/shared': 3.6.18 - '@tarojs/taro-h5': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - babel-plugin-transform-taroapi: 3.6.18 + '@tarojs/components': 3.6.22(@types/react@18.2.57)(postcss@8.4.35)(react@18.2.0) + '@tarojs/components-react': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/router': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/service': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/shared': 3.6.22 + '@tarojs/taro-h5': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + babel-plugin-transform-taroapi: 3.6.22 change-case: 4.1.2 lodash-es: 4.17.21 resolve: 1.22.8 transitivePeerDependencies: + - '@swc/helpers' - '@types/react' - '@types/react-native' - '@types/webpack' @@ -4021,12 +4253,13 @@ packages: - vue dev: false - /@tarojs/plugin-platform-jd@3.6.18(@types/react@18.2.42)(postcss@8.4.32): - resolution: {integrity: sha512-jBX07do4/BMqtmrR1ttCYwh3LGbrVmprJvRdD6if52sHkESMa1jfQZN/foyjd4lIbwDzfdGBNiQoyDV2bhMtmw==} + /@tarojs/plugin-platform-jd@3.6.22(@types/react@18.2.57)(postcss@8.4.35): + resolution: {integrity: sha512-2b22hUK6WqbzPtJAXcxd/To5DF7aFQNEgRbKgnGk4wTjeUAsiAf1BV3xGe4ekPFvw4msaafXJT2fq1Qbn4bupA==} dependencies: - '@tarojs/service': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/shared': 3.6.18 + '@tarojs/service': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/shared': 3.6.22 transitivePeerDependencies: + - '@swc/helpers' - '@types/react' - '@types/webpack' - '@types/webpack-dev-server' @@ -4034,13 +4267,14 @@ packages: - supports-color - vue - /@tarojs/plugin-platform-qq@3.6.18(@types/react@18.2.42)(postcss@8.4.32): - resolution: {integrity: sha512-DTy9teQDfFs1bPVfMwP1tGkhmYcIJHCzco7+XezShDi+hNybu+ysmoUO9uHAS66Q2uFq2QlxAH3LZpS6Ml+vIA==} + /@tarojs/plugin-platform-qq@3.6.22(@types/react@18.2.57)(postcss@8.4.35): + resolution: {integrity: sha512-XMVvO2k3qEmNgY7lKFvwm2+JPW6m8FqvGp6n27tAlUFYEgnSH7ejyvNauKYDKbv1XZpQHPvbJE2ijq5Zdj5WKQ==} dependencies: - '@tarojs/plugin-platform-weapp': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/service': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/shared': 3.6.18 + '@tarojs/plugin-platform-weapp': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/service': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/shared': 3.6.22 transitivePeerDependencies: + - '@swc/helpers' - '@types/react' - '@types/react-native' - '@types/webpack' @@ -4049,13 +4283,14 @@ packages: - supports-color - vue - /@tarojs/plugin-platform-swan@3.6.18(@types/react@18.2.42)(postcss@8.4.32): - resolution: {integrity: sha512-09Eb3qjlMMBcFaqjE+y5m0sXCqy3rCPmuWNvlc7IKF+JuoHWLSbcEqj4oOq/DN1KGCeIzZAU4zWUIHMN/cn8vw==} + /@tarojs/plugin-platform-swan@3.6.22(@types/react@18.2.57)(postcss@8.4.35): + resolution: {integrity: sha512-dtRSyMOrr3flrdt49d2WPwJ3P34EWejIqHXCFfLXNc/isDvTpXgSKWyZYujEMxwtZlgATtvUefAz6OJza/KD6g==} dependencies: - '@tarojs/components': 3.6.18(@types/react@18.2.42)(postcss@8.4.32)(react@18.2.0) - '@tarojs/service': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/shared': 3.6.18 + '@tarojs/components': 3.6.22(@types/react@18.2.57)(postcss@8.4.35)(react@18.2.0) + '@tarojs/service': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/shared': 3.6.22 transitivePeerDependencies: + - '@swc/helpers' - '@types/react' - '@types/react-native' - '@types/webpack' @@ -4064,13 +4299,14 @@ packages: - supports-color - vue - /@tarojs/plugin-platform-tt@3.6.18(@types/react@18.2.42)(postcss@8.4.32): - resolution: {integrity: sha512-3sSshP47AvOrkF/I7XbPB5SDKK1veearIBRY48mbyNcel+ch//8D4SGOpvI3BKOu2ubYsV8ZDdXswMk7jqGIQA==} + /@tarojs/plugin-platform-tt@3.6.22(@types/react@18.2.57)(postcss@8.4.35): + resolution: {integrity: sha512-V54BiUspY4U3VEMc8K0aG9YPbFZin5oc1t9btYgcP/fYmb8X7e19166Es9OyY5SnlVj4FiMBw/qEiFVSwCvtSg==} dependencies: - '@tarojs/components': 3.6.18(@types/react@18.2.42)(postcss@8.4.32)(react@18.2.0) - '@tarojs/service': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/shared': 3.6.18 + '@tarojs/components': 3.6.22(@types/react@18.2.57)(postcss@8.4.35)(react@18.2.0) + '@tarojs/service': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/shared': 3.6.22 transitivePeerDependencies: + - '@swc/helpers' - '@types/react' - '@types/react-native' - '@types/webpack' @@ -4079,13 +4315,14 @@ packages: - supports-color - vue - /@tarojs/plugin-platform-weapp@3.6.18(@types/react@18.2.42)(postcss@8.4.32): - resolution: {integrity: sha512-GoXR1/rHMbboadstoQXQvo8k6ssQQoNeD3+ccygEgYWD1CFynjB7+QoBdTPzahpvgKnLrAbjKmn6hrlaC+pKpg==} + /@tarojs/plugin-platform-weapp@3.6.22(@types/react@18.2.57)(postcss@8.4.35): + resolution: {integrity: sha512-WjVfVYj63o8ATEL+rL0hkJlexDIp8jE3Ijv4BQIceQvHoBg2VkPtOE3ctZcb9FnfcEHkPOIV8+wK5iqkyBQhaw==} dependencies: - '@tarojs/components': 3.6.18(@types/react@18.2.42)(postcss@8.4.32)(react@18.2.0) - '@tarojs/service': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/shared': 3.6.18 + '@tarojs/components': 3.6.22(@types/react@18.2.57)(postcss@8.4.35)(react@18.2.0) + '@tarojs/service': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/shared': 3.6.22 transitivePeerDependencies: + - '@swc/helpers' - '@types/react' - '@types/react-native' - '@types/webpack' @@ -4094,20 +4331,20 @@ packages: - supports-color - vue - /@tarojs/react@3.6.18(react@18.2.0): - resolution: {integrity: sha512-zTAFNp1zLdegG8wE70G4Ni/CKu0YYXgp5nMJEjD2126Kf126PvFNvaGhzopkaZwlWGwyqAObGBcL9WH3zsSsjw==} + /@tarojs/react@3.6.22(react@18.2.0): + resolution: {integrity: sha512-m0Vkrn3s0c2OBEwsHAS+agW4ocyb53cYyttrX4pN2mtSevSOCAPqrBGb6vgGpiFnUNcCYdmw/N2ny5M1rLXTAA==} dependencies: - '@tarojs/runtime': 3.6.18 - '@tarojs/shared': 3.6.18 + '@tarojs/runtime': 3.6.22 + '@tarojs/shared': 3.6.22 react-reconciler: 0.27.0(react@18.2.0) transitivePeerDependencies: - react - /@tarojs/router@3.6.18(@types/react@18.2.42)(postcss@8.4.32): - resolution: {integrity: sha512-J1DVjdPv1uW0ZmiJ2NkdL58LMWm7Q3Xn/fTuPRo5BnMQn26GP11T4PiJUn8Zb3bUBPSs5qidzrYTxWiY0QHCbQ==} + /@tarojs/router@3.6.22(@types/react@18.2.57)(postcss@8.4.35): + resolution: {integrity: sha512-T9/nI0SrwOpBIgZxeKBx7cQyIWOpdso7t2tWDhmX1CMUNIXkcI0MOYffD/lYzMaH9W2rC2zzYJo16oASxy6Dyw==} dependencies: - '@tarojs/runtime': 3.6.18 - '@tarojs/taro': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) + '@tarojs/runtime': 3.6.22 + '@tarojs/taro': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) dingtalk-jsapi: 2.15.4 history: 5.3.0 mobile-detect: 1.4.5 @@ -4120,27 +4357,28 @@ packages: - postcss - vue - /@tarojs/runner-utils@3.6.18: - resolution: {integrity: sha512-Nvs96XIHLt6eJtfcgITd6rbZyA34FkT4LlLrbUO1qi0/zNH0i8HXar4Q8X8w6FQPhVVyw7y34mFlK2D0mdcBUg==} + /@tarojs/runner-utils@3.6.22: + resolution: {integrity: sha512-ya4nQHS6suXuTAUvn9FrwB7Gz4alcDvFQmI3oxcuKDowbTqWHLnqJGQeDkpyrAAtbSPlqpZZXtEpsscvZHlmUA==} dependencies: - '@tarojs/helper': 3.6.18 + '@tarojs/helper': 3.6.22 scss-bundle: 3.1.2 transitivePeerDependencies: + - '@swc/helpers' - supports-color dev: true - /@tarojs/runtime@3.6.18: - resolution: {integrity: sha512-94xzXGITo/aFc8xvw2C8Rul7rqaIb23VMgE5dMS2hiH2anyBBS8HIyzHyKHNms6uo26P8MO4dMndmh6Jjm3bVw==} + /@tarojs/runtime@3.6.22: + resolution: {integrity: sha512-D8gDrUeqBGE8+a8oVxEPEc1bczoX5H0P2T6AqS0dbELJQkGKWnBTvdRqyADtQXRKj7HXnCY0FuAhPsI4DFHTgg==} dependencies: - '@tarojs/shared': 3.6.18 + '@tarojs/shared': 3.6.22 lodash-es: 4.17.21 - /@tarojs/service@3.6.18(@types/react@18.2.42)(postcss@8.4.32): - resolution: {integrity: sha512-8WN/CFOZCUFDa//yzxGxFCrX6plGr7FiNUQpNnxTmhTCS23bPXGMyuHgwDkane4m+V78HOf7ITRL6anV5OTCJw==} + /@tarojs/service@3.6.22(@types/react@18.2.57)(postcss@8.4.35): + resolution: {integrity: sha512-L5f2H022fIMSxIo0g9AAXZI8gPhwaDDS5lTD8Aawo5Q7ztROda7ml2FPmauK934WKZm2hd4FAnXSUbOcMDp5hA==} dependencies: - '@tarojs/helper': 3.6.18 - '@tarojs/shared': 3.6.18 - '@tarojs/taro': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) + '@tarojs/helper': 3.6.22 + '@tarojs/shared': 3.6.22 + '@tarojs/taro': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) joi: 17.11.0 lodash: 4.17.21 ora: 5.4.1 @@ -4148,6 +4386,7 @@ packages: tapable: 1.1.3 webpack-merge: 4.2.2 transitivePeerDependencies: + - '@swc/helpers' - '@types/react' - '@types/webpack' - '@types/webpack-dev-server' @@ -4155,27 +4394,29 @@ packages: - supports-color - vue - /@tarojs/shared@3.6.18: - resolution: {integrity: sha512-lJtjAK0Ol/SVu65VsMzsqOwfWrShYRBZgp4WLHrA6dJU0fqTvNklXWyDix22S2hkv0LlbRPgWlJbp5k3IkQsZA==} - /@tarojs/shared@3.6.20: resolution: {integrity: sha512-JYi4T9T1M8foB7jnrWBW+ssOMNqA1eR30aY463zsxFGaeU5bn4qihvCOAo//03szVPN7h7L7k0c1Q4GSSWgLaQ==} dev: true - /@tarojs/taro-h5@3.6.18(@types/react@18.2.42)(postcss@8.4.32): - resolution: {integrity: sha512-MSn3GN/bHSaHDqgZ6dnseZ+GBsmGE/N8DDjPTgRWXYJSgT7fFQKhQgJT+hqO5Hq9ju188jht/klXCaWgg3K4Tw==} + /@tarojs/shared@3.6.22: + resolution: {integrity: sha512-a6diONs9jVK2BQpu03AO+oa+VWdv54eBoQFMtWTQKP3s6rT0IvRkxIcNbIwOlcyy6MPbLzERt32DIKbm9/IHwg==} + + /@tarojs/taro-h5@3.6.22(@types/react@18.2.57)(postcss@8.4.35): + resolution: {integrity: sha512-UDl8O4zX1CDaLsEG6p8fMNfa//FBB++qJycKZV51PYjCeFC9cXqfRpoqwweGjkgu9OjEimbYsC1ZLmCFWussug==} dependencies: - '@tarojs/api': 3.6.18 - '@tarojs/components': 3.6.18(@types/react@18.2.42)(postcss@8.4.32)(react@18.2.0) - '@tarojs/router': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/runtime': 3.6.18 - '@tarojs/shared': 3.6.18 + '@tarojs/api': 3.6.22 + '@tarojs/components': 3.6.22(@types/react@18.2.57)(postcss@8.4.35)(react@18.2.0) + '@tarojs/router': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/runtime': 3.6.22 + '@tarojs/shared': 3.6.22 abortcontroller-polyfill: 1.7.5 base64-js: 1.5.1 ics: 3.5.0 intersection-observer: 0.7.0 + is-mobile: 4.0.0 jsonp-retry: 1.0.3 lodash-es: 4.17.21 + platform: 1.3.6 query-string: 7.1.3 whatwg-fetch: 3.6.19 transitivePeerDependencies: @@ -4187,13 +4428,14 @@ packages: - vue dev: false - /@tarojs/taro-loader@3.6.18(@types/react@18.2.42)(postcss@8.4.32): - resolution: {integrity: sha512-i56wYuen2vLzmvOpIO7vX5ZgGeVR5tRaePot+Uygw/iNEDWqPIYiHfjBX3BFM560LW89q3grAhga1MvjqDQW6w==} + /@tarojs/taro-loader@3.6.22(@types/react@18.2.57)(postcss@8.4.35): + resolution: {integrity: sha512-7ovNaL6TUbxSc/lTRoBbiKVwXGLgC1bKHjq021ZYaI4YSSyfsMZ3+/1c4X4R8XUReZMesFks0X2pqiYchCyl9A==} dependencies: - '@tarojs/helper': 3.6.18 - '@tarojs/taro': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) + '@tarojs/helper': 3.6.22 + '@tarojs/taro': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) loader-utils: 1.4.2 transitivePeerDependencies: + - '@swc/helpers' - '@types/react' - '@types/webpack' - '@types/webpack-dev-server' @@ -4202,8 +4444,8 @@ packages: - vue dev: true - /@tarojs/taro@3.6.18(@types/react@18.2.42)(postcss@8.4.32): - resolution: {integrity: sha512-G1BBQcd5YwXPFdX+FtAM4/PnnFKWOBFeVTJY1Y+Lp2urUg2biX5UWAInz6q1lrEVxTXB+/7pu0tXurLtFz02BA==} + /@tarojs/taro@3.6.22(@types/react@18.2.57)(postcss@8.4.35): + resolution: {integrity: sha512-SfmzfAf2JYh4Av4RF2q9WEvgSDDjMjOeQjqCWIsYc36uJCyW+Iq5Is0A7CGWSrnHhjBLpGvv/bHzRwRwCBKilg==} peerDependencies: '@types/react': '*' '@types/webpack': '*' @@ -4222,26 +4464,27 @@ packages: vue: optional: true dependencies: - '@tarojs/api': 3.6.18 - '@tarojs/runtime': 3.6.18 - '@types/react': 18.2.42 - postcss: 8.4.32 + '@tarojs/api': 3.6.22 + '@tarojs/runtime': 3.6.22 + '@types/react': 18.2.57 + postcss: 8.4.35 - /@tarojs/webpack5-prebundle@3.6.18(@types/react@18.2.42)(postcss@8.4.32)(webpack@5.89.0): - resolution: {integrity: sha512-pA0qOqagC96ISqIznjqaNLllib5fCidSX79C2HZiJ1uYx0+Lh9aEk7vURE7KgPeqscVR5bQA+SLa0FRReHj1CQ==} + /@tarojs/webpack5-prebundle@3.6.22(@types/react@18.2.57)(postcss@8.4.35)(webpack@5.79.0): + resolution: {integrity: sha512-AEqrZW5j8HGzfGiCFL9L7JVYBEKXKp04/y3TpLyoEXJ2/HUX6N/hmc4PNQa+1QoMCA8Zw0c8L7ZsEtaB5L2JlA==} peerDependencies: webpack: ^5.78.0 dependencies: - '@tarojs/helper': 3.6.18 - '@tarojs/shared': 3.6.18 - '@tarojs/taro': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) + '@tarojs/helper': 3.6.22 + '@tarojs/shared': 3.6.22 + '@tarojs/taro': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) enhanced-resolve: 5.15.0 es-module-lexer: 0.10.5 lodash: 4.17.21 - webpack: 5.89.0(@swc/core@1.3.23) + webpack: 5.79.0(@swc/core@1.3.96) webpack-chain: 6.5.1 webpack-virtual-modules: 0.5.0 transitivePeerDependencies: + - '@swc/helpers' - '@types/react' - '@types/webpack' - '@types/webpack-dev-server' @@ -4250,78 +4493,79 @@ packages: - vue dev: true - /@tarojs/webpack5-runner@3.6.18(@babel/core@7.23.5)(@swc/core@1.3.23)(@types/react@18.2.42)(postcss@8.4.32)(prettier@3.1.0)(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5)(webpack@5.89.0): - resolution: {integrity: sha512-BYt178vICazDRtNCXMZlmHq4EPWCkSfopIfMsyy/VgtU4Bc6ioRr5ebOxHaM9ACC79yqmtSZ6WUGFUF6XKEVcg==} + /@tarojs/webpack5-runner@3.6.22(@babel/core@7.23.9)(@swc/core@1.3.96)(@types/react@18.2.57)(postcss@8.4.35)(prettier@3.2.5)(react-dom@18.2.0)(react@18.2.0)(typescript@5.3.3)(webpack@5.79.0): + resolution: {integrity: sha512-kFbW3eKRq4jWZqqjTarBA7TDLUk4QlWnsFPiWDI3WGnv3oG9SomxSyRFVH1lJp1sXPMLsXpwIAWltpBrevrnew==} peerDependencies: postcss: ^8.4.18 webpack: ^5.78.0 dependencies: '@parcel/css': 1.14.0 - '@tarojs/helper': 3.6.18 - '@tarojs/plugin-platform-alipay': 3.6.18(@types/react@18.2.42)(postcss@8.4.32)(react@18.2.0) - '@tarojs/plugin-platform-jd': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/plugin-platform-qq': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/plugin-platform-swan': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/plugin-platform-tt': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/plugin-platform-weapp': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/runner-utils': 3.6.18 - '@tarojs/runtime': 3.6.18 - '@tarojs/shared': 3.6.18 - '@tarojs/taro': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/taro-loader': 3.6.18(@types/react@18.2.42)(postcss@8.4.32) - '@tarojs/webpack5-prebundle': 3.6.18(@types/react@18.2.42)(postcss@8.4.32)(webpack@5.89.0) + '@tarojs/helper': 3.6.22 + '@tarojs/plugin-platform-alipay': 3.6.22(@types/react@18.2.57)(postcss@8.4.35)(react@18.2.0) + '@tarojs/plugin-platform-jd': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/plugin-platform-qq': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/plugin-platform-swan': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/plugin-platform-tt': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/plugin-platform-weapp': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/runner-utils': 3.6.22 + '@tarojs/runtime': 3.6.22 + '@tarojs/shared': 3.6.22 + '@tarojs/taro': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/taro-loader': 3.6.22(@types/react@18.2.57)(postcss@8.4.35) + '@tarojs/webpack5-prebundle': 3.6.22(@types/react@18.2.57)(postcss@8.4.35)(webpack@5.79.0) acorn-walk: 8.3.1 autoprefixer: 9.8.8 - babel-loader: 8.2.1(@babel/core@7.23.5)(webpack@5.89.0) - copy-webpack-plugin: 10.2.0(webpack@5.89.0) - css-loader: 6.8.1(webpack@5.89.0) - css-minimizer-webpack-plugin: 3.4.1(@parcel/css@1.14.0)(csso@5.0.5)(esbuild@0.14.54)(webpack@5.89.0) + babel-loader: 8.2.1(@babel/core@7.23.9)(webpack@5.79.0) + copy-webpack-plugin: 10.2.0(webpack@5.79.0) + css-loader: 6.8.1(webpack@5.79.0) + css-minimizer-webpack-plugin: 3.4.1(@parcel/css@1.14.0)(csso@5.0.5)(esbuild@0.19.8)(webpack@5.79.0) csso: 5.0.5 detect-port: 1.5.1 - esbuild: 0.14.54 - esbuild-loader: 2.18.0(webpack@5.89.0) - file-loader: 6.0.0(webpack@5.89.0) + esbuild: 0.19.8 + esbuild-loader: 2.18.0(webpack@5.79.0) + file-loader: 6.0.0(webpack@5.79.0) html-minifier: 4.0.0 - html-webpack-plugin: 5.5.0(webpack@5.89.0) + html-webpack-plugin: 5.5.0(webpack@5.79.0) jsdom: 21.1.2 less: 4.2.0 - less-loader: 10.2.0(less@4.2.0)(webpack@5.89.0) + less-loader: 10.2.0(less@4.2.0)(webpack@5.79.0) loader-utils: 1.4.2 lodash: 4.17.21 md5: 2.3.0 micromatch: 4.0.5 - mini-css-extract-plugin: 2.4.6(webpack@5.89.0) + mini-css-extract-plugin: 2.4.6(webpack@5.79.0) miniprogram-simulate: 1.6.1 mkdirp: 1.0.4 ora: 5.4.1 - postcss: 8.4.32 - postcss-html-transform: 3.6.18(postcss@8.4.32) - postcss-import: 14.1.0(postcss@8.4.32) - postcss-loader: 7.3.3(postcss@8.4.32)(typescript@4.9.5)(webpack@5.89.0) - postcss-plugin-constparse: 3.6.18(postcss@8.4.32) - postcss-pxtransform: 3.6.18(postcss@8.4.32) - postcss-url: 10.1.3(postcss@8.4.32) + postcss: 8.4.35 + postcss-html-transform: 3.6.22(postcss@8.4.35) + postcss-import: 14.1.0(postcss@8.4.35) + postcss-loader: 7.3.3(postcss@8.4.35)(typescript@5.3.3)(webpack@5.79.0) + postcss-plugin-constparse: 3.6.22(postcss@8.4.35) + postcss-pxtransform: 3.6.22(postcss@8.4.35) + postcss-url: 10.1.3(postcss@8.4.35) regenerator-runtime: 0.11.1 resolve: 1.22.8 resolve-url-loader: 5.0.0 sass: 1.50.0 - sass-loader: 12.4.0(sass@1.50.0)(webpack@5.89.0) + sass-loader: 12.4.0(sass@1.50.0)(webpack@5.79.0) sax: 1.2.4 - style-loader: 3.3.1(webpack@5.89.0) + style-loader: 3.3.1(webpack@5.79.0) stylus: 0.55.0 - stylus-loader: 6.2.0(stylus@0.55.0)(webpack@5.89.0) - terser-webpack-plugin: 5.3.9(@swc/core@1.3.23)(esbuild@0.14.54)(webpack@5.89.0) - url-loader: 4.1.0(file-loader@6.0.0)(webpack@5.89.0) + stylus-loader: 6.2.0(stylus@0.55.0)(webpack@5.79.0) + terser-webpack-plugin: 5.3.9(@swc/core@1.3.96)(esbuild@0.19.8)(webpack@5.79.0) + url-loader: 4.1.0(file-loader@6.0.0)(webpack@5.79.0) vm2: 3.9.19 - vue-loader: 15.11.1(css-loader@6.8.1)(lodash@4.17.21)(prettier@3.1.0)(react-dom@18.2.0)(react@18.2.0)(webpack@5.89.0) - webpack: 5.89.0(@swc/core@1.3.23) + vue-loader: 15.11.1(css-loader@6.8.1)(lodash@4.17.21)(prettier@3.2.5)(react-dom@18.2.0)(react@18.2.0)(webpack@5.79.0) + webpack: 5.79.0(@swc/core@1.3.96) webpack-chain: 6.5.1 - webpack-dev-server: 4.11.1(webpack@5.89.0) + webpack-dev-server: 4.11.1(webpack@5.79.0) webpack-format-messages: 2.0.6 - webpackbar: 5.0.2(webpack@5.89.0) + webpackbar: 5.0.2(webpack@5.79.0) transitivePeerDependencies: - '@babel/core' - '@swc/core' + - '@swc/helpers' - '@types/react' - '@types/react-native' - '@types/webpack' @@ -4401,7 +4645,7 @@ packages: engines: {node: '>=14'} dependencies: '@babel/code-frame': 7.23.5 - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.23.9 '@types/aria-query': 5.0.4 aria-query: 5.1.3 chalk: 4.1.2 @@ -4410,17 +4654,20 @@ packages: pretty-format: 27.5.1 dev: true - /@testing-library/jest-dom@6.1.5(@types/jest@29.5.11)(jest@29.7.0): - resolution: {integrity: sha512-3y04JLW+EceVPy2Em3VwNr95dOKqA8DhR0RJHhHKDZNYXcVXnEK7WIrpj4eYU8SVt/qYZ2aRWt/WgQ+grNES8g==} + /@testing-library/jest-dom@6.4.2(vitest@1.4.0): + resolution: {integrity: sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} peerDependencies: '@jest/globals': '>= 28' + '@types/bun': latest '@types/jest': '>= 28' jest: '>= 28' vitest: '>= 0.32' peerDependenciesMeta: '@jest/globals': optional: true + '@types/bun': + optional: true '@types/jest': optional: true jest: @@ -4428,28 +4675,27 @@ packages: vitest: optional: true dependencies: - '@adobe/css-tools': 4.3.2 - '@babel/runtime': 7.23.5 - '@types/jest': 29.5.11 + '@adobe/css-tools': 4.3.3 + '@babel/runtime': 7.23.9 aria-query: 5.3.0 chalk: 3.0.0 css.escape: 1.5.1 - dom-accessibility-api: 0.5.16 - jest: 29.7.0(@types/node@20.10.4)(ts-node@10.9.1) + dom-accessibility-api: 0.6.3 lodash: 4.17.21 redent: 3.0.0 + vitest: 1.4.0(@types/node@20.11.19)(@vitest/ui@1.4.0)(happy-dom@14.2.0)(sass@1.71.1) dev: true - /@testing-library/react@14.1.2(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-z4p7DVBTPjKM5qDZ0t5ZjzkpSNb+fZy1u6bzO7kk8oeGagpPCAtgh4cx1syrfp7a+QWkM021jGqjJaxJJnXAZg==} + /@testing-library/react@14.2.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-sGdjws32ai5TLerhvzThYFbpnF9XtL65Cjf+gB0Dhr29BGqK+mAeN7SURSdu+eqgET4ANcWoC7FQpkaiGvBr+A==} engines: {node: '>=14'} peerDependencies: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.23.9 '@testing-library/dom': 9.3.3 - '@types/react-dom': 18.2.17 + '@types/react-dom': 18.2.19 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) dev: true @@ -4484,6 +4730,12 @@ packages: resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} dev: true + /@types/acorn@4.0.6: + resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==} + dependencies: + '@types/estree': 1.0.5 + dev: true + /@types/archy@0.0.31: resolution: {integrity: sha512-v+dxizsFVyXgD3EpFuqT9YjdEjbJmPxNf1QIX9ohZOhxh1ZF2yhqv3vYaeum9lg3VghhxS5S0a6yldN9J9lPEQ==} dev: true @@ -4499,7 +4751,7 @@ packages: /@types/babel__core@7.20.5: resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} dependencies: - '@babel/parser': 7.23.5 + '@babel/parser': 7.23.9 '@babel/types': 7.23.5 '@types/babel__generator': 7.6.7 '@types/babel__template': 7.4.4 @@ -4515,7 +4767,7 @@ packages: /@types/babel__template@7.4.4: resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==} dependencies: - '@babel/parser': 7.23.5 + '@babel/parser': 7.23.9 '@babel/types': 7.23.5 dev: true @@ -4529,26 +4781,32 @@ packages: resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} dependencies: '@types/connect': 3.4.38 - '@types/node': 20.10.4 + '@types/node': 20.11.19 dev: true /@types/bonjour@3.5.13: resolution: {integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==} dependencies: - '@types/node': 20.10.4 + '@types/node': 20.11.19 dev: true /@types/connect-history-api-fallback@1.5.4: resolution: {integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==} dependencies: '@types/express-serve-static-core': 4.17.41 - '@types/node': 20.10.4 + '@types/node': 20.11.19 dev: true /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} dependencies: - '@types/node': 20.10.4 + '@types/node': 20.11.19 + dev: true + + /@types/conventional-commits-parser@5.0.0: + resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} + dependencies: + '@types/node': 20.11.19 dev: true /@types/debug@4.1.12: @@ -4578,14 +4836,10 @@ packages: /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} - /@types/expect@1.20.4: - resolution: {integrity: sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==} - dev: true - /@types/express-serve-static-core@4.17.41: resolution: {integrity: sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==} dependencies: - '@types/node': 20.10.4 + '@types/node': 20.11.19 '@types/qs': 6.9.10 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -4603,20 +4857,20 @@ packages: /@types/fs-extra@8.1.5: resolution: {integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==} dependencies: - '@types/node': 20.10.4 + '@types/node': 20.11.19 dev: true /@types/glob@7.2.0: resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} dependencies: '@types/minimatch': 5.1.2 - '@types/node': 20.10.4 + '@types/node': 20.11.19 dev: true /@types/graceful-fs@4.1.9: resolution: {integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==} dependencies: - '@types/node': 20.10.4 + '@types/node': 20.11.19 dev: true /@types/hast@2.3.8: @@ -4650,7 +4904,7 @@ packages: /@types/http-proxy@1.17.14: resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} dependencies: - '@types/node': 20.10.4 + '@types/node': 20.11.19 dev: true /@types/istanbul-lib-coverage@2.0.6: @@ -4669,21 +4923,6 @@ packages: '@types/istanbul-lib-report': 3.0.3 dev: true - /@types/jest@29.5.11: - resolution: {integrity: sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==} - dependencies: - expect: 29.7.0 - pretty-format: 29.7.0 - dev: true - - /@types/jsdom@20.0.1: - resolution: {integrity: sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==} - dependencies: - '@types/node': 20.10.4 - '@types/tough-cookie': 4.0.5 - parse5: 7.1.2 - dev: true - /@types/json-schema@7.0.15: resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -4694,13 +4933,13 @@ packages: /@types/keyv@3.1.4: resolution: {integrity: sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==} dependencies: - '@types/node': 20.10.4 + '@types/node': 20.11.19 dev: true /@types/loadable__component@5.13.8: resolution: {integrity: sha512-0FF/WihuPkR5IFOHiBzC95bSACvgQNUQCuNy1WF8F/lCBBHgS2SxarIk4CTjWM10A72ovpmXZDRcuAXZNS+/kQ==} dependencies: - '@types/react': 18.2.42 + '@types/react': 18.2.57 dev: true /@types/lodash.debounce@4.0.9: @@ -4737,6 +4976,10 @@ packages: '@types/unist': 3.0.2 dev: true + /@types/mdx@2.0.11: + resolution: {integrity: sha512-HM5bwOaIQJIQbAYfax35HCKxx7a3KrK3nBtIqJgSOitivTD1y3oW9P3rxY9RkXYPUk7y/AjAohfHKmFpGE79zw==} + dev: true + /@types/mime@1.3.5: resolution: {integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==} dev: true @@ -4764,21 +5007,11 @@ packages: /@types/node-forge@1.3.10: resolution: {integrity: sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw==} dependencies: - '@types/node': 20.10.4 - dev: true - - /@types/node@15.14.9: - resolution: {integrity: sha512-qjd88DrCxupx/kJD5yQgZdcYKZKSIGBVDIBE1/LTGcNm3d2Np/jxojkdePDdfnBHJc5W7vSMpbJ1aB7p/Py69A==} - dev: true - - /@types/node@18.19.3: - resolution: {integrity: sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==} - dependencies: - undici-types: 5.26.5 + '@types/node': 20.11.19 dev: true - /@types/node@20.10.4: - resolution: {integrity: sha512-D08YG6rr8X90YB56tSIuBaddy/UXAA9RKJoFvrsnogAum/0pmjkgi4+2nx96A330FmioegBWmEYQ+syqCFaveg==} + /@types/node@20.11.19: + resolution: {integrity: sha512-7xMnVEcZFu0DikYjWOlRq7NTPETrm7teqUT2WkQjrTIkEgUyyGdWsj/Zg8bEJt5TNklzbPD1X3fqfsHw3SpapQ==} dependencies: undici-types: 5.26.5 @@ -4793,7 +5026,7 @@ packages: /@types/postcss-import@14.0.3: resolution: {integrity: sha512-raZhRVTf6Vw5+QbmQ7LOHSDML71A5rj4+EqDzAbrZPfxfoGzFxMHRCq16VlddGIZpHELw0BG4G0YE2ANkdZiIQ==} dependencies: - postcss: 8.4.32 + postcss: 8.4.35 dev: true /@types/prop-types@15.7.11: @@ -4807,17 +5040,17 @@ packages: resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} dev: true - /@types/react-dom@18.2.17: - resolution: {integrity: sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==} + /@types/react-dom@18.2.19: + resolution: {integrity: sha512-aZvQL6uUbIJpjZk4U8JZGbau9KDeAwMfmhyWorxgBkqDIEf6ROjRozcmPIicqsUwPUjbkDfHKgGee1Lq65APcA==} dependencies: - '@types/react': 18.2.42 + '@types/react': 18.2.57 dev: true /@types/react-router-dom@5.3.3: resolution: {integrity: sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.42 + '@types/react': 18.2.57 '@types/react-router': 5.1.20 dev: true @@ -4825,29 +5058,29 @@ packages: resolution: {integrity: sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==} dependencies: '@types/history': 4.7.11 - '@types/react': 18.2.42 + '@types/react': 18.2.57 dev: true /@types/react-syntax-highlighter@15.5.11: resolution: {integrity: sha512-ZqIJl+Pg8kD+47kxUjvrlElrraSUrYa4h0dauY/U/FTUuprSCqvUj+9PNQNQzVc6AJgIWUUxn87/gqsMHNbRjw==} dependencies: - '@types/react': 18.2.42 + '@types/react': 18.2.57 dev: true /@types/react-test-renderer@18.0.7: resolution: {integrity: sha512-1+ANPOWc6rB3IkSnElhjv6VLlKg2dSv/OWClUyZimbLsQyBn8Js9Vtdsi3UICJ2rIQ3k2la06dkB+C92QfhKmg==} dependencies: - '@types/react': 18.2.42 + '@types/react': 18.2.57 dev: true /@types/react-transition-group@4.4.10: resolution: {integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==} dependencies: - '@types/react': 18.2.42 + '@types/react': 18.2.57 dev: true - /@types/react@18.2.42: - resolution: {integrity: sha512-c1zEr96MjakLYus/wPnuWDo1/zErfdU9rNsIGmE+NV71nx88FG9Ttgo5dqorXTu/LImX2f63WBP986gJkMPNbA==} + /@types/react@18.2.57: + resolution: {integrity: sha512-ZvQsktJgSYrQiMirAN60y4O/LRevIV8hUzSOSNB6gfR3/o3wCBFQx3sPwIYtuDMeiVgsSS3UzCV26tEzgnfvQw==} dependencies: '@types/prop-types': 15.7.11 '@types/scheduler': 0.16.8 @@ -4860,7 +5093,7 @@ packages: /@types/responselike@1.0.3: resolution: {integrity: sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==} dependencies: - '@types/node': 20.10.4 + '@types/node': 20.11.19 dev: true /@types/retry@0.12.0: @@ -4871,7 +5104,7 @@ packages: resolution: {integrity: sha512-jn7qwGFmJHwUSphV8zZneO3GmtlgLsmhs/LQyVvQbIIa+fzGMUiHI4HXJZL3FT8MJmgXWbLGiVVY7ElvHq6vDA==} deprecated: This is a stub types definition. sass provides its own type definitions, so you do not need this installed. dependencies: - sass: 1.69.5 + sass: 1.71.1 dev: true /@types/scheduler@0.16.8: @@ -4885,7 +5118,7 @@ packages: resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==} dependencies: '@types/mime': 1.3.5 - '@types/node': 20.10.4 + '@types/node': 20.11.19 dev: true /@types/serve-index@1.9.4: @@ -4899,27 +5132,30 @@ packages: dependencies: '@types/http-errors': 2.0.4 '@types/mime': 3.0.4 - '@types/node': 20.10.4 + '@types/node': 20.11.19 dev: true /@types/sockjs@0.3.36: resolution: {integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==} dependencies: - '@types/node': 20.10.4 + '@types/node': 20.11.19 dev: true /@types/stack-utils@2.0.3: resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} dev: true - /@types/testing-library__jest-dom@5.14.9: - resolution: {integrity: sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==} + /@types/testing-library__jest-dom@6.0.0(vitest@1.4.0): + resolution: {integrity: sha512-bnreXCgus6IIadyHNlN/oI5FfX4dWgvGhOPvpr7zzCYDGAPIfvyIoAozMBINmhmsVuqV0cncejF2y5KC7ScqOg==} + deprecated: This is a stub types definition. @testing-library/jest-dom provides its own type definitions, so you do not need this installed. dependencies: - '@types/jest': 29.5.11 - dev: true - - /@types/tough-cookie@4.0.5: - resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + '@testing-library/jest-dom': 6.4.2(vitest@1.4.0) + transitivePeerDependencies: + - '@jest/globals' + - '@types/bun' + - '@types/jest' + - jest + - vitest dev: true /@types/unist@2.0.10: @@ -4930,13 +5166,6 @@ packages: resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} dev: true - /@types/vinyl@2.0.11: - resolution: {integrity: sha512-vPXzCLmRp74e9LsP8oltnWKTH+jBwt86WgRUb4Pc9Lf3pkMVGyvIo2gm9bODeGfCay2DBB/hAWDuvf07JcK4rw==} - dependencies: - '@types/expect': 1.20.4 - '@types/node': 20.10.4 - dev: true - /@types/webpack-env@1.18.4: resolution: {integrity: sha512-I6e+9+HtWADAWeeJWDFQtdk4EVSAbj6Rtz4q8fJ7mSr1M0jzlFcs8/HZ+Xb5SHzVm1dxH7aUiI+A8kA8Gcrm0A==} dev: true @@ -4944,7 +5173,7 @@ packages: /@types/ws@8.5.10: resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} dependencies: - '@types/node': 20.10.4 + '@types/node': 20.11.19 dev: true /@types/yargs-parser@21.0.3: @@ -4963,36 +5192,36 @@ packages: '@types/yargs-parser': 21.0.3 dev: true - /@typescript-eslint/eslint-plugin@6.13.2(@typescript-eslint/parser@6.13.2)(eslint@8.55.0)(typescript@4.9.5): - resolution: {integrity: sha512-3+9OGAWHhk4O1LlcwLBONbdXsAhLjyCFogJY/cWy2lxdVJ2JrcTF2pTGMaLl2AE7U1l31n8Py4a8bx5DLf/0dQ==} + /@typescript-eslint/eslint-plugin@7.0.2(@typescript-eslint/parser@7.0.2)(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-/XtVZJtbaphtdrWjr+CJclaCVGPtOdBpFEnvtNf/jRV0IiEemRrL0qABex/nEt8isYcnFacm3nPHYQwL+Wb7qg==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - '@typescript-eslint/parser': ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 6.13.2(eslint@8.55.0)(typescript@4.9.5) - '@typescript-eslint/scope-manager': 6.13.2 - '@typescript-eslint/type-utils': 6.13.2(eslint@8.55.0)(typescript@4.9.5) - '@typescript-eslint/utils': 6.13.2(eslint@8.55.0)(typescript@4.9.5) - '@typescript-eslint/visitor-keys': 6.13.2 + '@typescript-eslint/parser': 7.0.2(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/scope-manager': 7.0.2 + '@typescript-eslint/type-utils': 7.0.2(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/utils': 7.0.2(eslint@8.56.0)(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.0.2 debug: 4.3.4 - eslint: 8.55.0 + eslint: 8.56.0 graphemer: 1.4.0 ignore: 5.3.0 natural-compare: 1.4.0 semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@4.9.5) - typescript: 4.9.5 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.62.0(eslint@8.55.0)(typescript@4.9.5): + /@typescript-eslint/parser@5.62.0(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -5004,31 +5233,31 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.3.3) debug: 4.3.4 - eslint: 8.55.0 - typescript: 4.9.5 + eslint: 8.56.0 + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@6.13.2(eslint@8.55.0)(typescript@4.9.5): - resolution: {integrity: sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg==} + /@typescript-eslint/parser@7.0.2(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-GdwfDglCxSmU+QTS9vhz2Sop46ebNCXpPPvsByK7hu0rFGRHL+AusKQJ7SoN+LbLh6APFpQwHKmDSwN35Z700Q==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 6.13.2 - '@typescript-eslint/types': 6.13.2 - '@typescript-eslint/typescript-estree': 6.13.2(typescript@4.9.5) - '@typescript-eslint/visitor-keys': 6.13.2 + '@typescript-eslint/scope-manager': 7.0.2 + '@typescript-eslint/types': 7.0.2 + '@typescript-eslint/typescript-estree': 7.0.2(typescript@5.3.3) + '@typescript-eslint/visitor-keys': 7.0.2 debug: 4.3.4 - eslint: 8.55.0 - typescript: 4.9.5 + eslint: 8.56.0 + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true @@ -5041,30 +5270,30 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/scope-manager@6.13.2: - resolution: {integrity: sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA==} + /@typescript-eslint/scope-manager@7.0.2: + resolution: {integrity: sha512-l6sa2jF3h+qgN2qUMjVR3uCNGjWw4ahGfzIYsCtFrQJCjhbrDPdiihYT8FnnqFwsWX+20hK592yX9I2rxKTP4g==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.13.2 - '@typescript-eslint/visitor-keys': 6.13.2 + '@typescript-eslint/types': 7.0.2 + '@typescript-eslint/visitor-keys': 7.0.2 dev: true - /@typescript-eslint/type-utils@6.13.2(eslint@8.55.0)(typescript@4.9.5): - resolution: {integrity: sha512-Qr6ssS1GFongzH2qfnWKkAQmMUyZSyOr0W54nZNU1MDfo+U4Mv3XveeLZzadc/yq8iYhQZHYT+eoXJqnACM1tw==} + /@typescript-eslint/type-utils@7.0.2(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-IKKDcFsKAYlk8Rs4wiFfEwJTQlHcdn8CLwLaxwd6zb8HNiMcQIFX9sWax2k4Cjj7l7mGS5N1zl7RCHOVwHq2VQ==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 typescript: '*' peerDependenciesMeta: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 6.13.2(typescript@4.9.5) - '@typescript-eslint/utils': 6.13.2(eslint@8.55.0)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 7.0.2(typescript@5.3.3) + '@typescript-eslint/utils': 7.0.2(eslint@8.56.0)(typescript@5.3.3) debug: 4.3.4 - eslint: 8.55.0 - ts-api-utils: 1.0.3(typescript@4.9.5) - typescript: 4.9.5 + eslint: 8.56.0 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true @@ -5074,12 +5303,12 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/types@6.13.2: - resolution: {integrity: sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg==} + /@typescript-eslint/types@7.0.2: + resolution: {integrity: sha512-ZzcCQHj4JaXFjdOql6adYV4B/oFOFjPOC9XYwCaZFRvqN8Llfvv4gSxrkQkd2u4Ci62i2c6W6gkDwQJDaRc4nA==} engines: {node: ^16.0.0 || >=18.0.0} dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@4.9.5): + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.3.3): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -5093,15 +5322,15 @@ packages: debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.4 - tsutils: 3.21.0(typescript@4.9.5) - typescript: 4.9.5 + semver: 7.6.0 + tsutils: 3.21.0(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/typescript-estree@6.13.2(typescript@4.9.5): - resolution: {integrity: sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w==} + /@typescript-eslint/typescript-estree@7.0.2(typescript@5.3.3): + resolution: {integrity: sha512-3AMc8khTcELFWcKcPc0xiLviEvvfzATpdPj/DXuOGIdQIIFybf4DMT1vKRbuAEOFMwhWt7NFLXRkbjsvKZQyvw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: typescript: '*' @@ -5109,32 +5338,33 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 6.13.2 - '@typescript-eslint/visitor-keys': 6.13.2 + '@typescript-eslint/types': 7.0.2 + '@typescript-eslint/visitor-keys': 7.0.2 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.5.4 - ts-api-utils: 1.0.3(typescript@4.9.5) - typescript: 4.9.5 + minimatch: 9.0.3 + semver: 7.6.0 + ts-api-utils: 1.0.3(typescript@5.3.3) + typescript: 5.3.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@6.13.2(eslint@8.55.0)(typescript@4.9.5): - resolution: {integrity: sha512-b9Ptq4eAZUym4idijCRzl61oPCwwREcfDI8xGk751Vhzig5fFZR9CyzDz4Sp/nxSLBYxUPyh4QdIDqWykFhNmQ==} + /@typescript-eslint/utils@7.0.2(eslint@8.56.0)(typescript@5.3.3): + resolution: {integrity: sha512-PZPIONBIB/X684bhT1XlrkjNZJIEevwkKDsdwfiu1WeqBxYEEdIgVDgm8/bbKHVu+6YOpeRqcfImTdImx/4Bsw==} engines: {node: ^16.0.0 || >=18.0.0} peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.6 - '@typescript-eslint/scope-manager': 6.13.2 - '@typescript-eslint/types': 6.13.2 - '@typescript-eslint/typescript-estree': 6.13.2(typescript@4.9.5) - eslint: 8.55.0 - semver: 7.5.4 + '@typescript-eslint/scope-manager': 7.0.2 + '@typescript-eslint/types': 7.0.2 + '@typescript-eslint/typescript-estree': 7.0.2(typescript@5.3.3) + eslint: 8.56.0 + semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript @@ -5148,11 +5378,11 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@typescript-eslint/visitor-keys@6.13.2: - resolution: {integrity: sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw==} + /@typescript-eslint/visitor-keys@7.0.2: + resolution: {integrity: sha512-8Y+YiBmqPighbm5xA2k4wKTxRzx9EkBu7Rlw+WHqMvRJ3RPz/BMBO9b2ru0LUNmXg120PHUXD5+SWFy2R8DqlQ==} engines: {node: ^16.0.0 || >=18.0.0} dependencies: - '@typescript-eslint/types': 6.13.2 + '@typescript-eslint/types': 7.0.2 eslint-visitor-keys: 3.4.3 dev: true @@ -5173,22 +5403,100 @@ packages: react: 18.2.0 dev: false - /@vitejs/plugin-react@4.2.1(vite@5.0.6): + /@vitejs/plugin-react@4.2.1(vite@5.1.3): resolution: {integrity: sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: vite: ^4.2.0 || ^5.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.5) + '@babel/core': 7.23.9 + '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.9) '@types/babel__core': 7.20.5 react-refresh: 0.14.0 - vite: 5.0.6(@types/node@20.10.4)(sass@1.69.5) + vite: 5.1.3(@types/node@20.11.19)(sass@1.71.1) transitivePeerDependencies: - supports-color dev: true + /@vitest/coverage-v8@1.4.0(vitest@1.4.0): + resolution: {integrity: sha512-4hDGyH1SvKpgZnIByr9LhGgCEuF9DKM34IBLCC/fVfy24Z3+PZ+Ii9hsVBsHvY1umM1aGPEjceRkzxCfcQ10wg==} + peerDependencies: + vitest: 1.4.0 + dependencies: + '@ampproject/remapping': 2.2.1 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.3.4 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.4 + istanbul-reports: 3.1.6 + magic-string: 0.30.5 + magicast: 0.3.3 + picocolors: 1.0.0 + std-env: 3.6.0 + strip-literal: 2.0.0 + test-exclude: 6.0.0 + v8-to-istanbul: 9.2.0 + vitest: 1.4.0(@types/node@20.11.19)(@vitest/ui@1.4.0)(happy-dom@14.2.0)(sass@1.71.1) + transitivePeerDependencies: + - supports-color + dev: true + + /@vitest/expect@1.4.0: + resolution: {integrity: sha512-Jths0sWCJZ8BxjKe+p+eKsoqev1/T8lYcrjavEaz8auEJ4jAVY0GwW3JKmdVU4mmNPLPHixh4GNXP7GFtAiDHA==} + dependencies: + '@vitest/spy': 1.4.0 + '@vitest/utils': 1.4.0 + chai: 4.4.1 + dev: true + + /@vitest/runner@1.4.0: + resolution: {integrity: sha512-EDYVSmesqlQ4RD2VvWo3hQgTJ7ZrFQ2VSJdfiJiArkCerDAGeyF1i6dHkmySqk573jLp6d/cfqCN+7wUB5tLgg==} + dependencies: + '@vitest/utils': 1.4.0 + p-limit: 5.0.0 + pathe: 1.1.2 + dev: true + + /@vitest/snapshot@1.4.0: + resolution: {integrity: sha512-saAFnt5pPIA5qDGxOHxJ/XxhMFKkUSBJmVt5VgDsAqPTX6JP326r5C/c9UuCMPoXNzuudTPsYDZCoJ5ilpqG2A==} + dependencies: + magic-string: 0.30.5 + pathe: 1.1.2 + pretty-format: 29.7.0 + dev: true + + /@vitest/spy@1.4.0: + resolution: {integrity: sha512-Ywau/Qs1DzM/8Uc+yA77CwSegizMlcgTJuYGAi0jujOteJOUf1ujunHThYo243KG9nAyWT3L9ifPYZ5+As/+6Q==} + dependencies: + tinyspy: 2.2.1 + dev: true + + /@vitest/ui@1.4.0(vitest@1.4.0): + resolution: {integrity: sha512-XC6CMhN1gzYcGbpn6/Oanj4Au2EXwQEX6vpcOeLlZv8dy7g11Ukx8zwtYQbwxs9duK2s9j2o5rbQiCP5DPAcmw==} + peerDependencies: + vitest: 1.4.0 + dependencies: + '@vitest/utils': 1.4.0 + fast-glob: 3.3.2 + fflate: 0.8.2 + flatted: 3.2.9 + pathe: 1.1.2 + picocolors: 1.0.0 + sirv: 2.0.4 + vitest: 1.4.0(@types/node@20.11.19)(@vitest/ui@1.4.0)(happy-dom@14.2.0)(sass@1.71.1) + dev: true + + /@vitest/utils@1.4.0: + resolution: {integrity: sha512-mx3Yd1/6e2Vt/PUC98DcqTirtfxUyAZ32uK82r8rZzbtBeBo+nqgnjx/LvqQdWsrvNtm14VmurNgcf4nqY5gJg==} + dependencies: + diff-sequences: 29.6.3 + estree-walker: 3.0.3 + loupe: 2.3.7 + pretty-format: 29.7.0 + dev: true + /@volar/language-core@1.11.1: resolution: {integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==} dependencies: @@ -5211,7 +5519,7 @@ packages: /@vue/compiler-core@3.3.10: resolution: {integrity: sha512-doe0hODR1+i1menPkRzJ5MNR6G+9uiZHIknK3Zn5OcIztu6GGw7u0XUzf3AgB8h/dfsZC9eouzoLo3c3+N/cVA==} dependencies: - '@babel/parser': 7.23.5 + '@babel/parser': 7.23.9 '@vue/shared': 3.3.10 estree-walker: 2.0.2 source-map-js: 1.0.2 @@ -5227,7 +5535,7 @@ packages: /@vue/compiler-sfc@3.3.10: resolution: {integrity: sha512-xpcTe7Rw7QefOTRFFTlcfzozccvjM40dT45JtrE3onGm/jBLZ0JhpKu3jkV7rbDFLeeagR/5RlJ2Y9SvyS0lAg==} dependencies: - '@babel/parser': 7.23.5 + '@babel/parser': 7.23.9 '@vue/compiler-core': 3.3.10 '@vue/compiler-dom': 3.3.10 '@vue/compiler-ssr': 3.3.10 @@ -5235,7 +5543,7 @@ packages: '@vue/shared': 3.3.10 estree-walker: 2.0.2 magic-string: 0.30.5 - postcss: 8.4.32 + postcss: 8.4.35 source-map-js: 1.0.2 dev: true @@ -5315,8 +5623,8 @@ packages: - whiskers dev: true - /@vue/language-core@1.8.25(typescript@4.9.5): - resolution: {integrity: sha512-NJk/5DnAZlpvXX8BdWmHI45bWGLViUaS3R/RMrmFSvFMSbJKuEODpM4kR0F0Ofv5SFzCWuNiMhxameWpVdQsnA==} + /@vue/language-core@1.8.27(typescript@5.3.3): + resolution: {integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==} peerDependencies: typescript: '*' peerDependenciesMeta: @@ -5331,14 +5639,14 @@ packages: minimatch: 9.0.3 muggle-string: 0.3.1 path-browserify: 1.0.1 - typescript: 4.9.5 + typescript: 5.3.3 vue-template-compiler: 2.7.15 dev: true /@vue/reactivity-transform@3.3.10: resolution: {integrity: sha512-0xBdk+CKHWT+Gev8oZ63Tc0qFfj935YZx+UAynlutnrDZ4diFCVFMWixn65HzjE3S1iJppWOo6Tt1OzASH7VEg==} dependencies: - '@babel/parser': 7.23.5 + '@babel/parser': 7.23.9 '@vue/compiler-core': 3.3.10 '@vue/shared': 3.3.10 estree-walker: 2.0.2 @@ -5349,95 +5657,95 @@ packages: resolution: {integrity: sha512-2y3Y2J1a3RhFa0WisHvACJR2ncvWiVHcP8t0Inxo+NKz+8RKO4ZV8eZgCxRgQoA6ITfV12L4E6POOL9HOU5nqw==} dev: true - /@webassemblyjs/ast@1.11.6: - resolution: {integrity: sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==} + /@webassemblyjs/ast@1.11.1: + resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} dependencies: - '@webassemblyjs/helper-numbers': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-numbers': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 - /@webassemblyjs/floating-point-hex-parser@1.11.6: - resolution: {integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==} + /@webassemblyjs/floating-point-hex-parser@1.11.1: + resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==} - /@webassemblyjs/helper-api-error@1.11.6: - resolution: {integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==} + /@webassemblyjs/helper-api-error@1.11.1: + resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==} - /@webassemblyjs/helper-buffer@1.11.6: - resolution: {integrity: sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==} + /@webassemblyjs/helper-buffer@1.11.1: + resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==} - /@webassemblyjs/helper-numbers@1.11.6: - resolution: {integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==} + /@webassemblyjs/helper-numbers@1.11.1: + resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==} dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/floating-point-hex-parser': 1.11.1 + '@webassemblyjs/helper-api-error': 1.11.1 '@xtuc/long': 4.2.2 - /@webassemblyjs/helper-wasm-bytecode@1.11.6: - resolution: {integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==} + /@webassemblyjs/helper-wasm-bytecode@1.11.1: + resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==} - /@webassemblyjs/helper-wasm-section@1.11.6: - resolution: {integrity: sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==} + /@webassemblyjs/helper-wasm-section@1.11.1: + resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-buffer': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/wasm-gen': 1.11.1 - /@webassemblyjs/ieee754@1.11.6: - resolution: {integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==} + /@webassemblyjs/ieee754@1.11.1: + resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==} dependencies: '@xtuc/ieee754': 1.2.0 - /@webassemblyjs/leb128@1.11.6: - resolution: {integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==} + /@webassemblyjs/leb128@1.11.1: + resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==} dependencies: '@xtuc/long': 4.2.2 - /@webassemblyjs/utf8@1.11.6: - resolution: {integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==} + /@webassemblyjs/utf8@1.11.1: + resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==} - /@webassemblyjs/wasm-edit@1.11.6: - resolution: {integrity: sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==} + /@webassemblyjs/wasm-edit@1.11.1: + resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-opt': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - '@webassemblyjs/wast-printer': 1.11.6 + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-buffer': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/helper-wasm-section': 1.11.1 + '@webassemblyjs/wasm-gen': 1.11.1 + '@webassemblyjs/wasm-opt': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 + '@webassemblyjs/wast-printer': 1.11.1 - /@webassemblyjs/wasm-gen@1.11.6: - resolution: {integrity: sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==} + /@webassemblyjs/wasm-gen@1.11.1: + resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/ieee754': 1.11.1 + '@webassemblyjs/leb128': 1.11.1 + '@webassemblyjs/utf8': 1.11.1 - /@webassemblyjs/wasm-opt@1.11.6: - resolution: {integrity: sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==} + /@webassemblyjs/wasm-opt@1.11.1: + resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-buffer': 1.11.6 - '@webassemblyjs/wasm-gen': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-buffer': 1.11.1 + '@webassemblyjs/wasm-gen': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 - /@webassemblyjs/wasm-parser@1.11.6: - resolution: {integrity: sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==} + /@webassemblyjs/wasm-parser@1.11.1: + resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==} dependencies: - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/helper-api-error': 1.11.1 + '@webassemblyjs/helper-wasm-bytecode': 1.11.1 + '@webassemblyjs/ieee754': 1.11.1 + '@webassemblyjs/leb128': 1.11.1 + '@webassemblyjs/utf8': 1.11.1 - /@webassemblyjs/wast-printer@1.11.6: - resolution: {integrity: sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==} + /@webassemblyjs/wast-printer@1.11.1: + resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==} dependencies: - '@webassemblyjs/ast': 1.11.6 + '@webassemblyjs/ast': 1.11.1 '@xtuc/long': 4.2.2 /@xtuc/ieee754@1.2.0: @@ -5485,12 +5793,12 @@ packages: acorn-walk: 8.3.1 dev: true - /acorn-import-assertions@1.9.0(acorn@8.11.2): + /acorn-import-assertions@1.9.0(acorn@8.11.3): resolution: {integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==} peerDependencies: acorn: ^8 dependencies: - acorn: 8.11.2 + acorn: 8.11.3 /acorn-jsx@5.3.2(acorn@8.11.2): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} @@ -5504,11 +5812,21 @@ packages: resolution: {integrity: sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==} engines: {node: '>=0.4.0'} + /acorn-walk@8.3.2: + resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==} + engines: {node: '>=0.4.0'} + dev: true + /acorn@8.11.2: resolution: {integrity: sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==} engines: {node: '>=0.4.0'} hasBin: true + /acorn@8.11.3: + resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} + engines: {node: '>=0.4.0'} + hasBin: true + /address@1.2.2: resolution: {integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==} engines: {node: '>= 10.0.0'} @@ -5633,6 +5951,7 @@ packages: /ansi-styles@3.2.1: resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} engines: {node: '>=4'} + requiresBuild: true dependencies: color-convert: 1.9.3 @@ -5856,6 +6175,10 @@ packages: object.assign: 4.1.5 util: 0.12.5 + /assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true + /ast-types-flow@0.0.8: resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} dev: true @@ -5878,6 +6201,11 @@ packages: engines: {node: '>=8'} dev: true + /astring@1.8.6: + resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==} + hasBin: true + dev: true + /async-retry@1.3.3: resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} dependencies: @@ -5888,10 +6216,6 @@ packages: resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==} dev: false - /async@3.2.5: - resolution: {integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==} - dev: true - /asynciterator.prototype@1.0.0: resolution: {integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==} dependencies: @@ -5908,19 +6232,19 @@ packages: hasBin: true dev: true - /autoprefixer@10.4.16(postcss@8.4.32): - resolution: {integrity: sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==} + /autoprefixer@10.4.17(postcss@8.4.35): + resolution: {integrity: sha512-/cpVNRLSfhOtcGflT13P2794gVSgmPgTR+erw5ifnMLZb0UnSlkK4tquLmkd3BhA+nLo5tX8Cu0upUsGKvKbmg==} engines: {node: ^10 || ^12 || >=14} hasBin: true peerDependencies: postcss: ^8.1.0 dependencies: browserslist: 4.22.2 - caniuse-lite: 1.0.30001566 + caniuse-lite: 1.0.30001588 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.0.0 - postcss: 8.4.32 + postcss: 8.4.35 postcss-value-parser: 4.2.0 dev: true @@ -5954,10 +6278,10 @@ packages: engines: {node: '>=4'} dev: true - /axios@1.6.2: - resolution: {integrity: sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==} + /axios@1.6.7: + resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} dependencies: - follow-redirects: 1.15.3 + follow-redirects: 1.15.5 form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: @@ -5970,12 +6294,12 @@ packages: dequal: 2.0.3 dev: true - /babel-core@7.0.0-bridge.0(@babel/core@7.23.5): + /babel-core@7.0.0-bridge.0(@babel/core@7.23.9): resolution: {integrity: sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 /babel-helper-evaluate-path@0.5.0: resolution: {integrity: sha512-mUh0UhS607bGh5wUMAQfOpt2JX2ThXMtppHRdRU1kL7ZLRWIXxoV2UIV1r2cAeeNeU1M5SB5/RSUgUxrK8yOkA==} @@ -5989,17 +6313,17 @@ packages: resolution: {integrity: sha512-eYNceYtcGKpifHDir62gHJadVXdg9fAhuZEXiRQnJJ4Yi4oUTpqpNY//1pM4nVyjjDMPYaC2xSf0I+9IqVzwdA==} dev: true - /babel-jest@29.7.0(@babel/core@7.23.5): + /babel-jest@29.7.0(@babel/core@7.23.9): resolution: {integrity: sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.8.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@jest/transform': 29.7.0 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 29.6.3(@babel/core@7.23.5) + babel-preset-jest: 29.6.3(@babel/core@7.23.9) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 @@ -6007,20 +6331,20 @@ packages: - supports-color dev: true - /babel-loader@8.2.1(@babel/core@7.23.5)(webpack@5.89.0): + /babel-loader@8.2.1(@babel/core@7.23.9)(webpack@5.79.0): resolution: {integrity: sha512-dMF8sb2KQ8kJl21GUjkW1HWmcsL39GOV5vnzjqrCzEPNY0S0UfMLnumidiwIajDSBmKhYf5iRW+HXaM4cvCKBw==} engines: {node: '>= 8.9'} peerDependencies: '@babel/core': ^7.0.0 webpack: '>=2' dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 find-cache-dir: 2.1.0 loader-utils: 1.4.2 make-dir: 2.1.0 pify: 4.0.1 schema-utils: 2.7.1 - webpack: 5.89.0(@swc/core@1.3.23) + webpack: 5.79.0(@swc/core@1.3.96) dev: true /babel-plugin-dynamic-import-node@2.3.3: @@ -6053,7 +6377,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@babel/template': 7.22.15 - '@babel/types': 7.23.5 + '@babel/types': 7.23.9 '@types/babel__core': 7.20.5 '@types/babel__traverse': 7.20.4 dev: true @@ -6067,43 +6391,79 @@ packages: lodash: 4.17.21 dev: true - /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.23.5): + /babel-plugin-polyfill-corejs2@0.4.6(@babel/core@7.23.9): resolution: {integrity: sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/compat-data': 7.23.5 - '@babel/core': 7.23.5 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.5) + '@babel/core': 7.23.9 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.9) + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs2@0.4.8(@babel/core@7.23.9): + resolution: {integrity: sha512-OtIuQfafSzpo/LhnJaykc0R/MMnuLSSVjVYy9mHArIZ9qTCSZ6TpWCuEKZYVoN//t8HqBNScHrOtCrIK5IaGLg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/compat-data': 7.23.5 + '@babel/core': 7.23.9 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) semver: 6.3.1 transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.23.5): + /babel-plugin-polyfill-corejs3@0.8.6(@babel/core@7.23.9): resolution: {integrity: sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.5) + '@babel/core': 7.23.9 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.9) + core-js-compat: 3.34.0 + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-corejs3@0.9.0(@babel/core@7.23.9): + resolution: {integrity: sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) core-js-compat: 3.34.0 transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.23.5): + /babel-plugin-polyfill-regenerator@0.5.3(@babel/core@7.23.9): resolution: {integrity: sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.5) + '@babel/core': 7.23.9 + '@babel/helper-define-polyfill-provider': 0.4.3(@babel/core@7.23.9) + transitivePeerDependencies: + - supports-color + dev: true + + /babel-plugin-polyfill-regenerator@0.5.5(@babel/core@7.23.9): + resolution: {integrity: sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==} + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 + dependencies: + '@babel/core': 7.23.9 + '@babel/helper-define-polyfill-provider': 0.5.0(@babel/core@7.23.9) transitivePeerDependencies: - supports-color - /babel-plugin-react-scoped-css@1.1.1(@babel/core@7.23.5): + /babel-plugin-react-scoped-css@1.1.1(@babel/core@7.23.9): resolution: {integrity: sha512-anno2HkotSAyZuKSO6R1SsD+/N8colHPijD0LnMMSw3/dWSHvsiZS5gB25TE2fTqacwiIwF0n8IMpPHvY78p0g==} dependencies: - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) md5: 2.3.0 transitivePeerDependencies: - '@babel/core' @@ -6115,57 +6475,57 @@ packages: is-invalid-path: 1.0.2 dev: true - /babel-plugin-transform-taroapi@3.6.18: - resolution: {integrity: sha512-gW8zVaQFTpNoUU9FGM4gdraPz7BpCKN9CBKPVrDSdPRQNBxmbXo9AW+U5wWZKch50IUgyyE91SymO5n5XKb+Dw==} + /babel-plugin-transform-taroapi@3.6.22: + resolution: {integrity: sha512-Uuq2yhtONPbgy6YXMPB6t34D1CgyXo9p0xHqTppUdypeANJAr28aFyGMAoA5tGgul5KYeP2uBicIPnfEsHgZuA==} dependencies: lodash: 4.17.21 dev: false - /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.5): + /babel-preset-current-node-syntax@1.0.1(@babel/core@7.23.9): resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.5) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.5) - dev: true - - /babel-preset-jest@29.6.3(@babel/core@7.23.5): + '@babel/core': 7.23.9 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.9) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.9) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.9) + dev: true + + /babel-preset-jest@29.6.3(@babel/core@7.23.9): resolution: {integrity: sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 babel-plugin-jest-hoist: 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.5) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.9) dev: true - /babel-preset-taro@3.6.20(@babel/core@7.23.5): + /babel-preset-taro@3.6.20(@babel/core@7.23.9): resolution: {integrity: sha512-yn6qyZwafkh/eCIiu4T93ubKtzk2huykcmyL33Zk6FQH9U7SYoj7bWeaZCj9vGP5dfQ0MNOuI6R2X8uliu0lEQ==} peerDependencies: '@babel/core': '*' dependencies: - '@babel/core': 7.23.5 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.5) - '@babel/plugin-proposal-decorators': 7.23.5(@babel/core@7.23.5) - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-runtime': 7.23.4(@babel/core@7.23.5) - '@babel/preset-env': 7.23.5(@babel/core@7.23.5) - '@babel/preset-react': 7.23.3(@babel/core@7.23.5) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.5) - '@babel/runtime': 7.23.5 + '@babel/core': 7.23.9 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.9) + '@babel/plugin-proposal-decorators': 7.23.5(@babel/core@7.23.9) + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-runtime': 7.23.4(@babel/core@7.23.9) + '@babel/preset-env': 7.23.5(@babel/core@7.23.9) + '@babel/preset-react': 7.23.3(@babel/core@7.23.9) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.9) + '@babel/runtime': 7.23.9 '@babel/runtime-corejs3': 7.23.5 '@tarojs/helper': 3.6.20 '@tarojs/shared': 3.6.20 @@ -6174,7 +6534,7 @@ packages: babel-plugin-transform-imports-api: 1.0.0 core-js: 3.34.0 lodash: 4.17.21 - metro-react-native-babel-preset: 0.72.4(@babel/core@7.23.5) + metro-react-native-babel-preset: 0.72.4(@babel/core@7.23.9) react-refresh: 0.11.0 transitivePeerDependencies: - '@swc/helpers' @@ -6226,11 +6586,6 @@ packages: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} engines: {node: '>=8'} - /binaryextensions@4.19.0: - resolution: {integrity: sha512-DRxnVbOi/1OgA5pA9EDiRT8gvVYeqfuN7TmPfLyt6cyho3KbHCi3EtDQf39TTmGDrR5dZ9CspdXhPkL/j/WGbg==} - engines: {node: '>=0.8'} - dev: true - /bl@1.2.3: resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} dependencies: @@ -6408,7 +6763,7 @@ packages: /builtins@5.0.1: resolution: {integrity: sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==} dependencies: - semver: 7.5.4 + semver: 7.6.0 dev: true /bundle-name@3.0.0: @@ -6418,6 +6773,13 @@ packages: run-applescript: 5.0.0 dev: true + /bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + dependencies: + run-applescript: 7.0.0 + dev: true + /bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} @@ -6428,6 +6790,11 @@ packages: engines: {node: '>= 0.8'} dev: true + /cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + dev: true + /cacheable-lookup@7.0.0: resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} engines: {node: '>=14.16'} @@ -6548,6 +6915,10 @@ packages: /caniuse-lite@1.0.30001566: resolution: {integrity: sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA==} + /caniuse-lite@1.0.30001588: + resolution: {integrity: sha512-+hVY9jE44uKLkH0SrUTqxjxqNTOWHsbnQDIKjwkZ3lNTzUUVdBLBGXtj/q5Mp5u98r3droaZAewQuEDzjQdZlQ==} + dev: true + /capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} dependencies: @@ -6574,6 +6945,19 @@ packages: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} dev: true + /chai@4.4.1: + resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} + engines: {node: '>=4'} + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.3 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.0.8 + dev: true + /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} engines: {node: '>=4'} @@ -6658,6 +7042,12 @@ packages: resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} dev: true + /check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + dependencies: + get-func-name: 2.0.2 + dev: true + /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} engines: {node: '>= 8.10.0'} @@ -6689,8 +7079,8 @@ packages: resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} dev: true - /classnames@2.3.2: - resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} + /classnames@2.5.1: + resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} /clean-css@4.2.4: resolution: {integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==} @@ -6786,11 +7176,6 @@ packages: wrap-ansi: 7.0.0 dev: true - /clone-buffer@1.0.0: - resolution: {integrity: sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==} - engines: {node: '>= 0.10'} - dev: true - /clone-deep@4.0.1: resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==} engines: {node: '>=6'} @@ -6824,25 +7209,22 @@ packages: engines: {node: '>=0.8'} dev: true - /cloneable-readable@1.1.3: - resolution: {integrity: sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==} - dependencies: - inherits: 2.0.4 - process-nextick-args: 2.0.1 - readable-stream: 2.3.8 - dev: true - /co@4.6.0: resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} dev: true + /collapse-white-space@2.1.0: + resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} + dev: true + /collect-v8-coverage@1.0.2: resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} dev: true /color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + requiresBuild: true dependencies: color-name: 1.1.3 @@ -6854,6 +7236,7 @@ packages: /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + requiresBuild: true /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -7240,7 +7623,7 @@ packages: is-what: 3.14.1 dev: true - /copy-webpack-plugin@10.2.0(webpack@5.89.0): + /copy-webpack-plugin@10.2.0(webpack@5.79.0): resolution: {integrity: sha512-my6iXII95c78w14HzYCNya5TlJYa44lOppAge5GSTMM1SyDxNsVGCJvhP4/ld6snm8lzjn3XOonMZD6s1L86Og==} engines: {node: '>= 12.20.0'} peerDependencies: @@ -7252,7 +7635,7 @@ packages: normalize-path: 3.0.0 schema-utils: 4.2.0 serialize-javascript: 6.0.1 - webpack: 5.89.0(@swc/core@1.3.23) + webpack: 5.79.0(@swc/core@1.3.96) dev: true /core-js-compat@3.34.0: @@ -7277,7 +7660,7 @@ packages: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} dev: true - /cosmiconfig-typescript-loader@5.0.0(@types/node@18.19.3)(cosmiconfig@8.3.6)(typescript@4.9.5): + /cosmiconfig-typescript-loader@5.0.0(@types/node@20.11.19)(cosmiconfig@8.3.6)(typescript@5.3.3): resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} engines: {node: '>=v16'} peerDependencies: @@ -7285,10 +7668,10 @@ packages: cosmiconfig: '>=8.2' typescript: '>=4' dependencies: - '@types/node': 18.19.3 - cosmiconfig: 8.3.6(typescript@4.9.5) + '@types/node': 20.11.19 + cosmiconfig: 8.3.6(typescript@5.3.3) jiti: 1.21.0 - typescript: 4.9.5 + typescript: 5.3.3 dev: true /cosmiconfig@7.1.0: @@ -7302,7 +7685,7 @@ packages: yaml: 1.10.2 dev: true - /cosmiconfig@8.3.6(typescript@4.9.5): + /cosmiconfig@8.3.6(typescript@5.3.3): resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} engines: {node: '>=14'} peerDependencies: @@ -7315,10 +7698,10 @@ packages: js-yaml: 4.1.0 parse-json: 5.2.0 path-type: 4.0.0 - typescript: 4.9.5 + typescript: 5.3.3 dev: true - /cosmiconfig@9.0.0(typescript@4.9.5): + /cosmiconfig@9.0.0(typescript@5.3.3): resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} peerDependencies: @@ -7331,10 +7714,10 @@ packages: import-fresh: 3.3.0 js-yaml: 4.1.0 parse-json: 5.2.0 - typescript: 4.9.5 + typescript: 5.3.3 dev: true - /create-jest@29.7.0(@types/node@20.10.4)(ts-node@10.9.1): + /create-jest@29.7.0(@types/node@20.11.19)(ts-node@10.9.2): resolution: {integrity: sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -7343,7 +7726,7 @@ packages: chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@20.10.4)(ts-node@10.9.1) + jest-config: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -7389,13 +7772,13 @@ packages: type-fest: 1.4.0 dev: true - /css-declaration-sorter@6.4.1(postcss@8.4.32): + /css-declaration-sorter@6.4.1(postcss@8.4.35): resolution: {integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==} engines: {node: ^10 || ^12 || >=14} peerDependencies: postcss: ^8.0.9 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 dev: true /css-functions-list@3.2.1: @@ -7403,24 +7786,24 @@ packages: engines: {node: '>=12 || >=16'} dev: true - /css-loader@6.8.1(webpack@5.89.0): + /css-loader@6.8.1(webpack@5.79.0): resolution: {integrity: sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.32) - postcss: 8.4.32 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.32) - postcss-modules-local-by-default: 4.0.3(postcss@8.4.32) - postcss-modules-scope: 3.0.0(postcss@8.4.32) - postcss-modules-values: 4.0.0(postcss@8.4.32) + icss-utils: 5.1.0(postcss@8.4.35) + postcss: 8.4.35 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.35) + postcss-modules-local-by-default: 4.0.3(postcss@8.4.35) + postcss-modules-scope: 3.0.0(postcss@8.4.35) + postcss-modules-values: 4.0.0(postcss@8.4.35) postcss-value-parser: 4.2.0 - semver: 7.5.4 - webpack: 5.89.0(@swc/core@1.3.23) + semver: 7.6.0 + webpack: 5.79.0(@swc/core@1.3.96) dev: true - /css-minimizer-webpack-plugin@3.4.1(@parcel/css@1.14.0)(csso@5.0.5)(esbuild@0.14.54)(webpack@5.89.0): + /css-minimizer-webpack-plugin@3.4.1(@parcel/css@1.14.0)(csso@5.0.5)(esbuild@0.19.8)(webpack@5.79.0): resolution: {integrity: sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -7440,15 +7823,15 @@ packages: optional: true dependencies: '@parcel/css': 1.14.0 - cssnano: 5.1.15(postcss@8.4.32) + cssnano: 5.1.15(postcss@8.4.35) csso: 5.0.5 - esbuild: 0.14.54 + esbuild: 0.19.8 jest-worker: 27.5.1 - postcss: 8.4.32 + postcss: 8.4.35 schema-utils: 4.2.0 serialize-javascript: 6.0.1 source-map: 0.6.1 - webpack: 5.89.0(@swc/core@1.3.23) + webpack: 5.79.0(@swc/core@1.3.96) dev: true /css-select@4.3.0: @@ -7520,62 +7903,62 @@ packages: resolution: {integrity: sha512-6tun4LoZnj7VN6YeegOVb67KBX/7JJsqvj+pv3ZA7F878/eN33AbGa5b/S/wXxS/tcp8nc40xRUrsPlxIyNUPg==} dev: true - /cssnano-preset-default@5.2.14(postcss@8.4.32): + /cssnano-preset-default@5.2.14(postcss@8.4.35): resolution: {integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - css-declaration-sorter: 6.4.1(postcss@8.4.32) - cssnano-utils: 3.1.0(postcss@8.4.32) - postcss: 8.4.32 - postcss-calc: 8.2.4(postcss@8.4.32) - postcss-colormin: 5.3.1(postcss@8.4.32) - postcss-convert-values: 5.1.3(postcss@8.4.32) - postcss-discard-comments: 5.1.2(postcss@8.4.32) - postcss-discard-duplicates: 5.1.0(postcss@8.4.32) - postcss-discard-empty: 5.1.1(postcss@8.4.32) - postcss-discard-overridden: 5.1.0(postcss@8.4.32) - postcss-merge-longhand: 5.1.7(postcss@8.4.32) - postcss-merge-rules: 5.1.4(postcss@8.4.32) - postcss-minify-font-values: 5.1.0(postcss@8.4.32) - postcss-minify-gradients: 5.1.1(postcss@8.4.32) - postcss-minify-params: 5.1.4(postcss@8.4.32) - postcss-minify-selectors: 5.2.1(postcss@8.4.32) - postcss-normalize-charset: 5.1.0(postcss@8.4.32) - postcss-normalize-display-values: 5.1.0(postcss@8.4.32) - postcss-normalize-positions: 5.1.1(postcss@8.4.32) - postcss-normalize-repeat-style: 5.1.1(postcss@8.4.32) - postcss-normalize-string: 5.1.0(postcss@8.4.32) - postcss-normalize-timing-functions: 5.1.0(postcss@8.4.32) - postcss-normalize-unicode: 5.1.1(postcss@8.4.32) - postcss-normalize-url: 5.1.0(postcss@8.4.32) - postcss-normalize-whitespace: 5.1.1(postcss@8.4.32) - postcss-ordered-values: 5.1.3(postcss@8.4.32) - postcss-reduce-initial: 5.1.2(postcss@8.4.32) - postcss-reduce-transforms: 5.1.0(postcss@8.4.32) - postcss-svgo: 5.1.0(postcss@8.4.32) - postcss-unique-selectors: 5.1.1(postcss@8.4.32) - dev: true - - /cssnano-utils@3.1.0(postcss@8.4.32): + css-declaration-sorter: 6.4.1(postcss@8.4.35) + cssnano-utils: 3.1.0(postcss@8.4.35) + postcss: 8.4.35 + postcss-calc: 8.2.4(postcss@8.4.35) + postcss-colormin: 5.3.1(postcss@8.4.35) + postcss-convert-values: 5.1.3(postcss@8.4.35) + postcss-discard-comments: 5.1.2(postcss@8.4.35) + postcss-discard-duplicates: 5.1.0(postcss@8.4.35) + postcss-discard-empty: 5.1.1(postcss@8.4.35) + postcss-discard-overridden: 5.1.0(postcss@8.4.35) + postcss-merge-longhand: 5.1.7(postcss@8.4.35) + postcss-merge-rules: 5.1.4(postcss@8.4.35) + postcss-minify-font-values: 5.1.0(postcss@8.4.35) + postcss-minify-gradients: 5.1.1(postcss@8.4.35) + postcss-minify-params: 5.1.4(postcss@8.4.35) + postcss-minify-selectors: 5.2.1(postcss@8.4.35) + postcss-normalize-charset: 5.1.0(postcss@8.4.35) + postcss-normalize-display-values: 5.1.0(postcss@8.4.35) + postcss-normalize-positions: 5.1.1(postcss@8.4.35) + postcss-normalize-repeat-style: 5.1.1(postcss@8.4.35) + postcss-normalize-string: 5.1.0(postcss@8.4.35) + postcss-normalize-timing-functions: 5.1.0(postcss@8.4.35) + postcss-normalize-unicode: 5.1.1(postcss@8.4.35) + postcss-normalize-url: 5.1.0(postcss@8.4.35) + postcss-normalize-whitespace: 5.1.1(postcss@8.4.35) + postcss-ordered-values: 5.1.3(postcss@8.4.35) + postcss-reduce-initial: 5.1.2(postcss@8.4.35) + postcss-reduce-transforms: 5.1.0(postcss@8.4.35) + postcss-svgo: 5.1.0(postcss@8.4.35) + postcss-unique-selectors: 5.1.1(postcss@8.4.35) + dev: true + + /cssnano-utils@3.1.0(postcss@8.4.35): resolution: {integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 dev: true - /cssnano@5.1.15(postcss@8.4.32): + /cssnano@5.1.15(postcss@8.4.35): resolution: {integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-preset-default: 5.2.14(postcss@8.4.32) + cssnano-preset-default: 5.2.14(postcss@8.4.35) lilconfig: 2.1.0 - postcss: 8.4.32 + postcss: 8.4.35 yaml: 1.10.2 dev: true @@ -7600,21 +7983,6 @@ packages: css-tree: 2.2.1 dev: true - /cssom@0.3.8: - resolution: {integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==} - dev: true - - /cssom@0.5.0: - resolution: {integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==} - dev: true - - /cssstyle@2.3.0: - resolution: {integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==} - engines: {node: '>=8'} - dependencies: - cssom: 0.3.8 - dev: true - /cssstyle@3.0.0: resolution: {integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==} engines: {node: '>=14'} @@ -7633,9 +8001,9 @@ packages: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} dev: true - /dargs@7.0.0: - resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} - engines: {node: '>=8'} + /dargs@8.1.0: + resolution: {integrity: sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==} + engines: {node: '>=12'} dev: true /dashdash@1.14.1: @@ -7655,15 +8023,6 @@ packages: engines: {node: '>= 14'} dev: true - /data-urls@3.0.2: - resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} - engines: {node: '>=12'} - dependencies: - abab: 2.0.6 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - dev: true - /data-urls@4.0.0: resolution: {integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==} engines: {node: '>=14'} @@ -7824,6 +8183,13 @@ packages: optional: true dev: true + /deep-eql@4.1.3: + resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + engines: {node: '>=6'} + dependencies: + type-detect: 4.0.8 + dev: true + /deep-equal@2.2.3: resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} engines: {node: '>= 0.4'} @@ -7875,6 +8241,11 @@ packages: untildify: 4.0.0 dev: true + /default-browser-id@5.0.0: + resolution: {integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==} + engines: {node: '>=18'} + dev: true + /default-browser@4.0.0: resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} engines: {node: '>=14.16'} @@ -7885,6 +8256,14 @@ packages: titleize: 3.0.0 dev: true + /default-browser@5.2.1: + resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==} + engines: {node: '>=18'} + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.0 + dev: true + /default-gateway@6.0.3: resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==} engines: {node: '>= 10'} @@ -7965,7 +8344,7 @@ packages: engines: {node: '>=10'} hasBin: true dependencies: - '@babel/parser': 7.23.5 + '@babel/parser': 7.23.9 '@babel/traverse': 7.23.5 '@vue/compiler-sfc': 3.3.10 callsite: 1.0.0 @@ -7986,7 +8365,7 @@ packages: require-package-name: 2.0.1 resolve: 1.22.8 resolve-from: 5.0.0 - semver: 7.5.4 + semver: 7.6.0 yargs: 16.2.0 transitivePeerDependencies: - supports-color @@ -8107,6 +8486,10 @@ packages: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} dev: true + /dom-accessibility-api@0.6.3: + resolution: {integrity: sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==} + dev: true + /dom-converter@0.2.0: resolution: {integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==} dependencies: @@ -8116,7 +8499,7 @@ packages: /dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.23.9 csstype: 3.1.2 dev: false @@ -8237,14 +8620,6 @@ packages: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} dev: true - /ejs@3.1.9: - resolution: {integrity: sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==} - engines: {node: '>=0.10.0'} - hasBin: true - dependencies: - jake: 10.8.7 - dev: true - /electron-to-chromium@1.4.607: resolution: {integrity: sha512-YUlnPwE6eYxzwBnFmawA8LiLRfm70R2aJRIUv0n03uHt/cUzzYACOogmvk8M2+hVzt/kB80KJXx7d5f5JofPvQ==} @@ -8446,6 +8821,7 @@ packages: cpu: [x64] os: [android] requiresBuild: true + dev: true optional: true /esbuild-android-arm64@0.14.54: @@ -8454,6 +8830,7 @@ packages: cpu: [arm64] os: [android] requiresBuild: true + dev: true optional: true /esbuild-darwin-64@0.14.54: @@ -8462,6 +8839,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true optional: true /esbuild-darwin-arm64@0.14.54: @@ -8470,6 +8848,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: true optional: true /esbuild-freebsd-64@0.14.54: @@ -8478,6 +8857,7 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true + dev: true optional: true /esbuild-freebsd-arm64@0.14.54: @@ -8486,6 +8866,7 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true + dev: true optional: true /esbuild-linux-32@0.14.54: @@ -8494,6 +8875,7 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true + dev: true optional: true /esbuild-linux-64@0.14.54: @@ -8502,6 +8884,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /esbuild-linux-arm64@0.14.54: @@ -8510,6 +8893,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /esbuild-linux-arm@0.14.54: @@ -8518,6 +8902,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /esbuild-linux-mips64le@0.14.54: @@ -8526,6 +8911,7 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true + dev: true optional: true /esbuild-linux-ppc64le@0.14.54: @@ -8534,6 +8920,7 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true + dev: true optional: true /esbuild-linux-riscv64@0.14.54: @@ -8542,6 +8929,7 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true + dev: true optional: true /esbuild-linux-s390x@0.14.54: @@ -8550,9 +8938,10 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true + dev: true optional: true - /esbuild-loader@2.18.0(webpack@5.89.0): + /esbuild-loader@2.18.0(webpack@5.79.0): resolution: {integrity: sha512-AKqxM3bI+gvGPV8o6NAhR+cBxVO8+dh+O0OXBHIXXwuSGumckbPWHzZ17subjBGI2YEGyJ1STH7Haj8aCrwL/w==} peerDependencies: webpack: ^4.40.0 || ^5.0.0 @@ -8562,7 +8951,7 @@ packages: json5: 2.2.3 loader-utils: 2.0.4 tapable: 2.2.1 - webpack: 5.89.0(@swc/core@1.3.23) + webpack: 5.79.0(@swc/core@1.3.96) webpack-sources: 2.3.1 dev: true @@ -8572,6 +8961,7 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true + dev: true optional: true /esbuild-openbsd-64@0.14.54: @@ -8580,6 +8970,7 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true + dev: true optional: true /esbuild-sunos-64@0.14.54: @@ -8588,6 +8979,7 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true + dev: true optional: true /esbuild-windows-32@0.14.54: @@ -8596,6 +8988,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: true optional: true /esbuild-windows-64@0.14.54: @@ -8604,6 +8997,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true /esbuild-windows-arm64@0.14.54: @@ -8612,6 +9006,7 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: true optional: true /esbuild@0.14.54: @@ -8641,6 +9036,7 @@ packages: esbuild-windows-32: 0.14.54 esbuild-windows-64: 0.14.54 esbuild-windows-arm64: 0.14.54 + dev: true /esbuild@0.19.8: resolution: {integrity: sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==} @@ -8670,7 +9066,6 @@ packages: '@esbuild/win32-arm64': 0.19.8 '@esbuild/win32-ia32': 0.19.8 '@esbuild/win32-x64': 0.19.8 - dev: true /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -8721,7 +9116,7 @@ packages: source-map: 0.6.1 dev: true - /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.0)(eslint@8.55.0): + /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1)(eslint@8.56.0): resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} engines: {node: ^10.12.0 || >=12.0.0} peerDependencies: @@ -8729,14 +9124,14 @@ packages: eslint-plugin-import: ^2.25.2 dependencies: confusing-browser-globals: 1.0.11 - eslint: 8.55.0 - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.13.2)(eslint@8.55.0) + eslint: 8.56.0 + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.0.2)(eslint@8.56.0) object.assign: 4.1.5 object.entries: 1.1.7 semver: 6.3.1 dev: true - /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.0)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.55.0): + /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.33.2)(eslint@8.56.0): resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -8746,33 +9141,33 @@ packages: eslint-plugin-react: ^7.28.0 eslint-plugin-react-hooks: ^4.3.0 dependencies: - eslint: 8.55.0 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.0)(eslint@8.55.0) - eslint-plugin-import: 2.29.0(@typescript-eslint/parser@6.13.2)(eslint@8.55.0) - eslint-plugin-jsx-a11y: 6.8.0(eslint@8.55.0) - eslint-plugin-react: 7.33.2(eslint@8.55.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.55.0) + eslint: 8.56.0 + eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.56.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.0.2)(eslint@8.56.0) + eslint-plugin-jsx-a11y: 6.8.0(eslint@8.56.0) + eslint-plugin-react: 7.33.2(eslint@8.56.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.56.0) object.assign: 4.1.5 object.entries: 1.1.7 dev: true - /eslint-config-prettier@9.1.0(eslint@8.55.0): + /eslint-config-prettier@9.1.0(eslint@8.56.0): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 8.55.0 + eslint: 8.56.0 dev: true - /eslint-config-taro@3.6.20(@babel/core@7.23.5)(eslint@8.55.0)(typescript@4.9.5): + /eslint-config-taro@3.6.20(@babel/core@7.23.9)(eslint@8.56.0)(typescript@5.3.3): resolution: {integrity: sha512-etIepI/1mYTWDEDuyiZxGfXkGw3QWr/Obse3cRjHyEzJ6mRBHvyGWGsf7xInvq/a2RcmGuRhdIRTvPjd+KbYUg==} peerDependencies: eslint: '*' dependencies: - '@babel/eslint-parser': 7.23.3(@babel/core@7.23.5)(eslint@8.55.0) - '@typescript-eslint/parser': 5.62.0(eslint@8.55.0)(typescript@4.9.5) - eslint: 8.55.0 + '@babel/eslint-parser': 7.23.3(@babel/core@7.23.9)(eslint@8.56.0) + '@typescript-eslint/parser': 5.62.0(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 transitivePeerDependencies: - '@babel/core' - supports-color @@ -8789,7 +9184,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.13.2)(eslint-import-resolver-node@0.3.9)(eslint@8.55.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@7.0.2)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -8810,16 +9205,16 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 6.13.2(eslint@8.55.0)(typescript@4.9.5) + '@typescript-eslint/parser': 7.0.2(eslint@8.56.0)(typescript@5.3.3) debug: 3.2.7 - eslint: 8.55.0 + eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import@2.29.0(@typescript-eslint/parser@6.13.2)(eslint@8.55.0): - resolution: {integrity: sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==} + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.0.2)(eslint@8.56.0): + resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: '@typescript-eslint/parser': '*' @@ -8828,16 +9223,16 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 6.13.2(eslint@8.55.0)(typescript@4.9.5) + '@typescript-eslint/parser': 7.0.2(eslint@8.56.0)(typescript@5.3.3) array-includes: 3.1.7 array.prototype.findlastindex: 1.2.3 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.55.0 + eslint: 8.56.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.13.2)(eslint-import-resolver-node@0.3.9)(eslint@8.55.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@7.0.2)(eslint-import-resolver-node@0.3.9)(eslint@8.56.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -8846,20 +9241,20 @@ packages: object.groupby: 1.0.1 object.values: 1.1.7 semver: 6.3.1 - tsconfig-paths: 3.14.2 + tsconfig-paths: 3.15.0 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack - supports-color dev: true - /eslint-plugin-jsx-a11y@6.8.0(eslint@8.55.0): + /eslint-plugin-jsx-a11y@6.8.0(eslint@8.56.0): resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} engines: {node: '>=4.0'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 dependencies: - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.23.9 aria-query: 5.3.0 array-includes: 3.1.7 array.prototype.flatmap: 1.3.2 @@ -8869,7 +9264,7 @@ packages: damerau-levenshtein: 1.0.8 emoji-regex: 9.2.2 es-iterator-helpers: 1.0.15 - eslint: 8.55.0 + eslint: 8.56.0 hasown: 2.0.0 jsx-ast-utils: 3.3.5 language-tags: 1.0.9 @@ -8878,20 +9273,20 @@ packages: object.fromentries: 2.0.7 dev: true - /eslint-plugin-markdown@3.0.1(eslint@8.55.0): - resolution: {integrity: sha512-8rqoc148DWdGdmYF6WSQFT3uQ6PO7zXYgeBpHAOAakX/zpq+NvFYbDA/H7PYzHajwtmaOzAwfxyl++x0g1/N9A==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-plugin-markdown@4.0.1(eslint@8.56.0): + resolution: {integrity: sha512-5/MnGvYU0i8MbHH5cg8S+Vl3DL+bqRNYshk1xUO86DilNBaxtTkhH+5FD0/yO03AmlI6+lfNFdk2yOw72EPzpA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + eslint: '>=8' dependencies: - eslint: 8.55.0 + eslint: 8.56.0 mdast-util-from-markdown: 0.8.5 transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-prettier@5.0.1(eslint-config-prettier@9.1.0)(eslint@8.55.0)(prettier@3.1.0): - resolution: {integrity: sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==} + /eslint-plugin-prettier@5.1.3(eslint-config-prettier@9.1.0)(eslint@8.56.0)(prettier@3.2.5): + resolution: {integrity: sha512-C9GCVAs4Eq7ZC/XFQHITLiHJxQngdtraXaM+LoUFoFp/lHNl2Zn8f3WQbe9HvTBBQ9YnKFB0/2Ajdqwo5D1EAw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: '@types/eslint': '>=8.0.0' @@ -8904,23 +9299,23 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 8.55.0 - eslint-config-prettier: 9.1.0(eslint@8.55.0) - prettier: 3.1.0 + eslint: 8.56.0 + eslint-config-prettier: 9.1.0(eslint@8.56.0) + prettier: 3.2.5 prettier-linter-helpers: 1.0.0 synckit: 0.8.6 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.55.0): + /eslint-plugin-react-hooks@4.6.0(eslint@8.56.0): resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 dependencies: - eslint: 8.55.0 + eslint: 8.56.0 dev: true - /eslint-plugin-react@7.33.2(eslint@8.55.0): + /eslint-plugin-react@7.33.2(eslint@8.56.0): resolution: {integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==} engines: {node: '>=4'} peerDependencies: @@ -8931,7 +9326,7 @@ packages: array.prototype.tosorted: 1.1.2 doctrine: 2.1.0 es-iterator-helpers: 1.0.15 - eslint: 8.55.0 + eslint: 8.56.0 estraverse: 5.3.0 jsx-ast-utils: 3.3.5 minimatch: 3.1.2 @@ -8945,18 +9340,18 @@ packages: string.prototype.matchall: 4.0.10 dev: true - /eslint-plugin-unused-imports@3.0.0(@typescript-eslint/eslint-plugin@6.13.2)(eslint@8.55.0): - resolution: {integrity: sha512-sduiswLJfZHeeBJ+MQaG+xYzSWdRXoSw61DpU13mzWumCkR0ufD0HmO4kdNokjrkluMHpj/7PJeN35pgbhW3kw==} + /eslint-plugin-unused-imports@3.1.0(@typescript-eslint/eslint-plugin@7.0.2)(eslint@8.56.0): + resolution: {integrity: sha512-9l1YFCzXKkw1qtAru1RWUtG2EVDZY0a0eChKXcL+EZ5jitG7qxdctu4RnvhOJHv4xfmUf7h+JJPINlVpGhZMrw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: - '@typescript-eslint/eslint-plugin': ^6.0.0 - eslint: ^8.0.0 + '@typescript-eslint/eslint-plugin': 6 - 7 + eslint: '8' peerDependenciesMeta: '@typescript-eslint/eslint-plugin': optional: true dependencies: - '@typescript-eslint/eslint-plugin': 6.13.2(@typescript-eslint/parser@6.13.2)(eslint@8.55.0)(typescript@4.9.5) - eslint: 8.55.0 + '@typescript-eslint/eslint-plugin': 7.0.2(@typescript-eslint/parser@7.0.2)(eslint@8.56.0)(typescript@5.3.3) + eslint: 8.56.0 eslint-rule-composer: 0.3.0 dev: true @@ -9038,15 +9433,15 @@ packages: - supports-color dev: true - /eslint@8.55.0: - resolution: {integrity: sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==} + /eslint@8.56.0: + resolution: {integrity: sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.55.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@8.56.0) '@eslint-community/regexpp': 4.10.0 '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.55.0 + '@eslint/js': 8.56.0 '@humanwhocodes/config-array': 0.11.13 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 @@ -9120,14 +9515,50 @@ packages: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} + /estree-util-attach-comments@3.0.0: + resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} + dependencies: + '@types/estree': 1.0.5 + dev: true + + /estree-util-build-jsx@3.0.1: + resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} + dependencies: + '@types/estree-jsx': 1.0.3 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + estree-walker: 3.0.3 + dev: true + /estree-util-is-identifier-name@3.0.0: resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} dev: true + /estree-util-to-js@2.0.0: + resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} + dependencies: + '@types/estree-jsx': 1.0.3 + astring: 1.8.6 + source-map: 0.7.4 + dev: true + + /estree-util-visit@2.0.0: + resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} + dependencies: + '@types/estree-jsx': 1.0.3 + '@types/unist': 3.0.2 + dev: true + /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} dev: true + /estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + dependencies: + '@types/estree': 1.0.5 + dev: true + /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} @@ -9382,6 +9813,10 @@ packages: web-streams-polyfill: 3.2.1 dev: true + /fflate@0.8.2: + resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} + dev: true + /figures@3.2.0: resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} engines: {node: '>=8'} @@ -9389,14 +9824,6 @@ packages: escape-string-regexp: 1.0.5 dev: true - /figures@5.0.0: - resolution: {integrity: sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==} - engines: {node: '>=14'} - dependencies: - escape-string-regexp: 5.0.0 - is-unicode-supported: 1.3.0 - dev: true - /file-entry-cache@6.0.1: resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} engines: {node: ^10.12.0 || >=12.0.0} @@ -9404,14 +9831,14 @@ packages: flat-cache: 3.2.0 dev: true - /file-entry-cache@7.0.2: - resolution: {integrity: sha512-TfW7/1iI4Cy7Y8L6iqNdZQVvdXn0f8B4QcIXmkIbtTIe/Okm/nSlHb4IwGzRVOd3WfSieCgvf5cMzEfySAIl0g==} - engines: {node: '>=12.0.0'} + /file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} dependencies: - flat-cache: 3.2.0 + flat-cache: 4.0.0 dev: true - /file-loader@6.0.0(webpack@5.89.0): + /file-loader@6.0.0(webpack@5.79.0): resolution: {integrity: sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -9419,7 +9846,7 @@ packages: dependencies: loader-utils: 2.0.4 schema-utils: 2.7.1 - webpack: 5.89.0(@swc/core@1.3.23) + webpack: 5.79.0(@swc/core@1.3.96) dev: true /file-type@3.9.0: @@ -9447,12 +9874,6 @@ packages: engines: {node: '>=6'} dev: true - /filelist@1.0.4: - resolution: {integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==} - dependencies: - minimatch: 5.1.6 - dev: true - /filename-reserved-regex@2.0.0: resolution: {integrity: sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==} engines: {node: '>=4'} @@ -9521,6 +9942,15 @@ packages: locate-path: 6.0.0 path-exists: 4.0.0 + /find-up@7.0.0: + resolution: {integrity: sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==} + engines: {node: '>=18'} + dependencies: + locate-path: 7.2.0 + path-exists: 5.0.0 + unicorn-magic: 0.1.0 + dev: true + /find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} dependencies: @@ -9543,13 +9973,6 @@ packages: resolve-dir: 1.0.1 dev: true - /first-chunk-stream@2.0.0: - resolution: {integrity: sha512-X8Z+b/0L4lToKYq+lwnKqi9X/Zek0NibLpsJgVsSxpoYq7JtiCtRb5HqKVEjEw/qAb/4AKKRLOwwKHlWNpm2Eg==} - engines: {node: '>=0.10.0'} - dependencies: - readable-stream: 2.3.8 - dev: true - /flat-cache@3.2.0: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} @@ -9559,6 +9982,15 @@ packages: rimraf: 3.0.2 dev: true + /flat-cache@4.0.0: + resolution: {integrity: sha512-EryKbCE/wxpxKniQlyas6PY1I9vwtF3uCBweX+N8KYTCn3Y12RTGtQAJ/bd5pl7kxUAc8v/R3Ake/N17OZiFqA==} + engines: {node: '>=16'} + dependencies: + flatted: 3.2.9 + keyv: 4.5.4 + rimraf: 5.0.5 + dev: true + /flatted@3.2.9: resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} dev: true @@ -9577,6 +10009,16 @@ packages: optional: true dev: true + /follow-redirects@1.15.5: + resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + dev: true + /for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} dependencies: @@ -9739,6 +10181,10 @@ packages: engines: {node: '>=18'} dev: true + /get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true + /get-intrinsic@1.2.2: resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} dependencies: @@ -9826,16 +10272,14 @@ packages: resolution: {integrity: sha512-zs9rlfa7HyaJAKG9o+V7C6qfMzyc+tb1IIXdUFcOBcR1U7siKy/uPdauLlrH1mc0vOgUwIv4BF+QxPiiTYz3Rw==} dev: true - /git-raw-commits@2.0.11: - resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} - engines: {node: '>=10'} + /git-raw-commits@4.0.0: + resolution: {integrity: sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==} + engines: {node: '>=16'} hasBin: true dependencies: - dargs: 7.0.0 - lodash: 4.17.21 - meow: 8.1.2 - split2: 3.2.2 - through2: 4.0.2 + dargs: 8.1.0 + meow: 12.1.1 + split2: 4.2.0 dev: true /git-up@7.0.0: @@ -9845,8 +10289,8 @@ packages: parse-url: 8.1.0 dev: true - /git-url-parse@13.1.1: - resolution: {integrity: sha512-PCFJyeSSdtnbfhSNRw9Wk96dDCNx+sogTe4YNXeXSJxt7xz5hvXekuRn9JX7m+Mf4OscCu8h+mtAl3+h5Fo8lQ==} + /git-url-parse@14.0.0: + resolution: {integrity: sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==} dependencies: git-up: 7.0.0 dev: true @@ -9931,11 +10375,11 @@ packages: once: 1.4.0 dev: true - /global-dirs@0.1.1: - resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} - engines: {node: '>=4'} + /global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} dependencies: - ini: 1.3.8 + ini: 4.1.1 dev: true /global-dirs@3.0.1: @@ -10037,11 +10481,11 @@ packages: slash: 4.0.0 dev: true - /globby@14.0.0: - resolution: {integrity: sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==} + /globby@14.0.1: + resolution: {integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==} engines: {node: '>=18'} dependencies: - '@sindresorhus/merge-streams': 1.0.0 + '@sindresorhus/merge-streams': 2.3.0 fast-glob: 3.3.2 ignore: 5.3.0 path-type: 5.0.0 @@ -10157,6 +10601,15 @@ packages: resolution: {integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==} dev: true + /happy-dom@14.2.0: + resolution: {integrity: sha512-vTqF/9MEkRKgYy5eKq9W0uiNmkgnVAmJhRwn8x8fQBR7lc4C84859jLhgZ1lR4Gi/t70oSdgvtLpxlHjgdJrAw==} + engines: {node: '>=16.0.0'} + dependencies: + entities: 4.5.0 + webidl-conversions: 7.0.0 + whatwg-mimetype: 3.0.0 + dev: true + /har-schema@2.0.0: resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==} engines: {node: '>=4'} @@ -10183,6 +10636,7 @@ packages: /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} + requiresBuild: true /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} @@ -10236,6 +10690,29 @@ packages: resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==} dev: true + /hast-util-to-estree@3.1.0: + resolution: {integrity: sha512-lfX5g6hqVh9kjS/B9E2gSkvHH4SZNiQFiqWS0x9fENzEl+8W12RqdRxX6d/Cwxi30tPQs3bIO+aolQJNp1bIyw==} + dependencies: + '@types/estree': 1.0.5 + '@types/estree-jsx': 1.0.3 + '@types/hast': 3.0.3 + comma-separated-tokens: 2.0.3 + devlop: 1.1.0 + estree-util-attach-comments: 3.0.0 + estree-util-is-identifier-name: 3.0.0 + hast-util-whitespace: 3.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.0.0 + mdast-util-mdxjs-esm: 2.0.1 + property-information: 6.4.0 + space-separated-tokens: 2.0.2 + style-to-object: 0.4.4 + unist-util-position: 5.0.0 + zwitch: 2.0.4 + transitivePeerDependencies: + - supports-color + dev: true + /hast-util-to-jsx-runtime@2.3.0: resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==} dependencies: @@ -10298,10 +10775,15 @@ packages: resolution: {integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==} dev: true + /highlight.js@11.9.0: + resolution: {integrity: sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==} + engines: {node: '>=12.0.0'} + dev: true + /history@5.3.0: resolution: {integrity: sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==} dependencies: - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.23.9 /hls.js@1.4.13: resolution: {integrity: sha512-7QGXXS0u/vu0mQqNPRBKR31ru4BLVabVSOnGaXoQZhMRNbfCNTPNJk9ToC0pzvRUfLK/71QjhQO2wdHrgbKeKg==} @@ -10364,7 +10846,7 @@ packages: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.25.0 + terser: 5.27.2 dev: true /html-minifier@4.0.0: @@ -10390,7 +10872,7 @@ packages: resolution: {integrity: sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==} dev: true - /html-webpack-plugin@5.5.0(webpack@5.89.0): + /html-webpack-plugin@5.5.0(webpack@5.79.0): resolution: {integrity: sha512-sy88PC2cRTVxvETRgUHFrL4No3UxvcH8G1NepGhqaTT+GXN2kTamqasot0inS5hXeg1cMbFDt27zzo9p35lZVw==} engines: {node: '>=10.13.0'} peerDependencies: @@ -10401,7 +10883,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.89.0(@swc/core@1.3.23) + webpack: 5.79.0(@swc/core@1.3.96) dev: true /htmlparser2@6.1.0: @@ -10461,8 +10943,8 @@ packages: - supports-color dev: true - /http-proxy-agent@7.0.0: - resolution: {integrity: sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==} + /http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 @@ -10528,8 +11010,8 @@ packages: - supports-color dev: true - /https-proxy-agent@7.0.2: - resolution: {integrity: sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==} + /https-proxy-agent@7.0.4: + resolution: {integrity: sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==} engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 @@ -10553,9 +11035,9 @@ packages: engines: {node: '>=16.17.0'} dev: true - /husky@8.0.3: - resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} - engines: {node: '>=14'} + /husky@9.0.11: + resolution: {integrity: sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==} + engines: {node: '>=18'} hasBin: true dev: true @@ -10580,13 +11062,13 @@ packages: yup: 1.3.2 dev: false - /icss-utils@5.1.0(postcss@8.4.32): + /icss-utils@5.1.0(postcss@8.4.35): resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 dev: true /ieee754@1.2.1: @@ -10636,6 +11118,10 @@ packages: resolve-cwd: 3.0.0 dev: true + /import-meta-resolve@4.0.0: + resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==} + dev: true + /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} @@ -10667,6 +11153,15 @@ packages: engines: {node: '>=10'} dev: true + /ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + dev: true + + /inline-style-parser@0.1.1: + resolution: {integrity: sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==} + dev: true + /inline-style-parser@0.2.2: resolution: {integrity: sha512-EcKzdTHVe8wFVOGEYXiW9WmJXPjqi1T+234YpJr98RiFYKHV3cdy1+3mkTE+KHTHxFFLH51SfaGOoUdW+v7ViQ==} dev: true @@ -10690,38 +11185,59 @@ packages: through: 2.3.8 dev: true - /inquirer@8.2.6: - resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} - engines: {node: '>=12.0.0'} + /inquirer@8.2.6: + resolution: {integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==} + engines: {node: '>=12.0.0'} + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 6.2.0 + dev: true + + /inquirer@9.2.14: + resolution: {integrity: sha512-4ByIMt677Iz5AvjyKrDpzaepIyMewNvDcvwpVVRZNmy9dLakVoVgdCHZXbK1SlVJra1db0JZ6XkJyHsanpdrdQ==} + engines: {node: '>=18'} dependencies: + '@ljharb/through': 2.3.12 ansi-escapes: 4.3.2 - chalk: 4.1.2 + chalk: 5.3.0 cli-cursor: 3.1.0 - cli-width: 3.0.0 + cli-width: 4.1.0 external-editor: 3.1.0 figures: 3.2.0 lodash: 4.17.21 - mute-stream: 0.0.8 + mute-stream: 1.0.0 ora: 5.4.1 - run-async: 2.4.1 + run-async: 3.0.0 rxjs: 7.8.1 string-width: 4.2.3 strip-ansi: 6.0.1 - through: 2.3.8 wrap-ansi: 6.2.0 dev: true - /inquirer@9.2.12: - resolution: {integrity: sha512-mg3Fh9g2zfuVWJn6lhST0O7x4n03k7G8Tx5nvikJkbq8/CK47WDVm+UznF0G6s5Zi0KcyUisr6DU8T67N5U+1Q==} - engines: {node: '>=14.18.0'} + /inquirer@9.2.15: + resolution: {integrity: sha512-vI2w4zl/mDluHt9YEQ/543VTCwPKWiHzKtm9dM2V0NdFcqEexDAjUHzO1oA60HRNaVifGXXM1tRRNluLVHa0Kg==} + engines: {node: '>=18'} dependencies: - '@ljharb/through': 2.3.11 + '@ljharb/through': 2.3.12 ansi-escapes: 4.3.2 chalk: 5.3.0 cli-cursor: 3.1.0 cli-width: 4.1.0 external-editor: 3.1.0 - figures: 5.0.0 + figures: 3.2.0 lodash: 4.17.21 mute-stream: 1.0.0 ora: 5.4.1 @@ -11009,6 +11525,10 @@ packages: resolution: {integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==} dev: true + /is-mobile@4.0.0: + resolution: {integrity: sha512-mlcHZA84t1qLSuWkt2v0I2l61PYdyQDt4aG1mLIXF5FDMm4+haBCxCPYSr/uwqQNRk1MiTizn0ypEuRAOLRAew==} + dev: false + /is-module@1.0.0: resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} dev: true @@ -11115,6 +11635,12 @@ packages: '@types/estree': 1.0.5 dev: true + /is-reference@3.0.2: + resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==} + dependencies: + '@types/estree': 1.0.5 + dev: true + /is-regex@1.1.4: resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} engines: {node: '>= 0.4'} @@ -11198,8 +11724,9 @@ packages: engines: {node: '>=12'} dev: true - /is-utf8@0.2.1: - resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + /is-unicode-supported@2.0.0: + resolution: {integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==} + engines: {node: '>=18'} dev: true /is-valid-glob@1.0.0: @@ -11240,6 +11767,13 @@ packages: is-docker: 2.2.1 dev: true + /is-wsl@3.1.0: + resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} + engines: {node: '>=16'} + dependencies: + is-inside-container: 1.0.0 + dev: true + /is-yarn-global@0.3.0: resolution: {integrity: sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==} dev: true @@ -11252,11 +11786,6 @@ packages: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} dev: true - /isbinaryfile@5.0.0: - resolution: {integrity: sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg==} - engines: {node: '>= 14.0.0'} - dev: true - /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -11288,8 +11817,8 @@ packages: resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} engines: {node: '>=8'} dependencies: - '@babel/core': 7.23.5 - '@babel/parser': 7.23.5 + '@babel/core': 7.23.9 + '@babel/parser': 7.23.9 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -11301,11 +11830,11 @@ packages: resolution: {integrity: sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==} engines: {node: '>=10'} dependencies: - '@babel/core': 7.23.5 - '@babel/parser': 7.23.5 + '@babel/core': 7.23.9 + '@babel/parser': 7.23.9 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - supports-color dev: true @@ -11330,6 +11859,17 @@ packages: - supports-color dev: true + /istanbul-lib-source-maps@5.0.4: + resolution: {integrity: sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==} + engines: {node: '>=10'} + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + debug: 4.3.4 + istanbul-lib-coverage: 3.2.2 + transitivePeerDependencies: + - supports-color + dev: true + /istanbul-reports@3.1.6: resolution: {integrity: sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==} engines: {node: '>=8'} @@ -11384,17 +11924,6 @@ packages: '@pkgjs/parseargs': 0.11.0 dev: true - /jake@10.8.7: - resolution: {integrity: sha512-ZDi3aP+fG/LchyBzUM804VjddnwfSfsdeYkwt8NcbKRvo4rFkjhs456iLFn3k2ZUWvNe4i48WACDbza8fhq2+w==} - engines: {node: '>=10'} - hasBin: true - dependencies: - async: 3.2.5 - chalk: 4.1.2 - filelist: 1.0.4 - minimatch: 3.1.2 - dev: true - /javascript-stringify@2.1.0: resolution: {integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==} dev: true @@ -11423,7 +11952,7 @@ packages: '@jest/expect': 29.7.0 '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.10.4 + '@types/node': 20.11.19 chalk: 4.1.2 co: 4.6.0 dedent: 1.5.1 @@ -11444,7 +11973,7 @@ packages: - supports-color dev: true - /jest-cli@29.7.0(@types/node@20.10.4)(ts-node@10.9.1): + /jest-cli@29.7.0(@types/node@20.11.19)(ts-node@10.9.2): resolution: {integrity: sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -11454,14 +11983,14 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1) + '@jest/core': 29.7.0(ts-node@10.9.2) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@20.10.4)(ts-node@10.9.1) + create-jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) exit: 0.1.2 import-local: 3.1.0 - jest-config: 29.7.0(@types/node@20.10.4)(ts-node@10.9.1) + jest-config: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -11472,7 +12001,7 @@ packages: - ts-node dev: true - /jest-config@29.7.0(@types/node@20.10.4)(ts-node@10.9.1): + /jest-config@29.7.0(@types/node@20.11.19)(ts-node@10.9.2): resolution: {integrity: sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} peerDependencies: @@ -11484,11 +12013,11 @@ packages: ts-node: optional: true dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@jest/test-sequencer': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.10.4 - babel-jest: 29.7.0(@babel/core@7.23.5) + '@types/node': 20.11.19 + babel-jest: 29.7.0(@babel/core@7.23.9) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -11507,7 +12036,7 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.1(@swc/core@1.3.23)(@types/node@20.10.4)(typescript@4.9.5) + ts-node: 10.9.2(@swc/core@1.3.96)(@types/node@20.11.19)(typescript@5.3.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -11541,29 +12070,6 @@ packages: pretty-format: 29.7.0 dev: true - /jest-environment-jsdom@29.7.0: - resolution: {integrity: sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - dependencies: - '@jest/environment': 29.7.0 - '@jest/fake-timers': 29.7.0 - '@jest/types': 29.6.3 - '@types/jsdom': 20.0.1 - '@types/node': 20.10.4 - jest-mock: 29.7.0 - jest-util: 29.7.0 - jsdom: 20.0.3 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - /jest-environment-node@29.7.0: resolution: {integrity: sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -11571,7 +12077,7 @@ packages: '@jest/environment': 29.7.0 '@jest/fake-timers': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.10.4 + '@types/node': 20.11.19 jest-mock: 29.7.0 jest-util: 29.7.0 dev: true @@ -11587,7 +12093,7 @@ packages: dependencies: '@jest/types': 29.6.3 '@types/graceful-fs': 4.1.9 - '@types/node': 20.10.4 + '@types/node': 20.11.19 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -11638,7 +12144,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.10.4 + '@types/node': 20.11.19 jest-util: 29.7.0 dev: true @@ -11693,7 +12199,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.10.4 + '@types/node': 20.11.19 chalk: 4.1.2 emittery: 0.13.1 graceful-fs: 4.2.11 @@ -11724,7 +12230,7 @@ packages: '@jest/test-result': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.10.4 + '@types/node': 20.11.19 chalk: 4.1.2 cjs-module-lexer: 1.2.3 collect-v8-coverage: 1.0.2 @@ -11747,15 +12253,15 @@ packages: resolution: {integrity: sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/generator': 7.23.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.5) + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.9) '@babel/types': 7.23.5 '@jest/expect-utils': 29.7.0 '@jest/transform': 29.7.0 '@jest/types': 29.6.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.5) + babel-preset-current-node-syntax: 1.0.1(@babel/core@7.23.9) chalk: 4.1.2 expect: 29.7.0 graceful-fs: 4.2.11 @@ -11766,7 +12272,7 @@ packages: jest-util: 29.7.0 natural-compare: 1.4.0 pretty-format: 29.7.0 - semver: 7.5.4 + semver: 7.6.0 transitivePeerDependencies: - supports-color dev: true @@ -11776,7 +12282,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@jest/types': 29.6.3 - '@types/node': 20.10.4 + '@types/node': 20.11.19 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -11801,7 +12307,7 @@ packages: dependencies: '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 - '@types/node': 20.10.4 + '@types/node': 20.11.19 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.13.1 @@ -11813,7 +12319,7 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} dependencies: - '@types/node': 20.10.4 + '@types/node': 20.11.19 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -11821,13 +12327,13 @@ packages: resolution: {integrity: sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@types/node': 20.10.4 + '@types/node': 20.11.19 jest-util: 29.7.0 merge-stream: 2.0.0 supports-color: 8.1.1 dev: true - /jest@29.7.0(@types/node@20.10.4)(ts-node@10.9.1): + /jest@29.7.0(@types/node@20.11.19)(ts-node@10.9.2): resolution: {integrity: sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} hasBin: true @@ -11837,10 +12343,10 @@ packages: node-notifier: optional: true dependencies: - '@jest/core': 29.7.0(ts-node@10.9.1) + '@jest/core': 29.7.0(ts-node@10.9.2) '@jest/types': 29.6.3 import-local: 3.1.0 - jest-cli: 29.7.0(@types/node@20.10.4)(ts-node@10.9.1) + jest-cli: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -11878,6 +12384,10 @@ packages: /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + /js-tokens@8.0.3: + resolution: {integrity: sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==} + dev: true + /js-yaml@3.14.1: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true @@ -11897,7 +12407,7 @@ packages: resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} dev: true - /jscodeshift@0.15.1(@babel/preset-env@7.23.5): + /jscodeshift@0.15.1(@babel/preset-env@7.23.9): resolution: {integrity: sha512-hIJfxUy8Rt4HkJn/zZPU9ChKfKZM1342waJ1QC2e2YsPcWhM+3BJ4dcfQCzArTrk1jJeNLB341H+qOcEHRxJZg==} hasBin: true peerDependencies: @@ -11906,18 +12416,18 @@ packages: '@babel/preset-env': optional: true dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 '@babel/parser': 7.23.5 - '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.5) - '@babel/preset-env': 7.23.5(@babel/core@7.23.5) - '@babel/preset-flow': 7.23.3(@babel/core@7.23.5) - '@babel/preset-typescript': 7.23.3(@babel/core@7.23.5) - '@babel/register': 7.22.15(@babel/core@7.23.5) - babel-core: 7.0.0-bridge.0(@babel/core@7.23.5) + '@babel/plugin-transform-class-properties': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-nullish-coalescing-operator': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-optional-chaining': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-private-methods': 7.23.3(@babel/core@7.23.9) + '@babel/preset-env': 7.23.9(@babel/core@7.23.9) + '@babel/preset-flow': 7.23.3(@babel/core@7.23.9) + '@babel/preset-typescript': 7.23.3(@babel/core@7.23.9) + '@babel/register': 7.22.15(@babel/core@7.23.9) + babel-core: 7.0.0-bridge.0(@babel/core@7.23.9) chalk: 4.1.2 flow-parser: 0.223.3 graceful-fs: 4.2.11 @@ -11930,47 +12440,6 @@ packages: transitivePeerDependencies: - supports-color - /jsdom@20.0.3: - resolution: {integrity: sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==} - engines: {node: '>=14'} - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - dependencies: - abab: 2.0.6 - acorn: 8.11.2 - acorn-globals: 7.0.1 - cssom: 0.5.0 - cssstyle: 2.3.0 - data-urls: 3.0.2 - decimal.js: 10.4.3 - domexception: 4.0.0 - escodegen: 2.1.0 - form-data: 4.0.0 - html-encoding-sniffer: 3.0.0 - http-proxy-agent: 5.0.0 - https-proxy-agent: 5.0.1 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.7 - parse5: 7.1.2 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 4.1.3 - w3c-xmlserializer: 4.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 2.0.0 - whatwg-mimetype: 3.0.0 - whatwg-url: 11.0.0 - ws: 8.14.2 - xml-name-validator: 4.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - dev: true - /jsdom@21.1.2: resolution: {integrity: sha512-sCpFmK2jv+1sjff4u7fzft+pUh2KSUbUrEHYHyfSIbGTIcmnjyp83qg6qLwdJ/I3LpTXx33ACxeRL7Lsyc6lGQ==} engines: {node: '>=14'} @@ -12063,6 +12532,10 @@ packages: engines: {node: '>=6'} hasBin: true + /jsonc-parser@3.2.1: + resolution: {integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==} + dev: true + /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} optionalDependencies: @@ -12177,7 +12650,7 @@ packages: engines: {node: '>=10.13.0'} dev: true - /less-loader@10.2.0(less@4.2.0)(webpack@5.89.0): + /less-loader@10.2.0(less@4.2.0)(webpack@5.79.0): resolution: {integrity: sha512-AV5KHWvCezW27GT90WATaDnfXBv99llDbtaj4bshq6DvAihMdNjaPDcUMa6EXKLRF+P2opFenJp89BXg91XLYg==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -12186,7 +12659,7 @@ packages: dependencies: klona: 2.0.6 less: 4.2.0 - webpack: 5.89.0(@swc/core@1.3.23) + webpack: 5.79.0(@swc/core@1.3.96) dev: true /less@3.13.1: @@ -12361,8 +12834,8 @@ packages: uc.micro: 2.0.0 dev: true - /lint-staged@15.2.0: - resolution: {integrity: sha512-TFZzUEV00f+2YLaVPWBWGAMq7So6yQx+GG8YRMDeOEIf95Zn5RyiLMsEiX4KTNl9vq/w+NqRJkLA1kPIo15ufQ==} + /lint-staged@15.2.2: + resolution: {integrity: sha512-TiTt93OPh1OZOsb5B7k96A/ATl2AjIZo+vnzFZ6oHK5FuTk63ByDtxGQpHm+kFETjEWqgkF95M8FRXKR/LEBcw==} engines: {node: '>=18.12.0'} hasBin: true dependencies: @@ -12371,7 +12844,7 @@ packages: debug: 4.3.4 execa: 8.0.1 lilconfig: 3.0.0 - listr2: 8.0.0 + listr2: 8.0.1 micromatch: 4.0.5 pidtree: 0.6.0 string-argv: 0.3.2 @@ -12380,8 +12853,8 @@ packages: - supports-color dev: true - /listr2@8.0.0: - resolution: {integrity: sha512-u8cusxAcyqAiQ2RhYvV7kRKNLgUvtObIbhOX2NCXqvp1UU32xIg5CT22ykS2TPKJXZWJwtK3IKLiqAGlGNE+Zg==} + /listr2@8.0.1: + resolution: {integrity: sha512-ovJXBXkKGfq+CwmKTjluEqFi3p4h8xvkxGQQAQan22YCgef4KZ1mKGjzfGh6PL6AW5Csw0QiQPNuQyH+6Xk3hA==} engines: {node: '>=18.0.0'} dependencies: cli-truncate: 4.0.0 @@ -12428,6 +12901,14 @@ packages: engines: {node: '>= 12.13.0'} dev: true + /local-pkg@0.5.0: + resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==} + engines: {node: '>=14'} + dependencies: + mlly: 1.6.1 + pkg-types: 1.0.3 + dev: true + /locate-path@3.0.0: resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==} engines: {node: '>=6'} @@ -12448,6 +12929,13 @@ packages: dependencies: p-locate: 5.0.0 + /locate-path@7.2.0: + resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-locate: 6.0.0 + dev: true + /lodash-es@4.17.21: resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==} @@ -12476,10 +12964,6 @@ packages: /lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} - /lodash.isfunction@3.0.9: - resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} - dev: true - /lodash.isplainobject@4.0.6: resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} dev: true @@ -12537,9 +13021,9 @@ packages: chalk: 4.1.2 is-unicode-supported: 0.1.0 - /log-symbols@5.1.0: - resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==} - engines: {node: '>=12'} + /log-symbols@6.0.0: + resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==} + engines: {node: '>=18'} dependencies: chalk: 5.3.0 is-unicode-supported: 1.3.0 @@ -12575,6 +13059,12 @@ packages: dependencies: js-tokens: 4.0.0 + /loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + dependencies: + get-func-name: 2.0.2 + dev: true + /lower-case@1.1.4: resolution: {integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==} dev: true @@ -12662,6 +13152,14 @@ packages: '@jridgewell/sourcemap-codec': 1.4.15 dev: true + /magicast@0.3.3: + resolution: {integrity: sha512-ZbrP1Qxnpoes8sz47AM0z08U+jW6TyRgZzcWy3Ma3vDhJttwMwAFDMMQFobwdBxByBD46JYmxRzeF7w2+wJEuw==} + dependencies: + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 + source-map-js: 1.0.2 + dev: true + /make-dir@1.3.0: resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==} engines: {node: '>=4'} @@ -12687,7 +13185,7 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} dependencies: - semver: 7.5.4 + semver: 7.6.0 dev: true /make-error@1.3.6: @@ -12714,6 +13212,11 @@ packages: resolution: {integrity: sha512-C0X0KQmGm3N2ftbTGBhSyuydQ+vV1LC3f3zPvT3RXHXNZrvfPZcoXp/N5DOa8vedX/rTMm2CjTtivFg2STJMRQ==} dev: true + /markdown-extensions@2.0.0: + resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} + engines: {node: '>=16'} + dev: true + /markdown-it@14.0.0: resolution: {integrity: sha512-seFjF0FIcPt4P9U39Bq1JYblX0KZCjDLFFQPHpL5AzHpqPEKtosxmdq/LTVZnjfH7tjt9BxStm+wXcDBNuYmzw==} hasBin: true @@ -12730,8 +13233,8 @@ packages: resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==} dev: true - /marked@11.0.0: - resolution: {integrity: sha512-2GsW34uXaFEGTQ/+3rCnNC6vUYTAgFuDLGl70v/aWinA5mIJtTrrFAmfbLOfVvgPyxXuDVL9He/7reCK+6j3Sw==} + /marked@12.0.0: + resolution: {integrity: sha512-Vkwtq9rLqXryZnWaQc86+FHLC6tr/fycMfYAhiOIXkrNmeGAyhSxjqu0Rs1i0bBqw5u0S7+lV9fdH2ZSVaoa0w==} engines: {node: '>= 18'} hasBin: true dev: true @@ -12909,6 +13412,18 @@ packages: - supports-color dev: true + /mdast-util-mdx@3.0.0: + resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} + dependencies: + mdast-util-from-markdown: 2.0.0 + mdast-util-mdx-expression: 2.0.0 + mdast-util-mdx-jsx: 3.0.0 + mdast-util-mdxjs-esm: 2.0.1 + mdast-util-to-markdown: 2.1.0 + transitivePeerDependencies: + - supports-color + dev: true + /mdast-util-mdxjs-esm@2.0.1: resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} dependencies: @@ -12990,38 +13505,6 @@ packages: engines: {node: '>= 0.6'} dev: true - /mem-fs-editor@9.7.0(mem-fs@2.3.0): - resolution: {integrity: sha512-ReB3YD24GNykmu4WeUL/FDIQtkoyGB6zfJv60yfCo3QjKeimNcTqv2FT83bP0ccs6uu+sm5zyoBlspAzigmsdg==} - engines: {node: '>=12.10.0'} - peerDependencies: - mem-fs: ^2.1.0 - peerDependenciesMeta: - mem-fs: - optional: true - dependencies: - binaryextensions: 4.19.0 - commondir: 1.0.1 - deep-extend: 0.6.0 - ejs: 3.1.9 - globby: 11.1.0 - isbinaryfile: 5.0.0 - mem-fs: 2.3.0 - minimatch: 7.4.6 - multimatch: 5.0.0 - normalize-path: 3.0.0 - textextensions: 5.16.0 - dev: true - - /mem-fs@2.3.0: - resolution: {integrity: sha512-GftCCBs6EN8sz3BoWO1bCj8t7YBtT713d8bUgbhg9Iel5kFSqnSvCK06TYIDJAtJ51cSiWkM/YemlT0dfoFycw==} - engines: {node: '>=12'} - dependencies: - '@types/node': 15.14.9 - '@types/vinyl': 2.0.11 - vinyl: 2.2.1 - vinyl-file: 3.0.0 - dev: true - /memfs@3.5.3: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} @@ -13037,21 +13520,9 @@ packages: engines: {node: '>=16.10'} dev: true - /meow@8.1.2: - resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} - engines: {node: '>=10'} - dependencies: - '@types/minimist': 1.2.5 - camelcase-keys: 6.2.2 - decamelize-keys: 1.1.1 - hard-rejection: 2.1.0 - minimist-options: 4.1.0 - normalize-package-data: 3.0.3 - read-pkg-up: 7.0.1 - redent: 3.0.0 - trim-newlines: 3.0.1 - type-fest: 0.18.1 - yargs-parser: 20.2.9 + /meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} dev: true /meow@9.0.0: @@ -13095,48 +13566,48 @@ packages: engines: {node: '>= 0.6'} dev: true - /metro-react-native-babel-preset@0.72.4(@babel/core@7.23.5): + /metro-react-native-babel-preset@0.72.4(@babel/core@7.23.9): resolution: {integrity: sha512-YGCVaYe1H5fOFktdDdL9IwAyiXjPh1t2eZZFp3KFJak6fxKpN+q5PPhe1kzMa77dbCAqgImv43zkfGa6i27eyA==} peerDependencies: '@babel/core': '*' dependencies: - '@babel/core': 7.23.5 - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.23.5) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.5) - '@babel/plugin-proposal-export-default-from': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.5) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.5) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.23.5) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-classes': 7.23.5(@babel/core@7.23.5) - '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-runtime': 7.23.4(@babel/core@7.23.5) - '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.5) - '@babel/plugin-transform-typescript': 7.23.5(@babel/core@7.23.5) - '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.5) + '@babel/core': 7.23.9 + '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@7.23.9) + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.23.9) + '@babel/plugin-proposal-export-default-from': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.9) + '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@7.23.9) + '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@7.23.9) + '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.9) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-export-default-from': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-flow': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.9) + '@babel/plugin-transform-arrow-functions': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-async-to-generator': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-block-scoping': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-classes': 7.23.5(@babel/core@7.23.9) + '@babel/plugin-transform-computed-properties': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-destructuring': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-exponentiation-operator': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-flow-strip-types': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-function-name': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-modules-commonjs': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.9) + '@babel/plugin-transform-parameters': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-react-display-name': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) + '@babel/plugin-transform-react-jsx-self': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-react-jsx-source': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-runtime': 7.23.9(@babel/core@7.23.9) + '@babel/plugin-transform-shorthand-properties': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-spread': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-sticky-regex': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-template-literals': 7.23.3(@babel/core@7.23.9) + '@babel/plugin-transform-typescript': 7.23.5(@babel/core@7.23.9) + '@babel/plugin-transform-unicode-regex': 7.23.3(@babel/core@7.23.9) '@babel/template': 7.22.15 react-refresh: 0.4.3 transitivePeerDependencies: @@ -13248,6 +13719,67 @@ packages: micromark-util-types: 2.0.0 dev: true + /micromark-extension-mdx-expression@3.0.0: + resolution: {integrity: sha512-sI0nwhUDz97xyzqJAbHQhp5TfaxEvZZZ2JDqUo+7NvyIYG6BZ5CPPqj2ogUoPJlmXHBnyZUzISg9+oUmU6tUjQ==} + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-factory-mdx-expression: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + dev: true + + /micromark-extension-mdx-jsx@3.0.0: + resolution: {integrity: sha512-uvhhss8OGuzR4/N17L1JwvmJIpPhAd8oByMawEKx6NVdBCbesjH4t+vjEp3ZXft9DwvlKSD07fCeI44/N0Vf2w==} + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + devlop: 1.1.0 + estree-util-is-identifier-name: 3.0.0 + micromark-factory-mdx-expression: 2.0.1 + micromark-factory-space: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 + dev: true + + /micromark-extension-mdx-md@2.0.0: + resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} + dependencies: + micromark-util-types: 2.0.0 + dev: true + + /micromark-extension-mdxjs-esm@3.0.0: + resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-core-commonmark: 2.0.0 + micromark-util-character: 2.0.1 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + dev: true + + /micromark-extension-mdxjs@3.0.0: + resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} + dependencies: + acorn: 8.11.2 + acorn-jsx: 5.3.2(acorn@8.11.2) + micromark-extension-mdx-expression: 3.0.0 + micromark-extension-mdx-jsx: 3.0.0 + micromark-extension-mdx-md: 2.0.0 + micromark-extension-mdxjs-esm: 3.0.0 + micromark-util-combine-extensions: 2.0.0 + micromark-util-types: 2.0.0 + dev: true + /micromark-factory-destination@2.0.0: resolution: {integrity: sha512-j9DGrQLm/Uhl2tCzcbLhy5kXsgkHUrjJHg4fFAeoMRwJmJerT9aw4FEhIbZStWN8A3qMwOp1uzHr4UL8AInxtA==} dependencies: @@ -13265,6 +13797,19 @@ packages: micromark-util-types: 2.0.0 dev: true + /micromark-factory-mdx-expression@2.0.1: + resolution: {integrity: sha512-F0ccWIUHRLRrYp5TC9ZYXmZo+p2AM13ggbsW4T0b5CRKP8KHVRB8t4pwtBgTxtjRmwrK0Irwm7vs2JOZabHZfg==} + dependencies: + '@types/estree': 1.0.5 + devlop: 1.1.0 + micromark-util-character: 2.0.1 + micromark-util-events-to-acorn: 2.0.2 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + unist-util-position-from-estree: 2.0.0 + vfile-message: 4.0.2 + dev: true + /micromark-factory-space@2.0.0: resolution: {integrity: sha512-TKr+LIDX2pkBJXFLzpyPyljzYK3MtmllMUMODTQJIUfDGncESaqB90db9IAUcz4AZAJFdd8U9zOp9ty1458rxg==} dependencies: @@ -13337,6 +13882,19 @@ packages: resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==} dev: true + /micromark-util-events-to-acorn@2.0.2: + resolution: {integrity: sha512-Fk+xmBrOv9QZnEDguL9OI9/NQQp6Hz4FuQ4YmCb/5V7+9eAh1s6AYSvL20kHkD67YIg7EpE54TiSlcsf3vyZgA==} + dependencies: + '@types/acorn': 4.0.6 + '@types/estree': 1.0.5 + '@types/unist': 3.0.2 + devlop: 1.1.0 + estree-util-visit: 2.0.0 + micromark-util-symbol: 2.0.0 + micromark-util-types: 2.0.0 + vfile-message: 4.0.2 + dev: true + /micromark-util-html-tag-name@2.0.0: resolution: {integrity: sha512-xNn4Pqkj2puRhKdKTm8t1YHC/BAjx6CEwRFXntTaRf/x16aqka6ouVoutm+QdkISTlT7e2zU7U4ZdlDLJd2Mcw==} dev: true @@ -13469,14 +14027,14 @@ packages: engines: {node: '>=4'} dev: true - /mini-css-extract-plugin@2.4.6(webpack@5.89.0): + /mini-css-extract-plugin@2.4.6(webpack@5.79.0): resolution: {integrity: sha512-khHpc29bdsE9EQiGSLqQieLyMbGca+bkC42/BBL1gXC8yAS0nHpOTUCBYUK6En1FuRdfE9wKXhGtsab8vmsugg==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: schema-utils: 4.2.0 - webpack: 5.89.0(@swc/core@1.3.23) + webpack: 5.79.0(@swc/core@1.3.96) dev: true /minimalistic-assert@1.0.1: @@ -13542,8 +14100,8 @@ packages: resolution: {integrity: sha512-OJB2uVAfhycX4teG/zEVpoThushQqLOx946XACDpVc6OQydiJWjn7djVzvNCbv0VOA7sbHGPQp/RkXD9vMCDEw==} dev: true - /miniprogram-compiler@0.2.2: - resolution: {integrity: sha512-fiJXv/15jCcRAU8YKcO7S7fkPKLa5ZBgpLN+d6B3r3KMktM5tAkDEQ+zm6aTfNoHurYOHcRyPyGf26gqQXlFXg==} + /miniprogram-compiler@0.2.3: + resolution: {integrity: sha512-/MfFiXTBUwYxnrTbj1hgwk1+qGkMCTL1zi8IReOq/0SPVkUxpx19E89w+ohYCELFXkMfVbD+6ejrHh3Y1u5sVg==} dependencies: glob: 7.2.3 unescape-js: 1.1.4 @@ -13559,7 +14117,7 @@ packages: csso: 3.5.1 j-component: 1.4.9 less: 3.13.1 - miniprogram-compiler: 0.2.2 + miniprogram-compiler: 0.2.3 postcss: 7.0.39 pretty-format: 26.6.2 dev: true @@ -13570,6 +14128,15 @@ packages: hasBin: true dev: true + /mlly@1.6.1: + resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} + dependencies: + acorn: 8.11.3 + pathe: 1.1.2 + pkg-types: 1.0.3 + ufo: 1.5.1 + dev: true + /mobile-detect@1.4.5: resolution: {integrity: sha512-yc0LhH6tItlvfLBugVUEtgawwFU2sIe+cSdmRJJCTMZ5GEJyLxNyC/NIOAOGk67Fa8GNpOttO3Xz/1bHpXFD/g==} @@ -13602,6 +14169,11 @@ packages: color-name: 1.1.4 dev: true + /mrmime@2.0.0: + resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==} + engines: {node: '>=10'} + dev: true + /ms@2.0.0: resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} dev: true @@ -13686,7 +14258,7 @@ packages: dependencies: debug: 3.2.7 iconv-lite: 0.6.3 - sax: 1.2.4 + sax: 1.3.0 transitivePeerDependencies: - supports-color dev: true @@ -13777,7 +14349,7 @@ packages: dependencies: hosted-git-info: 4.1.0 is-core-module: 2.13.1 - semver: 7.5.4 + semver: 7.6.0 validate-npm-package-license: 3.0.4 dev: true @@ -13846,7 +14418,7 @@ packages: pkg-dir: 5.0.0 preferred-pm: 3.1.2 rc-config-loader: 4.1.3 - semver: 7.5.4 + semver: 7.6.0 semver-diff: 3.1.1 strip-ansi: 6.0.1 text-table: 0.2.0 @@ -14009,6 +14581,16 @@ packages: mimic-fn: 4.0.0 dev: true + /open@10.0.3: + resolution: {integrity: sha512-dtbI5oW7987hwC9qjJTyABldTaa19SuyJse1QboWv3b0qCcrrLNVDqBx1XgELAjh9QTVQaP/C5b1nhQebd1H2A==} + engines: {node: '>=18'} + dependencies: + default-browser: 5.2.1 + define-lazy-prop: 3.0.0 + is-inside-container: 1.0.0 + is-wsl: 3.1.0 + dev: true + /open@8.4.2: resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} engines: {node: '>=12'} @@ -14054,18 +14636,18 @@ packages: strip-ansi: 6.0.1 wcwidth: 1.0.1 - /ora@7.0.1: - resolution: {integrity: sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==} - engines: {node: '>=16'} + /ora@8.0.1: + resolution: {integrity: sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==} + engines: {node: '>=18'} dependencies: chalk: 5.3.0 cli-cursor: 4.0.0 cli-spinners: 2.9.2 is-interactive: 2.0.0 - is-unicode-supported: 1.3.0 - log-symbols: 5.1.0 - stdin-discarder: 0.1.0 - string-width: 6.1.0 + is-unicode-supported: 2.0.0 + log-symbols: 6.0.0 + stdin-discarder: 0.2.2 + string-width: 7.0.0 strip-ansi: 7.1.0 dev: true @@ -14126,6 +14708,20 @@ packages: dependencies: yocto-queue: 0.1.0 + /p-limit@4.0.0: + resolution: {integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + yocto-queue: 1.0.0 + dev: true + + /p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} + dependencies: + yocto-queue: 1.0.0 + dev: true + /p-locate@3.0.0: resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==} engines: {node: '>=6'} @@ -14145,6 +14741,13 @@ packages: dependencies: p-limit: 3.1.0 + /p-locate@6.0.0: + resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + p-limit: 4.0.0 + dev: true + /p-map@3.0.0: resolution: {integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==} engines: {node: '>=8'} @@ -14179,8 +14782,8 @@ packages: agent-base: 7.1.0 debug: 4.3.4 get-uri: 6.0.2 - http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.2 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.4 pac-resolver: 7.0.0 socks-proxy-agent: 8.0.2 transitivePeerDependencies: @@ -14213,7 +14816,7 @@ packages: got: 12.6.1 registry-auth-token: 5.0.2 registry-url: 6.0.1 - semver: 7.5.4 + semver: 7.6.0 dev: true /param-case@2.1.1: @@ -14341,6 +14944,11 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + /path-exists@5.0.0: + resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dev: true + /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -14387,6 +14995,14 @@ packages: engines: {node: '>=12'} dev: true + /pathe@1.1.2: + resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} + dev: true + + /pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true + /pend@1.2.0: resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} @@ -14394,6 +15010,14 @@ packages: resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} dev: true + /periscopic@3.1.0: + resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} + dependencies: + '@types/estree': 1.0.5 + estree-walker: 3.0.3 + is-reference: 3.0.2 + dev: true + /picocolors@0.2.1: resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} dev: true @@ -14461,23 +15085,35 @@ packages: find-up: 5.0.0 dev: true + /pkg-types@1.0.3: + resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} + dependencies: + jsonc-parser: 3.2.1 + mlly: 1.6.1 + pathe: 1.1.2 + dev: true + + /platform@1.3.6: + resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==} + dev: false + /please-upgrade-node@3.2.0: resolution: {integrity: sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==} dependencies: semver-compare: 1.0.0 dev: true - /postcss-calc@8.2.4(postcss@8.4.32): + /postcss-calc@8.2.4(postcss@8.4.35): resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} peerDependencies: postcss: ^8.2.2 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 postcss-selector-parser: 6.0.13 postcss-value-parser: 4.2.0 dev: true - /postcss-colormin@5.3.1(postcss@8.4.32): + /postcss-colormin@5.3.1(postcss@8.4.35): resolution: {integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -14486,117 +15122,117 @@ packages: browserslist: 4.22.2 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.4.32 + postcss: 8.4.35 postcss-value-parser: 4.2.0 dev: true - /postcss-convert-values@5.1.3(postcss@8.4.32): + /postcss-convert-values@5.1.3(postcss@8.4.35): resolution: {integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: browserslist: 4.22.2 - postcss: 8.4.32 + postcss: 8.4.35 postcss-value-parser: 4.2.0 dev: true - /postcss-discard-comments@5.1.2(postcss@8.4.32): + /postcss-discard-comments@5.1.2(postcss@8.4.35): resolution: {integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 dev: true - /postcss-discard-duplicates@5.1.0(postcss@8.4.32): + /postcss-discard-duplicates@5.1.0(postcss@8.4.35): resolution: {integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 dev: true - /postcss-discard-empty@5.1.1(postcss@8.4.32): + /postcss-discard-empty@5.1.1(postcss@8.4.35): resolution: {integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 dev: true - /postcss-discard-overridden@5.1.0(postcss@8.4.32): + /postcss-discard-overridden@5.1.0(postcss@8.4.35): resolution: {integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 dev: true - /postcss-html-transform@3.6.18(postcss@8.4.32): - resolution: {integrity: sha512-Oj6/mhEwUehn138WDK2frIy73VDIuP04/9Lg7ChTFUeSmuqeVj0V3hSntQbLwxsLvz9ceuo1lsag2ECS5ImvZQ==} + /postcss-html-transform@3.6.22(postcss@8.4.35): + resolution: {integrity: sha512-jJUL7c4cJ7ySf6HSeqi3BP4OSvYEyDR2RWEuDs7DssQTPbxu+sGADOlLAVroFAnLAWteGg7vQNg883EGAw05Fg==} peerDependencies: postcss: ^8.4.18 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 dev: true - /postcss-import@14.1.0(postcss@8.4.32): + /postcss-import@14.1.0(postcss@8.4.35): resolution: {integrity: sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==} engines: {node: '>=10.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 dev: true - /postcss-import@15.1.0(postcss@8.4.32): - resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} - engines: {node: '>=14.0.0'} + /postcss-import@16.0.1(postcss@8.4.35): + resolution: {integrity: sha512-i2Pci0310NaLHr/5JUFSw1j/8hf1CzwMY13g6ZDxgOavmRHQi2ba3PmUHoihO+sjaum+KmCNzskNsw7JDrg03g==} + engines: {node: '>=18.0.0'} peerDependencies: postcss: ^8.0.0 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.8 dev: true - /postcss-loader@7.3.3(postcss@8.4.32)(typescript@4.9.5)(webpack@5.89.0): + /postcss-loader@7.3.3(postcss@8.4.35)(typescript@5.3.3)(webpack@5.79.0): resolution: {integrity: sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==} engines: {node: '>= 14.15.0'} peerDependencies: postcss: ^7.0.0 || ^8.0.1 webpack: ^5.0.0 dependencies: - cosmiconfig: 8.3.6(typescript@4.9.5) + cosmiconfig: 8.3.6(typescript@5.3.3) jiti: 1.21.0 - postcss: 8.4.32 - semver: 7.5.4 - webpack: 5.89.0(@swc/core@1.3.23) + postcss: 8.4.35 + semver: 7.6.0 + webpack: 5.79.0(@swc/core@1.3.96) transitivePeerDependencies: - typescript dev: true - /postcss-merge-longhand@5.1.7(postcss@8.4.32): + /postcss-merge-longhand@5.1.7(postcss@8.4.35): resolution: {integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 postcss-value-parser: 4.2.0 - stylehacks: 5.1.1(postcss@8.4.32) + stylehacks: 5.1.1(postcss@8.4.35) dev: true - /postcss-merge-rules@5.1.4(postcss@8.4.32): + /postcss-merge-rules@5.1.4(postcss@8.4.35): resolution: {integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -14604,231 +15240,231 @@ packages: dependencies: browserslist: 4.22.2 caniuse-api: 3.0.0 - cssnano-utils: 3.1.0(postcss@8.4.32) - postcss: 8.4.32 + cssnano-utils: 3.1.0(postcss@8.4.35) + postcss: 8.4.35 postcss-selector-parser: 6.0.13 dev: true - /postcss-minify-font-values@5.1.0(postcss@8.4.32): + /postcss-minify-font-values@5.1.0(postcss@8.4.35): resolution: {integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 postcss-value-parser: 4.2.0 dev: true - /postcss-minify-gradients@5.1.1(postcss@8.4.32): + /postcss-minify-gradients@5.1.1(postcss@8.4.35): resolution: {integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: colord: 2.9.3 - cssnano-utils: 3.1.0(postcss@8.4.32) - postcss: 8.4.32 + cssnano-utils: 3.1.0(postcss@8.4.35) + postcss: 8.4.35 postcss-value-parser: 4.2.0 dev: true - /postcss-minify-params@5.1.4(postcss@8.4.32): + /postcss-minify-params@5.1.4(postcss@8.4.35): resolution: {integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: browserslist: 4.22.2 - cssnano-utils: 3.1.0(postcss@8.4.32) - postcss: 8.4.32 + cssnano-utils: 3.1.0(postcss@8.4.35) + postcss: 8.4.35 postcss-value-parser: 4.2.0 dev: true - /postcss-minify-selectors@5.2.1(postcss@8.4.32): + /postcss-minify-selectors@5.2.1(postcss@8.4.35): resolution: {integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 postcss-selector-parser: 6.0.13 dev: true - /postcss-modules-extract-imports@3.0.0(postcss@8.4.32): + /postcss-modules-extract-imports@3.0.0(postcss@8.4.35): resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 dev: true - /postcss-modules-local-by-default@4.0.3(postcss@8.4.32): + /postcss-modules-local-by-default@4.0.3(postcss@8.4.35): resolution: {integrity: sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.32) - postcss: 8.4.32 + icss-utils: 5.1.0(postcss@8.4.35) + postcss: 8.4.35 postcss-selector-parser: 6.0.13 postcss-value-parser: 4.2.0 dev: true - /postcss-modules-scope@3.0.0(postcss@8.4.32): + /postcss-modules-scope@3.0.0(postcss@8.4.35): resolution: {integrity: sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 postcss-selector-parser: 6.0.13 dev: true - /postcss-modules-values@4.0.0(postcss@8.4.32): + /postcss-modules-values@4.0.0(postcss@8.4.35): resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.32) - postcss: 8.4.32 + icss-utils: 5.1.0(postcss@8.4.35) + postcss: 8.4.35 dev: true - /postcss-modules@6.0.0(postcss@8.4.32): + /postcss-modules@6.0.0(postcss@8.4.35): resolution: {integrity: sha512-7DGfnlyi/ju82BRzTIjWS5C4Tafmzl3R79YP/PASiocj+aa6yYphHhhKUOEoXQToId5rgyFgJ88+ccOUydjBXQ==} peerDependencies: postcss: ^8.0.0 dependencies: generic-names: 4.0.0 - icss-utils: 5.1.0(postcss@8.4.32) + icss-utils: 5.1.0(postcss@8.4.35) lodash.camelcase: 4.3.0 - postcss: 8.4.32 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.32) - postcss-modules-local-by-default: 4.0.3(postcss@8.4.32) - postcss-modules-scope: 3.0.0(postcss@8.4.32) - postcss-modules-values: 4.0.0(postcss@8.4.32) + postcss: 8.4.35 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.35) + postcss-modules-local-by-default: 4.0.3(postcss@8.4.35) + postcss-modules-scope: 3.0.0(postcss@8.4.35) + postcss-modules-values: 4.0.0(postcss@8.4.35) string-hash: 1.1.3 dev: true - /postcss-normalize-charset@5.1.0(postcss@8.4.32): + /postcss-normalize-charset@5.1.0(postcss@8.4.35): resolution: {integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 dev: true - /postcss-normalize-display-values@5.1.0(postcss@8.4.32): + /postcss-normalize-display-values@5.1.0(postcss@8.4.35): resolution: {integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 postcss-value-parser: 4.2.0 dev: true - /postcss-normalize-positions@5.1.1(postcss@8.4.32): + /postcss-normalize-positions@5.1.1(postcss@8.4.35): resolution: {integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 postcss-value-parser: 4.2.0 dev: true - /postcss-normalize-repeat-style@5.1.1(postcss@8.4.32): + /postcss-normalize-repeat-style@5.1.1(postcss@8.4.35): resolution: {integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 postcss-value-parser: 4.2.0 dev: true - /postcss-normalize-string@5.1.0(postcss@8.4.32): + /postcss-normalize-string@5.1.0(postcss@8.4.35): resolution: {integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 postcss-value-parser: 4.2.0 dev: true - /postcss-normalize-timing-functions@5.1.0(postcss@8.4.32): + /postcss-normalize-timing-functions@5.1.0(postcss@8.4.35): resolution: {integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 postcss-value-parser: 4.2.0 dev: true - /postcss-normalize-unicode@5.1.1(postcss@8.4.32): + /postcss-normalize-unicode@5.1.1(postcss@8.4.35): resolution: {integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: browserslist: 4.22.2 - postcss: 8.4.32 + postcss: 8.4.35 postcss-value-parser: 4.2.0 dev: true - /postcss-normalize-url@5.1.0(postcss@8.4.32): + /postcss-normalize-url@5.1.0(postcss@8.4.35): resolution: {integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: normalize-url: 6.1.0 - postcss: 8.4.32 + postcss: 8.4.35 postcss-value-parser: 4.2.0 dev: true - /postcss-normalize-whitespace@5.1.1(postcss@8.4.32): + /postcss-normalize-whitespace@5.1.1(postcss@8.4.35): resolution: {integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 postcss-value-parser: 4.2.0 dev: true - /postcss-ordered-values@5.1.3(postcss@8.4.32): + /postcss-ordered-values@5.1.3(postcss@8.4.35): resolution: {integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - cssnano-utils: 3.1.0(postcss@8.4.32) - postcss: 8.4.32 + cssnano-utils: 3.1.0(postcss@8.4.35) + postcss: 8.4.35 postcss-value-parser: 4.2.0 dev: true - /postcss-plugin-constparse@3.6.18(postcss@8.4.32): - resolution: {integrity: sha512-gaPKg38D5AIpA608v/DES/fw8Q7oxyQunh0Nn+B0CNUnb3Z/lCKiKapA0DJDwK06ZxibDqumfbEBzpeHd/hZ+Q==} + /postcss-plugin-constparse@3.6.22(postcss@8.4.35): + resolution: {integrity: sha512-0L/5aQ3D1dErdHYON13PBkCG3LQw4s/Pxr3fgYwEF5sjr/1huFEl22uj7J7eWQZuDOWiv9ksnZjxa7ZzOToxKQ==} peerDependencies: postcss: ^8.4.18 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 dev: true - /postcss-pxtransform@3.6.18(postcss@8.4.32): - resolution: {integrity: sha512-fFQH74ZJezshTye5St3cgnz33U5k1RUjjW9nP0zVLDypRQZuI9/bshi6VgurXRYMCVUWitCklzlvqyUUX76abw==} + /postcss-pxtransform@3.6.22(postcss@8.4.35): + resolution: {integrity: sha512-ihKDeZaL6euNOk1w61Rt/oNPPEH/Ts+yixq8HJUzSo5U6QMPnIzmRoml/ysXRd3+4x8TOh7+VF0G7o0tFX0SzA==} peerDependencies: postcss: ^8.4.18 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 dev: true - /postcss-reduce-initial@5.1.2(postcss@8.4.32): + /postcss-reduce-initial@5.1.2(postcss@8.4.35): resolution: {integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: @@ -14836,16 +15472,16 @@ packages: dependencies: browserslist: 4.22.2 caniuse-api: 3.0.0 - postcss: 8.4.32 + postcss: 8.4.35 dev: true - /postcss-reduce-transforms@5.1.0(postcss@8.4.32): + /postcss-reduce-transforms@5.1.0(postcss@8.4.35): resolution: {integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 postcss-value-parser: 4.2.0 dev: true @@ -14853,13 +15489,32 @@ packages: resolution: {integrity: sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==} dev: true - /postcss-safe-parser@7.0.0(postcss@8.4.32): + /postcss-rtlcss@5.1.0(postcss@8.4.35): + resolution: {integrity: sha512-FjZ8HPwr6dWR1Jzzz+TZqkEhkfLiR7sKgsHTDqrYGd51KtZdaDpdJ5aqHmqWoXZsSyJgBIkwZPt5JoEPvkX3Nw==} + engines: {node: '>=18.0.0'} + peerDependencies: + postcss: ^8.4.21 + dependencies: + postcss: 8.4.35 + rtlcss: 4.1.1 + dev: true + + /postcss-safe-parser@7.0.0(postcss@8.4.35): resolution: {integrity: sha512-ovehqRNVCpuFzbXoTb4qLtyzK3xn3t/CUBxOs8LsnQjQrShaB4lKiHoVqY8ANaC0hBMHq5QVWk77rwGklFUDrg==} engines: {node: '>=18.0'} peerDependencies: postcss: ^8.4.31 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 + dev: true + + /postcss-scss@4.0.9(postcss@8.4.35): + resolution: {integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.4.29 + dependencies: + postcss: 8.4.35 dev: true /postcss-selector-parser@6.0.13: @@ -14870,28 +15525,36 @@ packages: util-deprecate: 1.0.2 dev: true - /postcss-svgo@5.1.0(postcss@8.4.32): + /postcss-selector-parser@6.0.15: + resolution: {integrity: sha512-rEYkQOMUCEMhsKbK66tbEU9QVIxbhN18YiniAwA7XQYTVBqrBy+P2p5JcdqsHgKM2zWylp8d7J6eszocfds5Sw==} + engines: {node: '>=4'} + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: true + + /postcss-svgo@5.1.0(postcss@8.4.35): resolution: {integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 postcss-value-parser: 4.2.0 svgo: 2.8.0 dev: true - /postcss-unique-selectors@5.1.1(postcss@8.4.32): + /postcss-unique-selectors@5.1.1(postcss@8.4.35): resolution: {integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: - postcss: 8.4.32 + postcss: 8.4.35 postcss-selector-parser: 6.0.13 dev: true - /postcss-url@10.1.3(postcss@8.4.32): + /postcss-url@10.1.3(postcss@8.4.35): resolution: {integrity: sha512-FUzyxfI5l2tKmXdYc6VTu3TWZsInayEKPbiyW+P6vmmIrrb4I6CGX0BFoewgYHLK+oIL5FECEK02REYRpBvUCw==} engines: {node: '>=10'} peerDependencies: @@ -14900,7 +15563,7 @@ packages: make-dir: 3.1.0 mime: 2.5.2 minimatch: 3.0.8 - postcss: 8.4.32 + postcss: 8.4.35 xxhashjs: 0.2.2 dev: true @@ -14916,8 +15579,8 @@ packages: source-map: 0.6.1 dev: true - /postcss@8.4.32: - resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} + /postcss@8.4.35: + resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 @@ -14959,8 +15622,8 @@ packages: dev: true optional: true - /prettier@3.1.0: - resolution: {integrity: sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==} + /prettier@3.2.5: + resolution: {integrity: sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==} engines: {node: '>=14'} hasBin: true dev: true @@ -15089,14 +15752,14 @@ packages: ipaddr.js: 1.9.1 dev: true - /proxy-agent@6.3.1: - resolution: {integrity: sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==} + /proxy-agent@6.4.0: + resolution: {integrity: sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==} engines: {node: '>= 14'} dependencies: agent-base: 7.1.0 debug: 4.3.4 - http-proxy-agent: 7.0.0 - https-proxy-agent: 7.0.2 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.4 lru-cache: 7.18.3 pac-proxy-agent: 7.0.1 proxy-from-env: 1.1.0 @@ -15284,14 +15947,14 @@ packages: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} dev: true - /react-markdown@9.0.1(@types/react@18.2.42)(react@18.2.0): + /react-markdown@9.0.1(@types/react@18.2.57)(react@18.2.0): resolution: {integrity: sha512-186Gw/vF1uRkydbsOIkcGXw7aHq0sZOCRFFjGrr7b9+nVZg4UfA4enXCaxm4fUzecU38sWfrNDitGhshuU7rdg==} peerDependencies: - '@types/react': '18' + '@types/react': ^18.2.57 react: '>=18' dependencies: '@types/hast': 3.0.3 - '@types/react': 18.2.42 + '@types/react': 18.2.57 devlop: 1.1.0 hast-util-to-jsx-runtime: 2.3.0 html-url-attributes: 3.0.0 @@ -15330,26 +15993,26 @@ packages: engines: {node: '>=0.10.0'} dev: true - /react-router-dom@6.20.1(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-npzfPWcxfQN35psS7rJgi/EW0Gx6EsNjfdJSAk73U/HqMEJZ2k/8puxfwHFgDQhBGmS3+sjnGbMdMSV45axPQw==} + /react-router-dom@6.22.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-iwMyyyrbL7zkKY7MRjOVRy+TMnS/OPusaFVxM2P11x9dzSzGmLsebkCvYirGq0DWB9K9hOspHYYtDz33gE5Duw==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - '@remix-run/router': 1.13.1 + '@remix-run/router': 1.15.1 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) - react-router: 6.20.1(react@18.2.0) + react-router: 6.22.1(react@18.2.0) dev: true - /react-router@6.20.1(react@18.2.0): - resolution: {integrity: sha512-ccvLrB4QeT5DlaxSFFYi/KR8UMQ4fcD8zBcR71Zp1kaYTC5oJKYAp1cbavzGrogwxca+ubjkd7XjFZKBW8CxPA==} + /react-router@6.22.1(react@18.2.0): + resolution: {integrity: sha512-0pdoRGwLtemnJqn1K0XHUbnKiX0S4X8CgvVVmHGOWmofESj31msHo/1YiqcJWK7Wxfq2a4uvvtS01KAQyWK/CQ==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' dependencies: - '@remix-run/router': 1.13.1 + '@remix-run/router': 1.15.1 react: 18.2.0 dev: true @@ -15368,7 +16031,7 @@ packages: peerDependencies: react: '>= 0.14.0' dependencies: - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.23.9 highlight.js: 10.7.3 lowlight: 1.20.0 prismjs: 1.29.0 @@ -15393,7 +16056,7 @@ packages: react: '>=16.6.0' react-dom: '>=16.6.0' dependencies: - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.23.9 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -15542,7 +16205,7 @@ packages: /regenerator-transform@0.15.2: resolution: {integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==} dependencies: - '@babel/runtime': 7.23.5 + '@babel/runtime': 7.23.9 /regex-parser@2.2.11: resolution: {integrity: sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==} @@ -15607,8 +16270,8 @@ packages: engines: {node: '>= 0.10'} dev: true - /release-it@17.0.0(typescript@4.9.5): - resolution: {integrity: sha512-1A1sSQy8VXuAJcslZGhKtOD/LVBuf1sH4XqhKsQuh+2EIksC2STx/MdKmVE86jFd/zorHTXOpl7Lr/isD0dDrg==} + /release-it@17.1.1(typescript@5.3.3): + resolution: {integrity: sha512-b+4Tu2eb5f2wIdIe5E9hre0evbMQrXp/kRq0natHsHYJVqu1Bd4/h2a+swFi0faGmC3cJdB16uYR6LscG9SchQ==} engines: {node: '>=18'} hasBin: true dependencies: @@ -15616,24 +16279,24 @@ packages: '@octokit/rest': 20.0.2 async-retry: 1.3.3 chalk: 5.3.0 - cosmiconfig: 8.3.6(typescript@4.9.5) + cosmiconfig: 9.0.0(typescript@5.3.3) execa: 8.0.1 - git-url-parse: 13.1.1 - globby: 14.0.0 + git-url-parse: 14.0.0 + globby: 14.0.1 got: 13.0.0 - inquirer: 9.2.12 + inquirer: 9.2.14 is-ci: 3.0.1 issue-parser: 6.0.0 lodash: 4.17.21 mime-types: 2.1.35 new-github-release-url: 2.0.0 node-fetch: 3.3.2 - open: 9.1.0 - ora: 7.0.1 + open: 10.0.3 + ora: 8.0.1 os-name: 5.1.0 promise.allsettled: 1.0.7 - proxy-agent: 6.3.1 - semver: 7.5.4 + proxy-agent: 6.4.0 + semver: 7.6.0 shelljs: 0.8.5 update-notifier: 7.0.0 url-join: 5.0.0 @@ -15668,6 +16331,15 @@ packages: - supports-color dev: true + /remark-mdx@3.0.1: + resolution: {integrity: sha512-3Pz3yPQ5Rht2pM5R+0J2MrGoBSrzf+tJG94N+t/ilfdh8YLyyKYtidAYwTveB20BoHAcwIopOUqhcmh2F7hGYA==} + dependencies: + mdast-util-mdx: 3.0.0 + micromark-extension-mdxjs: 3.0.0 + transitivePeerDependencies: + - supports-color + dev: true + /remark-parse@11.0.0: resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} dependencies: @@ -15711,11 +16383,6 @@ packages: strip-ansi: 6.0.1 dev: true - /replace-ext@1.0.1: - resolution: {integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==} - engines: {node: '>= 0.10'} - dev: true - /replace-ext@2.0.0: resolution: {integrity: sha512-UszKE5KVK6JvyD92nzMn9cDapSk6w/CaFZ96CnmDMUqH9oowfxF/ZjRITD25H4DnOQClLA4/j7jLGXXLVKxAug==} engines: {node: '>= 10'} @@ -15794,13 +16461,6 @@ packages: engines: {node: '>=8'} dev: true - /resolve-global@1.0.0: - resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} - engines: {node: '>=8'} - dependencies: - global-dirs: 0.1.1 - dev: true - /resolve-options@2.0.0: resolution: {integrity: sha512-/FopbmmFOQCfsCx77BRFdKOniglTiHumLgwvd6IDPihy1GKkadZbgQJBcTb2lMzSR1pndzd96b1nZrreZ7+9/A==} engines: {node: '>= 10.13.0'} @@ -15818,7 +16478,7 @@ packages: adjust-sourcemap-loader: 4.0.0 convert-source-map: 1.9.0 loader-utils: 2.0.4 - postcss: 8.4.32 + postcss: 8.4.35 source-map: 0.6.1 dev: true @@ -15913,6 +16573,14 @@ packages: glob: 7.2.3 dev: true + /rimraf@5.0.5: + resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} + engines: {node: '>=14'} + hasBin: true + dependencies: + glob: 10.3.10 + dev: true + /rollup-plugin-delete@2.0.0: resolution: {integrity: sha512-/VpLMtDy+8wwRlDANuYmDa9ss/knGsAgrDhM+tEwB1npHwNu4DYNmDfUL55csse/GHs9Q+SMT/rw9uiaZ3pnzA==} engines: {node: '>=10'} @@ -15920,7 +16588,7 @@ packages: del: 5.1.0 dev: true - /rollup-plugin-dts@6.1.0(rollup@4.6.1)(typescript@4.9.5): + /rollup-plugin-dts@6.1.0(rollup@4.12.0)(typescript@5.3.3): resolution: {integrity: sha512-ijSCPICkRMDKDLBK9torss07+8dl9UpY9z1N/zTeA1cIqdzMlpkV3MOOC7zukyvQfDyxa1s3Dl2+DeiP/G6DOw==} engines: {node: '>=16'} peerDependencies: @@ -15928,29 +16596,32 @@ packages: typescript: ^4.5 || ^5.0 dependencies: magic-string: 0.30.5 - rollup: 4.6.1 - typescript: 4.9.5 + rollup: 4.12.0 + typescript: 5.3.3 optionalDependencies: '@babel/code-frame': 7.23.5 dev: true - /rollup@4.6.1: - resolution: {integrity: sha512-jZHaZotEHQaHLgKr8JnQiDT1rmatjgKlMekyksz+yk9jt/8z9quNjnKNRoaM0wd9DC2QKXjmWWuDYtM3jfF8pQ==} + /rollup@4.12.0: + resolution: {integrity: sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + dependencies: + '@types/estree': 1.0.5 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.6.1 - '@rollup/rollup-android-arm64': 4.6.1 - '@rollup/rollup-darwin-arm64': 4.6.1 - '@rollup/rollup-darwin-x64': 4.6.1 - '@rollup/rollup-linux-arm-gnueabihf': 4.6.1 - '@rollup/rollup-linux-arm64-gnu': 4.6.1 - '@rollup/rollup-linux-arm64-musl': 4.6.1 - '@rollup/rollup-linux-x64-gnu': 4.6.1 - '@rollup/rollup-linux-x64-musl': 4.6.1 - '@rollup/rollup-win32-arm64-msvc': 4.6.1 - '@rollup/rollup-win32-ia32-msvc': 4.6.1 - '@rollup/rollup-win32-x64-msvc': 4.6.1 + '@rollup/rollup-android-arm-eabi': 4.12.0 + '@rollup/rollup-android-arm64': 4.12.0 + '@rollup/rollup-darwin-arm64': 4.12.0 + '@rollup/rollup-darwin-x64': 4.12.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.12.0 + '@rollup/rollup-linux-arm64-gnu': 4.12.0 + '@rollup/rollup-linux-arm64-musl': 4.12.0 + '@rollup/rollup-linux-riscv64-gnu': 4.12.0 + '@rollup/rollup-linux-x64-gnu': 4.12.0 + '@rollup/rollup-linux-x64-musl': 4.12.0 + '@rollup/rollup-win32-arm64-msvc': 4.12.0 + '@rollup/rollup-win32-ia32-msvc': 4.12.0 + '@rollup/rollup-win32-x64-msvc': 4.12.0 fsevents: 2.3.3 dev: true @@ -15958,6 +16629,17 @@ packages: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} dev: true + /rtlcss@4.1.1: + resolution: {integrity: sha512-/oVHgBtnPNcggP2aVXQjSy6N1mMAfHg4GSag0QtZBlD5bdDgAHwr4pydqJGd+SUCu9260+Pjqbjwtvu7EMH1KQ==} + engines: {node: '>=12.0.0'} + hasBin: true + dependencies: + escalade: 3.1.1 + picocolors: 1.0.0 + postcss: 8.4.35 + strip-json-comments: 3.1.1 + dev: true + /run-applescript@5.0.0: resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} engines: {node: '>=12'} @@ -15965,6 +16647,11 @@ packages: execa: 5.1.1 dev: true + /run-applescript@7.0.0: + resolution: {integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==} + engines: {node: '>=18'} + dev: true + /run-async@2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -16023,7 +16710,7 @@ packages: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} dev: true - /sass-loader@12.4.0(sass@1.50.0)(webpack@5.89.0): + /sass-loader@12.4.0(sass@1.50.0)(webpack@5.79.0): resolution: {integrity: sha512-7xN+8khDIzym1oL9XyS6zP6Ges+Bo2B2xbPrjdMHEYyV3AQYhd/wXeru++3ODHF0zMjYmVadblSKrPrjEkL8mg==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -16042,7 +16729,7 @@ packages: klona: 2.0.6 neo-async: 2.6.2 sass: 1.50.0 - webpack: 5.89.0(@swc/core@1.3.23) + webpack: 5.79.0(@swc/core@1.3.96) dev: true /sass@1.50.0: @@ -16055,8 +16742,8 @@ packages: source-map-js: 1.0.2 dev: true - /sass@1.69.5: - resolution: {integrity: sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==} + /sass@1.71.1: + resolution: {integrity: sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==} engines: {node: '>=14.0.0'} hasBin: true dependencies: @@ -16137,7 +16824,7 @@ packages: loglevel: 1.8.1 loglevel-plugin-prefix: 0.8.4 pretty-bytes: 5.6.0 - sass: 1.69.5 + sass: 1.71.1 tslib: 1.14.1 dev: true @@ -16175,7 +16862,7 @@ packages: resolution: {integrity: sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==} engines: {node: '>=12'} dependencies: - semver: 7.5.4 + semver: 7.6.0 dev: true /semver@5.7.2: @@ -16194,6 +16881,14 @@ packages: lru-cache: 6.0.0 dev: true + /semver@7.6.0: + resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} + engines: {node: '>=10'} + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: true + /send@0.18.0: resolution: {integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==} engines: {node: '>= 0.8.0'} @@ -16315,6 +17010,10 @@ packages: object-inspect: 1.13.1 dev: true + /siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true + /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -16323,6 +17022,15 @@ packages: engines: {node: '>=14'} dev: true + /sirv@2.0.4: + resolution: {integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==} + engines: {node: '>= 10'} + dependencies: + '@polka/url': 1.0.0-next.25 + mrmime: 2.0.0 + totalist: 3.0.1 + dev: true + /sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} dev: true @@ -16529,12 +17237,6 @@ packages: resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==} engines: {node: '>=6'} - /split2@3.2.2: - resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} - dependencies: - readable-stream: 3.6.2 - dev: true - /split2@4.2.0: resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} engines: {node: '>= 10.x'} @@ -16575,6 +17277,10 @@ packages: escape-string-regexp: 2.0.0 dev: true + /stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true + /stackframe@1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} @@ -16592,11 +17298,9 @@ packages: resolution: {integrity: sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==} dev: true - /stdin-discarder@0.1.0: - resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - bl: 5.1.0 + /stdin-discarder@0.2.2: + resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} + engines: {node: '>=18'} dev: true /stop-iteration-iterator@1.0.0: @@ -16663,15 +17367,6 @@ packages: strip-ansi: 7.1.0 dev: true - /string-width@6.1.0: - resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==} - engines: {node: '>=16'} - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 10.3.0 - strip-ansi: 7.1.0 - dev: true - /string-width@7.0.0: resolution: {integrity: sha512-GPQHj7row82Hjo9hKZieKcHIhaAIKOJvFSIZXuCU9OASVZrMNUaZuz++SPVrBjnLsnk4k+z9f2EIypgxf2vNFw==} engines: {node: '>=18'} @@ -16755,28 +17450,6 @@ packages: ansi-regex: 6.0.1 dev: true - /strip-bom-buf@1.0.0: - resolution: {integrity: sha512-1sUIL1jck0T1mhOLP2c696BIznzT525Lkub+n4jjMHjhjhoAQA6Ye659DxdlZBr0aLDMQoTxKIpnlqxgtwjsuQ==} - engines: {node: '>=4'} - dependencies: - is-utf8: 0.2.1 - dev: true - - /strip-bom-stream@2.0.0: - resolution: {integrity: sha512-yH0+mD8oahBZWnY43vxs4pSinn8SMKAdml/EOGBewoe1Y0Eitd0h2Mg3ZRiXruUW6L4P+lvZiEgbh0NgUGia1w==} - engines: {node: '>=0.10.0'} - dependencies: - first-chunk-stream: 2.0.0 - strip-bom: 2.0.0 - dev: true - - /strip-bom@2.0.0: - resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==} - engines: {node: '>=0.10.0'} - dependencies: - is-utf8: 0.2.1 - dev: true - /strip-bom@3.0.0: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} @@ -16825,6 +17498,12 @@ packages: engines: {node: '>=8'} dev: true + /strip-literal@2.0.0: + resolution: {integrity: sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==} + dependencies: + js-tokens: 8.0.3 + dev: true + /strip-outer@1.0.1: resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==} engines: {node: '>=0.10.0'} @@ -16832,13 +17511,19 @@ packages: escape-string-regexp: 1.0.5 dev: true - /style-loader@3.3.1(webpack@5.89.0): + /style-loader@3.3.1(webpack@5.79.0): resolution: {integrity: sha512-GPcQ+LDJbrcxHORTRes6Jy2sfvK2kS6hpSfI/fXhPt+spVzxF6LJ1dHLN9zIGmVaaP044YKaIatFaufENRiDoQ==} engines: {node: '>= 12.13.0'} peerDependencies: webpack: ^5.0.0 dependencies: - webpack: 5.89.0(@swc/core@1.3.23) + webpack: 5.79.0(@swc/core@1.3.96) + dev: true + + /style-to-object@0.4.4: + resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} + dependencies: + inline-style-parser: 0.1.1 dev: true /style-to-object@1.0.5: @@ -16847,35 +17532,35 @@ packages: inline-style-parser: 0.2.2 dev: true - /stylehacks@5.1.1(postcss@8.4.32): + /stylehacks@5.1.1(postcss@8.4.35): resolution: {integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==} engines: {node: ^10 || ^12 || >=14.0} peerDependencies: postcss: ^8.2.15 dependencies: browserslist: 4.22.2 - postcss: 8.4.32 + postcss: 8.4.35 postcss-selector-parser: 6.0.13 dev: true - /stylelint@16.0.1(typescript@4.9.5): - resolution: {integrity: sha512-nPO7f7JBxX0gPwdQs1fBQL+b0PabHykxSQ9HtpobbtV7pe2lb/nmlqxKepPUwHJTi9P9iu+Hkwt1mdmOnkkTVw==} + /stylelint@16.2.1(typescript@5.3.3): + resolution: {integrity: sha512-SfIMGFK+4n7XVAyv50CpVfcGYWG4v41y6xG7PqOgQSY8M/PgdK0SQbjWFblxjJZlN9jNq879mB4BCZHJRIJ1hA==} engines: {node: '>=18.12.0'} hasBin: true dependencies: - '@csstools/css-parser-algorithms': 2.3.2(@csstools/css-tokenizer@2.2.1) - '@csstools/css-tokenizer': 2.2.1 - '@csstools/media-query-list-parser': 2.1.5(@csstools/css-parser-algorithms@2.3.2)(@csstools/css-tokenizer@2.2.1) - '@csstools/selector-specificity': 3.0.0(postcss-selector-parser@6.0.13) + '@csstools/css-parser-algorithms': 2.6.0(@csstools/css-tokenizer@2.2.3) + '@csstools/css-tokenizer': 2.2.3 + '@csstools/media-query-list-parser': 2.1.8(@csstools/css-parser-algorithms@2.6.0)(@csstools/css-tokenizer@2.2.3) + '@csstools/selector-specificity': 3.0.2(postcss-selector-parser@6.0.15) balanced-match: 2.0.0 colord: 2.9.3 - cosmiconfig: 9.0.0(typescript@4.9.5) + cosmiconfig: 9.0.0(typescript@5.3.3) css-functions-list: 3.2.1 css-tree: 2.3.1 debug: 4.3.4 fast-glob: 3.3.2 fastest-levenshtein: 1.0.16 - file-entry-cache: 7.0.2 + file-entry-cache: 8.0.0 global-modules: 2.0.0 globby: 11.1.0 globjoin: 0.1.4 @@ -16885,14 +17570,14 @@ packages: is-plain-object: 5.0.0 known-css-properties: 0.29.0 mathml-tag-names: 2.1.3 - meow: 12.1.1 + meow: 13.2.0 micromatch: 4.0.5 normalize-path: 3.0.0 picocolors: 1.0.0 - postcss: 8.4.32 + postcss: 8.4.35 postcss-resolve-nested-selector: 0.1.1 - postcss-safe-parser: 7.0.0(postcss@8.4.32) - postcss-selector-parser: 6.0.13 + postcss-safe-parser: 7.0.0(postcss@8.4.35) + postcss-selector-parser: 6.0.15 postcss-value-parser: 4.2.0 resolve-from: 5.0.0 string-width: 4.2.3 @@ -16906,7 +17591,7 @@ packages: - typescript dev: true - /stylus-loader@6.2.0(stylus@0.55.0)(webpack@5.89.0): + /stylus-loader@6.2.0(stylus@0.55.0)(webpack@5.79.0): resolution: {integrity: sha512-5dsDc7qVQGRoc6pvCL20eYgRUxepZ9FpeK28XhdXaIPP6kXr6nI1zAAKFQgP5OBkOfKaURp4WUpJzspg1f01Gg==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -16917,7 +17602,7 @@ packages: klona: 2.0.6 normalize-path: 3.0.0 stylus: 0.55.0 - webpack: 5.89.0(@swc/core@1.3.23) + webpack: 5.79.0(@swc/core@1.3.96) dev: true /stylus@0.55.0: @@ -16939,6 +17624,7 @@ packages: /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} + requiresBuild: true dependencies: has-flag: 3.0.0 @@ -17055,7 +17741,31 @@ packages: dependencies: rimraf: 2.6.3 - /terser-webpack-plugin@5.3.9(@swc/core@1.3.23)(esbuild@0.14.54)(webpack@5.89.0): + /terser-webpack-plugin@5.3.10(@swc/core@1.3.96)(webpack@5.79.0): + resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} + engines: {node: '>= 10.13.0'} + peerDependencies: + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 + peerDependenciesMeta: + '@swc/core': + optional: true + esbuild: + optional: true + uglify-js: + optional: true + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + '@swc/core': 1.3.96 + jest-worker: 27.5.1 + schema-utils: 3.3.0 + serialize-javascript: 6.0.1 + terser: 5.27.2 + webpack: 5.79.0(@swc/core@1.3.96) + + /terser-webpack-plugin@5.3.9(@swc/core@1.3.96)(esbuild@0.19.8)(webpack@5.79.0): resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -17072,13 +17782,14 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.20 - '@swc/core': 1.3.23 - esbuild: 0.14.54 + '@swc/core': 1.3.96 + esbuild: 0.19.8 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 terser: 5.25.0 - webpack: 5.89.0(@swc/core@1.3.23) + webpack: 5.79.0(@swc/core@1.3.96) + dev: true /terser@5.25.0: resolution: {integrity: sha512-we0I9SIsfvNUMP77zC9HG+MylwYYsGFSBG8qm+13oud2Yh+O104y614FRbyjpxys16jZwot72Fpi827YvGzuqg==} @@ -17089,6 +17800,17 @@ packages: acorn: 8.11.2 commander: 2.20.3 source-map-support: 0.5.21 + dev: true + + /terser@5.27.2: + resolution: {integrity: sha512-sHXmLSkImesJ4p5apTeT63DsV4Obe1s37qT8qvwHRmVxKTBH7Rv9Wr26VcAMmLbmk9UliiwK8z+657NyJHHy/w==} + engines: {node: '>=10'} + hasBin: true + dependencies: + '@jridgewell/source-map': 0.3.5 + acorn: 8.11.2 + commander: 2.20.3 + source-map-support: 0.5.21 /test-exclude@6.0.0: resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} @@ -17108,11 +17830,6 @@ packages: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} dev: true - /textextensions@5.16.0: - resolution: {integrity: sha512-7D/r3s6uPZyU//MCYrX6I14nzauDwJ5CxazouuRGNuvSCihW87ufN6VLoROLCrHg6FblLuJrT6N2BVaPVzqElw==} - engines: {node: '>=0.8'} - dev: true - /thenify-all@1.6.0: resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} engines: {node: '>=0.8'} @@ -17130,12 +17847,6 @@ packages: resolution: {integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==} dev: true - /through2@4.0.2: - resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} - dependencies: - readable-stream: 3.6.2 - dev: true - /through@2.3.8: resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} dev: true @@ -17153,10 +17864,24 @@ packages: resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==} dev: false + /tinybench@2.6.0: + resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} + dev: true + /tinycolor2@1.6.0: resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} dev: true + /tinypool@0.8.2: + resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} + engines: {node: '>=14.0.0'} + dev: true + + /tinyspy@2.2.1: + resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==} + engines: {node: '>=14.0.0'} + dev: true + /titleize@3.0.0: resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} engines: {node: '>=12'} @@ -17208,6 +17933,11 @@ packages: resolution: {integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==} dev: false + /totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + dev: true + /tough-cookie@2.5.0: resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==} engines: {node: '>=0.8'} @@ -17226,13 +17956,6 @@ packages: url-parse: 1.5.10 dev: true - /tr46@3.0.0: - resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} - engines: {node: '>=12'} - dependencies: - punycode: 2.3.1 - dev: true - /tr46@4.1.1: resolution: {integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==} engines: {node: '>=14'} @@ -17260,18 +17983,18 @@ packages: resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==} dev: true - /ts-api-utils@1.0.3(typescript@4.9.5): + /ts-api-utils@1.0.3(typescript@5.3.3): resolution: {integrity: sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==} engines: {node: '>=16.13.0'} peerDependencies: typescript: '>=4.2.0' dependencies: - typescript: 4.9.5 + typescript: 5.3.3 dev: true - /ts-jest@29.1.1(@babel/core@7.23.5)(jest@29.7.0)(typescript@4.9.5): - resolution: {integrity: sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + /ts-jest@29.1.2(@babel/core@7.23.9)(jest@29.7.0)(typescript@5.3.3): + resolution: {integrity: sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==} + engines: {node: ^16.10.0 || ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: '@babel/core': '>=7.0.0-beta.0 <8' @@ -17290,21 +18013,21 @@ packages: esbuild: optional: true dependencies: - '@babel/core': 7.23.5 + '@babel/core': 7.23.9 bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 29.7.0(@types/node@20.10.4)(ts-node@10.9.1) + jest: 29.7.0(@types/node@20.11.19)(ts-node@10.9.2) jest-util: 29.7.0 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 semver: 7.5.4 - typescript: 4.9.5 + typescript: 5.3.3 yargs-parser: 21.1.1 dev: true - /ts-node@10.9.1(@swc/core@1.3.23)(@types/node@20.10.4)(typescript@4.9.5): - resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==} + /ts-node@10.9.2(@swc/core@1.3.96)(@types/node@20.11.19)(typescript@5.3.3): + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: '@swc/core': '>=1.2.50' @@ -17318,25 +18041,25 @@ packages: optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 - '@swc/core': 1.3.23 + '@swc/core': 1.3.96 '@tsconfig/node10': 1.0.9 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 20.10.4 + '@types/node': 20.11.19 acorn: 8.11.2 acorn-walk: 8.3.1 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 make-error: 1.3.6 - typescript: 4.9.5 + typescript: 5.3.3 v8-compile-cache-lib: 3.0.1 yn: 3.1.1 dev: true - /tsconfig-paths@3.14.2: - resolution: {integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==} + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} dependencies: '@types/json5': 0.0.29 json5: 1.0.2 @@ -17351,14 +18074,14 @@ packages: /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} - /tsutils@3.21.0(typescript@4.9.5): + /tsutils@3.21.0(typescript@5.3.3): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 4.9.5 + typescript: 5.3.3 dev: true /tunnel-agent@0.6.0: @@ -17483,15 +18206,9 @@ packages: is-typedarray: 1.0.0 dev: true - /typescript@4.9.5: - resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: true - - /typescript@5.0.4: - resolution: {integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==} - engines: {node: '>=12.20'} + /typescript@5.3.3: + resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} + engines: {node: '>=14.17'} hasBin: true dev: true @@ -17499,6 +18216,10 @@ packages: resolution: {integrity: sha512-DffL94LsNOccVn4hyfRe5rdKa273swqeA5DJpMOeFmEn1wCDc7nAbbB0gXlgBCL7TNzeTv6G7XVWzan7iJtfig==} dev: true + /ufo@1.5.1: + resolution: {integrity: sha512-HGyF79+/qZ4soRvM+nHERR2pJ3VXDZ/8sL1uLahdgEDf580NkgiWOxLk33FetExqOWp352JZRsgXbG/4MaGOSg==} + dev: true + /uglify-js@3.17.4: resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} engines: {node: '>=0.8.0'} @@ -17586,6 +18307,12 @@ packages: '@types/unist': 3.0.2 dev: true + /unist-util-position-from-estree@2.0.0: + resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} + dependencies: + '@types/unist': 3.0.2 + dev: true + /unist-util-position@5.0.0: resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} dependencies: @@ -17684,7 +18411,7 @@ packages: is-yarn-global: 0.3.0 latest-version: 5.1.0 pupa: 2.1.1 - semver: 7.5.4 + semver: 7.6.0 semver-diff: 3.1.1 xdg-basedir: 4.0.0 dev: true @@ -17702,7 +18429,7 @@ packages: is-npm: 6.0.0 latest-version: 7.0.0 pupa: 3.1.0 - semver: 7.5.4 + semver: 7.6.0 semver-diff: 4.0.0 xdg-basedir: 5.1.0 dev: true @@ -17733,7 +18460,7 @@ packages: engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} dev: true - /url-loader@4.1.0(file-loader@6.0.0)(webpack@5.89.0): + /url-loader@4.1.0(file-loader@6.0.0)(webpack@5.79.0): resolution: {integrity: sha512-IzgAAIC8wRrg6NYkFIJY09vtktQcsvU8V6HhtQj9PTefbYImzLB1hufqo4m+RyM5N3mLx5BqJKccgxJS+W3kqw==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -17743,11 +18470,11 @@ packages: file-loader: optional: true dependencies: - file-loader: 6.0.0(webpack@5.89.0) + file-loader: 6.0.0(webpack@5.79.0) loader-utils: 2.0.4 mime-types: 2.1.35 schema-utils: 2.7.1 - webpack: 5.89.0(@swc/core@1.3.23) + webpack: 5.79.0(@swc/core@1.3.96) dev: true /url-parse-lax@3.0.0: @@ -17883,17 +18610,6 @@ packages: vinyl: 3.0.0 dev: true - /vinyl-file@3.0.0: - resolution: {integrity: sha512-BoJDj+ca3D9xOuPEM6RWVtWQtvEPQiQYn82LvdxhLWplfQsBzBqtgK0yhCP0s1BNTi6dH9BO+dzybvyQIacifg==} - engines: {node: '>=4'} - dependencies: - graceful-fs: 4.2.11 - pify: 2.3.0 - strip-bom-buf: 1.0.0 - strip-bom-stream: 2.0.0 - vinyl: 2.2.1 - dev: true - /vinyl-fs@4.0.0: resolution: {integrity: sha512-7GbgBnYfaquMk3Qu9g22x000vbYkOex32930rBnc3qByw6HfMEAoELjCjoJv4HuEQxHAurT+nvMHm6MnJllFLw==} engines: {node: '>=10.13.0'} @@ -17926,18 +18642,6 @@ packages: vinyl-contents: 2.0.0 dev: true - /vinyl@2.2.1: - resolution: {integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==} - engines: {node: '>= 0.10'} - dependencies: - clone: 2.1.2 - clone-buffer: 1.0.0 - clone-stats: 1.0.0 - cloneable-readable: 1.1.3 - remove-trailing-separator: 1.1.0 - replace-ext: 1.0.1 - dev: true - /vinyl@3.0.0: resolution: {integrity: sha512-rC2VRfAVVCGEgjnxHUnpIVh3AGuk62rP3tqVrn+yab0YH7UULisC085+NYH+mnqf3Wx4SpSi1RQMwudL89N03g==} engines: {node: '>=10.13.0'} @@ -17949,7 +18653,28 @@ packages: teex: 1.0.1 dev: true - /vite-plugin-dts@3.6.4(@types/node@20.10.4)(rollup@4.6.1)(typescript@4.9.5)(vite@5.0.6): + /vite-node@1.4.0(@types/node@20.11.19)(sass@1.71.1): + resolution: {integrity: sha512-VZDAseqjrHgNd4Kh8icYHWzTKSCZMhia7GyHfhtzLW33fZlG9SwsB6CEhgyVOWkJfJ2pFLrp/Gj1FSfAiqH9Lw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + dependencies: + cac: 6.7.14 + debug: 4.3.4 + pathe: 1.1.2 + picocolors: 1.0.0 + vite: 5.1.3(@types/node@20.11.19)(sass@1.71.1) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + + /vite-plugin-dts@3.6.4(@types/node@20.11.19)(rollup@4.12.0)(typescript@5.3.3)(vite@5.1.3): resolution: {integrity: sha512-yOVhUI/kQhtS6lCXRYYLv2UUf9bftcwQK9ROxCX2ul17poLQs02ctWX7+vXB8GPRzH8VCK3jebEFtPqqijXx6w==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -17959,22 +18684,22 @@ packages: vite: optional: true dependencies: - '@microsoft/api-extractor': 7.38.5(@types/node@20.10.4) - '@rollup/pluginutils': 5.1.0(rollup@4.6.1) - '@vue/language-core': 1.8.25(typescript@4.9.5) + '@microsoft/api-extractor': 7.39.0(@types/node@20.11.19) + '@rollup/pluginutils': 5.1.0(rollup@4.12.0) + '@vue/language-core': 1.8.27(typescript@5.3.3) debug: 4.3.4 kolorist: 1.8.0 - typescript: 4.9.5 - vite: 5.0.6(@types/node@20.10.4)(sass@1.69.5) - vue-tsc: 1.8.25(typescript@4.9.5) + typescript: 5.3.3 + vite: 5.1.3(@types/node@20.11.19)(sass@1.71.1) + vue-tsc: 1.8.27(typescript@5.3.3) transitivePeerDependencies: - '@types/node' - rollup - supports-color dev: true - /vite@5.0.6(@types/node@20.10.4)(sass@1.69.5): - resolution: {integrity: sha512-MD3joyAEBtV7QZPl2JVVUai6zHms3YOmLR+BpMzLlX2Yzjfcc4gTgNi09d/Rua3F4EtC8zdwPU8eQYyib4vVMQ==} + /vite@5.1.3(@types/node@20.11.19)(sass@1.71.1): + resolution: {integrity: sha512-UfmUD36DKkqhi/F75RrxvPpry+9+tTkrXfMNZD+SboZqBCMsxKtO52XeGzzuh7ioz+Eo/SYDBbdb0Z7vgcDJew==} engines: {node: ^18.0.0 || >=20.0.0} hasBin: true peerDependencies: @@ -18001,15 +18726,82 @@ packages: terser: optional: true dependencies: - '@types/node': 20.10.4 + '@types/node': 20.11.19 esbuild: 0.19.8 - postcss: 8.4.32 - rollup: 4.6.1 - sass: 1.69.5 + postcss: 8.4.35 + rollup: 4.12.0 + sass: 1.71.1 optionalDependencies: fsevents: 2.3.3 dev: true + /vitest-canvas-mock@0.3.3(vitest@1.4.0): + resolution: {integrity: sha512-3P968tYBpqYyzzOaVtqnmYjqbe13576/fkjbDEJSfQAkHtC5/UjuRHOhFEN/ZV5HVZIkaROBUWgazDKJ+Ibw+Q==} + peerDependencies: + vitest: '*' + dependencies: + jest-canvas-mock: 2.5.2 + vitest: 1.4.0(@types/node@20.11.19)(@vitest/ui@1.4.0)(happy-dom@14.2.0)(sass@1.71.1) + dev: true + + /vitest@1.4.0(@types/node@20.11.19)(@vitest/ui@1.4.0)(happy-dom@14.2.0)(sass@1.71.1): + resolution: {integrity: sha512-gujzn0g7fmwf83/WzrDTnncZt2UiXP41mHuFYFrdwaLRVQ6JYQEiME2IfEjU3vcFL3VKa75XhI3lFgn+hfVsQw==} + engines: {node: ^18.0.0 || >=20.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/node': ^18.0.0 || >=20.0.0 + '@vitest/browser': 1.4.0 + '@vitest/ui': 1.4.0 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + dependencies: + '@types/node': 20.11.19 + '@vitest/expect': 1.4.0 + '@vitest/runner': 1.4.0 + '@vitest/snapshot': 1.4.0 + '@vitest/spy': 1.4.0 + '@vitest/ui': 1.4.0(vitest@1.4.0) + '@vitest/utils': 1.4.0 + acorn-walk: 8.3.2 + chai: 4.4.1 + debug: 4.3.4 + execa: 8.0.1 + happy-dom: 14.2.0 + local-pkg: 0.5.0 + magic-string: 0.30.5 + pathe: 1.1.2 + picocolors: 1.0.0 + std-env: 3.6.0 + strip-literal: 2.0.0 + tinybench: 2.6.0 + tinypool: 0.8.2 + vite: 5.1.3(@types/node@20.11.19)(sass@1.71.1) + vite-node: 1.4.0(@types/node@20.11.19)(sass@1.71.1) + why-is-node-running: 2.2.2 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + dev: true + /vm2@3.9.19: resolution: {integrity: sha512-J637XF0DHDMV57R6JyVsTak7nIL8gy5KH4r1HiwWLf/4GBbb5MKL5y7LpmF4A8E2nR6XmzpmMFQ7V7ppPTmUQg==} engines: {node: '>=6.0'} @@ -18024,7 +18816,7 @@ packages: resolution: {integrity: sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==} dev: true - /vue-loader@15.11.1(css-loader@6.8.1)(lodash@4.17.21)(prettier@3.1.0)(react-dom@18.2.0)(react@18.2.0)(webpack@5.89.0): + /vue-loader@15.11.1(css-loader@6.8.1)(lodash@4.17.21)(prettier@3.2.5)(react-dom@18.2.0)(react@18.2.0)(webpack@5.79.0): resolution: {integrity: sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==} peerDependencies: '@vue/compiler-sfc': ^3.0.8 @@ -18044,13 +18836,13 @@ packages: optional: true dependencies: '@vue/component-compiler-utils': 3.3.0(lodash@4.17.21)(react-dom@18.2.0)(react@18.2.0) - css-loader: 6.8.1(webpack@5.89.0) + css-loader: 6.8.1(webpack@5.79.0) hash-sum: 1.0.2 loader-utils: 1.4.2 - prettier: 3.1.0 + prettier: 3.2.5 vue-hot-reload-api: 2.3.4 vue-style-loader: 4.1.3 - webpack: 5.89.0(@swc/core@1.3.23) + webpack: 5.79.0(@swc/core@1.3.96) transitivePeerDependencies: - arc-templates - atpl @@ -18125,16 +18917,16 @@ packages: resolution: {integrity: sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==} dev: true - /vue-tsc@1.8.25(typescript@4.9.5): - resolution: {integrity: sha512-lHsRhDc/Y7LINvYhZ3pv4elflFADoEOo67vfClAfF2heVHpHmVquLSjojgCSIwzA4F0Pc4vowT/psXCYcfk+iQ==} + /vue-tsc@1.8.27(typescript@5.3.3): + resolution: {integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==} hasBin: true peerDependencies: typescript: '*' dependencies: '@volar/typescript': 1.11.1 - '@vue/language-core': 1.8.25(typescript@4.9.5) - semver: 7.5.4 - typescript: 4.9.5 + '@vue/language-core': 1.8.27(typescript@5.3.3) + semver: 7.6.0 + typescript: 5.3.3 dev: true /w3c-xmlserializer@4.0.0: @@ -18186,7 +18978,7 @@ packages: javascript-stringify: 2.1.0 dev: true - /webpack-dev-middleware@5.3.3(webpack@5.89.0): + /webpack-dev-middleware@5.3.3(webpack@5.79.0): resolution: {integrity: sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==} engines: {node: '>= 12.13.0'} peerDependencies: @@ -18197,10 +18989,10 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.2.0 - webpack: 5.89.0(@swc/core@1.3.23) + webpack: 5.79.0(@swc/core@1.3.96) dev: true - /webpack-dev-server@4.11.1(webpack@5.89.0): + /webpack-dev-server@4.11.1(webpack@5.79.0): resolution: {integrity: sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==} engines: {node: '>= 12.13.0'} hasBin: true @@ -18238,8 +19030,8 @@ packages: serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack: 5.89.0(@swc/core@1.3.23) - webpack-dev-middleware: 5.3.3(webpack@5.89.0) + webpack: 5.79.0(@swc/core@1.3.96) + webpack-dev-middleware: 5.3.3(webpack@5.79.0) ws: 8.14.2 transitivePeerDependencies: - bufferutil @@ -18276,8 +19068,8 @@ packages: resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} dev: true - /webpack@5.89.0(@swc/core@1.3.23): - resolution: {integrity: sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==} + /webpack@5.79.0(@swc/core@1.3.96): + resolution: {integrity: sha512-3mN4rR2Xq+INd6NnYuL9RC9GAmc1ROPKJoHhrZ4pAjdMFEkJJWrsPw8o2JjCIyQyTu7rTXYn4VG6OpyB3CobZg==} engines: {node: '>=10.13.0'} hasBin: true peerDependencies: @@ -18288,11 +19080,11 @@ packages: dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.11.6 - '@webassemblyjs/wasm-edit': 1.11.6 - '@webassemblyjs/wasm-parser': 1.11.6 - acorn: 8.11.2 - acorn-import-assertions: 1.9.0(acorn@8.11.2) + '@webassemblyjs/ast': 1.11.1 + '@webassemblyjs/wasm-edit': 1.11.1 + '@webassemblyjs/wasm-parser': 1.11.1 + acorn: 8.11.3 + acorn-import-assertions: 1.9.0(acorn@8.11.3) browserslist: 4.22.2 chrome-trace-event: 1.0.3 enhanced-resolve: 5.15.0 @@ -18307,7 +19099,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.9(@swc/core@1.3.23)(esbuild@0.14.54)(webpack@5.89.0) + terser-webpack-plugin: 5.3.10(@swc/core@1.3.96)(webpack@5.79.0) watchpack: 2.4.0 webpack-sources: 3.2.3 transitivePeerDependencies: @@ -18315,7 +19107,7 @@ packages: - esbuild - uglify-js - /webpackbar@5.0.2(webpack@5.89.0): + /webpackbar@5.0.2(webpack@5.79.0): resolution: {integrity: sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==} engines: {node: '>=12'} peerDependencies: @@ -18325,7 +19117,7 @@ packages: consola: 2.15.3 pretty-time: 1.1.0 std-env: 3.6.0 - webpack: 5.89.0(@swc/core@1.3.23) + webpack: 5.79.0(@swc/core@1.3.96) dev: true /websocket-driver@0.7.4: @@ -18361,14 +19153,6 @@ packages: engines: {node: '>=12'} dev: true - /whatwg-url@11.0.0: - resolution: {integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==} - engines: {node: '>=12'} - dependencies: - tr46: 3.0.0 - webidl-conversions: 7.0.0 - dev: true - /whatwg-url@12.0.1: resolution: {integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==} engines: {node: '>=14'} @@ -18445,6 +19229,15 @@ packages: dependencies: isexe: 2.0.0 + /why-is-node-running@2.2.2: + resolution: {integrity: sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==} + engines: {node: '>=8'} + hasBin: true + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + dev: true + /widest-line@3.1.0: resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} engines: {node: '>=8'} @@ -18673,6 +19466,11 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} + dev: true + /yup@1.3.2: resolution: {integrity: sha512-6KCM971iQtJ+/KUaHdrhVr2LDkfhBtFPRnsG1P8F4q3uUVQ2RfEM9xekpha9aA4GXWJevjM10eDcPQ1FfWlmaQ==} dependencies: diff --git a/scripts/copy-docs-h5-or-taro.js b/scripts/copy-docs-h5-or-taro.js index f2dd453b72..ddf91eb33c 100644 --- a/scripts/copy-docs-h5-or-taro.js +++ b/scripts/copy-docs-h5-or-taro.js @@ -1,15 +1,42 @@ const targetBaseUrl = `${process.cwd()}/site_docs` const fse = require('fs-extra') const type = process.argv[2] || 'h5' +const path = require('path') -const copyFile = (from, to) => { +function readTsxFile(package, path) { + const data = fse.readFileSync(`src/packages/${package}/demos/${path}`, 'utf8') + return data +} + +const copyFile = (from, to, package) => { fse - .copy(from, to) + .readFile(from, 'utf8') + .then((content) => { + const regex = /<\/CodeBlock>/g + let match = '' + while ((match = regex.exec(content))) { + let temp = readTsxFile(package, match[1]) // 读取src中的文件 + temp = temp.trim() + content = content.replace( + ``, + '```tsx\n' + temp + '\n```' + ) + } + return content + }) + .then((modifiedContent) => { + // 确保目标文件所在的目录存在,如果不存在就创建 + return fse.ensureDir(path.dirname(to)).then(() => modifiedContent) + }) + .then((modifiedContent) => { + // 将修改后的内容写入目标文件 + return fse.writeFile(to, modifiedContent) + }) .then(() => { - console.log('success!>', to) + console.log(`${from}>>${to} [success]`) }) .catch((err) => { - console.error(err) + console.error('处理文件时发生错误:', err) }) } const removeFile = async (url) => { @@ -44,14 +71,15 @@ const copy = async () => { let docENpath = `src/packages/${cmpName}/doc.en-US.md` fse.readFile(docpath, (err, data) => { if (!err) { - copyFile(docpath, `${targetBaseUrl}/docs/${cmpName}/doc.md`) + copyFile(docpath, `${targetBaseUrl}/docs/${cmpName}/doc.md`, cmpName) } }) fse.readFile(docENpath, (err, data) => { if (!err) { copyFile( docENpath, - `${targetBaseUrl}/docs/${cmpName}/doc.en-US.md` + `${targetBaseUrl}/docs/${cmpName}/doc.en-US.md`, + cmpName, ) } }) @@ -63,7 +91,8 @@ const copy = async () => { if (!err) { copyFile( docTaropath, - `${targetBaseUrl}/docs/${cmpName}/doc.taro.md` + `${targetBaseUrl}/docs/${cmpName}/doc.taro.md`, + cmpName, ) } }) diff --git a/scripts/doc-demo-extract-replace.js b/scripts/doc-demo-extract-replace.js new file mode 100644 index 0000000000..c1edaedf1b --- /dev/null +++ b/scripts/doc-demo-extract-replace.js @@ -0,0 +1,121 @@ +const fs = require("fs"); +const path = require("path"); +const args = process.argv.slice(2); +console.log(args); +const extractH5Demos = (i) => { + const markdownFilePath = path.join( + __dirname, + `../src/packages/${args[i]}/doc.md` + ); + let markdownContent = fs.readFileSync(markdownFilePath, "utf-8"); + const outputDirectory = path.join( + __dirname, + `../src/packages/${args[i]}/demos/h5` + ); + const tsxRegex = /:::demo\r?\n\r?\n```tsx\r?\n([\s\S]*?)```\r?\n\r?\n:::/g; + let match; + if (!fs.existsSync(outputDirectory)) { + fs.mkdirSync(outputDirectory, { recursive: true }); + } + + let counter = 1; + while ((match = tsxRegex.exec(markdownContent)) !== null) { + let codeContent = match[1]; + codeContent = codeContent.replace( + /const \w+ = \(\) => \{/, + `const Demo${counter} = () => {` + ); + codeContent = codeContent.replace( + /const \w+ = \(\) => \(/, + `const Demo${counter} = () => (` + ) + codeContent = codeContent.replace( + /export default \w+/, + `export default Demo${counter}` + ); + const fileName = `/demos/h5/demo${counter}.tsx`; + fs.writeFileSync( + path.join(__dirname, `../src/packages/${args[i]}/${fileName}`), + codeContent.trim() + ); + counter++; + } + fs.writeFileSync(markdownFilePath, markdownContent); + console.log("======H5 demos have been extracted successfully======"); +}; +const extractTaroDemos = (i) => { + const markdownFilePath = path.join( + __dirname, + `../src/packages/${args[i]}/doc.taro.md` + ); + let markdownContent = fs.readFileSync(markdownFilePath, "utf-8"); + const outputDirectory = path.join( + __dirname, + `../src/packages/${args[i]}/demos/taro` + ); + const tsxRegex = /:::demo\r?\n\r?\n```tsx\r?\n([\s\S]*?)```\r?\n\r?\n:::/g; + let match; + if (!fs.existsSync(outputDirectory)) { + fs.mkdirSync(outputDirectory, { recursive: true }); + } + + let counter = 1; + while ((match = tsxRegex.exec(markdownContent)) !== null) { + let codeContent = match[1]; + codeContent = codeContent.replace( + /const \w+ = \(\) => \{/, + `const Demo${counter} = () => {` + ); + codeContent = codeContent.replace( + /const \w+ = \(\) => \(/, + `const Demo${counter} = () => (` + ) + codeContent = codeContent.replace( + /export default \w+/, + `export default Demo${counter}` + ); + const fileName = `/demos/taro/demo${counter}.tsx`; + fs.writeFileSync( + path.join(__dirname, `../src/packages/${args[i]}/${fileName}`), + codeContent.trim() + ); + + counter++; + } + fs.writeFileSync(markdownFilePath, markdownContent); + console.log("======Taro demos have been extracted successfully======"); +}; + +const replaceAllDocs = (i) => { + const filePaths = [ + path.join(__dirname, `../src/packages/${args[i]}/doc.md`), + path.join(__dirname, `../src/packages/${args[i]}/doc.en-US.md`), + path.join(__dirname, `../src/packages/${args[i]}/doc.taro.md`), + path.join(__dirname, `../src/packages/${args[i]}/doc.zh-TW.md`), + ]; + filePaths.forEach((path, index) => { + let markdownContent = fs.readFileSync(path, "utf-8"); + + const tsxRegex = /:::demo\r?\n\r?\n```tsx\r?\n([\s\S]*?)```\r?\n\r?\n:::/g; + const arr = markdownContent.match(tsxRegex); + for (let i = 0; i < arr.length; i++) { + markdownContent = markdownContent.replace( + arr[i], + index === 2 + ? `:::demo\r\n\r\n\r\n\r\n:::` + : `:::demo\r\n\r\n\r\n\r\n:::` + ); + } + fs.writeFileSync(path, markdownContent); + }); + console.log("======All docs have replaced successfully======"); +}; +for (let i = 0; i < args.length; i++) { + extractH5Demos(i); + extractTaroDemos(i); + replaceAllDocs(i); +} diff --git a/scripts/generate-changelog.js b/scripts/generate-changelog.js new file mode 100644 index 0000000000..6658292526 --- /dev/null +++ b/scripts/generate-changelog.js @@ -0,0 +1,25 @@ +const fs = require('fs-extra'); +const path = require('path'); +const changelog = fs.readFileSync(path.join(__dirname, '../CHANGELOG.md'), 'utf8'); + +const a = changelog.split('# v') +console.log(a[1]) +const getLatestRelease = (cl) => { + const a = changelog.split('# v') + if(a.length === 0) return '' + return `# v${a[1]}` + + // const tag1 = cl.indexOf('#') + // if (tag1 > -1) { + // const tag2 = cl.split('').slice(tag1 + 1, cl.length - 1).join('').indexOf('#') + // if (tag2 > -1) { + // return cl.substring(tag1, tag2) + // } + // } + // return '' +} +let res = getLatestRelease(changelog); +if (res) { + res += `\n> [CHANGELOG](https://github.com/jdf2e/nutui-react/blob/next/CHANGELOG.md)\n` + fs.writeFileSync('.github/changelog.md', res); +} \ No newline at end of file diff --git a/scripts/generate-css-for-rtl-comparison.js b/scripts/generate-css-for-rtl-comparison.js new file mode 100644 index 0000000000..1475746e4f --- /dev/null +++ b/scripts/generate-css-for-rtl-comparison.js @@ -0,0 +1,80 @@ +/* + * 通过 dist 目录下的 style/index.js 构建每个组件的 css 文件 + * */ +const path = require('path') +const fs = require('fs') +const postcss = require('postcss') +const sass = require('sass') +const rtl = require('postcss-rtlcss') +const config = require('../src/config.json') + +const components = config.nav.reduce( + (prev, nav) => [...prev, ...nav.packages], + [] +) +console.log(components.length) + +const mixin = fs + .readFileSync(path.join(__dirname, '../src/styles/mixins/text-ellipsis.scss')) + .toString() +const variables = fs.readFileSync( + path.join(__dirname, '../src/styles/variables.scss') +) + +function postcssRemoveRtl() { + return { + postcssPlugin: 'postcss-remove-rtl', + Once(root, postcss) { + // Transform CSS AST here + root.nodes.forEach((node, index) => { + if (node.type === 'rule') { + if (node.selector.indexOf('[dir=')> -1) { + console.log(node.selector, index) + node.remove() + } + } + }) + }, + } +} + +components.forEach((component) => { + const componentName = component.name.toLowerCase() + if (componentName === 'icon') return + + let content = fs + .readFileSync( + path.join( + __dirname, + `../src/packages/${componentName}/${componentName}.scss` + ) + ) + .toString() + let to = path.join( + __dirname, + `../src/packages/${componentName}/${componentName}.rtl.css` + ) + const matched = content.match(/@import.*?[;][\n\r]?/gi) + if (matched) { + matched.forEach((m) => { + if (m.indexOf('styles') > -1) { + content = content.replace(m, mixin) + } else { + content = content.replace(m, '') + } + }) + } + + const res = sass.compileString(variables + content) + postcss([ + postcssRemoveRtl(), + rtl({ + mode: 'override', + rtlPrefix: [`[dir="rtl"]`, `.nut-rtl`], + }), + ]) + .process(res.css, { to }) + .then((result) => { + fs.writeFile(to, result.css, () => {}) + }) +}) diff --git a/scripts/generate-local-changelog.js b/scripts/generate-local-changelog.js new file mode 100644 index 0000000000..31451acaea --- /dev/null +++ b/scripts/generate-local-changelog.js @@ -0,0 +1,97 @@ +const shell = require('shelljs') +const fs = require('fs') +const { join } = require('path') + +const beforeTag = process.argv[2] +const nextTag = process.argv[3] + +shell.exec( + `git log -1 --format=%ai ${beforeTag}`, + { silent: true }, + (code, stdout, stderr) => { + shell.exec( + `git log --since="${stdout.replace('\n', '')}" --pretty=format:"%s @%an" next`, + { silent: true }, + (code, stdout, stderr) => { + const logs = stdout.split('\n') + const rules = [ + 'build', + 'chore', + 'ci', + 'docs', + 'feat', + 'fix', + 'perf', + 'refactor', + 'revert', + 'style', + 'test', + ] + const logsWithGithubUser = { + build: [], + chore: [], + ci: [], + docs: [], + feat: [], + fix: [], + perf: [], + refactor: [], + revert: [], + style: [], + test: [], + others: [], + } + const logSymbol = { + build: '* 📦 ', + chore: '*🏡 ', + ci: '* 🤖 ', + docs: '* 📖 ', + feat: '* :sparkles: ', + fix: '* :bug: ', + perf: '* zap: ', + refactor: '* 🪵 ', + revert: '* 🚦 ', + style: ':art: ', + test: '* 💡 ', + others: '* 🔔 ', + } + logs.forEach((log, index) => { + // const groups = log.match(/#(?[0-9]+)/)?.groups + // if (groups && groups.pr) { + if (log.indexOf(beforeTag) === -1) { + const a = rules.filter((rule) => { + return log.toLowerCase().startsWith(rule) + }) + if (a.length) { + logsWithGithubUser[a[0]].push(log) + } else { + logsWithGithubUser.others.push(log) + } + } + }) + + let changeLog = '' + rules.forEach((rule) => { + const logs = logsWithGithubUser[rule] + if (!logs.length) return + changeLog += `${logs.map((log) => `${logSymbol[rule]}${log}`).join('\n')}\n` + }) + shell.exec( + 'date "+%Y-%m-%d"', + { silent: true }, + (code, stdout, stderr) => { + const res = `# ${nextTag}\n\`${stdout.replaceAll('\n', '')}\`\n\n\n${changeLog}\n\n` + + fs.writeFileSync( + join(__dirname, '../CHANGELOG.md'), + res + + fs.readFileSync(join(__dirname, '../CHANGELOG.md'), { + encoding: 'utf8', + }) + ) + } + ) + } + ) + } +) diff --git a/scripts/generate-nutui.js b/scripts/generate-nutui.js index 327f987c68..0aab56bdd6 100644 --- a/scripts/generate-nutui.js +++ b/scripts/generate-nutui.js @@ -19,6 +19,7 @@ config.nav.map((item) => { if (exclude) return if (show || exportEmpty) { importStr += `import ${name} from '@/packages/${name.toLowerCase()}';\n` + importStr += `export * from '@/packages/${name.toLowerCase()}';\n` importScssStr += `import '@/packages/${name.toLowerCase()}/${name.toLowerCase()}.scss';\n` packages.push(name) diff --git a/scripts/generate-rtl.js b/scripts/generate-rtl.js new file mode 100644 index 0000000000..0d85dde760 --- /dev/null +++ b/scripts/generate-rtl.js @@ -0,0 +1,37 @@ +const postcss = require('postcss') +const rtl = require('postcss-rtlcss') +const fs = require('fs') +const path = require('path') +const scss = require('postcss-scss') +const config = require('../src/config.json') + +const components = config.nav.reduce( + (prev, nav) => [...prev, ...nav.packages], + [] +) +console.log(components.length) + +const plugins = [ + rtl({ mode: 'override', rtlPrefix: [`[dir="rtl"]`, `.nut-rtl`] }), +] + +components.forEach((component) => { + const componentName = component.name.toLowerCase() + if (componentName === 'icon') return + // if (componentName === 'icon' || componentName === 'col') return + // if(componentName !== 'col') return + const readFrom = path.join( + process.cwd(), + `./src/packages/${componentName}/${componentName}.scss` + ) + const writeTo = path.join( + process.cwd(), + `./src/packages/${componentName}/${componentName}.scss` + ) + const css = fs.readFileSync(readFrom, 'utf8') + postcss(plugins) + .process(css, { syntax: scss }) + .then((result) => { + fs.writeFile(writeTo, result.css, () => {}) + }) +}) diff --git a/scripts/taro/generate-nutui-taro.js b/scripts/taro/generate-nutui-taro.js index 1ac0a8d8cc..4892f201fe 100644 --- a/scripts/taro/generate-nutui-taro.js +++ b/scripts/taro/generate-nutui-taro.js @@ -16,6 +16,7 @@ config.nav.map((item) => { if (exclude) return // if (show ) { importStr += `import ${name} from '@/packages/${name.toLowerCase()}/index.taro'\n` + importStr += `export * from '@/packages/${name.toLowerCase()}/index.taro'\n` importScssStr += `import '@/packages/${name.toLowerCase()}/${name.toLowerCase()}.scss'\n` packages.push(name) // } diff --git a/src/config.json b/src/config.json index a7776b48a5..9e48e9c2db 100644 --- a/src/config.json +++ b/src/config.json @@ -512,7 +512,13 @@ "show": true, "taro": true, "author": "swag~jun" - }, + } + ] + }, + { + "name": "数据录入", + "enName": "dentry1", + "packages": [ { "version": "2.0.0", "name": "Menu", @@ -1201,4 +1207,4 @@ ] } ] -} +} \ No newline at end of file diff --git a/src/packages/actionsheet/__test__/actionsheet.spec.tsx b/src/packages/actionsheet/__test__/actionsheet.spec.tsx index c991ad7036..6fe076d545 100644 --- a/src/packages/actionsheet/__test__/actionsheet.spec.tsx +++ b/src/packages/actionsheet/__test__/actionsheet.spec.tsx @@ -1,9 +1,9 @@ import React from 'react' import { render, waitFor, fireEvent } from '@testing-library/react' import '@testing-library/jest-dom' -import { ActionSheet, ItemType } from '../actionsheet' +import { ActionSheet, ActionSheetOption } from '../actionsheet' -const menulist: ItemType[] = [ +const menulist: ActionSheetOption[] = [ { name: '选项一', description: '选项一的描述信息', @@ -67,7 +67,7 @@ test('props test has value ', async () => { }) test('props test choose item and show value', async () => { - const choose = jest.fn() + const choose = vi.fn() const { container } = render( { }) test('props test disabled item has disabled classes', async () => { - const choose = jest.fn() + const choose = vi.fn() const { container } = render( { }) test('props test click disabled item and not call fn', async () => { - const choose = jest.fn() + const choose = vi.fn() const { container } = render( = { [key: string]: T } +export type ActionSheetOption = { [key: string]: T } export interface ActionSheetProps extends PopupProps { visible: boolean description: ReactNode - options: ItemType[] - optionKey: ItemType + options: ActionSheetOption[] + optionKey: ActionSheetOption cancelText: ReactNode onCancel: () => void - onSelect: (item: ItemType, index: number) => void + onSelect: (item: ActionSheetOption, index: number) => void } const defaultProps = { ...ComponentDefaults, @@ -48,7 +48,10 @@ export const ActionSheet: FunctionComponent< onCancel && onCancel() } - const chooseItem = (item: ItemType, index: number) => { + const chooseItem = ( + item: ActionSheetOption, + index: number + ) => { if (!item.disabled) { onSelect && onSelect(item, index) } @@ -56,6 +59,7 @@ export const ActionSheet: FunctionComponent< return ( = { [key: string]: T } +export type ActionSheetOption = { [key: string]: T } export interface ActionSheetProps extends PopupProps { visible: boolean description: ReactNode - options: ItemType[] - optionKey: ItemType + options: ActionSheetOption[] + optionKey: ActionSheetOption cancelText: ReactNode onCancel: () => void - onSelect: (item: ItemType, index: number) => void + onSelect: (item: ActionSheetOption, index: number) => void } const defaultProps = { ...ComponentDefaults, @@ -48,7 +48,10 @@ export const ActionSheet: FunctionComponent< onCancel && onCancel() } - const chooseItem = (item: ItemType, index: number) => { + const chooseItem = ( + item: ActionSheetOption, + index: number + ) => { if (!item.disabled) { onSelect && onSelect(item, index) } @@ -56,6 +59,7 @@ export const ActionSheet: FunctionComponent< return ( -
        +
        {options.length ? (
        {options.map((item, index) => { diff --git a/src/packages/actionsheet/demo.taro.tsx b/src/packages/actionsheet/demo.taro.tsx index 3a73ec1679..48522c9395 100644 --- a/src/packages/actionsheet/demo.taro.tsx +++ b/src/packages/actionsheet/demo.taro.tsx @@ -1,278 +1,51 @@ -import React, { useState } from 'react' +import React from 'react' import Taro from '@tarojs/taro' import { useTranslate } from '@/sites/assets/locale/taro' -import { ActionSheet, Cell } from '@/packages/nutui.react.taro' import Header from '@/sites/components/header' -export type ItemType = { [key: string]: T } -interface Item { - name: string - description?: string - disabled?: boolean - danger?: boolean -} +import Demo1 from './demos/taro/demo1' +import Demo2 from './demos/taro/demo2' +import Demo3 from './demos/taro/demo3' +import Demo4 from './demos/taro/demo4' +import Demo5 from './demos/taro/demo5' +import Demo6 from './demos/taro/demo6' -interface T { - '0f87771f': string - '0f87770f': string - e23e5e80: string - b6102b61: string - acc5939e: string - '85dae65b': string - '314631ed': string - '74fc5d8a': string - '84aa6bce': string - '595d7bb3': string - '0a1a6656': string - c3a08064: string - '2cd0f3be': string - e1699442: string - c3a08065: string - c3a08066: string -} const ActionSheetDemo = () => { - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { - '0f87771f': '标题', - '0f87770f': '权限设置', - e23e5e80: '重命名', - b6102b61: '删除', - acc5939e: '删除后无法恢复', - '85dae65b': '着色选项', - '314631ed': '禁用选项', '74fc5d8a': '基础用法', - '84aa6bce': '基础用法', - '595d7bb3': '展示取消按钮', - '0a1a6656': '展示描述信息', c3a08064: '选项状态', - '2cd0f3be': '取消', - e1699442: '请选择操作动作', c3a08065: '自定义内容', c3a08066: '自定义key', }, 'zh-TW': { - '0f87771f': '標題', - '0f87770f': '權限設定', - e23e5e80: '重命名', - b6102b61: '刪除', - acc5939e: '刪除後無法恢復', - '85dae65b': '著色選項', - '314631ed': '禁用選項', - '74fc5d8a': '基础用法', - '84aa6bce': '基礎用法', - '595d7bb3': '展示取消按鈕', - '0a1a6656': '展示描述信息', + '74fc5d8a': '基礎用法', c3a08064: '選項狀態', - '2cd0f3be': '取消', - e1699442: '請選擇操作動作', c3a08065: '自定義內容', c3a08066: '自定義key', }, 'en-US': { - '0f87771f': 'Title', - '0f87770f': 'Permission settings', - e23e5e80: 'Rename', - b6102b61: 'Delete', - acc5939e: 'Cannot be restored after deletion', - '85dae65b': 'Shading Options', - '314631ed': 'Disable Option', '74fc5d8a': 'Basic Usage', - '84aa6bce': 'Basic Usage', - '595d7bb3': 'Show Cancel Button', - '0a1a6656': 'Display Description Information', c3a08064: 'Option Status', - '2cd0f3be': 'Cancel', - e1699442: 'Please choose action', c3a08065: 'Custom content', c3a08066: 'Custom key', }, }) - const [isVisible1, setIsVisible1] = useState(false) - const [isVisible2, setIsVisible2] = useState(false) - const [isVisible3, setIsVisible3] = useState(false) - const [isVisible4, setIsVisible4] = useState(false) - const [isVisible5, setIsVisible5] = useState(false) - const [isVisible6, setIsVisible6] = useState(false) - const [val1, setVal1] = useState('') - const [val2, setVal2] = useState('') - const [val3, setVal3] = useState('') - const optionsOne: ItemType[] = [ - { - name: translated['0f87770f'], - }, - { - name: translated.e23e5e80, - }, - { - name: translated.b6102b61, - }, - ] - const optionsTwo: ItemType[] = [ - { - name: translated['0f87770f'], - }, - { - name: translated.e23e5e80, - }, - { - name: translated.b6102b61, - description: translated.acc5939e, - }, - ] - const optionsThree: ItemType[] = [ - { - name: translated['85dae65b'], - danger: true, - }, - { - name: translated['314631ed'], - disabled: true, - }, - ] - const optionsFour: ItemType[] = [ - { - title: translated['0f87770f'], - }, - { - title: translated.e23e5e80, - }, - { - title: translated.b6102b61, - danger: true, - }, - ] - const optionKey = { - name: 'title', - } - const chooseItem = (item: ItemType) => { - setVal1(item.name) - setIsVisible1(false) - } - const chooseItemTwo = (item: Item) => { - setVal2(item.name) - setIsVisible2(false) - } - const chooseItemThree = (item: Item) => { - setVal3(item.name) - setIsVisible3(false) - } - return ( <>

        {translated['74fc5d8a']}

        - setIsVisible1(!isVisible1)}> - - - -
        {val1}
        -
        - setIsVisible2(!isVisible2)}> - - - -
        {val2}
        -
        - setIsVisible3(!isVisible3)}> - - - -
        {val3}
        -
        + + +

        {translated.c3a08064}

        - setIsVisible4(!isVisible4)}> - - - - +

        {translated.c3a08065}

        - setIsVisible5(!isVisible5)}> - - - - +

        {translated.c3a08066}

        - setIsVisible6(!isVisible6)}> - - - - - - {/* demo 基础用法 */} - { - chooseItem(item) - }} - onCancel={() => setIsVisible1(false)} - /> - {/* demo(带取消按钮) */} - { - chooseItemTwo(item) - }} - onCancel={() => setIsVisible2(false)} - /> - {/* 展示描述信息 */} - { - chooseItemThree(item) - }} - onCancel={() => setIsVisible3(false)} - /> - {/* demo 选项状态 */} - { - setIsVisible4(false) - }} - onCancel={() => setIsVisible4(false)} - /> - { - setIsVisible5(false) - }} - onCancel={() => setIsVisible5(false)} - > -
        - 新建表格 -
        -
        - 新建文档 -
        -
        - { - setIsVisible6(false) - }} - onCancel={() => setIsVisible6(false)} - /> +
        ) diff --git a/src/packages/actionsheet/demo.tsx b/src/packages/actionsheet/demo.tsx index 0366945a08..0c1ffe96bf 100644 --- a/src/packages/actionsheet/demo.tsx +++ b/src/packages/actionsheet/demo.tsx @@ -1,275 +1,48 @@ -import React, { useState } from 'react' +import React from 'react' import { useTranslate } from '../../sites/assets/locale' -import { ActionSheet, ItemType } from './actionsheet' -import Cell from '@/packages/cell' -interface Item { - name: string - description?: string - disabled?: boolean - danger?: boolean -} +import Demo1 from './demos/h5/demo1' +import Demo2 from './demos/h5/demo2' +import Demo3 from './demos/h5/demo3' +import Demo4 from './demos/h5/demo4' +import Demo5 from './demos/h5/demo5' +import Demo6 from './demos/h5/demo6' -interface T { - '0f87771f': string - '0f87770f': string - e23e5e80: string - b6102b61: string - acc5939e: string - '85dae65b': string - '314631ed': string - '74fc5d8a': string - '84aa6bce': string - '595d7bb3': string - '0a1a6656': string - c3a08064: string - '2cd0f3be': string - e1699442: string - c3a08065: string - c3a08066: string -} const ActionSheetDemo = () => { - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { - '0f87771f': '标题', - '0f87770f': '权限设置', - e23e5e80: '重命名', - b6102b61: '删除', - acc5939e: '删除后无法恢复', - '85dae65b': '着色选项', - '314631ed': '禁用选项', '74fc5d8a': '基础用法', - '84aa6bce': '基础用法', - '595d7bb3': '展示取消按钮', - '0a1a6656': '展示描述信息', c3a08064: '选项状态', - '2cd0f3be': '取消', - e1699442: '请选择操作动作', c3a08065: '自定义内容', c3a08066: '自定义key', }, 'zh-TW': { - '0f87771f': '標題', - '0f87770f': '權限設定', - e23e5e80: '重命名', - b6102b61: '刪除', - acc5939e: '刪除後無法恢復', - '85dae65b': '著色選項', - '314631ed': '禁用選項', - '74fc5d8a': '基础用法', - '84aa6bce': '基礎用法', - '595d7bb3': '展示取消按鈕', - '0a1a6656': '展示描述信息', + '74fc5d8a': '基礎用法', c3a08064: '選項狀態', - '2cd0f3be': '取消', - e1699442: '請選擇操作動作', c3a08065: '自定義內容', c3a08066: '自定義key', }, 'en-US': { - '0f87771f': 'Title', - '0f87770f': 'Permission settings', - e23e5e80: 'Rename', - b6102b61: 'Delete', - acc5939e: 'Cannot be restored after deletion', - '85dae65b': 'Shading Options', - '314631ed': 'Disable Option', '74fc5d8a': 'Basic Usage', - '84aa6bce': 'Basic Usage', - '595d7bb3': 'Show Cancel Button', - '0a1a6656': 'Display Description Information', c3a08064: 'Option Status', - '2cd0f3be': 'Cancel', - e1699442: 'Please choose action', c3a08065: 'Custom content', c3a08066: 'Custom key', }, }) - const [isVisible1, setIsVisible1] = useState(false) - const [isVisible2, setIsVisible2] = useState(false) - const [isVisible3, setIsVisible3] = useState(false) - const [isVisible4, setIsVisible4] = useState(false) - const [isVisible5, setIsVisible5] = useState(false) - const [isVisible6, setIsVisible6] = useState(false) - const [val1, setVal1] = useState('') - const [val2, setVal2] = useState('') - const [val3, setVal3] = useState('') - const optionsOne: ItemType[] = [ - { - name: translated['0f87770f'], - }, - { - name: translated.e23e5e80, - }, - { - name: translated.b6102b61, - }, - ] - const optionsTwo: ItemType[] = [ - { - name: translated['0f87770f'], - }, - { - name: translated.e23e5e80, - }, - { - name: translated.b6102b61, - description: translated.acc5939e, - }, - ] - const optionsThree: ItemType[] = [ - { - name: translated['85dae65b'], - danger: true, - }, - { - name: translated['314631ed'], - disabled: true, - }, - ] - const optionsFour: ItemType[] = [ - { - title: translated['0f87770f'], - }, - { - title: translated.e23e5e80, - }, - { - title: translated.b6102b61, - danger: true, - }, - ] - const optionKey = { - name: 'title', - } - const chooseItem = (item: ItemType) => { - setVal1(item.name) - setIsVisible1(false) - } - const chooseItemTwo = (item: Item) => { - setVal2(item.name) - setIsVisible2(false) - } - const chooseItemThree = (item: Item) => { - setVal3(item.name) - setIsVisible3(false) - } - return ( <>

        {translated['74fc5d8a']}

        - setIsVisible1(!isVisible1)}> - - - -
        {val1}
        -
        - setIsVisible2(!isVisible2)}> - - - -
        {val2}
        -
        - setIsVisible3(!isVisible3)}> - - - -
        {val3}
        -
        + + +

        {translated.c3a08064}

        - setIsVisible4(!isVisible4)}> - - - - +

        {translated.c3a08065}

        - setIsVisible5(!isVisible5)}> - - - - +

        {translated.c3a08066}

        - setIsVisible6(!isVisible6)}> - - - - - - {/* demo 基础用法 */} - { - chooseItem(item) - }} - onCancel={() => setIsVisible1(false)} - /> - {/* demo(带取消按钮) */} - { - chooseItemTwo(item) - }} - onCancel={() => setIsVisible2(false)} - /> - {/* 展示描述信息 */} - { - chooseItemThree(item) - }} - onCancel={() => setIsVisible3(false)} - /> - {/* demo 选项状态 */} - { - setIsVisible4(false) - }} - onCancel={() => setIsVisible4(false)} - /> - { - setIsVisible5(false) - }} - onCancel={() => setIsVisible5(false)} - > -
        - 新建表格 -
        -
        - 新建文档 -
        -
        - { - setIsVisible6(false) - }} - onCancel={() => setIsVisible6(false)} - /> +
        ) diff --git a/src/packages/actionsheet/demos/h5/demo1.tsx b/src/packages/actionsheet/demos/h5/demo1.tsx new file mode 100644 index 0000000000..6b36ced9bc --- /dev/null +++ b/src/packages/actionsheet/demos/h5/demo1.tsx @@ -0,0 +1,40 @@ +import React, { useState } from 'react' +import { ActionSheet, Cell } from '@nutui/nutui-react' + +const Demo1 = () => { + const [val, setVal] = useState('') + const [isVisible, setIsVisible] = useState(false) + const options = [ + { + name: '权限设置', + }, + { + name: '重命名', + }, + { + name: '删除', + }, + ] + + const handleSelect = (item: any) => { + setVal(item.name) + setIsVisible(false) + } + + return ( + <> + setIsVisible(!isVisible)}> + 基础用法 +
        {val}
        +
        + setIsVisible(false)} + /> + + ) +} +export default Demo1 diff --git a/src/packages/actionsheet/demos/h5/demo2.tsx b/src/packages/actionsheet/demos/h5/demo2.tsx new file mode 100644 index 0000000000..cd8b693e5a --- /dev/null +++ b/src/packages/actionsheet/demos/h5/demo2.tsx @@ -0,0 +1,39 @@ +import React, { useState } from 'react' +import { ActionSheet, Cell } from '@nutui/nutui-react' + +const Demo2 = () => { + const [isVisible, setIsVisible] = useState(false) + const [val, setVal] = useState('') + const options = [ + { + name: '权限设置', + }, + { + name: '重命名', + }, + { + name: '删除', + }, + ] + const handleSelect = (item: any) => { + setVal(item.name) + setIsVisible(false) + } + return ( + <> + setIsVisible(!isVisible)}> + 展示取消按钮 +
        {val}
        +
        + + setIsVisible(false)} + /> + + ) +} +export default Demo2 diff --git a/src/packages/actionsheet/demos/h5/demo3.tsx b/src/packages/actionsheet/demos/h5/demo3.tsx new file mode 100644 index 0000000000..dcd02b3132 --- /dev/null +++ b/src/packages/actionsheet/demos/h5/demo3.tsx @@ -0,0 +1,43 @@ +import React, { useState } from 'react' +import { ActionSheet, Cell } from '@nutui/nutui-react' + +const Demo3 = () => { + const [isVisible, setIsVisible] = useState(false) + const [val, setVal] = useState('') + const options: Record[] = [ + { + name: '权限设置', + }, + { + name: '重命名', + }, + { + name: '删除', + description: '删除后无法恢复', + }, + ] + + const handleSelect = (item: any) => { + setVal(item.name) + setIsVisible(false) + } + + return ( + <> + setIsVisible(!isVisible)}> + 展示描述信息 +
        {val}
        +
        + setIsVisible(false)} + /> + + ) +} +export default Demo3 diff --git a/src/packages/actionsheet/demos/h5/demo4.tsx b/src/packages/actionsheet/demos/h5/demo4.tsx new file mode 100644 index 0000000000..7a6d6a2931 --- /dev/null +++ b/src/packages/actionsheet/demos/h5/demo4.tsx @@ -0,0 +1,33 @@ +import React, { useState } from 'react' +import { ActionSheet, Cell } from '@nutui/nutui-react' + +const Demo4 = () => { + const [isVisible, setIsVisible] = useState(false) + const optionsThree: Record[] = [ + { + name: '着色选项', + danger: true, + }, + { + name: '禁用选项', + disabled: true, + }, + ] + return ( + <> + setIsVisible(!isVisible)}> + 选项状态 + + { + setIsVisible(false) + }} + onCancel={() => setIsVisible(false)} + /> + + ) +} +export default Demo4 diff --git a/src/packages/actionsheet/demos/h5/demo5.tsx b/src/packages/actionsheet/demos/h5/demo5.tsx new file mode 100644 index 0000000000..678032affa --- /dev/null +++ b/src/packages/actionsheet/demos/h5/demo5.tsx @@ -0,0 +1,25 @@ +import React, { useState } from 'react' +import { ActionSheet, Cell } from '@nutui/nutui-react' + +const Demo5 = () => { + const [isVisible, setIsVisible] = useState(false) + return ( + <> + setIsVisible(!isVisible)}> + 自定义内容 + + { + setIsVisible(false) + }} + onCancel={() => setIsVisible(false)} + > +
        新建表格
        +
        新建文档
        +
        + + ) +} +export default Demo5 diff --git a/src/packages/actionsheet/demos/h5/demo6.tsx b/src/packages/actionsheet/demos/h5/demo6.tsx new file mode 100644 index 0000000000..112b168a8b --- /dev/null +++ b/src/packages/actionsheet/demos/h5/demo6.tsx @@ -0,0 +1,39 @@ +import React, { useState } from 'react' +import { ActionSheet, Cell } from '@nutui/nutui-react' + +const Demo6 = () => { + const [isVisible, setIsVisible] = useState(false) + const options: Record[] = [ + { + title: '权限设置', + }, + { + title: '重命名', + }, + { + title: '删除', + disabled: true, + }, + ] + const optionKey = { + name: 'title', + } + return ( + <> + setIsVisible(!isVisible)}> + 自定义key + + { + setIsVisible(false) + }} + onCancel={() => setIsVisible(false)} + /> + + ) +} +export default Demo6 diff --git a/src/packages/actionsheet/demos/taro/demo1.tsx b/src/packages/actionsheet/demos/taro/demo1.tsx new file mode 100644 index 0000000000..3cc99246ed --- /dev/null +++ b/src/packages/actionsheet/demos/taro/demo1.tsx @@ -0,0 +1,40 @@ +import React, { useState } from 'react' +import { ActionSheet, Cell } from '@nutui/nutui-react-taro' + +const Demo1 = () => { + const [val, setVal] = useState('') + const [isVisible, setIsVisible] = useState(false) + const options = [ + { + name: '权限设置', + }, + { + name: '重命名', + }, + { + name: '删除', + }, + ] + + const handleSelect = (item: any) => { + setVal(item.name) + setIsVisible(false) + } + + return ( + <> + setIsVisible(!isVisible)}> + 基础用法 +
        {val}
        +
        + setIsVisible(false)} + /> + + ) +} +export default Demo1 diff --git a/src/packages/actionsheet/demos/taro/demo2.tsx b/src/packages/actionsheet/demos/taro/demo2.tsx new file mode 100644 index 0000000000..c3daeb16a3 --- /dev/null +++ b/src/packages/actionsheet/demos/taro/demo2.tsx @@ -0,0 +1,38 @@ +import React, { useState } from 'react' +import { ActionSheet, Cell } from '@nutui/nutui-react-taro' + +const Demo2 = () => { + const [isVisible, setIsVisible] = useState(false) + const [val, setVal] = useState('') + const options = [ + { + name: '权限设置', + }, + { + name: '重命名', + }, + { + name: '删除', + }, + ] + const handleSelect = (item: any) => { + setVal(item.name) + setIsVisible(false) + } + return ( + <> + setIsVisible(!isVisible)}> + 展示取消按钮 +
        {val}
        +
        + setIsVisible(false)} + /> + + ) +} +export default Demo2 diff --git a/src/packages/actionsheet/demos/taro/demo3.tsx b/src/packages/actionsheet/demos/taro/demo3.tsx new file mode 100644 index 0000000000..47a2ed33c9 --- /dev/null +++ b/src/packages/actionsheet/demos/taro/demo3.tsx @@ -0,0 +1,41 @@ +import React, { useState } from 'react' +import { ActionSheet, Cell } from '@nutui/nutui-react-taro' + +const Demo3 = () => { + const [isVisible, setIsVisible] = useState(false) + const [val, setVal] = useState('') + const options: Record[] = [ + { + name: '权限设置', + }, + { + name: '重命名', + }, + { + name: '删除', + description: '删除后无法恢复', + }, + ] + const handleSelect = (item: any) => { + setVal(item.name) + setIsVisible(false) + } + return ( + <> + setIsVisible(!isVisible)}> + 展示描述信息 +
        {val}
        +
        + setIsVisible(false)} + /> + + ) +} +export default Demo3 diff --git a/src/packages/actionsheet/demos/taro/demo4.tsx b/src/packages/actionsheet/demos/taro/demo4.tsx new file mode 100644 index 0000000000..0aa8e6448e --- /dev/null +++ b/src/packages/actionsheet/demos/taro/demo4.tsx @@ -0,0 +1,33 @@ +import React, { useState } from 'react' +import { ActionSheet, Cell } from '@nutui/nutui-react-taro' + +const Demo4 = () => { + const [isVisible, setIsVisible] = useState(false) + const options: Record[] = [ + { + name: '着色选项', + danger: true, + }, + { + name: '禁用选项', + disabled: true, + }, + ] + return ( + <> + setIsVisible(!isVisible)}> + 选项状态 + + { + setIsVisible(false) + }} + onCancel={() => setIsVisible(false)} + /> + + ) +} +export default Demo4 diff --git a/src/packages/actionsheet/demos/taro/demo5.tsx b/src/packages/actionsheet/demos/taro/demo5.tsx new file mode 100644 index 0000000000..20e4768300 --- /dev/null +++ b/src/packages/actionsheet/demos/taro/demo5.tsx @@ -0,0 +1,25 @@ +import React, { useState } from 'react' +import { ActionSheet, Cell } from '@nutui/nutui-react-taro' + +const Demo5 = () => { + const [isVisible, setIsVisible] = useState(false) + return ( + <> + setIsVisible(!isVisible)}> + 自定义内容 + + { + setIsVisible(false) + }} + onCancel={() => setIsVisible(false)} + > +
        新建表格
        +
        新建文档
        +
        + + ) +} +export default Demo5 diff --git a/src/packages/actionsheet/demos/taro/demo6.tsx b/src/packages/actionsheet/demos/taro/demo6.tsx new file mode 100644 index 0000000000..22b786d383 --- /dev/null +++ b/src/packages/actionsheet/demos/taro/demo6.tsx @@ -0,0 +1,39 @@ +import React, { useState } from 'react' +import { ActionSheet, Cell } from '@nutui/nutui-react-taro' + +const Demo6 = () => { + const [isVisible, setIsVisible] = useState(false) + const options: Record[] = [ + { + title: '权限设置', + }, + { + title: '重命名', + }, + { + title: '删除', + disabled: true, + }, + ] + const optionKey = { + name: 'title', + } + return ( + <> + setIsVisible(!isVisible)}> + 自定义key + + { + setIsVisible(false) + }} + onCancel={() => setIsVisible(false)} + /> + + ) +} +export default Demo6 diff --git a/src/packages/actionsheet/doc.en-US.md b/src/packages/actionsheet/doc.en-US.md index a8c44e6447..e2f8704bd6 100644 --- a/src/packages/actionsheet/doc.en-US.md +++ b/src/packages/actionsheet/doc.en-US.md @@ -1,327 +1,93 @@ -# ActionSheet - -## Intro - -Action menu panel that pops up from the bottom. - -## Install - -```tsx -import { ActionSheet } from '@nutui/nutui-react'; -``` - -## Demo - -### Basic usage - -:::demo - -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react'; - -interface Item { - name: string - description?: string - disabled?: boolean -} -const App = () => { - const [val1, setVal1] = useState('') - const [isVisible1, setIsVisible1] = useState(false) - const optionsOne: ItemType[] = [ - { - name: 'Permission settings', - }, - { - name: 'Rename', - }, - { - name: 'Delete', - }, - ] - const chooseItem = (item: any) => { - setVal1(item.name) - setIsVisible1(false) - } - - return ( - <> - setIsVisible1(!isVisible1)}> - Basic Usage -
        {val1}
        -
        - - {chooseItem(item)}} - onCancel={() => setIsVisible1(false)} - /> - - ); -}; -export default App; - -``` - -::: - -### Show Cancel Button - -:::demo - -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react'; - -const App = () => { - const [isVisible2, setIsVisible2] = useState(false) - const [val2, setVal2] = useState('') - const optionsOne: ItemType[] = [ - { - name: 'Permission settings', - }, - { - name: 'Rename', - }, - { - name: 'Delete', - }, - ] - const chooseItemTwo = (item: Item) => { - setVal2(item.name) - setIsVisible2(false) - } - return ( - <> - setIsVisible2(!isVisible2)}> - Show Cancel Button -
        {val2}
        -
        - - {chooseItemTwo(item)}} - onCancel={() => setIsVisible2(false)} - /> - - ); -}; -export default App; - -``` - -::: - -### Display Description Information - -:::demo - -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react'; - -const App = () => { - const [isVisible3, setIsVisible3] = useState(false) - const [val3, setVal3] = useState('') - const optionsTwo: ItemType[] = [ - { - name: 'Permission settings', - }, - { - name: 'Rename', - }, - { - name: 'Delete', - description: 'Cannot be restored after deletion' - }, - ] - const chooseItemThree = (item: Item) => { - setVal3(item.name) - setIsVisible3(false) - } - return ( - <> - setIsVisible3(!isVisible3)}> - Display Description Information -
        {val3}
        -
        - {chooseItemThree(item)}} - onCancel={() => setIsVisible3(false)} - /> - - ); -}; -export default App; - -``` - -::: - -### Option Status - -:::demo - -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react'; - -const App = () => { - const [isVisible4, setIsVisible4] = useState(false) - const optionsThree: ItemType[] = [ - { - name: 'Shading Options', - danger: true - }, - { - name: 'Disable Option', - disabled: true, - }, - ] - return ( - <> - setIsVisible4(!isVisible4)}> - Option Status - - setIsVisible4(false)} - onSelect={() => { - setIsVisible4(false) - }} - /> - - ); -}; -export default App; - -``` - -::: - -### Custom content - -:::demo - -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react'; - -const App = () => { - const [isVisible5, setIsVisible5] = useState(false) - return ( - <> - setIsVisible5(!isVisible5)}> - Custom content - - { - setIsVisible5(false) - }} - onCancel={() => setIsVisible5(false)} - > -
        - Create A Table -
        -
        - Create A Document -
        -
        - - ); -}; -export default App; - -``` - -::: - -### Custom key - -:::demo - -```tsx -import React, { useState } from "react"; -import { ActionSheet, Cell } from '@nutui/nutui-react'; - -const App = () => { - const [isVisible6, setIsVisible6] = useState(false) - const optionsFour: ItemType[] = [ - { - title: 'Shading Option', - danger: true - }, - { - title: 'Disable Option', - disabled: true, - }, - ] - const optionKey = { - name: 'title', - } - return ( - <> - setIsVisible6(!isVisible6)}> - Custom key - - { - setIsVisible6(false) - }} - onCancel={() => setIsVisible6(false)} - /> - - ); -}; -export default App; - -``` - -::: - -## ActionSheet - -### Props - -| Property | Description | Type | Default | -| --- | --- | --- | --- | -| visible | Mask layer visible | `boolean` | `false` | -| title | Set panel title | `string` | `-` | -| description | Set panel subtitle/description | `string` | `-` | -| cancelText | Cancel Text | `string` | `Cancel` | -| options | Menu Item | `Array` | `[]` | -| optionKey | Menu Item Custom key | `{ [key: string]: string }` | `-` | -| onSelect | Triggered after selection | `(item: any, index: number) => void` | `-` | -| onCancel | Triggered when onCancel copy is clicked | `() => void` | `-` | - -## Theming - -### CSS Variables - -The component provides the following CSS variables, which can be used to customize styles. Please refer to [ConfigProvider component](#/en-US/component/configprovider). - -| Name | Description | Default Value | -| --- | --- | --- | -| \--nutui-actionsheet-background-color | the backgroundColor of actionsheet panel | `$color-background-overlay` | -| \--nutui-actionsheet-border-radius | the borderRadius of list and cancel button | `0` | -| \--nutui-actionsheet-border-color | title border-bottom and cancle border-top | `#f6f6f6` | -| \--nutui-actionsheet-item-text-align | item text align | `center` | -| \--nutui-actionsheet-item-border-bottom | item border bottom | `none` | -| \--nutui-actionsheet-item-line-height | item line height | `24px` | -| \--nutui-actionsheet-item-color | item color | `$color-title` | +# ActionSheet + +## Intro + +Action menu panel that pops up from the bottom. + +## Install + +```tsx +import { ActionSheet } from '@nutui/nutui-react'; +``` + +## Demo + +### Basic usage + +:::demo + + + +::: + +### Show Cancel Button + +:::demo + + + +::: + +### Display Description Information + +:::demo + + + +::: + +### Option Status + +:::demo + + + +::: + +### Custom content + +:::demo + + + +::: + +### Custom key + +:::demo + + + +::: + +## ActionSheet + +### Props + +| Property | Description | Type | Default | +| --- | --- | --- | --- | +| visible | Mask layer visible | `boolean` | `false` | +| title | Set panel title | `string` | `-` | +| description | Set panel subtitle/description | `string` | `-` | +| cancelText | Cancel Text | `string` | `Cancel` | +| options | Menu Item | `Array` | `[]` | +| optionKey | Menu Item Custom key | `{ [key: string]: string }` | `-` | +| onSelect | Triggered after selection | `(item: any, index: number) => void` | `-` | +| onCancel | Triggered when onCancel copy is clicked | `() => void` | `-` | + +## Theming + +### CSS Variables + +The component provides the following CSS variables, which can be used to customize styles. Please refer to [ConfigProvider component](#/en-US/component/configprovider). + +| Name | Description | Default Value | +| --- | --- | --- | +| \--nutui-actionsheet-background-color | the backgroundColor of actionsheet panel | `$color-background-overlay` | +| \--nutui-actionsheet-border-radius | the borderRadius of list and cancel button | `0` | +| \--nutui-actionsheet-border-color | title border-bottom and cancle border-top | `#f6f6f6` | +| \--nutui-actionsheet-item-text-align | item text align | `center` | +| \--nutui-actionsheet-item-border-bottom | item border bottom | `none` | +| \--nutui-actionsheet-item-line-height | item line height | `24px` | +| \--nutui-actionsheet-item-color | item color | `$color-title` | | \--nutui-actionsheet-item-danger | item danger color | `$color-primary` | \ No newline at end of file diff --git a/src/packages/actionsheet/doc.md b/src/packages/actionsheet/doc.md index ecdaa41fee..4e9f97bb82 100644 --- a/src/packages/actionsheet/doc.md +++ b/src/packages/actionsheet/doc.md @@ -1,336 +1,102 @@ -# ActionSheet 动作面板 - -## 介绍 - -从底部弹出的动作菜单面板。 - -## 安装 - -```tsx -import { ActionSheet } from '@nutui/nutui-react'; -``` - -## 代码演示 - -### 基础用法 - -:::demo - -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react'; - -interface Item { - name: string - description?: string - disabled?: boolean -} -const App = () => { - const [val1, setVal1] = useState('') - const [isVisible1, setIsVisible1] = useState(false) - const optionsOne: ItemType[] = [ - { - name: '权限设置', - }, - { - name: '重命名', - }, - { - name: '删除', - }, - ] - const chooseItem = (item: any) => { - setVal1(item.name) - setIsVisible1(false) - } - - return ( - <> - setIsVisible1(!isVisible1)}> - 基础用法 -
        {val1}
        -
        - - {chooseItem(item)}} - onCancel={() => setIsVisible1(false)} - /> - - ); -}; -export default App; - -``` - -::: - -### 展示取消按钮 - -:::demo - -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react'; - -const App = () => { - const [isVisible2, setIsVisible2] = useState(false) - const [val2, setVal2] = useState('') - const optionsOne: ItemType[] = [ - { - name: '权限设置', - }, - { - name: '重命名', - }, - { - name: '删除', - }, - ] - const chooseItemTwo = (item: Item) => { - setVal2(item.name) - setIsVisible2(false) - } - return ( - <> - setIsVisible2(!isVisible2)}> - 展示取消按钮 -
        {val2}
        -
        - - {chooseItemTwo(item)}} - onCancel={() => setIsVisible2(false)} - /> - - ); -}; -export default App; - -``` - -::: - -### 展示描述信息 - -:::demo - -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react'; - -const App = () => { - const [isVisible3, setIsVisible3] = useState(false) - const [val3, setVal3] = useState('') - const optionsTwo: ItemType[] = [ - { - name: '权限设置', - }, - { - name: '重命名', - }, - { - name: '删除', - description: '删除后无法恢复', - }, - ] - const chooseItemThree = (item: Item) => { - setVal3(item.name) - setIsVisible3(false) - } - return ( - <> - setIsVisible3(!isVisible3)}> - 展示描述信息 -
        {val3}
        -
        - {chooseItemThree(item)}} - onCancel={() => setIsVisible3(false)} - /> - - ); -}; -export default App; - -``` - -::: - -### 选项状态 - -:::demo - -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react'; - -const App = () => { - const [isVisible4, setIsVisible4] = useState(false) - const optionsThree: ItemType[] = [ - { - name: '着色选项', - danger: true - }, - { - name: '禁用选项', - disabled: true, - }, - ] - return ( - <> - setIsVisible4(!isVisible4)}> - 选项状态 - - setIsVisible4(false)} - onSelect={() => { - setIsVisible4(false) - }} - /> - - ); -}; -export default App; - -``` - -::: - -### 自定义内容 - -:::demo - -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react'; - -const App = () => { - const [isVisible5, setIsVisible5] = useState(false) - return ( - <> - setIsVisible5(!isVisible5)}> - 自定义内容 - - { - setIsVisible5(false) - }} - onCancel={() => setIsVisible5(false)} - > -
        - 新建表格 -
        -
        - 新建文档 -
        -
        - - ); -}; -export default App; - -``` - -::: - -### 自定义key - -:::demo - -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react'; - -const App = () => { - const [isVisible6, setIsVisible6] = useState(false) - const optionsFour: ItemType[] = [ - { - title: '着色选项', - danger: true - }, - { - title: '禁用选项', - disabled: true, - }, - ] - const optionKey = { - name: 'title', - } - return ( - <> - setIsVisible6(!isVisible6)}> - 自定义key - - { - setIsVisible6(false) - }} - onCancel={() => setIsVisible6(false)} - /> - - ); -}; -export default App; - -``` - -::: - -## ActionSheet - -### Props - -| 属性 | 说明 | 类型 | 默认值 | -| --- | --- | --- | --- | -| visible | 遮罩层可见 | `boolean` | `false` | -| title | 设置列表面板标题 | `string` | `-` | -| description | 设置列表面板副标题/描述 | `string` | `-` | -| options | 列表项 | `Array` | `[]` | -| optionKey | 列表项的自定义设置 | `{ [key: string]: string }` | `-` | -| cancelText | 取消文案 | `string` | `取消` | -| onSelect | 选择之后触发 | `(item: any, index: number) => void` | `-` | -| onCancel | 点击取消文案时触发 | `() => void` | `-` | - -### options - -| 属性 | 说明 | 类型 | 默认值 | -| --- | --- | --- | --- | -| name | 列表项的标题key值 | `string` | `-` | -| description | 列表项的描述key值 | `string` | `-` | -| danger | 高亮颜色 | `string` | `$color-primary` | -| disabled | 禁用状态 | `string` | `$disabled-color` | - -## 主题定制 - -### 样式变量 - -组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider 组件](#/zh-CN/component/configprovider)。 - -| 名称 | 说明 | 默认值 | -| --- | --- | --- | -| \--nutui-actionsheet-background-color | 背景色 | `$color-background-overlay` | -| \--nutui-actionsheet-border-radius | 列表和取消按钮圆角 | `0` | -| \--nutui-actionsheet-border-color | 标题和取消位置的border色值 | `#f6f6f6` | -| \--nutui-actionsheet-item-text-align | 列表项的文字对齐方式 | `center` | -| \--nutui-actionsheet-item-border-bottom | 列表项的底部border | `none` | -| \--nutui-actionsheet-item-line-height | 列表项行高 | `24px` | -| \--nutui-actionsheet-item-color | 列表项字色 | `$color-title` | +# ActionSheet 动作面板 + +## 介绍 + +从底部弹出的动作菜单面板。 + +## 安装 + +```tsx +import { ActionSheet } from '@nutui/nutui-react'; +``` + +## 代码演示 + +### 基础用法 + +:::demo + + + +::: + +### 展示取消按钮 + +:::demo + + + +::: + +### 展示描述信息 + +:::demo + + + +::: + +### 选项状态 + +:::demo + + + +::: + +### 自定义内容 + +:::demo + + + +::: + +### 自定义key + +:::demo + + + +::: + +## ActionSheet + +### Props + +| 属性 | 说明 | 类型 | 默认值 | +| --- | --- | --- | --- | +| visible | 遮罩层可见 | `boolean` | `false` | +| title | 设置列表面板标题 | `string` | `-` | +| description | 设置列表面板副标题/描述 | `string` | `-` | +| options | 列表项 | `Array` | `[]` | +| optionKey | 列表项的自定义设置 | `{ [key: string]: string }` | `-` | +| cancelText | 取消文案 | `string` | `取消` | +| onSelect | 选择之后触发 | `(item: any, index: number) => void` | `-` | +| onCancel | 点击取消文案时触发 | `() => void` | `-` | + +### options + +| 属性 | 说明 | 类型 | 默认值 | +| --- | --- | --- | --- | +| name | 列表项的标题key值 | `string` | `-` | +| description | 列表项的描述key值 | `string` | `-` | +| danger | 高亮颜色 | `string` | `$color-primary` | +| disabled | 禁用状态 | `string` | `$disabled-color` | + +## 主题定制 + +### 样式变量 + +组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider 组件](#/zh-CN/component/configprovider)。 + +| 名称 | 说明 | 默认值 | +| --- | --- | --- | +| \--nutui-actionsheet-background-color | 背景色 | `$color-background-overlay` | +| \--nutui-actionsheet-border-radius | 列表和取消按钮圆角 | `0` | +| \--nutui-actionsheet-border-color | 标题和取消位置的border色值 | `#f6f6f6` | +| \--nutui-actionsheet-item-text-align | 列表项的文字对齐方式 | `center` | +| \--nutui-actionsheet-item-border-bottom | 列表项的底部border | `none` | +| \--nutui-actionsheet-item-line-height | 列表项行高 | `24px` | +| \--nutui-actionsheet-item-color | 列表项字色 | `$color-title` | | \--nutui-actionsheet-item-danger | 列表项danger字色 | `$color-primary` | \ No newline at end of file diff --git a/src/packages/actionsheet/doc.taro.md b/src/packages/actionsheet/doc.taro.md index eedbbf1802..b2c1080c9e 100644 --- a/src/packages/actionsheet/doc.taro.md +++ b/src/packages/actionsheet/doc.taro.md @@ -1,336 +1,102 @@ -# ActionSheet 动作面板 - -## 介绍 - -从底部弹出的动作菜单面板。 - -## 安装 - -```tsx -import { ActionSheet } from '@nutui/nutui-react-taro'; -``` - -## 代码演示 - -### 基础用法 - -:::demo - -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react-taro'; - -interface Item { - name: string - description?: string - disabled?: boolean -} -const App = () => { - const [val1, setVal1] = useState('') - const [isVisible1, setIsVisible1] = useState(false) - const optionsOne: ItemType[] = [ - { - name: '权限设置', - }, - { - name: '重命名', - }, - { - name: '删除', - }, - ] - const chooseItem = (item: any) => { - setVal1(item.name) - setIsVisible1(false) - } - - return ( - <> - setIsVisible1(!isVisible1)}> - 基础用法 -
        {val1}
        -
        - - {chooseItem(item)}} - onCancel={() => setIsVisible1(false)} - /> - - ); -}; -export default App; - -``` - -::: - -### 展示取消按钮 - -:::demo - -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react-taro'; - -const App = () => { - const [isVisible2, setIsVisible2] = useState(false) - const [val2, setVal2] = useState('') - const optionsOne: ItemType[] = [ - { - name: '权限设置', - }, - { - name: '重命名', - }, - { - name: '删除', - }, - ] - const chooseItemTwo = (item: Item) => { - setVal2(item.name) - setIsVisible2(false) - } - return ( - <> - setIsVisible2(!isVisible2)}> - 展示取消按钮 -
        {val2}
        -
        - - {chooseItemTwo(item)}} - onCancel={() => setIsVisible2(false)} - /> - - ); -}; -export default App; - -``` - -::: - -### 展示描述信息 - -:::demo - -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react-taro'; - -const App = () => { - const [isVisible3, setIsVisible3] = useState(false) - const [val3, setVal3] = useState('') - const optionsTwo: ItemType[] = [ - { - name: '权限设置', - }, - { - name: '重命名', - }, - { - name: '删除', - description: '删除后无法恢复', - }, - ] - const chooseItemThree = (item: Item) => { - setVal3(item.name) - setIsVisible3(false) - } - return ( - <> - setIsVisible3(!isVisible3)}> - 展示描述信息 -
        {val3}
        -
        - {chooseItemThree(item)}} - onCancel={() => setIsVisible3(false)} - /> - - ); -}; -export default App; - -``` - -::: - -### 选项状态 - -:::demo - -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react-taro'; - -const App = () => { - const [isVisible4, setIsVisible4] = useState(false) - const optionsThree: ItemType[] = [ - { - name: '着色选项', - danger: true - }, - { - name: '禁用选项', - disabled: true, - }, - ] - return ( - <> - setIsVisible4(!isVisible4)}> - 选项状态 - - setIsVisible4(false)} - onSelect={() => { - setIsVisible4(false) - }} - /> - - ); -}; -export default App; - -``` - -::: - -### 自定义内容 - -:::demo - -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react-taro'; - -const App = () => { - const [isVisible5, setIsVisible5] = useState(false) - return ( - <> - setIsVisible5(!isVisible5)}> - 自定义内容 - - { - setIsVisible5(false) - }} - onCancel={() => setIsVisible5(false)} - > -
        - 新建表格 -
        -
        - 新建文档 -
        -
        - - ); -}; -export default App; - -``` - -::: - -### 自定义key - -:::demo - -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react-taro'; - -const App = () => { - const [isVisible6, setIsVisible6] = useState(false) - const optionsFour: ItemType[] = [ - { - title: '着色选项', - danger: true - }, - { - title: '禁用选项', - disabled: true, - }, - ] - const optionKey = { - name: 'title', - } - return ( - <> - setIsVisible6(!isVisible6)}> - 自定义key - - { - setIsVisible6(false) - }} - onCancel={() => setIsVisible6(false)} - /> - - ); -}; -export default App; - -``` - -::: - -## ActionSheet - -### Props - -| 属性 | 说明 | 类型 | 默认值 | -| --- | --- | --- | --- | -| visible | 遮罩层可见 | `boolean` | `false` | -| title | 设置列表面板标题 | `string` | `-` | -| description | 设置列表面板副标题/描述 | `string` | `-` | -| options | 列表项 | `Array` | `[]` | -| optionKey | 列表项的自定义设置 | `{ [key: string]: string }` | `-` | -| cancelText | 取消文案 | `string` | `取消` | -| onSelect | 选择之后触发 | `(item: any, index: number) => void` | `-` | -| onCancel | 点击取消文案时触发 | `() => void` | `-` | - -### options - -| 属性 | 说明 | 类型 | 默认值 | -| --- | --- | --- | --- | -| name | 列表项的标题key值 | `string` | `-` | -| description | 列表项的描述key值 | `string` | `-` | -| danger | 高亮颜色 | `string` | `$color-primary` | -| disabled | 禁用状态 | `string` | `$disabled-color` | - -## 主题定制 - -### 样式变量 - -组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider 组件](#/zh-CN/component/configprovider)。 - -| 名称 | 说明 | 默认值 | -| --- | --- | --- | -| \--nutui-actionsheet-background-color | 背景色 | `$color-background-overlay` | -| \--nutui-actionsheet-border-radius | 列表和取消按钮圆角 | `0` | -| \--nutui-actionsheet-border-color | 标题和取消位置的border色值 | `#f6f6f6` | -| \--nutui-actionsheet-item-text-align | 列表项的文字对齐方式 | `center` | -| \--nutui-actionsheet-item-border-bottom | 列表项的底部border | `none` | -| \--nutui-actionsheet-item-line-height | 列表项行高 | `24px` | -| \--nutui-actionsheet-item-color | 列表项字色 | `$color-title` | +# ActionSheet 动作面板 + +## 介绍 + +从底部弹出的动作菜单面板。 + +## 安装 + +```tsx +import { ActionSheet } from '@nutui/nutui-react-taro'; +``` + +## 代码演示 + +### 基础用法 + +:::demo + + + +::: + +### 展示取消按钮 + +:::demo + + + +::: + +### 展示描述信息 + +:::demo + + + +::: + +### 选项状态 + +:::demo + + + +::: + +### 自定义内容 + +:::demo + + + +::: + +### 自定义key + +:::demo + + + +::: + +## ActionSheet + +### Props + +| 属性 | 说明 | 类型 | 默认值 | +| --- | --- | --- | --- | +| visible | 遮罩层可见 | `boolean` | `false` | +| title | 设置列表面板标题 | `string` | `-` | +| description | 设置列表面板副标题/描述 | `string` | `-` | +| options | 列表项 | `Array` | `[]` | +| optionKey | 列表项的自定义设置 | `{ [key: string]: string }` | `-` | +| cancelText | 取消文案 | `string` | `取消` | +| onSelect | 选择之后触发 | `(item: any, index: number) => void` | `-` | +| onCancel | 点击取消文案时触发 | `() => void` | `-` | + +### options + +| 属性 | 说明 | 类型 | 默认值 | +| --- | --- | --- | --- | +| name | 列表项的标题key值 | `string` | `-` | +| description | 列表项的描述key值 | `string` | `-` | +| danger | 高亮颜色 | `string` | `$color-primary` | +| disabled | 禁用状态 | `string` | `$disabled-color` | + +## 主题定制 + +### 样式变量 + +组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 [ConfigProvider 组件](#/zh-CN/component/configprovider)。 + +| 名称 | 说明 | 默认值 | +| --- | --- | --- | +| \--nutui-actionsheet-background-color | 背景色 | `$color-background-overlay` | +| \--nutui-actionsheet-border-radius | 列表和取消按钮圆角 | `0` | +| \--nutui-actionsheet-border-color | 标题和取消位置的border色值 | `#f6f6f6` | +| \--nutui-actionsheet-item-text-align | 列表项的文字对齐方式 | `center` | +| \--nutui-actionsheet-item-border-bottom | 列表项的底部border | `none` | +| \--nutui-actionsheet-item-line-height | 列表项行高 | `24px` | +| \--nutui-actionsheet-item-color | 列表项字色 | `$color-title` | | \--nutui-actionsheet-item-danger | 列表项danger字色 | `$color-primary` | \ No newline at end of file diff --git a/src/packages/actionsheet/doc.zh-TW.md b/src/packages/actionsheet/doc.zh-TW.md index 7ddfae4699..6f988011c7 100644 --- a/src/packages/actionsheet/doc.zh-TW.md +++ b/src/packages/actionsheet/doc.zh-TW.md @@ -12,57 +12,11 @@ import { ActionSheet } from '@nutui/nutui-react'; ## 代碼演示 -### 基础用法 +### 基礎用法 :::demo -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react'; - -interface Item { - name: string - description?: string - disabled?: boolean -} -const App = () => { - const [val1, setVal1] = useState('') - const [isVisible1, setIsVisible1] = useState(false) - const optionsOne: ItemType[] = [ - { - name: '權限設定', - }, - { - name: '重命名', - }, - { - name: '刪除', - }, - ] - const chooseItem = (item: any) => { - setVal1(item.name) - setIsVisible1(false) - } - - return ( - <> - setIsVisible1(!isVisible1)}> - 基礎用法 -
        {val1}
        -
        - - {chooseItem(item)}} - onCancel={() => setIsVisible1(false)} - /> - - ); -}; -export default App; - -``` + ::: @@ -70,48 +24,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react'; - -const App = () => { - const [isVisible2, setIsVisible2] = useState(false) - const [val2, setVal2] = useState('') - const optionsOne: ItemType[] = [ - { - name: '權限設定', - }, - { - name: '重命名', - }, - { - name: '刪除', - }, - ] - const chooseItemTwo = (item: Item) => { - setVal2(item.name) - setIsVisible2(false) - } - return ( - <> - setIsVisible2(!isVisible2)}> - 展示取消按鈕 -
        {val2}
        -
        - - {chooseItemTwo(item)}} - onCancel={() => setIsVisible2(false)} - /> - - ); -}; -export default App; - -``` + ::: @@ -119,50 +32,8 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react'; - -const App = () => { - const [isVisible3, setIsVisible3] = useState(false) - const [val3, setVal3] = useState('') - const optionsTwo: ItemType[] = [ - { - name: '權限設定', - }, - { - name: '重命名', - }, - { - name: '刪除', - description: '刪除後無法恢復', - }, - ] - const chooseItemThree = (item: Item) => { - setVal3(item.name) - setIsVisible3(false) - } - return ( - <> - setIsVisible3(!isVisible3)}> - 展示描述信息 -
        {val3}
        -
        - {chooseItemThree(item)}} - onCancel={() => setIsVisible3(false)} - /> - - ); -}; -export default App; -``` + ::: @@ -170,42 +41,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react'; - -const App = () => { - const [isVisible4, setIsVisible4] = useState(false) - const optionsThree: ItemType[] = [ - { - name: '著色選項', - danger: true - }, - { - name: '禁用選項', - disabled: true, - }, - ] - return ( - <> - setIsVisible4(!isVisible4)}> - 選項狀態 - - setIsVisible4(false)} - onSelect={() => { - setIsVisible4(false) - }} - /> - - ); -}; -export default App; - -``` + ::: @@ -213,38 +49,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react'; - -const App = () => { - const [isVisible5, setIsVisible5] = useState(false) - return ( - <> - setIsVisible5(!isVisible5)}> - 自定義內容 - - { - setIsVisible5(false) - }} - onCancel={() => setIsVisible5(false)} - > -
        - 新建錶格 -
        -
        - 新建文檔 -
        -
        - - ); -}; -export default App; - -``` + ::: @@ -252,45 +57,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { ActionSheet,Cell } from '@nutui/nutui-react'; - -const App = () => { - const [isVisible6, setIsVisible6] = useState(false) - const optionsFour: ItemType[] = [ - { - title: '著色選項', - danger: true - }, - { - title: '禁用選項', - disabled: true, - }, - ] - const optionKey = { - name: 'title', - } - return ( - <> - setIsVisible6(!isVisible6)}> - 自定義key - - { - setIsVisible6(false) - }} - onCancel={() => setIsVisible6(false)} - /> - - ); -}; -export default App; - -``` + ::: diff --git a/src/packages/actionsheet/index.taro.ts b/src/packages/actionsheet/index.taro.ts index 78a6b44854..92381c5906 100644 --- a/src/packages/actionsheet/index.taro.ts +++ b/src/packages/actionsheet/index.taro.ts @@ -1,5 +1,5 @@ import { ActionSheet } from './actionsheet.taro' -export type { ItemType, ActionSheetProps } from './actionsheet.taro' +export type { ActionSheetOption, ActionSheetProps } from './actionsheet.taro' export default ActionSheet diff --git a/src/packages/actionsheet/index.ts b/src/packages/actionsheet/index.ts index 031fe682b1..07edce9211 100644 --- a/src/packages/actionsheet/index.ts +++ b/src/packages/actionsheet/index.ts @@ -1,5 +1,5 @@ import { ActionSheet } from './actionsheet' -export type { ItemType, ActionSheetProps } from './actionsheet' +export type { ActionSheetOption, ActionSheetProps } from './actionsheet' export default ActionSheet diff --git a/src/packages/address/__test__/__snapshots__/address.spec.tsx.snap b/src/packages/address/__test__/__snapshots__/address.spec.tsx.snap index 9b7889c278..d8a534b6da 100644 --- a/src/packages/address/__test__/__snapshots__/address.spec.tsx.snap +++ b/src/packages/address/__test__/__snapshots__/address.spec.tsx.snap @@ -1,7 +1,7 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`Address: exist defaultIcon & selectIcon 1`] = `"
        请选择地址
        • 123
          探探鱼
          182****1718
          北京市次渠镇通州区
        • 123
          探探鱼
          182****1718
          钓鱼岛钓鱼岛全区
        • 456
          探探鱼
          182****1718
          北京市大兴区科创十一街18号院京东大厦
        "`; -exports[`Address: show custom 1`] = `"
        选择地址
        请选择
        浙江
        湖南
        福建
        "`; +exports[`Address: show custom 1`] = `"
        选择地址
        请选择
        浙江
        湖南
        福建
        "`; exports[`Address: show exist 1`] = `"
        选择地址
        • 探探鱼
          182****1718
          北京市次渠镇通州区
        • ,
          探探鱼
          182****1718
          钓鱼岛钓鱼岛全区
        • ,
          探探鱼
          182****1718
          北京市大兴区科创十一街18号院京东大厦
        "`; diff --git a/src/packages/address/__test__/address.spec.tsx b/src/packages/address/__test__/address.spec.tsx index 8cc52bf28e..bb69e02c95 100644 --- a/src/packages/address/__test__/address.spec.tsx +++ b/src/packages/address/__test__/address.spec.tsx @@ -143,7 +143,7 @@ test('Address: show exist', async () => { }) test('Address: choose exist item', async () => { - const onSelect = jest.fn() + const onSelect = vi.fn() const { container } = render(
        { expect(items[1].innerHTML).toContain('
        456
        ') }) -function sleep(delay = 0): Promise { - return new Promise((resolve) => { - setTimeout(resolve, delay) - }) -} - describe('Address', () => { interface WrapperProps { visible: boolean @@ -211,28 +205,16 @@ describe('Address', () => { const screen = render() fireEvent.click(screen.getByText('Open')) - await waitFor( - async () => { - await sleep(1000) - const title = screen.container.querySelector('.nut-popup-title-title') - expect(title?.innerHTML).toBe('选择地址') - }, - { - timeout: 2000, - } - ) + await waitFor(() => { + const title = screen.container.querySelector('.nut-popup-title-title') + expect(title?.innerHTML).toBe('选择地址') + }) fireEvent.click(screen.getByText('Close')) - await waitFor( - async () => { - await sleep(1000) - expect(screen.container.querySelector('.nut-popup-title-title')).toBe( - null - ) - }, - { - timeout: 2000, - } - ) + await waitFor(() => { + expect( + screen.container.querySelector('.nut-popup-title-title')?.innerHTML + ).toBe('选择地址') + }) }) }) diff --git a/src/packages/address/address.scss b/src/packages/address/address.scss index 7114f22913..641043bf3b 100644 --- a/src/packages/address/address.scss +++ b/src/packages/address/address.scss @@ -51,3 +51,15 @@ } } } + +[dir='rtl'] .nut-address, +.nut-rtl .nut-address { + &-exist { + &-item { + &-info { + margin-left: 0; + margin-right: 9px; + } + } + } +} diff --git a/src/packages/address/customRender.taro.tsx b/src/packages/address/customRender.taro.tsx index 305596f5d6..77e8f7f80b 100644 --- a/src/packages/address/customRender.taro.tsx +++ b/src/packages/address/customRender.taro.tsx @@ -71,8 +71,8 @@ export const CustomRender: FunctionComponent< onClose={() => { onClose?.() }} - onChange={(val) => { - onChange?.(val) + onChange={(val, params) => { + onChange?.(val, params) }} onPathChange={onPathChange} {...rest} diff --git a/src/packages/address/customRender.tsx b/src/packages/address/customRender.tsx index d77df08682..cbd12a95db 100644 --- a/src/packages/address/customRender.tsx +++ b/src/packages/address/customRender.tsx @@ -71,8 +71,8 @@ export const CustomRender: FunctionComponent< onClose={() => { onClose?.() }} - onChange={(val) => { - onChange?.(val) + onChange={(val, params) => { + onChange?.(val, params) }} onPathChange={onPathChange} {...rest} diff --git a/src/packages/address/demo.taro.tsx b/src/packages/address/demo.taro.tsx index 9d7d29c1c1..e3e4681a01 100644 --- a/src/packages/address/demo.taro.tsx +++ b/src/packages/address/demo.taro.tsx @@ -1,597 +1,58 @@ -import React, { useState, useRef } from 'react' +import React from 'react' import Taro from '@tarojs/taro' -import { Heart } from '@nutui/icons-react-taro' -import { Address, Cell } from '@/packages/nutui.react.taro' import Header from '@/sites/components/header' import { useTranslate } from '@/sites/assets/locale/taro' +import Demo1 from './demos/taro/demo1' +import Demo2 from './demos/taro/demo2' +import Demo3 from './demos/taro/demo3' +import Demo4 from './demos/taro/demo4' +import Demo5 from './demos/taro/demo5' +import Demo6 from './demos/taro/demo6' -interface RegionData { - name?: string - [key: string]: any -} -interface AddressList { - id?: string | number - provinceName: string - cityName: string - countyName: string - townName: string - addressDetail: string - selectedAddress: boolean - name?: string - phone?: string -} -interface AddressResult extends AddressList { - addressIdStr: string - addressStr: string - province: RegionData[] - city: RegionData[] - county: RegionData[] - town: RegionData[] -} - -interface T { - [props: string]: string -} const AddressDemo = () => { - const addressRef = useRef(null) - - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { - basic: '基础用法', - title: '选择地址', customAddress: '选择自定义地址', selectCity: '选中省市区', - customAddress2: '选择自定义地址2', existList: '选择已有地址', icon: '自定义图标', change: '自定义地址与已有地址切换', - delivery: '配送', - other: '选择其他地址', uncontrolled: '非受控方式', }, 'zh-TW': { - basic: '基础用法', - title: '選擇地址', customAddress: '選擇自定義地址', selectCity: '選中省市區', - customAddress2: '選擇自定義地址2', existList: '選擇已有地址', icon: '自定義圖標', change: '自定義地址與已有地址切換', - delivery: '配送', - other: '選擇其他地址', uncontrolled: '非受控方式', }, 'en-US': { - basic: 'Basic Usage', - title: 'Choose Address', customAddress: 'Choose Custom Address', selectCity: 'Choose City', - customAddress2: 'Choose Custom Address2', existList: 'Choose Exist Address', icon: 'Custom Icon', change: 'Custom Or Exist', - delivery: 'Delivery', - other: 'Choose Other Address', uncontrolled: 'Uncontrolled', }, }) - const [value2] = useState(['福建', '福州', '台江区']) - - const [optionsDemo1] = useState([ - { - value: '浙江', - text: '浙江', - children: [ - { - value: '杭州', - text: '杭州', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区', disabled: true }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '湖南', - text: '湖南', - disabled: true, - children: [ - { - value: '长沙', - text: '长沙', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区' }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '福建', - text: '福建', - children: [ - { - value: '福州', - text: '福州', - children: [ - { value: '鼓楼区', text: '鼓楼区' }, - { value: '台江区', text: '台江区' }, - ], - }, - ], - }, - { - value: '河北', - text: '河北', - children: [], - }, - { - value: '上海', - text: '上海', - children: [], - }, - { - value: '新疆', - text: '新疆', - children: [], - }, - { - value: '广东', - text: '广东', - children: [], - }, - { - value: '广西', - text: '广西', - children: [], - }, - { - value: '辽宁', - text: '辽宁', - children: [], - }, - { - value: '山西', - text: '山西', - children: [], - }, - { - value: '黑龙江', - text: '黑龙江', - children: [], - }, - ]) - - const [optionsDemo2] = useState([ - { - value1: '浙江', - text1: '浙江', - items: [ - { - value1: '杭州', - text1: '杭州', - disabled: true, - items: [ - { value1: '西湖区', text1: '西湖区', disabled: true }, - { value1: '余杭区', text1: '余杭区' }, - ], - }, - { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, - ], - }, - ], - }, - { - value1: '湖南', - text1: '湖南', - disabled: true, - items: [ - { - value1: '长沙', - text1: '长沙', - disabled: true, - items: [ - { value1: '西湖区', text1: '西湖区' }, - { value1: '余杭区', text1: '余杭区' }, - ], - }, - { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, - ], - }, - ], - }, - { - value1: '福建', - text1: '福建', - items: [ - { - value1: '福州', - text1: '福州', - items: [ - { value1: '鼓楼区', text1: '鼓楼区' }, - { value1: '台江区', text1: '台江区' }, - ], - }, - ], - }, - ]) - - const [optionsDemo5] = useState([ - { value: '北京', text: '北京', id: 1, pidd: null }, - { value: '朝阳区', text: '朝阳区', id: 11, pidd: 1 }, - { value: '亦庄', text: '亦庄', id: 111, pidd: 11 }, - { value: '广东省', text: '广东省', id: 2, pidd: null }, - { value: '广州市', text: '广州市', id: 21, pidd: 2 }, - ]) - - const [convertConfigDemo5] = useState({ - topId: null, - idKey: 'id', - pidKey: 'pidd', - sortKey: '', - }) - const [text, setText] = useState({ - one: translated.title, - two: translated.title, - three: translated.title, - four: translated.title, - five: translated.title, - six: translated.title, - seven: translated.title, - }) - - const [showPopup, setShowPopup] = useState({ - normal: false, - normal2: false, - exist: false, - customImg: false, - other: false, - select: false, - }) - - const [icon, setIcon] = useState({ - selectIcon: , - defaultIcon: , - closeIcon: , - }) - - const [existList2, setExistList2] = useState([ - { - id: 1, - addressDetail: '', - cityName: '次渠镇', - countyName: '通州区', - provinceName: '北京市', - selectedAddress: true, - townName: '', - name: '探探鱼1', - phone: '182****1718', - }, - { - id: 2, - addressDetail: '', - cityName: '钓鱼岛全区', - countyName: '', - provinceName: '钓鱼岛', - selectedAddress: false, - townName: '', - name: '探探鱼2', - phone: '182****1718', - }, - { - id: 3, - addressDetail: '京东大厦', - cityName: '大兴区', - countyName: '科创十一街18号院', - provinceName: '北京市', - selectedAddress: false, - townName: '', - name: '探探鱼3', - phone: '182****1718', - }, - ]) - - const [existList3] = useState([ - { - id: 10, - addressDetail: '', - cityName: '次渠镇', - countyName: '通州区', - provinceName: '北京市', - selectedAddress: true, - townName: '', - name: '探探鱼10', - phone: '182****1718', - }, - { - id: 20, - addressDetail: '', - cityName: '钓鱼岛全区', - countyName: '', - provinceName: '钓鱼岛', - selectedAddress: false, - townName: '', - name: '探探鱼20', - phone: '182****1718', - }, - { - id: 30, - addressDetail: '京东大厦', - cityName: '大兴区', - countyName: '科创十一街18号院', - provinceName: '北京市', - selectedAddress: false, - townName: '', - name: '探探鱼30', - phone: '182****1718', - }, - ]) - - const [existList4] = useState([ - { - id: 100, - addressDetail: '', - cityName: '次渠镇', - countyName: '通州区', - provinceName: '北京市', - selectedAddress: true, - townName: '', - name: '探探鱼100', - phone: '182****1718', - }, - { - id: 200, - addressDetail: '', - cityName: '钓鱼岛全区', - countyName: '', - provinceName: '钓鱼岛', - selectedAddress: false, - townName: '', - name: '探探鱼200', - phone: '182****1718', - }, - { - id: 300, - addressDetail: '京东大厦', - cityName: '大兴区', - countyName: '科创十一街18号院', - provinceName: '北京市', - selectedAddress: false, - townName: '', - name: '探探鱼300', - phone: '182****1718', - }, - ]) - - const showAddress = (tag: string) => { - setShowPopup({ - ...showPopup, - [tag]: true, - }) - } - - const closeAddress = (tag: string) => { - setShowPopup({ - ...showPopup, - [tag]: false, - }) - } - - const selectedTwo = (data: AddressList) => { - console.log('选择2', data) - const { provinceName, cityName, countyName, townName, addressDetail } = - data as AddressResult - if (provinceName) { - setText({ - ...text, - two: provinceName + cityName + countyName + townName + addressDetail, - }) - } - } - - const selectedThree = (data: AddressList) => { - console.log('选择3', data) - const { provinceName, cityName, countyName, townName, addressDetail } = - data as AddressResult - if (provinceName) { - setText({ - ...text, - three: provinceName + cityName + countyName + townName + addressDetail, - }) - } - } - - const selectedFour = (data: AddressList) => { - console.log('选择4', data) - const { provinceName, cityName, countyName, townName, addressDetail } = - data as AddressResult - if (provinceName) { - setText({ - ...text, - four: provinceName + cityName + countyName + townName + addressDetail, - }) - } - } - const [customeTitle, setCustomTitle] = useState('选择已有地址') - - const onSwitch = (val: { type: string }) => { - if (val.type === 'custom') { - setCustomTitle('选择已有地址') - console.log('点击了“选择其他地址”按钮') - } else { - setCustomTitle('重新选择地址') - console.log('点击了自定义地址左上角的返回按钮', showPopup.other) - } - } - - const change1 = (value: any, path: any, type: string) => { - console.log('change1', value, path) - setText({ - ...text, - [type]: value, - }) - } - return ( <>
        -

        {translated.title}

        - showAddress('normal')} - /> +

        {translated.customAddress}

        +

        {translated.selectCity}

        - showAddress('select')} - /> - {/*

        {translated.customAddress2}

        - showAddress('normal2')} - /> */} +

        {translated.existList}

        - showAddress('exist')} - /> +

        {translated.icon}

        - showAddress('customImg')} - /> +

        {translated.change}

        - showAddress('other')} - /> +

        {translated.uncontrolled}

        - addressRef.current?.open()} - /> - -
        { - change1(value, params, 'one') - }} - onClose={() => closeAddress('normal')} - /> - -
        { - change1(value, params, 'six') - }} - onClose={() => closeAddress('select')} - /> - -
        { - change1(value, params, 'five') - }} - onClose={() => closeAddress('normal2')} - /> - -
        closeAddress('exist')} - /> - -
        closeAddress('customImg')} - /> - -
        { - change1(value, params, 'four') - }} - onClose={() => closeAddress('other')} - /> - -
        { - change1(value, params, 'one') - }} - onClose={() => addressRef.current?.close()} - /> +
        ) diff --git a/src/packages/address/demo.tsx b/src/packages/address/demo.tsx index 04ea5a4c2e..8d55cf1c2b 100644 --- a/src/packages/address/demo.tsx +++ b/src/packages/address/demo.tsx @@ -1,546 +1,55 @@ -import React, { useState, useRef } from 'react' -import { Heart } from '@nutui/icons-react' +import React from 'react' import { useTranslate } from '../../sites/assets/locale' -import { Address } from './address' -import Cell from '@/packages/cell' - -interface RegionData { - name?: string - [key: string]: any -} -interface AddressList { - id?: string | number - provinceName: string - cityName: string - countyName: string - townName: string - addressDetail: string - selectedAddress: boolean - name?: string - phone?: string -} -interface AddressResult extends AddressList { - addressIdStr: string - addressStr: string - province: RegionData[] - city: RegionData[] - county: RegionData[] - town: RegionData[] -} - -interface T { - [props: string]: string -} +import Demo1 from './demos/h5/demo1' +import Demo2 from './demos/h5/demo2' +import Demo3 from './demos/h5/demo3' +import Demo4 from './demos/h5/demo4' +import Demo5 from './demos/h5/demo5' +import Demo6 from './demos/h5/demo6' const AddressDemo = () => { - const addressRef = useRef(null) - - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { - basic: '基础用法', - title: '选择地址', customAddress: '选择自定义地址', selectCity: '选中省市区', - customAddress2: '选择自定义地址2', existList: '选择已有地址', icon: '自定义图标', change: '自定义地址与已有地址切换', - delivery: '配送', - other: '选择其他地址', uncontrolled: '非受控方式', }, 'zh-TW': { - basic: '基础用法', - title: '選擇地址', customAddress: '選擇自定義地址', selectCity: '選中省市區', - customAddress2: '選擇自定義地址2', existList: '選擇已有地址', icon: '自定義圖標', change: '自定義地址與已有地址切換', - delivery: '配送', - other: '選擇其他地址', uncontrolled: '非受控方式', }, 'en-US': { - basic: 'Basic Usage', - title: 'Choose Address', customAddress: 'Choose Custom Address', selectCity: 'Choose City', - customAddress2: 'Choose Custom Address2', existList: 'Choose Exist Address', icon: 'Custom Icon', change: 'Custom Or Exist', - delivery: 'Delivery', - other: 'Choose Other Address', uncontrolled: 'Uncontrolled', }, }) - const [value2] = useState(['福建', '福州', '台江区']) - - const [optionsDemo1] = useState([ - { - value: '浙江', - text: '浙江', - children: [ - { - value: '杭州', - text: '杭州', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区', disabled: true }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '湖南', - text: '湖南', - disabled: true, - children: [ - { - value: '长沙', - text: '长沙', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区' }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '福建', - text: '福建', - children: [ - { - value: '福州', - text: '福州', - children: [ - { value: '鼓楼区', text: '鼓楼区' }, - { value: '台江区', text: '台江区' }, - ], - }, - ], - }, - ]) - - const [optionsDemo2] = useState([ - { - value1: '浙江', - text1: '浙江', - items: [ - { - value1: '杭州', - text1: '杭州', - disabled: true, - items: [ - { value1: '西湖区', text1: '西湖区', disabled: true }, - { value1: '余杭区', text1: '余杭区' }, - ], - }, - { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, - ], - }, - ], - }, - { - value1: '湖南', - text1: '湖南', - disabled: true, - items: [ - { - value1: '长沙', - text1: '长沙', - disabled: true, - items: [ - { value1: '西湖区', text1: '西湖区' }, - { value1: '余杭区', text1: '余杭区' }, - ], - }, - { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, - ], - }, - ], - }, - { - value1: '福建', - text1: '福建', - items: [ - { - value1: '福州', - text1: '福州', - items: [ - { value1: '鼓楼区', text1: '鼓楼区' }, - { value1: '台江区', text1: '台江区' }, - ], - }, - ], - }, - ]) - - const [optionsDemo5] = useState([ - { value: '北京', text: '北京', id: 1, pidd: null }, - { value: '朝阳区', text: '朝阳区', id: 11, pidd: 1 }, - { value: '亦庄', text: '亦庄', id: 111, pidd: 11 }, - { value: '广东省', text: '广东省', id: 2, pidd: null }, - { value: '广州市', text: '广州市', id: 21, pidd: 2 }, - ]) - - const [convertConfigDemo5] = useState({ - topId: null, - idKey: 'id', - pidKey: 'pidd', - sortKey: '', - }) - - const [text, setText] = useState({ - one: translated.title, - two: translated.title, - three: translated.title, - four: translated.title, - five: translated.title, - six: translated.title, - seven: translated.title, - }) - - const [showPopup, setShowPopup] = useState({ - normal: false, - normal2: false, - exist: false, - customImg: false, - other: false, - select: false, - }) - - const [icon, setIcon] = useState({ - selectIcon: , - defaultIcon: , - closeIcon: , - }) - - const [existList2, setExistList2] = useState([ - { - id: 1, - addressDetail: '', - cityName: '次渠镇', - countyName: '通州区', - provinceName: '北京市', - selectedAddress: true, - townName: '', - name: '探探鱼1', - phone: '182****1718', - }, - { - id: 2, - addressDetail: '', - cityName: '钓鱼岛全区', - countyName: '', - provinceName: '钓鱼岛', - selectedAddress: false, - townName: '', - name: '探探鱼2', - phone: '182****1718', - }, - { - id: 3, - addressDetail: '京东大厦', - cityName: '大兴区', - countyName: '科创十一街18号院', - provinceName: '北京市', - selectedAddress: false, - townName: '', - name: '探探鱼3', - phone: '182****1718', - }, - ]) - - const [existList3] = useState([ - { - id: 10, - addressDetail: '', - cityName: '次渠镇', - countyName: '通州区', - provinceName: '北京市', - selectedAddress: true, - townName: '', - name: '探探鱼10', - phone: '182****1718', - }, - { - id: 20, - addressDetail: '', - cityName: '钓鱼岛全区', - countyName: '', - provinceName: '钓鱼岛', - selectedAddress: false, - townName: '', - name: '探探鱼20', - phone: '182****1718', - }, - { - id: 30, - addressDetail: '京东大厦', - cityName: '大兴区', - countyName: '科创十一街18号院', - provinceName: '北京市', - selectedAddress: false, - townName: '', - name: '探探鱼30', - phone: '182****1718', - }, - ]) - - const [existList4] = useState([ - { - id: 100, - addressDetail: '', - cityName: '次渠镇', - countyName: '通州区', - provinceName: '北京市', - selectedAddress: true, - townName: '', - name: '探探鱼100', - phone: '182****1718', - }, - { - id: 200, - addressDetail: '', - cityName: '钓鱼岛全区', - countyName: '', - provinceName: '钓鱼岛', - selectedAddress: false, - townName: '', - name: '探探鱼200', - phone: '182****1718', - }, - { - id: 300, - addressDetail: '京东大厦', - cityName: '大兴区', - countyName: '科创十一街18号院', - provinceName: '北京市', - selectedAddress: false, - townName: '', - name: '探探鱼300', - phone: '182****1718', - }, - ]) - - const showAddress = (tag: string) => { - setShowPopup({ - ...showPopup, - [tag]: true, - }) - } - - const closeAddress = (tag: string) => { - setShowPopup({ - ...showPopup, - [tag]: false, - }) - } - - const selectedTwo = (data: AddressList) => { - console.log('选择2', data) - const { provinceName, cityName, countyName, townName, addressDetail } = - data as AddressResult - if (provinceName) { - setText({ - ...text, - two: provinceName + cityName + countyName + townName + addressDetail, - }) - } - } - - const selectedThree = (data: AddressList) => { - console.log('选择3', data) - const { provinceName, cityName, countyName, townName, addressDetail } = - data as AddressResult - if (provinceName) { - setText({ - ...text, - three: provinceName + cityName + countyName + townName + addressDetail, - }) - } - } - - const selectedFour = (data: AddressList) => { - console.log('选择4', data) - const { provinceName, cityName, countyName, townName, addressDetail } = - data as AddressResult - if (provinceName) { - setText({ - ...text, - four: provinceName + cityName + countyName + townName + addressDetail, - }) - } - } - const [customeTitle, setCustomTitle] = useState('选择已有地址') - - const onSwitch = (val: { type: string }) => { - if (val.type === 'custom') { - setCustomTitle('选择已有地址') - console.log('点击了“选择其他地址”按钮') - } else { - setCustomTitle('重新选择地址') - console.log('点击了自定义地址左上角的返回按钮', showPopup.other) - } - } - - const change1 = (value: any, path: any, type: string) => { - console.log('change1', value, path) - setText({ - ...text, - [type]: value, - }) - } - return ( <>
        -

        {translated.title}

        - showAddress('normal')} - /> +

        {translated.customAddress}

        +

        {translated.selectCity}

        - showAddress('select')} - /> - {/*

        {translated.customAddress2}

        - showAddress('normal2')} - /> */} +

        {translated.existList}

        - showAddress('exist')} - /> +

        {translated.icon}

        - showAddress('customImg')} - /> +

        {translated.change}

        - showAddress('other')} - /> +

        {translated.uncontrolled}

        - addressRef.current?.open()} - /> - -
        { - change1(value, params, 'one') - }} - onClose={() => closeAddress('normal')} - /> - -
        { - change1(value, params, 'six') - }} - onClose={() => closeAddress('select')} - /> - -
        closeAddress('exist')} - /> - -
        closeAddress('customImg')} - /> - -
        { - change1(value, params, 'four') - }} - onClose={() => closeAddress('other')} - /> - -
        { - change1(value, params, 'one') - }} - onClose={() => addressRef.current?.close()} - /> +
        ) diff --git a/src/packages/address/demos/h5/demo1.tsx b/src/packages/address/demos/h5/demo1.tsx new file mode 100644 index 0000000000..945b80217e --- /dev/null +++ b/src/packages/address/demos/h5/demo1.tsx @@ -0,0 +1,90 @@ +import React, { useState } from 'react' +import { Address, Cell } from '@nutui/nutui-react' + +const Demo1 = () => { + const [text, setText] = useState('选择地址') + const [optionsDemo1] = useState([ + { + value: '浙江', + text: '浙江', + children: [ + { + value: '杭州', + text: '杭州', + disabled: true, + children: [ + { value: '西湖区', text: '西湖区', disabled: true }, + { value: '余杭区', text: '余杭区' }, + ], + }, + { + value: '温州', + text: '温州', + children: [ + { value: '鹿城区', text: '鹿城区' }, + { value: '瓯海区', text: '瓯海区' }, + ], + }, + ], + }, + { + value: '湖南', + text: '湖南', + disabled: true, + children: [ + { + value: '长沙', + text: '长沙', + disabled: true, + children: [ + { value: '西湖区', text: '西湖区' }, + { value: '余杭区', text: '余杭区' }, + ], + }, + { + value: '温州', + text: '温州', + children: [ + { value: '鹿城区', text: '鹿城区' }, + { value: '瓯海区', text: '瓯海区' }, + ], + }, + ], + }, + { + value: '福建', + text: '福建', + children: [ + { + value: '福州', + text: '福州', + children: [ + { value: '鼓楼区', text: '鼓楼区' }, + { value: '台江区', text: '台江区' }, + ], + }, + ], + }, + ]) + const [visible, setVisible] = useState(false) + + return ( + <> + setVisible(true)} + /> +
        { + setText(value.join('')) + }} + onClose={() => setVisible(false)} + /> + + ) +} +export default Demo1 diff --git a/src/packages/address/demos/h5/demo2.tsx b/src/packages/address/demos/h5/demo2.tsx new file mode 100644 index 0000000000..6b2dc14f76 --- /dev/null +++ b/src/packages/address/demos/h5/demo2.tsx @@ -0,0 +1,96 @@ +import React, { useState } from 'react' +import { Address, Cell } from '@nutui/nutui-react' + +const Demo2 = () => { + const [text, setText] = useState('请选择地址') + const [visible, setVisible] = useState(false) + const [value2] = useState(['福建', '福州', '台江区']) + const [optionsDemo2] = useState([ + { + value1: '浙江', + text1: '浙江', + items: [ + { + value1: '杭州', + text1: '杭州', + disabled: true, + items: [ + { value1: '西湖区', text1: '西湖区', disabled: true }, + { value1: '余杭区', text1: '余杭区' }, + ], + }, + { + value1: '温州', + text1: '温州', + items: [ + { value1: '鹿城区', text1: '鹿城区' }, + { value1: '瓯海区', text1: '瓯海区' }, + ], + }, + ], + }, + { + value1: '湖南', + text1: '湖南', + disabled: true, + items: [ + { + value1: '长沙', + text1: '长沙', + disabled: true, + items: [ + { value1: '西湖区', text1: '西湖区' }, + { value1: '余杭区', text1: '余杭区' }, + ], + }, + { + value1: '温州', + text1: '温州', + items: [ + { value1: '鹿城区', text1: '鹿城区' }, + { value1: '瓯海区', text1: '瓯海区' }, + ], + }, + ], + }, + { + value1: '福建', + text1: '福建', + items: [ + { + value1: '福州', + text1: '福州', + items: [ + { value1: '鼓楼区', text1: '鼓楼区' }, + { value1: '台江区', text1: '台江区' }, + ], + }, + ], + }, + ]) + + return ( + <> + setVisible(true)} + /> +
        { + setText(value.join('')) + }} + onClose={() => setVisible(false)} + /> + + ) +} +export default Demo2 diff --git a/src/packages/address/demos/h5/demo3.tsx b/src/packages/address/demos/h5/demo3.tsx new file mode 100644 index 0000000000..44d817405d --- /dev/null +++ b/src/packages/address/demos/h5/demo3.tsx @@ -0,0 +1,92 @@ +import React, { useState } from 'react' +import { Address, Cell } from '@nutui/nutui-react' + +const Demo3 = () => { + const [text, setText] = useState('请选择地址') + const [visible, setVisible] = useState(false) + interface RegionData { + name?: string + [key: string]: any + } + interface AddressList { + id?: string | number + provinceName: string + cityName: string + countyName: string + townName: string + addressDetail: string + selectedAddress: boolean + name?: string + phone?: string + } + interface AddressResult extends AddressList { + addressIdStr: string + addressStr: string + province: RegionData[] + city: RegionData[] + county: RegionData[] + town: RegionData[] + } + const [existList, setExistAddress] = useState([ + { + id: 1, + addressDetail: '', + cityName: '次渠镇', + countyName: '通州区', + provinceName: '北京市', + selectedAddress: true, + townName: '', + name: '探探鱼1', + phone: '182****1718', + }, + { + id: 2, + addressDetail: '', + cityName: '钓鱼岛全区', + countyName: '', + provinceName: '钓鱼岛', + selectedAddress: false, + townName: '', + name: '探探鱼2', + phone: '182****1718', + }, + { + id: 3, + addressDetail: '京东大厦', + cityName: '大兴区', + countyName: '科创十一街18号院', + provinceName: '北京市', + selectedAddress: false, + townName: '', + name: '探探鱼3', + phone: '182****1718', + }, + ]) + + const selectedTwo = (data: AddressList) => { + const { provinceName, cityName, countyName, townName, addressDetail } = + data as AddressResult + if (provinceName) { + setText(provinceName + cityName + countyName + townName + addressDetail) + } + } + + return ( + <> + setVisible(true)} + /> +
        setVisible(false)} + /> + + ) +} +export default Demo3 diff --git a/src/packages/address/demos/h5/demo4.tsx b/src/packages/address/demos/h5/demo4.tsx new file mode 100644 index 0000000000..f50c21c6d0 --- /dev/null +++ b/src/packages/address/demos/h5/demo4.tsx @@ -0,0 +1,99 @@ +import React, { useState } from 'react' +import { Address, Cell } from '@nutui/nutui-react' +import { Heart } from '@nutui/icons-react' + +const Demo4 = () => { + const [text, setText] = useState('请选择地址') + const [icon, setIcon] = useState({ + selectIcon: , + defaultIcon: , + closeIcon: , + }) + interface RegionData { + name?: string + [key: string]: any + } + interface AddressList { + id?: string | number + provinceName: string + cityName: string + countyName: string + townName: string + addressDetail: string + selectedAddress: boolean + name?: string + phone?: string + } + interface AddressResult extends AddressList { + addressIdStr: string + addressStr: string + province: RegionData[] + city: RegionData[] + county: RegionData[] + town: RegionData[] + } + const [visible, setVisible] = useState(false) + const [existList] = useState([ + { + id: 1, + addressDetail: '', + cityName: '次渠镇', + countyName: '通州区', + provinceName: '北京市', + selectedAddress: true, + townName: '', + name: '探探鱼1', + phone: '182****1718', + }, + { + id: 2, + addressDetail: '', + cityName: '钓鱼岛全区', + countyName: '', + provinceName: '钓鱼岛', + selectedAddress: false, + townName: '', + name: '探探鱼2', + phone: '182****1718', + }, + { + id: 3, + addressDetail: '京东大厦', + cityName: '大兴区', + countyName: '科创十一街18号院', + provinceName: '北京市', + selectedAddress: false, + townName: '', + name: '探探鱼3', + phone: '182****1718', + }, + ]) + + const selectedThree = (data: AddressList) => { + const { provinceName, cityName, countyName, townName, addressDetail } = + data as AddressResult + if (provinceName) { + setText(provinceName + cityName + countyName + townName + addressDetail) + } + } + + return ( + <> + setVisible(true)} + /> +
        setVisible(false)} + /> + + ) +} +export default Demo4 diff --git a/src/packages/address/demos/h5/demo5.tsx b/src/packages/address/demos/h5/demo5.tsx new file mode 100644 index 0000000000..158b0320b6 --- /dev/null +++ b/src/packages/address/demos/h5/demo5.tsx @@ -0,0 +1,129 @@ +import React, { useState } from 'react' +import { Address, Cell } from '@nutui/nutui-react' +import { Heart } from '@nutui/icons-react' + +const Demo5 = () => { + const [text, setText] = useState('请选择地址') + const [icon, setIcon] = useState({ + selectIcon: , + defaultIcon: , + closeIcon: , + }) + interface RegionData { + name?: string + [key: string]: any + } + interface AddressList { + id?: string | number + provinceName: string + cityName: string + countyName: string + townName: string + addressDetail: string + selectedAddress: boolean + name?: string + phone?: string + } + interface AddressResult extends AddressList { + addressIdStr: string + addressStr: string + province: RegionData[] + city: RegionData[] + county: RegionData[] + town: RegionData[] + } + const [visible, setVisible] = useState(false) + const [existList] = useState([ + { + id: 1, + addressDetail: '', + cityName: '次渠镇', + countyName: '通州区', + provinceName: '北京市', + selectedAddress: true, + townName: '', + name: '探探鱼1', + phone: '182****1718', + }, + { + id: 2, + addressDetail: '', + cityName: '钓鱼岛全区', + countyName: '', + provinceName: '钓鱼岛', + selectedAddress: false, + townName: '', + name: '探探鱼2', + phone: '182****1718', + }, + { + id: 3, + addressDetail: '京东大厦', + cityName: '大兴区', + countyName: '科创十一街18号院', + provinceName: '北京市', + selectedAddress: false, + townName: '', + name: '探探鱼3', + phone: '182****1718', + }, + ]) + const [customTitle] = useState('选择已有地址') + const [optionsDemo5] = useState([ + { value: '北京', text: '北京', id: 1, pidd: null }, + { value: '朝阳区', text: '朝阳区', id: 11, pidd: 1 }, + { value: '亦庄', text: '亦庄', id: 111, pidd: 11 }, + { value: '广东省', text: '广东省', id: 2, pidd: null }, + { value: '广州市', text: '广州市', id: 21, pidd: 2 }, + ]) + + const [convertConfigDemo5] = useState({ + topId: null, + idKey: 'id', + pidKey: 'pidd', + sortKey: '', + }) + + const selectedFour = (data: AddressList) => { + const { provinceName, cityName, countyName, townName, addressDetail } = + data as AddressResult + if (provinceName) { + setText(provinceName + cityName + countyName + townName + addressDetail) + } + } + + const onSwitch = (val: { type: string }) => { + if (val.type === 'custom') { + console.log('点击了“选择其他地址”按钮') + } else { + console.log('点击了自定义地址左上角的返回按钮') + } + } + + return ( + <> + setVisible(true)} + /> +
        { + setText(value.join('')) + }} + onClose={() => setVisible(false)} + /> + + ) +} +export default Demo5 diff --git a/src/packages/address/demos/h5/demo6.tsx b/src/packages/address/demos/h5/demo6.tsx new file mode 100644 index 0000000000..effc390720 --- /dev/null +++ b/src/packages/address/demos/h5/demo6.tsx @@ -0,0 +1,92 @@ +import React, { useState, useRef } from 'react' +import { Address, Cell } from '@nutui/nutui-react' + +const Demo6 = () => { + const addressRef = useRef(null) + const [text, setText] = useState('请选择地址') + + const [optionsDemo] = useState([ + { + value: '浙江', + text: '浙江', + children: [ + { + value: '杭州', + text: '杭州', + disabled: true, + children: [ + { value: '西湖区', text: '西湖区', disabled: true }, + { value: '余杭区', text: '余杭区' }, + ], + }, + { + value: '温州', + text: '温州', + children: [ + { value: '鹿城区', text: '鹿城区' }, + { value: '瓯海区', text: '瓯海区' }, + ], + }, + ], + }, + { + value: '湖南', + text: '湖南', + disabled: true, + children: [ + { + value: '长沙', + text: '长沙', + disabled: true, + children: [ + { value: '西湖区', text: '西湖区' }, + { value: '余杭区', text: '余杭区' }, + ], + }, + { + value: '温州', + text: '温州', + children: [ + { value: '鹿城区', text: '鹿城区' }, + { value: '瓯海区', text: '瓯海区' }, + ], + }, + ], + }, + { + value: '福建', + text: '福建', + children: [ + { + value: '福州', + text: '福州', + children: [ + { value: '鼓楼区', text: '鼓楼区' }, + { value: '台江区', text: '台江区' }, + ], + }, + ], + }, + ]) + + return ( + <> + addressRef.current?.open()} + /> +
        { + setText(value.join('')) + }} + onClose={() => addressRef.current?.close()} + /> + + ) +} +export default Demo6 diff --git a/src/packages/address/demos/taro/demo1.tsx b/src/packages/address/demos/taro/demo1.tsx new file mode 100644 index 0000000000..31448c313a --- /dev/null +++ b/src/packages/address/demos/taro/demo1.tsx @@ -0,0 +1,90 @@ +import React, { useState } from 'react' +import { Address, Cell } from '@nutui/nutui-react-taro' + +const Demo1 = () => { + const [text, setText] = useState('请选择地址') + const [optionsDemo1] = useState([ + { + value: '浙江', + text: '浙江', + children: [ + { + value: '杭州', + text: '杭州', + disabled: true, + children: [ + { value: '西湖区', text: '西湖区', disabled: true }, + { value: '余杭区', text: '余杭区' }, + ], + }, + { + value: '温州', + text: '温州', + children: [ + { value: '鹿城区', text: '鹿城区' }, + { value: '瓯海区', text: '瓯海区' }, + ], + }, + ], + }, + { + value: '湖南', + text: '湖南', + disabled: true, + children: [ + { + value: '长沙', + text: '长沙', + disabled: true, + children: [ + { value: '西湖区', text: '西湖区' }, + { value: '余杭区', text: '余杭区' }, + ], + }, + { + value: '温州', + text: '温州', + children: [ + { value: '鹿城区', text: '鹿城区' }, + { value: '瓯海区', text: '瓯海区' }, + ], + }, + ], + }, + { + value: '福建', + text: '福建', + children: [ + { + value: '福州', + text: '福州', + children: [ + { value: '鼓楼区', text: '鼓楼区' }, + { value: '台江区', text: '台江区' }, + ], + }, + ], + }, + ]) + const [visible, setVisible] = useState(false) + + return ( + <> + setVisible(true)} + /> +
        { + setText(value.join('')) + }} + onClose={() => setVisible(false)} + /> + + ) +} +export default Demo1 diff --git a/src/packages/address/demos/taro/demo2.tsx b/src/packages/address/demos/taro/demo2.tsx new file mode 100644 index 0000000000..21ec80b4c1 --- /dev/null +++ b/src/packages/address/demos/taro/demo2.tsx @@ -0,0 +1,96 @@ +import React, { useState } from 'react' +import { Address, Cell } from '@nutui/nutui-react-taro' + +const Demo2 = () => { + const [text, setText] = useState('请选择地址') + const [visible, setVisible] = useState(false) + const [value2] = useState(['福建', '福州', '台江区']) + const [optionsDemo2] = useState([ + { + value1: '浙江', + text1: '浙江', + items: [ + { + value1: '杭州', + text1: '杭州', + disabled: true, + items: [ + { value1: '西湖区', text1: '西湖区', disabled: true }, + { value1: '余杭区', text1: '余杭区' }, + ], + }, + { + value1: '温州', + text1: '温州', + items: [ + { value1: '鹿城区', text1: '鹿城区' }, + { value1: '瓯海区', text1: '瓯海区' }, + ], + }, + ], + }, + { + value1: '湖南', + text1: '湖南', + disabled: true, + items: [ + { + value1: '长沙', + text1: '长沙', + disabled: true, + items: [ + { value1: '西湖区', text1: '西湖区' }, + { value1: '余杭区', text1: '余杭区' }, + ], + }, + { + value1: '温州', + text1: '温州', + items: [ + { value1: '鹿城区', text1: '鹿城区' }, + { value1: '瓯海区', text1: '瓯海区' }, + ], + }, + ], + }, + { + value1: '福建', + text1: '福建', + items: [ + { + value1: '福州', + text1: '福州', + items: [ + { value1: '鼓楼区', text1: '鼓楼区' }, + { value1: '台江区', text1: '台江区' }, + ], + }, + ], + }, + ]) + + return ( + <> + setVisible(true)} + /> +
        { + setText(value.join('')) + }} + onClose={() => setVisible(false)} + /> + + ) +} +export default Demo2 diff --git a/src/packages/address/demos/taro/demo3.tsx b/src/packages/address/demos/taro/demo3.tsx new file mode 100644 index 0000000000..8289d01e1e --- /dev/null +++ b/src/packages/address/demos/taro/demo3.tsx @@ -0,0 +1,91 @@ +import React, { useState } from 'react' +import { Address, Cell } from '@nutui/nutui-react-taro' + +const Demo3 = () => { + const [text, setText] = useState('请选择地址') + const [visible, setVisible] = useState(false) + const [existList, setExistAddress] = useState([ + { + id: 1, + addressDetail: '', + cityName: '次渠镇', + countyName: '通州区', + provinceName: '北京市', + selectedAddress: true, + townName: '', + name: '探探鱼1', + phone: '182****1718', + }, + { + id: 2, + addressDetail: '', + cityName: '钓鱼岛全区', + countyName: '', + provinceName: '钓鱼岛', + selectedAddress: false, + townName: '', + name: '探探鱼2', + phone: '182****1718', + }, + { + id: 3, + addressDetail: '京东大厦', + cityName: '大兴区', + countyName: '科创十一街18号院', + provinceName: '北京市', + selectedAddress: false, + townName: '', + name: '探探鱼3', + phone: '182****1718', + }, + ]) + interface RegionData { + name?: string + [key: string]: any + } + interface AddressList { + id?: string | number + provinceName: string + cityName: string + countyName: string + townName: string + addressDetail: string + selectedAddress: boolean + name?: string + phone?: string + } + interface AddressResult extends AddressList { + addressIdStr: string + addressStr: string + province: RegionData[] + city: RegionData[] + county: RegionData[] + town: RegionData[] + } + const selectedTwo = (data: AddressList) => { + const { provinceName, cityName, countyName, townName, addressDetail } = + data as AddressResult + if (provinceName) { + setText(provinceName + cityName + countyName + townName + addressDetail) + } + } + + return ( + <> + setVisible(true)} + /> +
        setVisible(false)} + /> + + ) +} +export default Demo3 diff --git a/src/packages/address/demos/taro/demo4.tsx b/src/packages/address/demos/taro/demo4.tsx new file mode 100644 index 0000000000..6151b998d6 --- /dev/null +++ b/src/packages/address/demos/taro/demo4.tsx @@ -0,0 +1,99 @@ +import React, { useState } from 'react' +import { Address, Cell } from '@nutui/nutui-react-taro' +import { Heart } from '@nutui/icons-react-taro' + +const Demo4 = () => { + const [text, setText] = useState('请选择地址') + const [icon, setIcon] = useState({ + selectIcon: , + defaultIcon: , + closeIcon: , + }) + + const [visible, setVisible] = useState(false) + const [existList, setExistAddress] = useState([ + { + id: 1, + addressDetail: '', + cityName: '次渠镇', + countyName: '通州区', + provinceName: '北京市', + selectedAddress: true, + townName: '', + name: '探探鱼1', + phone: '182****1718', + }, + { + id: 2, + addressDetail: '', + cityName: '钓鱼岛全区', + countyName: '', + provinceName: '钓鱼岛', + selectedAddress: false, + townName: '', + name: '探探鱼2', + phone: '182****1718', + }, + { + id: 3, + addressDetail: '京东大厦', + cityName: '大兴区', + countyName: '科创十一街18号院', + provinceName: '北京市', + selectedAddress: false, + townName: '', + name: '探探鱼3', + phone: '182****1718', + }, + ]) + interface RegionData { + name?: string + [key: string]: any + } + interface AddressList { + id?: string | number + provinceName: string + cityName: string + countyName: string + townName: string + addressDetail: string + selectedAddress: boolean + name?: string + phone?: string + } + interface AddressResult extends AddressList { + addressIdStr: string + addressStr: string + province: RegionData[] + city: RegionData[] + county: RegionData[] + town: RegionData[] + } + const selectedThree = (data: AddressList) => { + const { provinceName, cityName, countyName, townName, addressDetail } = + data as AddressResult + if (provinceName) { + setText(provinceName + cityName + countyName + townName + addressDetail) + } + } + + return ( + <> + setVisible(true)} + /> +
        setVisible(false)} + /> + + ) +} +export default Demo4 diff --git a/src/packages/address/demos/taro/demo5.tsx b/src/packages/address/demos/taro/demo5.tsx new file mode 100644 index 0000000000..66afabebe4 --- /dev/null +++ b/src/packages/address/demos/taro/demo5.tsx @@ -0,0 +1,130 @@ +import React, { useState } from 'react' +import { Address, Cell } from '@nutui/nutui-react-taro' +import { Heart } from '@nutui/icons-react-taro' + +const Demo5 = () => { + interface RegionData { + name?: string + [key: string]: any + } + interface AddressList { + id?: string | number + provinceName: string + cityName: string + countyName: string + townName: string + addressDetail: string + selectedAddress: boolean + name?: string + phone?: string + } + interface AddressResult extends AddressList { + addressIdStr: string + addressStr: string + province: RegionData[] + city: RegionData[] + county: RegionData[] + town: RegionData[] + } + const [text, setText] = useState('请选择地址') + const [icon] = useState({ + selectIcon: , + defaultIcon: , + closeIcon: , + }) + const [customTitle] = useState('选择已有地址') + const [visible, setVisible] = useState(false) + const [existList] = useState([ + { + id: 1, + addressDetail: '', + cityName: '次渠镇', + countyName: '通州区', + provinceName: '北京市', + selectedAddress: true, + townName: '', + name: '探探鱼1', + phone: '182****1718', + }, + { + id: 2, + addressDetail: '', + cityName: '钓鱼岛全区', + countyName: '', + provinceName: '钓鱼岛', + selectedAddress: false, + townName: '', + name: '探探鱼2', + phone: '182****1718', + }, + { + id: 3, + addressDetail: '京东大厦', + cityName: '大兴区', + countyName: '科创十一街18号院', + provinceName: '北京市', + selectedAddress: false, + townName: '', + name: '探探鱼3', + phone: '182****1718', + }, + ]) + + const [optionsDemo5] = useState([ + { value: '北京', text: '北京', id: 1, pidd: null }, + { value: '朝阳区', text: '朝阳区', id: 11, pidd: 1 }, + { value: '亦庄', text: '亦庄', id: 111, pidd: 11 }, + { value: '广东省', text: '广东省', id: 2, pidd: null }, + { value: '广州市', text: '广州市', id: 21, pidd: 2 }, + ]) + + const [convertConfigDemo5] = useState({ + topId: null, + idKey: 'id', + pidKey: 'pidd', + sortKey: '', + }) + + const selectedFour = (data: AddressList) => { + const { provinceName, cityName, countyName, townName, addressDetail } = + data as AddressResult + if (provinceName) { + setText(provinceName + cityName + countyName + townName + addressDetail) + } + } + + const onSwitch = (val: { type: string }) => { + if (val.type === 'custom') { + console.log('点击了“选择其他地址”按钮') + } else { + console.log('点击了自定义地址左上角的返回按钮') + } + } + + return ( + <> + setVisible(true)} + /> +
        { + setText(value.join('')) + }} + onClose={() => setVisible(false)} + /> + + ) +} +export default Demo5 diff --git a/src/packages/address/demos/taro/demo6.tsx b/src/packages/address/demos/taro/demo6.tsx new file mode 100644 index 0000000000..c4b8e8ca6b --- /dev/null +++ b/src/packages/address/demos/taro/demo6.tsx @@ -0,0 +1,92 @@ +import React, { useState, useRef } from 'react' +import { Address, Cell } from '@nutui/nutui-react-taro' + +const Demo6 = () => { + const addressRef = useRef(null) + const [text, setText] = useState('请选择地址') + + const [optionsDemo] = useState([ + { + value: '浙江', + text: '浙江', + children: [ + { + value: '杭州', + text: '杭州', + disabled: true, + children: [ + { value: '西湖区', text: '西湖区', disabled: true }, + { value: '余杭区', text: '余杭区' }, + ], + }, + { + value: '温州', + text: '温州', + children: [ + { value: '鹿城区', text: '鹿城区' }, + { value: '瓯海区', text: '瓯海区' }, + ], + }, + ], + }, + { + value: '湖南', + text: '湖南', + disabled: true, + children: [ + { + value: '长沙', + text: '长沙', + disabled: true, + children: [ + { value: '西湖区', text: '西湖区' }, + { value: '余杭区', text: '余杭区' }, + ], + }, + { + value: '温州', + text: '温州', + children: [ + { value: '鹿城区', text: '鹿城区' }, + { value: '瓯海区', text: '瓯海区' }, + ], + }, + ], + }, + { + value: '福建', + text: '福建', + children: [ + { + value: '福州', + text: '福州', + children: [ + { value: '鼓楼区', text: '鼓楼区' }, + { value: '台江区', text: '台江区' }, + ], + }, + ], + }, + ]) + + return ( + <> + addressRef.current?.open()} + /> +
        { + setText(value.join('')) + }} + onClose={() => addressRef.current?.close()} + /> + + ) +} +export default Demo6 diff --git a/src/packages/address/doc.en-US.md b/src/packages/address/doc.en-US.md index 6dffa9979e..34af6b1313 100644 --- a/src/packages/address/doc.en-US.md +++ b/src/packages/address/doc.en-US.md @@ -16,94 +16,7 @@ import { Address } from '@nutui/nutui-react'; :::demo -```tsx -import React, { useState } from "react"; -import { Address, Cell, Popup } from '@nutui/nutui-react'; - -const App = () => { - const [text, setText] = useState('Choose Address') - const [optionsDemo1] = useState([ - { - value: 'ZheJiang', - text: 'ZheJiang', - children: [ - { - value: 'HangZhou', - text: 'HangZhou', - disabled: true, - children: [ - { value: 'XiHu', text: 'XiHu', disabled: true }, - { value: 'YuHang', text: 'YuHang' }, - ], - }, - { - value: 'WenZhou', - text: 'WenZhou', - children: [ - { value: 'LuCheng', text: 'LuCheng' }, - { value: 'OuHai', text: 'OuHai' }, - ], - }, - ], - }, - { - value: 'HuNan', - text: 'HuNan', - disabled: true, - children: [ - { - value: 'ChangSha', - text: 'ChangSha', - disabled: true, - children: [ - { value: 'XiHu', text: 'XiHu' }, - { value: 'YuHang', text: 'YuHang' }, - ], - }, - { - value: 'WenZhou', - text: 'WenZhou', - children: [ - { value: 'LuCheng', text: 'LuCheng' }, - { value: 'OuHai', text: 'OuHai' }, - ], - }, - ], - }, - { - value: 'FuJian', - text: 'FuJian', - children: [ - { - value: 'FuZhou', - text: 'FuZhou', - children: [ - { value: 'GuLou', text: 'GuLou' }, - { value: 'TaiJiang', text: 'TaiJiang' }, - ], - }, - ], - }, - ]) - const [visible, setVisible] = useState(false) - - return ( - <> - setVisible(true)} /> -
        { - setText(value) - }} - onClose={() => setVisible(false)} - /> - - ); -}; -export default App; -``` + ::: @@ -113,100 +26,7 @@ If you want to select a province, you need to set the region ID in the order of :::demo -```tsx -import React,{useState} from "react"; -import { Address, Cell ,Popup} from '@nutui/nutui-react'; - -const App = () => { - const [text, setText] = useState('Choose Address') - const [visible, setVisible] = useState(false) - const [value2] = useState(['FuJian', 'FuZhou', 'TaiJiang']) - const [optionsDemo2] = useState([ - { - value1: 'ZheJiang', - text1: 'ZheJiang', - items: [ - { - value1: 'HangZhou', - text1: 'HangZhou', - disabled: true, - items: [ - { value1: 'XiHu', text1: 'XiHu', disabled: true }, - { value1: 'YuHang', text1: 'YuHang' }, - ], - }, - { - value1: 'WenZhou', - text1: 'WenZhou', - items: [ - { value1: 'LuCheng', text1: 'LuCheng' }, - { value1: 'OuHai', text1: 'OuHai' }, - ], - }, - ], - }, - { - value1: 'HuNan', - text1: 'HuNan', - disabled: true, - items: [ - { - value1: 'ChangSha', - text1: 'ChangSha', - disabled: true, - items: [ - { value1: 'XiHu', text1: 'XiHu' }, - { value1: 'YuHang', text1: 'YuHang' }, - ], - }, - { - value1: 'WenZhou', - text1: 'WenZhou', - items: [ - { value1: 'LuCheng', text1: 'LuCheng' }, - { value1: 'OuHai', text1: 'OuHai' }, - ], - }, - ], - }, - { - value1: 'FuJian', - text1: 'FuJian', - items: [ - { - value1: 'FuZhou', - text1: 'FuZhou', - items: [ - { value1: 'GuLou', text1: 'GuLou' }, - { value1: 'TaiJiang', text1: 'TaiJiang' }, - ], - }, - ], - }, - ]) - - return ( - <> - setVisible(true)} /> -
        { - setText(value) - }} - onClose={() => setVisible(false)} - /> - - ); -}; -export default App; -``` + ::: @@ -220,74 +40,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Address, Cell, Popup } from '@nutui/nutui-react'; - -const App = () => { - const [text, setText] = useState('Choose Address') - const [visible, setVisible] = useState(false) - const [existList, setExistAddress] = useState([ - { - id: 1, - addressDetail: '', - cityName: 'CiQu', - countyName: 'TongZhou', - provinceName: 'BeiJing', - selectedAddress: true, - townName: '', - name: 'Wang1', - phone: '182****1718', - }, - { - id: 2, - addressDetail: '', - cityName: 'QuanZhou', - countyName: '', - provinceName: 'FuZhou', - selectedAddress: false, - townName: '', - name: 'Wang2', - phone: '182****1718', - }, - { - id: 3, - addressDetail: 'JD', - cityName: 'Da Xing', - countyName: 'KeChuang', - provinceName: 'BeiJing', - selectedAddress: false, - townName: '', - name: 'Wang3', - phone: '182****1718', - }, - ]) - - const selectedTwo = (data: AddressList) => { - const { provinceName, cityName, countyName, townName, addressDetail } = - data as AddressResult - if (provinceName) { - setText(provinceName + cityName + countyName + townName + addressDetail) - } - } - - return ( - <> - setVisible(true)} /> -
        setVisible(false)} - /> - - ); -}; -export default App; - -``` + ::: @@ -295,82 +48,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Address, Cell, Popup } from '@nutui/nutui-react'; -import { Heart } from '@nutui/icons-react'; - -const App = () => { - const [text, setText] = useState('Choose Address') - const [icon, setIcon] = useState({ - selectIcon: , - defaultIcon: , - closeIcon: , - }) - - const [visible, setVisible] = useState(false) - const [existList, setExistAddress] = useState([ - { - id: 1, - addressDetail: '', - cityName: 'CiQu', - countyName: 'TongZhou', - provinceName: 'BeiJing', - selectedAddress: true, - townName: '', - name: 'Wang1', - phone: '182****1718', - }, - { - id: 2, - addressDetail: '', - cityName: 'QuanZhou', - countyName: '', - provinceName: 'FuZhou', - selectedAddress: false, - townName: '', - name: 'Wang2', - phone: '182****1718', - }, - { - id: 3, - addressDetail: 'JD', - cityName: 'Da Xing', - countyName: 'KeChuang', - provinceName: 'BeiJing', - selectedAddress: false, - townName: '', - name: 'Wang3', - phone: '182****1718', - }, - ]) - - const selectedThree = (data: AddressList) => { - const { provinceName, cityName, countyName, townName, addressDetail } = - data as AddressResult - if (provinceName) { - setText(provinceName + cityName + countyName + townName + addressDetail) - } - } - - return ( - <> - setVisible(true)} /> -
        setVisible(false)} - /> - - ); -}; -export default App; - -``` + ::: @@ -378,111 +56,7 @@ export default App; :::demo -```tsx -import React,{useState} from "react"; -import { Address, Cell ,Popup} from '@nutui/nutui-react'; -import { Heart } from '@nutui/icons-react'; - -const App = () => { - const [text, setText] = useState('Choose Address') - const [icon, setIcon] = useState({ - selectIcon: , - defaultIcon: , - closeIcon: , - }) - const [visible, setVisible] = useState(false) - const [existList, setExistAddress] = useState([ - { - id: 1, - addressDetail: '', - cityName: 'CiQu', - countyName: 'TongZhou', - provinceName: 'BeiJing', - selectedAddress: true, - townName: '', - name: 'Wang1', - phone: '182****1718', - }, - { - id: 2, - addressDetail: '', - cityName: 'QuanZhou', - countyName: '', - provinceName: 'FuZhou', - selectedAddress: false, - townName: '', - name: 'Wang2', - phone: '182****1718', - }, - { - id: 3, - addressDetail: 'JD', - cityName: 'Da Xing', - countyName: 'KeChuang', - provinceName: 'BeiJing', - selectedAddress: false, - townName: '', - name: 'Wang3', - phone: '182****1718', - }, - ]) - - const [optionsDemo5] = useState([ - { value: 'BeiJing', text: 'BeiJing', id: 1, pidd: null }, - { value: 'ChaoYang', text: 'ChaoYang', id: 11, pidd: 1 }, - { value: 'YiZhuang', text: 'YiZhuang', id: 111, pidd: 11 }, - { value: 'GuangDong', text: 'GuangDong', id: 2, pidd: null }, - { value: 'GuangZhou', text: 'GuangZhou', id: 21, pidd: 2 }, - ]) - - const [convertConfigDemo5] = useState({ - topId: null, - idKey: 'id', - pidKey: 'pidd', - sortKey: '', - }) - - const selectedFour = (data: AddressList) => { - const { provinceName, cityName, countyName, townName, addressDetail } = - data as AddressResult - if (provinceName) { - setText(provinceName + cityName + countyName + townName + addressDetail) - } - } - - const onSwitch = (val) => { - if (val.type === 'custom') { - console.log('click the button') - } else { - console.log('click the back icon') - } - } - - return ( - <> - setVisible(true)} /> -
        { - setText(value) - }} - onClose={() => setVisible(false)} - /> - - ); -}; -export default App; - -``` + ::: diff --git a/src/packages/address/doc.md b/src/packages/address/doc.md index 90e0f69fed..47a9414111 100644 --- a/src/packages/address/doc.md +++ b/src/packages/address/doc.md @@ -16,94 +16,7 @@ import { Address } from '@nutui/nutui-react'; :::demo -```tsx -import React, { useState } from "react"; -import { Address, Cell, Popup } from '@nutui/nutui-react'; - -const App = () => { - const [text, setText] = useState('请选择地址') - const [optionsDemo1] = useState([ - { - value: '浙江', - text: '浙江', - children: [ - { - value: '杭州', - text: '杭州', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区', disabled: true }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '湖南', - text: '湖南', - disabled: true, - children: [ - { - value: '长沙', - text: '长沙', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区' }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '福建', - text: '福建', - children: [ - { - value: '福州', - text: '福州', - children: [ - { value: '鼓楼区', text: '鼓楼区' }, - { value: '台江区', text: '台江区' }, - ], - }, - ], - }, - ]) - const [visible, setVisible] = useState(false) - - return ( - <> - setVisible(true)} /> -
        { - setText(value) - }} - onClose={() => setVisible(false)} - /> - - ); -}; -export default App; -``` + ::: @@ -113,100 +26,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Address, Cell, Popup } from '@nutui/nutui-react'; - -const App = () => { - const [text, setText] = useState('请选择地址') - const [visible, setVisible] = useState(false) - const [value2] = useState(['福建', '福州', '台江区']) - const [optionsDemo2] = useState([ - { - value1: '浙江', - text1: '浙江', - items: [ - { - value1: '杭州', - text1: '杭州', - disabled: true, - items: [ - { value1: '西湖区', text1: '西湖区', disabled: true }, - { value1: '余杭区', text1: '余杭区' }, - ], - }, - { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, - ], - }, - ], - }, - { - value1: '湖南', - text1: '湖南', - disabled: true, - items: [ - { - value1: '长沙', - text1: '长沙', - disabled: true, - items: [ - { value1: '西湖区', text1: '西湖区' }, - { value1: '余杭区', text1: '余杭区' }, - ], - }, - { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, - ], - }, - ], - }, - { - value1: '福建', - text1: '福建', - items: [ - { - value1: '福州', - text1: '福州', - items: [ - { value1: '鼓楼区', text1: '鼓楼区' }, - { value1: '台江区', text1: '台江区' }, - ], - }, - ], - }, - ]) - - return ( - <> - setVisible(true)} /> -
        { - setText(value) - }} - onClose={() => setVisible(false)} - /> - - ); -}; -export default App; -``` + ::: @@ -214,74 +34,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Address, Cell, Popup } from '@nutui/nutui-react'; - -const App = () => { - const [text, setText] = useState('请选择地址') - const [visible, setVisible] = useState(false) - const [existList, setExistAddress] = useState([ - { - id: 1, - addressDetail: '', - cityName: '次渠镇', - countyName: '通州区', - provinceName: '北京市', - selectedAddress: true, - townName: '', - name: '探探鱼1', - phone: '182****1718', - }, - { - id: 2, - addressDetail: '', - cityName: '钓鱼岛全区', - countyName: '', - provinceName: '钓鱼岛', - selectedAddress: false, - townName: '', - name: '探探鱼2', - phone: '182****1718', - }, - { - id: 3, - addressDetail: '京东大厦', - cityName: '大兴区', - countyName: '科创十一街18号院', - provinceName: '北京市', - selectedAddress: false, - townName: '', - name: '探探鱼3', - phone: '182****1718', - }, - ]) - - const selectedTwo = (data: AddressList) => { - const { provinceName, cityName, countyName, townName, addressDetail } = - data as AddressResult - if (provinceName) { - setText(provinceName + cityName + countyName + townName + addressDetail) - } - } - - return ( - <> - setVisible(true)} /> -
        setVisible(false)} - /> - - ); -}; -export default App; - -``` + ::: @@ -289,82 +42,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Address, Cell, Popup } from '@nutui/nutui-react'; -import { Heart } from '@nutui/icons-react'; - -const App = () => { - const [text, setText] = useState('请选择地址') - const [icon, setIcon] = useState({ - selectIcon: , - defaultIcon: , - closeIcon: , - }) - - const [visible, setVisible] = useState(false) - const [existList, setExistAddress] = useState([ - { - id: 1, - addressDetail: '', - cityName: '次渠镇', - countyName: '通州区', - provinceName: '北京市', - selectedAddress: true, - townName: '', - name: '探探鱼1', - phone: '182****1718', - }, - { - id: 2, - addressDetail: '', - cityName: '钓鱼岛全区', - countyName: '', - provinceName: '钓鱼岛', - selectedAddress: false, - townName: '', - name: '探探鱼2', - phone: '182****1718', - }, - { - id: 3, - addressDetail: '京东大厦', - cityName: '大兴区', - countyName: '科创十一街18号院', - provinceName: '北京市', - selectedAddress: false, - townName: '', - name: '探探鱼3', - phone: '182****1718', - }, - ]) - - const selectedThree = (data: AddressList) => { - const { provinceName, cityName, countyName, townName, addressDetail } = - data as AddressResult - if (provinceName) { - setText(provinceName + cityName + countyName + townName + addressDetail) - } - } - - return ( - <> - setVisible(true)} /> -
        setVisible(false)} - /> - - ); -}; -export default App; - -``` + ::: @@ -372,111 +50,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Address, Cell, Popup } from '@nutui/nutui-react'; -import { Heart } from '@nutui/icons-react'; - -const App = () => { - const [text, setText] = useState('请选择地址') - const [icon, setIcon] = useState({ - selectIcon: , - defaultIcon: , - closeIcon: , - }) - const [visible, setVisible] = useState(false) - const [existList, setExistAddress] = useState([ - { - id: 1, - addressDetail: '', - cityName: '次渠镇', - countyName: '通州区', - provinceName: '北京市', - selectedAddress: true, - townName: '', - name: '探探鱼1', - phone: '182****1718', - }, - { - id: 2, - addressDetail: '', - cityName: '钓鱼岛全区', - countyName: '', - provinceName: '钓鱼岛', - selectedAddress: false, - townName: '', - name: '探探鱼2', - phone: '182****1718', - }, - { - id: 3, - addressDetail: '京东大厦', - cityName: '大兴区', - countyName: '科创十一街18号院', - provinceName: '北京市', - selectedAddress: false, - townName: '', - name: '探探鱼3', - phone: '182****1718', - }, - ]) - - const [optionsDemo5] = useState([ - { value: '北京', text: '北京', id: 1, pidd: null }, - { value: '朝阳区', text: '朝阳区', id: 11, pidd: 1 }, - { value: '亦庄', text: '亦庄', id: 111, pidd: 11 }, - { value: '广东省', text: '广东省', id: 2, pidd: null }, - { value: '广州市', text: '广州市', id: 21, pidd: 2 }, - ]) - - const [convertConfigDemo5] = useState({ - topId: null, - idKey: 'id', - pidKey: 'pidd', - sortKey: '', - }) - - const selectedFour = (data: AddressList) => { - const { provinceName, cityName, countyName, townName, addressDetail } = - data as AddressResult - if (provinceName) { - setText(provinceName + cityName + countyName + townName + addressDetail) - } - } - - const onSwitch = (val) => { - if (val.type === 'custom') { - console.log('点击了“选择其他地址”按钮') - } else { - console.log('点击了自定义地址左上角的返回按钮') - } - } - - return ( - <> - setVisible(true)} /> -
        { - setText(value) - }} - onClose={() => setVisible(false)} - /> - - ); -}; -export default App; - -``` + ::: @@ -484,96 +58,7 @@ export default App; :::demo -```tsx -import React, { useState, useRef } from "react"; -import { Address, Cell } from '@nutui/nutui-react'; - -const App = () => { - const addressRef = useRef(null) - const [text, setText] = useState('请选择地址') - - const [optionsDemo] = useState([ - { - value: '浙江', - text: '浙江', - children: [ - { - value: '杭州', - text: '杭州', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区', disabled: true }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '湖南', - text: '湖南', - disabled: true, - children: [ - { - value: '长沙', - text: '长沙', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区' }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '福建', - text: '福建', - children: [ - { - value: '福州', - text: '福州', - children: [ - { value: '鼓楼区', text: '鼓楼区' }, - { value: '台江区', text: '台江区' }, - ], - }, - ], - }, - ]) - - return ( - <> - addressRef.current?.open()} /> -
        { - setText(value) - }} - onClose={() => addressRef.current?.close()} - /> - - ); -}; -export default App; -``` + ::: diff --git a/src/packages/address/doc.taro.md b/src/packages/address/doc.taro.md index 76e0dda7e7..e1a97c078f 100644 --- a/src/packages/address/doc.taro.md +++ b/src/packages/address/doc.taro.md @@ -16,94 +16,7 @@ import { Address } from '@nutui/nutui-react-taro'; :::demo -```tsx -import React, { useState } from "react"; -import { Address, Cell, Popup } from '@nutui/nutui-react-taro'; - -const App = () => { - const [text, setText] = useState('请选择地址') - const [optionsDemo1] = useState([ - { - value: '浙江', - text: '浙江', - children: [ - { - value: '杭州', - text: '杭州', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区', disabled: true }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '湖南', - text: '湖南', - disabled: true, - children: [ - { - value: '长沙', - text: '长沙', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区' }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '福建', - text: '福建', - children: [ - { - value: '福州', - text: '福州', - children: [ - { value: '鼓楼区', text: '鼓楼区' }, - { value: '台江区', text: '台江区' }, - ], - }, - ], - }, - ]) - const [visible, setVisible] = useState(false) - - return ( - <> - setVisible(true)} /> -
        { - setText(value) - }} - onClose={() => setVisible(false)} - /> - - ); -}; -export default App; -``` + ::: @@ -113,100 +26,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Address, Cell, Popup } from '@nutui/nutui-react-taro'; - -const App = () => { - const [text, setText] = useState('请选择地址') - const [visible, setVisible] = useState(false) - const [value2] = useState(['福建', '福州', '台江区']) - const [optionsDemo2] = useState([ - { - value1: '浙江', - text1: '浙江', - items: [ - { - value1: '杭州', - text1: '杭州', - disabled: true, - items: [ - { value1: '西湖区', text1: '西湖区', disabled: true }, - { value1: '余杭区', text1: '余杭区' }, - ], - }, - { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, - ], - }, - ], - }, - { - value1: '湖南', - text1: '湖南', - disabled: true, - items: [ - { - value1: '长沙', - text1: '长沙', - disabled: true, - items: [ - { value1: '西湖区', text1: '西湖区' }, - { value1: '余杭区', text1: '余杭区' }, - ], - }, - { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, - ], - }, - ], - }, - { - value1: '福建', - text1: '福建', - items: [ - { - value1: '福州', - text1: '福州', - items: [ - { value1: '鼓楼区', text1: '鼓楼区' }, - { value1: '台江区', text1: '台江区' }, - ], - }, - ], - }, - ]) - - return ( - <> - setVisible(true)} /> -
        { - setText(value) - }} - onClose={() => setVisible(false)} - /> - - ); -}; -export default App; -``` + ::: @@ -214,74 +34,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Address, Cell, Popup } from '@nutui/nutui-react-taro'; - -const App = () => { - const [text, setText] = useState('请选择地址') - const [visible, setVisible] = useState(false) - const [existList, setExistAddress] = useState([ - { - id: 1, - addressDetail: '', - cityName: '次渠镇', - countyName: '通州区', - provinceName: '北京市', - selectedAddress: true, - townName: '', - name: '探探鱼1', - phone: '182****1718', - }, - { - id: 2, - addressDetail: '', - cityName: '钓鱼岛全区', - countyName: '', - provinceName: '钓鱼岛', - selectedAddress: false, - townName: '', - name: '探探鱼2', - phone: '182****1718', - }, - { - id: 3, - addressDetail: '京东大厦', - cityName: '大兴区', - countyName: '科创十一街18号院', - provinceName: '北京市', - selectedAddress: false, - townName: '', - name: '探探鱼3', - phone: '182****1718', - }, - ]) - - const selectedTwo = (data: AddressList) => { - const { provinceName, cityName, countyName, townName, addressDetail } = - data as AddressResult - if (provinceName) { - setText(provinceName + cityName + countyName + townName + addressDetail) - } - } - - return ( - <> - setVisible(true)} /> -
        setVisible(false)} - /> - - ); -}; -export default App; - -``` + ::: @@ -289,82 +42,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Address, Cell, Popup } from '@nutui/nutui-react-taro'; -import { Heart } from '@nutui/icons-react-taro'; - -const App = () => { - const [text, setText] = useState('请选择地址') - const [icon, setIcon] = useState({ - selectIcon: , - defaultIcon: , - closeIcon: , - }) - - const [visible, setVisible] = useState(false) - const [existList, setExistAddress] = useState([ - { - id: 1, - addressDetail: '', - cityName: '次渠镇', - countyName: '通州区', - provinceName: '北京市', - selectedAddress: true, - townName: '', - name: '探探鱼1', - phone: '182****1718', - }, - { - id: 2, - addressDetail: '', - cityName: '钓鱼岛全区', - countyName: '', - provinceName: '钓鱼岛', - selectedAddress: false, - townName: '', - name: '探探鱼2', - phone: '182****1718', - }, - { - id: 3, - addressDetail: '京东大厦', - cityName: '大兴区', - countyName: '科创十一街18号院', - provinceName: '北京市', - selectedAddress: false, - townName: '', - name: '探探鱼3', - phone: '182****1718', - }, - ]) - - const selectedThree = (data: AddressList) => { - const { provinceName, cityName, countyName, townName, addressDetail } = - data as AddressResult - if (provinceName) { - setText(provinceName + cityName + countyName + townName + addressDetail) - } - } - - return ( - <> - setVisible(true)} /> -
        setVisible(false)} - /> - - ); -}; -export default App; - -``` + ::: @@ -372,206 +50,16 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Address, Cell, Popup } from '@nutui/nutui-react-taro'; -import { Heart } from '@nutui/icons-react-taro'; - -const App = () => { - const [text, setText] = useState('请选择地址') - const [icon, setIcon] = useState({ - selectIcon: , - defaultIcon: , - closeIcon: , - }) - const [visible, setVisible] = useState(false) - const [existList, setExistAddress] = useState([ - { - id: 1, - addressDetail: '', - cityName: '次渠镇', - countyName: '通州区', - provinceName: '北京市', - selectedAddress: true, - townName: '', - name: '探探鱼1', - phone: '182****1718', - }, - { - id: 2, - addressDetail: '', - cityName: '钓鱼岛全区', - countyName: '', - provinceName: '钓鱼岛', - selectedAddress: false, - townName: '', - name: '探探鱼2', - phone: '182****1718', - }, - { - id: 3, - addressDetail: '京东大厦', - cityName: '大兴区', - countyName: '科创十一街18号院', - provinceName: '北京市', - selectedAddress: false, - townName: '', - name: '探探鱼3', - phone: '182****1718', - }, - ]) - - const [optionsDemo5] = useState([ - { value: '北京', text: '北京', id: 1, pidd: null }, - { value: '朝阳区', text: '朝阳区', id: 11, pidd: 1 }, - { value: '亦庄', text: '亦庄', id: 111, pidd: 11 }, - { value: '广东省', text: '广东省', id: 2, pidd: null }, - { value: '广州市', text: '广州市', id: 21, pidd: 2 }, - ]) - - const [convertConfigDemo5] = useState({ - topId: null, - idKey: 'id', - pidKey: 'pidd', - sortKey: '', - }) - - const selectedFour = (data: AddressList) => { - const { provinceName, cityName, countyName, townName, addressDetail } = - data as AddressResult - if (provinceName) { - setText(provinceName + cityName + countyName + townName + addressDetail) - } - } - - const onSwitch = (val) => { - if (val.type === 'custom') { - console.log('点击了“选择其他地址”按钮') - } else { - console.log('点击了自定义地址左上角的返回按钮') - } - } - - return ( - <> - setVisible(true)} /> -
        { - setText(value) - }} - onClose={() => setVisible(false)} - /> - - ); -}; -export default App; -``` + + ::: ### 非受控模式 :::demo -```tsx -import React, { useState, useRef } from "react"; -import { Address, Cell } from '@nutui/nutui-react'; - -const App = () => { - const addressRef = useRef(null) - const [text, setText] = useState('请选择地址') - - const [optionsDemo] = useState([ - { - value: '浙江', - text: '浙江', - children: [ - { - value: '杭州', - text: '杭州', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区', disabled: true }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '湖南', - text: '湖南', - disabled: true, - children: [ - { - value: '长沙', - text: '长沙', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区' }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '福建', - text: '福建', - children: [ - { - value: '福州', - text: '福州', - children: [ - { value: '鼓楼区', text: '鼓楼区' }, - { value: '台江区', text: '台江区' }, - ], - }, - ], - }, - ]) - - return ( - <> - addressRef.current?.open()} /> -
        { - setText(value) - }} - onClose={() => addressRef.current?.close()} - /> - - ); -}; -export default App; -``` + + ::: ## Address diff --git a/src/packages/address/doc.zh-TW.md b/src/packages/address/doc.zh-TW.md index 1f8c3127ac..429e5014e7 100644 --- a/src/packages/address/doc.zh-TW.md +++ b/src/packages/address/doc.zh-TW.md @@ -16,94 +16,7 @@ import { Address } from '@nutui/nutui-react'; :::demo -```tsx -import React, { useState } from "react"; -import { Address, Cell, Popup } from '@nutui/nutui-react'; - -const App = () => { - const [text, setText] = useState('請選擇地址') - const [optionsDemo1] = useState([ - { - value: '浙江', - text: '浙江', - children: [ - { - value: '杭州', - text: '杭州', - disabled: true, - children: [ - { value: '西湖區', text: '西湖區', disabled: true }, - { value: '余杭區', text: '余杭區' }, - ], - }, - { - value: '溫州', - text: '溫州', - children: [ - { value: '鹿城區', text: '鹿城區' }, - { value: '甌海區', text: '甌海區' }, - ], - }, - ], - }, - { - value: '湖南', - text: '湖南', - disabled: true, - children: [ - { - value: '長沙', - text: '長沙', - disabled: true, - children: [ - { value: '西湖區', text: '西湖區' }, - { value: '余杭區', text: '余杭區' }, - ], - }, - { - value: '溫州', - text: '溫州', - children: [ - { value: '鹿城區', text: '鹿城區' }, - { value: '甌海區', text: '甌海區' }, - ], - }, - ], - }, - { - value: '福建', - text: '福建', - children: [ - { - value: '福州', - text: '福州', - children: [ - { value: '鼓樓區', text: '鼓樓區' }, - { value: '臺江區', text: '臺江區' }, - ], - }, - ], - }, - ]) - const [visible, setVisible] = useState(false) - - return ( - <> - setVisible(true)} /> -
        { - setText(value) - }} - onClose={() => setVisible(false)} - /> - - ); -}; -export default App; -``` + ::: @@ -113,100 +26,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Address, Cell, Popup } from '@nutui/nutui-react'; - -const App = () => { - const [text, setText] = useState('請選擇地址') - const [visible, setVisible] = useState(false) - const [value2] = useState(['福建', '福州', '臺江區']) - const [optionsDemo2] = useState([ - { - value1: '浙江', - text1: '浙江', - items: [ - { - value1: '杭州', - text1: '杭州', - disabled: true, - items: [ - { value1: '西湖區', text1: '西湖區', disabled: true }, - { value1: '余杭區', text1: '余杭區' }, - ], - }, - { - value1: '溫州', - text1: '溫州', - items: [ - { value1: '鹿城區', text1: '鹿城區' }, - { value1: '甌海區', text1: '甌海區' }, - ], - }, - ], - }, - { - value1: '湖南', - text1: '湖南', - disabled: true, - items: [ - { - value1: '長沙', - text1: '長沙', - disabled: true, - items: [ - { value1: '西湖區', text1: '西湖區' }, - { value1: '余杭區', text1: '余杭區' }, - ], - }, - { - value1: '溫州', - text1: '溫州', - items: [ - { value1: '鹿城區', text1: '鹿城區' }, - { value1: '甌海區', text1: '甌海區' }, - ], - }, - ], - }, - { - value1: '福建', - text1: '福建', - items: [ - { - value1: '福州', - text1: '福州', - items: [ - { value1: '鼓樓區', text1: '鼓樓區' }, - { value1: '臺江區', text1: '臺江區' }, - ], - }, - ], - }, - ]) - - return ( - <> - setVisible(true)} /> -
        { - setText(value) - }} - onClose={() => setVisible(false)} - /> - - ); -}; -export default App; -``` + ::: @@ -214,74 +34,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Address, Cell, Popup } from '@nutui/nutui-react'; - -const App = () => { - const [text, setText] = useState('請選擇地址') - const [visible, setVisible] = useState(false) - const [existList, setExistAddress] = useState([ - { - id: 1, - addressDetail: '', - cityName: '次渠鎮', - countyName: '通州區', - provinceName: '北京市', - selectedAddress: true, - townName: '', - name: '探探魚1', - phone: '182****1718', - }, - { - id: 2, - addressDetail: '', - cityName: '釣魚島全區', - countyName: '', - provinceName: '釣魚島', - selectedAddress: false, - townName: '', - name: '探探魚2', - phone: '182****1718', - }, - { - id: 3, - addressDetail: '京東大廈', - cityName: '大興區', - countyName: '科創十一街18號院', - provinceName: '北京市', - selectedAddress: false, - townName: '', - name: '探探魚3', - phone: '182****1718', - }, - ]) - - const selectedTwo = (data: AddressList) => { - const { provinceName, cityName, countyName, townName, addressDetail } = - data as AddressResult - if (provinceName) { - setText(provinceName + cityName + countyName + townName + addressDetail) - } - } - - return ( - <> - setVisible(true)} /> -
        setVisible(false)} - /> - - ); -}; -export default App; - -``` + ::: @@ -289,82 +42,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Address, Cell, Popup } from '@nutui/nutui-react'; -import { Heart } from '@nutui/icons-react'; - -const App = () => { - const [text, setText] = useState('請選擇地址') - const [icon, setIcon] = useState({ - selectIcon: , - defaultIcon: , - closeIcon: , - }) - - const [visible, setVisible] = useState(false) - const [existList, setExistAddress] = useState([ - { - id: 1, - addressDetail: '', - cityName: '次渠鎮', - countyName: '通州區', - provinceName: '北京市', - selectedAddress: true, - townName: '', - name: '探探魚1', - phone: '182****1718', - }, - { - id: 2, - addressDetail: '', - cityName: '釣魚島全區', - countyName: '', - provinceName: '釣魚島', - selectedAddress: false, - townName: '', - name: '探探魚2', - phone: '182****1718', - }, - { - id: 3, - addressDetail: '京東大廈', - cityName: '大興區', - countyName: '科創十一街18號院', - provinceName: '北京市', - selectedAddress: false, - townName: '', - name: '探探魚3', - phone: '182****1718', - }, - ]) - - const selectedThree = (data: AddressList) => { - const { provinceName, cityName, countyName, townName, addressDetail } = - data as AddressResult - if (provinceName) { - setText(provinceName + cityName + countyName + townName + addressDetail) - } - } - - return ( - <> - setVisible(true)} /> -
        setVisible(false)} - /> - - ); -}; -export default App; - -``` + ::: @@ -372,111 +50,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Address, Cell, Popup } from '@nutui/nutui-react'; -import { Heart } from '@nutui/icons-react'; - -const App = () => { - const [text, setText] = useState('請選擇地址') - const [icon, setIcon] = useState({ - selectIcon: , - defaultIcon: , - closeIcon: , - }) - const [visible, setVisible] = useState(false) - const [existList, setExistAddress] = useState([ - { - id: 1, - addressDetail: '', - cityName: '次渠鎮', - countyName: '通州區', - provinceName: '北京市', - selectedAddress: true, - townName: '', - name: '探探魚1', - phone: '182****1718', - }, - { - id: 2, - addressDetail: '', - cityName: '釣魚島全區', - countyName: '', - provinceName: '釣魚島', - selectedAddress: false, - townName: '', - name: '探探魚2', - phone: '182****1718', - }, - { - id: 3, - addressDetail: '京東大廈', - cityName: '大興區', - countyName: '科創十一街18號院', - provinceName: '北京市', - selectedAddress: false, - townName: '', - name: '探探魚3', - phone: '182****1718', - }, - ]) - - const [optionsDemo5] = useState([ - { value: '北京', text: '北京', id: 1, pidd: null }, - { value: '朝陽區', text: '朝陽區', id: 11, pidd: 1 }, - { value: '亦莊', text: '亦莊', id: 111, pidd: 11 }, - { value: '廣東省', text: '廣東省', id: 2, pidd: null }, - { value: '廣州市', text: '廣州市', id: 21, pidd: 2 }, - ]) - - const [convertConfigDemo5] = useState({ - topId: null, - idKey: 'id', - pidKey: 'pidd', - sortKey: '', - }) - - const selectedFour = (data: AddressList) => { - const { provinceName, cityName, countyName, townName, addressDetail } = - data as AddressResult - if (provinceName) { - setText(provinceName + cityName + countyName + townName + addressDetail) - } - } - - const onSwitch = (val) => { - if (val.type === 'custom') { - console.log('點擊了“選擇其他地址”按鈕') - } else { - console.log('點擊了自定義地址左上角的返回按鈕') - } - } - - return ( - <> - setVisible(true)} /> -
        { - setText(value) - }} - onClose={() => setVisible(false)} - /> - - ); -}; -export default App; - -``` + ::: diff --git a/src/packages/animate/__tests__/animate.spec.tsx b/src/packages/animate/__tests__/animate.spec.tsx index c4d1ad9568..97b456b167 100644 --- a/src/packages/animate/__tests__/animate.spec.tsx +++ b/src/packages/animate/__tests__/animate.spec.tsx @@ -29,7 +29,7 @@ test('should change classname when using type prop', () => { }) test('trigger animate with loop', async () => { - const handleClick = jest.fn() + const handleClick = vi.fn() for (let i = 0; i < testType.length; i++) { const typeProp = testType[i] as AnimateType const { container } = render( @@ -50,7 +50,7 @@ test('trigger animate with loop', async () => { }) test('trigger animate', async () => { - const handleClick = jest.fn() + const handleClick = vi.fn() for (let i = 0; i < testType.length; i++) { const typeProp = testType[i] as AnimateType const { container } = render( diff --git a/src/packages/animate/animate.scss b/src/packages/animate/animate.scss index 1e9af98b86..05b13a3e1d 100644 --- a/src/packages/animate/animate.scss +++ b/src/packages/animate/animate.scss @@ -13,6 +13,7 @@ .nut-animate-slide-right { animation-name: slide-right; } + @keyframes slide-right { 0% { opacity: 0; @@ -29,6 +30,7 @@ .nut-animate-slide-left { animation-name: slide-left; } + @keyframes slide-left { 0% { opacity: 0; @@ -45,6 +47,7 @@ .nut-animate-slide-top { animation-name: slide-top; } + @keyframes slide-top { 0% { opacity: 0; @@ -61,6 +64,7 @@ .nut-animate-slide-bottom { animation-name: slide-bottom; } + @keyframes slide-bottom { 0% { opacity: 0; @@ -77,6 +81,7 @@ .nut-animate-shake { animation-name: shake; } + @keyframes shake { 0%, 100% { @@ -124,10 +129,12 @@ .nut-animate-ripple { animation-name: ripple; } + @keyframes ripple { 0% { transform: scale(1); } + 50% { transform: scale(1.1); } @@ -140,13 +147,16 @@ animation-timing-function: ease-in-out; animation-direction: alternate; } + @keyframes breath { 0% { transform: scale(1); } + 50% { transform: scale(1.1); } + 100% { transform: scale(1); } @@ -155,6 +165,7 @@ // 水波 .nut-animate-twinkle { position: relative; + &::after, &::before { width: 60 * 1px; @@ -176,13 +187,16 @@ animation-delay: 0.4s; } } + @keyframes twinkle { 0% { transform: scale(0); } + 20% { opacity: 1; } + 50%, 100% { transform: scale(1.4); @@ -212,10 +226,12 @@ filter: blur(3 * 1px); } } + @keyframes flicker { 0% { transform: translateX(-100 * 1px) skewX(-20deg); } + 40%, 100% { transform: translateX(150 * 1px) skewX(-20deg); @@ -227,23 +243,28 @@ transform-origin: center center; animation: jump 0.7s linear; } + @keyframes jump { 0% { animation-timing-function: ease-in; transform: rotate(0deg) translateY(0); } + 25% { animation-timing-function: ease-out; transform: rotate(10deg) translateY(20 * 1px); } + 50% { animation-timing-function: ease-in; transform: rotate(0deg) translateY(-10 * 1px); } + 75% { animation-timing-function: ease-out; transform: rotate(-10deg) translateY(20 * 1px); } + 100% { animation-timing-function: ease-in; transform: rotate(0deg) translateY(0); @@ -255,6 +276,7 @@ position: relative; animation-name: float-pop; } + @keyframes float-pop { 0% { top: 0px; diff --git a/src/packages/animate/demo.taro.tsx b/src/packages/animate/demo.taro.tsx index ce643068bc..652527eed4 100644 --- a/src/packages/animate/demo.taro.tsx +++ b/src/packages/animate/demo.taro.tsx @@ -1,150 +1,35 @@ import React from 'react' import Taro from '@tarojs/taro' import { useTranslate } from '@/sites/assets/locale/taro' -import { Animate, Button } from '@/packages/nutui.react.taro' import Header from '@/sites/components/header' +import Demo1 from './demos/taro/demo1' +import Demo2 from './demos/taro/demo2' -interface T { - f7a61168: string - '3fae6217': string - '65fd1cc5': string - '9a7eec9c': string - f6ec5bd0: string - de274af8: string - '7c7af45b': string - '07b960ca': string - e472af8e: string - b291ead9: string - '1b54b6b9': string - '92a089f6': string - '4b869598': string -} const AnimateDemo = () => { - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { - f7a61168: '点击触发', - '3fae6217': '由右向左划入', - '65fd1cc5': '由左向右划入', - '9a7eec9c': '由上至下划入', - f6ec5bd0: '由下至上划入', - de274af8: '循环动画', - '7c7af45b': 'shake-抖动', - '07b960ca': 'ripple-心跳', - e472af8e: 'breath-呼吸灯', - b291ead9: 'twinkle-水波', - '1b54b6b9': 'flicker-擦亮', - '92a089f6': 'jump-跳跃', - '4b869598': 'float-漂浮', + click: '点击触发', + loop: '循环动画', }, 'zh-TW': { - f7a61168: '點擊觸發', - '3fae6217': '由右向左劃入', - '65fd1cc5': '由左向右劃入', - '9a7eec9c': '由上至下劃入', - f6ec5bd0: '由下至上劃入', - de274af8: '迴圈動畫', - '7c7af45b': 'shake-抖動', - '07b960ca': 'ripple-心跳', - e472af8e: 'breath-呼吸燈', - b291ead9: 'twinkle-水波', - '1b54b6b9': 'flicker-擦亮', - '92a089f6': 'jump-跳躍', - '4b869598': 'float-漂浮', + click: '點擊觸發', + loop: '迴圈動畫', }, 'en-US': { - f7a61168: 'Clicking to trigger', - '3fae6217': 'From right to left', - '65fd1cc5': 'From left to right', - '9a7eec9c': 'From top to bottom', - f6ec5bd0: 'From bottom to top', - de274af8: 'Loop animation', - '7c7af45b': 'shake', - '07b960ca': 'ripple', - e472af8e: 'breath', - b291ead9: 'twinkle', - '1b54b6b9': 'flicker', - '92a089f6': 'jump', - '4b869598': 'float', + click: 'Clicking to trigger', + loop: 'Loop animation', }, }) - const sStyle = { - marginBottom: '10px', - display: 'inline-block', - width: '100%', - } - return ( <>
        -

        {translated.f7a61168}

        -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -

        {translated.de274af8}

        -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        +

        {translated.click}

        + -
        - - - -
        +

        {translated.loop}

        +
        ) diff --git a/src/packages/animate/demo.tsx b/src/packages/animate/demo.tsx index 65ef8f0ddd..b67345b023 100644 --- a/src/packages/animate/demo.tsx +++ b/src/packages/animate/demo.tsx @@ -1,147 +1,32 @@ import React from 'react' import { useTranslate } from '../../sites/assets/locale' -import { Animate } from './animate' -import Button from '@/packages/button' +import Demo1 from './demos/h5/demo1' +import Demo2 from './demos/h5/demo2' -interface T { - f7a61168: string - '3fae6217': string - '65fd1cc5': string - '9a7eec9c': string - f6ec5bd0: string - de274af8: string - '7c7af45b': string - '07b960ca': string - e472af8e: string - b291ead9: string - '1b54b6b9': string - '92a089f6': string - '4b869598': string -} const AnimateDemo = () => { - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { - f7a61168: '点击触发', - '3fae6217': '由右向左划入', - '65fd1cc5': '由左向右划入', - '9a7eec9c': '由上至下划入', - f6ec5bd0: '由下至上划入', - de274af8: '循环动画', - '7c7af45b': 'shake-抖动', - '07b960ca': 'ripple-心跳', - e472af8e: 'breath-呼吸灯', - b291ead9: 'twinkle-水波', - '1b54b6b9': 'flicker-擦亮', - '92a089f6': 'jump-跳跃', - '4b869598': 'float-漂浮', + click: '点击触发', + loop: '循环动画', }, 'zh-TW': { - f7a61168: '點擊觸發', - '3fae6217': '由右向左劃入', - '65fd1cc5': '由左向右劃入', - '9a7eec9c': '由上至下劃入', - f6ec5bd0: '由下至上劃入', - de274af8: '迴圈動畫', - '7c7af45b': 'shake-抖動', - '07b960ca': 'ripple-心跳', - e472af8e: 'breath-呼吸燈', - b291ead9: 'twinkle-水波', - '1b54b6b9': 'flicker-擦亮', - '92a089f6': 'jump-跳躍', - '4b869598': 'float-漂浮', + click: '點擊觸發', + loop: '迴圈動畫', }, 'en-US': { - f7a61168: 'Clicking to trigger', - '3fae6217': 'From right to left', - '65fd1cc5': 'From left to right', - '9a7eec9c': 'From top to bottom', - f6ec5bd0: 'From bottom to top', - de274af8: 'Loop animation', - '7c7af45b': 'shake', - '07b960ca': 'ripple', - e472af8e: 'breath', - b291ead9: 'twinkle', - '1b54b6b9': 'flicker', - '92a089f6': 'jump', - '4b869598': 'float', + click: 'Clicking to trigger', + loop: 'Loop animation', }, }) - const sStyle = { - marginBottom: '10px', - display: 'inline-block', - width: '100%', - } return ( <>
        -

        {translated.f7a61168}

        -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -

        {translated.de274af8}

        -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        +

        {translated.click}

        + -
        - - - -
        +

        {translated.loop}

        +
        ) diff --git a/src/packages/animate/demos/h5/demo1.tsx b/src/packages/animate/demos/h5/demo1.tsx new file mode 100644 index 0000000000..07f24cfe47 --- /dev/null +++ b/src/packages/animate/demos/h5/demo1.tsx @@ -0,0 +1,37 @@ +import React from 'react' +import { Animate, Button } from '@nutui/nutui-react' + +const Demo1 = () => { + const style = { + marginBottom: '10px', + } + return ( + <> +
        + + + +
        + +
        + + + +
        + +
        + + + +
        + +
        + + + +
        + + ) +} + +export default Demo1 diff --git a/src/packages/animate/demos/h5/demo2.tsx b/src/packages/animate/demos/h5/demo2.tsx new file mode 100644 index 0000000000..4f72090460 --- /dev/null +++ b/src/packages/animate/demos/h5/demo2.tsx @@ -0,0 +1,55 @@ +import React from 'react' +import { Animate, Button } from '@nutui/nutui-react' + +const Demo2 = () => { + const style = { + marginBottom: '10px', + } + return ( + <> +
        + + + +
        + +
        + + + +
        + +
        + + + +
        + +
        + + + +
        + +
        + + + +
        + +
        + + + +
        + +
        + + + +
        + + ) +} + +export default Demo2 diff --git a/src/packages/animate/demos/taro/demo1.tsx b/src/packages/animate/demos/taro/demo1.tsx new file mode 100644 index 0000000000..5d2645d357 --- /dev/null +++ b/src/packages/animate/demos/taro/demo1.tsx @@ -0,0 +1,37 @@ +import React from 'react' +import { Animate, Button } from '@nutui/nutui-react-taro' + +const Demo1 = () => { + const style = { + marginBottom: '10px', + } + return ( + <> +
        + + + +
        + +
        + + + +
        + +
        + + + +
        + +
        + + + +
        + + ) +} + +export default Demo1 diff --git a/src/packages/animate/demos/taro/demo2.tsx b/src/packages/animate/demos/taro/demo2.tsx new file mode 100644 index 0000000000..e6f2d9bb7f --- /dev/null +++ b/src/packages/animate/demos/taro/demo2.tsx @@ -0,0 +1,55 @@ +import React from 'react' +import { Animate, Button } from '@nutui/nutui-react-taro' + +const Demo2 = () => { + const style = { + marginBottom: '10px', + } + return ( + <> +
        + + + +
        + +
        + + + +
        + +
        + + + +
        + +
        + + + +
        + +
        + + + +
        + +
        + + + +
        + +
        + + + +
        + + ) +} + +export default Demo2 diff --git a/src/packages/animate/doc.en-US.md b/src/packages/animate/doc.en-US.md index 241bf326ca..597a9b8c6b 100644 --- a/src/packages/animate/doc.en-US.md +++ b/src/packages/animate/doc.en-US.md @@ -14,113 +14,18 @@ import { Animate } from '@nutui/nutui-react'; ### Clicking to trigger -:::demo - -```tsx -import React from 'react' -import { Animate, Button } from '@nutui/nutui-react' - -const AnimateDemo = () => { - return ( - <> -
        -

        Clicking to trigger

        -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        -
        - - ) -} - -export default AnimateDemo -``` - +:::demo + + + ::: ### Loop animation -:::demo - -```tsx -import React from 'react' -import { Animate, Button } from '@nutui/nutui-react' - -const AnimateDemo = () => { - return ( - <> -
        -

        Loop animation

        -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        -
        - - ) -} - -export default AnimateDemo - -``` - +:::demo + + + ::: ## Animate diff --git a/src/packages/animate/doc.md b/src/packages/animate/doc.md index b5b26477fd..da558986cf 100644 --- a/src/packages/animate/doc.md +++ b/src/packages/animate/doc.md @@ -14,113 +14,18 @@ import { Animate } from '@nutui/nutui-react'; ### 点击触发 -:::demo - -```tsx -import React from 'react' -import { Animate, Button } from '@nutui/nutui-react' - -const AnimateDemo = () => { - return ( - <> -
        -

        点击触发

        -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        -
        - - ) -} - -export default AnimateDemo -``` - +:::demo + + + ::: ### 循环动画 -:::demo - -```tsx -import React from 'react' -import { Animate, Button } from '@nutui/nutui-react' - -const AnimateDemo = () => { - return ( - <> -
        -

        循环动画

        -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        -
        - - ) -} - -export default AnimateDemo - -``` - +:::demo + + + ::: ## Animate diff --git a/src/packages/animate/doc.taro.md b/src/packages/animate/doc.taro.md index e4eb173cae..5b6a5fc308 100644 --- a/src/packages/animate/doc.taro.md +++ b/src/packages/animate/doc.taro.md @@ -14,113 +14,18 @@ import { Animate } from '@nutui/nutui-react-taro'; ### 点击触发 -:::demo - -```tsx -import React from 'react' -import { Animate, Button } from '@nutui/nutui-react-taro' - -const AnimateDemo = () => { - return ( - <> -
        -

        点击触发

        -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        -
        - - ) -} - -export default AnimateDemo -``` - +:::demo + + + ::: ### 循环动画 -:::demo - -```tsx -import React from 'react' -import { Animate, Button } from '@nutui/nutui-react-taro' - -const AnimateDemo = () => { - return ( - <> -
        -

        循环动画

        -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        -
        - - ) -} - -export default AnimateDemo - -``` - +:::demo + + + ::: ## Animate diff --git a/src/packages/animate/doc.zh-TW.md b/src/packages/animate/doc.zh-TW.md index dea5e9d010..c4ae326b44 100644 --- a/src/packages/animate/doc.zh-TW.md +++ b/src/packages/animate/doc.zh-TW.md @@ -14,113 +14,18 @@ import { Animate } from '@nutui/nutui-react'; ### 點擊觸發 -:::demo - -```tsx -import React from 'react' -import { Animate, Button } from '@nutui/nutui-react' - -const AnimateDemo = () => { - return ( - <> -
        -

        點擊觸發

        -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        -
        - - ) -} - -export default AnimateDemo -``` - +:::demo + + + ::: ### 循環動畫 -:::demo - -```tsx -import React from 'react' -import { Animate, Button } from '@nutui/nutui-react' - -const AnimateDemo = () => { - return ( - <> -
        -

        循環動畫

        -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        - -
        - - - -
        -
        - - ) -} - -export default AnimateDemo - -``` - +:::demo + + + ::: ## Animate diff --git a/src/packages/animatingnumbers/__tests__/animatingnumbers.spec.tsx b/src/packages/animatingnumbers/__tests__/animatingnumbers.spec.tsx index 610b7cf629..4fd2666ff3 100644 --- a/src/packages/animatingnumbers/__tests__/animatingnumbers.spec.tsx +++ b/src/packages/animatingnumbers/__tests__/animatingnumbers.spec.tsx @@ -1,10 +1,10 @@ import React from 'react' -import { render, waitFor } from '@testing-library/react' +import { render } from '@testing-library/react' import '@testing-library/jest-dom' import { AnimatingNumbers } from '../animatingnumbers' import { CountUp } from '@/packages/animatingnumbers/countup' -jest.useFakeTimers() +vi.useFakeTimers() test('test value props', () => { const { container } = render() @@ -13,10 +13,10 @@ test('test value props', () => { 'style', 'transition: transform 1s ease-in-out;' ) - jest.advanceTimersByTime(CountUp.defaultProps?.delay ?? 0) + vi.advanceTimersByTime(CountUp.defaultProps?.delay ?? 0) expect(listNumbers[0]).toHaveAttribute( 'style', - 'transition: transform 1s ease-in-out; transform: translate(0, -30%); webkit-transform: translate(0, -30%);' + 'transition: transform 1s ease-in-out; transform: translate(0, -30%);' ) expect(listNumbers.length).toBe(5) }) @@ -28,24 +28,23 @@ test('test aysnc value and duration props', async () => { ) const listNumbers = container.querySelectorAll('.nut-countup-number') expect(listNumbers.length).toBe(8) - jest.advanceTimersByTime(CountUp.defaultProps?.delay ?? 0) - await waitFor(() => { - expect(listNumbers[0]).toHaveAttribute( - 'style', - 'transition: transform 1.2s ease-in-out; transform: translate(0, -50%); webkit-transform: translate(0, -50%);' - ) - }) + vi.advanceTimersByTime(CountUp.defaultProps?.delay ?? 0) + expect(listNumbers[0]).toHaveAttribute( + 'style', + 'transition: transform 1.2s ease-in-out; transform: translate(0, -50%);' + ) - value = `${Math.floor(Math.random() * 999999)}.${Math.floor( - Math.random() * 89 + 10 - )}` - rerender() - await waitFor(() => { + for (let i = 0; i < 5; i++) { + value = `${Math.floor(Math.random() * 999999)}.${Math.floor( + Math.random() * 89 + 10 + )}` + rerender() + vi.runAllTimers() const listNumbers2 = container.querySelectorAll('.nut-countup-number') const lastlen = value.length - 1 const lastNumber = Number(value.slice(lastlen)) const percentage = lastNumber === 0 ? 50 : 5 * lastNumber - const style = `transition: transform 0s ease-in-out; transform: translate(${0}, -${percentage}%); webkit-transform: translate(0, -${percentage}%);` + const style = `transition: transform 0s ease-in-out; transform: translate(${0}, -${percentage}%);` expect(listNumbers2[7]).toHaveAttribute('style', style) - }) + } }) diff --git a/src/packages/animatingnumbers/countup.scss b/src/packages/animatingnumbers/countup.scss index 97c213f5b1..9fc6dd20ce 100644 --- a/src/packages/animatingnumbers/countup.scss +++ b/src/packages/animatingnumbers/countup.scss @@ -3,6 +3,7 @@ display: inline-flex; height: $countup-height; overflow: hidden; + direction: ltr; } &-listitem { diff --git a/src/packages/animatingnumbers/demo.taro.tsx b/src/packages/animatingnumbers/demo.taro.tsx index 4b8583f6b1..25ad262496 100644 --- a/src/packages/animatingnumbers/demo.taro.tsx +++ b/src/packages/animatingnumbers/demo.taro.tsx @@ -1,70 +1,37 @@ -import React, { useEffect, useState } from 'react' +import React from 'react' import Taro from '@tarojs/taro' -import { - AnimatingNumbers, - Cell, - ConfigProvider, -} from '@/packages/nutui.react.taro' import { useTranslate } from '@/sites/assets/locale/taro' import Header from '@/sites/components/header' +import Demo1 from './demos/taro/demo1' +import Demo2 from './demos/taro/demo2' -interface T { - basic: string - custom: string -} const AnimatingNumbersDemo = () => { - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { - basic: '基础用法', - custom: '自定义样式,动态修改数据(需要指定最大位数)', + basic: 'AnimatingNumbers.CountUp - 基础用法', + custom: + 'AnimatingNumbers.CountUp - 自定义样式,动态修改数据(需要指定最大位数)', }, 'zh-TW': { - basic: '基础用法', - custom: '自定義樣式,動態修改數據(需要指定最大位數)', + basic: 'AnimatingNumbers.CountUp - 基础用法', + custom: + 'AnimatingNumbers.CountUp - 自定義樣式,動態修改數據(需要指定最大位數)', }, 'en-US': { - basic: 'Basic Usage', + basic: 'AnimatingNumbers.CountUp - Basic Usage', custom: - 'Custom styles to dynamically modify data (maximum number of bits required)', + 'AnimatingNumbers.CountUp - Custom styles to dynamically modify data (maximum number of bits required)', }, }) - const customTheme = { - nutuiCountupWidth: '24px', - nutuiCountupBgColor: `var(--nutui-color-primary)`, - nutuiCountupColor: `#fff`, - nutuiCountupLrMargin: `1px`, - } - const [value, setEndNumer] = useState('1570.99') - useEffect(() => { - const timer = setInterval(() => { - setEndNumer( - `${Math.floor(Math.random() * 999999)}.${Math.floor( - Math.random() * 89 + 10 - )}` - ) - }, 30000) - return () => { - clearInterval(timer) - } - }, []) + return ( <>
        -

        CountUp-{translated.basic}

        - } /> -

        CountUp-{translated.custom}

        - - - - } - /> +

        {translated.basic}

        + +

        {translated.custom}

        +
        ) diff --git a/src/packages/animatingnumbers/demo.tsx b/src/packages/animatingnumbers/demo.tsx index c31d964c0f..2d41c9eecb 100644 --- a/src/packages/animatingnumbers/demo.tsx +++ b/src/packages/animatingnumbers/demo.tsx @@ -1,66 +1,34 @@ -import React, { useEffect, useState } from 'react' -import { AnimatingNumbers } from './animatingnumbers' -import { Cell } from '../cell/cell' +import React from 'react' import { useTranslate } from '../../sites/assets/locale' -import ConfigProvider from '@/packages/configprovider' +import Demo1 from './demos/h5/demo1' +import Demo2 from './demos/h5/demo2' -interface T { - basic: string - custom: string -} const AnimatingNumbersDemo = () => { - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { - basic: '基础用法', - custom: '自定义样式,动态修改数据(需要指定最大位数)', + basic: 'AnimatingNumbers.CountUp - 基础用法', + custom: + 'AnimatingNumbers.CountUp - 自定义样式,动态修改数据(需要指定最大位数)', }, 'zh-TW': { - basic: '基础用法', - custom: '自定義樣式,動態修改數據(需要指定最大位數)', + basic: 'AnimatingNumbers.CountUp - 基础用法', + custom: + 'AnimatingNumbers.CountUp - 自定義樣式,動態修改數據(需要指定最大位數)', }, 'en-US': { - basic: 'Basic Usage', + basic: 'AnimatingNumbers.CountUp - Basic Usage', custom: - 'Custom styles to dynamically modify data (maximum number of bits required)', + 'AnimatingNumbers.CountUp - Custom styles to dynamically modify data (maximum number of bits required)', }, }) - const customTheme = { - nutuiCountupWidth: '24px', - nutuiCountupBgColor: `var(--nutui-color-primary)`, - nutuiCountupColor: `#fff`, - nutuiCountupLrMargin: `1px`, - } - const [value, setEndNumer] = useState('1570.99') - useEffect(() => { - const timer = setInterval(() => { - setEndNumer( - `${Math.floor(Math.random() * 999999)}.${Math.floor( - Math.random() * 89 + 10 - )}` - ) - }, 30000) - return () => { - clearInterval(timer) - } - }, []) + return ( <>
        -

        CountUp-{translated.basic}

        - } /> - -

        CountUp-{translated.custom}

        - - - - } - /> +

        {translated.basic}

        + +

        {translated.custom}

        +
        ) diff --git a/src/packages/animatingnumbers/demos/h5/demo1.tsx b/src/packages/animatingnumbers/demos/h5/demo1.tsx new file mode 100644 index 0000000000..6c94e2b8fd --- /dev/null +++ b/src/packages/animatingnumbers/demos/h5/demo1.tsx @@ -0,0 +1,7 @@ +import React from 'react' +import { AnimatingNumbers, Cell } from '@nutui/nutui-react' + +const Demo1 = () => { + return } /> +} +export default Demo1 diff --git a/src/packages/animatingnumbers/demos/h5/demo2.tsx b/src/packages/animatingnumbers/demos/h5/demo2.tsx new file mode 100644 index 0000000000..6b5d9c91ae --- /dev/null +++ b/src/packages/animatingnumbers/demos/h5/demo2.tsx @@ -0,0 +1,31 @@ +import React, { useEffect, useState } from 'react' +import { AnimatingNumbers, Cell, ConfigProvider } from '@nutui/nutui-react' + +const Demo2 = () => { + const customTheme = { + nutuiCountupWidth: '24px', + nutuiCountupBgColor: `var(--nutui-color-primary)`, + nutuiCountupColor: `#fff`, + nutuiCountupLrMargin: `1px`, + } + const [value, setEndNumer] = useState('1570.99') + useEffect(() => { + setInterval(() => { + setEndNumer( + `${Math.floor(Math.random() * 999999)}.${Math.floor( + Math.random() * 89 + 10 + )}` + ) + }, 30000) + }, []) + return ( + + + + } + /> + ) +} +export default Demo2 diff --git a/src/packages/animatingnumbers/demos/taro/demo1.tsx b/src/packages/animatingnumbers/demos/taro/demo1.tsx new file mode 100644 index 0000000000..b0948eec9e --- /dev/null +++ b/src/packages/animatingnumbers/demos/taro/demo1.tsx @@ -0,0 +1,7 @@ +import React from 'react' +import { AnimatingNumbers, Cell } from '@nutui/nutui-react-taro' + +const Demo1 = () => { + return } /> +} +export default Demo1 diff --git a/src/packages/animatingnumbers/demos/taro/demo2.tsx b/src/packages/animatingnumbers/demos/taro/demo2.tsx new file mode 100644 index 0000000000..ab313056fb --- /dev/null +++ b/src/packages/animatingnumbers/demos/taro/demo2.tsx @@ -0,0 +1,31 @@ +import React, { useEffect, useState } from 'react' +import { AnimatingNumbers, Cell, ConfigProvider } from '@nutui/nutui-react-taro' + +const Demo2 = () => { + const customTheme = { + nutuiCountupWidth: '24px', + nutuiCountupBgColor: `var(--nutui-color-primary)`, + nutuiCountupColor: `#fff`, + nutuiCountupLrMargin: `1px`, + } + const [value, setEndNumer] = useState('1570.99') + useEffect(() => { + setInterval(() => { + setEndNumer( + `${Math.floor(Math.random() * 999999)}.${Math.floor( + Math.random() * 89 + 10 + )}` + ) + }, 30000) + }, []) + return ( + + + + } + /> + ) +} +export default Demo2 diff --git a/src/packages/animatingnumbers/doc.en-US.md b/src/packages/animatingnumbers/doc.en-US.md index 372d8a21de..dd2372a13b 100644 --- a/src/packages/animatingnumbers/doc.en-US.md +++ b/src/packages/animatingnumbers/doc.en-US.md @@ -16,15 +16,7 @@ import { AnimatingNumbers } from '@nutui/nutui-react' :::demo -```tsx -import React from 'react' -import { AnimatingNumbers, Cell } from '@nutui/nutui-react' - -const App = () => { - return } /> -} -export default App -``` + ::: @@ -32,36 +24,7 @@ export default App :::demo -```tsx -import React, { useEffect, useState } from 'react' -import { AnimatingNumbers, Cell } from '@nutui/nutui-react' - -const App = () => { - const [value, setEndNumer] = useState('1570.99') - useEffect(() => { - setInterval(() => { - setEndNumer( - `${Math.floor(Math.random() * 999999)}.${Math.floor( - Math.random() * 89 + 10 - )}` - ) - }, 30000) - }, []) - return ( - - } - /> - ) -} -export default App -``` + ::: diff --git a/src/packages/animatingnumbers/doc.md b/src/packages/animatingnumbers/doc.md index 69054e261e..ef31a70782 100644 --- a/src/packages/animatingnumbers/doc.md +++ b/src/packages/animatingnumbers/doc.md @@ -12,56 +12,19 @@ import { AnimatingNumbers } from '@nutui/nutui-react' ## 代码演示 -### 基础用法 +### AnimatingNumbers.CountUp - 基础用法 :::demo -```tsx -import React from 'react' -import { AnimatingNumbers, Cell } from '@nutui/nutui-react' - -const App = () => { - return } /> -} -export default App -``` + ::: -### 自定义样式,动态修改数据(需要指定最大位数) +### AnimatingNumbers.CountUp - 自定义样式,动态修改数据(需要指定最大位数) :::demo -```tsx -import React, { useEffect, useState } from 'react' -import { AnimatingNumbers, Cell } from '@nutui/nutui-react' - -const App = () => { - const [value, setEndNumer] = useState('1570.99') - useEffect(() => { - setInterval(() => { - setEndNumer( - `${Math.floor(Math.random() * 999999)}.${Math.floor( - Math.random() * 89 + 10 - )}` - ) - }, 30000) - }, []) - return ( - - } - /> - ) -} -export default App -``` + ::: diff --git a/src/packages/animatingnumbers/doc.taro.md b/src/packages/animatingnumbers/doc.taro.md index 02bdff057d..c094f50e76 100644 --- a/src/packages/animatingnumbers/doc.taro.md +++ b/src/packages/animatingnumbers/doc.taro.md @@ -12,56 +12,19 @@ import { AnimatingNumbers } from '@nutui/nutui-react-taro' ## 代码演示 -### AnimatingNumbers.CountUp-基础用法 +### AnimatingNumbers.CountUp - 基础用法 :::demo -```tsx -import React from 'react' -import { AnimatingNumbers, Cell } from '@nutui/nutui-react-taro' - -const App = () => { - return } /> -} -export default App -``` + ::: -### AnimatingNumbers.CountUp-自定义样式,动态修改数据(需要指定最大位数) +### AnimatingNumbers.CountUp - 自定义样式,动态修改数据(需要指定最大位数) :::demo -```tsx -import React, { useEffect, useState } from 'react' -import { AnimatingNumbers, Cell } from '@nutui/nutui-react-taro' - -const App = () => { - const [value, setEndNumer] = useState('1570.99') - useEffect(() => { - setInterval(() => { - setEndNumer( - `${Math.floor(Math.random() * 999999)}.${Math.floor( - Math.random() * 89 + 10 - )}` - ) - }, 30000) - }, []) - return ( - - } - /> - ) -} -export default App -``` + ::: diff --git a/src/packages/animatingnumbers/doc.zh-TW.md b/src/packages/animatingnumbers/doc.zh-TW.md index 0f59fc66f4..f432928abf 100644 --- a/src/packages/animatingnumbers/doc.zh-TW.md +++ b/src/packages/animatingnumbers/doc.zh-TW.md @@ -12,56 +12,19 @@ import { AnimatingNumbers } from '@nutui/nutui-react' ## 代碼演示 -### AnimatingNumbers.CountUp-基礎用法 +### AnimatingNumbers.CountUp - 基礎用法 :::demo -```tsx -import React from 'react' -import { AnimatingNumbers, Cell } from '@nutui/nutui-react' - -const App = () => { - return } /> -} -export default App -``` + ::: -### AnimatingNumbers.CountUp-自定義樣式,動態修改數據(需要指定最大位數) +### C - 自定義樣式,動態修改數據(需要指定最大位數) :::demo -```tsx -import React, { useEffect, useState } from 'react' -import { AnimatingNumbers, Cell } from '@nutui/nutui-react' - -const App = () => { - const [value, setEndNumer] = useState('1570.99') - useEffect(() => { - setInterval(() => { - setEndNumer( - `${Math.floor(Math.random() * 999999)}.${Math.floor( - Math.random() * 89 + 10 - )}` - ) - }, 30000) - }, []) - return ( - - } - /> - ) -} -export default App -``` + ::: diff --git a/src/packages/audio/__test__/__snapshots__/audio.spec.tsx.snap b/src/packages/audio/__test__/__snapshots__/audio.spec.tsx.snap index 941a5ebdaa..f66fcf767c 100644 --- a/src/packages/audio/__test__/__snapshots__/audio.spec.tsx.snap +++ b/src/packages/audio/__test__/__snapshots__/audio.spec.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`icon type test 1`] = `
        diff --git a/src/packages/audio/__test__/audio.spec.tsx b/src/packages/audio/__test__/audio.spec.tsx index 9130f5feb1..1e1c9b4bfc 100644 --- a/src/packages/audio/__test__/audio.spec.tsx +++ b/src/packages/audio/__test__/audio.spec.tsx @@ -4,17 +4,17 @@ import '@testing-library/jest-dom' import { Audio } from '../audio' test('className && style && type = progress && onPause && onFastBack && onForward test ', () => { - const playeEnd = jest.fn() - const pause = jest.fn() - const canPlay = jest.fn() - const mute = jest.fn() - const fastBack = jest.fn() - const forward = jest.fn() + const playeEnd = vi.fn() + const pause = vi.fn() + const canPlay = vi.fn() + const mute = vi.fn() + const fastBack = vi.fn() + const forward = vi.fn() const TestComponent = () => { return ( <>
        + + ) +} +export default Demo11 diff --git a/src/packages/calendar/demos/taro/demo2.tsx b/src/packages/calendar/demos/taro/demo2.tsx new file mode 100644 index 0000000000..8936f209be --- /dev/null +++ b/src/packages/calendar/demos/taro/demo2.tsx @@ -0,0 +1,45 @@ +import React, { useState } from 'react' +import { Cell, Calendar } from '@nutui/nutui-react-taro' + +const Demo2 = () => { + const [date, setDate] = useState(['2023-01-23', '2023-11-26']) + const [isVisible, setIsVisible] = useState(false) + + const openSwitch = () => { + setIsVisible(true) + } + + const closeSwitch = () => { + setIsVisible(false) + } + + const setChooseValue = (param: string) => { + setDate([...[param[0][3], param[1][3]]]) + } + + const select = (param: string) => { + console.log(param) + } + + return ( + <> + + + + + ) +} +export default Demo2 diff --git a/src/packages/calendar/demos/taro/demo3.tsx b/src/packages/calendar/demos/taro/demo3.tsx new file mode 100644 index 0000000000..f9683f6c13 --- /dev/null +++ b/src/packages/calendar/demos/taro/demo3.tsx @@ -0,0 +1,42 @@ +import React, { useState } from 'react' +import { Cell, Calendar } from '@nutui/nutui-react-taro' + +const Demo3 = () => { + const [date, setDate] = useState([]) + const [isVisible, setIsVisible] = useState(false) + + const openSwitch = () => { + setIsVisible(true) + } + + const closeSwitch = () => { + setIsVisible(false) + } + + const setChooseValue = (chooseData: any) => { + const dateArr = chooseData.map((item: any) => { + return item[3] + }) + setDate([...dateArr]) + } + + return ( + <> + + + + ) +} +export default Demo3 diff --git a/src/packages/calendar/demos/taro/demo4.tsx b/src/packages/calendar/demos/taro/demo4.tsx new file mode 100644 index 0000000000..f6b2e549b4 --- /dev/null +++ b/src/packages/calendar/demos/taro/demo4.tsx @@ -0,0 +1,40 @@ +import React, { useState } from 'react' +import { Cell, Calendar } from '@nutui/nutui-react-taro' + +const Demo4 = () => { + const [date, setDate] = useState([]) + const [isVisible, setIsVisible] = useState(false) + + const openSwitch = () => { + setIsVisible(true) + } + + const closeSwitch = () => { + setIsVisible(false) + } + + const setChooseValue = (chooseData: any) => { + const dateArr = [...[chooseData[0][3], chooseData[1][3]]] + setDate([...dateArr]) + } + return ( + <> + + + + ) +} +export default Demo4 diff --git a/src/packages/calendar/demos/taro/demo5.tsx b/src/packages/calendar/demos/taro/demo5.tsx new file mode 100644 index 0000000000..18c0b2977c --- /dev/null +++ b/src/packages/calendar/demos/taro/demo5.tsx @@ -0,0 +1,47 @@ +import React, { useState } from 'react' +import { Cell, Calendar, CalendarDay } from '@nutui/nutui-react-taro' + +const Demo5 = () => { + const [date, setDate] = useState([]) + const [isVisible, setIsVisible] = useState(false) + + const openSwitch = () => { + setIsVisible(true) + } + + const closeSwitch = () => { + setIsVisible(false) + } + + const setChooseValue = (chooseData: any) => { + const dateArr = [...[chooseData[0][3], chooseData[1][3]]] + setDate([...dateArr]) + } + + const disableDate = (date: CalendarDay) => { + return date.day === 25 || date.day === 20 || date.day === 22 + } + + return ( + <> + + + + + ) +} +export default Demo5 diff --git a/src/packages/calendar/demos/taro/demo6.tsx b/src/packages/calendar/demos/taro/demo6.tsx new file mode 100644 index 0000000000..45ac299d91 --- /dev/null +++ b/src/packages/calendar/demos/taro/demo6.tsx @@ -0,0 +1,130 @@ +import React, { useRef, useState } from 'react' +import { + Cell, + Calendar, + DatePicker, + CalendarDay, +} from '@nutui/nutui-react-taro' + +const padZero = (num: number | string, targetLength = 2) => { + let str = `${num}` + while (str.length < targetLength) { + str = `0${str}` + } + return str +} + +const Demo6 = () => { + const [date, setDate] = useState([]) + const [isVisible, setIsVisible] = useState(false) + + const disableDate = (date: CalendarDay) => { + return date.day === 25 || date.day === 20 || date.day === 22 + } + + const [show, setShow] = useState(false) + const [dpAbled, setDatePickerAbled] = useState([false, false]) + const [desc1, setDesc1] = useState('10:00:00') + const [desc2, setDesc2] = useState('20:00:00') + const desc = useRef(0) + + const setChooseValue = (chooseData: any) => { + const dateArr = [...[chooseData[0][3], chooseData[1][3]]] + setDate([...dateArr]) + } + const confirm = (values: (string | number)[], options: any[]) => { + if (desc.current === 1) { + setDesc1( + options.map((option) => padZero(parseInt(option.text))).join(':') + ) + } else { + setDesc2( + options.map((option) => padZero(parseInt(option.text))).join(':') + ) + } + } + + const showDatePicker = (e: any, index: number) => { + if (dpAbled[index - 1]) { + e.stopPropagation() + setShow(true) + desc.current = index + } + } + + const openSwitch = () => { + setIsVisible(true) + } + + const closeSwitch = () => { + setIsVisible(false) + } + + return ( + <> + +
        + {date && date.length ? `${date[0]} ${desc1}` : '请选择起始时间'} +
        +
        -
        +
        + {date && date.length ? `${date[1]} ${desc2}` : '请选择截止时间'} +
        +
        + } + /> + { + let d = [false, false] + if (date.length > 1) { + d = [true, true] + } else if (date.length > 0) { + d = [true, false] + } + setDatePickerAbled(d) + }} + onClose={closeSwitch} + onConfirm={setChooseValue} + > +
        +
        { + showDatePicker(e, 1) + }} + > + 开始时间:{desc1} +
        + - +
        { + showDatePicker(e, 2) + }} + > + 结束时间:{desc2} +
        +
        + setShow(false)} + onConfirm={(options, values) => confirm(values, options)} + /> +
        + + ) +} +export default Demo6 diff --git a/src/packages/calendar/demos/taro/demo7.tsx b/src/packages/calendar/demos/taro/demo7.tsx new file mode 100644 index 0000000000..3b0d46a131 --- /dev/null +++ b/src/packages/calendar/demos/taro/demo7.tsx @@ -0,0 +1,39 @@ +import React, { useState } from 'react' +import { Cell, Calendar } from '@nutui/nutui-react-taro' + +const Demo7 = () => { + const [date, setDate] = useState('') + const [isVisible, setIsVisible] = useState(false) + + const openSwitch = () => { + setIsVisible(true) + } + + const closeSwitch = () => { + setIsVisible(false) + } + + const setChooseValue = (param: string) => { + setDate(param[3]) + } + + return ( + <> + + + + ) +} +export default Demo7 diff --git a/src/packages/calendar/demos/taro/demo8.tsx b/src/packages/calendar/demos/taro/demo8.tsx new file mode 100644 index 0000000000..b1e33441a0 --- /dev/null +++ b/src/packages/calendar/demos/taro/demo8.tsx @@ -0,0 +1,45 @@ +import React, { useState } from 'react' +import { Cell, Calendar } from '@nutui/nutui-react-taro' + +const Demo8 = () => { + const [date, setDate] = useState(['2023-03-23', '2023-11-26']) + const [isVisible, setIsVisible] = useState(false) + + const openSwitch = () => { + setIsVisible(true) + } + + const closeSwitch = () => { + setIsVisible(false) + } + + const setChooseValue = (param: string) => { + setDate([...[param[0][3], param[1][3]]]) + } + + const select = (param: string) => { + console.log(param) + } + + return ( + <> + + + + ) +} +export default Demo8 diff --git a/src/packages/calendar/demos/taro/demo9.tsx b/src/packages/calendar/demos/taro/demo9.tsx new file mode 100644 index 0000000000..6b8b6b493b --- /dev/null +++ b/src/packages/calendar/demos/taro/demo9.tsx @@ -0,0 +1,75 @@ +import React, { useState } from 'react' +import { Cell, Calendar, CalendarDay } from '@nutui/nutui-react-taro' + +const padZero = (num: number | string, targetLength = 2) => { + let str = `${num}` + while (str.length < targetLength) { + str = `0${str}` + } + return str +} + +const Demo9 = () => { + const [date, setDate] = useState(['2023-06-12', '2023-06-16']) + + const [isVisible, setIsVisible] = useState(false) + + const openSwitch = () => { + setIsVisible(true) + } + + const closeSwitch = () => { + setIsVisible(false) + } + + const setChooseValue = (param: string) => { + setDate([...[param[0][3], param[1][3]]]) + } + + const renderDay = (date: CalendarDay) => { + return <>{padZero(date.day)} + } + + const renderDayTop = (date: CalendarDay) => { + let currDate = '' + if (date && date.day === 10) { + currDate = '☺' + } + return {currDate} + } + + const renderDayBottom = (date: CalendarDay) => { + let currDate = '' + if (date && date.day === 10) { + currDate = '纪念日' + } + return {currDate} + } + + return ( + <> + + + + ) +} +export default Demo9 diff --git a/src/packages/calendar/doc.en-US.md b/src/packages/calendar/doc.en-US.md index dbeca449d7..f0b30e5ba0 100644 --- a/src/packages/calendar/doc.en-US.md +++ b/src/packages/calendar/doc.en-US.md @@ -16,44 +16,7 @@ import { Calendar } from '@nutui/nutui-react'; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -const App = () => { - const [date, setDate] = useState(''); - const [isVisible, setIsVisible] = useState(false); - const [dateWeek, setDateWeek] = useState(''); - - const openSwitch = () => { - setIsVisible(true); - } - - const closeSwitch = () => { - setIsVisible(false); - } - - const setChooseValue = (param: string) => { - setDate(param[3]); - setDateWeek(param[4]); - } - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -61,44 +24,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -const App = () => { - const [date1, setDate1] = useState(['2019-12-23', '2019-12-26']) - const [isVisible1, setIsVisible1] = useState(false) - - const openSwitch1 = () => { - setIsVisible1(true) - } - - const closeSwitch1 = () => { - setIsVisible1(false) - } - - const setChooseValue1 = (param: string) => { - setDate1([...[param[0][3], param[1][3]]]) - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -106,44 +32,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - setDate3(param[3]) - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -151,45 +40,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - const dateArr = [...[param[0][3], param[1][3]]] - setDate3([...dateArr]) - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -197,50 +48,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - const dateArr = [...[param[0][3], param[1][3]]] - setDate3([...dateArr]) - } - - const disableDate = (date: Day) => { - return date.day === 25 - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -248,124 +56,7 @@ export default App; :::demo -```tsx -import React, {useRef, useState } from "react"; -import { Cell, Calendar, DatePicker } from '@nutui/nutui-react'; - -const App = () => { - const openSwitch42 = () => { - setIsVisible42(true) - } - const [date42, setDate42] = useState([]) - const [isVisible42, setIsVisible42] = useState(false) - const disableDate = (date: Day) => { - return date.day === 25 || date.day === 20 || date.day === 22 - } - const [show1, setShow1] = useState(false) - const [dpAbled, setDatePickerAbled] = useState([false, false]) - const [desc1, setDesc1] = useState('10:00:00') - const [desc2, setDesc2] = useState('20:00:00') - const desc = useRef(0) - const padZero = (d: number | string) => { - return d <= 9 ? `0${d}` : d - } - const setChooseValue42 = (chooseData: any) => { - const dateArr = [...[chooseData[0][3], chooseData[1][3]]] - setDate42([...dateArr]) - } - const confirm1 = (values: (string | number)[], options: any[]) => { - if (desc.current === 1) { - setDesc1( - options.map((option) => padZero(parseInt(option.text))).join(':') - ) - } else { - setDesc2( - options.map((option) => padZero(parseInt(option.text))).join(':') - ) - } - } - const showDatePicker = (e: any, index: number) => { - if (dpAbled[index - 1]) { - e.stopPropagation() - setShow1(true) - desc.current = index - } - } - - return ( - <> - -
        - {date42 && date42.length - ? `${date42[0]} ${desc1}` - : 'Select start Time'} -
        -
        -
        -
        - {date42 && date42.length - ? `${date42[1]} ${desc2}` - : 'Select end time'} -
        -
        - } - /> - { - let d = [false, false] - if (date.length > 1) { - d = [true, true] - } else if (date.length > 0) { - d = [true, false] - } - setDatePickerAbled(d) - }} - onClose={closeSwitch42} - onConfirm={setChooseValue42} - > -
        -
        { - showDatePicker(e, 1) - }} - > - Start Time: {desc1} -
        - - -
        { - showDatePicker(e, 2) - }} - > - End Time: {desc2} -
        -
        - setShow1(false)} - onConfirm={(options, values) => confirm1(values, options)} - /> -
        - - ); -}; -export default App; - -``` + ::: @@ -373,44 +64,15 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - setDate3(param[3]) - } - - return ( - <> - - - - ); -}; -export default App; + -``` +::: + +### Quick selection - Interval selection + +:::demo + + ::: @@ -418,69 +80,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -interface Day { - day: string | number; - type: string; -} - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - setDate3([...[param[0][3], param[1][3]]]) - } - - const renderDay = (date: Day) => { - return ( - { date.day <= 9 ? `0${ date.day}` : date.day } - ) - } - - const renderDayBottom = (date: Day) => { - return ( - { - date ? (date.day <= 10 ? '' : date.day <= 20 ? 'mid' : '') : '' - } - ) - } - - return ( - <> - - - - - ); -}; -export default App; - -``` + ::: @@ -488,144 +88,7 @@ export default App; :::demo -```tsx -import React, { useState, useRef } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -const Utils = { - date2Str(date: Date, split?: string): string { - split = split || '-' - const y = date.getFullYear() - const m = this.getNumTwoBit(date.getMonth() + 1) - const d = this.getNumTwoBit(date.getDate()) - return [y, m, d].join(split) - }, - getDay(i: number): string { - i = i || 0 - let date = new Date() - const diff = i * (1000 * 60 * 60 * 24) - date = new Date(date.getTime() + diff) - return this.date2Str(date) - }, - getNumTwoBit(n: number): string { - n = Number(n) - return (n > 9 ? '' : '0') + n - }, - date2Str(date: Date, split?: string): string { - split = split || '-' - const y = date.getFullYear() - const m = this.getNumTwoBit(date.getMonth() + 1) - const d = this.getNumTwoBit(date.getDate()) - return [y, m, d].join(split) - }, - getMonthDays(year: string, month: string): number { - if (/^0/.test(month)) { - month = month.split('')[1] - } - return ( - [ - 0, - 31, - this.isLeapYear(Number(year)) ? 29 : 28, - 31, - 30, - 31, - 30, - 31, - 31, - 30, - 31, - 30, - 31, - ] as number[] - )[month as any] - }, - isLeapYear(y: number): boolean { - return (y % 4 === 0 && y % 100 !== 0) || y % 400 === 0 - }, -}; - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - - const calendarRef = useRef(null); - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - setDate3([...[param[0][3], param[1][3]]]) - } - - const goDate = () => { - if (calendarRef.current) { - calendarRef.current.scrollToDate('2023-04-01'); - } - }; - - const clickBtn = () => { - const date = [Utils.date2Str(new Date()), Utils.getDay(6)]; - setDate3(date); - if (calendarRef.current) { - calendarRef.current.scrollToDate(date[0]) - } - } - - const clickBtn1 = () => { - const date = new Date(); - const year = date.getFullYear(); - let month: any = date.getMonth() + 1; - month = month < 10 ? `0${ month}` : `${month }`; - const yearMonth = `${year}-${month}`; - const currMonthDays = Utils.getMonthDays(`${year }`, `${month }`); - setDate3([`${yearMonth}-01`, `${yearMonth}-${currMonthDays}`]); - if (calendarRef.current) { - calendarRef.current.scrollToDate(`${yearMonth}-01`) - } - } - - const renderHeaderButtons = () => { - return ( -
        -
        - to a certain month -
        -
        - last seven days -
        -
        - current month -
        -
        - ) - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -633,33 +96,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Calendar } from '@nutui/nutui-react'; - -const App = () => { - const [date2, setDate2] = useState('2020-07-08') - - const setChooseValue2 = (param: string) => { - setDate2(param[3]) - } - - return ( - <> -
        - -
        - - ); -}; -export default App; - -``` + ::: @@ -685,17 +122,17 @@ export default App; | showSubTitle | whether to show sub title for calendar | `boolean` | `true` | | scrollAnimation | whether to start scroll animation | `boolean` | `true` | | firstDayOfWeek | first day of week | `0-6` | `0` | -| disableDate | set disable date | `(date: Day) => boolean` | `-` | +| disableDate | set disable date | `(date: CalendarDay) => boolean` | `-` | | renderHeaderButtons | custom buttons, under the title but above the subtitle | `() => string` \| `JSX.Element` | `-` | -| renderDay | day info | `(date: Day) => string` \| `JSX.Element` | `-` | -| renderDayTop | something above day | `(date: Day) => string` \| `JSX.Element` | `-` | -| renderDayBottom | something under day | `(date: Day) => string` \| `JSX.Element` | `-` | +| renderDay | day info | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | +| renderDayTop | something above day | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | +| renderDayBottom | something under day | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | | onDayClick | trigger when click the day element | `(data: string) => {}` | `-` | | onPageChange | page change ,one month makes as a page | `(param: string) => {}` | `-` | | onConfirm | trigger when click the confirm button, or after the click when it is not popup | `(param: string) => {}` | `-` | | onClose | trigger close | `() => {}` | `-` | -### Day +### CalendarDay | Property | Description | | --- | --- | diff --git a/src/packages/calendar/doc.md b/src/packages/calendar/doc.md index ecd3438608..733a0502b5 100644 --- a/src/packages/calendar/doc.md +++ b/src/packages/calendar/doc.md @@ -16,44 +16,7 @@ import { Calendar } from '@nutui/nutui-react'; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -const App = () => { - const [date, setDate] = useState(''); - const [isVisible, setIsVisible] = useState(false); - const [dateWeek, setDateWeek] = useState(''); - - const openSwitch = () => { - setIsVisible(true); - } - - const closeSwitch = () => { - setIsVisible(false); - } - - const setChooseValue = (param: string) => { - setDate(param[3]); - setDateWeek(param[4]); - } - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -61,44 +24,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -const App = () => { - const [date1, setDate1] = useState(['2019-12-23', '2019-12-26']) - const [isVisible1, setIsVisible1] = useState(false) - - const openSwitch1 = () => { - setIsVisible1(true) - } - - const closeSwitch1 = () => { - setIsVisible1(false) - } - - const setChooseValue1 = (param: string) => { - setDate1([...[param[0][3], param[1][3]]]) - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -106,44 +32,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - setDate3(param[3]) - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -151,45 +40,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - const dateArr = [...[param[0][3], param[1][3]]] - setDate3([...dateArr]) - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -197,50 +48,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - const dateArr = [...[param[0][3], param[1][3]]] - setDate3([...dateArr]) - } - - const disableDate = (date: Day) => { - return date.day === 25 - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -248,124 +56,7 @@ export default App; :::demo -```tsx -import React, {useRef, useState } from "react"; -import { Cell, Calendar, DatePicker } from '@nutui/nutui-react'; - -const App = () => { - const openSwitch42 = () => { - setIsVisible42(true) - } - const [date42, setDate42] = useState([]) - const [isVisible42, setIsVisible42] = useState(false) - const disableDate = (date: Day) => { - return date.day === 25 || date.day === 20 || date.day === 22 - } - const [show1, setShow1] = useState(false) - const [dpAbled, setDatePickerAbled] = useState([false, false]) - const [desc1, setDesc1] = useState('10:00:00') - const [desc2, setDesc2] = useState('20:00:00') - const desc = useRef(0) - const padZero = (d: number | string) => { - return d <= 9 ? `0${d}` : d - } - const setChooseValue42 = (chooseData: any) => { - const dateArr = [...[chooseData[0][3], chooseData[1][3]]] - setDate42([...dateArr]) - } - const confirm1 = (values: (string | number)[], options: any[]) => { - if (desc.current === 1) { - setDesc1( - options.map((option) => padZero(parseInt(option.text))).join(':') - ) - } else { - setDesc2( - options.map((option) => padZero(parseInt(option.text))).join(':') - ) - } - } - const showDatePicker = (e: any, index: number) => { - if (dpAbled[index - 1]) { - e.stopPropagation() - setShow1(true) - desc.current = index - } - } - - return ( - <> - -
        - {date42 && date42.length - ? `${date42[0]} ${desc1}` - : '请选择起始时间'} -
        -
        -
        -
        - {date42 && date42.length - ? `${date42[1]} ${desc2}` - : '请选择截止时间'} -
        -
        - } - /> - { - let d = [false, false] - if (date.length > 1) { - d = [true, true] - } else if (date.length > 0) { - d = [true, false] - } - setDatePickerAbled(d) - }} - onClose={closeSwitch42} - onConfirm={setChooseValue42} - > -
        -
        { - showDatePicker(e, 1) - }} - > - 开始时间:{desc1} -
        - - -
        { - showDatePicker(e, 2) - }} - > - 结束时间:{desc2} -
        -
        - setShow1(false)} - onConfirm={(options, values) => confirm1(values, options)} - /> -
        - - ); -}; -export default App; - -``` + ::: @@ -373,44 +64,15 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - setDate3(param[3]) - } - - return ( - <> - - - - ); -}; -export default App; + -``` +::: + +### 快捷选择-日期区间 + +:::demo + + ::: @@ -418,68 +80,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -interface Day { - day: string | number; - type: string; -} - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - setDate3([...[param[0][3], param[1][3]]]) - } - - const renderDay = (date: Day) => { - return ( - { date.day <= 9 ? `0${ date.day}` : date.day } - ) - } - - const renderDayBottom = (date: Day) => { - return ( - { - date ? (date.day <= 10 ? '' : date.day <= 20 ? 'mid' : '') : '' - } - ) - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -487,143 +88,7 @@ export default App; :::demo -```tsx -import React, { useState, useRef } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -const Utils = { - date2Str(date: Date, split?: string): string { - split = split || '-' - const y = date.getFullYear() - const m = this.getNumTwoBit(date.getMonth() + 1) - const d = this.getNumTwoBit(date.getDate()) - return [y, m, d].join(split) - }, - getDay(i: number): string { - i = i || 0 - let date = new Date() - const diff = i * (1000 * 60 * 60 * 24) - date = new Date(date.getTime() + diff) - return this.date2Str(date) - }, - getNumTwoBit(n: number): string { - n = Number(n) - return (n > 9 ? '' : '0') + n - }, - date2Str(date: Date, split?: string): string { - split = split || '-' - const y = date.getFullYear() - const m = this.getNumTwoBit(date.getMonth() + 1) - const d = this.getNumTwoBit(date.getDate()) - return [y, m, d].join(split) - }, - getMonthDays(year: string, month: string): number { - if (/^0/.test(month)) { - month = month.split('')[1] - } - return ( - [ - 0, - 31, - this.isLeapYear(Number(year)) ? 29 : 28, - 31, - 30, - 31, - 30, - 31, - 31, - 30, - 31, - 30, - 31, - ] as number[] - )[month as any] - }, - isLeapYear(y: number): boolean { - return (y % 4 === 0 && y % 100 !== 0) || y % 400 === 0 - }, -}; - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - const calendarRef = useRef(null); - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - setDate3([...[param[0][3], param[1][3]]]) - } - - const goDate = () => { - if (calendarRef.current) { - calendarRef.current.scrollToDate('2023-04-01'); - } - }; - - const clickBtn = () => { - const date = [Utils.date2Str(new Date()), Utils.getDay(6)]; - setDate3(date); - if (calendarRef.current) { - calendarRef.current.scrollToDate(date[0]) - } - } - - const clickBtn1 = () => { - const date = new Date(); - const year = date.getFullYear(); - let month: any = date.getMonth() + 1; - month = month < 10 ? `0${ month}` : `${month }`; - const yearMonth = `${year}-${month}`; - const currMonthDays = Utils.getMonthDays(`${year }`, `${month }`); - setDate3([`${yearMonth}-01`, `${yearMonth}-${currMonthDays}`]); - if (calendarRef.current) { - calendarRef.current.scrollToDate(`${yearMonth}-01`) - } - } - - const renderHeaderButtons = () => { - return ( -
        -
        - 去某个月 -
        -
        - 最近七天 -
        -
        - 当月 -
        -
        - ) - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -631,32 +96,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Calendar } from '@nutui/nutui-react'; - -const App = () => { - const [date2, setDate2] = useState('2020-07-08') - const setChooseValue2 = (param: string) => { - setDate2(param[3]) - } - - return ( - <> -
        - -
        - - ); -}; -export default App; - -``` + ::: @@ -682,17 +122,17 @@ export default App; | showSubTitle | 是否展示日期标题 | `boolean` | `true` | | scrollAnimation | 是否启动滚动动画 | `boolean` | `true` | | firstDayOfWeek | 设置周起始日 | `0-6` | `0` | -| disableDate | 设置不可选日期 | `(date: Day) => boolean` | `-` | +| disableDate | 设置不可选日期 | `(date: CalendarDay) => boolean` | `-` | | renderHeaderButtons | 自定义日历标题下部,可用以添加自定义操作 | `() => string` \| `JSX.Element` | `-` | -| renderDay | 日期信息 | `(date: Day) => string` \| `JSX.Element` | `-` | -| renderDayTop | 日期顶部信息 | `(date: Day) => string` \| `JSX.Element` | `-` | -| renderDayBottom | 日期底部信息 | `(date: Day) => string` \| `JSX.Element` | `-` | +| renderDay | 日期信息 | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | +| renderDayTop | 日期顶部信息 | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | +| renderDayBottom | 日期底部信息 | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | | onDayClick | 点击/选择后触发 | `(data: string) => {}` | `-` | | onPageChange | 年月子标题到达顶部时触发 | `(param: string) => {}` | `-` | | onConfirm | 选择之后或是点击确认按钮触发 | `(param: string) => {}` | `-` | | onClose | 关闭时触发 | `() => {}` | `-` | -### Day +### CalendarDay | 属性 | 类型 | | --- | --- | diff --git a/src/packages/calendar/doc.taro.md b/src/packages/calendar/doc.taro.md index c4548558b3..d67e113984 100644 --- a/src/packages/calendar/doc.taro.md +++ b/src/packages/calendar/doc.taro.md @@ -16,44 +16,7 @@ import { Calendar } from '@nutui/nutui-react-taro'; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react-taro'; - -const App = () => { - const [date, setDate] = useState(''); - const [isVisible, setIsVisible] = useState(false); - const [dateWeek, setDateWeek] = useState(''); - - const openSwitch = () => { - setIsVisible(true); - } - - const closeSwitch = () => { - setIsVisible(false); - } - - const setChooseValue = (param: string) => { - setDate(param[3]); - setDateWeek(param[4]); - } - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -61,44 +24,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react-taro'; - -const App = () => { - const [date1, setDate1] = useState(['2019-12-23', '2019-12-26']) - const [isVisible1, setIsVisible1] = useState(false) - - const openSwitch1 = () => { - setIsVisible1(true) - } - - const closeSwitch1 = () => { - setIsVisible1(false) - } - - const setChooseValue1 = (param: string) => { - setDate1([...[param[0][3], param[1][3]]]) - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -106,44 +32,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react-taro'; - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - setDate3(param[3]) - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -151,45 +40,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react-taro'; - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - const dateArr = [...[param[0][3], param[1][3]]] - setDate3([...dateArr]) - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -197,50 +48,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react-taro'; - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - const dateArr = [...[param[0][3], param[1][3]]] - setDate3([...dateArr]) - } - - const disableDate = (date: Day) => { - return date.day === 25 - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -248,127 +56,7 @@ export default App; :::demo -```tsx -import React, {useRef, useState } from "react"; -import { Cell, Calendar, DatePicker } from '@nutui/nutui-react-taro'; - -const App = () => { - const openSwitch42 = () => { - setIsVisible42(true) - } - const [date42, setDate42] = useState([]) - const [isVisible42, setIsVisible42] = useState(false) - const disableDate = (date: Day) => { - return date.day === 25 || date.day === 20 || date.day === 22 - } - - const [show1, setShow1] = useState(false) - const [dpAbled, setDatePickerAbled] = useState([false, false]) - const [desc1, setDesc1] = useState('10:00:00') - const [desc2, setDesc2] = useState('20:00:00') - const desc = useRef(0) - const padZero = (d: number | string) => { - return d <= 9 ? `0${d}` : d - } - const setChooseValue42 = (chooseData: any) => { - const dateArr = [...[chooseData[0][3], chooseData[1][3]]] - setDate42([...dateArr]) - } - const confirm1 = (values: (string | number)[], options: any[]) => { - if (desc.current === 1) { - setDesc1( - options.map((option) => padZero(parseInt(option.text))).join(':') - ) - } else { - setDesc2( - options.map((option) => padZero(parseInt(option.text))).join(':') - ) - } - } - const showDatePicker = (e: any, index: number) => { - if (dpAbled[index - 1]) { - e.stopPropagation() - setShow1(true) - desc.current = index - } - } - - - - return ( - <> - -
        - {date42 && date42.length - ? `${date42[0]} ${desc1}` - : '请选择起始时间'} -
        -
        -
        -
        - {date42 && date42.length - ? `${date42[1]} ${desc2}` - : '请选择截止时间'} -
        -
- } - /> - { - let d = [false, false] - if (date.length > 1) { - d = [true, true] - } else if (date.length > 0) { - d = [true, false] - } - setDatePickerAbled(d) - }} - onClose={closeSwitch42} - onConfirm={setChooseValue42} - > -
-
{ - showDatePicker(e, 1) - }} - > - 开始时间:{desc1} -
- - -
{ - showDatePicker(e, 2) - }} - > - 结束时间:{desc2} -
-
- setShow1(false)} - onConfirm={(options, values) => confirm1(values, options)} - /> -
- - ); -}; -export default App; - -``` + ::: @@ -376,45 +64,15 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react-taro'; - - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - setDate3(param[3]) - } - - return ( - <> - - - - ); -}; -export default App; + -``` +::: + +### 快捷选择-日期区间 + +:::demo + + ::: @@ -422,68 +80,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react-taro'; - -interface Day { - day: string | number; - type: string; -} - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - setDate3([...[param[0][3], param[1][3]]]) - } - - const renderDay = (date: Day) => { - return ( - { date.day <= 9 ? `0${ date.day}` : date.day } - ) - } - - const renderDayBottom = (date: Day) => { - return ( - { - date ? (date.day <= 10 ? '' : date.day <= 20 ? 'mid' : '') : '' - } - ) - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -491,143 +88,7 @@ export default App; :::demo -```tsx -import React, { useState, useRef } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react-taro'; - -const Utils = { - date2Str(date: Date, split?: string): string { - split = split || '-' - const y = date.getFullYear() - const m = this.getNumTwoBit(date.getMonth() + 1) - const d = this.getNumTwoBit(date.getDate()) - return [y, m, d].join(split) - }, - getDay(i: number): string { - i = i || 0 - let date = new Date() - const diff = i * (1000 * 60 * 60 * 24) - date = new Date(date.getTime() + diff) - return this.date2Str(date) - }, - getNumTwoBit(n: number): string { - n = Number(n) - return (n > 9 ? '' : '0') + n - }, - date2Str(date: Date, split?: string): string { - split = split || '-' - const y = date.getFullYear() - const m = this.getNumTwoBit(date.getMonth() + 1) - const d = this.getNumTwoBit(date.getDate()) - return [y, m, d].join(split) - }, - getMonthDays(year: string, month: string): number { - if (/^0/.test(month)) { - month = month.split('')[1] - } - return ( - [ - 0, - 31, - this.isLeapYear(Number(year)) ? 29 : 28, - 31, - 30, - 31, - 30, - 31, - 31, - 30, - 31, - 30, - 31, - ] as number[] - )[month as any] - }, - isLeapYear(y: number): boolean { - return (y % 4 === 0 && y % 100 !== 0) || y % 400 === 0 - }, -}; - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - const calendarRef = useRef(null); - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - setDate3([...[param[0][3], param[1][3]]]) - } - - const goDate = () => { - if (calendarRef.current) { - calendarRef.current.scrollToDate('2023-04-01'); - } - }; - - const clickBtn = () => { - const date = [Utils.date2Str(new Date()), Utils.getDay(6)]; - setDate3(date); - if (calendarRef.current) { - calendarRef.current.scrollToDate(date[0]) - } - } - - const clickBtn1 = () => { - const date = new Date(); - const year = date.getFullYear(); - let month: any = date.getMonth() + 1; - month = month < 10 ? `0${ month}` : `${month }`; - const yearMonth = `${year}-${month}`; - const currMonthDays = Utils.getMonthDays(`${year }`, `${month }`); - setDate3([`${yearMonth}-01`, `${yearMonth}-${currMonthDays}`]); - if (calendarRef.current) { - calendarRef.current.scrollToDate(`${yearMonth}-01`) - } - } - - const renderHeaderButtons = () => { - return ( -
-
- 去某个月 -
-
- 最近七天 -
-
- 当月 -
-
- ) - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -635,32 +96,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Calendar } from '@nutui/nutui-react-taro'; - -const App = () => { - const [date2, setDate2] = useState('2020-07-08') - const setChooseValue2 = (param: string) => { - setDate2(param[3]) - } - - return ( - <> -
- -
- - ); -}; -export default App; - -``` + ::: @@ -686,17 +122,17 @@ export default App; | showSubTitle | 是否展示日期标题 | `boolean` | `true` | | scrollAnimation | 是否启动滚动动画 | `boolean` | `true` | | firstDayOfWeek | 设置周起始日 | `0-6` | `0` | -| disableDate | 设置不可选日期 | `(date: Day) => boolean` | `-` | +| disableDate | 设置不可选日期 | `(date: CalendarDay) => boolean` | `-` | | renderHeaderButtons | 自定义日历标题下部,可用以添加自定义操作 | `() => string` \| `JSX.Element` | `-` | -| renderDay | 日期信息 | `(date: Day) => string` \| `JSX.Element` | `-` | -| renderDayTop | 日期顶部信息 | `(date: Day) => string` \| `JSX.Element` | `-` | -| renderDayBottom | 日期底部信息 | `(date: Day) => string` \| `JSX.Element` | `-` | +| renderDay | 日期信息 | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | +| renderDayTop | 日期顶部信息 | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | +| renderDayBottom | 日期底部信息 | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | | onDayClick | 点击/选择后触发 | `(data: string) => {}` | `-` | | onPageChange | 年月子标题到达顶部时触发 | `(param: string) => {}` | `-` | | onConfirm | 选择之后或是点击确认按钮触发 | `(param: string) => {}` | `-` | | onClose | 关闭时触发 | `() => {}` | `-` | -### Day +### CalendarDay | 属性 | 类型 | | --- | --- | diff --git a/src/packages/calendar/doc.zh-TW.md b/src/packages/calendar/doc.zh-TW.md index a411db3528..85f4bcbe5a 100644 --- a/src/packages/calendar/doc.zh-TW.md +++ b/src/packages/calendar/doc.zh-TW.md @@ -16,44 +16,7 @@ import { Calendar } from '@nutui/nutui-react'; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -const App = () => { - const [date, setDate] = useState(''); - const [isVisible, setIsVisible] = useState(false); - const [dateWeek, setDateWeek] = useState(''); - - const openSwitch = () => { - setIsVisible(true); - } - - const closeSwitch = () => { - setIsVisible(false); - } - - const setChooseValue = (param: string) => { - setDate(param[3]); - setDateWeek(param[4]); - } - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -61,44 +24,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -const App = () => { - const [date1, setDate1] = useState(['2019-12-23', '2019-12-26']) - const [isVisible1, setIsVisible1] = useState(false) - - const openSwitch1 = () => { - setIsVisible1(true) - } - - const closeSwitch1 = () => { - setIsVisible1(false) - } - - const setChooseValue1 = (param: string) => { - setDate1([...[param[0][3], param[1][3]]]) - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -106,44 +32,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - setDate3(param[3]) - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -151,45 +40,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - const dateArr = [...[param[0][3], param[1][3]]] - setDate3([...dateArr]) - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -197,175 +48,15 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - const dateArr = [...[param[0][3], param[1][3]]] - setDate3([...dateArr]) - } - - const disableDate = (date: Day) => { - return date.day === 25 - } - - return ( - <> - - - - ); -}; -export default App; + -``` ::: - ### 和Datepicker 聯動 :::demo -```tsx -import React, {useRef, useState } from "react"; -import { Cell, Calendar, DatePicker } from '@nutui/nutui-react'; - -const App = () => { - const openSwitch42 = () => { - setIsVisible42(true) - } - const [date42, setDate42] = useState([]) - const [isVisible42, setIsVisible42] = useState(false) - const disableDate = (date: Day) => { - return date.day === 25 || date.day === 20 || date.day === 22 - } - const [show1, setShow1] = useState(false) - const [dpAbled, setDatePickerAbled] = useState([false, false]) - const [desc1, setDesc1] = useState('10:00:00') - const [desc2, setDesc2] = useState('20:00:00') - const desc = useRef(0) - const padZero = (d: number | string) => { - return d <= 9 ? `0${d}` : d - } - const setChooseValue42 = (chooseData: any) => { - const dateArr = [...[chooseData[0][3], chooseData[1][3]]] - setDate42([...dateArr]) - } - const confirm1 = (values: (string | number)[], options: any[]) => { - if (desc.current === 1) { - setDesc1( - options.map((option) => padZero(parseInt(option.text))).join(':') - ) - } else { - setDesc2( - options.map((option) => padZero(parseInt(option.text))).join(':') - ) - } - } - const showDatePicker = (e: any, index: number) => { - if (dpAbled[index - 1]) { - e.stopPropagation() - setShow1(true) - desc.current = index - } - } - - return ( - <> - -
- {date42 && date42.length - ? `${date42[0]} ${desc1}` - : '請選擇起始時間'} -
-
-
-
- {date42 && date42.length - ? `${date42[1]} ${desc2}` - : '請選擇截止時間'} -
- - } - /> - { - let d = [false, false] - if (date.length > 1) { - d = [true, true] - } else if (date.length > 0) { - d = [true, false] - } - setDatePickerAbled(d) - }} - onClose={closeSwitch42} - onConfirm={setChooseValue42} - > -
-
{ - showDatePicker(e, 1) - }} - > - 開始時間:{desc1} -
- - -
{ - showDatePicker(e, 2) - }} - > - 結束時間:{desc2} -
-
- setShow1(false)} - onConfirm={(options, values) => confirm1(values, options)} - /> -
- - ); -}; -export default App; - -``` + ::: @@ -373,44 +64,15 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - setDate3(param[3]) - } - - return ( - <> - - - - ); -}; -export default App; + -``` +::: + +### 快捷選擇-日期區間 + +:::demo + + ::: @@ -418,68 +80,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -interface Day { - day: string | number; - type: string; -} - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - setDate3([...[param[0][3], param[1][3]]]) - } - - const renderDay = (date: Day) => { - return ( - { date.day <= 9 ? `0${ date.day}` : date.day } - ) - } - - const renderDayBottom = (date: Day) => { - return ( - { - date ? (date.day <= 10 ? '' : date.day <= 20 ? 'mid' : '') : '' - } - ) - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -487,143 +88,7 @@ export default App; :::demo -```tsx -import React, { useState, useRef } from "react"; -import { Cell, Calendar } from '@nutui/nutui-react'; - -const Utils = { - date2Str(date: Date, split?: string): string { - split = split || '-' - const y = date.getFullYear() - const m = this.getNumTwoBit(date.getMonth() + 1) - const d = this.getNumTwoBit(date.getDate()) - return [y, m, d].join(split) - }, - getDay(i: number): string { - i = i || 0 - let date = new Date() - const diff = i * (1000 * 60 * 60 * 24) - date = new Date(date.getTime() + diff) - return this.date2Str(date) - }, - getNumTwoBit(n: number): string { - n = Number(n) - return (n > 9 ? '' : '0') + n - }, - date2Str(date: Date, split?: string): string { - split = split || '-' - const y = date.getFullYear() - const m = this.getNumTwoBit(date.getMonth() + 1) - const d = this.getNumTwoBit(date.getDate()) - return [y, m, d].join(split) - }, - getMonthDays(year: string, month: string): number { - if (/^0/.test(month)) { - month = month.split('')[1] - } - return ( - [ - 0, - 31, - this.isLeapYear(Number(year)) ? 29 : 28, - 31, - 30, - 31, - 30, - 31, - 31, - 30, - 31, - 30, - 31, - ] as number[] - )[month as any] - }, - isLeapYear(y: number): boolean { - return (y % 4 === 0 && y % 100 !== 0) || y % 400 === 0 - }, -}; - -const App = () => { - const [date3, setDate3] = useState('') - const [isVisible3, setIsVisible3] = useState(false) - const calendarRef = useRef(null); - - const openSwitch3 = () => { - setIsVisible3(true) - } - - const closeSwitch3 = () => { - setIsVisible3(false) - } - - const setChooseValue3 = (param: string) => { - setDate3([...[param[0][3], param[1][3]]]) - } - - const goDate = () => { - if (calendarRef.current) { - calendarRef.current.scrollToDate('2023-04-01'); - } - }; - - const clickBtn = () => { - const date = [Utils.date2Str(new Date()), Utils.getDay(6)]; - setDate3(date); - if (calendarRef.current) { - calendarRef.current.scrollToDate(date[0]) - } - } - - const clickBtn1 = () => { - const date = new Date(); - const year = date.getFullYear(); - let month: any = date.getMonth() + 1; - month = month < 10 ? `0${ month}` : `${month }`; - const yearMonth = `${year}-${month}`; - const currMonthDays = Utils.getMonthDays(`${year }`, `${month }`); - setDate3([`${yearMonth}-01`, `${yearMonth}-${currMonthDays}`]); - if (calendarRef.current) { - calendarRef.current.scrollToDate(`${yearMonth}-01`) - } - } - - const renderHeaderButtons = () => { - return ( -
-
- 去某個月 -
-
- 最近七天 -
-
- 當月 -
-
- ) - } - - return ( - <> - - - - ); -}; -export default App; - -``` + ::: @@ -631,32 +96,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Calendar } from '@nutui/nutui-react'; - -const App = () => { - const [date2, setDate2] = useState('2020-07-08') - const setChooseValue2 = (param: string) => { - setDate2(param[3]) - } - - return ( - <> -
- -
- - ); -}; -export default App; - -``` + ::: @@ -682,17 +122,17 @@ export default App; | showSubTitle | 是否展示日期標題 | `boolean` | `true` | | scrollAnimation | 是否啟動滾動動畫 | `boolean` | `true` | | firstDayOfWeek | 設置周起始日 | `0-6` | `0` | -| disableDate | 設置不可選日期 | `(date: Day) => boolean` | `-` | +| disableDate | 設置不可選日期 | `(date: CalendarDay) => boolean` | `-` | | renderHeaderButtons | 自定義日歴標題下部,可用以添加自定義操作 | `() => string` \| `JSX.Element` | `-` | -| renderDay | 日期信息 | `(date: Day) => string` \| `JSX.Element` | `-` | -| renderDayTop | 日期頂部信息 | `(date: Day) => string` \| `JSX.Element` | `-` | -| renderDayBottom | 日期底部信息 | `(date: Day) => string` \| `JSX.Element` | `-` | +| renderDay | 日期信息 | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | +| renderDayTop | 日期頂部信息 | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | +| renderDayBottom | 日期底部信息 | `(date: CalendarDay) => string` \| `JSX.Element` | `-` | | onDayClick | 點擊/選擇後觸發 | `(data: string) => {}` | `-` | | onPageChange | 年月子標題到達頂部時觸發 | `(param: string) => {}` | `-` | | onConfirm | 選擇之後或是點擊確認按鈕觸發 | `(param: string) => {}` | `-` | | onClose | 關閉時觸發 | `() => {}` | `-` | -### Day +### CalendarDay | 屬性 | 類型 | | --- | --- | diff --git a/src/packages/calendar/index.taro.ts b/src/packages/calendar/index.taro.ts index 7260155838..27162ba7d5 100644 --- a/src/packages/calendar/index.taro.ts +++ b/src/packages/calendar/index.taro.ts @@ -1,3 +1,5 @@ import { Calendar } from './calendar.taro' +export type { CalendarDay, CalendarMonthInfo, CalendarType } from './types' +export type { CalendarProps } from './calendar.taro' export default Calendar diff --git a/src/packages/calendar/index.ts b/src/packages/calendar/index.ts index a2e53532d9..9d47f5be1b 100644 --- a/src/packages/calendar/index.ts +++ b/src/packages/calendar/index.ts @@ -1,3 +1,5 @@ import { Calendar } from './calendar' +export type { CalendarDay, CalendarMonthInfo, CalendarType } from './types' +export type { CalendarProps } from './calendar' export default Calendar diff --git a/src/packages/calendar/types.ts b/src/packages/calendar/types.ts index cef15eac30..27d3a485c2 100644 --- a/src/packages/calendar/types.ts +++ b/src/packages/calendar/types.ts @@ -1,16 +1,20 @@ -export interface Day { +export interface CalendarDay { day: string | number type: string } -export interface MonthInfo { +export interface CalendarMonthInfo { curData: string[] | string title: string - monthData: Day[] + monthData: CalendarDay[] cssHeight?: number scrollTop?: number } -export type InputDate = string | string[] +export type CalendarValue = string | string[] -export type SelectedType = 'single' | 'range' | 'multiple' | 'week' +export type CalendarType = 'single' | 'range' | 'multiple' | 'week' + +export type CalendarRef = { + scrollToDate: (date: string) => void +} diff --git a/src/packages/calendar/utils.tsx b/src/packages/calendar/utils.tsx index a53b0f5077..cf568ff8b8 100644 --- a/src/packages/calendar/utils.tsx +++ b/src/packages/calendar/utils.tsx @@ -1,5 +1,5 @@ import { Utils } from '@/utils/date' -import { Day, MonthInfo } from './types' +import { CalendarDay, CalendarMonthInfo } from './types' export const splitDate = (date: string) => { const split = date.indexOf('-') !== -1 ? '-' : '/' @@ -15,12 +15,12 @@ export const isMultiple = (day: string, days: string[]) => { return false } -export const isCurrDay = (month: MonthInfo, day: string | number) => { +export const isCurrDay = (month: CalendarMonthInfo, day: string | number) => { const date = `${month.curData[0]}/${month.curData[1]}/${day}` return Utils.isEqual(date, Utils.date2Str(new Date(), '/')) } -export const getCurrDate = (day: Day, month: MonthInfo) => { +export const getCurrDate = (day: CalendarDay, month: CalendarMonthInfo) => { return `${month.curData[0]}/${month.curData[1]}/${Utils.getNumTwoBit( +day.day )}` diff --git a/src/packages/calendarcard/__tests__/calendarcard.spec.tsx b/src/packages/calendarcard/__tests__/calendarcard.spec.tsx index 48cc4fccb9..4009abf86a 100644 --- a/src/packages/calendarcard/__tests__/calendarcard.spec.tsx +++ b/src/packages/calendarcard/__tests__/calendarcard.spec.tsx @@ -31,9 +31,9 @@ test('test defaultValue render', async () => { }) test('test onChange & onDayClick & onPageChange', async () => { - const onChange = jest.fn() - const onDayClick = jest.fn() - const onPageChange = jest.fn() + const onChange = vi.fn() + const onDayClick = vi.fn() + const onPageChange = vi.fn() const { container } = render( { const nextDays = container.querySelectorAll('.nut-calendarcard-day.next') fireEvent.click(nextDays[0]) - expect(onDayClick).toHaveBeenCalledTimes(3) + expect(onDayClick).toHaveBeenCalledTimes(4) expect(onPageChange).toHaveBeenCalledTimes(1) }) @@ -91,7 +91,12 @@ test('test type range', async () => { const currentDays = container.querySelectorAll( '.nut-calendarcard-day.current' ) - fireEvent.click(currentDays[1]) // 0102 + fireEvent.click(currentDays[24]) // 0125 + const startAndEnd = container.querySelectorAll( + '.nut-calendarcard-day.start.end' + ) + expect(startAndEnd.length).toBe(1) + fireEvent.click(currentDays[3]) // 0104 fireEvent.click(currentDays[8]) // 0109 const start = container.querySelector( @@ -132,7 +137,7 @@ test('test type week', async () => { }) test('test disableDay', async () => { - const onDayClick = jest.fn() + const onDayClick = vi.fn() const { container } = render( { '.nut-calendarcard-day.current' ) fireEvent.click(currentDays[22]) // 0123 disabled - expect(onDayClick).toHaveBeenCalledTimes(0) - fireEvent.click(currentDays[25]) // 0126 expect(onDayClick).toHaveBeenCalledTimes(1) + fireEvent.click(currentDays[25]) // 0126 + expect(onDayClick).toHaveBeenCalledTimes(2) }) test('test ref methods', async () => { - const onPageChange = jest.fn() + const onPageChange = vi.fn() const App = () => { const CalendarRef = React.useRef() const click1 = () => { diff --git a/src/packages/calendarcard/calendarcard.scss b/src/packages/calendarcard/calendarcard.scss index 4cb75ac76d..a6760f5177 100644 --- a/src/packages/calendarcard/calendarcard.scss +++ b/src/packages/calendarcard/calendarcard.scss @@ -23,6 +23,7 @@ .left { margin-left: 8px; } + .right { margin-right: 8px; } @@ -60,22 +61,28 @@ line-height: 12px; } - &.active, + &.weekend { + color: $calendar-choose-color; + } + + &.active { + background-color: $calendar-active-background-color; + color: $color-primary-text; + border-radius: $calendar-day-active-border-radius; + } + &.start, &.end { background-color: $calendar-active-background-color; - color: $color-primary-text !important; - border-radius: $calendar-day-active-border-radius; + color: $color-primary-text; } &.start { - border-radius: 0px; border-top-left-radius: $calendar-day-active-border-radius; border-bottom-left-radius: $calendar-day-active-border-radius; } &.end { - border-radius: 0px; border-top-right-radius: $calendar-day-active-border-radius; border-bottom-right-radius: $calendar-day-active-border-radius; } @@ -85,10 +92,6 @@ color: $calendar-choose-color; } - &.weekend { - color: $calendar-choose-color; - } - .nut-calendar-day-info { color: $color-primary-text; } @@ -102,3 +105,42 @@ } } } + +[dir='rtl'] .nut-calendarcard, +.nut-rtl .nut-calendarcard { + &-header { + &-left, + &-right { + .left { + margin-left: 0; + margin-right: 8px; + } + + .right { + margin-right: 0; + margin-left: 8px; + } + + .nut-icon-ArrowLeft, + .nut-icon-ArrowRight, + svg { + transform: rotate(180deg); + } + } + } + &-day { + &.start, + &.end { + border-radius: 0; + } + &.start { + border-top-right-radius: $calendar-day-active-border-radius; + border-bottom-right-radius: $calendar-day-active-border-radius; + } + + &.end { + border-top-left-radius: $calendar-day-active-border-radius; + border-bottom-left-radius: $calendar-day-active-border-radius; + } + } +} diff --git a/src/packages/calendarcard/calendarcard.taro.tsx b/src/packages/calendarcard/calendarcard.taro.tsx index e9c03eefc3..e5a3bc6aee 100644 --- a/src/packages/calendarcard/calendarcard.taro.tsx +++ b/src/packages/calendarcard/calendarcard.taro.tsx @@ -10,7 +10,13 @@ import { getPrevMonthDays, } from './utils' import { useConfig } from '@/packages/configprovider/configprovider.taro' -import { CalendarCardDay, CalendarCardMonth, CalendarCardValue } from './types' +import type { + CalendarCardDay, + CalendarCardMonth, + CalendarCardRef, + CalendarCardValue, +} from './types' +import { usePropsValue } from '@/utils/use-props-value' export interface CalendarCardProps extends BasicComponent { // 日视图-选择一个日期 | 日视图-选择多个日期 | 日视图-选择范围 | 周视图-选择某一周 @@ -34,11 +40,6 @@ const defaultProps = { firstDayOfWeek: 0, } -type CalendarCardRef = { - jump: (step: number) => void - jumpTo: (year: number, month: number) => void -} - const prefixCls = 'nut-calendarcard' export const CalendarCard = React.forwardRef< @@ -102,20 +103,14 @@ export const CalendarCard = React.forwardRef< return range ? [convertDayToDate(range)] : [] } - const [innerValue, setInnerValue] = useState(() => { - const val = ( - value || defaultValue ? valueToRange(value || defaultValue) : [] - ) as CalendarCardDay[] - return val + const [innerValue, setInnerValue] = usePropsValue({ + value: value ? (valueToRange(value) as CalendarCardDay[]) : undefined, + defaultValue: defaultValue + ? (valueToRange(defaultValue) as CalendarCardDay[]) + : undefined, + finalValue: [], }) - useEffect(() => { - const val = ( - value || defaultValue ? valueToRange(value || defaultValue) : [] - ) as CalendarCardDay[] - setInnerValue(val) - }, [value]) - const change = (v: CalendarCardDay[]) => { setInnerValue(v) if (type === 'single') { @@ -197,8 +192,8 @@ export const CalendarCard = React.forwardRef< const isActive = (day: CalendarCardDay) => { if (type === 'single' || type === 'multiple') { - for (const val of innerValue) { - if (isSameDay(day, val)) { + for (const val in innerValue) { + if (isSameDay(day, innerValue[val])) { return true } } @@ -325,10 +320,10 @@ export const CalendarCard = React.forwardRef< }) const handleDayClick = (day: CalendarCardDay) => { + onDayClick?.(day) if (day.type === 'prev' || day.type === 'next' || isDisable(day)) { return } - onDayClick?.(day) switch (type) { case 'single': { if (innerValue[0] && isSameDay(innerValue[0], day)) { @@ -353,7 +348,7 @@ export const CalendarCard = React.forwardRef< change([day]) } else if (len === 1) { const t = compareDay(innerValue[0], day) - if (t === 0 || t === null || t === undefined) { + if (t === null || t === undefined) { change([]) } else if (t < 0) { change([innerValue[0], day]) diff --git a/src/packages/calendarcard/calendarcard.tsx b/src/packages/calendarcard/calendarcard.tsx index 456f244365..c8d78ea0e6 100644 --- a/src/packages/calendarcard/calendarcard.tsx +++ b/src/packages/calendarcard/calendarcard.tsx @@ -10,7 +10,13 @@ import { getPrevMonthDays, } from './utils' import { useConfig } from '@/packages/configprovider/configprovider' -import { CalendarCardDay, CalendarCardMonth, CalendarCardValue } from './types' +import type { + CalendarCardDay, + CalendarCardMonth, + CalendarCardRef, + CalendarCardValue, +} from './types' +import { usePropsValue } from '@/utils/use-props-value' export interface CalendarCardProps extends BasicComponent { // 日视图-选择一个日期 | 日视图-选择多个日期 | 日视图-选择范围 | 周视图-选择某一周 @@ -34,11 +40,6 @@ const defaultProps = { firstDayOfWeek: 0, } -type CalendarCardRef = { - jump: (step: number) => void - jumpTo: (year: number, month: number) => void -} - const prefixCls = 'nut-calendarcard' export const CalendarCard = React.forwardRef< @@ -102,20 +103,14 @@ export const CalendarCard = React.forwardRef< return range ? [convertDayToDate(range)] : [] } - const [innerValue, setInnerValue] = useState(() => { - const val = ( - value || defaultValue ? valueToRange(value || defaultValue) : [] - ) as CalendarCardDay[] - return val + const [innerValue, setInnerValue] = usePropsValue({ + value: value ? (valueToRange(value) as CalendarCardDay[]) : undefined, + defaultValue: defaultValue + ? (valueToRange(defaultValue) as CalendarCardDay[]) + : undefined, + finalValue: [], }) - useEffect(() => { - const val = ( - value || defaultValue ? valueToRange(value || defaultValue) : [] - ) as CalendarCardDay[] - setInnerValue(val) - }, [value]) - const change = (v: CalendarCardDay[]) => { setInnerValue(v) if (type === 'single') { @@ -325,10 +320,10 @@ export const CalendarCard = React.forwardRef< }) const handleDayClick = (day: CalendarCardDay) => { + onDayClick?.(day) if (day.type === 'prev' || day.type === 'next' || isDisable(day)) { return } - onDayClick?.(day) switch (type) { case 'single': { if (innerValue[0] && isSameDay(innerValue[0], day)) { @@ -353,7 +348,7 @@ export const CalendarCard = React.forwardRef< change([day]) } else if (len === 1) { const t = compareDay(innerValue[0], day) - if (t === 0 || t === null || t === undefined) { + if (t === null || t === undefined) { change([]) } else if (t < 0) { change([innerValue[0], day]) diff --git a/src/packages/calendarcard/demo.taro.tsx b/src/packages/calendarcard/demo.taro.tsx index 788f23c8a5..ce18e0fed9 100644 --- a/src/packages/calendarcard/demo.taro.tsx +++ b/src/packages/calendarcard/demo.taro.tsx @@ -1,36 +1,23 @@ -import React, { useRef, useState } from 'react' +import React from 'react' import Taro from '@tarojs/taro' import { CustomWrapper } from '@tarojs/components' import { useTranslate } from '@/sites/assets/locale/taro' -import { - CalendarCard, - Cell, - Popup, - Button, - Space, - Tag, -} from '@/packages/nutui.react.taro' import Header from '@/sites/components/header' -import { CalendarCardDay, CalendarCardValue } from './types' -interface T { - single: string - multiple: string - range: string - week: string - control: string - renderDay: string - firstDay: string - customRange: string - disable: string - popup: string - select: string - confirm: string - ref: string -} +import Demo1 from './demos/taro/demo1' +import Demo2 from './demos/taro/demo2' +import Demo3 from './demos/taro/demo3' +import Demo4 from './demos/taro/demo4' +import Demo5 from './demos/taro/demo5' +import Demo6 from './demos/taro/demo6' +import Demo7 from './demos/taro/demo7' +import Demo8 from './demos/taro/demo8' +import Demo9 from './demos/taro/demo9' +import Demo10 from './demos/taro/demo10' +import Demo11 from './demos/taro/demo11' const CalendarDemo = () => { - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { single: '选择单个日期', multiple: '选择多个日期', @@ -77,160 +64,64 @@ const CalendarDemo = () => { ref: 'Use ref', }, }) - const change = (d: CalendarCardValue) => { - console.log(d) - } - const [val1, setVal1] = useState(() => { - return null - }) - const [val2, setVal2] = useState(() => { - return [new Date('2023-01-01'), new Date('2023-01-03')] - }) - const change1 = (v: any) => { - console.log(v) - setVal1(v) - } - const [visible, setVisible] = useState(false) - const [date, setDate] = useState(null) - - const CalendarCardRef = useRef(null) - - const renderDayTop = (day: CalendarCardDay) => { - return day.date === 8 ? '☺' : '' - } - - const renderDay = (day: CalendarCardDay) => { - return day.date <= 9 ? `0${day.date}` : day.date - } - const renderDayBottom = (day: CalendarCardDay) => { - return day.date === 8 ? '节日' : '' - } return ( <>

{translated.single}

- +

{translated.multiple}

- - {val2.map((d) => { - return ( - - {`${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}`} - - ) - })} - - setVal2(v)} - /> +

{translated.range}

- +

{translated.week}

- +

{translated.control}

- +

{translated.renderDay}

- +

{translated.firstDay}

- +

{translated.customRange}

- +

{translated.disable}

- { - const d = new Date( - `${day.year}-${day.month}-${day.date}` - ).getDay() - return d === 1 || d === 3 - }} - onChange={change} - /> +

{translated.popup}

- setVisible(true)} - /> - setVisible(false)} - > - setDate(d)} /> -
- -
-
+

{translated.ref}

- - - - - - - +
diff --git a/src/packages/calendarcard/demo.tsx b/src/packages/calendarcard/demo.tsx index 33682e89c0..393a108c45 100644 --- a/src/packages/calendarcard/demo.tsx +++ b/src/packages/calendarcard/demo.tsx @@ -1,31 +1,19 @@ -import React, { useRef, useState } from 'react' -import CalendarCard from '../calendarcard' +import React from 'react' import { useTranslate } from '../../sites/assets/locale' -import Cell from '@/packages/cell' -import Popup from '@/packages/popup' -import Button from '@/packages/button' -import Space from '@/packages/space' -import Tag from '@/packages/tag' -import { CalendarCardDay, CalendarCardValue } from './types' - -interface T { - single: string - multiple: string - range: string - week: string - control: string - renderDay: string - firstDay: string - customRange: string - disable: string - popup: string - select: string - confirm: string - ref: string -} +import Demo1 from './demos/h5/demo1' +import Demo2 from './demos/h5/demo2' +import Demo3 from './demos/h5/demo3' +import Demo4 from './demos/h5/demo4' +import Demo5 from './demos/h5/demo5' +import Demo6 from './demos/h5/demo6' +import Demo7 from './demos/h5/demo7' +import Demo8 from './demos/h5/demo8' +import Demo9 from './demos/h5/demo9' +import Demo10 from './demos/h5/demo10' +import Demo11 from './demos/h5/demo11' const CalendarDemo = () => { - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { single: '选择单个日期', multiple: '选择多个日期', @@ -72,131 +60,42 @@ const CalendarDemo = () => { ref: 'Use ref', }, }) - const change = (d: CalendarCardValue) => { - console.log(d) - } - const [val1, setVal1] = useState(() => { - return null - }) - const [val2, setVal2] = useState(() => { - return [new Date('2023-01-01'), new Date('2023-01-03')] - }) - const change1 = (v: any) => { - console.log(v) - setVal1(v) - } - const [visible, setVisible] = useState(false) - const [date, setDate] = useState(null) - - const CalendarCardRef = useRef(null) - - const renderDayTop = (day: CalendarCardDay) => { - return day.date === 8 ? '☺' : '' - } - - const renderDay = (day: CalendarCardDay) => { - return day.date <= 9 ? `0${day.date}` : day.date - } - const renderDayBottom = (day: CalendarCardDay) => { - return day.date === 8 ? '节日' : '' - } return ( <>

{translated.single}

- +

{translated.multiple}

- - {val2.map((d) => { - return ( - - {`${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}`} - - ) - })} - - setVal2(v)} - /> +

{translated.range}

- +

{translated.week}

- +

{translated.control}

- +

{translated.renderDay}

- +

{translated.firstDay}

- +

{translated.customRange}

- +

{translated.disable}

- { - const d = new Date(`${day.year}-${day.month}-${day.date}`).getDay() - return d === 1 || d === 3 - }} - onChange={change} - /> +

{translated.popup}

- setVisible(true)} - /> - setVisible(false)} - > - setDate(d)} /> -
- -
-
+

{translated.ref}

- - - - - - - +
) diff --git a/src/packages/calendarcard/demos/h5/demo1.tsx b/src/packages/calendarcard/demos/h5/demo1.tsx new file mode 100644 index 0000000000..bdbee9db41 --- /dev/null +++ b/src/packages/calendarcard/demos/h5/demo1.tsx @@ -0,0 +1,13 @@ +import React from 'react' +import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react' + +// const date = null; +const date = new Date('2023-01-01') + +const Demo1 = () => { + const onChange = (val: CalendarCardValue) => { + console.log(val) + } + return +} +export default Demo1 diff --git a/src/packages/calendarcard/demos/h5/demo10.tsx b/src/packages/calendarcard/demos/h5/demo10.tsx new file mode 100644 index 0000000000..bd98dbbaa8 --- /dev/null +++ b/src/packages/calendarcard/demos/h5/demo10.tsx @@ -0,0 +1,40 @@ +import React, { useState } from 'react' +import { + Cell, + Popup, + Button, + CalendarCard, + type CalendarCardValue, +} from '@nutui/nutui-react' + +const Demo10 = () => { + const [visible, setVisible] = useState(false) + const [date, setDate] = useState(null) + return ( + <> + setVisible(true)} + /> + setVisible(false)} + > + setDate(d as Date)} + /> +
+ +
+
+ + ) +} +export default Demo10 diff --git a/src/packages/calendarcard/demos/h5/demo11.tsx b/src/packages/calendarcard/demos/h5/demo11.tsx new file mode 100644 index 0000000000..fc97eb01f6 --- /dev/null +++ b/src/packages/calendarcard/demos/h5/demo11.tsx @@ -0,0 +1,25 @@ +import React, { useRef } from 'react' +import { + Space, + Button, + CalendarCard, + type CalendarCardRef, +} from '@nutui/nutui-react' + +const Demo11 = () => { + const CalendarCardRef = useRef(null) + return ( + <> + + + + + + + + + ) +} +export default Demo11 diff --git a/src/packages/calendarcard/demos/h5/demo2.tsx b/src/packages/calendarcard/demos/h5/demo2.tsx new file mode 100644 index 0000000000..fbde3d7e52 --- /dev/null +++ b/src/packages/calendarcard/demos/h5/demo2.tsx @@ -0,0 +1,33 @@ +import React, { useState } from 'react' +import { + Space, + Tag, + CalendarCard, + type CalendarCardValue, +} from '@nutui/nutui-react' + +const Demo2 = () => { + const [val, setVal] = useState(() => { + // return []; + return [new Date('2023-01-01'), new Date('2023-01-03')] + }) + const onChange = (val: CalendarCardValue) => { + setVal(val as Date[]) + console.log(val) + } + return ( + <> + + {val.map((d) => { + return ( + + {`${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}`} + + ) + })} + + + + ) +} +export default Demo2 diff --git a/src/packages/calendarcard/demos/h5/demo3.tsx b/src/packages/calendarcard/demos/h5/demo3.tsx new file mode 100644 index 0000000000..4d1c429434 --- /dev/null +++ b/src/packages/calendarcard/demos/h5/demo3.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react' + +const Demo3 = () => { + const onChange = (val: CalendarCardValue) => { + console.log(val) + } + return +} +export default Demo3 diff --git a/src/packages/calendarcard/demos/h5/demo4.tsx b/src/packages/calendarcard/demos/h5/demo4.tsx new file mode 100644 index 0000000000..44c3785e99 --- /dev/null +++ b/src/packages/calendarcard/demos/h5/demo4.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react' + +const Demo4 = () => { + const onChange = (val: CalendarCardValue) => { + console.log(val) + } + return +} +export default Demo4 diff --git a/src/packages/calendarcard/demos/h5/demo5.tsx b/src/packages/calendarcard/demos/h5/demo5.tsx new file mode 100644 index 0000000000..fdf77ed3be --- /dev/null +++ b/src/packages/calendarcard/demos/h5/demo5.tsx @@ -0,0 +1,12 @@ +import React, { useState } from 'react' +import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react' + +const Demo5 = () => { + const [date, setDate] = useState(() => new Date('2023-01-01')) + const onChange = (val: CalendarCardValue) => { + console.log(val) + setDate(val as Date) + } + return +} +export default Demo5 diff --git a/src/packages/calendarcard/demos/h5/demo6.tsx b/src/packages/calendarcard/demos/h5/demo6.tsx new file mode 100644 index 0000000000..3050f512b6 --- /dev/null +++ b/src/packages/calendarcard/demos/h5/demo6.tsx @@ -0,0 +1,22 @@ +import React from 'react' +import { CalendarCard, type CalendarCardDay } from '@nutui/nutui-react' + +const Demo6 = () => { + const renderDayTop = (day: CalendarCardDay) => { + return day.date === 8 ? '☺' : '' + } + const renderDay = (day: CalendarCardDay) => { + return day.date <= 9 ? `0${day.date}` : day.date + } + const renderDayBottom = (day: CalendarCardDay) => { + return day.date === 8 ? '节日' : '' + } + return ( + + ) +} +export default Demo6 diff --git a/src/packages/calendarcard/demos/h5/demo7.tsx b/src/packages/calendarcard/demos/h5/demo7.tsx new file mode 100644 index 0000000000..38422609b5 --- /dev/null +++ b/src/packages/calendarcard/demos/h5/demo7.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react' + +const Demo7 = () => { + const onChange = (val: CalendarCardValue) => { + console.log(val) + } + return +} +export default Demo7 diff --git a/src/packages/calendarcard/demos/h5/demo8.tsx b/src/packages/calendarcard/demos/h5/demo8.tsx new file mode 100644 index 0000000000..e8ab760cb9 --- /dev/null +++ b/src/packages/calendarcard/demos/h5/demo8.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react' + +const Demo8 = () => { + const onChange = (val: CalendarCardValue) => { + console.log(val) + } + return ( + + ) +} +export default Demo8 diff --git a/src/packages/calendarcard/demos/h5/demo9.tsx b/src/packages/calendarcard/demos/h5/demo9.tsx new file mode 100644 index 0000000000..0e6d58d2f2 --- /dev/null +++ b/src/packages/calendarcard/demos/h5/demo9.tsx @@ -0,0 +1,18 @@ +import React from 'react' +import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react' + +const Demo9 = () => { + const onChange = (val: CalendarCardValue) => { + console.log(val) + } + return ( + { + const d = new Date(`${day.year}-${day.month}-${day.date}`).getDay() + return d === 1 || d === 3 + }} + onChange={onChange} + /> + ) +} +export default Demo9 diff --git a/src/packages/calendarcard/demos/taro/demo1.tsx b/src/packages/calendarcard/demos/taro/demo1.tsx new file mode 100644 index 0000000000..5e6a144340 --- /dev/null +++ b/src/packages/calendarcard/demos/taro/demo1.tsx @@ -0,0 +1,13 @@ +import React from 'react' +import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react-taro' + +// const date = null; +const date = new Date('2023-01-01') + +const Demo1 = () => { + const onChange = (val: CalendarCardValue) => { + console.log(val) + } + return +} +export default Demo1 diff --git a/src/packages/calendarcard/demos/taro/demo10.tsx b/src/packages/calendarcard/demos/taro/demo10.tsx new file mode 100644 index 0000000000..0bca818cdd --- /dev/null +++ b/src/packages/calendarcard/demos/taro/demo10.tsx @@ -0,0 +1,40 @@ +import React, { useState } from 'react' +import { + Cell, + Popup, + Button, + CalendarCard, + CalendarCardValue, +} from '@nutui/nutui-react-taro' + +const Demo10 = () => { + const [visible, setVisible] = useState(false) + const [date, setDate] = useState(null) + return ( + <> + setVisible(true)} + /> + setVisible(false)} + > + setDate(d as Date)} + /> +
+ +
+
+ + ) +} +export default Demo10 diff --git a/src/packages/calendarcard/demos/taro/demo11.tsx b/src/packages/calendarcard/demos/taro/demo11.tsx new file mode 100644 index 0000000000..bf33f863a4 --- /dev/null +++ b/src/packages/calendarcard/demos/taro/demo11.tsx @@ -0,0 +1,25 @@ +import React, { useRef } from 'react' +import { + Space, + Button, + CalendarCard, + type CalendarCardRef, +} from '@nutui/nutui-react-taro' + +const Demo11 = () => { + const CalendarCardRef = useRef(null) + return ( + <> + + + + + + + + + ) +} +export default Demo11 diff --git a/src/packages/calendarcard/demos/taro/demo2.tsx b/src/packages/calendarcard/demos/taro/demo2.tsx new file mode 100644 index 0000000000..e82e4b3e42 --- /dev/null +++ b/src/packages/calendarcard/demos/taro/demo2.tsx @@ -0,0 +1,33 @@ +import React, { useState } from 'react' +import { + Space, + Tag, + CalendarCard, + type CalendarCardValue, +} from '@nutui/nutui-react-taro' + +const Demo2 = () => { + const [val, setVal] = useState(() => { + // return []; + return [new Date('2023-01-01'), new Date('2023-01-03')] + }) + const onChange = (val: CalendarCardValue) => { + setVal(val as Date[]) + console.log(val) + } + return ( + <> + + {val.map((d) => { + return ( + + {`${d.getFullYear()}-${d.getMonth() + 1}-${d.getDate()}`} + + ) + })} + + + + ) +} +export default Demo2 diff --git a/src/packages/calendarcard/demos/taro/demo3.tsx b/src/packages/calendarcard/demos/taro/demo3.tsx new file mode 100644 index 0000000000..d5d8ae294d --- /dev/null +++ b/src/packages/calendarcard/demos/taro/demo3.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react-taro' + +const Demo3 = () => { + const onChange = (val: CalendarCardValue) => { + console.log(val) + } + return +} +export default Demo3 diff --git a/src/packages/calendarcard/demos/taro/demo4.tsx b/src/packages/calendarcard/demos/taro/demo4.tsx new file mode 100644 index 0000000000..3e304b98d7 --- /dev/null +++ b/src/packages/calendarcard/demos/taro/demo4.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react-taro' + +const Demo4 = () => { + const onChange = (val: CalendarCardValue) => { + console.log(val) + } + return +} +export default Demo4 diff --git a/src/packages/calendarcard/demos/taro/demo5.tsx b/src/packages/calendarcard/demos/taro/demo5.tsx new file mode 100644 index 0000000000..6a9ceba936 --- /dev/null +++ b/src/packages/calendarcard/demos/taro/demo5.tsx @@ -0,0 +1,12 @@ +import React, { useState } from 'react' +import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react-taro' + +const Demo5 = () => { + const [date, setDate] = useState(() => new Date('2023-01-01')) + const onChange = (val: CalendarCardValue) => { + console.log(val) + setDate(val as Date) + } + return +} +export default Demo5 diff --git a/src/packages/calendarcard/demos/taro/demo6.tsx b/src/packages/calendarcard/demos/taro/demo6.tsx new file mode 100644 index 0000000000..5f17341d6e --- /dev/null +++ b/src/packages/calendarcard/demos/taro/demo6.tsx @@ -0,0 +1,22 @@ +import React from 'react' +import { CalendarCard, type CalendarCardDay } from '@nutui/nutui-react-taro' + +const Demo6 = () => { + const renderDayTop = (day: CalendarCardDay) => { + return day.date === 8 ? '☺' : '' + } + const renderDay = (day: CalendarCardDay) => { + return day.date <= 9 ? `0${day.date}` : day.date + } + const renderDayBottom = (day: CalendarCardDay) => { + return day.date === 8 ? '节日' : '' + } + return ( + + ) +} +export default Demo6 diff --git a/src/packages/calendarcard/demos/taro/demo7.tsx b/src/packages/calendarcard/demos/taro/demo7.tsx new file mode 100644 index 0000000000..0d8e0df280 --- /dev/null +++ b/src/packages/calendarcard/demos/taro/demo7.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react-taro' + +const Demo7 = () => { + const onChange = (val: CalendarCardValue) => { + console.log(val) + } + return +} +export default Demo7 diff --git a/src/packages/calendarcard/demos/taro/demo8.tsx b/src/packages/calendarcard/demos/taro/demo8.tsx new file mode 100644 index 0000000000..8c7ecdf5c8 --- /dev/null +++ b/src/packages/calendarcard/demos/taro/demo8.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react-taro' + +const Demo8 = () => { + const onChange = (val: CalendarCardValue) => { + console.log(val) + } + return ( + + ) +} +export default Demo8 diff --git a/src/packages/calendarcard/demos/taro/demo9.tsx b/src/packages/calendarcard/demos/taro/demo9.tsx new file mode 100644 index 0000000000..90d1820f62 --- /dev/null +++ b/src/packages/calendarcard/demos/taro/demo9.tsx @@ -0,0 +1,18 @@ +import React from 'react' +import { CalendarCard, type CalendarCardValue } from '@nutui/nutui-react-taro' + +const Demo9 = () => { + const onChange = (val: CalendarCardValue) => { + console.log(val) + } + return ( + { + const d = new Date(`${day.year}-${day.month}-${day.date}`).getDay() + return d === 1 || d === 3 + }} + onChange={onChange} + /> + ) +} +export default Demo9 diff --git a/src/packages/calendarcard/doc.en-US.md b/src/packages/calendarcard/doc.en-US.md index d0497edc6a..2ddaeaaf5c 100644 --- a/src/packages/calendarcard/doc.en-US.md +++ b/src/packages/calendarcard/doc.en-US.md @@ -14,272 +14,90 @@ import { CalendarCard } from '@nutui/nutui-react'; ### Select a single date -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -// const date = null; -const date = new Date('2023-01-01'); - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### Select multiple dates -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const [val, setVal] = useState(() => { - // return []; - return [new Date('2023-01-01'), new Date('2023-01-03')]; - }) - const onChange = (val) => { - setVal(val); - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### Select a range -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### Select a week -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### Controlled mode -:::demo - -```tsx -import React, { useState } from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const [date, setDate] = useState(() => new Date('2023-01-01')); - const onChange = (val) => { - console.log(val); - setDate(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### Custom day information -:::demo - -```tsx -import React, { useState } from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const renderDayTop = (day) => { - return day.date === 8 ? '☺' : '' - } - const renderDay = (day) => { - return day.date <= 9 ? `0${day.date}` : day.date - } - const renderDayBottom = (day) => { - return day.date === 8 ? '节日' : '' - } - return ; -}; -export default App; -``` - +:::demo + + + ::: ### Custom week start day -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### Custom selection range -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### Custom prohibition date selection -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return { - const d = new Date(`${day.year}-${day.month}-${day.date}`).getDay() - return d === 1 || d === 3 - }} - onChange={change} - />; -}; -export default App; -``` - +:::demo + + + ::: ### Use with Popup -:::demo - -```tsx -import React, { useState } from "react"; -import { Cell, Popup, Button, CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const [visible, setVisible] = useState(false) - const [date, setDate] = useState(null) - return <> - setVisible(true)} - /> - setVisible(false)} - > - setDate(d)} /> -
- -
-
- ; -}; -export default App; -``` - +:::demo + + + ::: ### Use ref -:::demo - -```tsx -import React, { useState } from "react"; -import { Space, Button, CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const CalendarCardRef = useRef(null) - return <> - - - - - - - - ; -}; -export default App; -``` - +:::demo + + + ::: ## CalendarCard diff --git a/src/packages/calendarcard/doc.md b/src/packages/calendarcard/doc.md index 9ca218b417..14450e8128 100644 --- a/src/packages/calendarcard/doc.md +++ b/src/packages/calendarcard/doc.md @@ -14,272 +14,90 @@ import { CalendarCard } from '@nutui/nutui-react'; ### 选择单个日期 -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -// const date = null; -const date = new Date('2023-01-01'); - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 选择多个日期 -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const [val, setVal] = useState(() => { - // return []; - return [new Date('2023-01-01'), new Date('2023-01-03')]; - }) - const onChange = (val) => { - setVal(val); - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 选择范围 -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 选择周 -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 受控模式 -:::demo - -```tsx -import React, { useState } from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const [date, setDate] = useState(() => new Date('2023-01-01')); - const onChange = (val) => { - console.log(val); - setDate(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 自定义日期信息 -:::demo - -```tsx -import React, { useState } from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const renderDayTop = (day) => { - return day.date === 8 ? '☺' : '' - } - const renderDay = (day) => { - return day.date <= 9 ? `0${day.date}` : day.date - } - const renderDayBottom = (day) => { - return day.date === 8 ? '节日' : '' - } - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 自定义周起始日 -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 自定义选择范围 -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 自定义禁止选择日期 -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return { - const d = new Date(`${day.year}-${day.month}-${day.date}`).getDay() - return d === 1 || d === 3 - }} - onChange={change} - />; -}; -export default App; -``` - +:::demo + + + ::: ### 与 Popup 组合使用 -:::demo - -```tsx -import React, { useState } from "react"; -import { Cell, Popup, Button, CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const [visible, setVisible] = useState(false) - const [date, setDate] = useState(null) - return <> - setVisible(true)} - /> - setVisible(false)} - > - setDate(d)} /> -
- -
-
- ; -}; -export default App; -``` - +:::demo + + + ::: ### 使用 Ref 上的方法 -:::demo - -```tsx -import React, { useState } from "react"; -import { Space, Button, CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const CalendarCardRef = useRef(null) - return <> - - - - - - - - ; -}; -export default App; -``` - +:::demo + + + ::: ## CalendarCard diff --git a/src/packages/calendarcard/doc.taro.md b/src/packages/calendarcard/doc.taro.md index 313d920aa5..bf8744405f 100644 --- a/src/packages/calendarcard/doc.taro.md +++ b/src/packages/calendarcard/doc.taro.md @@ -14,272 +14,90 @@ import { CalendarCard } from '@nutui/nutui-react-taro'; ### 选择单个日期 -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react-taro'; - -// const date = null; -const date = new Date('2023-01-01'); - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 选择多个日期 -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react-taro'; - -const App = () => { - const [val, setVal] = useState(() => { - // return []; - return [new Date('2023-01-01'), new Date('2023-01-03')]; - }) - const onChange = (val) => { - setVal(val); - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 选择范围 -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react-taro'; - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 选择周 -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react-taro'; - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 受控模式 -:::demo - -```tsx -import React, { useState } from "react"; -import { CalendarCard } from '@nutui/nutui-react-taro'; - -const App = () => { - const [date, setDate] = useState(() => new Date('2023-01-01')); - const onChange = (val) => { - console.log(val); - setDate(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 自定义日期信息 -:::demo - -```tsx -import React, { useState } from "react"; -import { CalendarCard } from '@nutui/nutui-react-taro'; - -const App = () => { - const renderDayTop = (day) => { - return day.date === 8 ? '☺' : '' - } - const renderDay = (day) => { - return day.date <= 9 ? `0${day.date}` : day.date - } - const renderDayBottom = (day) => { - return day.date === 8 ? '节日' : '' - } - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 自定义周起始日 -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react-taro'; - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 自定义选择范围 -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react-taro'; - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 自定义禁止选择日期 -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react-taro'; - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return { - const d = new Date(`${day.year}-${day.month}-${day.date}`).getDay() - return d === 1 || d === 3 - }} - onChange={change} - />; -}; -export default App; -``` - +:::demo + + + ::: ### 与 Popup 组合使用 -:::demo - -```tsx -import React, { useState } from "react"; -import { Cell, Popup, Button, CalendarCard } from '@nutui/nutui-react-taro'; - -const App = () => { - const [visible, setVisible] = useState(false) - const [date, setDate] = useState(null) - return <> - setVisible(true)} - /> - setVisible(false)} - > - setDate(d)} /> -
- -
-
- ; -}; -export default App; -``` - +:::demo + + + ::: ### 使用 Ref 上的方法 -:::demo - -```tsx -import React, { useState } from "react"; -import { Space, Button, CalendarCard } from '@nutui/nutui-react-taro'; - -const App = () => { - const CalendarCardRef = useRef(null) - return <> - - - - - - - - ; -}; -export default App; -``` - +:::demo + + + ::: ## CalendarCard diff --git a/src/packages/calendarcard/doc.zh-TW.md b/src/packages/calendarcard/doc.zh-TW.md index 094bbb1cc6..32509002b2 100644 --- a/src/packages/calendarcard/doc.zh-TW.md +++ b/src/packages/calendarcard/doc.zh-TW.md @@ -14,272 +14,90 @@ import { CalendarCard } from '@nutui/nutui-react'; ### 選擇單個日期 -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -// const date = null; -const date = new Date('2023-01-01'); - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 選擇多個日期 -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const [val, setVal] = useState(() => { - // return []; - return [new Date('2023-01-01'), new Date('2023-01-03')]; - }) - const onChange = (val) => { - setVal(val); - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 選擇範圍 -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 選擇周 -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 受控模式 -:::demo - -```tsx -import React, { useState } from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const [date, setDate] = useState(() => new Date('2023-01-01')); - const onChange = (val) => { - console.log(val); - setDate(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 自定義日期信息 -:::demo - -```tsx -import React, { useState } from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const renderDayTop = (day) => { - return day.date === 8 ? '☺' : '' - } - const renderDay = (day) => { - return day.date <= 9 ? `0${day.date}` : day.date - } - const renderDayBottom = (day) => { - return day.date === 8 ? '節日' : '' - } - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 自定義周起始日 -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 自定義選擇範圍 -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return ; -}; -export default App; -``` - +:::demo + + + ::: ### 自定義禁止選擇日期 -:::demo - -```tsx -import React from "react"; -import { CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const onChange = (val) => { - console.log(val); - }; - return { - const d = new Date(`${day.year}-${day.month}-${day.date}`).getDay() - return d === 1 || d === 3 - }} - onChange={change} - />; -}; -export default App; -``` - +:::demo + + + ::: ### 與 Popup 組合使用 -:::demo - -```tsx -import React, { useState } from "react"; -import { Cell, Popup, Button, CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const [visible, setVisible] = useState(false) - const [date, setDate] = useState(null) - return <> - setVisible(true)} - /> - setVisible(false)} - > - setDate(d)} /> -
- -
-
- ; -}; -export default App; -``` - +:::demo + + + ::: ### 使用 Ref 上的方法 -:::demo - -```tsx -import React, { useState } from "react"; -import { Space, Button, CalendarCard } from '@nutui/nutui-react'; - -const App = () => { - const CalendarCardRef = useRef(null) - return <> - - - - - - - - ; -}; -export default App; -``` - +:::demo + + + ::: ## CalendarCard diff --git a/src/packages/calendarcard/index.taro.ts b/src/packages/calendarcard/index.taro.ts index 8a846c5e76..99d0f3b351 100644 --- a/src/packages/calendarcard/index.taro.ts +++ b/src/packages/calendarcard/index.taro.ts @@ -4,5 +4,6 @@ export type { CalendarCardDay, CalendarCardMonth, CalendarCardValue, + CalendarCardRef, } from './types' export default CalendarCard diff --git a/src/packages/calendarcard/index.ts b/src/packages/calendarcard/index.ts index 50fa3c097e..41667f6a88 100644 --- a/src/packages/calendarcard/index.ts +++ b/src/packages/calendarcard/index.ts @@ -4,5 +4,6 @@ export type { CalendarCardDay, CalendarCardMonth, CalendarCardValue, + CalendarCardRef, } from './types' export default CalendarCard diff --git a/src/packages/calendarcard/types.ts b/src/packages/calendarcard/types.ts index f2f312cc63..65942cbf9c 100644 --- a/src/packages/calendarcard/types.ts +++ b/src/packages/calendarcard/types.ts @@ -12,3 +12,8 @@ export interface CalendarCardMonth { } export type CalendarCardValue = Date | Date[] | null + +export type CalendarCardRef = { + jump: (step: number) => void + jumpTo: (year: number, month: number) => void +} diff --git a/src/packages/calendaritem/calendaritem.taro.tsx b/src/packages/calendaritem/calendaritem.taro.tsx index 717696fea6..da42eb52f7 100644 --- a/src/packages/calendaritem/calendaritem.taro.tsx +++ b/src/packages/calendaritem/calendaritem.taro.tsx @@ -22,7 +22,12 @@ import { isEnd, isStartAndEnd, } from '../calendar/utils' -import { Day, MonthInfo, InputDate, SelectedType } from '../calendar/types' +import { + CalendarDay, + CalendarMonthInfo, + CalendarValue, + CalendarType, +} from '../calendar/types' type CalendarRef = { scrollToDate: (date: string) => void @@ -33,14 +38,14 @@ interface CalendarState { } export interface CalendarItemProps extends PopupProps { - type: SelectedType + type: CalendarType autoBackfill: boolean popup: boolean title: string - value?: InputDate - defaultValue?: InputDate - startDate: InputDate - endDate: InputDate + value?: CalendarValue + defaultValue?: CalendarValue + startDate: CalendarValue + endDate: CalendarValue showToday: boolean startText: ReactNode endText: ReactNode @@ -49,11 +54,11 @@ export interface CalendarItemProps extends PopupProps { showSubTitle: boolean scrollAnimation: boolean firstDayOfWeek: number - disableDate: (date: Day) => boolean + disableDate: (date: CalendarDay) => boolean renderHeaderButtons: () => string | JSX.Element - renderDay: (date: Day) => string | JSX.Element - renderDayTop: (date: Day) => string | JSX.Element - renderDayBottom: (date: Day) => string | JSX.Element + renderDay: (date: CalendarDay) => string | JSX.Element + renderDayTop: (date: CalendarDay) => string | JSX.Element + renderDayBottom: (date: CalendarDay) => string | JSX.Element onConfirm: (data: string) => void onUpdate: () => void onDayClick: (data: string) => void @@ -75,7 +80,7 @@ const defaultProps = { showSubTitle: true, scrollAnimation: true, firstDayOfWeek: 0, - disableDate: (date: Day) => false, + disableDate: (date: CalendarDay) => false, renderHeaderButtons: undefined, renderDay: undefined, renderDayTop: undefined, @@ -166,7 +171,7 @@ export const CalendarItem = React.forwardRef< return undefined } - const [currentDate, setCurrentDate] = usePropsValue({ + const [currentDate, setCurrentDate] = usePropsValue({ value: props.value, defaultValue: resetDefaultValue(), finalValue: [], @@ -192,8 +197,8 @@ export const CalendarItem = React.forwardRef< const y = parseInt(date[0], 10) const m = parseInt(date[1], 10) const days = [ - ...(getPreMonthDates('prev', y, m, firstDayOfWeek) as Day[]), - ...(getDaysStatus('active', y, m) as Day[]), + ...(getPreMonthDates('prev', y, m, firstDayOfWeek) as CalendarDay[]), + ...(getDaysStatus('active', y, m) as CalendarDay[]), ] const cssHeight = 39 + (days.length > 35 ? 384 : 320) @@ -202,7 +207,7 @@ export const CalendarItem = React.forwardRef< const monthEle = monthData[monthData.length - 1] scrollTop = monthEle.scrollTop + monthEle.cssHeight } - const monthInfo: MonthInfo = { + const monthInfo: CalendarMonthInfo = { curData: date, title: monthTitle(y, m), monthData: days, @@ -284,7 +289,7 @@ export const CalendarItem = React.forwardRef< return monthNum } const setDefaultDate = () => { - let defaultData: InputDate = [] + let defaultData: CalendarValue = [] // 日期转化为数组,限制初始日期。判断时间范围 if (type === 'range' && Array.isArray(currentDate)) { if (currentDate.length > 0) { @@ -357,7 +362,7 @@ export const CalendarItem = React.forwardRef< return defaultData } - const getCurrentIndex = (defaultData: InputDate) => { + const getCurrentIndex = (defaultData: CalendarValue) => { // 设置默认可见区域 let current = 0 let lastCurrent = 0 @@ -391,7 +396,7 @@ export const CalendarItem = React.forwardRef< } const renderCurrentDate = () => { - const defaultData: InputDate = setDefaultDate() + const defaultData: CalendarValue = setDefaultDate() const current = getCurrentIndex(defaultData) if (defaultData.length > 0) { @@ -557,7 +562,7 @@ export const CalendarItem = React.forwardRef< scrollToDate, })) - const getClasses = (day: Day, month: MonthInfo) => { + const getClasses = (day: CalendarDay, month: CalendarMonthInfo) => { const dateStr = getCurrDate(day, month) if (day.type === 'active') { if ( @@ -603,7 +608,11 @@ export const CalendarItem = React.forwardRef< return `${dayPrefix}-disabled` } - const chooseDay = (day: Day, month: MonthInfo, isFirst?: boolean) => { + const chooseDay = ( + day: CalendarDay, + month: CalendarMonthInfo, + isFirst?: boolean + ) => { if (getClasses(day, month) === `${dayPrefix}-disabled`) { return } @@ -725,7 +734,7 @@ export const CalendarItem = React.forwardRef< [`${classPrefix}-header-title`]: !popup, }) // 是否有开始提示 - const isStartTip = (day: Day, month: MonthInfo) => { + const isStartTip = (day: CalendarDay, month: CalendarMonthInfo) => { return ( (type === 'range' || type === 'week') && day.type === 'active' && @@ -734,7 +743,7 @@ export const CalendarItem = React.forwardRef< } // 是否有结束提示 - const isEndTip = (day: Day, month: MonthInfo) => { + const isEndTip = (day: CalendarDay, month: CalendarMonthInfo) => { return ( currentDate.length >= 2 && (type === 'range' || type === 'week') && @@ -796,7 +805,7 @@ export const CalendarItem = React.forwardRef< {month.title}
- {month.monthData.map((day: Day, i: number) => ( + {month.monthData.map((day: CalendarDay, i: number) => (
void @@ -32,14 +37,14 @@ interface CalendarState { } export interface CalendarItemProps extends PopupProps { - type: SelectedType + type: CalendarType autoBackfill: boolean popup: boolean title: string - value?: InputDate - defaultValue?: InputDate - startDate: InputDate - endDate: InputDate + value?: CalendarValue + defaultValue?: CalendarValue + startDate: CalendarValue + endDate: CalendarValue showToday: boolean startText: ReactNode endText: ReactNode @@ -48,11 +53,11 @@ export interface CalendarItemProps extends PopupProps { showSubTitle: boolean scrollAnimation: boolean firstDayOfWeek: number - disableDate: (date: Day) => boolean + disableDate: (date: CalendarDay) => boolean renderHeaderButtons: () => string | JSX.Element - renderDay: (date: Day) => string | JSX.Element - renderDayTop: (date: Day) => string | JSX.Element - renderDayBottom: (date: Day) => string | JSX.Element + renderDay: (date: CalendarDay) => string | JSX.Element + renderDayTop: (date: CalendarDay) => string | JSX.Element + renderDayBottom: (date: CalendarDay) => string | JSX.Element onConfirm: (data: string) => void onUpdate: () => void onDayClick: (data: string) => void @@ -74,7 +79,7 @@ const defaultProps = { showSubTitle: true, scrollAnimation: true, firstDayOfWeek: 0, - disableDate: (date: Day) => false, + disableDate: (date: CalendarDay) => false, renderHeaderButtons: undefined, renderDay: undefined, renderDayTop: undefined, @@ -164,7 +169,7 @@ export const CalendarItem = React.forwardRef< return undefined } - const [currentDate, setCurrentDate] = usePropsValue({ + const [currentDate, setCurrentDate] = usePropsValue({ value: props.value, defaultValue: resetDefaultValue(), finalValue: [], @@ -191,8 +196,8 @@ export const CalendarItem = React.forwardRef< const y = parseInt(date[0], 10) const m = parseInt(date[1], 10) const days = [ - ...(getPreMonthDates('prev', y, m, firstDayOfWeek) as Day[]), - ...(getDaysStatus('active', y, m) as Day[]), + ...(getPreMonthDates('prev', y, m, firstDayOfWeek) as CalendarDay[]), + ...(getDaysStatus('active', y, m) as CalendarDay[]), ] const cssHeight = 39 + (days.length > 35 ? 384 : 320) @@ -201,7 +206,7 @@ export const CalendarItem = React.forwardRef< const monthEle = monthData[monthData.length - 1] scrollTop = monthEle.scrollTop + monthEle.cssHeight } - const monthInfo: MonthInfo = { + const monthInfo: CalendarMonthInfo = { curData: date, title: monthTitle(y, m), monthData: days, @@ -284,7 +289,7 @@ export const CalendarItem = React.forwardRef< } const setDefaultDate = () => { - let defaultData: InputDate = [] + let defaultData: CalendarValue = [] // 日期转化为数组,限制初始日期。判断时间范围 if (type === 'range' && Array.isArray(currentDate)) { if (currentDate.length > 0) { @@ -357,7 +362,7 @@ export const CalendarItem = React.forwardRef< return defaultData } - const getCurrentIndex = (defaultData: InputDate) => { + const getCurrentIndex = (defaultData: CalendarValue) => { // 设置默认可见区域 let current = 0 let lastCurrent = 0 @@ -391,7 +396,7 @@ export const CalendarItem = React.forwardRef< } const renderCurrentDate = () => { - const defaultData: InputDate = setDefaultDate() + const defaultData: CalendarValue = setDefaultDate() const current = getCurrentIndex(defaultData) if (defaultData.length > 0) { @@ -555,7 +560,7 @@ export const CalendarItem = React.forwardRef< scrollToDate, })) - const getClasses = (day: Day, month: MonthInfo) => { + const getClasses = (day: CalendarDay, month: CalendarMonthInfo) => { const dateStr = getCurrDate(day, month) if (day.type === 'active') { @@ -604,7 +609,11 @@ export const CalendarItem = React.forwardRef< return `${dayPrefix}-disabled` } - const chooseDay = (day: Day, month: MonthInfo, isFirst?: boolean) => { + const chooseDay = ( + day: CalendarDay, + month: CalendarMonthInfo, + isFirst?: boolean + ) => { if (getClasses(day, month) === `${dayPrefix}-disabled`) { return } @@ -727,7 +736,7 @@ export const CalendarItem = React.forwardRef< }) // 是否有开始提示 - const isStartTip = (day: Day, month: MonthInfo) => { + const isStartTip = (day: CalendarDay, month: CalendarMonthInfo) => { return ( (type === 'range' || type === 'week') && day.type === 'active' && @@ -736,7 +745,7 @@ export const CalendarItem = React.forwardRef< } // 是否有结束提示 - const isEndTip = (day: Day, month: MonthInfo) => { + const isEndTip = (day: CalendarDay, month: CalendarMonthInfo) => { return ( currentDate.length >= 2 && (type === 'range' || type === 'week') && @@ -794,7 +803,7 @@ export const CalendarItem = React.forwardRef< {month.title}
- {month.monthData.map((day: Day, i: number) => ( + {month.monthData.map((day: CalendarDay, i: number) => (
diff --git a/src/packages/card/card.scss b/src/packages/card/card.scss index 610a1fafac..a33f6577b5 100644 --- a/src/packages/card/card.scss +++ b/src/packages/card/card.scss @@ -92,3 +92,24 @@ } } } + +[dir='rtl'] .nut-card, +.nut-rtl .nut-card { + &-right { + &-price { + &-origin { + &.nut-price { + margin-left: 0; + margin-right: 2px; + } + } + } + + &-other { + .nut-tag { + margin-right: 0; + margin-left: 5px; + } + } + } +} diff --git a/src/packages/card/demo.taro.tsx b/src/packages/card/demo.taro.tsx index 551e7a5d3f..d64a2142fd 100644 --- a/src/packages/card/demo.taro.tsx +++ b/src/packages/card/demo.taro.tsx @@ -1,184 +1,49 @@ import React from 'react' import Taro from '@tarojs/taro' -import { Card } from '@/packages/nutui.react.taro' import { useTranslate } from '@/sites/assets/locale/taro' import Header from '@/sites/components/header' -interface T { - basic: string - customProduct: string - customPro1: string - customPro2: string - customPro3: string - title: string - customShop: string - customFooter: string - customContent: string - description: string - delivery: string - shopName: string -} +import Demo1 from './demos/taro/demo1' +import Demo2 from './demos/taro/demo2' +import Demo3 from './demos/taro/demo3' +import Demo4 from './demos/taro/demo4' +import Demo5 from './demos/taro/demo5' + const CardDemo = () => { - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { basic: '基础用法', customProduct: '自定义商品标签', - customPro1: '活鲜', - customPro2: '礼盒', - customPro3: '国产', - title: - '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', customShop: '自定义店铺介绍', customFooter: '自定义右下角内容', - customContent: '自定义', - description: '自营', - delivery: '厂商配送', - shopName: '阳澄湖大闸蟹自营店>', }, 'zh-TW': { basic: '基础用法', customProduct: '自定義商品標簽', - customPro1: '活鮮', - customPro2: '禮盒', - customPro3: '國產', - title: - '【活蟹】湖塘煙雨 陽澄湖大閘蟹公4.5兩 母3.5兩 4對8只 鮮活生鮮螃蟹現貨水產禮盒海鮮水', customShop: '自定義店鋪介紹', customFooter: '自定義右下角內容', - customContent: '自定義', - description: '自營', - delivery: '廠商配送', - shopName: '陽澄湖大閘蟹自營店>', }, 'en-US': { basic: 'Basic Usage', customProduct: 'Custom prolist', - customPro1: 'tag', - customPro2: 'tag', - customPro3: 'tag', - title: 'title', customShop: 'Custom Content', customFooter: 'Customize bottom right content', - customContent: 'custom', - description: 'description', - delivery: 'delivery', - shopName: 'shopName>', }, }) - const state = { - src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: translated.title, - price: '388', - vipPrice: '378', - shopDescription: translated.description, - delivery: translated.delivery, - shopName: translated.shopName, - } - const tagStyles = { - display: 'inline-block', - verticalAlign: 'middle', - marginRight: '5px', - marginLeft: '2px', - width: '29px', - height: '14px', - } - const wordStyles = { - padding: '0 5px', - borderRadius: '1px', - fontSize: '10px', - height: '15px', - lineHeight: '15px', - color: '#999', - backgroundColor: '#f2f2f7', - marginRight: '5px', - } return ( <>

{translated.basic}

- +

{translated.customProduct}

- - {[ - translated.customPro1, - translated.customPro2, - translated.customPro3, - ].map((item) => { - return ( - - {item} - - ) - })} -
- } - /> +

{translated.customProduct}

- - } - /> +

{translated.customShop}

- {translated.customShop}
} - /> +

{translated.customFooter}

- {translated.customContent}
- } - /> +
) diff --git a/src/packages/card/demo.tsx b/src/packages/card/demo.tsx index 244e2414b9..6de64f448b 100644 --- a/src/packages/card/demo.tsx +++ b/src/packages/card/demo.tsx @@ -1,185 +1,49 @@ import React from 'react' -import { Card } from './card' import { useTranslate } from '../../sites/assets/locale' -interface T { - basic: string - customProduct: string - customPro1: string - customPro2: string - customPro3: string - title: string - customShop: string - customPriceIcon: string - customFooter: string - customContent: string - description: string - delivery: string - shopName: string -} +import Demo1 from './demos/h5/demo1' +import Demo2 from './demos/h5/demo2' +import Demo3 from './demos/h5/demo3' +import Demo4 from './demos/h5/demo4' +import Demo5 from './demos/h5/demo5' + const CardDemo = () => { - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { basic: '基础用法', customProduct: '自定义商品标签', - customPro1: '活鲜', - customPro2: '礼盒', - customPro3: '国产', - title: - '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', customShop: '自定义店铺介绍', customPriceIcon: '价格后自定义标签', customFooter: '自定义右下角内容', - customContent: '自定义', - description: '自营', - delivery: '厂商配送', - shopName: '阳澄湖大闸蟹自营店>', }, 'zh-TW': { basic: '基础用法', customProduct: '自定義商品標簽', - customPro1: '活鮮', - customPro2: '禮盒', - customPro3: '國產', - title: - '【活蟹】湖塘煙雨 陽澄湖大閘蟹公4.5兩 母3.5兩 4對8只 鮮活生鮮螃蟹現貨水產禮盒海鮮水', customShop: '自定義店鋪介紹', customPriceIcon: '價格後自定義標簽', customFooter: '自定義右下角內容', - customContent: '自定義', - description: '自營', - delivery: '廠商配送', - shopName: '陽澄湖大閘蟹自營店>', }, 'en-US': { basic: 'Basic Usage', customProduct: 'Custom prolist', - customPro1: 'tag', - customPro2: 'tag', - customPro3: 'tag', - title: 'title', customShop: 'Custom Content', customPriceIcon: 'Price after custom tag', customFooter: 'Customize bottom right content', - customContent: 'custom', - description: 'description', - delivery: 'delivery', - shopName: 'shopName>', }, }) - const state = { - src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: translated.title, - price: '388', - vipPrice: '378', - shopDescription: translated.description, - delivery: translated.delivery, - shopName: translated.shopName, - } - const tagStyles = { - display: 'inline-block', - verticalAlign: 'middle', - marginRight: '5px', - marginLeft: '2px', - width: '29px', - height: '14px', - } - const wordStyles = { - padding: '0 5px', - borderRadius: '1px', - fontSize: '10px', - height: '15px', - lineHeight: '15px', - color: '#999', - backgroundColor: '#f2f2f7', - marginRight: '5px', - } return ( <>

{translated.basic}

- +

{translated.customProduct}

- - {[ - translated.customPro1, - translated.customPro2, - translated.customPro3, - ].map((item) => { - return ( - - {item} - - ) - })} -
- } - /> +

{translated.customPriceIcon}

- - } - /> +

{translated.customShop}

- {translated.customShop}} - /> +

{translated.customFooter}

- {translated.customContent} - } - /> + ) diff --git a/src/packages/card/demos/h5/demo1.tsx b/src/packages/card/demos/h5/demo1.tsx new file mode 100644 index 0000000000..4b35ea4bed --- /dev/null +++ b/src/packages/card/demos/h5/demo1.tsx @@ -0,0 +1,27 @@ +import React from 'react' +import { Card } from '@nutui/nutui-react' + +const Demo1 = () => { + const state = { + src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', + title: + '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', + price: '388', + vipPrice: '378', + shopDescription: '自营', + delivery: '厂商配送', + shopName: '阳澄湖大闸蟹自营店>', + } + return ( + + ) +} +export default Demo1 diff --git a/src/packages/card/demos/h5/demo2.tsx b/src/packages/card/demos/h5/demo2.tsx new file mode 100644 index 0000000000..ab46bfec10 --- /dev/null +++ b/src/packages/card/demos/h5/demo2.tsx @@ -0,0 +1,55 @@ +import React from 'react' +import { Card } from '@nutui/nutui-react' + +const Demo2 = () => { + const state = { + src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', + title: + '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', + price: '388', + vipPrice: '378', + shopDescription: '自营', + delivery: '厂商配送', + shopName: '阳澄湖大闸蟹自营店>', + } + const wordStyles = { + padding: '0 5px', + borderRadius: '1px', + fontSize: '10px', + height: '15px', + lineHeight: '15px', + color: '#999', + backgroundColor: '#f2f2f7', + marginRight: '5px', + } + return ( + + {['鲜活', '礼盒', '国产'].map((item) => { + return ( + + {item} + + ) + })} + + } + /> + ) +} +export default Demo2 diff --git a/src/packages/card/demos/h5/demo3.tsx b/src/packages/card/demos/h5/demo3.tsx new file mode 100644 index 0000000000..d0c42fc1fd --- /dev/null +++ b/src/packages/card/demos/h5/demo3.tsx @@ -0,0 +1,41 @@ +import React from 'react' +import { Card } from '@nutui/nutui-react' + +const Demo3 = () => { + const state = { + src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', + title: + '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', + price: '388', + vipPrice: '378', + shopDescription: '自营', + delivery: '厂商配送', + shopName: '阳澄湖大闸蟹自营店>', + } + const tagStyles = { + display: 'inline-block', + verticalAlign: 'middle', + marginRight: '5px', + marginLeft: '2px', + height: '14px', + } + return ( + + } + /> + ) +} +export default Demo3 diff --git a/src/packages/card/demos/h5/demo4.tsx b/src/packages/card/demos/h5/demo4.tsx new file mode 100644 index 0000000000..d87cefc9a5 --- /dev/null +++ b/src/packages/card/demos/h5/demo4.tsx @@ -0,0 +1,28 @@ +import React from 'react' +import { Card } from '@nutui/nutui-react' + +const Demo4 = () => { + const state = { + src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', + title: + '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', + price: '388', + vipPrice: '378', + shopDescription: '自营', + delivery: '厂商配送', + shopName: '阳澄湖大闸蟹自营店>', + } + return ( + 自定义店铺介绍 } + /> + ) +} +export default Demo4 diff --git a/src/packages/card/demos/h5/demo5.tsx b/src/packages/card/demos/h5/demo5.tsx new file mode 100644 index 0000000000..fdb0db38d5 --- /dev/null +++ b/src/packages/card/demos/h5/demo5.tsx @@ -0,0 +1,29 @@ +import React from 'react' +import { Card } from '@nutui/nutui-react' + +const Demo5 = () => { + const state = { + src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', + title: + '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', + price: '388', + vipPrice: '378', + shopDescription: '自营', + delivery: '厂商配送', + shopName: '阳澄湖大闸蟹自营店>', + } + + return ( + 自定义} + /> + ) +} +export default Demo5 diff --git a/src/packages/card/demos/taro/demo1.tsx b/src/packages/card/demos/taro/demo1.tsx new file mode 100644 index 0000000000..0fde2a1b75 --- /dev/null +++ b/src/packages/card/demos/taro/demo1.tsx @@ -0,0 +1,27 @@ +import React from 'react' +import { Card } from '@nutui/nutui-react-taro' + +const Demo1 = () => { + const state = { + src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', + title: + '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', + price: '388', + vipPrice: '378', + shopDescription: '自营', + delivery: '厂商配送', + shopName: '阳澄湖大闸蟹自营店>', + } + return ( + + ) +} +export default Demo1 diff --git a/src/packages/card/demos/taro/demo2.tsx b/src/packages/card/demos/taro/demo2.tsx new file mode 100644 index 0000000000..954a918887 --- /dev/null +++ b/src/packages/card/demos/taro/demo2.tsx @@ -0,0 +1,55 @@ +import React from 'react' +import { Card } from '@nutui/nutui-react-taro' + +const Demo2 = () => { + const state = { + src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', + title: + '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', + price: '388', + vipPrice: '378', + shopDescription: '自营', + delivery: '厂商配送', + shopName: '阳澄湖大闸蟹自营店>', + } + const wordStyles = { + padding: '0 5px', + borderRadius: '1px', + fontSize: '10px', + height: '15px', + lineHeight: '15px', + color: '#999', + backgroundColor: '#f2f2f7', + marginRight: '5px', + } + return ( + + {['鲜活', '礼盒', '国产'].map((item) => { + return ( + + {item} + + ) + })} + + } + /> + ) +} +export default Demo2 diff --git a/src/packages/card/demos/taro/demo3.tsx b/src/packages/card/demos/taro/demo3.tsx new file mode 100644 index 0000000000..cf9d2987c5 --- /dev/null +++ b/src/packages/card/demos/taro/demo3.tsx @@ -0,0 +1,41 @@ +import React from 'react' +import { Card } from '@nutui/nutui-react-taro' + +const Demo3 = () => { + const state = { + src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', + title: + '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', + price: '388', + vipPrice: '378', + shopDescription: '自营', + delivery: '厂商配送', + shopName: '阳澄湖大闸蟹自营店>', + } + const tagStyles = { + display: 'inline-block', + verticalAlign: 'middle', + marginRight: '5px', + marginLeft: '2px', + height: '14px', + } + return ( + + } + /> + ) +} +export default Demo3 diff --git a/src/packages/card/demos/taro/demo4.tsx b/src/packages/card/demos/taro/demo4.tsx new file mode 100644 index 0000000000..19f58ed403 --- /dev/null +++ b/src/packages/card/demos/taro/demo4.tsx @@ -0,0 +1,28 @@ +import React from 'react' +import { Card } from '@nutui/nutui-react-taro' + +const Demo4 = () => { + const state = { + src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', + title: + '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', + price: '388', + vipPrice: '378', + shopDescription: '自营', + delivery: '厂商配送', + shopName: '阳澄湖大闸蟹自营店>', + } + return ( + 自定义店铺介绍 } + /> + ) +} +export default Demo4 diff --git a/src/packages/card/demos/taro/demo5.tsx b/src/packages/card/demos/taro/demo5.tsx new file mode 100644 index 0000000000..40ac9545cf --- /dev/null +++ b/src/packages/card/demos/taro/demo5.tsx @@ -0,0 +1,29 @@ +import React from 'react' +import { Card } from '@nutui/nutui-react-taro' + +const Demo5 = () => { + const state = { + src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', + title: + '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', + price: '388', + vipPrice: '378', + shopDescription: '自营', + delivery: '厂商配送', + shopName: '阳澄湖大闸蟹自营店>', + } + + return ( + 自定义} + /> + ) +} +export default Demo5 diff --git a/src/packages/card/doc.en-US.md b/src/packages/card/doc.en-US.md index a484b9cad9..6de9171383 100644 --- a/src/packages/card/doc.en-US.md +++ b/src/packages/card/doc.en-US.md @@ -16,34 +16,7 @@ import { Card, Price, Tag } from '@nutui/nutui-react' :::demo -```tsx -import React from 'react' -import { Card, Price, Tag } from '@nutui/nutui-react' - -const App = () => { - const state = { - src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: 'title', - price: '388', - vipPrice: '378', - shopDescription: 'description', - delivery: 'delivery', - shopName: 'shopName>', - } - return ( - - ) -} -export default App -``` + ::: @@ -51,62 +24,7 @@ export default App :::demo -```tsx -import React from 'react' -import { Card, Price, Tag } from '@nutui/nutui-react' - -const App = () => { - const state = { - src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: 'title', - price: '388', - vipPrice: '378', - shopDescription: 'description', - delivery: 'delivery', - shopName: 'shopName>', - } - const wordStyles = { - padding: '0 5px', - borderRadius: '1px', - fontSize: '10px', - height: '15px', - lineHeight: '15px', - color: '#999', - backgroundColor: '#f2f2f7', - marginRight: '5px', - } - return ( - - {['tag', 'tag', 'tag'].map((item) => { - return ( - - {item} - - ) - })} - - } - /> - ) -} -export default App -``` + ::: @@ -114,48 +32,7 @@ export default App :::demo -```tsx -import React from 'react' -import { Card, Price, Tag } from '@nutui/nutui-react' - -const App = () => { - const state = { - src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: 'title', - price: '388', - vipPrice: '378', - shopDescription: 'description', - delivery: 'delivery', - shopName: 'shopName>', - } - const tagStyles = { - display: 'inline-block', - verticalAlign: 'middle', - marginRight: '5px', - marginLeft: '2px', - height: '14px', - } - return ( - - } - /> - ) -} -export default App -``` + ::: @@ -163,35 +40,7 @@ export default App :::demo -```tsx -import React from 'react' -import { Card, Price, Tag } from '@nutui/nutui-react' - -const App = () => { - const state = { - src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: 'title', - price: '388', - vipPrice: '378', - shopDescription: 'description', - delivery: 'delivery', - shopName: 'shopName>', - } - return ( - Custom Content} - /> - ) -} -export default App -``` + ::: @@ -199,36 +48,7 @@ export default App :::demo -```tsx -import React from 'react' -import { Card, Price, Tag } from '@nutui/nutui-react' - -const App = () => { - const state = { - src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: 'title', - price: '388', - vipPrice: '378', - shopDescription: 'description', - delivery: 'delivery', - shopName: 'shopName>', - } - - return ( - custom} - /> - ) -} -export default App -``` + ::: diff --git a/src/packages/card/doc.md b/src/packages/card/doc.md index 06d6611c7e..f1edeaff6d 100644 --- a/src/packages/card/doc.md +++ b/src/packages/card/doc.md @@ -16,35 +16,7 @@ import { Card, Price, Tag } from '@nutui/nutui-react' :::demo -```tsx -import React from 'react' -import { Card, Price, Tag } from '@nutui/nutui-react' - -const App = () => { - const state = { - src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: - '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', - price: '388', - vipPrice: '378', - shopDescription: '自营', - delivery: '厂商配送', - shopName: '阳澄湖大闸蟹自营店>', - } - return ( - - ) -} -export default App -``` + ::: @@ -52,55 +24,7 @@ export default App :::demo -```tsx -import React from "react"; -import { Card, Price, Tag } from '@nutui/nutui-react'; - -const App = () => { - const state = { - src: - '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', - price: '388', - vipPrice: '378', - shopDescription: '自营', - delivery: '厂商配送', - shopName: '阳澄湖大闸蟹自营店>', - } - const wordStyles = { - padding: '0 5px', - borderRadius: '1px', - fontSize: '10px', - height: '15px', - lineHeight: '15px', - color: '#999', - backgroundColor: '#f2f2f7', - marginRight: '5px', - } - return ( - - {['鲜活', '礼盒', '国产'].map((item) => { - return ( - { item })})} - } /> -); -}; -export default App; - -``` + ::: @@ -108,49 +32,7 @@ export default App; :::demo -```tsx -import React from 'react' -import { Card, Price, Tag } from '@nutui/nutui-react' - -const App = () => { - const state = { - src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: - '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', - price: '388', - vipPrice: '378', - shopDescription: '自营', - delivery: '厂商配送', - shopName: '阳澄湖大闸蟹自营店>', - } - const tagStyles = { - display: 'inline-block', - verticalAlign: 'middle', - marginRight: '5px', - marginLeft: '2px', - height: '14px', - } - return ( - - } - /> - ) -} -export default App -``` + ::: @@ -158,35 +40,7 @@ export default App :::demo -```tsx -import React from "react"; -import { Card, Price, Tag } from '@nutui/nutui-react'; - -const App = () => { - const state = { - src: - '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', - price: '388', - vipPrice: '378', - shopDescription: '自营', - delivery: '厂商配送', - shopName: '阳澄湖大闸蟹自营店>', - } - return ( - 自定义店铺介绍 }> - ); -}; -export default App; -``` + ::: @@ -194,36 +48,7 @@ export default App; :::demo -```tsx -import React from "react"; -import { Card, Price, Tag } from '@nutui/nutui-react'; - -const App = () => { - const state = { - src: - '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', - price: '388', - vipPrice: '378', - shopDescription: '自营', - delivery: '厂商配送', - shopName: '阳澄湖大闸蟹自营店>', - } - - return ( - 自定义} /> - ); -}; -export default App; -``` + ::: diff --git a/src/packages/card/doc.taro.md b/src/packages/card/doc.taro.md index 787010195f..6e137de3a3 100644 --- a/src/packages/card/doc.taro.md +++ b/src/packages/card/doc.taro.md @@ -16,35 +16,7 @@ import { Card, Price, Tag } from '@nutui/nutui-react-taro' :::demo -```tsx -import React from 'react' -import { Card, Price, Tag } from '@nutui/nutui-react-taro' - -const App = () => { - const state = { - src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: - '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', - price: '388', - vipPrice: '378', - shopDescription: '自营', - delivery: '厂商配送', - shopName: '阳澄湖大闸蟹自营店>', - } - return ( - - ) -} -export default App -``` + ::: @@ -52,55 +24,7 @@ export default App :::demo -```tsx -import React from "react"; -import { Card, Price, Tag } from '@nutui/nutui-react-taro'; - -const App = () => { - const state = { - src: - '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', - price: '388', - vipPrice: '378', - shopDescription: '自营', - delivery: '厂商配送', - shopName: '阳澄湖大闸蟹自营店>', - } - const wordStyles = { - padding: '0 5px', - borderRadius: '1px', - fontSize: '10px', - height: '15px', - lineHeight: '15px', - color: '#999', - backgroundColor: '#f2f2f7', - marginRight: '5px', - } - return ( - - {['鲜活', '礼盒', '国产'].map((item) => { - return ( - { item })})} - } /> -); -}; -export default App; - -``` + ::: @@ -108,49 +32,7 @@ export default App; :::demo -```tsx -import React from 'react' -import { Card, Price, Tag } from '@nutui/nutui-react-taro' - -const App = () => { - const state = { - src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: - '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', - price: '388', - vipPrice: '378', - shopDescription: '自营', - delivery: '厂商配送', - shopName: '阳澄湖大闸蟹自营店>', - } - const tagStyles = { - display: 'inline-block', - verticalAlign: 'middle', - marginRight: '5px', - marginLeft: '2px', - height: '14px', - } - return ( - - } - /> - ) -} -export default App -``` + ::: @@ -158,35 +40,7 @@ export default App :::demo -```tsx -import React from "react"; -import { Card, Price, Tag } from '@nutui/nutui-react-taro'; - -const App = () => { - const state = { - src: - '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', - price: '388', - vipPrice: '378', - shopDescription: '自营', - delivery: '厂商配送', - shopName: '阳澄湖大闸蟹自营店>', - } - return ( - 自定义店铺介绍 }> - ); -}; -export default App; -``` + ::: @@ -194,36 +48,7 @@ export default App; :::demo -```tsx -import React from "react"; -import { Card, Price, Tag } from '@nutui/nutui-react-taro'; - -const App = () => { - const state = { - src: - '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: '【活蟹】湖塘煙雨 阳澄湖大闸蟹公4.5两 母3.5两 4对8只 鲜活生鲜螃蟹现货水产礼盒海鲜水', - price: '388', - vipPrice: '378', - shopDescription: '自营', - delivery: '厂商配送', - shopName: '阳澄湖大闸蟹自营店>', - } - - return ( - 自定义} /> - ); -}; -export default App; -``` + ::: diff --git a/src/packages/card/doc.zh-TW.md b/src/packages/card/doc.zh-TW.md index 1559beea57..95959cfa97 100644 --- a/src/packages/card/doc.zh-TW.md +++ b/src/packages/card/doc.zh-TW.md @@ -16,35 +16,7 @@ import { Card, Price, Tag } from '@nutui/nutui-react' :::demo -```tsx -import React from 'react' -import { Card, Price, Tag } from '@nutui/nutui-react' - -const App = () => { - const state = { - src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: - '【活蟹】湖塘煙雨 陽澄湖大閘蟹公4.5兩 母3.5兩 4對8只 鮮活生鮮螃蟹現貨水產禮盒海鮮水', - price: '388', - vipPrice: '378', - shopDescription: '自營', - delivery: '廠商配送', - shopName: '陽澄湖大閘蟹自營店>', - } - return ( - - ) -} -export default App -``` + ::: @@ -52,55 +24,7 @@ export default App :::demo -```tsx -import React from "react"; -import { Card, Price, Tag } from '@nutui/nutui-react'; - -const App = () => { - const state = { - src: - '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: '【活蟹】湖塘煙雨 陽澄湖大閘蟹公4.5兩 母3.5兩 4對8只 鮮活生鮮螃蟹現貨水產禮盒海鮮水', - price: '388', - vipPrice: '378', - shopDescription: '自營', - delivery: '廠商配送', - shopName: '陽澄湖大閘蟹自營店>', - } - const wordStyles = { - padding: '0 5px', - borderRadius: '1px', - fontSize: '10px', - height: '15px', - lineHeight: '15px', - color: '#999', - backgroundColor: '#f2f2f7', - marginRight: '5px', - } - return ( - - {['鮮活', '禮盒', '國產'].map((item) => { - return ( - { item })})} - } /> -); -}; -export default App; - -``` + ::: @@ -108,49 +32,7 @@ export default App; :::demo -```tsx -import React from 'react' -import { Card, Price, Tag } from '@nutui/nutui-react' - -const App = () => { - const state = { - src: '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: - '【活蟹】湖塘煙雨 陽澄湖大閘蟹公4.5兩 母3.5兩 4對8只 鮮活生鮮螃蟹現貨水產禮盒海鮮水', - price: '388', - vipPrice: '378', - shopDescription: '自營', - delivery: '廠商配送', - shopName: '陽澄湖大閘蟹自營店>', - } - const tagStyles = { - display: 'inline-block', - verticalAlign: 'middle', - marginRight: '5px', - marginLeft: '2px', - height: '14px', - } - return ( - - } - /> - ) -} -export default App -``` + ::: @@ -158,35 +40,7 @@ export default App :::demo -```tsx -import React from "react"; -import { Card, Price, Tag } from '@nutui/nutui-react'; - -const App = () => { - const state = { - src: - '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: '【活蟹】湖塘煙雨 陽澄湖大閘蟹公4.5兩 母3.5兩 4對8只 鮮活生鮮螃蟹現貨水產禮盒海鮮水', - price: '388', - vipPrice: '378', - shopDescription: '自營', - delivery: '廠商配送', - shopName: '陽澄湖大閘蟹自營店>', - } - return ( - 自定義店鋪介紹 }> - ); -}; -export default App; -``` + ::: @@ -194,36 +48,7 @@ export default App; :::demo -```tsx -import React from "react"; -import { Card, Price, Tag } from '@nutui/nutui-react'; - -const App = () => { - const state = { - src: - '//img10.360buyimg.com/n2/s240x240_jfs/t1/210890/22/4728/163829/6163a590Eb7c6f4b5/6390526d49791cb9.jpg!q70.jpg', - title: '【活蟹】湖塘煙雨 陽澄湖大閘蟹公4.5兩 母3.5兩 4對8只 鮮活生鮮螃蟹現貨水產禮盒海鮮水', - price: '388', - vipPrice: '378', - shopDescription: '自營', - delivery: '廠商配送', - shopName: '陽澄湖大閘蟹自營店>', - } - - return ( - 自定義} /> - ); -}; -export default App; -``` + ::: diff --git a/src/packages/cascader/__tests__/__snapshots__/cascader.spec.tsx.snap b/src/packages/cascader/__tests__/__snapshots__/cascader.spec.tsx.snap index 6799625b23..806a9e6171 100644 --- a/src/packages/cascader/__tests__/__snapshots__/cascader.spec.tsx.snap +++ b/src/packages/cascader/__tests__/__snapshots__/cascader.spec.tsx.snap @@ -1,6 +1,6 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`Cascader change tab 1`] = ` +exports[`Cascader > change tab 1`] = `
`; -exports[`Cascader change tab 2`] = ` +exports[`Cascader > change tab 2`] = `
`; -exports[`Cascader options 1`] = `
`; +exports[`Cascader > options 1`] = `
`; -exports[`Cascader options with format 1`] = `
`; +exports[`Cascader > options with format 1`] = `
`; -exports[`Cascader options with valueKey/textKey/childrenKey 1`] = `
`; +exports[`Cascader > options with valueKey/textKey/childrenKey 1`] = `
`; -exports[`Cascader value 1`] = `
`; +exports[`Cascader > value 1`] = `
`; -exports[`Cascader visible true 1`] = ` +exports[`Cascader > visible true 1`] = `
`; -exports[`Cascader visible true 2`] = ` +exports[`Cascader > visible true 2`] = `
diff --git a/src/packages/cascader/__tests__/cascader.spec.tsx b/src/packages/cascader/__tests__/cascader.spec.tsx index 05b3cc107e..54a381532b 100644 --- a/src/packages/cascader/__tests__/cascader.spec.tsx +++ b/src/packages/cascader/__tests__/cascader.spec.tsx @@ -323,8 +323,8 @@ describe('Cascader', () => { }) it('select', async () => { - const change = jest.fn() - const pathChange = jest.fn() + const change = vi.fn() + const pathChange = vi.fn() const { container } = render( { }) it('select with lazy', async () => { - const lazyFunc = jest.fn() + const lazyFunc = vi.fn() const { container } = render( { }) it('change tab', async () => { - const change = jest.fn() - const pathChange = jest.fn() + const change = vi.fn() + const pathChange = vi.fn() const { container } = render( { }) it('ref', async () => { - const change = jest.fn() - const pathChange = jest.fn() + const change = vi.fn() + const pathChange = vi.fn() const ref = React.createRef() const { container } = render( <> diff --git a/src/packages/cascader/cascader.scss b/src/packages/cascader/cascader.scss index 7471a6ac14..880c83bd29 100644 --- a/src/packages/cascader/cascader.scss +++ b/src/packages/cascader/cascader.scss @@ -70,3 +70,10 @@ visibility: hidden; } } +[dir='rtl'] .nut-cascader, +.nut-rtl .nut-cascader { + .nut-icon-checklist { + margin-left: 0; + margin-right: $cascader-icon-checklist-marginLeft; + } +} diff --git a/src/packages/cascader/demo.taro.tsx b/src/packages/cascader/demo.taro.tsx index bb20b43c9d..4227dbb103 100644 --- a/src/packages/cascader/demo.taro.tsx +++ b/src/packages/cascader/demo.taro.tsx @@ -1,30 +1,16 @@ -import React, { useState, useEffect } from 'react' +import React from 'react' import Taro from '@tarojs/taro' import { useTranslate } from '@/sites/assets/locale/taro' -import { Cascader, Cell, ConfigProvider } from '@/packages/nutui.react.taro' import Header from '@/sites/components/header' +import Demo1 from './demos/taro/demo1' +import Demo2 from './demos/taro/demo2' +import Demo3 from './demos/taro/demo3' +import Demo4 from './demos/taro/demo4' +import Demo5 from './demos/taro/demo5' +import Demo6 from './demos/taro/demo6' -interface T { - basic: string - title1: string - title2: string - title3: string - title4: string - title5: string - addressTip: string - addressTip1: string -} - -const customTheme = { - nutuiCascaderItemHeight: '48px', - nutuiCascaderItemMargin: '0 10px', - nutuiCascaderItemPadding: '10px', - nutuiCascaderItemBorderBottom: '1px solid #F0F0F0', - nutuiTabsTitlesItemActiveColor: '#3768FA', - nutuiTabsTabLineColor: '#3768FA', -} const CascaderDemo = () => { - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { basic: '基础用法', title1: '自定义属性名称', @@ -32,8 +18,6 @@ const CascaderDemo = () => { title3: '部分数据动态加载', title4: '自动转换', title5: '自定义样式', - addressTip: '选择地址', - addressTip1: '请选择地址', }, 'zh-TW': { basic: '基础用法', @@ -42,465 +26,33 @@ const CascaderDemo = () => { title3: '部分數據動態加載', title4: '自動轉換', title5: '自定義样式', - addressTip: '選擇地址', - addressTip1: '請選擇地址', }, 'en-US': { basic: 'Basic Usage', - title1: 'Custom attribute name', - title2: 'Async loading', - title3: 'Async loading of partial data', - title4: 'Automatic data conversion', + title1: 'Custom Attribute Name', + title2: 'Async Loading', + title3: 'Async Loading Of Partial Data', + title4: 'Automatic Data Conversion', title5: 'Customize CSS', - addressTip: 'Select address', - addressTip1: 'Please select an address', }, }) - const [isVisibleDemo1, setIsVisibleDemo1] = useState(false) - const [isVisibleDemo2, setIsVisibleDemo2] = useState(false) - const [isVisibleDemo3, setIsVisibleDemo3] = useState(false) - const [isVisibleDemo4, setIsVisibleDemo4] = useState(false) - const [isVisibleDemo5, setIsVisibleDemo5] = useState(false) - const [isVisibleDemo6, setIsVisibleDemo6] = useState(false) - - const [text, setText] = useState({ - desc1: translated.addressTip1, - desc2: '福建福州台江区', - desc3: 'A0A12A23A32', - desc4: translated.addressTip1, - desc5: '广东省广州市', - desc6: translated.addressTip1, - }) - useEffect(() => { - setText({ - ...text, - desc1: translated.addressTip1, - desc4: translated.addressTip1, - desc6: translated.addressTip1, - }) - }, [translated]) - const [value1, setValue1] = useState([]) - const [value2, setValue2] = useState(['福建', '福州', '台江区']) - const [value3, setValue3] = useState(['A0', 'A12', 'A23', 'A32']) - const [value4, setValue4] = useState([]) - const [value5, setValue5] = useState(['广东省', '广州市']) - const [value6, setValue6] = useState([]) - const [optionsDemo1] = useState([ - { - value: '浙江', - text: '浙江', - children: [ - { - value: '杭州', - text: '杭州', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区', disabled: true }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '湖南', - text: '湖南', - disabled: true, - children: [ - { - value: '长沙', - text: '长沙', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区' }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '福建', - text: '福建', - children: [ - { - value: '福州', - text: '福州', - children: [ - { value: '鼓楼区', text: '鼓楼区' }, - { value: '台江区', text: '台江区' }, - ], - }, - ], - }, - { - value: '河北', - text: '河北', - children: [], - }, - { - value: '上海', - text: '上海', - children: [], - }, - { - value: '新疆', - text: '新疆', - children: [], - }, - { - value: '广东', - text: '广东', - children: [], - }, - { - value: '广西', - text: '广西', - children: [], - }, - { - value: '辽宁', - text: '辽宁', - children: [], - }, - { - value: '山西', - text: '山西', - children: [], - }, - { - value: '黑龙江', - text: '黑龙江', - children: [], - }, - ]) - const [optionsDemo2] = useState([ - { - value1: '浙江', - text1: '浙江', - items: [ - { - value1: '杭州', - text1: '杭州', - disabled: true, - items: [ - { value1: '西湖区', text1: '西湖区', disabled: true }, - { value1: '余杭区', text1: '余杭区' }, - ], - }, - { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, - ], - }, - ], - }, - { - value1: '湖南', - text1: '湖南', - disabled: true, - items: [ - { - value1: '长沙', - text1: '长沙', - disabled: true, - items: [ - { value1: '西湖区', text1: '西湖区' }, - { value1: '余杭区', text1: '余杭区' }, - ], - }, - { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, - ], - }, - ], - }, - { - value1: '福建', - text1: '福建', - items: [ - { - value1: '福州', - text1: '福州', - items: [ - { value1: '鼓楼区', text1: '鼓楼区' }, - { value1: '台江区', text1: '台江区' }, - ], - }, - ], - }, - ]) - const [optionsDemo4] = useState([ - { value: 'A0', text: 'A0' }, - { - value: 'B0', - text: 'B0', - children: [ - { value: 'B11', text: 'B11', leaf: true }, - { value: 'B12', text: 'B12' }, - ], - }, - { value: 'C0', text: 'C0' }, - ]) - const [optionsDemo5] = useState([ - { value: '北京', text: '北京', id: 1, pidd: null }, - { value: '朝阳区', text: '朝阳区', id: 11, pidd: 1 }, - { value: '亦庄', text: '亦庄', id: 111, pidd: 11 }, - { value: '广东省', text: '广东省', id: 2, pidd: null }, - { value: '广州市', text: '广州市', id: 21, pidd: 2 }, - ]) - const [convertConfigDemo5] = useState({ - topId: null, - idKey: 'id', - pidKey: 'pidd', - sortKey: '', - }) - - const change1 = (value: any, path: any) => { - console.log('onChange', value, path) - setText({ - ...text, - desc1: value, - }) - setValue1(value) - } - const change2 = (value: any, path: any) => { - console.log('change2', value, path) - setText({ - ...text, - desc2: value, - }) - setValue2(value) - } - const change3 = (value: any, path: any) => { - console.log('onChange', value, path) - setText({ - ...text, - desc3: value, - }) - setValue3(value) - } - const change4 = (value: any, path: any) => { - console.log('onChange', value, path) - setText({ - ...text, - desc4: value, - }) - setValue4(value) - } - const change5 = (value: any, path: any) => { - console.log('onChange', value, path) - setText({ - ...text, - desc5: value, - }) - setValue5(value) - } - const change6 = (value: any, path: any) => { - console.log('onChange', value, path) - setText({ - ...text, - desc6: value, - }) - setValue6(value) - } - const onPathChange = (value: any, path: any) => { - console.log('onPathChange', value, path) - } - - const lazyLoadDemo3 = (node: any, resolve: (children: any) => void) => { - setTimeout(() => { - if (node.root) { - resolve([ - { value: 'A0', text: 'A0' }, - { value: 'B0', text: 'B0' }, - { value: 'C0', text: 'C0' }, - ]) - } else { - const { value, level } = node - const text = value.substring(0, 1) - const value1 = `${text}${level + 1}1` - const value2 = `${text}${level + 1}2` - const value3 = `${text}${level + 1}3` - resolve([ - { value: value1, text: value1, leaf: level >= 6 }, - { value: value2, text: value2, leaf: level >= 6 }, - { value: value3, text: value3, leaf: level >= 6 }, - ]) - } - }, 2000) - } - - const lazyLoadDemo4 = (node: any, resolve: (children: any) => void) => { - setTimeout(() => { - const { value, level } = node - const text = value.substring(0, 1) - const value1 = `${text}${level + 1}1` - const value2 = `${text}${level + 1}2` - resolve([ - { value: value1, text: value1, leaf: level >= 2 }, - { value: value2, text: value2, leaf: level >= 1 }, - ]) - }, 500) - } - return ( <>

{translated.basic}

- { - setIsVisibleDemo1(true) - }} - /> - { - setIsVisibleDemo1(false) - }} - onChange={change1} - /> +

{translated.title1}

- { - setIsVisibleDemo2(true) - }} - /> - { - setIsVisibleDemo2(false) - }} - onChange={change2} - /> +

{translated.title2}

- { - setIsVisibleDemo3(true) - }} - /> - { - setIsVisibleDemo3(false) - }} - onChange={change3} - lazy - onLoad={lazyLoadDemo3} - /> +

{translated.title3}

- { - setIsVisibleDemo4(true) - }} - /> - { - setIsVisibleDemo4(false) - }} - onChange={change4} - lazy - onLoad={lazyLoadDemo4} - /> +

{translated.title4}

- { - setIsVisibleDemo5(true) - }} - /> - { - setIsVisibleDemo5(false) - }} - onChange={change5} - /> +

{translated.title5}

- { - setIsVisibleDemo6(true) - }} - /> - - { - setIsVisibleDemo6(false) - }} - onChange={change6} - onPathChange={onPathChange} - />{' '} - +
) diff --git a/src/packages/cascader/demo.tsx b/src/packages/cascader/demo.tsx index 683ec18bab..484170b715 100644 --- a/src/packages/cascader/demo.tsx +++ b/src/packages/cascader/demo.tsx @@ -1,30 +1,14 @@ -import React, { useState, useEffect } from 'react' +import React from 'react' import { useTranslate } from '../../sites/assets/locale' -import { Cascader } from './cascader' -import { Cell } from '@/packages/cell/cell' -import ConfigProvider from '@/packages/configprovider' +import Demo1 from './demos/h5/demo1' +import Demo2 from './demos/h5/demo2' +import Demo3 from './demos/h5/demo3' +import Demo4 from './demos/h5/demo4' +import Demo5 from './demos/h5/demo5' +import Demo6 from './demos/h5/demo6' -interface T { - basic: string - title1: string - title2: string - title3: string - title4: string - title5: string - addressTip: string - addressTip1: string -} - -const customTheme = { - nutuiCascaderItemHeight: '48px', - nutuiCascaderItemMargin: '0 10px', - nutuiCascaderItemPadding: '10px', - nutuiCascaderItemBorderBottom: '1px solid #F0F0F0', - nutuiTabsTitlesItemActiveColor: '#3768FA', - nutuiTabsTabLineColor: '#3768FA', -} const CascaderDemo = () => { - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { basic: '基础用法', title1: '自定义属性名称', @@ -32,8 +16,6 @@ const CascaderDemo = () => { title3: '部分数据动态加载', title4: '自动转换', title5: '自定义样式', - addressTip: '选择地址', - addressTip1: '请选择地址', }, 'zh-TW': { basic: '基础用法', @@ -42,424 +24,32 @@ const CascaderDemo = () => { title3: '部分數據動態加載', title4: '自動轉換', title5: '自定義样式', - addressTip: '選擇地址', - addressTip1: '請選擇地址', }, 'en-US': { basic: 'Basic Usage', - title1: 'Custom attribute name', - title2: 'Async loading', - title3: 'Async loading of partial data', - title4: 'Automatic data conversion', + title1: 'Custom Attribute Name', + title2: 'Async Loading', + title3: 'Async Loading Of Partial Data', + title4: 'Automatic Data Conversion', title5: 'Customize CSS', - addressTip: 'Select address', - addressTip1: 'Please select an address', }, }) - const [isVisibleDemo1, setIsVisibleDemo1] = useState(false) - const [isVisibleDemo2, setIsVisibleDemo2] = useState(false) - const [isVisibleDemo3, setIsVisibleDemo3] = useState(false) - const [isVisibleDemo4, setIsVisibleDemo4] = useState(false) - const [isVisibleDemo5, setIsVisibleDemo5] = useState(false) - const [isVisibleDemo6, setIsVisibleDemo6] = useState(false) - - const [text, setText] = useState({ - desc1: translated.addressTip1, - desc2: '福建福州台江区', - desc3: 'A0A12A23A32', - desc4: translated.addressTip1, - desc5: '广东省广州市', - desc6: translated.addressTip1, - }) - useEffect(() => { - setText({ - ...text, - desc1: translated.addressTip1, - desc4: translated.addressTip1, - desc6: translated.addressTip1, - }) - }, [translated]) - const [value1, setValue1] = useState([]) - const [value2, setValue2] = useState(['福建', '福州', '台江区']) - const [value3, setValue3] = useState(['A0', 'A12', 'A23', 'A32']) - const [value4, setValue4] = useState([]) - const [value5, setValue5] = useState(['广东省', '广州市']) - const [value6, setValue6] = useState([]) - const [optionsDemo1] = useState([ - { - value: '浙江', - text: '浙江', - children: [ - { - value: '杭州', - text: '杭州', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区', disabled: true }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '湖南', - text: '湖南', - disabled: true, - children: [ - { - value: '长沙', - text: '长沙', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区' }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '福建', - text: '福建', - children: [ - { - value: '福州', - text: '福州', - children: [ - { value: '鼓楼区', text: '鼓楼区' }, - { value: '台江区', text: '台江区' }, - ], - }, - ], - }, - ]) - const [optionsDemo2] = useState([ - { - value1: '浙江', - text1: '浙江', - items: [ - { - value1: '杭州', - text1: '杭州', - disabled: true, - items: [ - { value1: '西湖区', text1: '西湖区', disabled: true }, - { value1: '余杭区', text1: '余杭区' }, - ], - }, - { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, - ], - }, - ], - }, - { - value1: '湖南', - text1: '湖南', - disabled: true, - items: [ - { - value1: '长沙', - text1: '长沙', - disabled: true, - items: [ - { value1: '西湖区', text1: '西湖区' }, - { value1: '余杭区', text1: '余杭区' }, - ], - }, - { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, - ], - }, - ], - }, - { - value1: '福建', - text1: '福建', - items: [ - { - value1: '福州', - text1: '福州', - items: [ - { value1: '鼓楼区', text1: '鼓楼区' }, - { value1: '台江区', text1: '台江区' }, - ], - }, - ], - }, - ]) - const [optionsDemo4] = useState([ - { value: 'A0', text: 'A0' }, - { - value: 'B0', - text: 'B0', - children: [ - { value: 'B11', text: 'B11', leaf: true }, - { value: 'B12', text: 'B12' }, - ], - }, - { value: 'C0', text: 'C0' }, - ]) - const [optionsDemo5] = useState([ - { value: '北京', text: '北京', id: 1, pidd: null }, - { value: '朝阳区', text: '朝阳区', id: 11, pidd: 1 }, - { value: '亦庄', text: '亦庄', id: 111, pidd: 11 }, - { value: '广东省', text: '广东省', id: 2, pidd: null }, - { value: '广州市', text: '广州市', id: 21, pidd: 2 }, - ]) - const [convertConfigDemo5] = useState({ - topId: null, - idKey: 'id', - pidKey: 'pidd', - sortKey: '', - }) - - const change1 = (value: any, path: any) => { - console.log('change1', value, path) - setText({ - ...text, - desc1: value, - }) - setValue1(value) - } - const change2 = (value: any, path: any) => { - console.log('change2', value, path) - setText({ - ...text, - desc2: value, - }) - setValue2(value) - } - const change3 = (value: any, path: any) => { - console.log('onChange', value, path) - setText({ - ...text, - desc3: value, - }) - setValue3(value) - } - const change4 = (value: any, path: any) => { - console.log('onChange', value, path) - setText({ - ...text, - desc4: value, - }) - setValue4(value) - } - const change5 = (value: any, path: any) => { - console.log('onChange', value, path) - setText({ - ...text, - desc5: value, - }) - setValue5(value) - } - const change6 = (value: any, path: any) => { - console.log('onChange', value, path) - setText({ - ...text, - desc6: value, - }) - setValue6(value) - } - const onPathChange = (value: any, path: any) => { - console.log('onPathChange', value, path) - } - - const lazyLoadDemo3 = (node: any, resolve: (children: any) => void) => { - setTimeout(() => { - if (node.root) { - resolve([ - { value: 'A0', text: 'A0' }, - { value: 'B0', text: 'B0' }, - { value: 'C0', text: 'C0' }, - ]) - } else { - const { value, level } = node - const text = value.substring(0, 1) - const value1 = `${text}${level + 1}1` - const value2 = `${text}${level + 1}2` - const value3 = `${text}${level + 1}3` - resolve([ - { value: value1, text: value1, leaf: level >= 6 }, - { value: value2, text: value2, leaf: level >= 6 }, - { value: value3, text: value3, leaf: level >= 6 }, - ]) - } - }, 2000) - } - - const lazyLoadDemo4 = (node: any, resolve: (children: any) => void) => { - setTimeout(() => { - const { value, level } = node - const text = value.substring(0, 1) - const value1 = `${text}${level + 1}1` - const value2 = `${text}${level + 1}2` - resolve([ - { value: value1, text: value1, leaf: level >= 2 }, - { value: value2, text: value2, leaf: level >= 1 }, - ]) - }, 500) - } - return ( <>

{translated.basic}

- { - setIsVisibleDemo1(true) - }} - /> - { - setIsVisibleDemo1(false) - }} - onChange={change1} - /> +

{translated.title1}

- { - setIsVisibleDemo2(true) - }} - /> - { - setIsVisibleDemo2(false) - }} - onChange={change2} - /> +

{translated.title2}

- { - setIsVisibleDemo3(true) - }} - /> - { - setIsVisibleDemo3(false) - }} - onChange={change3} - lazy - onLoad={lazyLoadDemo3} - /> +

{translated.title3}

- { - setIsVisibleDemo4(true) - }} - /> - { - setIsVisibleDemo4(false) - }} - onChange={change4} - lazy - onLoad={lazyLoadDemo4} - /> +

{translated.title4}

- { - setIsVisibleDemo5(true) - }} - /> - { - setIsVisibleDemo5(false) - }} - onChange={change5} - /> +

{translated.title5}

- { - setIsVisibleDemo6(true) - }} - /> - - { - setIsVisibleDemo6(false) - }} - onChange={change6} - onPathChange={onPathChange} - />{' '} - +
) diff --git a/src/packages/cascader/demos/h5/demo1.tsx b/src/packages/cascader/demos/h5/demo1.tsx new file mode 100644 index 0000000000..57e4d56809 --- /dev/null +++ b/src/packages/cascader/demos/h5/demo1.tsx @@ -0,0 +1,100 @@ +import React, { useState } from 'react' +import { Cascader, Cell } from '@nutui/nutui-react' + +const Demo1 = () => { + const [isVisibleDemo1, setIsVisibleDemo1] = useState(false) + const [value1, setValue1] = useState([]) + const [optionsDemo1] = useState([ + { + value: '浙江', + text: '浙江', + children: [ + { + value: '杭州', + text: '杭州', + disabled: true, + children: [ + { value: '西湖区', text: '西湖区', disabled: true }, + { value: '余杭区', text: '余杭区' }, + ], + }, + { + value: '温州', + text: '温州', + children: [ + { value: '鹿城区', text: '鹿城区' }, + { value: '瓯海区', text: '瓯海区' }, + ], + }, + ], + }, + { + value: '湖南', + text: '湖南', + disabled: true, + children: [ + { + value: '长沙', + text: '长沙', + disabled: true, + children: [ + { value: '西湖区', text: '西湖区' }, + { value: '余杭区', text: '余杭区' }, + ], + }, + { + value: '温州', + text: '温州', + children: [ + { value: '鹿城区', text: '鹿城区' }, + { value: '瓯海区', text: '瓯海区' }, + ], + }, + ], + }, + { + value: '福建', + text: '福建', + children: [ + { + value: '福州', + text: '福州', + children: [ + { value: '鼓楼区', text: '鼓楼区' }, + { value: '台江区', text: '台江区' }, + ], + }, + ], + }, + ]) + const change1 = (value: any, path: any) => { + console.log('onChange', value, path) + setValue1(value) + } + return ( + <> + { + setIsVisibleDemo1(true) + }} + /> + { + setIsVisibleDemo1(false) + }} + onChange={change1} + /> + + ) +} +export default Demo1 diff --git a/src/packages/cascader/demos/h5/demo2.tsx b/src/packages/cascader/demos/h5/demo2.tsx new file mode 100644 index 0000000000..8bee8e809c --- /dev/null +++ b/src/packages/cascader/demos/h5/demo2.tsx @@ -0,0 +1,103 @@ +import React, { useState } from 'react' +import { Cascader, Cell } from '@nutui/nutui-react' + +const Demo2 = () => { + const [isVisibleDemo2, setIsVisibleDemo2] = useState(false) + const [value2, setValue2] = useState(['福建', '福州', '台江区']) + const [optionsDemo2] = useState([ + { + value1: '浙江', + text1: '浙江', + items: [ + { + value1: '杭州', + text1: '杭州', + disabled: true, + items: [ + { value1: '西湖区', text1: '西湖区', disabled: true }, + { value1: '余杭区', text1: '余杭区' }, + ], + }, + { + value1: '温州', + text1: '温州', + items: [ + { value1: '鹿城区', text1: '鹿城区' }, + { value1: '瓯海区', text1: '瓯海区' }, + ], + }, + ], + }, + { + value1: '湖南', + text1: '湖南', + disabled: true, + items: [ + { + value1: '长沙', + text1: '长沙', + disabled: true, + items: [ + { value1: '西湖区', text1: '西湖区' }, + { value1: '余杭区', text1: '余杭区' }, + ], + }, + { + value1: '温州', + text1: '温州', + items: [ + { value1: '鹿城区', text1: '鹿城区' }, + { value1: '瓯海区', text1: '瓯海区' }, + ], + }, + ], + }, + { + value1: '福建', + text1: '福建', + items: [ + { + value1: '福州', + text1: '福州', + items: [ + { value1: '鼓楼区', text1: '鼓楼区' }, + { value1: '台江区', text1: '台江区' }, + ], + }, + ], + }, + ]) + const change2 = (value: any, path: any) => { + console.log('onChange', value, path) + setValue2(value) + } + + return ( + <> + { + setIsVisibleDemo2(true) + }} + /> + { + setIsVisibleDemo2(false) + }} + onChange={change2} + /> + + ) +} +export default Demo2 diff --git a/src/packages/cascader/demos/h5/demo3.tsx b/src/packages/cascader/demos/h5/demo3.tsx new file mode 100644 index 0000000000..48387206e4 --- /dev/null +++ b/src/packages/cascader/demos/h5/demo3.tsx @@ -0,0 +1,59 @@ +import React, { useState } from 'react' +import { Cascader, Cell } from '@nutui/nutui-react' + +const Demo3 = () => { + const [isVisibleDemo3, setIsVisibleDemo3] = useState(false) + const [value3, setValue3] = useState(['A0', 'A12', 'A23', 'A32']) + + const lazyLoadDemo3 = (node: any, resolve: (children: any) => void) => { + setTimeout(() => { + if (node.root) { + resolve([ + { value: 'A0', text: 'A0' }, + { value: 'B0', text: 'B0' }, + { value: 'C0', text: 'C0' }, + ]) + } else { + const { value, level } = node + const text = value.substring(0, 1) + const value1 = `${text}${level + 1}1` + const value2 = `${text}${level + 1}2` + const value3 = `${text}${level + 1}3` + resolve([ + { value: value1, text: value1, leaf: level >= 6 }, + { value: value2, text: value2, leaf: level >= 6 }, + { value: value3, text: value3, leaf: level >= 6 }, + ]) + } + }, 2000) + } + const change3 = (value: any, path: any) => { + console.log('onChange', value, path) + setValue3(value) + } + + return ( + <> + { + setIsVisibleDemo3(true) + }} + /> + { + setIsVisibleDemo3(false) + }} + onChange={change3} + lazy + onLoad={lazyLoadDemo3} + /> + + ) +} +export default Demo3 diff --git a/src/packages/cascader/demos/h5/demo4.tsx b/src/packages/cascader/demos/h5/demo4.tsx new file mode 100644 index 0000000000..1cfdce0e5e --- /dev/null +++ b/src/packages/cascader/demos/h5/demo4.tsx @@ -0,0 +1,62 @@ +import React, { useState } from 'react' +import { Cascader, Cell } from '@nutui/nutui-react' + +const Demo4 = () => { + const [isVisibleDemo4, setIsVisibleDemo4] = useState(false) + const [value4, setValue4] = useState([]) + const [optionsDemo4] = useState([ + { value: 'A0', text: 'A0' }, + { + value: 'B0', + text: 'B0', + children: [ + { value: 'B11', text: 'B11', leaf: true }, + { value: 'B12', text: 'B12' }, + ], + }, + { value: 'C0', text: 'C0' }, + ]) + + const lazyLoadDemo4 = (node: any, resolve: (children: any) => void) => { + setTimeout(() => { + const { value, level } = node + const text = value.substring(0, 1) + const value1 = `${text}${level + 1}1` + const value2 = `${text}${level + 1}2` + resolve([ + { value: value1, text: value1, leaf: level >= 2 }, + { value: value2, text: value2, leaf: level >= 1 }, + ]) + }, 500) + } + const change4 = (value: any, path: any) => { + console.log('onChange', value, path) + setValue4(value) + } + + return ( + <> + { + setIsVisibleDemo4(true) + }} + /> + { + setIsVisibleDemo4(false) + }} + onChange={change4} + lazy + onLoad={lazyLoadDemo4} + /> + + ) +} +export default Demo4 diff --git a/src/packages/cascader/demos/h5/demo5.tsx b/src/packages/cascader/demos/h5/demo5.tsx new file mode 100644 index 0000000000..53e3112adf --- /dev/null +++ b/src/packages/cascader/demos/h5/demo5.tsx @@ -0,0 +1,49 @@ +import React, { useState } from 'react' +import { Cascader, Cell } from '@nutui/nutui-react' + +const Demo5 = () => { + const [isVisibleDemo5, setIsVisibleDemo5] = useState(false) + const [value5, setValue5] = useState(['广东省', '广州市']) + const [optionsDemo5] = useState([ + { value: '北京', text: '北京', id: 1, pidd: null }, + { value: '朝阳区', text: '朝阳区', id: 11, pidd: 1 }, + { value: '亦庄', text: '亦庄', id: 111, pidd: 11 }, + { value: '广东省', text: '广东省', id: 2, pidd: null }, + { value: '广州市', text: '广州市', id: 21, pidd: 2 }, + ]) + const [convertConfigDemo5, setConvertConfigDemo5] = useState({ + topId: null, + idKey: 'id', + pidKey: 'pidd', + sortKey: '', + }) + const change5 = (value: any, path: any) => { + console.log('onChange', value, path) + setValue5(value) + } + + return ( + <> + { + setIsVisibleDemo5(true) + }} + /> + { + setIsVisibleDemo5(false) + }} + onChange={change5} + /> + + ) +} +export default Demo5 diff --git a/src/packages/cascader/demos/h5/demo6.tsx b/src/packages/cascader/demos/h5/demo6.tsx new file mode 100644 index 0000000000..b7c21c3b5a --- /dev/null +++ b/src/packages/cascader/demos/h5/demo6.tsx @@ -0,0 +1,115 @@ +import React, { useState } from 'react' +import { Cell, Cascader, ConfigProvider } from '@nutui/nutui-react' + +const customTheme = { + nutuiCascaderItemHeight: '48px', + nutuiCascaderItemMargin: '0 10px', + nutuiCascaderItemPadding: '10px', + nutuiCascaderItemBorderBottom: '1px solid #F0F0F0', + nutuiTabsTitlesItemActiveColor: '#3768FA', + nutuiTabsTabLineColor: '#3768FA', +} + +const Demo6 = () => { + const [isVisibleDemo6, setIsVisibleDemo6] = useState(false) + const [value6, setValue6] = useState([]) + const [optionsDemo6] = useState([ + { + value: '浙江', + text: '浙江', + children: [ + { + value: '杭州', + text: '杭州', + disabled: true, + children: [ + { value: '西湖区', text: '西湖区', disabled: true }, + { value: '余杭区', text: '余杭区' }, + ], + }, + { + value: '温州', + text: '温州', + children: [ + { value: '鹿城区', text: '鹿城区' }, + { value: '瓯海区', text: '瓯海区' }, + ], + }, + ], + }, + { + value: '湖南', + text: '湖南', + disabled: true, + children: [ + { + value: '长沙', + text: '长沙', + disabled: true, + children: [ + { value: '西湖区', text: '西湖区' }, + { value: '余杭区', text: '余杭区' }, + ], + }, + { + value: '温州', + text: '温州', + children: [ + { value: '鹿城区', text: '鹿城区' }, + { value: '瓯海区', text: '瓯海区' }, + ], + }, + ], + }, + { + value: '福建', + text: '福建', + children: [ + { + value: '福州', + text: '福州', + children: [ + { value: '鼓楼区', text: '鼓楼区' }, + { value: '台江区', text: '台江区' }, + ], + }, + ], + }, + ]) + const change6 = (value: any, path: any) => { + console.log('onChange', value, path) + setValue6(value) + } + const onPathChange = (value: any, path: any) => { + console.log('onPathChange', value, path) + } + + return ( + <> + { + setIsVisibleDemo6(true) + }} + /> + + { + setIsVisibleDemo6(false) + }} + onChange={change6} + onPathChange={onPathChange} + />{' '} + + + ) +} +export default Demo6 diff --git a/src/packages/cascader/demos/taro/demo1.tsx b/src/packages/cascader/demos/taro/demo1.tsx new file mode 100644 index 0000000000..cac7dd58a7 --- /dev/null +++ b/src/packages/cascader/demos/taro/demo1.tsx @@ -0,0 +1,101 @@ +import React, { useState } from 'react' +import { Cascader, Cell } from '@nutui/nutui-react-taro' + +const Demo1 = () => { + const [isVisibleDemo1, setIsVisibleDemo1] = useState(false) + const [value1, setValue1] = useState([]) + const [optionsDemo1] = useState([ + { + value: '浙江', + text: '浙江', + children: [ + { + value: '杭州', + text: '杭州', + disabled: true, + children: [ + { value: '西湖区', text: '西湖区', disabled: true }, + { value: '余杭区', text: '余杭区' }, + ], + }, + { + value: '温州', + text: '温州', + children: [ + { value: '鹿城区', text: '鹿城区' }, + { value: '瓯海区', text: '瓯海区' }, + ], + }, + ], + }, + { + value: '湖南', + text: '湖南', + disabled: true, + children: [ + { + value: '长沙', + text: '长沙', + disabled: true, + children: [ + { value: '西湖区', text: '西湖区' }, + { value: '余杭区', text: '余杭区' }, + ], + }, + { + value: '温州', + text: '温州', + children: [ + { value: '鹿城区', text: '鹿城区' }, + { value: '瓯海区', text: '瓯海区' }, + ], + }, + ], + }, + { + value: '福建', + text: '福建', + children: [ + { + value: '福州', + text: '福州', + children: [ + { value: '鼓楼区', text: '鼓楼区' }, + { value: '台江区', text: '台江区' }, + ], + }, + ], + }, + ]) + const change1 = (value: any, path: any) => { + console.log('onChange', value, path) + setValue1(value) + } + + return ( + <> + { + setIsVisibleDemo1(true) + }} + /> + { + setIsVisibleDemo1(false) + }} + onChange={change1} + /> + + ) +} +export default Demo1 diff --git a/src/packages/cascader/demos/taro/demo2.tsx b/src/packages/cascader/demos/taro/demo2.tsx new file mode 100644 index 0000000000..1dfd4839cd --- /dev/null +++ b/src/packages/cascader/demos/taro/demo2.tsx @@ -0,0 +1,103 @@ +import React, { useState } from 'react' +import { Cascader, Cell } from '@nutui/nutui-react-taro' + +const Demo2 = () => { + const [isVisibleDemo2, setIsVisibleDemo2] = useState(false) + const [value2, setValue2] = useState(['福建', '福州', '台江区']) + const [optionsDemo2] = useState([ + { + value1: '浙江', + text1: '浙江', + items: [ + { + value1: '杭州', + text1: '杭州', + disabled: true, + items: [ + { value1: '西湖区', text1: '西湖区', disabled: true }, + { value1: '余杭区', text1: '余杭区' }, + ], + }, + { + value1: '温州', + text1: '温州', + items: [ + { value1: '鹿城区', text1: '鹿城区' }, + { value1: '瓯海区', text1: '瓯海区' }, + ], + }, + ], + }, + { + value1: '湖南', + text1: '湖南', + disabled: true, + items: [ + { + value1: '长沙', + text1: '长沙', + disabled: true, + items: [ + { value1: '西湖区', text1: '西湖区' }, + { value1: '余杭区', text1: '余杭区' }, + ], + }, + { + value1: '温州', + text1: '温州', + items: [ + { value1: '鹿城区', text1: '鹿城区' }, + { value1: '瓯海区', text1: '瓯海区' }, + ], + }, + ], + }, + { + value1: '福建', + text1: '福建', + items: [ + { + value1: '福州', + text1: '福州', + items: [ + { value1: '鼓楼区', text1: '鼓楼区' }, + { value1: '台江区', text1: '台江区' }, + ], + }, + ], + }, + ]) + const change2 = (value: any, path: any) => { + console.log('onChange', value, path) + setValue2(value) + } + + return ( + <> + { + setIsVisibleDemo2(true) + }} + /> + { + setIsVisibleDemo2(false) + }} + onChange={change2} + /> + + ) +} +export default Demo2 diff --git a/src/packages/cascader/demos/taro/demo3.tsx b/src/packages/cascader/demos/taro/demo3.tsx new file mode 100644 index 0000000000..b087ba3247 --- /dev/null +++ b/src/packages/cascader/demos/taro/demo3.tsx @@ -0,0 +1,58 @@ +import React, { useState } from 'react' +import { Cascader, Cell } from '@nutui/nutui-react-taro' + +const Demo3 = () => { + const [isVisibleDemo3, setIsVisibleDemo3] = useState(false) + const [value3, setValue3] = useState(['A0', 'A12', 'A23', 'A32']) + + const lazyLoadDemo3 = (node: any, resolve: (children: any) => void) => { + setTimeout(() => { + if (node.root) { + resolve([ + { value: 'A0', text: 'A0' }, + { value: 'B0', text: 'B0' }, + { value: 'C0', text: 'C0' }, + ]) + } else { + const { value, level } = node + const text = value.substring(0, 1) + const value1 = `${text}${level + 1}1` + const value2 = `${text}${level + 1}2` + const value3 = `${text}${level + 1}3` + resolve([ + { value: value1, text: value1, leaf: level >= 6 }, + { value: value2, text: value2, leaf: level >= 6 }, + { value: value3, text: value3, leaf: level >= 6 }, + ]) + } + }, 2000) + } + const change3 = (value: any, path: any) => { + console.log('onChange', value, path) + setValue3(value) + } + return ( + <> + { + setIsVisibleDemo3(true) + }} + /> + { + setIsVisibleDemo3(false) + }} + onChange={change3} + lazy + onLoad={lazyLoadDemo3} + /> + + ) +} +export default Demo3 diff --git a/src/packages/cascader/demos/taro/demo4.tsx b/src/packages/cascader/demos/taro/demo4.tsx new file mode 100644 index 0000000000..a22c6c7aeb --- /dev/null +++ b/src/packages/cascader/demos/taro/demo4.tsx @@ -0,0 +1,62 @@ +import React, { useState } from 'react' +import { Cascader, Cell } from '@nutui/nutui-react-taro' + +const Demo4 = () => { + const [isVisibleDemo4, setIsVisibleDemo4] = useState(false) + const [value4, setValue4] = useState([]) + const [optionsDemo4] = useState([ + { value: 'A0', text: 'A0' }, + { + value: 'B0', + text: 'B0', + children: [ + { value: 'B11', text: 'B11', leaf: true }, + { value: 'B12', text: 'B12' }, + ], + }, + { value: 'C0', text: 'C0' }, + ]) + + const lazyLoadDemo4 = (node: any, resolve: (children: any) => void) => { + setTimeout(() => { + const { value, level } = node + const text = value.substring(0, 1) + const value1 = `${text}${level + 1}1` + const value2 = `${text}${level + 1}2` + resolve([ + { value: value1, text: value1, leaf: level >= 2 }, + { value: value2, text: value2, leaf: level >= 1 }, + ]) + }, 500) + } + const change4 = (value: any, path: any) => { + console.log('onChange', value, path) + setValue4(value) + } + + return ( + <> + { + setIsVisibleDemo4(true) + }} + /> + { + setIsVisibleDemo4(false) + }} + onChange={change4} + lazy + onLoad={lazyLoadDemo4} + /> + + ) +} +export default Demo4 diff --git a/src/packages/cascader/demos/taro/demo5.tsx b/src/packages/cascader/demos/taro/demo5.tsx new file mode 100644 index 0000000000..0dff010fe8 --- /dev/null +++ b/src/packages/cascader/demos/taro/demo5.tsx @@ -0,0 +1,49 @@ +import React, { useState } from 'react' +import { Cascader, Cell } from '@nutui/nutui-react-taro' + +const Demo5 = () => { + const [isVisibleDemo5, setIsVisibleDemo5] = useState(false) + const [value5, setValue5] = useState(['广东省', '广州市']) + const [optionsDemo5] = useState([ + { value: '北京', text: '北京', id: 1, pidd: null }, + { value: '朝阳区', text: '朝阳区', id: 11, pidd: 1 }, + { value: '亦庄', text: '亦庄', id: 111, pidd: 11 }, + { value: '广东省', text: '广东省', id: 2, pidd: null }, + { value: '广州市', text: '广州市', id: 21, pidd: 2 }, + ]) + const [convertConfigDemo5, setConvertConfigDemo5] = useState({ + topId: null, + idKey: 'id', + pidKey: 'pidd', + sortKey: '', + }) + const change5 = (value: any, path: any) => { + console.log('onChange', value, path) + setValue5(value) + } + + return ( + <> + { + setIsVisibleDemo5(true) + }} + /> + { + setIsVisibleDemo5(false) + }} + onChange={change5} + /> + + ) +} +export default Demo5 diff --git a/src/packages/cascader/demos/taro/demo6.tsx b/src/packages/cascader/demos/taro/demo6.tsx new file mode 100644 index 0000000000..20c66f81bb --- /dev/null +++ b/src/packages/cascader/demos/taro/demo6.tsx @@ -0,0 +1,115 @@ +import React, { useState } from 'react' +import { Cell, Cascader, ConfigProvider } from '@nutui/nutui-react-taro' + +const customTheme = { + nutuiCascaderItemHeight: '48px', + nutuiCascaderItemMargin: '0 10px', + nutuiCascaderItemPadding: '10px', + nutuiCascaderItemBorderBottom: '1px solid #F0F0F0', + nutuiTabsTitlesItemActiveColor: '#3768FA', + nutuiTabsTabLineColor: '#3768FA', +} + +const Demo6 = () => { + const [isVisibleDemo6, setIsVisibleDemo6] = useState(false) + const [value6, setValue6] = useState([]) + const [optionsDemo6] = useState([ + { + value: '浙江', + text: '浙江', + children: [ + { + value: '杭州', + text: '杭州', + disabled: true, + children: [ + { value: '西湖区', text: '西湖区', disabled: true }, + { value: '余杭区', text: '余杭区' }, + ], + }, + { + value: '温州', + text: '温州', + children: [ + { value: '鹿城区', text: '鹿城区' }, + { value: '瓯海区', text: '瓯海区' }, + ], + }, + ], + }, + { + value: '湖南', + text: '湖南', + disabled: true, + children: [ + { + value: '长沙', + text: '长沙', + disabled: true, + children: [ + { value: '西湖区', text: '西湖区' }, + { value: '余杭区', text: '余杭区' }, + ], + }, + { + value: '温州', + text: '温州', + children: [ + { value: '鹿城区', text: '鹿城区' }, + { value: '瓯海区', text: '瓯海区' }, + ], + }, + ], + }, + { + value: '福建', + text: '福建', + children: [ + { + value: '福州', + text: '福州', + children: [ + { value: '鼓楼区', text: '鼓楼区' }, + { value: '台江区', text: '台江区' }, + ], + }, + ], + }, + ]) + const change6 = (value: any, path: any) => { + console.log('onChange', value, path) + setValue6(value) + } + const onPathChange = (value: any, path: any) => { + console.log('onPathChange', value, path) + } + + return ( + <> + { + setIsVisibleDemo6(true) + }} + /> + + { + setIsVisibleDemo6(false) + }} + onChange={change6} + onPathChange={onPathChange} + />{' '} + + + ) +} +export default Demo6 diff --git a/src/packages/cascader/doc.en-US.md b/src/packages/cascader/doc.en-US.md index 830ac4cb1a..f9cefb2146 100644 --- a/src/packages/cascader/doc.en-US.md +++ b/src/packages/cascader/doc.en-US.md @@ -18,111 +18,7 @@ Pass in the `options` list :::demo -```jsx -import React,{useState} from "react"; -import { Cell, Cascader } from '@nutui/nutui-react'; - -const App = () => { - const [isVisibleDemo1, setIsVisibleDemo1] = useState(false) - const [value1, setValue1] = useState([]) - const [optionsDemo1, setOptionsDemo1] = useState([ - { - value: '浙江', - text: '浙江', - children: [ - { - value: '杭州', - text: '杭州', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区', disabled: true }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '湖南', - text: '湖南', - disabled: true, - children: [ - { - value: '长沙', - text: '长沙', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区' }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '福建', - text: '福建', - children: [ - { - value: '福州', - text: '福州', - children: [ - { value: '鼓楼区', text: '鼓楼区' }, - { value: '台江区', text: '台江区' }, - ], - }, - ], - }, - ]) - const change1 = (value: any, path: any) => { - console.log('onChange', value, path) - setValue1(value) - } - const onPathChange = (value: any, path: any) => { - console.log('onPathChange', value, path) - } - - return ( - <> - { - setIsVisibleDemo1(true) - }} - /> - {setIsVisibleDemo1(false)}} - onChange={change1} - onPathChange={onPathChange} - /> - - ); -}; -export default App; -``` + ::: @@ -132,113 +28,7 @@ use `optionKey` Specify the property name. :::demo -```jsx -import React,{useState} from "react"; -import { Cell, Cascader } from '@nutui/nutui-react'; - -const App = () => { - const [isVisibleDemo2, setIsVisibleDemo2] = useState(false) - const [value2, setValue2] = useState(['福建', '福州', '台江区']) - const [optionsDemo2, setOptionsDemo2] = useState([ - { - value1: '浙江', - text1: '浙江', - items: [ - { - value1: '杭州', - text1: '杭州', - disabled: true, - items: [ - { value1: '西湖区', text1: '西湖区', disabled: true }, - { value1: '余杭区', text1: '余杭区' }, - ], - }, - { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, - ], - }, - ], - }, - { - value1: '湖南', - text1: '湖南', - disabled: true, - items: [ - { - value1: '长沙', - text1: '长沙', - disabled: true, - items: [ - { value1: '西湖区', text1: '西湖区' }, - { value1: '余杭区', text1: '余杭区' }, - ], - }, - { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, - ], - }, - ], - }, - { - value1: '福建', - text1: '福建', - items: [ - { - value1: '福州', - text1: '福州', - items: [ - { value1: '鼓楼区', text1: '鼓楼区' }, - { value1: '台江区', text1: '台江区' }, - ], - }, - ], - }, - ]) - const change2 = (value, path) => { - console.log('onChange', value, path) - setValue2(value) - } - const onPathChange = (value, path) => { - console.log('onPathChange', value, path) - } - - return ( - <> - { - setIsVisibleDemo2(true) - }} - /> - {setIsVisibleDemo2(false)}} - onChange={change2} - onPathChange={onPathChange} - /> - - ); -}; -export default App; -``` + ::: @@ -248,68 +38,7 @@ Use `lazy` to identify whether data needs to be obtained dynamically. At this ti :::demo -```jsx -import React,{useState} from "react"; -import { Cell, Cascader } from '@nutui/nutui-react'; - -const App = () => { - const [isVisibleDemo3, setIsVisibleDemo3] = useState(false) - const [value3, setValue3] = useState(['A0', 'A12', 'A23', 'A32']) - - const lazyLoadDemo3 = (node: any, resolve: (children: any) => void) => { - setTimeout(() => { - if (node.root) { - resolve([ - { value: 'A0', text: 'A0' }, - { value: 'B0', text: 'B0' }, - { value: 'C0', text: 'C0' } - ]); - } else { - const { value, level } = node; - const text = value.substring(0, 1); - const value1 = `${text}${level + 1}1`; - const value2 = `${text}${level + 1}2`; - const value3 = `${text}${level + 1}3`; - resolve([ - { value: value1, text: value1, leaf: level >= 6 }, - { value: value2, text: value2, leaf: level >= 6 }, - { value: value3, text: value3, leaf: level >= 6 } - ]); - } - }, 2000); - } - const change3 = (value, path) => { - console.log('onChange', value, path) - setValue3(value) - } - const onPathChange = (value, path) => { - console.log('onPathChange', value, path) - } - return ( - <> - { - setIsVisibleDemo3(true) - }} - /> - {setIsVisibleDemo3(false)}} - onChange={change3} - onPathChange={onPathChange} - lazy - onLoad={lazyLoadDemo3} - /> - - ); -}; -export default App; -``` + ::: @@ -317,72 +46,7 @@ export default App; :::demo -```jsx -import React,{useState} from "react"; -import { Cell, Cascader } from '@nutui/nutui-react'; - -const App = () => { - const [isVisibleDemo4, setIsVisibleDemo4] = useState(false) - const [value4, setValue4] = useState([]) - const [optionsDemo4, setOptionsDemo4] = useState([ - { value: 'A0', text: 'A0' }, - { - value: 'B0', - text: 'B0', - children: [ - { value: 'B11', text: 'B11', leaf: true }, - { value: 'B12', text: 'B12' } - ] - }, - { value: 'C0', text: 'C0' } - ]) - - const lazyLoadDemo4 = (node: any, resolve: (children: any) => void) => { - setTimeout(() => { - const { value, level } = node; - const text = value.substring(0, 1); - const value1 = `${text}${level + 1}1`; - const value2 = `${text}${level + 1}2`; - resolve([ - { value: value1, text: value1, leaf: level >= 2 }, - { value: value2, text: value2, leaf: level >= 1 } - ]); - }, 500); - } - const change4 = (value, path) => { - console.log('onChange', value, path) - setValue4(value) - } - const onPathChange = (value, path) => { - console.log('onPathChange', value, path) - } - - return ( - <> - { - setIsVisibleDemo4(true) - }} - /> - {setIsVisibleDemo4(false)}} - onChange={change4} - onPathChange={onPathChange} - lazy - onLoad={lazyLoadDemo4} - /> - - ); -}; -export default App; -``` + ::: @@ -392,59 +56,7 @@ If your data is a flat structure that can be converted into a tree structure, yo :::demo -```jsx -import React,{useState} from "react"; -import { Cell, Cascader } from '@nutui/nutui-react'; - -const App = () => { - const [isVisibleDemo5, setIsVisibleDemo5] = useState(false) - const [value5, setValue5] = useState(['广东省', '广州市']) - const [optionsDemo5, setOptionsDemo5] = useState([ - { value: '北京', text: '北京', id: 1, pidd: null }, - { value: '朝阳区', text: '朝阳区', id: 11, pidd: 1 }, - { value: '亦庄', text: '亦庄', id: 111, pidd: 11 }, - { value: '广东省', text: '广东省', id: 2, pidd: null }, - { value: '广州市', text: '广州市', id: 21, pidd: 2 } - ]) - const [convertConfigDemo5, setConvertConfigDemo5] = useState({ - topId: null, - idKey: 'id', - pidKey: 'pidd', - sortKey: '' - }) - const change5 = (value, path) => { - console.log('onChange', value, path) - setValue5(value) - } - const onPathChange = (value, path) => { - console.log('onPathChange', value, path) - } - - return ( - <> - { - setIsVisibleDemo5(true) - }} - /> - {setIsVisibleDemo5(false)}} - onChange={change5} - onPathChange={onPathChange} - /> - - ); -}; -export default App; -``` + ::: @@ -454,121 +66,7 @@ Use configprovider to set custom CSS :::demo -```jsx -import React,{useState} from "react"; -import { Cell, Cascader, ConfigProvider} from '@nutui/nutui-react'; - -const customTheme = { - nutuiCascaderItemHeight: '48px', - nutuiCascaderItemMargin: '0 10px', - nutuiCascaderItemPadding: '10px', - nutuiCascaderItemBorderBottom: '1px solid #F0F0F0', - nutuiTabsTitlesItemActiveColor: '#3768FA', - nutuiTabsTabLineColor: '#3768FA', -} - -const App = () => { - const [isVisibleDemo6, setIsVisibleDemo6] = useState(false) - const [value6, setValue6] = useState([]) - const [optionsDemo6, setOptionsDemo6] = useState([ - { - value: '浙江', - text: '浙江', - children: [ - { - value: '杭州', - text: '杭州', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区', disabled: true }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '湖南', - text: '湖南', - disabled: true, - children: [ - { - value: '长沙', - text: '长沙', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区' }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '福建', - text: '福建', - children: [ - { - value: '福州', - text: '福州', - children: [ - { value: '鼓楼区', text: '鼓楼区' }, - { value: '台江区', text: '台江区' }, - ], - }, - ], - }, - ]) - const change6 = (value: any, path: any) => { - console.log('onChange', value, path) - setValue6(value) - } - const onPathChange = (value: any, path: any) => { - console.log('onPathChange', value, path) - } - - return ( - <> - { - setIsVisibleDemo6(true) - }} - /> - - {setIsVisibleDemo1(false)}} - onChange={change6} - onPathChange={onPathChange} - /> - - - ); -}; -export default App; -``` + ::: diff --git a/src/packages/cascader/doc.md b/src/packages/cascader/doc.md index 3a4c84fd9c..e622a3699a 100644 --- a/src/packages/cascader/doc.md +++ b/src/packages/cascader/doc.md @@ -18,111 +18,7 @@ import { Cascader } from '@nutui/nutui-react'; :::demo -```jsx -import React,{useState} from "react"; -import { Cascader, Cell } from '@nutui/nutui-react'; - -const App = () => { - const [isVisibleDemo1, setIsVisibleDemo1] = useState(false) - const [value1, setValue1] = useState([]) - const [optionsDemo1, setOptionsDemo1] = useState([ - { - value: '浙江', - text: '浙江', - children: [ - { - value: '杭州', - text: '杭州', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区', disabled: true }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '湖南', - text: '湖南', - disabled: true, - children: [ - { - value: '长沙', - text: '长沙', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区' }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '福建', - text: '福建', - children: [ - { - value: '福州', - text: '福州', - children: [ - { value: '鼓楼区', text: '鼓楼区' }, - { value: '台江区', text: '台江区' }, - ], - }, - ], - }, - ]) - const change1 = (value: any, path: any) => { - console.log('onChange', value, path) - setValue1(value) - } - const onPathChange = (value: any, path: any) => { - console.log('onPathChange', value, path) - } - - return ( - <> - { - setIsVisibleDemo1(true) - }} - /> - {setIsVisibleDemo1(false)}} - onChange={change1} - onPathChange={onPathChange} - /> - - ); -}; -export default App; -``` + ::: @@ -132,113 +28,7 @@ export default App; :::demo -```jsx -import React,{useState} from "react"; -import { Cascader, Cell } from '@nutui/nutui-react'; - -const App = () => { - const [isVisibleDemo2, setIsVisibleDemo2] = useState(false) - const [value2, setValue2] = useState(['福建', '福州', '台江区']) - const [optionsDemo2, setOptionsDemo2] = useState([ - { - value1: '浙江', - text1: '浙江', - items: [ - { - value1: '杭州', - text1: '杭州', - disabled: true, - items: [ - { value1: '西湖区', text1: '西湖区', disabled: true }, - { value1: '余杭区', text1: '余杭区' }, - ], - }, - { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, - ], - }, - ], - }, - { - value1: '湖南', - text1: '湖南', - disabled: true, - items: [ - { - value1: '长沙', - text1: '长沙', - disabled: true, - items: [ - { value1: '西湖区', text1: '西湖区' }, - { value1: '余杭区', text1: '余杭区' }, - ], - }, - { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, - ], - }, - ], - }, - { - value1: '福建', - text1: '福建', - items: [ - { - value1: '福州', - text1: '福州', - items: [ - { value1: '鼓楼区', text1: '鼓楼区' }, - { value1: '台江区', text1: '台江区' }, - ], - }, - ], - }, - ]) - const change2 = (value, path) => { - console.log('onChange', value, path) - setValue2(value) - } - const onPathChange = (value, path) => { - console.log('onPathChange', value, path) - } - - return ( - <> - { - setIsVisibleDemo2(true) - }} - /> - {setIsVisibleDemo2(false)}} - onChange={change2} - onPathChange={onPathChange} - /> - - ); -}; -export default App; -``` + ::: @@ -248,68 +38,7 @@ export default App; :::demo -```jsx -import React,{useState} from "react"; -import { Cascader, Cell } from '@nutui/nutui-react'; - -const App = () => { - const [isVisibleDemo3, setIsVisibleDemo3] = useState(false) - const [value3, setValue3] = useState(['A0', 'A12', 'A23', 'A32']) - - const lazyLoadDemo3 = (node: any, resolve: (children: any) => void) => { - setTimeout(() => { - if (node.root) { - resolve([ - { value: 'A0', text: 'A0' }, - { value: 'B0', text: 'B0' }, - { value: 'C0', text: 'C0' } - ]); - } else { - const { value, level } = node; - const text = value.substring(0, 1); - const value1 = `${text}${level + 1}1`; - const value2 = `${text}${level + 1}2`; - const value3 = `${text}${level + 1}3`; - resolve([ - { value: value1, text: value1, leaf: level >= 6 }, - { value: value2, text: value2, leaf: level >= 6 }, - { value: value3, text: value3, leaf: level >= 6 } - ]); - } - }, 2000); - } - const change3 = (value, path) => { - console.log('onChange', value, path) - setValue3(value) - } - const onPathChange = (value, path) => { - console.log('onPathChange', value, path) - } - return ( - <> - { - setIsVisibleDemo3(true) - }} - /> - {setIsVisibleDemo3(false)}} - onChange={change3} - onPathChange={onPathChange} - lazy - onLoad={lazyLoadDemo3} - /> - - ); -}; -export default App; -``` + ::: @@ -317,72 +46,7 @@ export default App; :::demo -```jsx -import React,{useState} from "react"; -import { Cascader, Cell } from '@nutui/nutui-react'; - -const App = () => { - const [isVisibleDemo4, setIsVisibleDemo4] = useState(false) - const [value4, setValue4] = useState([]) - const [optionsDemo4, setOptionsDemo4] = useState([ - { value: 'A0', text: 'A0' }, - { - value: 'B0', - text: 'B0', - children: [ - { value: 'B11', text: 'B11', leaf: true }, - { value: 'B12', text: 'B12' } - ] - }, - { value: 'C0', text: 'C0' } - ]) - - const lazyLoadDemo4 = (node: any, resolve: (children: any) => void) => { - setTimeout(() => { - const { value, level } = node; - const text = value.substring(0, 1); - const value1 = `${text}${level + 1}1`; - const value2 = `${text}${level + 1}2`; - resolve([ - { value: value1, text: value1, leaf: level >= 2 }, - { value: value2, text: value2, leaf: level >= 1 } - ]); - }, 500); - } - const change4 = (value, path) => { - console.log('onChange', value, path) - setValue4(value) - } - const onPathChange = (value, path) => { - console.log('onPathChange', value, path) - } - - return ( - <> - { - setIsVisibleDemo4(true) - }} - /> - {setIsVisibleDemo4(false)}} - onChange={change4} - onPathChange={onPathChange} - lazy - onLoad={lazyLoadDemo4} - /> - - ); -}; -export default App; -``` + ::: @@ -392,59 +56,7 @@ export default App; :::demo -```jsx -import React,{useState} from "react"; -import { Cascader, Cell } from '@nutui/nutui-react'; - -const App = () => { - const [isVisibleDemo5, setIsVisibleDemo5] = useState(false) - const [value5, setValue5] = useState(['广东省', '广州市']) - const [optionsDemo5, setOptionsDemo5] = useState([ - { value: '北京', text: '北京', id: 1, pidd: null }, - { value: '朝阳区', text: '朝阳区', id: 11, pidd: 1 }, - { value: '亦庄', text: '亦庄', id: 111, pidd: 11 }, - { value: '广东省', text: '广东省', id: 2, pidd: null }, - { value: '广州市', text: '广州市', id: 21, pidd: 2 } - ]) - const [convertConfigDemo5, setConvertConfigDemo5] = useState({ - topId: null, - idKey: 'id', - pidKey: 'pidd', - sortKey: '' - }) - const change5 = (value, path) => { - console.log('onChange', value, path) - setValue5(value) - } - const onPathChange = (value, path) => { - console.log('onPathChange', value, path) - } - - return ( - <> - { - setIsVisibleDemo5(true) - }} - /> - {setIsVisibleDemo5(false)}} - onChange={change5} - onPathChange={onPathChange} - /> - - ); -}; -export default App; -``` + ::: @@ -454,121 +66,7 @@ export default App; :::demo -```jsx -import React,{useState} from "react"; -import { Cell, Cascader, ConfigProvider } from '@nutui/nutui-react'; - -const customTheme = { - nutuiCascaderItemHeight: '48px', - nutuiCascaderItemMargin: '0 10px', - nutuiCascaderItemPadding: '10px', - nutuiCascaderItemBorderBottom: '1px solid #F0F0F0', - nutuiTabsTitlesItemActiveColor: '#3768FA', - nutuiTabsTabLineColor: '#3768FA', -} - -const App = () => { - const [isVisibleDemo6, setIsVisibleDemo6] = useState(false) - const [value6, setValue6] = useState([]) - const [optionsDemo6, setOptionsDemo6] = useState([ - { - value: '浙江', - text: '浙江', - children: [ - { - value: '杭州', - text: '杭州', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区', disabled: true }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '湖南', - text: '湖南', - disabled: true, - children: [ - { - value: '长沙', - text: '长沙', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区' }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '福建', - text: '福建', - children: [ - { - value: '福州', - text: '福州', - children: [ - { value: '鼓楼区', text: '鼓楼区' }, - { value: '台江区', text: '台江区' }, - ], - }, - ], - }, - ]) - const change6 = (value: any, path: any) => { - console.log('onChange', value, path) - setValue6(value) - } - const onPathChange = (value: any, path: any) => { - console.log('onPathChange', value, path) - } - - return ( - <> - { - setIsVisibleDemo6(true) - }} - /> - - {setIsVisibleDemo1(false)}} - onChange={change6} - onPathChange={onPathChange} - /> - - - ); -}; -export default App; -``` + ::: diff --git a/src/packages/cascader/doc.taro.md b/src/packages/cascader/doc.taro.md index caea39f444..1a75ca5ee5 100644 --- a/src/packages/cascader/doc.taro.md +++ b/src/packages/cascader/doc.taro.md @@ -18,111 +18,7 @@ import { Cascader } from '@nutui/nutui-react-taro'; :::demo -```jsx -import React,{useState} from "react"; -import { Cascader, Cell } from '@nutui/nutui-react-taro'; - -const App = () => { - const [isVisibleDemo1, setIsVisibleDemo1] = useState(false) - const [value1, setValue1] = useState([]) - const [optionsDemo1, setOptionsDemo1] = useState([ - { - value: '浙江', - text: '浙江', - children: [ - { - value: '杭州', - text: '杭州', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区', disabled: true }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '湖南', - text: '湖南', - disabled: true, - children: [ - { - value: '长沙', - text: '长沙', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区' }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '福建', - text: '福建', - children: [ - { - value: '福州', - text: '福州', - children: [ - { value: '鼓楼区', text: '鼓楼区' }, - { value: '台江区', text: '台江区' }, - ], - }, - ], - }, - ]) - const change1 = (value: any, path: any) => { - console.log('onChange', value, path) - setValue1(value) - } - const onPathChange = (value: any, path: any) => { - console.log('onPathChange', value, path) - } - - return ( - <> - { - setIsVisibleDemo1(true) - }} - /> - {setIsVisibleDemo1(false)}} - onChange={change1} - onPathChange={onPathChange} - /> - - ); -}; -export default App; -``` + ::: @@ -132,113 +28,7 @@ export default App; :::demo -```jsx -import React,{useState} from "react"; -import { Cascader, Cell } from '@nutui/nutui-react-taro'; - -const App = () => { - const [isVisibleDemo2, setIsVisibleDemo2] = useState(false) - const [value2, setValue2] = useState(['福建', '福州', '台江区']) - const [optionsDemo2, setOptionsDemo2] = useState([ - { - value1: '浙江', - text1: '浙江', - items: [ - { - value1: '杭州', - text1: '杭州', - disabled: true, - items: [ - { value1: '西湖区', text1: '西湖区', disabled: true }, - { value1: '余杭区', text1: '余杭区' }, - ], - }, - { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, - ], - }, - ], - }, - { - value1: '湖南', - text1: '湖南', - disabled: true, - items: [ - { - value1: '长沙', - text1: '长沙', - disabled: true, - items: [ - { value1: '西湖区', text1: '西湖区' }, - { value1: '余杭区', text1: '余杭区' }, - ], - }, - { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, - ], - }, - ], - }, - { - value1: '福建', - text1: '福建', - items: [ - { - value1: '福州', - text1: '福州', - items: [ - { value1: '鼓楼区', text1: '鼓楼区' }, - { value1: '台江区', text1: '台江区' }, - ], - }, - ], - }, - ]) - const change2 = (value, path) => { - console.log('onChange', value, path) - setValue2(value) - } - const onPathChange = (value, path) => { - console.log('onPathChange', value, path) - } - - return ( - <> - { - setIsVisibleDemo2(true) - }} - /> - {setIsVisibleDemo2(false)}} - onChange={change2} - onPathChange={onPathChange} - /> - - ); -}; -export default App; -``` + ::: @@ -248,68 +38,7 @@ export default App; :::demo -```jsx -import React,{useState} from "react"; -import { Cascader, Cell } from '@nutui/nutui-react-taro'; - -const App = () => { - const [isVisibleDemo3, setIsVisibleDemo3] = useState(false) - const [value3, setValue3] = useState(['A0', 'A12', 'A23', 'A32']) - - const lazyLoadDemo3 = (node: any, resolve: (children: any) => void) => { - setTimeout(() => { - if (node.root) { - resolve([ - { value: 'A0', text: 'A0' }, - { value: 'B0', text: 'B0' }, - { value: 'C0', text: 'C0' } - ]); - } else { - const { value, level } = node; - const text = value.substring(0, 1); - const value1 = `${text}${level + 1}1`; - const value2 = `${text}${level + 1}2`; - const value3 = `${text}${level + 1}3`; - resolve([ - { value: value1, text: value1, leaf: level >= 6 }, - { value: value2, text: value2, leaf: level >= 6 }, - { value: value3, text: value3, leaf: level >= 6 } - ]); - } - }, 2000); - } - const change3 = (value, path) => { - console.log('onChange', value, path) - setValue3(value) - } - const onPathChange = (value, path) => { - console.log('onPathChange', value, path) - } - return ( - <> - { - setIsVisibleDemo3(true) - }} - /> - {setIsVisibleDemo3(false)}} - onChange={change3} - onPathChange={onPathChange} - lazy - onLoad={lazyLoadDemo3} - /> - - ); -}; -export default App; -``` + ::: @@ -317,72 +46,7 @@ export default App; :::demo -```jsx -import React,{useState} from "react"; -import { Cascader, Cell } from '@nutui/nutui-react-taro'; - -const App = () => { - const [isVisibleDemo4, setIsVisibleDemo4] = useState(false) - const [value4, setValue4] = useState([]) - const [optionsDemo4, setOptionsDemo4] = useState([ - { value: 'A0', text: 'A0' }, - { - value: 'B0', - text: 'B0', - children: [ - { value: 'B11', text: 'B11', leaf: true }, - { value: 'B12', text: 'B12' } - ] - }, - { value: 'C0', text: 'C0' } - ]) - - const lazyLoadDemo4 = (node: any, resolve: (children: any) => void) => { - setTimeout(() => { - const { value, level } = node; - const text = value.substring(0, 1); - const value1 = `${text}${level + 1}1`; - const value2 = `${text}${level + 1}2`; - resolve([ - { value: value1, text: value1, leaf: level >= 2 }, - { value: value2, text: value2, leaf: level >= 1 } - ]); - }, 500); - } - const change4 = (value, path) => { - console.log('onChange', value, path) - setValue4(value) - } - const onPathChange = (value, path) => { - console.log('onPathChange', value, path) - } - - return ( - <> - { - setIsVisibleDemo4(true) - }} - /> - {setIsVisibleDemo4(false)}} - onChange={change4} - onPathChange={onPathChange} - lazy - onLoad={lazyLoadDemo4} - /> - - ); -}; -export default App; -``` + ::: @@ -392,59 +56,7 @@ export default App; :::demo -```jsx -import React,{useState} from "react"; -import { Cascader, Cell } from '@nutui/nutui-react-taro'; - -const App = () => { - const [isVisibleDemo5, setIsVisibleDemo5] = useState(false) - const [value5, setValue5] = useState(['广东省', '广州市']) - const [optionsDemo5, setOptionsDemo5] = useState([ - { value: '北京', text: '北京', id: 1, pidd: null }, - { value: '朝阳区', text: '朝阳区', id: 11, pidd: 1 }, - { value: '亦庄', text: '亦庄', id: 111, pidd: 11 }, - { value: '广东省', text: '广东省', id: 2, pidd: null }, - { value: '广州市', text: '广州市', id: 21, pidd: 2 } - ]) - const [convertConfigDemo5, setConvertConfigDemo5] = useState({ - topId: null, - idKey: 'id', - pidKey: 'pidd', - sortKey: '' - }) - const change5 = (value, path) => { - console.log('onChange', value, path) - setValue5(value) - } - const onPathChange = (value, path) => { - console.log('onPathChange', value, path) - } - - return ( - <> - { - setIsVisibleDemo5(true) - }} - /> - {setIsVisibleDemo5(false)}} - onChange={change5} - onPathChange={onPathChange} - /> - - ); -}; -export default App; -``` + ::: @@ -454,121 +66,7 @@ export default App; :::demo -```jsx -import React,{useState} from "react"; -import { Cell, Cascader, ConfigProvider } from '@nutui/nutui-react-taro'; - -const customTheme = { - nutuiCascaderItemHeight: '48px', - nutuiCascaderItemMargin: '0 10px', - nutuiCascaderItemPadding: '10px', - nutuiCascaderItemBorderBottom: '1px solid #F0F0F0', - nutuiTabsTitlesItemActiveColor: '#3768FA', - nutuiTabsTabLineColor: '#3768FA', -} - -const App = () => { - const [isVisibleDemo6, setIsVisibleDemo6] = useState(false) - const [value6, setValue6] = useState([]) - const [optionsDemo6, setOptionsDemo6] = useState([ - { - value: '浙江', - text: '浙江', - children: [ - { - value: '杭州', - text: '杭州', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区', disabled: true }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '湖南', - text: '湖南', - disabled: true, - children: [ - { - value: '长沙', - text: '长沙', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区' }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '福建', - text: '福建', - children: [ - { - value: '福州', - text: '福州', - children: [ - { value: '鼓楼区', text: '鼓楼区' }, - { value: '台江区', text: '台江区' }, - ], - }, - ], - }, - ]) - const change6 = (value: any, path: any) => { - console.log('onChange', value, path) - setValue6(value) - } - const onPathChange = (value: any, path: any) => { - console.log('onPathChange', value, path) - } - - return ( - <> - { - setIsVisibleDemo6(true) - }} - /> - - {setIsVisibleDemo1(false)}} - onChange={change6} - onPathChange={onPathChange} - /> - - - ); -}; -export default App; -``` + ::: diff --git a/src/packages/cascader/doc.zh-TW.md b/src/packages/cascader/doc.zh-TW.md index 18553a60d8..2fc741b0f2 100644 --- a/src/packages/cascader/doc.zh-TW.md +++ b/src/packages/cascader/doc.zh-TW.md @@ -18,111 +18,7 @@ import { Cascader } from '@nutui/nutui-react'; :::demo -```jsx -import React,{useState} from "react"; -import { Cell, Cascader } from '@nutui/nutui-react'; - -const App = () => { - const [isVisibleDemo1, setIsVisibleDemo1] = useState(false) - const [value1, setValue1] = useState([]) - const [optionsDemo1, setOptionsDemo1] = useState([ - { - value: '浙江', - text: '浙江', - children: [ - { - value: '杭州', - text: '杭州', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区', disabled: true }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '湖南', - text: '湖南', - disabled: true, - children: [ - { - value: '长沙', - text: '长沙', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区' }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '福建', - text: '福建', - children: [ - { - value: '福州', - text: '福州', - children: [ - { value: '鼓楼区', text: '鼓楼区' }, - { value: '台江区', text: '台江区' }, - ], - }, - ], - }, - ]) - const change1 = (value: any, path: any) => { - console.log('onChange', value, path) - setValue1(value) - } - const onPathChange = (value: any, path: any) => { - console.log('onPathChange', value, path) - } - - return ( - <> - { - setIsVisibleDemo1(true) - }} - /> - {setIsVisibleDemo1(false)}} - onChange={change1} - onPathChange={onPathChange} - /> - - ); -}; -export default App; -``` + ::: @@ -132,113 +28,7 @@ export default App; :::demo -```jsx -import React,{useState} from "react"; -import { Cell, Cascader } from '@nutui/nutui-react'; - -const App = () => { - const [isVisibleDemo2, setIsVisibleDemo2] = useState(false) - const [value2, setValue2] = useState(['福建', '福州', '台江区']) - const [optionsDemo2, setOptionsDemo2] = useState([ - { - value1: '浙江', - text1: '浙江', - items: [ - { - value1: '杭州', - text1: '杭州', - disabled: true, - items: [ - { value1: '西湖区', text1: '西湖区', disabled: true }, - { value1: '余杭区', text1: '余杭区' }, - ], - }, - { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, - ], - }, - ], - }, - { - value1: '湖南', - text1: '湖南', - disabled: true, - items: [ - { - value1: '长沙', - text1: '长沙', - disabled: true, - items: [ - { value1: '西湖区', text1: '西湖区' }, - { value1: '余杭区', text1: '余杭区' }, - ], - }, - { - value1: '温州', - text1: '温州', - items: [ - { value1: '鹿城区', text1: '鹿城区' }, - { value1: '瓯海区', text1: '瓯海区' }, - ], - }, - ], - }, - { - value1: '福建', - text1: '福建', - items: [ - { - value1: '福州', - text1: '福州', - items: [ - { value1: '鼓楼区', text1: '鼓楼区' }, - { value1: '台江区', text1: '台江区' }, - ], - }, - ], - }, - ]) - const change2 = (value, path) => { - console.log('onChange', value, path) - setValue2(value) - } - const onPathChange = (value, path) => { - console.log('onPathChange', value, path) - } - - return ( - <> - { - setIsVisibleDemo2(true) - }} - /> - {setIsVisibleDemo2(false)}} - onChange={change2} - onPathChange={onPathChange} - /> - - ); -}; -export default App; -``` + ::: @@ -248,68 +38,7 @@ export default App; :::demo -```jsx -import React,{useState} from "react"; -import { Cell, Cascader } from '@nutui/nutui-react'; - -const App = () => { - const [isVisibleDemo3, setIsVisibleDemo3] = useState(false) - const [value3, setValue3] = useState(['A0', 'A12', 'A23', 'A32']) - - const lazyLoadDemo3 = (node: any, resolve: (children: any) => void) => { - setTimeout(() => { - if (node.root) { - resolve([ - { value: 'A0', text: 'A0' }, - { value: 'B0', text: 'B0' }, - { value: 'C0', text: 'C0' } - ]); - } else { - const { value, level } = node; - const text = value.substring(0, 1); - const value1 = `${text}${level + 1}1`; - const value2 = `${text}${level + 1}2`; - const value3 = `${text}${level + 1}3`; - resolve([ - { value: value1, text: value1, leaf: level >= 6 }, - { value: value2, text: value2, leaf: level >= 6 }, - { value: value3, text: value3, leaf: level >= 6 } - ]); - } - }, 2000); - } - const change3 = (value, path) => { - console.log('onChange', value, path) - setValue3(value) - } - const onPathChange = (value, path) => { - console.log('onPathChange', value, path) - } - return ( - <> - { - setIsVisibleDemo3(true) - }} - /> - {setIsVisibleDemo3(false)}} - onChange={change3} - onPathChange={onPathChange} - lazy - onLoad={lazyLoadDemo3} - /> - - ); -}; -export default App; -``` + ::: @@ -317,72 +46,7 @@ export default App; :::demo -```jsx -import React,{useState} from "react"; -import { Cell, Cascader } from '@nutui/nutui-react'; - -const App = () => { - const [isVisibleDemo4, setIsVisibleDemo4] = useState(false) - const [value4, setValue4] = useState([]) - const [optionsDemo4, setOptionsDemo4] = useState([ - { value: 'A0', text: 'A0' }, - { - value: 'B0', - text: 'B0', - children: [ - { value: 'B11', text: 'B11', leaf: true }, - { value: 'B12', text: 'B12' } - ] - }, - { value: 'C0', text: 'C0' } - ]) - - const lazyLoadDemo4 = (node: any, resolve: (children: any) => void) => { - setTimeout(() => { - const { value, level } = node; - const text = value.substring(0, 1); - const value1 = `${text}${level + 1}1`; - const value2 = `${text}${level + 1}2`; - resolve([ - { value: value1, text: value1, leaf: level >= 2 }, - { value: value2, text: value2, leaf: level >= 1 } - ]); - }, 500); - } - const change4 = (value, path) => { - console.log('onChange', value, path) - setValue4(value) - } - const onPathChange = (value, path) => { - console.log('onPathChange', value, path) - } - - return ( - <> - { - setIsVisibleDemo4(true) - }} - /> - {setIsVisibleDemo4(false)}} - onChange={change4} - onPathChange={onPathChange} - lazy - onLoad={lazyLoadDemo4} - /> - - ); -}; -export default App; -``` + ::: @@ -392,59 +56,7 @@ export default App; :::demo -```jsx -import React,{useState} from "react"; -import { Cell, Cascader } from '@nutui/nutui-react'; - -const App = () => { - const [isVisibleDemo5, setIsVisibleDemo5] = useState(false) - const [value5, setValue5] = useState(['广东省', '广州市']) - const [optionsDemo5, setOptionsDemo5] = useState([ - { value: '北京', text: '北京', id: 1, pidd: null }, - { value: '朝阳区', text: '朝阳区', id: 11, pidd: 1 }, - { value: '亦庄', text: '亦庄', id: 111, pidd: 11 }, - { value: '广东省', text: '广东省', id: 2, pidd: null }, - { value: '广州市', text: '广州市', id: 21, pidd: 2 } - ]) - const [convertConfigDemo5, setConvertConfigDemo5] = useState({ - topId: null, - idKey: 'id', - pidKey: 'pidd', - sortKey: '' - }) - const change5 = (value, path) => { - console.log('onChange', value, path) - setValue5(value) - } - const onPathChange = (value, path) => { - console.log('onPathChange', value, path) - } - - return ( - <> - { - setIsVisibleDemo5(true) - }} - /> - {setIsVisibleDemo5(false)}} - onChange={change5} - onPathChange={onPathChange} - /> - - ); -}; -export default App; -``` + ::: @@ -454,121 +66,7 @@ export default App; :::demo -```jsx -import React,{useState} from "react"; -import { Cell, Cascader, ConfigProvider } from '@nutui/nutui-react'; - -const customTheme = { - nutuiCascaderItemHeight: '48px', - nutuiCascaderItemMargin: '0 10px', - nutuiCascaderItemPadding: '10px', - nutuiCascaderItemBorderBottom: '1px solid #F0F0F0', - nutuiTabsTitlesItemActiveColor: '#3768FA', - nutuiTabsTabLineColor: '#3768FA', -} - -const App = () => { - const [isVisibleDemo6, setIsVisibleDemo6] = useState(false) - const [value6, setValue6] = useState([]) - const [optionsDemo6, setOptionsDemo6] = useState([ - { - value: '浙江', - text: '浙江', - children: [ - { - value: '杭州', - text: '杭州', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区', disabled: true }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '湖南', - text: '湖南', - disabled: true, - children: [ - { - value: '长沙', - text: '长沙', - disabled: true, - children: [ - { value: '西湖区', text: '西湖区' }, - { value: '余杭区', text: '余杭区' }, - ], - }, - { - value: '温州', - text: '温州', - children: [ - { value: '鹿城区', text: '鹿城区' }, - { value: '瓯海区', text: '瓯海区' }, - ], - }, - ], - }, - { - value: '福建', - text: '福建', - children: [ - { - value: '福州', - text: '福州', - children: [ - { value: '鼓楼区', text: '鼓楼区' }, - { value: '台江区', text: '台江区' }, - ], - }, - ], - }, - ]) - const change6 = (value: any, path: any) => { - console.log('onChange', value, path) - setValue6(value) - } - const onPathChange = (value: any, path: any) => { - console.log('onPathChange', value, path) - } - - return ( - <> - { - setIsVisibleDemo6(true) - }} - /> - - {setIsVisibleDemo1(false)}} - onChange={change6} - onPathChange={onPathChange} - /> - - - ); -}; -export default App; -``` + ::: diff --git a/src/packages/cell/__test__/__snapshots__/cell.spec.tsx.snap b/src/packages/cell/__test__/__snapshots__/cell.spec.tsx.snap index 478b5590bc..51fa29878a 100644 --- a/src/packages/cell/__test__/__snapshots__/cell.spec.tsx.snap +++ b/src/packages/cell/__test__/__snapshots__/cell.spec.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`prop 1`] = `
diff --git a/src/packages/cell/__test__/cell.spec.tsx b/src/packages/cell/__test__/cell.spec.tsx index 37c91891cc..7dfa2c34ae 100644 --- a/src/packages/cell/__test__/cell.spec.tsx +++ b/src/packages/cell/__test__/cell.spec.tsx @@ -32,7 +32,7 @@ test('prop ', () => { }) test('emit click event', () => { - const testClick = jest.fn() + const testClick = vi.fn() const { getByTestId } = render( testClick()} /> ) diff --git a/src/packages/cell/demo.scss b/src/packages/cell/demo.scss index ed4c050bb0..8b34add38f 100644 --- a/src/packages/cell/demo.scss +++ b/src/packages/cell/demo.scss @@ -1,28 +1,31 @@ -.nutui-cell-clickable { - &:active::before { - opacity: 0.1; - } +.demo { + .nutui-cell-clickable { + &:active::before { + opacity: 0.1; + } - cursor: pointer; + cursor: pointer; - &::before { - position: absolute; - top: 50%; - left: 50%; - width: 100%; - height: 100%; - background-color: $color-mask; - border: inherit; - border-color: $color-mask; - border-radius: inherit; - transform: translate(-50%, -50%); - opacity: 0; - content: ' '; + &::before { + position: absolute; + top: 50%; + left: 50%; + width: 100%; + height: 100%; + background-color: $color-mask; + border: inherit; + border-color: $color-mask; + border-radius: inherit; + transform: translate(-50%, -50%); + opacity: 0; + content: ' '; + } } } -.demo-extra { - margin-right: '5px'; - flex: 1; - min-width: 0; +[dir='rtl'] .nut-cell, +.nut-rtl .nut-cell { + .nut-icon-ArrowRight { + transform: rotate(180deg); + } } diff --git a/src/packages/cell/demo.taro.tsx b/src/packages/cell/demo.taro.tsx index c89644bfe4..2492b20a26 100644 --- a/src/packages/cell/demo.taro.tsx +++ b/src/packages/cell/demo.taro.tsx @@ -1,263 +1,64 @@ import React from 'react' -import { User, ArrowRight } from '@nutui/icons-react-taro' -import Taro, { redirectTo, navigateTo } from '@tarojs/taro' +import Taro from '@tarojs/taro' import { useTranslate } from '@/sites/assets/locale/taro' -import { Switch, Cell, Button } from '@/packages/nutui.react.taro' import Header from '@/sites/components/header' -import '@/packages/cell/demo.scss' - -interface T { - basic: string - extra: string - description: string - title: string - title1: string - title2: string - title3: string - title4: string - title5: string - title6: string - title7: string - description1: string - link: string - urlJump: string - content: string - customRight: string - clickEventToast: string -} +import Demo1 from './demos/taro/demo1' +import Demo2 from './demos/taro/demo2' +import Demo3 from './demos/taro/demo3' +import Demo4 from './demos/taro/demo4' +import Demo5 from './demos/taro/demo5' +import Demo6 from './demos/taro/demo6' +import Demo7 from './demos/taro/demo7' const CellDemo = () => { - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { basic: '基础用法', - extra: '描述文字', - description: '使用 nut-cell-group 支持 title description', - title: '我是标题', - title1: '我是描述', - title2: '点击测试', - title3: '圆角设置 0', title4: '链接 | 分组用法', title5: '垂直居中', title6: '自定义标题区域', title7: '分组用法', - description1: '单元格之间不显示下边线', - link: '链接', - urlJump: 'URL 跳转', content: '自定义内容', customRight: '自定义右侧区域', - clickEventToast: '点击事件', }, 'zh-TW': { basic: '基础用法', - extra: '描述文字', - description: '使用 nut-cell-group 支持 title description', - title: '我是標題', - title1: '我是描述', - title2: '點擊測試', - title3: '圓角設置 0', title4: '鏈接 | 分組用法', title5: '垂直居中', title6: '自定義標題區域', title7: '分組用法', - description1: '單元格之間不顯示下邊線', - link: '鏈接', - urlJump: 'URL 跳轉', content: '自定義內容', customRight: '自定義右側區域', - clickEventToast: '点击事件', }, 'en-US': { basic: 'Basic Usage', - extra: 'extra', - description: 'Usage nut-cell-group support title description', - title: 'Title', - title1: 'Description', - title2: 'Click Test', - title3: 'Round Radius 0', title4: 'Link | Cell.Group Usage', title5: 'Vertical Center', title6: 'Customize the title area', title7: 'Grouping usage', - description1: 'The bottom edge is not displayed between cells', - link: 'Link', - urlJump: 'URL Jump', content: 'Customize Content', customRight: 'Customize the right area', - clickEventToast: 'Click Test', }, }) - const testClick = ( - event: React.MouseEvent - ) => { - Taro.showToast({ title: '点击事件' }) - } - - const onJumpclick = ( - event: React.MouseEvent, - link: string - ) => { - const replace = false - if (link) { - replace ? redirectTo({ url: link }) : navigateTo({ url: link }) - } - } - return ( <>

{translated.basic}

- - - - ) => testClick(event)} - /> - +

{translated.content}

- -
{translated.content}
-
- +

{translated.title6}

- - - {translated.title} -
- } - description={ - - {translated.title1} 1 - - } - extra={translated.extra} - /> - - } /> - + +

{translated.customRight}

+

{translated.title5}

- - - } - /> - - /pages/index/index - - - } - align="center" - onClick={( - event: React.MouseEvent - ) => onJumpclick(event, '/pages/index/index')} - /> - - - - - {translated.title} - - {translated.title1} - -
- } - extra={ -
- More - -
- } - /> - -
{translated.content}
-
- - {translated.title1} -
- } - extra={} - /> - - - - - {translated.title} -
- } - extra={} - /> - -
{translated.content}
-
- Action} /> - - - - - {translated.title} -
- } - /> - -
{translated.content}
-
- - - - - - + +

{translated.title4}

+ +

{translated.title7}

+
) diff --git a/src/packages/cell/demo.tsx b/src/packages/cell/demo.tsx index ff1b701eb2..5d6dc98b32 100644 --- a/src/packages/cell/demo.tsx +++ b/src/packages/cell/demo.tsx @@ -1,263 +1,61 @@ import React from 'react' -import { User, ArrowRight } from '@nutui/icons-react' import { useTranslate } from '../../sites/assets/locale' -import Cell from './index' -import { Switch } from '../switch/switch' -import { Button } from '../button/button' -import Toast from '../toast' -import './demo.scss' - -interface T { - basic: string - extra: string - description: string - title: string - title1: string - title2: string - title3: string - title4: string - title5: string - title6: string - title7: string - description1: string - link: string - urlJump: string - content: string - customRight: string - clickEventToast: string -} +import Demo1 from './demos/h5/demo1' +import Demo2 from './demos/h5/demo2' +import Demo3 from './demos/h5/demo3' +import Demo4 from './demos/h5/demo4' +import Demo5 from './demos/h5/demo5' +import Demo6 from './demos/h5/demo6' +import Demo7 from './demos/h5/demo7' const CellDemo = () => { - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { basic: '基础用法', - extra: '描述文字', - description: '使用 nut-cell-group 支持 title description', - title: '我是标题', - title1: '我是描述', - title2: '点击测试', - title3: '圆角设置 0', title4: '链接 | 分组用法', title5: '垂直居中', title6: '自定义标题区域', title7: '分组用法', - description1: '单元格之间不显示下边线', - link: '链接', - urlJump: 'URL 跳转', content: '自定义内容', customRight: '自定义右侧区域', - clickEventToast: '点击事件', }, 'zh-TW': { basic: '基础用法', - extra: '描述文字', - description: '使用 nut-cell-group 支持 title description', - title: '我是標題', - title1: '我是描述', - title2: '點擊測試', - title3: '圓角設置 0', title4: '鏈接 | 分組用法', title5: '垂直居中', title6: '自定義標題區域', title7: '分組用法', - description1: '單元格之間不顯示下邊線', - link: '鏈接', - urlJump: 'URL 跳轉', content: '自定義內容', customRight: '自定義右側區域', - clickEventToast: '点击事件', }, 'en-US': { basic: 'Basic Usage', - extra: 'extra', - description: 'Usage nut-cell-group support title description', - title: 'Title', - title1: 'Description', - title2: 'Click Test', - title3: 'Round Radius 0', title4: 'Link | Cell.Group Usage', title5: 'Vertical Center', title6: 'Customize the title area', title7: 'Grouping usage', - description1: 'The bottom edge is not displayed between cells', - link: 'Link', - urlJump: 'URL Jump', content: 'Customize Content', customRight: 'Customize the right area', - clickEventToast: 'Click Test', }, }) - const testClick = ( - event: React.MouseEvent - ) => { - Toast.show(translated.clickEventToast) - } - - const onJumpclick = ( - event: React.MouseEvent, - url: string - ) => { - const replace = false - if (url) { - replace ? window.location.replace(url) : (window.location.href = url) - } - } - return ( <>

{translated.basic}

- - - - ) => testClick(event)} - /> - +

{translated.content}

- -
{translated.content}
-
- +

{translated.title6}

- - - {translated.title} -
- } - description={ - - {translated.title1} 1 - - } - extra={translated.extra} - /> - - } /> - + +

{translated.customRight}

+

{translated.title5}

- - - } - /> - - https://jd.com - - - } - align="center" - /> - - - - - {translated.title} - - {translated.title1} - -
- } - extra={ -
- More - -
- } - /> - -
{translated.content}
-
- - {translated.title1} -
- } - extra={} - /> - - - - - {translated.title} -
- } - extra={} - /> - -
{translated.content}
-
- Action} /> - - - - - {translated.title} -
- } - /> - -
{translated.content}
-
- - - - - - + +

{translated.title4}

+ +

{translated.title7}

+
) diff --git a/src/packages/cell/demos/h5/demo1.tsx b/src/packages/cell/demos/h5/demo1.tsx new file mode 100644 index 0000000000..2fffd178e6 --- /dev/null +++ b/src/packages/cell/demos/h5/demo1.tsx @@ -0,0 +1,24 @@ +import React from 'react' +import { Cell, Toast } from '@nutui/nutui-react' + +const Demo1 = () => { + const testClick = ( + event: React.MouseEvent + ) => { + Toast.show('点击事件') + } + return ( + <> + + + + ) => testClick(event)} + /> + + + ) +} +export default Demo1 diff --git a/src/packages/cell/demos/h5/demo2.tsx b/src/packages/cell/demos/h5/demo2.tsx new file mode 100644 index 0000000000..1e36cc3eba --- /dev/null +++ b/src/packages/cell/demos/h5/demo2.tsx @@ -0,0 +1,11 @@ +import React from 'react' +import { Cell } from '@nutui/nutui-react' + +const Demo2 = () => { + return ( + +
自定义内容
+
+ ) +} +export default Demo2 diff --git a/src/packages/cell/demos/h5/demo3.tsx b/src/packages/cell/demos/h5/demo3.tsx new file mode 100644 index 0000000000..bdba513f72 --- /dev/null +++ b/src/packages/cell/demos/h5/demo3.tsx @@ -0,0 +1,23 @@ +import React from 'react' +import { Cell } from '@nutui/nutui-react' +import { User } from '@nutui/icons-react' + +const Demo3 = () => { + return ( + + + 我是标题 +
+ } + description={ + + 我是描述1 + + } + extra="描述文字" + /> + ) +} +export default Demo3 diff --git a/src/packages/cell/demos/h5/demo4.tsx b/src/packages/cell/demos/h5/demo4.tsx new file mode 100644 index 0000000000..6ecce22100 --- /dev/null +++ b/src/packages/cell/demos/h5/demo4.tsx @@ -0,0 +1,7 @@ +import React from 'react' +import { Cell, Switch } from '@nutui/nutui-react' + +const App = () => { + return } /> +} +export default App diff --git a/src/packages/cell/demos/h5/demo5.tsx b/src/packages/cell/demos/h5/demo5.tsx new file mode 100644 index 0000000000..3adb5b48f9 --- /dev/null +++ b/src/packages/cell/demos/h5/demo5.tsx @@ -0,0 +1,14 @@ +import React from 'react' +import { Cell } from '@nutui/nutui-react' + +const Demo5 = () => { + return ( + + ) +} +export default Demo5 diff --git a/src/packages/cell/demos/h5/demo6.tsx b/src/packages/cell/demos/h5/demo6.tsx new file mode 100644 index 0000000000..208fceb945 --- /dev/null +++ b/src/packages/cell/demos/h5/demo6.tsx @@ -0,0 +1,130 @@ +import React from 'react' +import { Cell, Button } from '@nutui/nutui-react' +import { ArrowRight, User } from '@nutui/icons-react' + +const Demo6 = () => { + const onJumpclick = ( + event: React.MouseEvent, + url: string + ) => { + const replace = false + if (url) { + replace ? window.location.replace(url) : (window.location.href = url) + } + } + return ( + <> + + } + /> + + https://jd.com + + + } + align="center" + onClick={( + event: React.MouseEvent + ) => onJumpclick(event, 'https://jd.com')} + /> + + + + + 我是标题 + + 我是描述 + +
+ } + extra={ +
+ More + +
+ } + /> + +
自定义内容
+
+ + 我是描述 +
+ } + extra={ + + } + /> + + + + + 我是标题 +
+ } + extra={} + /> + +
自定义内容
+
+ + Action + + } + /> + + + + + 我是标题 +
+ } + /> + +
自定义内容
+
+ + + ) +} +export default Demo6 diff --git a/src/packages/cell/demos/h5/demo7.tsx b/src/packages/cell/demos/h5/demo7.tsx new file mode 100644 index 0000000000..7aeab1f108 --- /dev/null +++ b/src/packages/cell/demos/h5/demo7.tsx @@ -0,0 +1,12 @@ +import React from 'react' +import { Cell } from '@nutui/nutui-react' + +const Demo7 = () => { + return ( + + + + + ) +} +export default Demo7 diff --git a/src/packages/cell/demos/taro/demo1.tsx b/src/packages/cell/demos/taro/demo1.tsx new file mode 100644 index 0000000000..1531b94e31 --- /dev/null +++ b/src/packages/cell/demos/taro/demo1.tsx @@ -0,0 +1,24 @@ +import React from 'react' +import { Cell } from '@nutui/nutui-react-taro' + +const Demo1 = () => { + const testClick = ( + event: React.MouseEvent + ) => { + console.log('点击事件') + } + return ( + <> + + + + ) => testClick(event)} + /> + + + ) +} +export default Demo1 diff --git a/src/packages/cell/demos/taro/demo2.tsx b/src/packages/cell/demos/taro/demo2.tsx new file mode 100644 index 0000000000..e5b468b3ab --- /dev/null +++ b/src/packages/cell/demos/taro/demo2.tsx @@ -0,0 +1,11 @@ +import React from 'react' +import { Cell } from '@nutui/nutui-react-taro' + +const Demo2 = () => { + return ( + +
自定义内容
+
+ ) +} +export default Demo2 diff --git a/src/packages/cell/demos/taro/demo3.tsx b/src/packages/cell/demos/taro/demo3.tsx new file mode 100644 index 0000000000..c7a3a1a3d5 --- /dev/null +++ b/src/packages/cell/demos/taro/demo3.tsx @@ -0,0 +1,23 @@ +import React from 'react' +import { Cell } from '@nutui/nutui-react-taro' +import { User } from '@nutui/icons-react-taro' + +const Demo3 = () => { + return ( + + + 我是标题 +
+ } + description={ + + 我是描述1 + + } + extra="描述文字" + /> + ) +} +export default Demo3 diff --git a/src/packages/cell/demos/taro/demo4.tsx b/src/packages/cell/demos/taro/demo4.tsx new file mode 100644 index 0000000000..cb4016b621 --- /dev/null +++ b/src/packages/cell/demos/taro/demo4.tsx @@ -0,0 +1,11 @@ +import React from 'react' +import { Cell, Switch } from '@nutui/nutui-react-taro' + +const App = () => { + return ( + + } /> + + ) +} +export default App diff --git a/src/packages/cell/demos/taro/demo5.tsx b/src/packages/cell/demos/taro/demo5.tsx new file mode 100644 index 0000000000..5b5089de61 --- /dev/null +++ b/src/packages/cell/demos/taro/demo5.tsx @@ -0,0 +1,14 @@ +import React from 'react' +import { Cell } from '@nutui/nutui-react-taro' + +const Demo5 = () => { + return ( + + ) +} +export default Demo5 diff --git a/src/packages/cell/demos/taro/demo6.tsx b/src/packages/cell/demos/taro/demo6.tsx new file mode 100644 index 0000000000..cb322a09a6 --- /dev/null +++ b/src/packages/cell/demos/taro/demo6.tsx @@ -0,0 +1,129 @@ +import React from 'react' +import { Cell, Button } from '@nutui/nutui-react-taro' +import { ArrowRight, User } from '@nutui/icons-react-taro' +import { redirectTo, navigateTo } from '@tarojs/taro' + +const Demo6 = () => { + const onJumpclick = ( + event: React.MouseEvent, + link: string + ) => { + const replace = false + if (link) { + replace ? redirectTo({ url: link }) : navigateTo({ url: link }) + } + } + return ( + <> + + } + /> + + /pages/index/index + + + } + align="center" + onClick={( + event: React.MouseEvent + ) => { + onJumpclick(event, '/pages/index/index') + }} + /> + + + + + 我是标题 + + 我是描述 + +
+ } + extra={ +
+ More + +
+ } + /> + +
自定义内容
+
+ + 我是描述 +
+ } + extra={ + + } + /> + + + + + 我是标题 +
+ } + extra={} + /> + +
自定义内容
+
+ + Action + + } + /> + + + + + 我是标题 +
+ } + /> + +
自定义内容
+
+ + + ) +} +export default Demo6 diff --git a/src/packages/cell/demos/taro/demo7.tsx b/src/packages/cell/demos/taro/demo7.tsx new file mode 100644 index 0000000000..4e2bf5f93c --- /dev/null +++ b/src/packages/cell/demos/taro/demo7.tsx @@ -0,0 +1,12 @@ +import React from 'react' +import { Cell } from '@nutui/nutui-react-taro' + +const Demo7 = () => { + return ( + + + + + ) +} +export default Demo7 diff --git a/src/packages/cell/doc.en-US.md b/src/packages/cell/doc.en-US.md index e30d7f0a7d..3d0225ec77 100644 --- a/src/packages/cell/doc.en-US.md +++ b/src/packages/cell/doc.en-US.md @@ -16,32 +16,7 @@ import { Cell } from '@nutui/nutui-react' :::demo -```tsx -import React from 'react' -import { Cell, Toast } from '@nutui/nutui-react' - -const App = () => { - const testClick = ( - event: React.MouseEvent - ) => { - Toast.show('Click Test') - } - return ( - <> - - - - ) => testClick(event)} - /> - - - ) -} -export default App -``` + ::: @@ -49,19 +24,7 @@ export default App :::demo -```tsx -import React from 'react' -import { Cell } from '@nutui/nutui-react' - -const App = () => { - return ( - -
Customize Content
-
- ) -} -export default App -``` + ::: @@ -69,31 +32,7 @@ export default App :::demo -```tsx -import React from 'react' -import { Cell } from '@nutui/nutui-react' -import { User } from '@nutui/icons-react' - -const App = () => { - return ( - - - TitleDescription - - } - description={ - - Description1 - - } - extra="extra" - /> - ) -} -export default App -``` + ::: @@ -101,19 +40,7 @@ export default App :::demo -```tsx -import React from 'react' -import { Cell, Switch } from '@nutui/nutui-react' - -const App = () => { - return ( - - } /> - - ) -} -export default App -``` + ::: @@ -123,17 +50,7 @@ You can align the left and right contents of the cell vertically through the 'ce :::demo -```tsx -import React from 'react' -import { Cell } from '@nutui/nutui-react' - -const App = () => { - return ( - - ) -} -export default App -``` + ::: @@ -141,126 +58,7 @@ export default App :::demo -```tsx -import React from 'react' -import { Cell, Button } from '@nutui/nutui-react' -import { ArrowRight, User } from '@nutui/icons-react' - -const App = () => { - const onJumpclick = ( - event: React.MouseEvent, - url: string - ) => { - const replace = false - if (url) { - replace ? window.location.replace(url) : (window.location.href = url) - } - } - return ( - <> - - } - /> - - https://jd.com - - - } - align="center" - onClick={( - event: React.MouseEvent - ) => onJumpclick(event, 'https://jd.com')} - /> - - - - - Title - - Description - - - } - extra={ -
- More - -
- } - /> - -
Content
-
- - Description - - } - extra={} - /> -
- - - - Title - - } - extra={} - /> - -
Content
-
- Action} /> -
- - - - Title - - } - /> - -
Content
-
-
- - ) -} -export default App -``` + ::: @@ -270,24 +68,7 @@ The 'divider' property allows you to keep the lower edge from being displayed be :::demo -```tsx -import React from 'react' -import { Cell } from '@nutui/nutui-react' - -const App = () => { - return ( - - - - - ) -} -export default App -``` + ::: diff --git a/src/packages/cell/doc.md b/src/packages/cell/doc.md index b6556647d3..dd04b6c56f 100644 --- a/src/packages/cell/doc.md +++ b/src/packages/cell/doc.md @@ -16,32 +16,7 @@ import { Cell } from '@nutui/nutui-react' :::demo -```tsx -import React from 'react' -import { Cell, Toast } from '@nutui/nutui-react' - -const App = () => { - const testClick = ( - event: React.MouseEvent - ) => { - Toast.show('点击事件') - } - return ( - <> - - - - ) => testClick(event)} - /> - - - ) -} -export default App -``` + ::: @@ -49,19 +24,7 @@ export default App :::demo -```tsx -import React from 'react' -import { Cell } from '@nutui/nutui-react' - -const App = () => { - return ( - -
自定义内容
-
- ) -} -export default App -``` + ::: @@ -69,31 +32,7 @@ export default App :::demo -```tsx -import React from 'react' -import { Cell } from '@nutui/nutui-react' -import { User } from '@nutui/icons-react' - -const App = () => { - return ( - - - 我是标题{translated.title} - - } - description={ - - 我是描述1 - - } - extra="描述文字" - /> - ) -} -export default App -``` + ::: @@ -101,19 +40,7 @@ export default App :::demo -```tsx -import React from 'react' -import { Cell, Switch } from '@nutui/nutui-react' - -const App = () => { - return ( - - } /> - - ) -} -export default App -``` + ::: @@ -123,149 +50,17 @@ export default App :::demo -```tsx -import React from 'react' -import { Cell } from '@nutui/nutui-react' - -const App = () => { - return ( - - ) -} -export default App -``` + ::: ### 链接 | 分组用法 +使用 `nut-cell-group` 支持 `title` 和 `description` + :::demo -```tsx -import React from 'react' -import { Cell, Button } from '@nutui/nutui-react' -import { ArrowRight, User } from '@nutui/icons-react' - -const App = () => { - const onJumpclick = ( - event: React.MouseEvent, - url: string - ) => { - const replace = false - if (url) { - replace ? window.location.replace(url) : (window.location.href = url) - } - } - return ( - <> - - } - /> - - https://jd.com - - - } - align="center" - onClick={( - event: React.MouseEvent - ) => onJumpclick(event, 'https://jd.com')} - /> - - - - - 我是标题 - - 我是描述 - - - } - extra={ -
- More - -
- } - /> - -
自定义内容
-
- - 我是描述 - - } - extra={} - /> -
- - - - 我是标题 - - } - extra={} - /> - -
自定义内容
-
- Action} /> -
- - - - 我是标题 - - } - /> - -
自定义内容
-
-
- - ) -} -export default App -``` + ::: @@ -275,24 +70,7 @@ export default App :::demo -```tsx -import React from 'react' -import { Cell } from '@nutui/nutui-react' - -const App = () => { - return ( - - - - - ) -} -export default App -``` + ::: diff --git a/src/packages/cell/doc.taro.md b/src/packages/cell/doc.taro.md index 700810a72e..5fbe2fda83 100644 --- a/src/packages/cell/doc.taro.md +++ b/src/packages/cell/doc.taro.md @@ -16,32 +16,7 @@ import { Cell } from '@nutui/nutui-react-taro' :::demo -```tsx -import React from 'react' -import { Cell } from '@nutui/nutui-react-taro' - -const App = () => { - const testClick = ( - event: React.MouseEvent - ) => { - console.log('点击事件') - } - return ( - <> - - - - ) => testClick(event)} - /> - - - ) -} -export default App -``` + ::: @@ -49,19 +24,7 @@ export default App :::demo -```tsx -import React from 'react' -import { Cell } from '@nutui/nutui-react-taro' - -const App = () => { - return ( - -
自定义内容
-
- ) -} -export default App -``` + ::: @@ -69,31 +32,7 @@ export default App :::demo -```tsx -import React from 'react' -import { Cell } from '@nutui/nutui-react-taro' -import { User } from '@nutui/icons-react-taro' - -const App = () => { - return ( - - - 我是标题{translated.title} - - } - description={ - - 我是描述1 - - } - extra="描述文字" - /> - ) -} -export default App -``` + ::: @@ -101,19 +40,7 @@ export default App :::demo -```tsx -import React from 'react' -import { Cell, Switch } from '@nutui/nutui-react-taro' - -const App = () => { - return ( - - } /> - - ) -} -export default App -``` + ::: @@ -123,149 +50,16 @@ export default App :::demo -```tsx -import React from 'react' -import { Cell } from '@nutui/nutui-react-taro' - -const App = () => { - return ( - - ) -} -export default App -``` + ::: ### 链接 | 分组用法 +使用 `nut-cell-group` 支持 `title`和`extra` :::demo -```tsx -import React from 'react' -import { Cell, Button } from '@nutui/nutui-react-taro' -import { ArrowRight, User } from '@nutui/icons-react-taro' - -const App = () => { - const onJumpclick = ( - event: React.MouseEvent, - link: string - ) => { - const replace = false - if (link) { - replace ? redirectTo({ url: link }) : navigateTo({ url: link }) - } - } - return ( - <> - - } - /> - - /pages/index/index - - - } - align="center" - onClick={( - event: React.MouseEvent - ) => onJumpclick(event, '/pages/index/index')} - /> - - - - - 我是标题 - - 我是描述 - - - } - extra={ -
- More - -
- } - /> - -
自定义内容
-
- - 我是描述 - - } - extra={} - /> -
- - - - 我是标题 - - } - extra={} - /> - -
自定义内容
-
- Action} /> -
- - - - 我是标题 - - } - /> - -
自定义内容
-
-
- - ) -} -export default App -``` + ::: @@ -275,24 +69,7 @@ export default App :::demo -```tsx -import React from 'react' -import { Cell } from '@nutui/nutui-react-taro' - -const App = () => { - return ( - - - - - ) -} -export default App -``` + ::: diff --git a/src/packages/cell/doc.zh-TW.md b/src/packages/cell/doc.zh-TW.md index 310037a1df..2ced0173c9 100644 --- a/src/packages/cell/doc.zh-TW.md +++ b/src/packages/cell/doc.zh-TW.md @@ -12,36 +12,11 @@ import { Cell } from '@nutui/nutui-react' ## 代碼演示 -### 基础用法 +### 基礎用法 :::demo -```tsx -import React from 'react' -import { Cell, Toast } from '@nutui/nutui-react' - -const App = () => { - const testClick = ( - event: React.MouseEvent - ) => { - Toast.show('點擊事件') - } - return ( - <> - - - - ) => testClick(event)} - /> - - - ) -} -export default App -``` + ::: @@ -49,19 +24,7 @@ export default App :::demo -```tsx -import React from 'react' -import { Cell } from '@nutui/nutui-react' - -const App = () => { - return ( - -
自定義內容
-
- ) -} -export default App -``` + ::: @@ -69,31 +32,7 @@ export default App :::demo -```tsx -import React from 'react' -import { Cell } from '@nutui/nutui-react' -import { User } from '@nutui/icons-react' - -const App = () => { - return ( - - - 我是標題{translated.title} - - } - description={ - - 我是描述1 - - } - extra="描述文字" - /> - ) -} -export default App -``` + ::: @@ -101,171 +40,37 @@ export default App :::demo -```tsx -import React from 'react' -import { Cell, Switch } from '@nutui/nutui-react' - -const App = () => { - return ( - - } /> - - ) -} -export default App -``` + ::: -### 鏈接 | 分組用法 +### 垂直居中 + +通過 `align` 屬性可以讓 Cell 的左右內容都垂直居中。 :::demo -```tsx -import React from 'react' -import { Cell, Button } from '@nutui/nutui-react' -import { ArrowRight, User } from '@nutui/icons-react' - -const App = () => { - const onJumpclick = ( - event: React.MouseEvent, - url: string - ) => { - const replace = false - if (url) { - replace ? window.location.replace(url) : (window.location.href = url) - } - } - return ( - <> - - } - /> - - https://jd.com - - - } - align="center" - onClick={( - event: React.MouseEvent - ) => onJumpclick(event, 'https://jd.com')} - /> - - - - - 我是標題 - - 我是描述 - - - } - extra={ -
- More - -
- } - /> - -
自定義內容
-
- - 我是描述 - - } - extra={} - /> -
- - - - 我是標題 - - } - extra={} - /> - -
自定義內容
-
- Action} /> -
- - - - 我是標題 - - } - /> - -
自定義內容
-
-
- - ) -} -export default App -``` + ::: -### 垂直居中 +### 鏈接 | 分組用法 -通過 `align` 屬性可以讓 Cell 的左右內容都垂直居中。 +使用 `nut-cell-group` 支持 `title` 和 `description` :::demo -```tsx -import React from 'react' -import { Cell } from '@nutui/nutui-react' + -const App = () => { - return ( - - ) -} -export default App -``` +::: + +### 分組用法 + +通過 `divider` 屬性可以讓單元格之間不顯示下邊線。 + +:::demo + + ::: @@ -273,7 +78,7 @@ export default App ### Props -| 属性 | 說明 | 類型 | 默認值 | +| 屬性 | 說明 | 類型 | 默認值 | | --- | --- | --- | --- | | title | 分組標題 | `ReactNode` | `-` | | description | 分組描述 | `ReactNode` | `-` | @@ -283,7 +88,7 @@ export default App ### Props -| 属性 | 說明 | 類型 | 默認值 | +| 屬性 | 說明 | 類型 | 默認值 | | --- | --- | --- | --- | | title | 標題 | `ReactNode` | `-` | | description | 描述 | `ReactNode` | `-` | diff --git a/src/packages/cellgroup/__test__/__snapshots__/cellgroup.spec.tsx.snap b/src/packages/cellgroup/__test__/__snapshots__/cellgroup.spec.tsx.snap index 8afd7c0d25..ae11758e16 100644 --- a/src/packages/cellgroup/__test__/__snapshots__/cellgroup.spec.tsx.snap +++ b/src/packages/cellgroup/__test__/__snapshots__/cellgroup.spec.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`prop title description extra 1`] = `
diff --git a/src/packages/cellgroup/cellgroup.scss b/src/packages/cellgroup/cellgroup.scss index 54fb2aedf2..474cd10275 100644 --- a/src/packages/cellgroup/cellgroup.scss +++ b/src/packages/cellgroup/cellgroup.scss @@ -27,6 +27,7 @@ overflow: hidden; background-color: $cell-group-background-color; margin: 10px 0; + .nut-cell { margin: 0; box-shadow: none; @@ -46,6 +47,7 @@ transform: scaleY(0.5); border-top: $cell-divider-border-bottom; } + &:last-child { .nut-cell-divider { border-top: 0 !important; @@ -54,3 +56,15 @@ } } } + +[dir='rtl'] .nut-cell-group, +.nut-rtl .nut-cell-group { + &-wrap-divider { + .nut-cell { + &-divider { + left: $cell-divider-right; + right: $cell-divider-left; + } + } + } +} diff --git a/src/packages/checkbox/__test__/__snapshots__/checkbox.spec.tsx.snap b/src/packages/checkbox/__test__/__snapshots__/checkbox.spec.tsx.snap index 879f2a9331..43eeb2ebe9 100644 --- a/src/packages/checkbox/__test__/__snapshots__/checkbox.spec.tsx.snap +++ b/src/packages/checkbox/__test__/__snapshots__/checkbox.spec.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`should match snapshot 1`] = ` diff --git a/src/packages/checkbox/__test__/checkbox.spec.tsx b/src/packages/checkbox/__test__/checkbox.spec.tsx index 3931781710..e453285673 100644 --- a/src/packages/checkbox/__test__/checkbox.spec.tsx +++ b/src/packages/checkbox/__test__/checkbox.spec.tsx @@ -12,7 +12,7 @@ test('should match snapshot', () => { }) test('should props correctly', () => { - const handleChange = jest.fn(() => {}) + const handleChange = vi.fn(() => {}) const { container, queryByText, getByTestId } = render( { }) test('should fireEvent correctly', () => { - const handleChange = jest.fn((value) => { + const handleChange = vi.fn((value) => { value }) - const { getByTestId } = render( + const limit = vi.fn() + const { getByTestId, container } = render( - 组合复选框 - 组合复选框 - + + 组合复选框 + + + 组合复选框 + + + 组合复选框 + + 组合复选框 - 组合复选框 ) - fireEvent.click(getByTestId('checkbox')) + fireEvent.click(getByTestId('checkbox3')) expect(handleChange).toBeCalled() expect(handleChange).toBeCalledWith(['1', '3']) expect(getByTestId('group')).toHaveClass('test') + + fireEvent.click(getByTestId('checkbox3')) + fireEvent.click(getByTestId('checkbox1')) + const icons = container.querySelectorAll('.nut-checkbox-icon-checked') + expect(icons.length).toBe(1) + expect(limit).toBeCalledWith('min') + + fireEvent.click(getByTestId('checkbox1')) + fireEvent.click(getByTestId('checkbox2')) + fireEvent.click(getByTestId('checkbox3')) + fireEvent.click(getByTestId('checkbox4')) + expect(limit).toBeCalledWith('max') }) test('Render checkboxs by configuring options', () => { @@ -118,3 +140,54 @@ test('Render checkboxs by configure disabled and indeterminate', () => { container.querySelector('.nut-checkbox-icon-indeterminate') ).toHaveClass('nut-checkbox-icon-disabled') }) + +test('list model should fireEvent correctly', () => { + const handleChange = vi.fn((value) => { + value + }) + const limit = vi.fn() + const { getByTestId, container } = render( + + + 组合复选框 + + + 组合复选框 + + + 组合复选框 + + + 组合复选框 + + + ) + + fireEvent.click(getByTestId('checkbox3')) + + expect(handleChange).toBeCalled() + expect(handleChange).toBeCalledWith(['1', '3']) + + expect(getByTestId('group')).toHaveClass('test') + + fireEvent.click(getByTestId('checkbox3')) + fireEvent.click(getByTestId('checkbox1')) + const icons = container.querySelectorAll('.nut-checkbox-icon-checked') + expect(icons.length).toBe(1) + expect(limit).toBeCalledWith('min') + + fireEvent.click(getByTestId('checkbox1')) + fireEvent.click(getByTestId('checkbox2')) + fireEvent.click(getByTestId('checkbox3')) + fireEvent.click(getByTestId('checkbox4')) + expect(limit).toBeCalledWith('max') +}) diff --git a/src/packages/checkbox/checkbox.scss b/src/packages/checkbox/checkbox.scss index 969a682bd2..f3feea7f10 100644 --- a/src/packages/checkbox/checkbox.scss +++ b/src/packages/checkbox/checkbox.scss @@ -104,6 +104,7 @@ font-size: 12px; width: 12px; height: 12px; + &:before { top: auto; bottom: -22px; @@ -118,4 +119,58 @@ color: $white; border: 1px solid $color-text-disabled; } + + &-list-item { + width: 100%; + display: flex; + justify-content: flex-start; + align-items: center; + padding: $checkbox-list-item-padding; + border-top: $checkbox-list-item-border; + + .nut-checkbox-label { + flex: auto; + } + + .nut-icon { + flex: none; + } + } +} + +[dir='rtl'] .nut-checkbox, +.nut-rtl .nut-checkbox { + &-label { + margin-left: 0; + margin-right: $checkbox-label-margin-left; + } + + &-reverse { + .nut-checkbox-label { + margin-left: $checkbox-label-margin-left; + margin-right: 0; + } + } + + &-button { + &-icon { + right: auto; + left: 0; + border-right: 10px solid transparent; + border-left: 10px solid $color-primary; + + &-checked { + left: auto; + right: 50%; + transform: translate(3px, -3px); + } + + .nut-icon { + &:before { + margin-left: 0; + margin-right: 6px; + } + } + } + } } diff --git a/src/packages/checkbox/checkbox.taro.tsx b/src/packages/checkbox/checkbox.taro.tsx index 3832c0ade1..3e1c55e176 100644 --- a/src/packages/checkbox/checkbox.taro.tsx +++ b/src/packages/checkbox/checkbox.taro.tsx @@ -1,15 +1,18 @@ import React, { FunctionComponent, + ReactNode, useContext, useEffect, useState, } from 'react' import { Checked, CheckDisabled, CheckNormal } from '@nutui/icons-react-taro' import classNames from 'classnames' +import { View } from '@tarojs/components' import CheckboxGroup from '@/packages/checkboxgroup/index.taro' import { BasicComponent, ComponentDefaults } from '@/utils/typings' import Context from '../checkboxgroup/context' import { usePropsValue } from '@/utils/use-props-value' +import { CheckboxLabelPosition } from '@/packages/checkboxgroup/types' export type CheckboxShape = 'button' | 'round' @@ -18,13 +21,13 @@ export interface CheckboxProps extends BasicComponent { disabled: boolean defaultChecked: boolean shape: CheckboxShape - labelPosition: 'left' | 'right' - icon: React.ReactNode - activeIcon: React.ReactNode - indeterminateIcon: React.ReactNode + labelPosition: CheckboxLabelPosition + icon: ReactNode + activeIcon: ReactNode + indeterminateIcon: ReactNode value: string | number indeterminate: boolean - label: string | number + label: ReactNode onChange: (value: boolean) => void } @@ -134,6 +137,9 @@ export const Checkbox: FunctionComponent< if (innerChecked && !innerIndeterminate) { return `${cls}${classPrefix}-icon-checked ${classPrefix}-icon-disabled` } + if (innerChecked && innerIndeterminate) { + return `${cls}${classPrefix}-icon-indeterminate ${classPrefix}-icon-disabled` + } return `${cls}${classPrefix}-icon-disabled` } if (innerChecked) { @@ -161,16 +167,13 @@ export const Checkbox: FunctionComponent< if (disabled) return // 先转换状态 const latestChecked = !innerChecked - // 判断是不是有 context 和 max,有的话需要判断是不是超过最大限制 - if (ctx && ctx.max !== undefined) { - if (latestChecked && ctx.value.length >= ctx.max) return - } + setChecked(latestChecked) } const renderButton = () => { return ( -
{children || label} {innerChecked && activeIcon ? ( -
+ {activeIcon} -
+ ) : null} -
+ + ) + } + + const renderListItem = () => { + return ( + + {renderLabel()} + {renderIcon()} + ) } const renderCheckboxItem = () => { + if (ctx?.list) { + return <>{renderListItem()} + } if (shape === 'button') { return renderButton() } @@ -199,7 +214,7 @@ export const Checkbox: FunctionComponent< } return ( -
{renderCheckboxItem()} -
+ ) } diff --git a/src/packages/checkbox/checkbox.tsx b/src/packages/checkbox/checkbox.tsx index 9e27d9b350..7f6ba0ac7c 100644 --- a/src/packages/checkbox/checkbox.tsx +++ b/src/packages/checkbox/checkbox.tsx @@ -1,5 +1,6 @@ import React, { FunctionComponent, + ReactNode, useContext, useEffect, useState, @@ -10,6 +11,7 @@ import CheckboxGroup from '@/packages/checkboxgroup' import { BasicComponent, ComponentDefaults } from '@/utils/typings' import Context from '../checkboxgroup/context' import { usePropsValue } from '@/utils/use-props-value' +import { CheckboxLabelPosition } from '@/packages/checkboxgroup/types' export type CheckboxShape = 'button' | 'round' @@ -18,13 +20,13 @@ export interface CheckboxProps extends BasicComponent { disabled: boolean defaultChecked: boolean shape: CheckboxShape - labelPosition: 'left' | 'right' - icon: React.ReactNode - activeIcon: React.ReactNode - indeterminateIcon: React.ReactNode + labelPosition: CheckboxLabelPosition + icon: ReactNode + activeIcon: ReactNode + indeterminateIcon: ReactNode value: string | number indeterminate: boolean - label: string | number + label: ReactNode onChange: (value: boolean) => void } @@ -164,10 +166,7 @@ export const Checkbox: FunctionComponent< if (disabled) return // 先转换状态 const latestChecked = !innerChecked - // 判断是不是有 context 和 max,有的话需要判断是不是超过最大限制 - if (ctx && ctx.max !== undefined) { - if (latestChecked && ctx.value.length >= ctx.max) return - } + setChecked(latestChecked) } @@ -189,7 +188,19 @@ export const Checkbox: FunctionComponent< ) } + const renderListItem = () => { + return ( +
+ {renderLabel()} + {renderIcon()} +
+ ) + } + const renderCheckboxItem = () => { + if (ctx?.list) { + return <>{renderListItem()} + } if (shape === 'button') { return renderButton() } diff --git a/src/packages/checkbox/demo.taro.tsx b/src/packages/checkbox/demo.taro.tsx index ee5718d12e..5e4645eb6a 100644 --- a/src/packages/checkbox/demo.taro.tsx +++ b/src/packages/checkbox/demo.taro.tsx @@ -1,523 +1,112 @@ -import React, { useRef, useState } from 'react' +import React from 'react' import Taro from '@tarojs/taro' -import { Checklist } from '@nutui/icons-react-taro' import { useTranslate } from '@/sites/assets/locale/taro' -import { Button, Cell, Checkbox } from '@/packages/nutui.react.taro' import Header from '@/sites/components/header' - -interface T { - uncontrolled: string - controlled: string - basic: string - checkbox: string - disbaled: string - DisabledState: string - selective: string - disabledState: string - disabledSelectiveState: string - customSize: string - customIcon: string - triggerEvent: string - uncheckedx: string - checked: string - cancel: string - reverse: string - selected: string - options1: string - Disabled: string - selectAndCancel: string - selectAll: string - cancelSelection: string - options: string - max: string - threeState: string -} +import Demo1 from './demos/taro/demo1' +import Demo2 from './demos/taro/demo2' +import Demo3 from './demos/taro/demo3' +import Demo4 from './demos/taro/demo4' +import Demo5 from './demos/taro/demo5' +import Demo6 from './demos/taro/demo6' +import Demo7 from './demos/taro/demo7' +import Demo8 from './demos/taro/demo8' +import Demo9 from './demos/taro/demo9' +import Demo10 from './demos/taro/demo10' +import Demo11 from './demos/taro/demo11' +import Demo12 from './demos/taro/demo12' +import Demo13 from './demos/taro/demo13' +import Demo14 from './demos/taro/demo14' +import Demo15 from './demos/taro/demo15' const CheckboxDemo = () => { - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { uncontrolled: '非受控', controlled: '受控', basic: '基础用法', checkbox: '复选框', disbaled: '禁用状态', - DisabledState: '未选时禁用状态', selective: '半选状态', - disabledState: '选中时禁用状态', - disabledSelectiveState: '半选时禁用状态', customSize: '自定义尺寸', customIcon: '自定义图标', triggerEvent: '点击触发事件', - uncheckedx: '取消选中', - checked: '选中', - cancel: '取消', - selected: '选中', - options1: '选项', Disabled: '禁用', selectAndCancel: '全选和取消', - selectAll: '全选', - cancelSelection: '取消全选', - reverse: '反选', options: '配置 options 渲染复选按钮', - max: 'checkboxGroup使用,限制最大可选数(2个)', + max: 'checkboxGroup使用,限制最大可选数(3个), 至少选择数(1个)', threeState: '全选/半选/取消', + list: '列表', }, 'zh-TW': { uncontrolled: '非受控', controlled: '受控', - basic: '基础用法', - checkbox: '複選框', + basic: '基礎用法', + checkbox: '復選框', disbaled: '禁用狀態', - DisabledState: '未選時禁用狀態', - selective: '半选状态', - disabledState: '選中時禁用狀態', - disabledSelectiveState: '半選時禁用狀態', + selective: '半選狀態', customSize: '自定義尺寸', - customIcon: '自定義圖示', + customIcon: '自定義圖標', triggerEvent: '點擊觸發事件', - uncheckedx: '取消选中', - checked: '選中', - cancel: '取消', - selected: '您選取了x', - options1: '選項', Disabled: '禁用', selectAndCancel: '全選和取消', - selectAll: '全選', - cancelSelection: '取消全選', - reverse: '反選', - options: '配置 options 渲染複選按鈕', - max: 'checkboxGroup使用,限制最大可选数(2个)', - threeState: '全选/半选/取消', + options: '配置 options 渲染復選按鈕', + max: 'checkboxGroup使用,限製最大可選數(3個), 至少選擇數(1個)', + threeState: '全選/半選/取消', + list: '列表', }, 'en-US': { - uncontrolled: 'uncontrolled', - controlled: 'controlled', + uncontrolled: 'Uncontrolled', + controlled: 'Controlled', basic: 'Basic Usage', checkbox: 'Checkbox', disbaled: 'Disabled State', - DisabledState: 'Disabled state', - selective: 'Semi selective', - disabledState: 'Disabled state', - disabledSelectiveState: 'Semi selective Disabled', - customSize: 'Custom size', + selective: 'Half-selected State', + customSize: 'Custom Size', customIcon: 'Custom Icon', triggerEvent: 'Click Trigger Event', - uncheckedx: 'You unchecked x', - checked: 'Checked', - cancel: 'Cancel', - selected: 'You selected x', - options1: 'Options', - Disabled: 'Disabled', - selectAndCancel: 'All Select and Cancel', - selectAll: 'Select All', - reverse: 'reverse', - cancelSelection: 'Cancel All Selection', - options: 'Render radios by configuring options', - max: 'Used by checkboxGroup, limit the maximum number of options (2)', + Disabled: 'Checkbox.Group Disabled', + selectAndCancel: 'Select All And Cancel', + options: 'Configure Options To Render Check Buttons', + max: 'Used by checkboxGroup, limit the maximum number of options (3), and the minimum number of choices (1)', threeState: 'Select All/Half/Cancel', + list: 'List', }, }) - const [checked] = useState(false) - const [checkbox1, setCheckbox1] = useState(false) - const [indeterminate, setIndeterminate] = useState(false) - const [checkboxgroup1, setCheckboxgroup1] = useState(['1']) - const [checkboxgroup2] = useState(['1']) - const [checkboxgroup3] = useState(['1']) - const [checkboxgroup4] = useState([]) - const [checkboxgroup5] = useState([]) - const checkboxgroup2Ref = useRef(null) - const checkboxgroup3Ref = useRef(null) - const [optionsDemo1] = useState([ - { - label: '选项 1', - value: '1', - }, - { - label: '选项 2', - value: '2', - disabled: true, - }, - { - label: '选项 3', - value: '3', - }, - ]) - - const [controlled, setControlled] = useState(false) - const [controlledGroup, setControlledGroup] = useState(['2']) - return ( <>

{translated.uncontrolled}

- - - - - - - } - className="test" - label={translated.checkbox} - defaultChecked={checked} - /> - - +

{translated.controlled}

- - setControlled(val)} - /> - - - setControlledGroup(value)} - > - - - - - - - - - setControlledGroup(value)} - > - - } - shape="button" - value="1" - label={optionsDemo1[0].label} - /> - - } - shape="button" - value="2" - label={optionsDemo1[1].label} - /> - - } - shape="button" - value="3" - label={optionsDemo1[2].label} - disabled - /> - - +

{translated.basic}

- - - - - - - - - - - - +

{translated.selective}

- - - +

{translated.disbaled}

- - - - - - - - - +

{translated.customSize}

- - - - - - +

{translated.customIcon}

- - } - activeIcon={} - > - {translated.customIcon} - - - - - } - activeIcon={} - > - {translated.customIcon} - - } - activeIcon={} - > - {translated.customIcon} - - - +

{translated.triggerEvent}

- - { - if (state) { - Taro.showToast({ - icon: 'none', - title: translated.selected.replace('x', state.toString()), - }) - } else { - Taro.showToast({ - icon: 'none', - title: translated.uncheckedx.replace('x', state.toString()), - }) - } - }} - > - {translated.checkbox} - - +

Checkbox.Group

- - { - Taro.showToast({ - icon: 'none', - title: value.toString(), - }) - setCheckboxgroup1(value) - }} - > - {translated.options1} - {translated.options1} - {translated.options1} - {translated.options1} - - - - - {translated.checked}:{checkboxgroup1.toString()} - - +

{translated.Disabled}

- - - {translated.options1} - {translated.options1} - {translated.options1} - {translated.options1} - - +

{translated.selectAndCancel}

- - { - Taro.showToast({ - icon: 'none', - title: `${ - value.length === 4 - ? translated.selectAll - : translated.cancelSelection - }`, - }) - }} - > - {translated.options1} - {translated.options1} - {translated.options1} - {translated.options1} - - - - - - - +

{translated.max}

- - { - Taro.showToast({ - title: value.toString(), - icon: 'none', - }) - }} - > - {translated.options1} - {translated.options1} - {translated.options1} - {translated.options1} - - +

{translated.threeState}

- -
- { - if (state) { - setIndeterminate(false) - } - setCheckbox1(state) - ;(checkboxgroup3Ref.current as any).toggle(state) - }} - > - {translated.selectAll} - -
- - { - if (value.length === 4) { - setIndeterminate(false) - setCheckbox1(true) - } else if (value.length && value.length < 4) { - setIndeterminate(true) - setCheckbox1(true) - } else { - setCheckbox1(false) - } - }} - > - {translated.options1} - {translated.options1} - {translated.options1} - {translated.options1} - -
+

{translated.options}

- - - + +

{translated.list}

+
) diff --git a/src/packages/checkbox/demo.tsx b/src/packages/checkbox/demo.tsx index 8ff9683974..50fc4dd753 100644 --- a/src/packages/checkbox/demo.tsx +++ b/src/packages/checkbox/demo.tsx @@ -1,500 +1,109 @@ -import React, { useRef, useState } from 'react' -import { Checklist } from '@nutui/icons-react' +import React from 'react' import { useTranslate } from '../../sites/assets/locale' -import Toast from '../toast' -import { Cell } from '../cell/cell' -import { Checkbox } from './checkbox' -import Button from '@/packages/button' - -interface T { - uncontrolled: string - controlled: string - basic: string - checkbox: string - disbaled: string - DisabledState: string - selective: string - disabledState: string - disabledSelectiveState: string - customSize: string - customIcon: string - triggerEvent: string - uncheckedx: string - checked: string - cancel: string - reverse: string - selected: string - options1: string - Disabled: string - selectAndCancel: string - selectAll: string - cancelSelection: string - options: string - max: string - threeState: string -} +import Demo1 from './demos/h5/demo1' +import Demo2 from './demos/h5/demo2' +import Demo3 from './demos/h5/demo3' +import Demo4 from './demos/h5/demo4' +import Demo5 from './demos/h5/demo5' +import Demo6 from './demos/h5/demo6' +import Demo7 from './demos/h5/demo7' +import Demo8 from './demos/h5/demo8' +import Demo9 from './demos/h5/demo9' +import Demo10 from './demos/h5/demo10' +import Demo11 from './demos/h5/demo11' +import Demo12 from './demos/h5/demo12' +import Demo13 from './demos/h5/demo13' +import Demo14 from './demos/h5/demo14' +import Demo15 from './demos/h5/demo15' const CheckboxDemo = () => { - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { uncontrolled: '非受控', controlled: '受控', basic: '基础用法', checkbox: '复选框', disbaled: '禁用状态', - DisabledState: '未选时禁用状态', selective: '半选状态', - disabledState: '选中时禁用状态', - disabledSelectiveState: '半选时禁用状态', customSize: '自定义尺寸', customIcon: '自定义图标', triggerEvent: '点击触发事件', - uncheckedx: '取消选中', - checked: '选中', - cancel: '取消', - selected: '选中', - options1: '选项', Disabled: '禁用', selectAndCancel: '全选和取消', - selectAll: '全选', - cancelSelection: '取消全选', - reverse: '反选', options: '配置 options 渲染复选按钮', - max: 'checkboxGroup使用,限制最大可选数(2个)', + max: 'checkboxGroup使用,限制最大可选数(3个), 至少选择数(1个)', threeState: '全选/半选/取消', + list: '列表', }, 'zh-TW': { uncontrolled: '非受控', controlled: '受控', - basic: '基础用法', - checkbox: '複選框', + basic: '基礎用法', + checkbox: '復選框', disbaled: '禁用狀態', - DisabledState: '未選時禁用狀態', - selective: '半选状态', - disabledState: '選中時禁用狀態', - disabledSelectiveState: '半選時禁用狀態', + selective: '半選狀態', customSize: '自定義尺寸', - customIcon: '自定義圖示', + customIcon: '自定義圖標', triggerEvent: '點擊觸發事件', - uncheckedx: '取消选中', - checked: '選中', - cancel: '取消', - selected: '您選取了x', - options1: '選項', Disabled: '禁用', selectAndCancel: '全選和取消', - selectAll: '全選', - cancelSelection: '取消全選', - reverse: '反選', - options: '配置 options 渲染複選按鈕', - max: 'checkboxGroup使用,限制最大可选数(2个)', - threeState: '全选/半选/取消', + options: '配置 options 渲染復選按鈕', + max: 'checkboxGroup使用,限製最大可選數(3個), 至少選擇數(1個)', + threeState: '全選/半選/取消', + list: '列表', }, 'en-US': { - uncontrolled: 'uncontrolled', - controlled: 'controlled', + uncontrolled: 'Uncontrolled', + controlled: 'Controlled', basic: 'Basic Usage', checkbox: 'Checkbox', disbaled: 'Disabled State', - DisabledState: 'Disabled state', - selective: 'Semi selective', - disabledState: 'Disabled state', - disabledSelectiveState: 'Semi selective Disabled', - customSize: 'Custom size', + selective: 'Half-selected State', + customSize: 'Custom Size', customIcon: 'Custom Icon', triggerEvent: 'Click Trigger Event', - uncheckedx: 'You unchecked x', - checked: 'Checked', - cancel: 'Cancel', - selected: 'You selected x', - options1: 'Options', - Disabled: 'Disabled', - selectAndCancel: 'All Select and Cancel', - selectAll: 'Select All', - reverse: 'reverse', - cancelSelection: 'Cancel All Selection', - options: 'Render radios by configuring options', - max: 'Used by checkboxGroup, limit the maximum number of options (2)', + Disabled: 'Checkbox.Group Disabled', + selectAndCancel: 'Select All And Cancel', + options: 'Configure Options To Render Check Buttons', + max: 'Used by checkboxGroup, limit the maximum number of options (3), and the minimum number of choices (1)', threeState: 'Select All/Half/Cancel', + list: 'List', }, }) - const [checked] = useState(false) - const [checkbox1, setCheckbox1] = useState(false) - const [indeterminate, setIndeterminate] = useState(false) - const [checkboxgroup1, setCheckboxgroup1] = useState(['1']) - const [checkboxgroup2] = useState(['1']) - const [checkboxgroup3] = useState(['1']) - const [checkboxgroup4] = useState([]) - const [checkboxgroup5] = useState([]) - const checkboxgroup2Ref = useRef(null) - const checkboxgroup3Ref = useRef(null) - const [optionsDemo1] = useState([ - { - label: '选项 1', - value: '1', - }, - { - label: '选项 2', - value: '2', - disabled: true, - }, - { - label: '选项 3', - value: '3', - }, - ]) - - const [controlled, setControlled] = useState(false) - const [controlledGroup, setControlledGroup] = useState(['2']) - return ( <>

{translated.uncontrolled}

- - - - - - - } - className="test" - label={translated.checkbox} - defaultChecked={checked} - /> - - +

{translated.controlled}

- - setControlled(val)} - /> - - - setControlledGroup(value)} - > - - - - - - - - - setControlledGroup(value)} - > - - } - shape="button" - value="1" - label={optionsDemo1[0].label} - /> - - } - shape="button" - value="2" - label={optionsDemo1[1].label} - /> - - } - shape="button" - value="3" - label={optionsDemo1[2].label} - disabled - /> - - +

{translated.basic}

- - - - - - - - - - - - +

{translated.selective}

- - - +

{translated.disbaled}

- - - - - - - - - +

{translated.customSize}

- - - - - - +

{translated.customIcon}

- - } - activeIcon={} - > - {translated.customIcon} - - - - - } - activeIcon={} - > - {translated.customIcon} - - } - activeIcon={} - > - {translated.customIcon} - - - +

{translated.triggerEvent}

- - { - if (state) { - Toast.show(translated.selected.replace('x', state.toString())) - } else { - Toast.show(translated.uncheckedx.replace('x', state.toString())) - } - }} - > - {translated.checkbox} - - +

Checkbox.Group

- - { - // Toast.show(value) - setCheckboxgroup1(value) - }} - > - {translated.options1} - {translated.options1} - {translated.options1} - {translated.options1} - - - - - {translated.checked}:{checkboxgroup1.toString()} - - +

{translated.Disabled}

- - - {translated.options1} - {translated.options1} - {translated.options1} - {translated.options1} - - +

{translated.selectAndCancel}

- - { - Toast.show( - `${ - value.length === 4 - ? translated.selectAll - : translated.cancelSelection - }` - ) - }} - > - {translated.options1} - {translated.options1} - {translated.options1} - {translated.options1} - - - - - - - +

{translated.max}

- - - {translated.options1} - {translated.options1} - {translated.options1} - {translated.options1} - - +

{translated.threeState}

- -
- { - if (state) { - setIndeterminate(false) - } - setCheckbox1(state) - ;(checkboxgroup3Ref.current as any).toggle(state) - }} - > - {translated.selectAll} - -
- - { - if (value.length === 4) { - setIndeterminate(false) - setCheckbox1(true) - } else if (value.length && value.length < 4) { - setIndeterminate(true) - setCheckbox1(true) - } else { - setCheckbox1(false) - } - }} - > - {translated.options1} - {translated.options1} - {translated.options1} - {translated.options1} - -
+

{translated.options}

- - - + +

{translated.list}

+
) diff --git a/src/packages/checkbox/demos/h5/demo1.tsx b/src/packages/checkbox/demos/h5/demo1.tsx new file mode 100644 index 0000000000..8d5225d767 --- /dev/null +++ b/src/packages/checkbox/demos/h5/demo1.tsx @@ -0,0 +1,74 @@ +import React, { useState } from 'react' +import { Checklist } from '@nutui/icons-react' +import { Cell, Checkbox } from '@nutui/nutui-react' + +const Demo1 = () => { + const [checked] = useState(false) + return ( + <> + + + + + +
复选框
+
描述信息
+
+ } + defaultChecked={!checked} + /> + + } + className="test" + label={ +
+
复选框
+
描述信息
+
+ } + defaultChecked={checked} + /> + +
复选框
+
描述信息
+ + } + defaultChecked={checked} + /> +
+ + ) +} +export default Demo1 diff --git a/src/packages/checkbox/demos/h5/demo10.tsx b/src/packages/checkbox/demos/h5/demo10.tsx new file mode 100644 index 0000000000..9e5952a49e --- /dev/null +++ b/src/packages/checkbox/demos/h5/demo10.tsx @@ -0,0 +1,21 @@ +import React, { useState } from 'react' +import { Checkbox, Cell } from '@nutui/nutui-react' + +const Demo10 = () => { + const [checkboxgroup1, setCheckboxgroup1] = useState(['1']) + return ( + + + 选项 + 选项 + 选项 + 选项 + + + ) +} +export default Demo10 diff --git a/src/packages/checkbox/demos/h5/demo11.tsx b/src/packages/checkbox/demos/h5/demo11.tsx new file mode 100644 index 0000000000..abe5e8aca6 --- /dev/null +++ b/src/packages/checkbox/demos/h5/demo11.tsx @@ -0,0 +1,55 @@ +import React, { useState, useRef } from 'react' +import { Checkbox, Button, Toast, Cell } from '@nutui/nutui-react' + +const Demo11 = () => { + const [checkboxgroup2, setCheckboxgroup2] = useState(['1']) + const checkboxgroup2Ref = useRef(null) + return ( + <> + + { + Toast.show(`${value.length === 4 ? '全选' : '取消全选'}`) + }} + > + 选项 + 选项 + 选项 + 选项 + + + + + + + + + ) +} +export default Demo11 diff --git a/src/packages/checkbox/demos/h5/demo12.tsx b/src/packages/checkbox/demos/h5/demo12.tsx new file mode 100644 index 0000000000..bd55010f4d --- /dev/null +++ b/src/packages/checkbox/demos/h5/demo12.tsx @@ -0,0 +1,24 @@ +import React, { useState } from 'react' +import { Checkbox, Toast, Cell } from '@nutui/nutui-react' + +const Demo12 = () => { + const [checkboxgroup, setCheckboxgroup] = useState(['1']) + return ( + + + Toast.show(type === 'max' ? '最多选择3项' : '至少选择1项') + } + > + 选项 + 选项 + 选项 + 选项 + + + ) +} +export default Demo12 diff --git a/src/packages/checkbox/demos/h5/demo13.tsx b/src/packages/checkbox/demos/h5/demo13.tsx new file mode 100644 index 0000000000..c0d4cf394e --- /dev/null +++ b/src/packages/checkbox/demos/h5/demo13.tsx @@ -0,0 +1,51 @@ +import React, { useState, useRef } from 'react' +import { Checkbox, Cell } from '@nutui/nutui-react' + +const Demo13 = () => { + const [checkboxgroup, setCheckboxgroup] = useState(['1']) + const checkboxgroupRef = useRef(null) + const [checkbox1, setCheckbox1] = useState(false) + const [indeterminate, setIndeterminate] = useState(false) + return ( + +
+ { + if (state) { + setIndeterminate(false) + } + setCheckbox1(state) + ;(checkboxgroupRef.current as any).toggle(state) + }} + > + 全选 + +
+ + { + if (value.length === 4) { + setIndeterminate(false) + setCheckbox1(true) + } else if (value.length && value.length < 4) { + setIndeterminate(true) + setCheckbox1(true) + } else { + setCheckbox1(false) + } + }} + > + 选项 + 选项 + 选项 + 选项 + +
+ ) +} +export default Demo13 diff --git a/src/packages/checkbox/demos/h5/demo14.tsx b/src/packages/checkbox/demos/h5/demo14.tsx new file mode 100644 index 0000000000..3c631ddc2b --- /dev/null +++ b/src/packages/checkbox/demos/h5/demo14.tsx @@ -0,0 +1,27 @@ +import React, { useState } from 'react' +import { Checkbox, Cell } from '@nutui/nutui-react' + +const Demo14 = () => { + const [checkboxgroup] = useState([]) + const [optionsDemo1] = useState([ + { + label: '选项1', + value: '1', + }, + { + label: '选项2', + value: '2', + disabled: true, + }, + { + label: '选项3', + value: '3', + }, + ]) + return ( + + + + ) +} +export default Demo14 diff --git a/src/packages/checkbox/demos/h5/demo15.tsx b/src/packages/checkbox/demos/h5/demo15.tsx new file mode 100644 index 0000000000..87fd46c2cb --- /dev/null +++ b/src/packages/checkbox/demos/h5/demo15.tsx @@ -0,0 +1,30 @@ +import React, { useState } from 'react' +import { Checkbox, Cell } from '@nutui/nutui-react' + +const Demo15 = () => { + const [optionsDemo1] = useState([ + { + label: '选项 1', + value: '1', + }, + { + label: '选项 2', + value: '2', + disabled: true, + }, + { + label: '选项 3', + value: '3', + }, + ]) + return ( + + + + + + + + ) +} +export default Demo15 diff --git a/src/packages/checkbox/demos/h5/demo2.tsx b/src/packages/checkbox/demos/h5/demo2.tsx new file mode 100644 index 0000000000..ca7597509b --- /dev/null +++ b/src/packages/checkbox/demos/h5/demo2.tsx @@ -0,0 +1,83 @@ +import React, { useState } from 'react' +import { Checkbox, Cell } from '@nutui/nutui-react' +import { Checklist } from '@nutui/icons-react' + +const Demo2 = () => { + const [controlled, setControlled] = useState(false) + const [controlledGroup, setControlledGroup] = useState(['2']) + const [optionsDemo1] = useState([ + { + label: '选项 1', + value: '1', + }, + { + label: '选项 2', + value: '2', + disabled: true, + }, + { + label: '选项 3', + value: '3', + }, + ]) + return ( + <> + + setControlled(val)} + /> + + + + setControlledGroup(value)} + > + + + + + + + + + setControlledGroup(value)} + > + + } + shape="button" + value="1" + label={optionsDemo1[0].label} + /> + + } + shape="button" + value="2" + label={optionsDemo1[1].label} + /> + + } + shape="button" + value="3" + label={optionsDemo1[2].label} + disabled + /> + + + + ) +} +export default Demo2 diff --git a/src/packages/checkbox/demos/h5/demo3.tsx b/src/packages/checkbox/demos/h5/demo3.tsx new file mode 100644 index 0000000000..4597f5dbdc --- /dev/null +++ b/src/packages/checkbox/demos/h5/demo3.tsx @@ -0,0 +1,43 @@ +import React, { useState } from 'react' +import { Checkbox, Cell } from '@nutui/nutui-react' + +const Demo3 = () => { + const [checked, setChecked] = useState(true) + const [optionsDemo1] = useState([ + { + label: '选项 1', + value: '1', + }, + { + label: '选项 2', + value: '2', + disabled: true, + }, + { + label: '选项 3', + value: '3', + }, + ]) + return ( + <> + + + + + + + + + + + + + + ) +} +export default Demo3 diff --git a/src/packages/checkbox/demos/h5/demo4.tsx b/src/packages/checkbox/demos/h5/demo4.tsx new file mode 100644 index 0000000000..f994172646 --- /dev/null +++ b/src/packages/checkbox/demos/h5/demo4.tsx @@ -0,0 +1,11 @@ +import React from 'react' +import { Checkbox, Cell } from '@nutui/nutui-react' + +const Demo4 = () => { + return ( + + + + ) +} +export default Demo4 diff --git a/src/packages/checkbox/demos/h5/demo5.tsx b/src/packages/checkbox/demos/h5/demo5.tsx new file mode 100644 index 0000000000..f8bd17600b --- /dev/null +++ b/src/packages/checkbox/demos/h5/demo5.tsx @@ -0,0 +1,35 @@ +import React from 'react' +import { Checkbox, Cell } from '@nutui/nutui-react' + +const Demo5 = () => { + return ( + <> + + + + + + + + + + + ) +} +export default Demo5 diff --git a/src/packages/checkbox/demos/h5/demo6.tsx b/src/packages/checkbox/demos/h5/demo6.tsx new file mode 100644 index 0000000000..bf67b3206b --- /dev/null +++ b/src/packages/checkbox/demos/h5/demo6.tsx @@ -0,0 +1,22 @@ +import React from 'react' +import { Checkbox, Cell } from '@nutui/nutui-react' + +const Demo6 = () => { + return ( + <> + + + + + + + + ) +} +export default Demo6 diff --git a/src/packages/checkbox/demos/h5/demo7.tsx b/src/packages/checkbox/demos/h5/demo7.tsx new file mode 100644 index 0000000000..420fe6fd40 --- /dev/null +++ b/src/packages/checkbox/demos/h5/demo7.tsx @@ -0,0 +1,44 @@ +import React from 'react' +import { Checkbox, Cell } from '@nutui/nutui-react' +import { Checklist } from '@nutui/icons-react' + +const Demo7 = () => { + return ( + <> + + } + activeIcon={} + > + 自定义图标 + + + + + } + activeIcon={} + > + 自定义图标 + + } + activeIcon={} + > + 自定义图标 + + + + + ) +} +export default Demo7 diff --git a/src/packages/checkbox/demos/h5/demo8.tsx b/src/packages/checkbox/demos/h5/demo8.tsx new file mode 100644 index 0000000000..fee93fbf1d --- /dev/null +++ b/src/packages/checkbox/demos/h5/demo8.tsx @@ -0,0 +1,22 @@ +import React from 'react' +import { Checkbox, Toast, Cell } from '@nutui/nutui-react' + +const Demo8 = () => { + return ( + + { + if (state) { + Toast.show('选中') + } else { + Toast.show('取消选中') + } + }} + > + 复选框 + + + ) +} +export default Demo8 diff --git a/src/packages/checkbox/demos/h5/demo9.tsx b/src/packages/checkbox/demos/h5/demo9.tsx new file mode 100644 index 0000000000..c6bdbd4f99 --- /dev/null +++ b/src/packages/checkbox/demos/h5/demo9.tsx @@ -0,0 +1,28 @@ +import React, { useState } from 'react' +import { Checkbox, Cell } from '@nutui/nutui-react' + +const Demo9 = () => { + const [checkboxgroup1, setCheckboxgroup1] = useState(['1']) + return ( + <> + + { + setCheckboxgroup1(value) + }} + > + 选项 + 选项 + 选项 + 选项 + + + + 选中:{checkboxgroup1.toString()} + + + ) +} +export default Demo9 diff --git a/src/packages/checkbox/demos/taro/demo1.tsx b/src/packages/checkbox/demos/taro/demo1.tsx new file mode 100644 index 0000000000..bdc1678904 --- /dev/null +++ b/src/packages/checkbox/demos/taro/demo1.tsx @@ -0,0 +1,74 @@ +import React, { useState } from 'react' +import { Checklist } from '@nutui/icons-react-taro' +import { Cell, Checkbox } from '@nutui/nutui-react-taro' + +const Demo1 = () => { + const [checked] = useState(false) + return ( + <> + + + + + +
复选框
+
描述信息
+ + } + defaultChecked={!checked} + /> + + } + className="test" + label={ +
+
复选框
+
描述信息
+
+ } + defaultChecked={checked} + /> + +
复选框
+
描述信息
+ + } + defaultChecked={checked} + /> +
+ + ) +} +export default Demo1 diff --git a/src/packages/checkbox/demos/taro/demo10.tsx b/src/packages/checkbox/demos/taro/demo10.tsx new file mode 100644 index 0000000000..2fdd089965 --- /dev/null +++ b/src/packages/checkbox/demos/taro/demo10.tsx @@ -0,0 +1,21 @@ +import React, { useState } from 'react' +import { Checkbox, Cell } from '@nutui/nutui-react-taro' + +const Demo10 = () => { + const [checkboxgroup1] = useState(['1']) + return ( + + + 选项 + 选项 + 选项 + 选项 + + + ) +} +export default Demo10 diff --git a/src/packages/checkbox/demos/taro/demo11.tsx b/src/packages/checkbox/demos/taro/demo11.tsx new file mode 100644 index 0000000000..02fec3f2a1 --- /dev/null +++ b/src/packages/checkbox/demos/taro/demo11.tsx @@ -0,0 +1,66 @@ +import React, { useState, useRef } from 'react' +import { Checkbox, Button, Toast, Cell } from '@nutui/nutui-react-taro' + +const Demo11 = () => { + const [checkboxgroup2, setCheckboxgroup2] = useState(['1']) + const checkboxgroup2Ref = useRef(null) + const [showToast, setShowToast] = useState(false) + const [content, setContent] = useState('') + const handleChange = (value: any) => { + setContent(`${value.length === 4 ? '全选' : '取消全选'}`) + setShowToast(true) + } + return ( + <> + + { + setShowToast(false) + }} + /> + handleChange(value)} + > + 选项 + 选项 + 选项 + 选项 + + + + + + + + + ) +} +export default Demo11 diff --git a/src/packages/checkbox/demos/taro/demo12.tsx b/src/packages/checkbox/demos/taro/demo12.tsx new file mode 100644 index 0000000000..6d773169f0 --- /dev/null +++ b/src/packages/checkbox/demos/taro/demo12.tsx @@ -0,0 +1,35 @@ +import React, { useState } from 'react' +import { Checkbox, Toast, Cell } from '@nutui/nutui-react-taro' + +const Demo12 = () => { + const [checkboxgroup2, setCheckboxgroup2] = useState(['1']) + const [showToast, setShowToast] = useState(false) + const [content, setContent] = useState('') + const handleLimit = (type: any) => { + setContent(type === 'max' ? '最多选择3项' : '至少选择1项') + setShowToast(true) + } + return ( + + { + setShowToast(false) + }} + /> + handleLimit(type)} + > + 选项 + 选项 + 选项 + 选项 + + + ) +} +export default Demo12 diff --git a/src/packages/checkbox/demos/taro/demo13.tsx b/src/packages/checkbox/demos/taro/demo13.tsx new file mode 100644 index 0000000000..34f31fc037 --- /dev/null +++ b/src/packages/checkbox/demos/taro/demo13.tsx @@ -0,0 +1,53 @@ +import React, { useState, useRef } from 'react' +import { Checkbox, Cell } from '@nutui/nutui-react-taro' + +const Demo13 = () => { + const [checkboxgroup2, setCheckboxgroup2] = useState(['1']) + const checkboxgroup2Ref = useRef(null) + const [checkbox1, setCheckbox1] = useState(false) + const [indeterminate, setIndeterminate] = useState(false) + return ( + <> + +
+ { + if (state) { + setIndeterminate(false) + } + setCheckbox1(state) + ;(checkboxgroup2Ref.current as any).toggle(state) + }} + > + 全选 + +
+ + { + if (value.length === 4) { + setIndeterminate(false) + setCheckbox1(true) + } else if (value.length && value.length < 4) { + setIndeterminate(true) + setCheckbox1(true) + } else { + setCheckbox1(false) + } + }} + > + 选项 + 选项 + 选项 + 选项 + +
+ + ) +} +export default Demo13 diff --git a/src/packages/checkbox/demos/taro/demo14.tsx b/src/packages/checkbox/demos/taro/demo14.tsx new file mode 100644 index 0000000000..ea53c607f6 --- /dev/null +++ b/src/packages/checkbox/demos/taro/demo14.tsx @@ -0,0 +1,27 @@ +import React, { useState } from 'react' +import { Checkbox, Cell } from '@nutui/nutui-react-taro' + +const Demo14 = () => { + const [checkboxVal] = useState(['1']) + const [optionsDemo1] = useState([ + { + label: '选项1', + value: '1', + }, + { + label: '选项2', + value: '2', + disabled: true, + }, + { + label: '选项3', + value: '3', + }, + ]) + return ( + + + + ) +} +export default Demo14 diff --git a/src/packages/checkbox/demos/taro/demo15.tsx b/src/packages/checkbox/demos/taro/demo15.tsx new file mode 100644 index 0000000000..5e1e15776c --- /dev/null +++ b/src/packages/checkbox/demos/taro/demo15.tsx @@ -0,0 +1,13 @@ +import React from 'react' +import { Checkbox } from '@nutui/nutui-react-taro' + +const Demo15 = () => { + return ( + + + + + + ) +} +export default Demo15 diff --git a/src/packages/checkbox/demos/taro/demo2.tsx b/src/packages/checkbox/demos/taro/demo2.tsx new file mode 100644 index 0000000000..c817562316 --- /dev/null +++ b/src/packages/checkbox/demos/taro/demo2.tsx @@ -0,0 +1,82 @@ +import React, { useState } from 'react' +import { Checkbox, Cell } from '@nutui/nutui-react-taro' +import { Checklist } from '@nutui/icons-react-taro' + +const Demo2 = () => { + const [controlled, setControlled] = useState(false) + const [controlledGroup, setControlledGroup] = useState(['2']) + const [optionsDemo1] = useState([ + { + label: '选项 1', + value: '1', + }, + { + label: '选项 2', + value: '2', + disabled: true, + }, + { + label: '选项 3', + value: '3', + }, + ]) + return ( + <> + + setControlled(val)} + /> + + + setControlledGroup(value)} + > + + + + + + + + + setControlledGroup(value)} + > + + } + shape="button" + value="1" + label={optionsDemo1[0].label} + /> + + } + shape="button" + value="2" + label={optionsDemo1[1].label} + /> + + } + shape="button" + value="3" + label={optionsDemo1[2].label} + disabled + /> + + + + ) +} +export default Demo2 diff --git a/src/packages/checkbox/demos/taro/demo3.tsx b/src/packages/checkbox/demos/taro/demo3.tsx new file mode 100644 index 0000000000..b183c75c72 --- /dev/null +++ b/src/packages/checkbox/demos/taro/demo3.tsx @@ -0,0 +1,43 @@ +import React, { useState } from 'react' +import { Checkbox, Cell } from '@nutui/nutui-react-taro' + +const Demo3 = () => { + const [checked, setChecked] = useState(true) + const [optionsDemo1] = useState([ + { + label: '选项 1', + value: '1', + }, + { + label: '选项 2', + value: '2', + disabled: true, + }, + { + label: '选项 3', + value: '3', + }, + ]) + return ( + <> + + + + + + + + + + + + + + ) +} +export default Demo3 diff --git a/src/packages/checkbox/demos/taro/demo4.tsx b/src/packages/checkbox/demos/taro/demo4.tsx new file mode 100644 index 0000000000..b2f69966ef --- /dev/null +++ b/src/packages/checkbox/demos/taro/demo4.tsx @@ -0,0 +1,11 @@ +import React from 'react' +import { Cell, Checkbox } from '@nutui/nutui-react-taro' + +const Demo4 = () => { + return ( + + + + ) +} +export default Demo4 diff --git a/src/packages/checkbox/demos/taro/demo5.tsx b/src/packages/checkbox/demos/taro/demo5.tsx new file mode 100644 index 0000000000..d6e33a33c1 --- /dev/null +++ b/src/packages/checkbox/demos/taro/demo5.tsx @@ -0,0 +1,35 @@ +import React from 'react' +import { Checkbox, Cell } from '@nutui/nutui-react-taro' + +const Demo5 = () => { + return ( + <> + + + + + + + + + + + ) +} +export default Demo5 diff --git a/src/packages/checkbox/demos/taro/demo6.tsx b/src/packages/checkbox/demos/taro/demo6.tsx new file mode 100644 index 0000000000..37a829b484 --- /dev/null +++ b/src/packages/checkbox/demos/taro/demo6.tsx @@ -0,0 +1,26 @@ +import React from 'react' +import { Checkbox, Cell } from '@nutui/nutui-react-taro' + +const Demo6 = () => { + return ( + <> + + + + + + + + ) +} +export default Demo6 diff --git a/src/packages/checkbox/demos/taro/demo7.tsx b/src/packages/checkbox/demos/taro/demo7.tsx new file mode 100644 index 0000000000..b308cc0cfd --- /dev/null +++ b/src/packages/checkbox/demos/taro/demo7.tsx @@ -0,0 +1,44 @@ +import React from 'react' +import { Checkbox, Cell } from '@nutui/nutui-react-taro' +import { Checklist } from '@nutui/icons-react-taro' + +const Demo7 = () => { + return ( + <> + + } + activeIcon={} + > + 自定义图标 + + + + + } + activeIcon={} + > + 自定义图标 + + } + activeIcon={} + > + 自定义图标 + + + + + ) +} +export default Demo7 diff --git a/src/packages/checkbox/demos/taro/demo8.tsx b/src/packages/checkbox/demos/taro/demo8.tsx new file mode 100644 index 0000000000..1abbbd160a --- /dev/null +++ b/src/packages/checkbox/demos/taro/demo8.tsx @@ -0,0 +1,41 @@ +import React, { useState } from 'react' +import { Checkbox, Toast, Cell } from '@nutui/nutui-react-taro' + +const Demo8 = () => { + const [showToast, setShowToast] = useState(false) + const [content, setContent] = useState('') + const handleChange = (state: any) => { + if (state) { + setContent('选中') + } else { + setContent('取消选中') + } + setShowToast(true) + } + return ( + <> + { + setShowToast(false) + }} + /> + handleChange(state)} + > + change复选框 + + + handleChange(state)} + > + 复选框 + + + + ) +} +export default Demo8 diff --git a/src/packages/checkbox/demos/taro/demo9.tsx b/src/packages/checkbox/demos/taro/demo9.tsx new file mode 100644 index 0000000000..7340584870 --- /dev/null +++ b/src/packages/checkbox/demos/taro/demo9.tsx @@ -0,0 +1,40 @@ +import React, { useState } from 'react' +import { Checkbox, Toast, Cell } from '@nutui/nutui-react-taro' + +const Demo9 = () => { + const [checkboxgroup1, setCheckboxgroup1] = useState(['1']) + const [showToast, setShowToast] = useState(false) + const [content, setContent] = useState('') + const handleChange = (value: any) => { + setContent(value.toString()) + setShowToast(true) + setCheckboxgroup1(value) + } + return ( + <> + + { + setShowToast(false) + }} + /> + handleChange(value)} + > + 选项 + 选项 + 选项 + 选项 + + + + 选中:{checkboxgroup1.toString()} + + + ) +} +export default Demo9 diff --git a/src/packages/checkbox/doc.en-US.md b/src/packages/checkbox/doc.en-US.md index 129c421ab9..4b6c818185 100644 --- a/src/packages/checkbox/doc.en-US.md +++ b/src/packages/checkbox/doc.en-US.md @@ -17,48 +17,7 @@ import { Checkbox } from '@nutui/nutui-react'; :::demo -```tsx -import React, { useState } from 'react' -import { Checklist } from '@nutui/icons-react' -import { Cell, Checkbox } from '@nutui/nutui-react' - -const CheckBoxDemo = () => { - return (<> - - - - - - - } - defaultChecked={false} - /> - - - ) -} -export default CheckBoxDemo -``` + ::: @@ -66,124 +25,39 @@ export default CheckBoxDemo :::demo -```tsx -import React, { useState } from "react"; -import { Checkbox } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [controlled, setControlled] = useState(false) - - return ( setControlled(val)} - />) -} -export default CheckBoxDemo; -``` + ::: -### Basic +### Basic Usage :::demo -```tsx -import React, { useState } from "react"; -import { Checkbox } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [checked, setChecked] = useState(true) - return (<> - - - - - - - - - - - ) -} -export default CheckBoxDemo; -``` + ::: -### Semi-selected state +### Half-selected state :::demo -```tsx -import React, { useState } from "react"; -import { Checkbox } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [checked, setChecked] = useState(true) - return (<> - - - ) -} -export default CheckBoxDemo; -``` + ::: -### Disabled +### Disabled State :::demo -```tsx -import React from "react"; -import { Checkbox } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - return (<> - - - ) -} -export default CheckBoxDemo; -``` + ::: -### Custom size +### Custom Size :::demo -```tsx -import React from "react"; -import { Checkbox } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - return (<> - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -191,51 +65,17 @@ export default CheckBoxDemo; :::demo -```tsx -import React from "react"; -import { Checkbox } from '@nutui/nutui-react'; -import { Checklist } from '@nutui/icons-react' - -const CheckBoxDemo = () => { - return (<> - } - activeIcon={}>Custom Icon - ) -} -export default CheckBoxDemo; -``` + ::: -### Change +### Click Trigger Event When the value changes, the change event will be fired :::demo -```tsx -import React from "react"; -import { Checkbox, Toast } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - return (<> - { - if (state) { - Toast.show('checked') - } else { - Toast.show('unchecked') - } - }} - > - Option - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -243,37 +83,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState } from "react"; -import { Checkbox } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [checkboxgroup1, setCheckboxgroup1] = useState(['1']) - return ( - { - Toast.show(value) - }} - > - - Option 1 - - - Option 2 - - - Option 3 - - - Option 4 - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -281,238 +91,47 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState } from "react"; -import { Checkbox } from '@nutui/nutui-react'; + -const CheckBoxDemo = () => { - const [checkboxgroup1, setCheckboxgroup1] = useState(['1']) - return ( - - - Option 1 - - - Option 2 - - - Option 3 - - - Option 4 - - - ) -} -export default CheckBoxDemo; -``` +::: + +## Select All/Cancel + +:::demo + + ::: -## Checkbox.Group Select all/Cancel +## Used by checkboxGroup, limit the maximum number of options (3), minimum number of options (1) :::demo -```tsx -import React, { useState, useRef } from "react"; -import { Checkbox, Button, Toast } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [checkboxgroup2, setCheckboxgroup2] = useState(['1']) - const checkboxgroup2Ref = useRef(null) - return (<> - { - Toast.show(`${value.length === 4 ? '全选' : '取消全选'}`) - }} - > - - Option 1 - - - Option 2 - - - Option 3 - - - Option 4 - - - - - - ) -} -export default CheckBoxDemo; -``` + ::: -## Used by checkboxGroup, limit the maximum number of options (2) +## Select All/Select/Cancel :::demo -```tsx -import React, { useState, useRef } from "react"; -import { Checkbox, Button, Toast } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [checkboxgroup2, setCheckboxgroup2] = useState(['1']) - const checkboxgroup2Ref = useRef(null) - return (<> - { - Toast.show(value) - }} - > - - Option 1 - - - Option 2 - - - Option 3 - - - Option 4 - - - ) -} -export default CheckBoxDemo; -``` + ::: -## Select All/Half Select/Cancel +## Configure Options To Render Check Buttons :::demo -```tsx -import React, { useState, useRef } from "react"; -import { Checkbox, Button, Toast } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [checkboxgroup2, setCheckboxgroup2] = useState(['1']) - const checkboxgroup2Ref = useRef(null) - const [checkbox1, setCheckbox1] = useState(false) - const [indeterminate, setIndeterminate] = useState(false) - return (<> -
- { - if (state) { - setIndeterminate(false) - } - setCheckbox1(state) - ;(checkboxgroup2Ref.current as any).toggle(state) - }} - > - Select All - -
- - { - if (value.length === 4) { - setIndeterminate(false) - setCheckbox1(true) - } else if (value.length && value.length < 4) { - setIndeterminate(true) - setCheckbox1(true) - } else { - setCheckbox1(false) - } - }} - > - - Option 1 - - - Option 2 - - - Option 3 - - - Option 4 - - - - ) -} -export default CheckBoxDemo; -``` + ::: -## Configure options to render check buttons +## List :::demo -```tsx -import React, { useState } from 'react'; -import { Checkbox, CheckboxGroup } from '@nutui/nutui-react'; - -const CheckboxGroupOptions = () => { - const [checkboxVal, setCheckboxVal] = useState(['1']) - const [optionsDemo1, setOptionsDemo1] = useState([ - { - label: 'Option 1', - value: '1', - }, - { - label: 'Option 2', - value: '2', - disabled: true, - }, - { - label: 'Option 3', - value: '3', - }, - ]) - return -} -export default CheckboxGroupOptions; -``` + ::: @@ -525,6 +144,7 @@ export default CheckboxGroupOptions; | checked | whether checked | `boolean` | `false` | | defaultChecked | Initially checked or not | `boolean` | `false` | | disabled | Whether to disable selection | `boolean` | `false` | +| list | List model | `boolean` | `false` | | labelPosition | The position of the text | `left` \| `right` | `right` | | icon | before selection | `ReactNode` | `'CheckNormal'` | | activeIcon | after selection | `ReactNode` | `'Checked'` | @@ -544,6 +164,7 @@ export default CheckboxGroupOptions; | defaultValue | Identifier of the initially selected item | `string` \| `number` | `-` | | disabled | Whether to disable selection, will be used for all checkboxes under it | `boolean` | `false` | | max | limit the maximum number of options | `number` | `-` | +| min | Limit the number of choices to at least | `number` | `-` | | labelPosition | The position of the text | `left` \| `right` | `right` | | direction | Use horizontal and vertical directions Optional values horizontal、vertical | `string` | `vertical` | | options | Configure options to render check buttons | `Array<{ label: string value: string disabled?: boolean }>` | `-` | @@ -570,6 +191,11 @@ The component provides the following CSS variables, which can be used to customi | \--nutui-checkbox-button-font-size | shape is the font size of the button | `12px` | | \--nutui-checkbox-button-color | button font color | `$color-text` | | \--nutui-checkbox-button-background | shape is the background color of the button | `$color-background` | +| \--nutui-checkbox-label-button-border-color | shape is the border color of the button | `$color-primary` | | \--nutui-checkbox-button-active-border | The shape is the border of the active button | `1px solid $color-primary` | | \--nutui-checkbox-button-padding | The shape is the padding of the button | `5px 18px` | -| \--nutui-checkbox-button-border-radius | The shape is the rounded corner of the button | `15px` | \ No newline at end of file +| \--nutui-checkbox-button-border-radius | The shape is the rounded corner of the button | `15px` | +| \--nutui-checkbox-list-background-colors | List background color | `15px` | +| \--nutui-checkbox-list-item-border | List item border | `15px` | +| \--nutui-checkbox-list-padding | list padding | `15px` | +| \--nutui-checkbox-list-item-padding | padding of list items | `15px` | \ No newline at end of file diff --git a/src/packages/checkbox/doc.md b/src/packages/checkbox/doc.md index 99de16f278..f233264f53 100644 --- a/src/packages/checkbox/doc.md +++ b/src/packages/checkbox/doc.md @@ -17,48 +17,7 @@ import { Checkbox } from '@nutui/nutui-react'; :::demo -```tsx -import React, { useState } from 'react' -import { Checklist } from '@nutui/icons-react' -import { Cell, Checkbox } from '@nutui/nutui-react' - -const CheckBoxDemo = () => { - return (<> - - - - - - - } - defaultChecked={false} - /> - - - ) -} -export default CheckBoxDemo -``` + ::: @@ -66,22 +25,7 @@ export default CheckBoxDemo :::demo -```tsx -import React, { useState } from "react"; -import { Checkbox } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [controlled, setControlled] = useState(false) - - return ( setControlled(val)} - />) -} -export default CheckBoxDemo; -``` + ::: @@ -89,27 +33,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState } from "react"; -import { Checkbox } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [checked, setChecked] = useState(true) - return (<> - - - - - - - - - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -117,19 +41,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState } from "react"; -import { Checkbox } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [checked, setChecked] = useState(true) - return (<> - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -137,28 +49,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React from "react"; -import { Checkbox } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - return (<> - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -166,24 +57,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React from "react"; -import { Checkbox } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - return (<> - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -193,20 +67,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React from "react"; -import { Checkbox } from '@nutui/nutui-react'; -import { Checklist } from '@nutui/icons-react' - -const CheckBoxDemo = () => { - return (<> - } - activeIcon={}>自定义图标 - ) -} -export default CheckBoxDemo; -``` + ::: @@ -216,28 +77,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React from "react"; -import { Checkbox, Toast } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - return (<> - { - if (state) { - Toast.show('选中') - } else { - Toast.show('取消选中') - } - }} - > - change复选框 - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -245,37 +85,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState } from "react"; -import { Checkbox } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [checkboxgroup1, setCheckboxgroup1] = useState(['1']) - return ( - { - Toast.show(value) - }} - > - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -283,32 +93,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState } from "react"; -import { Checkbox } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [checkboxgroup1, setCheckboxgroup1] = useState(['1']) - return ( - - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -316,105 +101,15 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState, useRef } from "react"; -import { Checkbox, Button, Toast } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [checkboxgroup2, setCheckboxgroup2] = useState(['1']) - const checkboxgroup2Ref = useRef(null) - return (<> - { - Toast.show(`${value.length === 4 ? '全选' : '取消全选'}`) - }} - > - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - - - - ) -} -export default CheckBoxDemo; -``` + ::: -## checkboxGroup使用,限制最大可选数(2个) +## checkboxGroup使用,限制最大可选数(3个), 至少选择数(1个) :::demo -```tsx -import React, { useState, useRef } from "react"; -import { Checkbox, Button, Toast } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [checkboxgroup2, setCheckboxgroup2] = useState(['1']) - const checkboxgroup2Ref = useRef(null) - return (<> - { - Toast.show(value) - }} - > - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -422,66 +117,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState, useRef } from "react"; -import { Checkbox, Button, Toast } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [checkboxgroup2, setCheckboxgroup2] = useState(['1']) - const checkboxgroup2Ref = useRef(null) - const [checkbox1, setCheckbox1] = useState(false) - const [indeterminate, setIndeterminate] = useState(false) - return (<> -
- { - if (state) { - setIndeterminate(false) - } - setCheckbox1(state) - ;(checkboxgroup2Ref.current as any).toggle(state) - }} - > - 全选 - -
- - { - if (value.length === 4) { - setIndeterminate(false) - setCheckbox1(true) - } else if (value.length && value.length < 4) { - setIndeterminate(true) - setCheckbox1(true) - } else { - setCheckbox1(false) - } - }} - > - - 选项 - - - 选项 - - - 选项 - - - 选项 - - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -489,32 +125,15 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState } from 'react'; -import { Checkbox, CheckboxGroup } from '@nutui/nutui-react'; - -const CheckboxGroupOptions = () => { - const [checkboxVal, setCheckboxVal] = useState(['1']) - const [optionsDemo1, setOptionsDemo1] = useState([ - { - label: '选项1', - value: '1', - }, - { - label: '选项2', - value: '2', - disabled: true, - }, - { - label: '选项3', - value: '3', - }, - ]) - return -} -export default CheckboxGroupOptions; -``` + + +::: + +## 列表 + +:::demo + + ::: @@ -527,6 +146,7 @@ export default CheckboxGroupOptions; | checked | 是否选中 | `boolean` | `false` | | defaultChecked | 初始是否选中 | `boolean` | `false` | | disabled | 是否禁用选择 | `boolean` | `false` | +| list | 列表模式 | `boolean` | `false` | | labelPosition | 文本所在的位置 | `left` \| `right` | `right` | | icon | 选中前| `ReactNode` | `'CheckNormal'` | | activeIcon | 选中后 | `ReactNode` | `'Checked'` | @@ -546,6 +166,7 @@ export default CheckboxGroupOptions; | defaultValue | 初始选中项的标识符 | `string` \| `number` | `-` | | disabled | 是否禁用选择,将用于其下的全部复选框 | `boolean` | `false` | | max | 限制最大可选数 | `number` | `-` | +| min | 限制至少选择数 | `number` | `-` | | labelPosition | 文本所在的位置 | `left` \| `right` | `right` | | direction | 使用横纵方向 可选值 horizontal、vertical | `string` | `vertical` | | options | 配置 options 渲染复选按钮 | `Array<{ label: string value: string disabled?: boolean }>` | `-` | @@ -575,4 +196,8 @@ export default CheckboxGroupOptions; | \--nutui-checkbox-label-button-border-color | shape为button的边框颜色 | `$color-primary` | | \--nutui-checkbox-button-active-border | shape为button选中态的边框 | `1px solid $color-primary` | | \--nutui-checkbox-button-padding | shape为button的内边距 | `5px 18px` | -| \--nutui-checkbox-button-border-radius | shape为button的圆角 | `15px` | \ No newline at end of file +| \--nutui-checkbox-button-border-radius | shape为button的圆角 | `15px` | +| \--nutui-checkbox-list-background-colors | 列表背景色 | `15px` | +| \--nutui-checkbox-list-item-border | 列表项的边框 | `15px` | +| \--nutui-checkbox-list-padding | 列表的padding | `15px` | +| \--nutui-checkbox-list-item-padding | 列表项的padding | `15px` | \ No newline at end of file diff --git a/src/packages/checkbox/doc.taro.md b/src/packages/checkbox/doc.taro.md index 5513ca5eb9..2004c878bd 100644 --- a/src/packages/checkbox/doc.taro.md +++ b/src/packages/checkbox/doc.taro.md @@ -17,48 +17,7 @@ import { Checkbox } from '@nutui/nutui-react-taro'; :::demo -```tsx -import React, { useState } from 'react' -import { Checklist } from '@nutui/icons-react-taro' -import { Cell, Checkbox } from '@nutui/nutui-react' - -const CheckBoxDemo = () => { - return (<> - - - - - - - } - defaultChecked={false} - /> - - - ) -} -export default CheckBoxDemo -``` + ::: @@ -66,22 +25,7 @@ export default CheckBoxDemo :::demo -```tsx -import React, { useState } from "react"; -import { Checkbox } from '@nutui/nutui-react-taro'; - -const CheckBoxDemo = () => { - const [controlled, setControlled] = useState(false) - - return ( setControlled(val)} - />) -} -export default CheckBoxDemo; -``` + ::: @@ -89,27 +33,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState } from "react"; -import { Checkbox } from '@nutui/nutui-react-taro'; - -const CheckBoxDemo = () => { - const [checked, setChecked] = useState(true) - return (<> - - - - - - - - - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -117,19 +41,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState } from "react"; -import { Checkbox } from '@nutui/nutui-react-taro'; - -const CheckBoxDemo = () => { - const [checked, setChecked] = useState(true) - return (<> - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -137,28 +49,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React from "react"; -import { Checkbox } from '@nutui/nutui-react-taro'; - -const CheckBoxDemo = () => { - return (<> - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -166,24 +57,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React from "react"; -import { Checkbox } from '@nutui/nutui-react-taro'; - -const CheckBoxDemo = () => { - return (<> - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -193,20 +67,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React from "react"; -import { Checkbox } from '@nutui/nutui-react-taro'; -import { Checklist } from '@nutui/icons-react-taro' - -const CheckBoxDemo = () => { - return (<> - } - activeIcon={}>自定义图标 - ) -} -export default CheckBoxDemo; -``` + ::: @@ -216,28 +77,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React from "react"; -import { Checkbox, Toast } from '@nutui/nutui-react-taro'; - -const CheckBoxDemo = () => { - return (<> - { - if (state) { - Toast.show('选中') - } else { - Toast.show('取消选中') - } - }} - > - change复选框 - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -245,37 +85,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState } from "react"; -import { Checkbox } from '@nutui/nutui-react-taro'; - -const CheckBoxDemo = () => { - const [checkboxgroup1, setCheckboxgroup1] = useState(['1']) - return ( - { - Toast.show(value) - }} - > - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -283,32 +93,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState } from "react"; -import { Checkbox } from '@nutui/nutui-react-taro'; - -const CheckBoxDemo = () => { - const [checkboxgroup1, setCheckboxgroup1] = useState(['1']) - return ( - - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -316,105 +101,15 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState, useRef } from "react"; -import { Checkbox, Button, Toast } from '@nutui/nutui-react-taro'; - -const CheckBoxDemo = () => { - const [checkboxgroup2, setCheckboxgroup2] = useState(['1']) - const checkboxgroup2Ref = useRef(null) - return (<> - { - Toast.show(`${value.length === 4 ? '全选' : '取消全选'}`) - }} - > - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - - - - ) -} -export default CheckBoxDemo; -``` + ::: -## checkboxGroup使用,限制最大可选数(2个) +## checkboxGroup使用,限制最大可选数(3个), 至少选择数(1个) :::demo -```tsx -import React, { useState, useRef } from "react"; -import { Checkbox, Button, Toast } from '@nutui/nutui-react-taro'; - -const CheckBoxDemo = () => { - const [checkboxgroup2, setCheckboxgroup2] = useState(['1']) - const checkboxgroup2Ref = useRef(null) - return (<> - { - Toast.show(value) - }} - > - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -422,66 +117,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState, useRef } from "react"; -import { Checkbox, Button, Toast } from '@nutui/nutui-react-taro'; - -const CheckBoxDemo = () => { - const [checkboxgroup2, setCheckboxgroup2] = useState(['1']) - const checkboxgroup2Ref = useRef(null) - const [checkbox1, setCheckbox1] = useState(false) - const [indeterminate, setIndeterminate] = useState(false) - return (<> -
- { - if (state) { - setIndeterminate(false) - } - setCheckbox1(state) - ;(checkboxgroup2Ref.current as any).toggle(state) - }} - > - 全选 - -
- - { - if (value.length === 4) { - setIndeterminate(false) - setCheckbox1(true) - } else if (value.length && value.length < 4) { - setIndeterminate(true) - setCheckbox1(true) - } else { - setCheckbox1(false) - } - }} - > - - 选项 - - - 选项 - - - 选项 - - - 选项 - - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -489,32 +125,15 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState } from 'react'; -import { Checkbox, CheckboxGroup } from '@nutui/nutui-react-taro'; - -const CheckboxGroupOptions = () => { - const [checkboxVal, setCheckboxVal] = useState(['1']) - const [optionsDemo1, setOptionsDemo1] = useState([ - { - label: '选项1', - value: '1', - }, - { - label: '选项2', - value: '2', - disabled: true, - }, - { - label: '选项3', - value: '3', - }, - ]) - return -} -export default CheckboxGroupOptions; -``` + + +::: + +## 列表 + +:::demo + + ::: @@ -527,7 +146,8 @@ export default CheckboxGroupOptions; | checked | 是否选中 | `boolean` | `false` | | defaultChecked | 初始是否选中 | `boolean` | `false` | | disabled | 是否禁用选择 | `boolean` | `false` | -| labelPosition | 文本所在的位置| `left` \| `right` | `string` | `right` | +| list | 列表模式 | `boolean` | `false` | +| labelPosition | 文本所在的位置 | `left` \| `right` | `right` | | icon | 选中前| `ReactNode` | `'CheckNormal'` | | activeIcon | 选中后 | `ReactNode` | `'Checked'` | | indeterminateIcon | 半选状态| `ReactNode` | `'CheckDisabled'` | @@ -546,12 +166,13 @@ export default CheckboxGroupOptions; | defaultValue | 初始选中项的标识符 | `string` \| `number` | `-` | | disabled | 是否禁用选择,将用于其下的全部复选框 | `boolean` | `false` | | max | 限制最大可选数 | `number` | `-` | -| labelPosition | 文本所在的位置| `left` \| `right` | `string` | `right` | +| min | 限制至少选择数 | `number` | `-` | +| labelPosition | 文本所在的位置 | `left` \| `right` | `right` | | direction | 使用横纵方向 可选值 horizontal、vertical | `string` | `vertical` | -| options | 配置 options 渲染复选按钮 | `Array<{ label: string value: string disabled?: boolean }>` | `-` | +| options | 配置 options 渲染复选按钮 | `Array<{ label: string value: string disabled?: boolean }>` | `-` | | onChange | 值变化时触发 | `(value: string[]) => void` | `-` | -### Checkbox.Group Ref +### Ref | 方法名 | 说明 | 参数 | | --- | --- | --- | @@ -575,4 +196,8 @@ export default CheckboxGroupOptions; | \--nutui-checkbox-label-button-border-color | shape为button的边框颜色 | `$color-primary` | | \--nutui-checkbox-button-active-border | shape为button选中态的边框 | `1px solid $color-primary` | | \--nutui-checkbox-button-padding | shape为button的内边距 | `5px 18px` | -| \--nutui-checkbox-button-border-radius | shape为button的圆角 | `15px` | \ No newline at end of file +| \--nutui-checkbox-button-border-radius | shape为button的圆角 | `15px` | +| \--nutui-checkbox-list-background-colors | 列表背景色 | `15px` | +| \--nutui-checkbox-list-item-border | 列表项的边框 | `15px` | +| \--nutui-checkbox-list-padding | 列表的padding | `15px` | +| \--nutui-checkbox-list-item-padding | 列表项的padding | `15px` | \ No newline at end of file diff --git a/src/packages/checkbox/doc.zh-TW.md b/src/packages/checkbox/doc.zh-TW.md index da5ceed04d..ff2e4cc8c5 100644 --- a/src/packages/checkbox/doc.zh-TW.md +++ b/src/packages/checkbox/doc.zh-TW.md @@ -17,48 +17,7 @@ import { Checkbox } from '@nutui/nutui-react'; :::demo -```tsx -import React, { useState } from 'react' -import { Checklist } from '@nutui/icons-react' -import { Cell, Checkbox } from '@nutui/nutui-react' - -const CheckBoxDemo = () => { - return (<> - - - - - - - } - defaultChecked={false} - /> - - - ) -} -export default CheckBoxDemo -``` + ::: @@ -66,22 +25,7 @@ export default CheckBoxDemo :::demo -```tsx -import React, { useState } from "react"; -import { Checkbox } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [controlled, setControlled] = useState(false) - - return ( setControlled(val)} - />) -} -export default CheckBoxDemo; -``` + ::: @@ -89,27 +33,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState } from "react"; -import { Checkbox } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [checked, setChecked] = useState(true) - return (<> - - - - - - - - - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -117,19 +41,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState } from "react"; -import { Checkbox } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [checked, setChecked] = useState(true) - return (<> - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -137,28 +49,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React from "react"; -import { Checkbox } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - return (<> - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -166,24 +57,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React from "react"; -import { Checkbox } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - return (<> - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -193,20 +67,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React from "react"; -import { Checkbox } from '@nutui/nutui-react'; -import { Checklist } from '@nutui/icons-react' - -const CheckBoxDemo = () => { - return (<> - } - activeIcon={}>自定义图标 - ) -} -export default CheckBoxDemo; -``` + ::: @@ -216,28 +77,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React from "react"; -import { Checkbox, Toast } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - return (<> - { - if (state) { - Toast.show('选中') - } else { - Toast.show('取消选中') - } - }} - > - change复选框 - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -245,37 +85,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState } from "react"; -import { Checkbox } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [checkboxgroup1, setCheckboxgroup1] = useState(['1']) - return ( - { - Toast.show(value) - }} - > - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -283,32 +93,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState } from "react"; -import { Checkbox } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [checkboxgroup1, setCheckboxgroup1] = useState(['1']) - return ( - - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -316,105 +101,15 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState, useRef } from "react"; -import { Checkbox, Button, Toast } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [checkboxgroup2, setCheckboxgroup2] = useState(['1']) - const checkboxgroup2Ref = useRef(null) - return (<> - { - Toast.show(`${value.length === 4 ? '全选' : '取消全选'}`) - }} - > - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - - - - ) -} -export default CheckBoxDemo; -``` + ::: -## checkboxGroup使用,限制最大可选数(2个) +## checkboxGroup使用,限制最大可选数(3个), 至少选择数(1个) :::demo -```tsx -import React, { useState, useRef } from "react"; -import { Checkbox, Button, Toast } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [checkboxgroup2, setCheckboxgroup2] = useState(['1']) - const checkboxgroup2Ref = useRef(null) - return (<> - { - Toast.show(value) - }} - > - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - 组合复选框 - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -422,66 +117,7 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState, useRef } from "react"; -import { Checkbox, Button, Toast } from '@nutui/nutui-react'; - -const CheckBoxDemo = () => { - const [checkboxgroup2, setCheckboxgroup2] = useState(['1']) - const checkboxgroup2Ref = useRef(null) - const [checkbox1, setCheckbox1] = useState(false) - const [indeterminate, setIndeterminate] = useState(false) - return (<> -
- { - if (state) { - setIndeterminate(false) - } - setCheckbox1(state) - ;(checkboxgroup2Ref.current as any).toggle(state) - }} - > - 全选 - -
- - { - if (value.length === 4) { - setIndeterminate(false) - setCheckbox1(true) - } else if (value.length && value.length < 4) { - setIndeterminate(true) - setCheckbox1(true) - } else { - setCheckbox1(false) - } - }} - > - - 选项 - - - 选项 - - - 选项 - - - 选项 - - - - ) -} -export default CheckBoxDemo; -``` + ::: @@ -489,32 +125,15 @@ export default CheckBoxDemo; :::demo -```tsx -import React, { useState } from 'react'; -import { Checkbox, CheckboxGroup } from '@nutui/nutui-react'; - -const CheckboxGroupOptions = () => { - const [checkboxVal, setCheckboxVal] = useState(['1']) - const [optionsDemo1, setOptionsDemo1] = useState([ - { - label: '选项1', - value: '1', - }, - { - label: '选项2', - value: '2', - disabled: true, - }, - { - label: '选项3', - value: '3', - }, - ]) - return -} -export default CheckboxGroupOptions; -``` + + +::: + +## 列表 + +:::demo + + ::: @@ -527,7 +146,8 @@ export default CheckboxGroupOptions; | checked | 是否选中 | `boolean` | `false` | | defaultChecked | 初始是否选中 | `boolean` | `false` | | disabled | 是否禁用选择 | `boolean` | `false` | -| labelPosition | 文本所在的位置| `left` \| `right` | `string` | `right` | +| list | 列表模式 | `boolean` | `false` | +| labelPosition | 文本所在的位置 | `left` \| `right` | `right` | | icon | 选中前| `ReactNode` | `'CheckNormal'` | | activeIcon | 选中后 | `ReactNode` | `'Checked'` | | indeterminateIcon | 半选状态| `ReactNode` | `'CheckDisabled'` | @@ -546,17 +166,18 @@ export default CheckboxGroupOptions; | defaultValue | 初始选中项的标识符 | `string` \| `number` | `-` | | disabled | 是否禁用选择,将用于其下的全部复选框 | `boolean` | `false` | | max | 限制最大可选数 | `number` | `-` | -| labelPosition | 文本所在的位置| `left` \| `right` | `string` | `right` | +| min | 限制至少选择数 | `number` | `-` | +| labelPosition | 文本所在的位置 | `left` \| `right` | `right` | | direction | 使用横纵方向 可选值 horizontal、vertical | `string` | `vertical` | -| options | 配置 options 渲染复选按钮 | `Array<{ label: string value: string disabled?: boolean }>` | `-` | +| options | 配置 options 渲染复选按钮 | `Array<{ label: string value: string disabled?: boolean }>` | `-` | | onChange | 值变化时触发 | `(value: string[]) => void` | `-` | -### Checkbox.Group Ref +### Ref | 方法名 | 说明 | 参数 | | --- | --- | --- | | toggle | 全选/取消 | 传 `true`,表示全选,传 `false`,表示取消全选 | -| reverse | 反选 | `-` | +| reverse | 反选 | `-` | ## 主题定制 @@ -575,4 +196,8 @@ export default CheckboxGroupOptions; | \--nutui-checkbox-label-button-border-color | shape為button的邊框顏色 | `$color-primary` | | \--nutui-checkbox-button-active-border | shape為button選中態的邊框 | `1px solid $color-primary` | | \--nutui-checkbox-button-padding | shape為button的內邊距 | `5px 18px` | -| \--nutui-checkbox-button-border-radius | shape為button的圓角 | `15px` | \ No newline at end of file +| \--nutui-checkbox-button-border-radius | shape為button的圓角 | `15px` | +| \--nutui-checkbox-list-background-colors | 列表背景色 | `15px` | +| \--nutui-checkbox-list-item-border | 列表项的边框 | `15px` | +| \--nutui-checkbox-list-padding | 列表的padding | `15px` | +| \--nutui-checkbox-list-item-padding | 列表项的padding | `15px` | \ No newline at end of file diff --git a/src/packages/checkbox/index.taro.ts b/src/packages/checkbox/index.taro.ts index 4f53f06923..a3c9db75c3 100644 --- a/src/packages/checkbox/index.taro.ts +++ b/src/packages/checkbox/index.taro.ts @@ -1,4 +1,4 @@ import { Checkbox } from './checkbox.taro' -export type { CheckboxProps } from './checkbox.taro' +export type { CheckboxProps, CheckboxShape } from './checkbox.taro' export default Checkbox diff --git a/src/packages/checkbox/index.ts b/src/packages/checkbox/index.ts index 8268fa5548..15e1dc5684 100644 --- a/src/packages/checkbox/index.ts +++ b/src/packages/checkbox/index.ts @@ -1,4 +1,4 @@ import { Checkbox } from './checkbox' -export type { CheckboxProps } from './checkbox' +export type { CheckboxProps, CheckboxShape } from './checkbox' export default Checkbox diff --git a/src/packages/checkboxgroup/checkboxgroup.scss b/src/packages/checkboxgroup/checkboxgroup.scss index f4d1ef113e..51aa19f576 100644 --- a/src/packages/checkboxgroup/checkboxgroup.scss +++ b/src/packages/checkboxgroup/checkboxgroup.scss @@ -1,11 +1,5 @@ .nut-checkboxgroup { .nut-checkbox { - margin-bottom: 5px; - - &-label { - margin-right: 5px; - } - &-button { background-color: $color-background; } @@ -13,15 +7,13 @@ &-vertical { .nut-checkbox { + margin-bottom: 5px; + &.nut-checkbox-reverse { width: 100%; justify-content: space-between; } - &-label { - margin-right: 5px; - } - &-button-active { border: $radio-button-active-border; background-color: $color-primary-light; @@ -40,4 +32,51 @@ } } } + + &-list { + width: 100%; + border-bottom: $checkbox-list-item-border; + border-top: $checkbox-list-item-border; + padding: $checkbox-list-padding; + background: $checkbox-list-background-color; + + .nut-checkbox { + margin-bottom: 5px; + + &:first-child { + .nut-checkbox-list-item { + border-top: none; + } + } + + &.nut-checkbox-reverse { + width: 100%; + justify-content: space-between; + } + } + } +} + +[dir='rtl'] .nut-checkboxgroup, +.nut-rtl .nut-checkboxgroup { + .nut-checkbox { + &-label { + margin-right: 5px; + } + } + + &-vertical { + .nut-checkbox { + &-label { + margin-right: 5px; + } + } + } + + &-horizontal { + .nut-checkbox { + margin-right: 0; + margin-left: 20px; + } + } } diff --git a/src/packages/checkboxgroup/checkboxgroup.taro.tsx b/src/packages/checkboxgroup/checkboxgroup.taro.tsx index 0f6dc481ad..3856929018 100644 --- a/src/packages/checkboxgroup/checkboxgroup.taro.tsx +++ b/src/packages/checkboxgroup/checkboxgroup.taro.tsx @@ -1,29 +1,37 @@ import React, { useCallback, useImperativeHandle } from 'react' import classNames from 'classnames' -import { RadioGroupOptionType } from '@/packages/radiogroup/types' +import { RadioGroupOption } from '@/packages/radiogroup/types' import { Checkbox } from '../checkbox/checkbox.taro' import Context from './context' import { usePropsValue } from '@/utils/use-props-value' - -export type CheckboxLabelPosition = 'left' | 'right' -export type CheckboxDirection = 'horizontal' | 'vertical' +import { + CheckboxDirection, + CheckboxLabelPosition, + CheckboxLimit, +} from '@/packages/checkboxgroup/types' export interface CheckboxGroupProps { disabled?: boolean value?: string[] defaultValue?: string[] + list: boolean max: number | undefined + min: number | undefined labelPosition: CheckboxLabelPosition direction: CheckboxDirection - options: RadioGroupOptionType[] + options: RadioGroupOption[] onChange: (value: string[]) => void + onLimit: (type: CheckboxLimit) => void } const defaultProps = { max: undefined, + min: undefined, + list: false, labelPosition: 'right', direction: 'vertical', onChange: (value: string[]) => {}, + onLimit: (type: 'max' | 'min') => {}, options: [], } as CheckboxGroupProps @@ -34,19 +42,22 @@ export const CheckboxGroup = React.forwardRef( Omit, 'onChange'>, ref ) => { - const { children } = { ...defaultProps, ...props } const { + children, className, disabled, + list, onChange, value, defaultValue, max, + min, + onLimit, labelPosition, direction, options, ...rest - } = props + } = { ...defaultProps, ...props } useImperativeHandle(ref, () => ({ toggle(state: boolean) { @@ -93,7 +104,7 @@ export const CheckboxGroup = React.forwardRef( /> ) }) - }, [options, max]) + }, [options, max, min]) return ( { const combined: string[] = [..._value, value] + if (max !== undefined) { + if (combined.length > max) { + return onLimit?.('max') + } + } setValue(combined) }, uncheck: (value: string) => { const reduced = _value.filter((item) => item !== value) + if (min !== undefined && reduced.length < min) { + return onLimit?.('min') + } setValue(reduced) }, }} @@ -117,6 +138,7 @@ export const CheckboxGroup = React.forwardRef( classPrefix, { [`nut-checkboxgroup-${props.direction}`]: props.direction, + [`nut-checkboxgroup-list`]: list, }, className )} diff --git a/src/packages/checkboxgroup/checkboxgroup.tsx b/src/packages/checkboxgroup/checkboxgroup.tsx index bb06d00c90..c9ecc9d80b 100644 --- a/src/packages/checkboxgroup/checkboxgroup.tsx +++ b/src/packages/checkboxgroup/checkboxgroup.tsx @@ -1,29 +1,37 @@ import React, { useCallback, useImperativeHandle } from 'react' import classNames from 'classnames' -import { RadioGroupOptionType } from '@/packages/radiogroup/types' +import { RadioGroupOption } from '@/packages/radiogroup/types' import { Checkbox } from '../checkbox/checkbox' import Context from './context' import { usePropsValue } from '@/utils/use-props-value' - -export type CheckboxLabelPosition = 'left' | 'right' -export type CheckboxDirection = 'horizontal' | 'vertical' +import { + CheckboxDirection, + CheckboxLabelPosition, + CheckboxLimit, +} from '@/packages/checkboxgroup/types' export interface CheckboxGroupProps { disabled?: boolean value?: string[] defaultValue?: string[] + list: boolean max: number | undefined + min: number | undefined labelPosition: CheckboxLabelPosition direction: CheckboxDirection - options: RadioGroupOptionType[] + options: RadioGroupOption[] onChange: (value: string[]) => void + onLimit: (type: CheckboxLimit) => void } const defaultProps = { max: undefined, + min: undefined, + list: false, labelPosition: 'right', direction: 'vertical', onChange: (value: string[]) => {}, + onLimit: (type: 'max' | 'min') => {}, options: [], } as CheckboxGroupProps @@ -34,19 +42,22 @@ export const CheckboxGroup = React.forwardRef( Omit, 'onChange'>, ref ) => { - const { children } = { ...defaultProps, ...props } const { + children, className, disabled, + list, onChange, value, defaultValue, max, + min, + onLimit, labelPosition, direction, options, ...rest - } = props + } = { ...defaultProps, ...props } useImperativeHandle(ref, () => ({ toggle(state: boolean) { @@ -93,7 +104,7 @@ export const CheckboxGroup = React.forwardRef( /> ) }) - }, [options, max]) + }, [options, max, min]) return ( { const combined: string[] = [..._value, value] + if (max !== undefined) { + if (combined.length > max) { + return onLimit?.('max') + } + } setValue(combined) }, uncheck: (value: string) => { const reduced = _value.filter((item) => item !== value) + if (min !== undefined && reduced.length < min) { + return onLimit?.('min') + } setValue(reduced) }, }} @@ -117,6 +138,7 @@ export const CheckboxGroup = React.forwardRef( classPrefix, { [`nut-checkboxgroup-${props.direction}`]: props.direction, + [`nut-checkboxgroup-list`]: list, }, className )} diff --git a/src/packages/checkboxgroup/context.ts b/src/packages/checkboxgroup/context.ts index 6d19232eea..a5b542a324 100644 --- a/src/packages/checkboxgroup/context.ts +++ b/src/packages/checkboxgroup/context.ts @@ -1,12 +1,15 @@ import { createContext } from 'react' +import { CheckboxLimit, CheckboxLabelPosition } from './types' const CheckboxGroupContext = createContext<{ - labelPosition: 'left' | 'right' + labelPosition: CheckboxLabelPosition disabled: boolean | undefined + list: boolean value: string[] max: number | undefined check: (value: string) => void uncheck: (value: string) => void + onLimit: (type: CheckboxLimit) => void } | null>(null) export default CheckboxGroupContext diff --git a/src/packages/checkboxgroup/index.taro.ts b/src/packages/checkboxgroup/index.taro.ts index 8f8b0de10b..2d5730dac9 100644 --- a/src/packages/checkboxgroup/index.taro.ts +++ b/src/packages/checkboxgroup/index.taro.ts @@ -1,3 +1,10 @@ import { CheckboxGroup } from './checkboxgroup.taro' +export type { + CheckboxLimit, + CheckboxGroupOptionType, + CheckboxLabelPosition, + CheckboxDirection, +} from './types' +export type { CheckboxGroupProps } from './checkboxgroup.taro' export default CheckboxGroup diff --git a/src/packages/checkboxgroup/index.ts b/src/packages/checkboxgroup/index.ts index 9d1fb0bd9b..99602d8280 100644 --- a/src/packages/checkboxgroup/index.ts +++ b/src/packages/checkboxgroup/index.ts @@ -1,3 +1,10 @@ import { CheckboxGroup } from './checkboxgroup' +export type { + CheckboxLimit, + CheckboxGroupOptionType, + CheckboxLabelPosition, + CheckboxDirection, +} from './types' +export type { CheckboxGroupProps } from './checkboxgroup' export default CheckboxGroup diff --git a/src/packages/checkboxgroup/types.ts b/src/packages/checkboxgroup/types.ts index 3cfa5d6344..3d32a5484e 100644 --- a/src/packages/checkboxgroup/types.ts +++ b/src/packages/checkboxgroup/types.ts @@ -4,3 +4,6 @@ export interface CheckboxGroupOptionType { disabled?: boolean onChange?: (state: boolean, label: string) => void } +export type CheckboxLimit = 'max' | 'min' +export type CheckboxLabelPosition = 'left' | 'right' +export type CheckboxDirection = 'horizontal' | 'vertical' diff --git a/src/packages/circleprogress/circleprogress.scss b/src/packages/circleprogress/circleprogress.scss index 8cf155e776..4eca0e18e1 100644 --- a/src/packages/circleprogress/circleprogress.scss +++ b/src/packages/circleprogress/circleprogress.scss @@ -3,7 +3,9 @@ &-hover { stroke: $circleprogress-primary-color; - transition: stroke-dasharray 0.6s ease 0s, stroke 0.6s ease 0s; + transition: + stroke-dasharray 0.2s ease-in-out 0s, + stroke 0.2s ease 0s; } &-path { @@ -22,3 +24,11 @@ font-size: $circleprogress-text-size; } } + +[dir='rtl'] .nut-circleprogress, +.nut-rtl .nut-circleprogress { + &-text { + left: auto; + right: 0; + } +} diff --git a/src/packages/circleprogress/demo.taro.tsx b/src/packages/circleprogress/demo.taro.tsx index 1c66e24d10..42b17cc707 100644 --- a/src/packages/circleprogress/demo.taro.tsx +++ b/src/packages/circleprogress/demo.taro.tsx @@ -1,33 +1,25 @@ -import React, { useState } from 'react' +import React from 'react' import Taro from '@tarojs/taro' import { useTranslate } from '@/sites/assets/locale/taro' -import { Button, CircleProgress, Cell } from '@/packages/nutui.react.taro' +import { Cell } from '@/packages/nutui.react.taro' import Header from '@/sites/components/header' import '@/packages/circleprogress/demo.scss' +import Demo1 from './demos/taro/demo1' +import Demo2 from './demos/taro/demo2' +import Demo3 from './demos/taro/demo3' +import Demo4 from './demos/taro/demo4' +import Demo5 from './demos/taro/demo5' +import Demo6 from './demos/taro/demo6' -interface T { - '84aa6bce': string - '67eacf7f': string - '3fee7d50': string - f4aa4b4c: string - '9daa2dd9': string - '4eafa9e9': string - c3e31425: string - '43c9f2ba': string - bce53fe7: string -} const CircleProgressDemo = () => { - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { '84aa6bce': '基础用法', '67eacf7f': '环形进度条自定义样式', '3fee7d50': '环形进度条自定义颜色(支持渐变色)', f4aa4b4c: '环形进度条自定义大小', '9daa2dd9': '环形进度条自定义内容', - '4eafa9e9': '自定义', c3e31425: '动态改变环形进度条的进度', - '43c9f2ba': '减少', - bce53fe7: '增加', }, 'zh-TW': { '84aa6bce': '基礎用法', @@ -35,10 +27,7 @@ const CircleProgressDemo = () => { '3fee7d50': '環形進度條自定義顏色(支持漸變色)', f4aa4b4c: '環形進度條自定義大小', '9daa2dd9': '環形進度條自定義內容', - '4eafa9e9': '自定義', c3e31425: '動態改變環形進度條的進度', - '43c9f2ba': '減少', - bce53fe7: '增加', }, 'en-US': { '84aa6bce': 'Basic usage', @@ -46,34 +35,10 @@ const CircleProgressDemo = () => { '3fee7d50': 'Ring progress bar custom color (support gradient color)', f4aa4b4c: 'Ring progress bar custom size', '9daa2dd9': 'Ring progress bar custom content', - '4eafa9e9': 'customize', c3e31425: 'Dynamically change the progress of the circular progress bar', - '43c9f2ba': 'reduce', - bce53fe7: 'Increase', }, }) - const [percent, setPercent] = useState(30) - - const setReduceVal = () => { - if (percent - 10 <= 0) { - setPercent(0) - return - } - setPercent(percent - 10) - } - const setAddVal = () => { - if (percent >= 100) { - return - } - setPercent(percent + 10) - } - - const gradientColor = { - '0%': '#ff404f', - '100%': '#1988fa', - } - return ( <>
@@ -84,59 +49,26 @@ const CircleProgressDemo = () => { >

{translated['84aa6bce']}

- - 60% + -

{translated['67eacf7f']}

- - + -

{translated['3fee7d50']}

- - 50% - - - 100% - + -

{translated.f4aa4b4c}

- - 50% - + -

{translated['9daa2dd9']}

- -
3000
-
- 步 -
-
+
-

{translated.c3e31425}

- - {percent}% - - - - - + ) diff --git a/src/packages/circleprogress/demo.tsx b/src/packages/circleprogress/demo.tsx index 83abce0bb7..c83212d6e5 100644 --- a/src/packages/circleprogress/demo.tsx +++ b/src/packages/circleprogress/demo.tsx @@ -1,33 +1,23 @@ -import React, { useState } from 'react' +import React from 'react' import { useTranslate } from '../../sites/assets/locale' -import { CircleProgress } from './circleprogress' import Cell from '@/packages/cell' -import Button from '@/packages/button' import './demo.scss' +import Demo1 from './demos/h5/demo1' +import Demo2 from './demos/h5/demo2' +import Demo3 from './demos/h5/demo3' +import Demo4 from './demos/h5/demo4' +import Demo5 from './demos/h5/demo5' +import Demo6 from './demos/h5/demo6' -interface T { - '84aa6bce': string - '67eacf7f': string - '3fee7d50': string - f4aa4b4c: string - '9daa2dd9': string - '4eafa9e9': string - c3e31425: string - '43c9f2ba': string - bce53fe7: string -} const CircleProgressDemo = () => { - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { '84aa6bce': '基础用法', '67eacf7f': '环形进度条自定义样式', '3fee7d50': '环形进度条自定义颜色(支持渐变色)', f4aa4b4c: '环形进度条自定义大小', '9daa2dd9': '环形进度条自定义内容', - '4eafa9e9': '自定义', c3e31425: '动态改变环形进度条的进度', - '43c9f2ba': '减少', - bce53fe7: '增加', }, 'zh-TW': { '84aa6bce': '基礎用法', @@ -35,10 +25,7 @@ const CircleProgressDemo = () => { '3fee7d50': '環形進度條自定義顏色(支持漸變色)', f4aa4b4c: '環形進度條自定義大小', '9daa2dd9': '環形進度條自定義內容', - '4eafa9e9': '自定義', c3e31425: '動態改變環形進度條的進度', - '43c9f2ba': '減少', - bce53fe7: '增加', }, 'en-US': { '84aa6bce': 'Basic usage', @@ -46,92 +33,35 @@ const CircleProgressDemo = () => { '3fee7d50': 'Ring progress bar custom color (support gradient color)', f4aa4b4c: 'Ring progress bar custom size', '9daa2dd9': 'Ring progress bar custom content', - '4eafa9e9': 'customize', c3e31425: 'Dynamically change the progress of the circular progress bar', - '43c9f2ba': 'reduce', - bce53fe7: 'Increase', }, }) - const [percent, setPercent] = useState(30) - - const setReduceVal = () => { - if (percent - 10 <= 0) { - setPercent(0) - return - } - setPercent(percent - 10) - } - const setAddVal = () => { - if (percent >= 100) { - return - } - setPercent(percent + 10) - } - - const gradientColor = { - '0%': 'var(--nutui-color-primary-stop-1)', - '100%': 'var(--nutui-color-primary-stop-2)', - } - return ( <>

{translated['84aa6bce']}

- - 60% + -

{translated['67eacf7f']}

- - + -

{translated['3fee7d50']}

- - 50% - - - 100% - + -

{translated.f4aa4b4c}

- - 50% - + -

{translated['9daa2dd9']}

- -
3000
-
- 步 -
-
+
-

{translated.c3e31425}

- - {percent}% - - - - - +
) diff --git a/src/packages/circleprogress/demos/h5/demo1.tsx b/src/packages/circleprogress/demos/h5/demo1.tsx new file mode 100644 index 0000000000..5e337c0140 --- /dev/null +++ b/src/packages/circleprogress/demos/h5/demo1.tsx @@ -0,0 +1,12 @@ +import React from 'react' +import { CircleProgress } from '@nutui/nutui-react' + +const Demo1 = () => { + return ( + <> + + 60% + + ) +} +export default Demo1 diff --git a/src/packages/circleprogress/demos/h5/demo2.tsx b/src/packages/circleprogress/demos/h5/demo2.tsx new file mode 100644 index 0000000000..692f262a4d --- /dev/null +++ b/src/packages/circleprogress/demos/h5/demo2.tsx @@ -0,0 +1,12 @@ +import React from 'react' +import { CircleProgress } from '@nutui/nutui-react' + +const Demo2 = () => { + return ( + <> + + + + ) +} +export default Demo2 diff --git a/src/packages/circleprogress/demos/h5/demo3.tsx b/src/packages/circleprogress/demos/h5/demo3.tsx new file mode 100644 index 0000000000..cafbee7dca --- /dev/null +++ b/src/packages/circleprogress/demos/h5/demo3.tsx @@ -0,0 +1,20 @@ +import React from 'react' +import { CircleProgress } from '@nutui/nutui-react' + +const gradientColor = { + '0%': '#FF5E5E', + '100%': '#FFA062', +} +const Demo3 = () => { + return ( + <> + + 50% + + + 100% + + + ) +} +export default Demo3 diff --git a/src/packages/circleprogress/demos/h5/demo4.tsx b/src/packages/circleprogress/demos/h5/demo4.tsx new file mode 100644 index 0000000000..6506aa82d2 --- /dev/null +++ b/src/packages/circleprogress/demos/h5/demo4.tsx @@ -0,0 +1,13 @@ +import React from 'react' +import { CircleProgress } from '@nutui/nutui-react' + +const Demo4 = () => { + return ( + <> + + 50% + + + ) +} +export default Demo4 diff --git a/src/packages/circleprogress/demos/h5/demo5.tsx b/src/packages/circleprogress/demos/h5/demo5.tsx new file mode 100644 index 0000000000..b70303ac70 --- /dev/null +++ b/src/packages/circleprogress/demos/h5/demo5.tsx @@ -0,0 +1,18 @@ +import React from 'react' +import { CircleProgress } from '@nutui/nutui-react' + +const Demo5 = () => { + return ( + <> + + <> +
3000
+
+ 步 +
+ +
+ + ) +} +export default Demo5 diff --git a/src/packages/circleprogress/demos/h5/demo6.tsx b/src/packages/circleprogress/demos/h5/demo6.tsx new file mode 100644 index 0000000000..b646fbb34c --- /dev/null +++ b/src/packages/circleprogress/demos/h5/demo6.tsx @@ -0,0 +1,41 @@ +import React, { useState } from 'react' +import { Button, CircleProgress, Cell } from '@nutui/nutui-react' + +const Demo6 = () => { + const [percent, setPercent] = useState(20) + + const setReduceVal = () => { + if (percent - 10 <= 0) { + setPercent(0) + return + } + setPercent(percent - 10) + } + const setAddVal = () => { + if (percent >= 100) { + return + } + setPercent(percent + 10) + } + + return ( + <> + + {percent}% + + + + + + + ) +} +export default Demo6 diff --git a/src/packages/circleprogress/demos/taro/demo1.tsx b/src/packages/circleprogress/demos/taro/demo1.tsx new file mode 100644 index 0000000000..87a6514d04 --- /dev/null +++ b/src/packages/circleprogress/demos/taro/demo1.tsx @@ -0,0 +1,12 @@ +import React from 'react' +import { CircleProgress } from '@nutui/nutui-react-taro' + +const Demo1 = () => { + return ( + <> + + 60% + + ) +} +export default Demo1 diff --git a/src/packages/circleprogress/demos/taro/demo2.tsx b/src/packages/circleprogress/demos/taro/demo2.tsx new file mode 100644 index 0000000000..444b9504c9 --- /dev/null +++ b/src/packages/circleprogress/demos/taro/demo2.tsx @@ -0,0 +1,12 @@ +import React from 'react' +import { CircleProgress } from '@nutui/nutui-react-taro' + +const Demo2 = () => { + return ( + <> + + + + ) +} +export default Demo2 diff --git a/src/packages/circleprogress/demos/taro/demo3.tsx b/src/packages/circleprogress/demos/taro/demo3.tsx new file mode 100644 index 0000000000..4492e2031f --- /dev/null +++ b/src/packages/circleprogress/demos/taro/demo3.tsx @@ -0,0 +1,20 @@ +import React from 'react' +import { CircleProgress } from '@nutui/nutui-react-taro' + +const gradientColor = { + '0%': '#ff404f', + '100%': '#fa2c19', +} +const Demo3 = () => { + return ( + <> + + 50% + + + 100% + + + ) +} +export default Demo3 diff --git a/src/packages/circleprogress/demos/taro/demo4.tsx b/src/packages/circleprogress/demos/taro/demo4.tsx new file mode 100644 index 0000000000..482247956b --- /dev/null +++ b/src/packages/circleprogress/demos/taro/demo4.tsx @@ -0,0 +1,13 @@ +import React from 'react' +import { CircleProgress } from '@nutui/nutui-react-taro' + +const Demo4 = () => { + return ( + <> + + 50% + + + ) +} +export default Demo4 diff --git a/src/packages/circleprogress/demos/taro/demo5.tsx b/src/packages/circleprogress/demos/taro/demo5.tsx new file mode 100644 index 0000000000..ae54a676a0 --- /dev/null +++ b/src/packages/circleprogress/demos/taro/demo5.tsx @@ -0,0 +1,16 @@ +import React from 'react' +import { CircleProgress } from '@nutui/nutui-react-taro' + +const Demo5 = () => { + return ( + <> + +
3000
+
+ 步 +
+
+ + ) +} +export default Demo5 diff --git a/src/packages/circleprogress/demos/taro/demo6.tsx b/src/packages/circleprogress/demos/taro/demo6.tsx new file mode 100644 index 0000000000..92861691ed --- /dev/null +++ b/src/packages/circleprogress/demos/taro/demo6.tsx @@ -0,0 +1,41 @@ +import React, { useState } from 'react' +import { Button, CircleProgress, Cell } from '@nutui/nutui-react-taro' + +const Demo6 = () => { + const [percent, setPercent] = useState(20) + + const setReduceVal = () => { + if (percent - 10 <= 0) { + setPercent(0) + return + } + setPercent(percent - 10) + } + const setAddVal = () => { + if (percent >= 100) { + return + } + setPercent(percent + 10) + } + + return ( + <> + + {percent}% + + + + + + + ) +} +export default Demo6 diff --git a/src/packages/circleprogress/doc.en-US.md b/src/packages/circleprogress/doc.en-US.md index 09e7d916a6..d7c3cc8d57 100644 --- a/src/packages/circleprogress/doc.en-US.md +++ b/src/packages/circleprogress/doc.en-US.md @@ -16,20 +16,7 @@ import { CircleProgress } from '@nutui/nutui-react'; :::demo -```tsx -import React from "react"; -import { CircleProgress } from '@nutui/nutui-react'; - -const App = () => { - return ( - <> - - 60% - - ) -} -export default App; -``` + ::: @@ -37,20 +24,7 @@ export default App; :::demo -```tsx -import React from "react"; -import { CircleProgress } from '@nutui/nutui-react'; - -const App = () => { - return ( - <> - - - - ) -} -export default App; -``` + ::: @@ -58,28 +32,7 @@ export default App; :::demo -```tsx -import React from "react"; -import { CircleProgress } from '@nutui/nutui-react'; - -const gradientColor = { - '0%': '#FF5E5E', - '100%': '#FFA062' -}; -const App = () => { - return ( - <> - - 50% - - - 100% - - - ) -} -export default App; -``` + ::: @@ -87,22 +40,7 @@ export default App; :::demo -```tsx -import React from "react"; -import { CircleProgress } from '@nutui/nutui-react'; - - -const App = () => { - return ( - <> - - 50% - - - ) -} -export default App; -``` + ::: @@ -110,24 +48,7 @@ export default App; :::demo -```tsx -import React from "react"; -import { CircleProgress } from '@nutui/nutui-react'; - -const App = () => { - return ( - <> - - <> -
3000
-
- -
- - ) -} -export default App; -``` + ::: @@ -135,52 +56,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Button, CircleProgress } from '@nutui/nutui-react'; - -const progressOption = { - radius: 50, - strokeOutWidth: 10, - backColor: '#d9d9d9', - progressColor: 'red', -} -const App = () => { - const [percent, setPercent] = useState(50) - const [strokeInnerWidth, setStrokeInnerWidth] = useState(10) - const setReduceVal = () => { - if (percent - 10 <= 0) { - setStrokeInnerWidth(0) - setPercent(0) - return - } - setPercent(percent - 10) - } - const setAddVal = () => { - setStrokeInnerWidth(10) - if (percent >= 100) { - return - } - setPercent(percent + 10) - } - return ( - <> -
- {percent}% -
-
- - -
- - ) -} -export default App; -``` + ::: diff --git a/src/packages/circleprogress/doc.md b/src/packages/circleprogress/doc.md index 058298ed2e..c66093aa6b 100644 --- a/src/packages/circleprogress/doc.md +++ b/src/packages/circleprogress/doc.md @@ -16,20 +16,7 @@ import { CircleProgress } from '@nutui/nutui-react'; :::demo -```tsx -import React from "react"; -import { CircleProgress } from '@nutui/nutui-react'; - -const App = () => { - return ( - <> - - 60% - - ) -} -export default App; -``` + ::: @@ -37,20 +24,7 @@ export default App; :::demo -```tsx -import React from "react"; -import { CircleProgress } from '@nutui/nutui-react'; - -const App = () => { - return ( - <> - - - - ) -} -export default App; -``` + ::: @@ -58,28 +32,7 @@ export default App; :::demo -```tsx -import React from "react"; -import { CircleProgress } from '@nutui/nutui-react'; - -const gradientColor = { - '0%': '#FF5E5E', - '100%': '#FFA062' -}; -const App = () => { - return ( - <> - - 50% - - - 100% - - - ) -} -export default App; -``` + ::: @@ -87,22 +40,7 @@ export default App; :::demo -```tsx -import React from "react"; -import { CircleProgress } from '@nutui/nutui-react'; - - -const App = () => { - return ( - <> - - 50% - - - ) -} -export default App; -``` + ::: @@ -110,24 +48,7 @@ export default App; :::demo -```tsx -import React from "react"; -import { CircleProgress } from '@nutui/nutui-react'; - -const App = () => { - return ( - <> - - <> -
3000
-
- -
- - ) -} -export default App; -``` + ::: @@ -135,45 +56,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Button, CircleProgress } from '@nutui/nutui-react'; - -const App = () => { - const [percent, setPercent] = useState(30) - - const setReduceVal = () => { - if (percent - 10 <= 0) { - setPercent(0) - return - } - setPercent(percent - 10) - } - const setAddVal = () => { - if (percent >= 100) { - return - } - setPercent(percent + 10) - } - - return ( - <> -
- {percent}% -
-
- - -
- - ) -} -export default App; -``` + ::: diff --git a/src/packages/circleprogress/doc.taro.md b/src/packages/circleprogress/doc.taro.md index e5968c3ba8..b21784c77c 100644 --- a/src/packages/circleprogress/doc.taro.md +++ b/src/packages/circleprogress/doc.taro.md @@ -16,20 +16,7 @@ import { CircleProgress } from '@nutui/nutui-react-taro'; :::demo -```tsx -import React from "react"; -import { CircleProgress } from '@nutui/nutui-react-taro'; - -const App = () => { - return ( - <> - - 60% - - ) -} -export default App; -``` + ::: @@ -37,19 +24,7 @@ export default App; :::demo -```tsx -import React from "react"; -import { CircleProgress } from '@nutui/nutui-react-taro'; - -const App = () => { - return ( - <> - - - ) -} -export default App; -``` + ::: @@ -57,28 +32,7 @@ export default App; :::demo -```tsx -import React from "react"; -import { CircleProgress } from '@nutui/nutui-react-taro'; - -const gradientColor = { - '0%': '#ff404f', - '100%': '#fa2c19', -} -const App = () => { - return ( - <> - - 50% - - - 100% - - - ) -} -export default App; -``` + ::: @@ -86,22 +40,7 @@ export default App; :::demo -```tsx -import React from "react"; -import { CircleProgress } from '@nutui/nutui-react-taro'; - - -const App = () => { - return ( - <> - - 50% - - - ) -} -export default App; -``` + ::: @@ -109,25 +48,7 @@ export default App; :::demo -```tsx -import React from "react"; -import { CircleProgress } from '@nutui/nutui-react-taro'; - - -const App = () => { - return ( - <> - -
3000
-
- 步 -
-
- - ) -} -export default App; -``` + ::: @@ -135,45 +56,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Button, CircleProgress } from '@nutui/nutui-react-taro'; - -const App = () => { - const [percent, setPercent] = useState(30) - - const setReduceVal = () => { - if (percent - 10 <= 0) { - setPercent(0) - return - } - setPercent(percent - 10) - } - const setAddVal = () => { - if (percent >= 100) { - return - } - setPercent(percent + 10) - } - - return ( - <> -
- {percent}% -
-
- - -
- - ) -} -export default App; -``` + ::: diff --git a/src/packages/circleprogress/doc.zh-TW.md b/src/packages/circleprogress/doc.zh-TW.md index cb8d17d528..a51f45488a 100644 --- a/src/packages/circleprogress/doc.zh-TW.md +++ b/src/packages/circleprogress/doc.zh-TW.md @@ -16,20 +16,7 @@ import { CircleProgress } from '@nutui/nutui-react'; :::demo -```tsx -import React from "react"; -import { CircleProgress } from '@nutui/nutui-react'; - -const App = () => { - return ( - <> - - 60% - - ) -} -export default App; -``` + ::: @@ -37,20 +24,7 @@ export default App; :::demo -```tsx -import React from "react"; -import { CircleProgress } from '@nutui/nutui-react'; - -const App = () => { - return ( - <> - - - - ) -} -export default App; -``` + ::: @@ -58,28 +32,7 @@ export default App; :::demo -```tsx -import React from "react"; -import { CircleProgress } from '@nutui/nutui-react'; - -const gradientColor = { - '0%': '#FF5E5E', - '100%': '#FFA062' -}; -const App = () => { - return ( - <> - - 50% - - - 100% - - - ) -} -export default App; -``` + ::: @@ -87,22 +40,7 @@ export default App; :::demo -```tsx -import React from "react"; -import { CircleProgress } from '@nutui/nutui-react'; - - -const App = () => { - return ( - <> - - 50% - - - ) -} -export default App; -``` + ::: @@ -110,24 +48,7 @@ export default App; :::demo -```tsx -import React from "react"; -import { CircleProgress } from '@nutui/nutui-react'; - -const App = () => { - return ( - <> - - <> -
3000
-
- -
- - ) -} -export default App; -``` + ::: @@ -135,45 +56,7 @@ export default App; :::demo -```tsx -import React, { useState } from "react"; -import { Button, CircleProgress } from '@nutui/nutui-react'; - -const App = () => { - const [percent, setPercent] = useState(30) - - const setReduceVal = () => { - if (percent - 10 <= 0) { - setPercent(0) - return - } - setPercent(percent - 10) - } - const setAddVal = () => { - if (percent >= 100) { - return - } - setPercent(percent + 10) - } - - return ( - <> -
- {percent}% -
-
- - -
- - ) -} -export default App; -``` + ::: diff --git a/src/packages/col/col.scss b/src/packages/col/col.scss index 51dd975f20..fde7a971c4 100644 --- a/src/packages/col/col.scss +++ b/src/packages/col/col.scss @@ -3,21 +3,46 @@ box-sizing: border-box; word-break: break-all; margin-bottom: $col-default-margin-bottom; - &-gutter { + + &.nut-col-gutter { &:last-child { padding-right: 0 !important; } + &:first-child { padding-left: 0 !important; } } } +[dir='rtl'] .nut-col, +.nut-rtl .nut-col { + float: right; + + &.nut-col-gutter { + &:last-child { + padding-right: 0 !important; + padding-left: 0 !important; + } + + &:first-child { + padding-left: 0 !important; + padding-right: 0 !important; + } + } +} + @for $i from 1 through 24 { .nut-col-offset-#{$i} { margin-left: calc((100 / 24) * #{$i} * 1%); } + [dir='rtl'] .nut-col-offset-#{$i}, + .nut-rtl .nut-col-offset-#{$i} { + margin-left: 0; + margin-right: calc((100 / 24) * #{$i} * 1%); + } + .nut-col-#{$i} { width: calc((100 / 24) * #{$i} * 1%); } diff --git a/src/packages/collapse/__test__/__snapshots__/collapse.spec.tsx.snap b/src/packages/collapse/__test__/__snapshots__/collapse.spec.tsx.snap index 57af51456d..f84a548461 100644 --- a/src/packages/collapse/__test__/__snapshots__/collapse.spec.tsx.snap +++ b/src/packages/collapse/__test__/__snapshots__/collapse.spec.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`should match snapshot 1`] = ` diff --git a/src/packages/collapse/__test__/collapse.spec.tsx b/src/packages/collapse/__test__/collapse.spec.tsx index 6b075d5886..8cbcbd4f13 100644 --- a/src/packages/collapse/__test__/collapse.spec.tsx +++ b/src/packages/collapse/__test__/collapse.spec.tsx @@ -1,7 +1,7 @@ import * as React from 'react' // import * as renderer from 'react-test-renderer' -import { render, fireEvent } from '@testing-library/react' +import { act, fireEvent, render, waitFor } from '@testing-library/react' import '@testing-library/jest-dom' import { ArrowDown, ArrowRight } from '@nutui/icons-react' import { Collapse } from '../collapse' @@ -47,7 +47,7 @@ test('prop icon iconSize iconColor', () => { ).toHaveClass('nut-icon-ArrowDown') }) -test('prop activeName', () => { +test('prop activeName', async () => { const { container } = render( <> }> @@ -64,45 +64,40 @@ test('prop activeName', () => { ) - setTimeout(() => { - expect(container.querySelector('.nut-collapse-item-content')).toHaveStyle( - 'height: 66px' - ) - }, 100) + expect( + container.querySelectorAll('.nut-collapse-item-content')[2] + ).toHaveStyle('height:0px') }) -test('prop rotate', () => { - const { getByTestId, container } = render( +test('prop rotate', async () => { + const { container } = render( <> - } - rotate={180} - > - } - data-testid="collapse-one" - > + } rotate={90}> + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - }> + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - }> + 京东“厂直优品计划”首推“政府优品馆” ) - fireEvent.click(getByTestId('collapse-one')) - setTimeout(() => { - expect( - getByTestId('collapse-one').querySelector('.nut-collapse-item-icon') - ).toHaveStyle('transform: translateY(-50%) rotate(180deg);') - }, 100) + await waitFor(() => { + const items = container.querySelectorAll('.nut-collapse-item-header') + expect(items.length).toBe(3) + expect(items[0].querySelector('.nut-collapse-item-icon')).toHaveStyle( + 'transform: translateY(-50%) rotate(90deg);' + ) + expect(items[1].querySelector('.nut-collapse-item-icon')).toHaveStyle( + 'transform: translateY(-50%) rotate(90deg);' + ) + expect(items[2].querySelector('.nut-collapse-item-icon')).toHaveStyle( + 'transform: translateY(-50%);' + ) + }) }) test('prop title extra', () => { @@ -137,8 +132,8 @@ test('prop title extra', () => { ) }) -test('event onChange & prop disabled', () => { - const handleChange = jest.fn() +test('event onChange & prop disabled', async () => { + const handleChange = vi.fn() const { getByTestId } = render( <> @@ -157,25 +152,22 @@ test('event onChange & prop disabled', () => { const item1 = getByTestId('item1').querySelector('.nut-collapse-item-title') const item2 = getByTestId('item2').querySelector('.nut-collapse-item-title') const item3 = getByTestId('item3').querySelector('.nut-collapse-item-title') - fireEvent.click(item3 as Element) - expect(handleChange).not.toBeCalled() - fireEvent.click(item2 as Element) - expect(handleChange).toBeCalledWith(['1', '2'], '2', true) - setTimeout(() => { + await act(() => { + fireEvent.click(item3 as Element) + expect(handleChange).not.toBeCalled() + }) + await act(() => { + fireEvent.click(item2 as Element) + expect(handleChange).toBeCalledWith(['1', '2'], '2', true) + }) + await act(async () => { fireEvent.click(item1 as Element) - expect(handleChange).toBeCalledWith( - ['1', '2'], - '2', - true, - ['2'], - '1', - false - ) - }, 0) + expect(handleChange).toBeCalledWith(['2'], '1', false) + }) }) -test('event onChange & prop accordion', () => { - const handleChange = jest.fn() +test('event onChange & prop accordion', async () => { + const handleChange = vi.fn() const { getByTestId } = render( <> @@ -193,12 +185,16 @@ test('event onChange & prop accordion', () => { ) const item2 = getByTestId('item2').querySelector('.nut-collapse-item-title') const item3 = getByTestId('item3').querySelector('.nut-collapse-item-title') - fireEvent.click(item3 as Element) - expect(handleChange).not.toBeCalled() - fireEvent.click(item2 as Element) - expect(handleChange).toBeCalledWith('2', '2', true) - setTimeout(() => { + await act(() => { + fireEvent.click(item3 as Element) + expect(handleChange).not.toBeCalled() + }) + await act(() => { + fireEvent.click(item2 as Element) + expect(handleChange).toBeCalledWith('2', '2', true) + }) + await act(() => { fireEvent.click(item2 as Element) - expect(handleChange).toBeCalledWith('2', '2', true, '', '2', false) - }, 0) + expect(handleChange).toBeCalledWith('', '2', false) + }) }) diff --git a/src/packages/collapse/collapse.taro.tsx b/src/packages/collapse/collapse.taro.tsx index 6fae8bf8f8..e5f36ba07a 100644 --- a/src/packages/collapse/collapse.taro.tsx +++ b/src/packages/collapse/collapse.taro.tsx @@ -5,19 +5,23 @@ import CollapseItem from '../collapseitem/index.taro' import CollapseContext from './context' import { usePropsValue } from '@/utils/use-props-value' -type keyType = Array | string +export type CollapseActiveName = Array | string export interface CollapseProps extends BasicComponent { - activeName: keyType - defaultActiveName: keyType + activeName: CollapseActiveName + defaultActiveName: CollapseActiveName accordion: boolean expandIcon: ReactNode rotate: number - onChange: (activeName: keyType, name: string, isOpen: boolean) => void + onChange: ( + activeName: CollapseActiveName, + name: string, + isOpen: boolean + ) => void } const defaultProps = { ...ComponentDefaults, - defaultActiveName: [] as keyType, + defaultActiveName: [] as CollapseActiveName, accordion: false, expandIcon: null, rotate: 180, @@ -42,13 +46,17 @@ export const Collapse: FunctionComponent> & { } const classPrefix = 'nut-collapse' - const [value, setValue] = usePropsValue({ + const [value, setValue] = usePropsValue({ value: activeName, defaultValue: defaultActiveName, finalValue: [], }) - const changeVal = (newValue: keyType, name: string, isOpen: boolean) => { + const changeVal = ( + newValue: CollapseActiveName, + name: string, + isOpen: boolean + ) => { setValue(newValue) onChange && onChange(newValue, name, isOpen) } diff --git a/src/packages/collapse/collapse.tsx b/src/packages/collapse/collapse.tsx index ca27ba2112..a4a5515052 100644 --- a/src/packages/collapse/collapse.tsx +++ b/src/packages/collapse/collapse.tsx @@ -5,19 +5,23 @@ import CollapseItem from '../collapseitem' import CollapseContext from './context' import { usePropsValue } from '@/utils/use-props-value' -type keyType = Array | string +export type CollapseActiveName = Array | string export interface CollapseProps extends BasicComponent { - activeName: keyType - defaultActiveName: keyType + activeName: CollapseActiveName + defaultActiveName: CollapseActiveName accordion: boolean expandIcon: ReactNode rotate: number - onChange: (activeName: keyType, name: string, isOpen: boolean) => void + onChange: ( + activeName: CollapseActiveName, + name: string, + isOpen: boolean + ) => void } const defaultProps = { ...ComponentDefaults, - defaultActiveName: [] as keyType, + defaultActiveName: [] as CollapseActiveName, accordion: false, expandIcon: null, rotate: 180, @@ -42,13 +46,17 @@ export const Collapse: FunctionComponent> & { } const classPrefix = 'nut-collapse' - const [value, setValue] = usePropsValue({ + const [value, setValue] = usePropsValue({ value: activeName, defaultValue: defaultActiveName, finalValue: [], }) - const changeVal = (newValue: keyType, name: string, isOpen: boolean) => { + const changeVal = ( + newValue: CollapseActiveName, + name: string, + isOpen: boolean + ) => { setValue(newValue) onChange && onChange(newValue, name, isOpen) } diff --git a/src/packages/collapse/demo.taro.tsx b/src/packages/collapse/demo.taro.tsx index ca89fb581f..b1c4951d4e 100644 --- a/src/packages/collapse/demo.taro.tsx +++ b/src/packages/collapse/demo.taro.tsx @@ -1,35 +1,17 @@ -import React, { useState, useEffect } from 'react' +import React from 'react' import Taro from '@tarojs/taro' -import { Checked, ArrowDown } from '@nutui/icons-react-taro' import { useTranslate } from '@/sites/assets/locale/taro' -import { Collapse, Button } from '@/packages/nutui.react.taro' import Header from '@/sites/components/header' +import Demo1 from './demos/taro/demo1' +import Demo2 from './demos/taro/demo2' +import Demo3 from './demos/taro/demo3' +import Demo4 from './demos/taro/demo4' +import Demo5 from './demos/taro/demo5' +import Demo6 from './demos/taro/demo6' +import Demo7 from './demos/taro/demo7' -interface itemObj { - title: string - name: string - data: string -} -interface T { - header1: string - controll: string - header2: string - header3: string - header4: string - header5: string - header6: string - title1: string - title2: string - title3: string - content1: string - content2: string - content3: string - extra: string - buttonTextOne: string - buttonTextSec: string -} const CollapseDemo = () => { - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { header1: '基础用法', controll: '受控方式', @@ -38,15 +20,6 @@ const CollapseDemo = () => { header4: '自定义折叠图标', header5: '自定义 title 与 extra', header6: '动态改变数据', - title1: '标题1', - title2: '标题2', - title3: '标题3', - content1: 'NutUI-React是一套拥有京东风格的轻量级的 React 组件库', - content2: '在产品的功能、体验、易用性和灵活性等各个方面做了全面的升级!', - content3: '全面使用 TypeScipt', - extra: '文本内容', - buttonTextOne: '改变数据', - buttonTextSec: '还原数据', }, 'zh-TW': { header1: '基礎用法', @@ -56,15 +29,6 @@ const CollapseDemo = () => { header4: '自定義折疊圖標', header5: '自定義 title 與 extra', header6: '動態改變數據', - title1: '標題1', - title2: '標題2', - title3: '標題3', - content1: 'Nutui-React 是一套擁有京東風格的輕量級的 React 組件庫', - content2: '在產品的功能、體驗、易用性和靈活性等各個方面做了全面的升級', - content3: '全面使用 TypeScipt', - extra: '文本內容', - buttonTextOne: '改變數據', - buttonTextSec: '還原數據', }, 'en-US': { header1: 'Basic Usage', @@ -74,225 +38,33 @@ const CollapseDemo = () => { header4: 'Custom collapse Icon', header5: 'Custom title and extra', header6: 'Change Data', - title1: 'title1', - title2: 'title2', - title3: 'title3', - content1: - 'Nutui-React is a lightweight React component library with JD style', - content2: - 'The product has been comprehensively upgraded in terms of function, experience, ease of use and flexibility!', - content3: 'Full use of typescipt', - extra: 'text content', - buttonTextOne: 'change data', - buttonTextSec: 'return data', }, }) - const oldDate = [ - { - title: translated.title1, - name: '1', - data: translated.content1, - }, - { - title: translated.title2, - name: '2', - data: translated.content1, - }, - { - title: translated.title3, - name: '3', - data: translated.content1, - }, - ] - - const newDate = [ - { - title: `${translated.title1}1`, - name: '1', - data: translated.content2, - }, - { - title: `${translated.title2}2`, - name: '2', - data: translated.content2, - }, - ] - const [domData, setDomData] = useState(oldDate) - - const [activeName, setActiveKey] = useState | string>([ - '1', - '2', - ]) - - useEffect(() => { - setDomData(oldDate) - }, [translated]) - const changeNewData = () => { - setDomData(newDate) - } - const changeOldData = () => { - setDomData(oldDate) - } - return ( <>

{translated.header1}

- }> - - {translated.content1} - - - {translated.content2} - - - {translated.content3} - - + +

{translated.controll}

- setActiveKey(activeName)} - > - - {translated.content1} - - - {translated.content2} - - - {translated.content3} - - + +

{translated.header2}

- - - {translated.content1} - - - {translated.content2} - - - {translated.content3} - - + +

{translated.header3}

- } - > - - {translated.content1} - - - {translated.content2} - - - {translated.content3} - - + +

{translated.header4}

- } - rotate={-90} - > - } - > - {translated.content1} - - - {translated.content2} - - - {translated.content3} - - + +

{translated.header5}

- } - > - - - {translated.title1} -
- } - name="1" - expandIcon={} - > - {translated.content1} - - - {translated.title2} - - - } - name="2" - > - {translated.content2} - - - {translated.content3} - - +

{translated.header6}

- - {domData.map((item: itemObj, index: number) => { - return ( - - {item.data} - - ) - })} - - {/* eslint-disable-next-line react/button-has-type */} - - + ) diff --git a/src/packages/collapse/demo.tsx b/src/packages/collapse/demo.tsx index 14d18be9f7..896416eaee 100644 --- a/src/packages/collapse/demo.tsx +++ b/src/packages/collapse/demo.tsx @@ -1,34 +1,15 @@ -import React, { useState, useEffect } from 'react' -import { ArrowDown, Checked } from '@nutui/icons-react' -import { Collapse } from './collapse' -import { Button } from '../button/button' +import React from 'react' import { useTranslate } from '../../sites/assets/locale' +import Demo1 from './demos/h5/demo1' +import Demo2 from './demos/h5/demo2' +import Demo3 from './demos/h5/demo3' +import Demo4 from './demos/h5/demo4' +import Demo5 from './demos/h5/demo5' +import Demo6 from './demos/h5/demo6' +import Demo7 from './demos/h5/demo7' -interface itemObj { - title: string - name: string - data: string -} -interface T { - header1: string - controll: string - header2: string - header3: string - header4: string - header5: string - header6: string - title1: string - title2: string - title3: string - content1: string - content2: string - content3: string - extra: string - buttonTextOne: string - buttonTextSec: string -} const CollapseDemo = () => { - const [translated] = useTranslate({ + const [translated] = useTranslate({ 'zh-CN': { header1: '基础用法', controll: '受控方式', @@ -37,15 +18,6 @@ const CollapseDemo = () => { header4: '自定义折叠图标', header5: '自定义 title 与 extra', header6: '动态改变数据', - title1: '标题1', - title2: '标题2', - title3: '标题3', - content1: 'NutUI-React是一套拥有京东风格的轻量级的 React 组件库', - content2: '在产品的功能、体验、易用性和灵活性等各个方面做了全面的升级!', - content3: '全面使用 TypeScipt', - extra: '文本内容', - buttonTextOne: '改变数据', - buttonTextSec: '还原数据', }, 'zh-TW': { header1: '基礎用法', @@ -55,15 +27,6 @@ const CollapseDemo = () => { header4: '自定義折疊圖標', header5: '自定義 title 與 extra', header6: '動態改變數據', - title1: '標題1', - title2: '標題2', - title3: '標題3', - content1: 'Nutui-React 是一套擁有京東風格的輕量級的 React 組件庫', - content2: '在產品的功能、體驗、易用性和靈活性等各個方面做了全面的升級', - content3: '全面使用 TypeScipt', - extra: '文本內容', - buttonTextOne: '改變數據', - buttonTextSec: '還原數據', }, 'en-US': { header1: 'Basic Usage', @@ -73,228 +36,32 @@ const CollapseDemo = () => { header4: 'Custom collapse Icon', header5: 'Custom title and extra', header6: 'Change Data', - title1: 'title1', - title2: 'title2', - title3: 'title3', - content1: - 'Nutui-React is a lightweight React component library with JD style', - content2: - 'The product has been comprehensively upgraded in terms of function, experience, ease of use and flexibility!', - content3: 'Full use of typescipt', - extra: 'text content', - buttonTextOne: 'change data', - buttonTextSec: 'return data', }, }) - const oldDate = [ - { - title: translated.title1, - name: '1', - data: translated.content1, - }, - { - title: translated.title2, - name: '2', - data: translated.content1, - }, - { - title: translated.title3, - name: '3', - data: translated.content1, - }, - ] - - const newDate = [ - { - title: `${translated.title1}1`, - name: '1', - data: translated.content2, - }, - { - title: `${translated.title2}2`, - name: '2', - data: translated.content2, - }, - ] - const [domData, setDomData] = useState(oldDate) - - const [activeName, setActiveKey] = useState | string>([ - '1', - '2', - ]) - - useEffect(() => { - setDomData(oldDate) - }, [translated]) - const changeNewData = () => { - setDomData(newDate) - } - const changeOldData = () => { - setDomData(oldDate) - } - return ( <>

{translated.header1}

- } - > - - {translated.content1} - - - {translated.content2} - - - {translated.content3} - - + +

{translated.controll}

- setActiveKey(activeName)} - > - - {translated.content1} - - - {translated.content2} - - - {translated.content3} - - + +

{translated.header2}

- - - {translated.content1} - - - {translated.content2} - - - {translated.content3} - - + +

{translated.header3}

- } - > - - {translated.content1} - - - {translated.content2} - - - {translated.content3} - - + +

{translated.header4}

- } - rotate={-90} - > - } - > - {translated.content1} - - - {translated.content2} - - - {translated.content3} - - + +

{translated.header5}

- } - > - - - {translated.title1} -
- } - name="1" - expandIcon={} - > - {translated.content1} - - - {translated.title2} - - - } - name="2" - > - {translated.content2} - - - {translated.content3} - - +

{translated.header6}

- - {domData.map((item: itemObj, index: number) => { - return ( - - {item.data} - - ) - })} - - {/* eslint-disable-next-line react/button-has-type */} - - + ) diff --git a/src/packages/collapse/demos/h5/demo1.tsx b/src/packages/collapse/demos/h5/demo1.tsx new file mode 100644 index 0000000000..634cffbdff --- /dev/null +++ b/src/packages/collapse/demos/h5/demo1.tsx @@ -0,0 +1,22 @@ +import React from 'react' +import { Collapse } from '@nutui/nutui-react' +import { ArrowDown } from '@nutui/icons-react' + +const Demo1 = () => { + return ( + <> + }> + + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 京东“厂直优品计划”首推“政府优品馆” + + + + ) +} +export default Demo1 diff --git a/src/packages/collapse/demos/h5/demo2.tsx b/src/packages/collapse/demos/h5/demo2.tsx new file mode 100644 index 0000000000..b905f01674 --- /dev/null +++ b/src/packages/collapse/demos/h5/demo2.tsx @@ -0,0 +1,27 @@ +import React, { useState } from 'react' +import { Collapse } from '@nutui/nutui-react' + +const Demo2 = () => { + const [activeName, setActiveName] = useState(['1', '2']) + const onChange = ( + activeName: string | string[], + name: string, + isOpen: boolean + ) => { + setActiveName(activeName as string[]) + } + return ( + + + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 京东“厂直优品计划”首推“政府优品馆” + + + ) +} +export default Demo2 diff --git a/src/packages/collapse/demos/h5/demo3.tsx b/src/packages/collapse/demos/h5/demo3.tsx new file mode 100644 index 0000000000..47acb38217 --- /dev/null +++ b/src/packages/collapse/demos/h5/demo3.tsx @@ -0,0 +1,26 @@ +import React from 'react' +import { Collapse } from '@nutui/nutui-react' + +const Demo3 = () => { + const handleChange = ( + activeName: string | string[], + name: string, + isOpen: boolean + ) => { + console.log(activeName, name, isOpen) + } + return ( + + + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 京东“厂直优品计划”首推“政府优品馆” + + + ) +} +export default Demo3 diff --git a/src/packages/collapse/demos/h5/demo4.tsx b/src/packages/collapse/demos/h5/demo4.tsx new file mode 100644 index 0000000000..eeaa132829 --- /dev/null +++ b/src/packages/collapse/demos/h5/demo4.tsx @@ -0,0 +1,20 @@ +import React from 'react' +import { Collapse } from '@nutui/nutui-react' +import { ArrowDown } from '@nutui/icons-react' + +const Demo4 = () => { + return ( + }> + + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 京东“厂直优品计划”首推“政府优品馆” + + + ) +} +export default Demo4 diff --git a/src/packages/collapse/demos/h5/demo5.tsx b/src/packages/collapse/demos/h5/demo5.tsx new file mode 100644 index 0000000000..e3c836e211 --- /dev/null +++ b/src/packages/collapse/demos/h5/demo5.tsx @@ -0,0 +1,25 @@ +import React from 'react' +import { Collapse } from '@nutui/nutui-react' +import { ArrowDown, Checked } from '@nutui/icons-react' + +const Demo5 = () => { + return ( + } + rotate={90} + > + }> + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + }> + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 京东“厂直优品计划”首推“政府优品馆” + + + ) +} +export default Demo5 diff --git a/src/packages/collapse/demos/h5/demo6.tsx b/src/packages/collapse/demos/h5/demo6.tsx new file mode 100644 index 0000000000..3f45991585 --- /dev/null +++ b/src/packages/collapse/demos/h5/demo6.tsx @@ -0,0 +1,47 @@ +import React from 'react' +import { Collapse } from '@nutui/nutui-react' +import { ArrowDown, Checked } from '@nutui/icons-react' + +const Demo6 = () => { + return ( + }> + + + 标题1 + + } + name="1" + > + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 标题2 + + + } + > + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 京东“厂直优品计划”首推“政府优品馆” + + + ) +} +export default Demo6 diff --git a/src/packages/collapse/demos/h5/demo7.tsx b/src/packages/collapse/demos/h5/demo7.tsx new file mode 100644 index 0000000000..f16ae4f30e --- /dev/null +++ b/src/packages/collapse/demos/h5/demo7.tsx @@ -0,0 +1,64 @@ +import React, { useState } from 'react' +import { Collapse, Button, Space } from '@nutui/nutui-react' + +const oldData = [ + { + title: '标题1', + name: '1', + data: '京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府', + }, + { + title: '标题12', + name: '2', + data: '京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府', + }, + { + title: '标题13', + name: '3', + data: '京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府', + }, +] +const newData = [ + { + title: '标题21', + name: '1', + data: '京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府', + }, + { + title: '标题22', + name: '2', + data: '京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府', + }, +] + +const Demo7 = () => { + const [data, setData] = useState(oldData) + const changeNewData = () => { + setData(newData) + } + const changeOldData = () => { + setData(oldData) + } + return ( + <> + + {data.map((item, index) => { + return ( + + {item.data} + + ) + })} + + + + + + + ) +} +export default Demo7 diff --git a/src/packages/collapse/demos/taro/demo1.tsx b/src/packages/collapse/demos/taro/demo1.tsx new file mode 100644 index 0000000000..2c20941359 --- /dev/null +++ b/src/packages/collapse/demos/taro/demo1.tsx @@ -0,0 +1,22 @@ +import React from 'react' +import { Collapse } from '@nutui/nutui-react-taro' +import { ArrowDown } from '@nutui/icons-react-taro' + +const Demo1 = () => { + return ( + <> + }> + + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 京东“厂直优品计划”首推“政府优品馆” + + + + ) +} +export default Demo1 diff --git a/src/packages/collapse/demos/taro/demo2.tsx b/src/packages/collapse/demos/taro/demo2.tsx new file mode 100644 index 0000000000..dd4f4d8bd0 --- /dev/null +++ b/src/packages/collapse/demos/taro/demo2.tsx @@ -0,0 +1,27 @@ +import React, { useState } from 'react' +import { Collapse } from '@nutui/nutui-react-taro' + +const Demo2 = () => { + const [activeName, setActiveName] = useState(['1', '2']) + const onChange = ( + activeName: string | string[], + name: string, + isOpen: boolean + ) => { + setActiveName(activeName as string[]) + } + return ( + + + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 京东“厂直优品计划”首推“政府优品馆” + + + ) +} +export default Demo2 diff --git a/src/packages/collapse/demos/taro/demo3.tsx b/src/packages/collapse/demos/taro/demo3.tsx new file mode 100644 index 0000000000..3868430b01 --- /dev/null +++ b/src/packages/collapse/demos/taro/demo3.tsx @@ -0,0 +1,26 @@ +import React from 'react' +import { Collapse } from '@nutui/nutui-react-taro' + +const Demo3 = () => { + const handleChange = ( + activeName: string | string[], + name: string, + isOpen: boolean + ) => { + console.log(activeName, name, isOpen) + } + return ( + + + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 京东“厂直优品计划”首推“政府优品馆” + + + ) +} +export default Demo3 diff --git a/src/packages/collapse/demos/taro/demo4.tsx b/src/packages/collapse/demos/taro/demo4.tsx new file mode 100644 index 0000000000..9d4f3a7d48 --- /dev/null +++ b/src/packages/collapse/demos/taro/demo4.tsx @@ -0,0 +1,20 @@ +import React from 'react' +import { Collapse } from '@nutui/nutui-react-taro' +import { ArrowDown } from '@nutui/icons-react-taro' + +const Demo4 = () => { + return ( + }> + + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 京东“厂直优品计划”首推“政府优品馆” + + + ) +} +export default Demo4 diff --git a/src/packages/collapse/demos/taro/demo5.tsx b/src/packages/collapse/demos/taro/demo5.tsx new file mode 100644 index 0000000000..ae7c7c9182 --- /dev/null +++ b/src/packages/collapse/demos/taro/demo5.tsx @@ -0,0 +1,25 @@ +import React from 'react' +import { Collapse } from '@nutui/nutui-react-taro' +import { ArrowDown, Checked } from '@nutui/icons-react-taro' + +const Demo5 = () => { + return ( + } + rotate={90} + > + }> + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + }> + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 京东“厂直优品计划”首推“政府优品馆” + + + ) +} +export default Demo5 diff --git a/src/packages/collapse/demos/taro/demo6.tsx b/src/packages/collapse/demos/taro/demo6.tsx new file mode 100644 index 0000000000..2275297847 --- /dev/null +++ b/src/packages/collapse/demos/taro/demo6.tsx @@ -0,0 +1,47 @@ +import React from 'react' +import { Collapse } from '@nutui/nutui-react-taro' +import { ArrowDown, Checked } from '@nutui/icons-react-taro' + +const Demo6 = () => { + return ( + }> + + + 标题1 + + } + name="1" + > + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 标题2 + + + } + > + 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 + + + 京东“厂直优品计划”首推“政府优品馆” + + + ) +} +export default Demo6 diff --git a/src/packages/collapse/demos/taro/demo7.tsx b/src/packages/collapse/demos/taro/demo7.tsx new file mode 100644 index 0000000000..7a1404436f --- /dev/null +++ b/src/packages/collapse/demos/taro/demo7.tsx @@ -0,0 +1,64 @@ +import React, { useState } from 'react' +import { Collapse, Button, Space } from '@nutui/nutui-react-taro' + +const oldData = [ + { + title: '标题1', + name: '1', + data: '京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府', + }, + { + title: '标题12', + name: '2', + data: '京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府', + }, + { + title: '标题13', + name: '3', + data: '京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府', + }, +] +const newData = [ + { + title: '标题21', + name: '1', + data: '京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府', + }, + { + title: '标题22', + name: '2', + data: '京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府', + }, +] + +const Demo7 = () => { + const [data, setData] = useState(oldData) + const changeNewData = () => { + setData(newData) + } + const changeOldData = () => { + setData(oldData) + } + return ( + <> + + {data.map((item, index) => { + return ( + + {item.data} + + ) + })} + + + + + + + ) +} +export default Demo7 diff --git a/src/packages/collapse/doc.en-US.md b/src/packages/collapse/doc.en-US.md index c4279ecb43..b95b37e500 100644 --- a/src/packages/collapse/doc.en-US.md +++ b/src/packages/collapse/doc.en-US.md @@ -16,30 +16,7 @@ import { Collapse } from 'nutui-react' :::demo -```jsx -import React from "react"; -import { Collapse } from '@nutui/nutui-react'; -import { ArrowDown } from '@nutui/icons-react'; - -const App = () => { - return ( - <> - }> - - Nutui-React is a lightweight React component library with JD style - - - The product has been comprehensively upgraded in terms of function, experience, ease of use and flexibility! - - - Full use of typescipt - - - - ); -}; -export default App; -``` + ::: @@ -47,32 +24,7 @@ export default App; :::demo -```jsx -import React, {useState} from "react"; -import { Collapse } from '@nutui/nutui-react-taro'; -import { ArrowDown } from '@nutui/icons-react-taro'; - -const App = () => { - const [activeName, setActiveName] = useState(['1', '2']) - const onChange = (activeName, name, status) => { - setActiveName(activeName) - } - return ( - - - Nutui-React is a lightweight React component library with JD style - - - Nutui-React is a lightweight React component library with JD style - - - Nutui-React is a lightweight React component library with JD style - - - ); -}; -export default App; -``` + ::: @@ -80,30 +32,7 @@ export default App; :::demo -```tsx -import React, { useState } from 'react' -import { Collapse } from '@nutui/nutui-react' - -const App = () => { - const changeEnv = (isOpen: boolean, name: string) => { - console.log(isOpen, name) - } - return ( - changeEnv(isOpen, name)}> - - Nutui-React is a lightweight React component library with JD style - - - The product has been comprehensively upgraded in terms of function, experience, ease of use and flexibility! - - - Full use of typescipt - - - ) -} -export default App; -``` + ::: @@ -111,28 +40,7 @@ export default App; :::demo -```tsx -import React from 'react' -import { Collapse} from '@nutui/nutui-react' -import { ArrowDown } from '@nutui/icons-react'; - -const App = () => { - return ( - }> - - Nutui-React is a lightweight React component library with JD style - - - The product has been comprehensively upgraded in terms of function, experience, ease of use and flexibility! - - - Full use of typescipt - - - ) -} -export default App; -``` + ::: @@ -140,28 +48,7 @@ export default App; :::demo -```jsx -import React from 'react' -import { Collapse } from '@nutui/nutui-react' -import { ArrowDown, Checked } from '@nutui/icons-react'; - -const App = () => { - return ( - } rotate={90}> - }> - Nutui-React is a lightweight React component library with JD style - - - The product has been comprehensively upgraded in terms of function, experience, ease of use and flexibility! - - - Full use of typescipt - - - ) -} -export default App; -``` + ::: @@ -169,53 +56,7 @@ export default App; :::demo -```jsx -import React from 'react' -import { Collapse } from '@nutui/nutui-react' -import { ArrowDown, Checked } from '@nutui/icons-react'; - -const App = () => { - return ( - }> - - title1 - - } - name="1" - > - Nutui-React is a lightweight React component library with JD style - - - title2 - - } - > - The product has been comprehensively upgraded in terms of function, experience, ease of use and flexibility! - - - Full use of typescipt - - - ) -} -export default App; -``` + ::: @@ -223,70 +64,7 @@ export default App; :::demo -```jsx -import React, { useState } from 'react' -import { Collapse, Button } from '@nutui/nutui-react' - -const oldDate = [ - { - title: 'title1', - name: '1', - data: 'Nutui-React is a lightweight React component library with JD style', - }, - { - title: 'title12', - name: '2', - data: 'Nutui-React is a lightweight React component library with JD style', - }, - { - title: 'title13', - name: '3', - data: 'Nutui-React is a lightweight React component library with JD style', - }, -] -const newDate = [ - { - title: 'title21', - name: '1', - data: 'Nutui-React is a lightweight React component library with JD style', - }, - { - title: 'title22', - name: '2', - data: 'Nutui-React is a lightweight React component library with JD style', - }, -] - -const App = () => { - const [domData, setDomData] = useState(oldDate) - const changeNewData = () => { - setDomData(newDate) - } - const changeOldData = () => { - setDomData(oldDate) - } - return ( - <> - - {domData.map((item, index) => { - return ( - - {item.data} - - ) - })} - - - - - ) -} - export default App; -``` + ::: @@ -324,7 +102,7 @@ The component provides the following CSS variables, which can be used to customi | Name | Description | Default | | --- | --- | --- | -| \--nutui-collapse-item-padding | padding | `13px 36px 13px 26px` | +| \--nutui-collapse-item-padding | padding | `13px 26px` | | \--nutui-collapse-item-font-size | fontSize | `$font-size-base` | | \--nutui-collapse-item-line-height | lineHeight | `24px` | | \--nutui-collapse-item-color | font color | `#666666` | diff --git a/src/packages/collapse/doc.md b/src/packages/collapse/doc.md index 538a583c2f..e4a56fcbaf 100644 --- a/src/packages/collapse/doc.md +++ b/src/packages/collapse/doc.md @@ -16,30 +16,7 @@ import { Collapse } from 'nutui-react' :::demo -```jsx -import React from "react"; -import { Collapse } from '@nutui/nutui-react'; -import { ArrowDown } from '@nutui/icons-react'; - -const App = () => { - return ( - <> - }> - - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 京东“厂直优品计划”首推“政府优品馆” - - - - ); -}; -export default App; -``` + ::: @@ -47,32 +24,7 @@ export default App; :::demo -```jsx -import React, {useState} from "react"; -import { Collapse } from '@nutui/nutui-react'; -import { ArrowDown } from '@nutui/icons-react'; - -const App = () => { - const [activeName, setActiveName] = useState(['1', '2']) - const onChange = (activeName, name, status) => { - setActiveName(activeName) - } - return ( - - - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 京东“厂直优品计划”首推“政府优品馆” - - - ); -}; -export default App; -``` + ::: @@ -80,31 +32,7 @@ export default App; :::demo -```tsx -import React, { useState } from 'react' -import { Collapse} from '@nutui/nutui-react' -import { ArrowDown } from '@nutui/icons-react' - -const App = () => { - const handleChange = (activeName, name, status) => { - console.log(activeName, name, status) - } - return ( - - - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 京东“厂直优品计划”首推“政府优品馆” - - - ) -} -export default App; -``` + ::: @@ -112,28 +40,7 @@ export default App; :::demo -```tsx -import React from 'react' -import { Collapse} from '@nutui/nutui-react' -import { ArrowDown } from '@nutui/icons-react' - -const App = () => { - return ( - }> - - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 京东“厂直优品计划”首推“政府优品馆” - - - ) -} -export default App; -``` + ::: @@ -141,28 +48,7 @@ export default App; :::demo -```jsx -import React from 'react' -import { Collapse} from '@nutui/nutui-react' -import { ArrowDown, Checked } from '@nutui/icons-react' - -const App = () => { - return ( - } rotate={90}> - }> - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - }> - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 京东“厂直优品计划”首推“政府优品馆” - - - ) -} -export default App; -``` + ::: @@ -170,53 +56,7 @@ export default App; :::demo -```jsx -import React from 'react' -import { Collapse, Button} from '@nutui/nutui-react' -import { ArrowDown, Checked } from '@nutui/icons-react' - -const App = () => { - return ( - }> - - 标题1 - - } - name="1" - > - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 标题2 - - } - > - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 京东“厂直优品计划”首推“政府优品馆” - - - ) -} -export default App; -``` + ::: @@ -224,70 +64,7 @@ export default App; :::demo -```jsx -import React, { useState } from 'react' -import { Collapse, Button } from '@nutui/nutui-react' - -const oldDate = [ - { - title: '标题1', - name: '1', - data: '京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府', - }, - { - title: '标题12', - name: '2', - data: '京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府', - }, - { - title: '标题13', - name: '3', - data: '京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府', - }, -] -const newDate = [ - { - title: '标题21', - name: '1', - data: '京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府', - }, - { - title: '标题22', - name: '2', - data: '京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府', - }, -] - -const App = () => { - const [domData, setDomData] = useState(oldDate) - const changeNewData = () => { - setDomData(newDate) - } - const changeOldData = () => { - setDomData(oldDate) - } - return ( - <> - - {domData.map((item, index) => { - return ( - - {item.data} - - ) - })} - - - - - ) -} - export default App; -``` + ::: @@ -325,7 +102,7 @@ const App = () => { | 名称 | 说明 | 默认值 | | --- | --- | --- | -| \--nutui-collapse-item-padding | 内边距 | `13px 36px 13px 26px` | +| \--nutui-collapse-item-padding | 内边距 | `13px 26px` | | \--nutui-collapse-item-font-size | 字体大小 | `$font-size-base` | | \--nutui-collapse-item-line-height | 行高 | `24px` | | \--nutui-collapse-item-color | 字体颜色 | `#666666` | diff --git a/src/packages/collapse/doc.taro.md b/src/packages/collapse/doc.taro.md index 785afb719a..66ba244066 100644 --- a/src/packages/collapse/doc.taro.md +++ b/src/packages/collapse/doc.taro.md @@ -16,30 +16,7 @@ import { Collapse } from 'nutui-react-taro' :::demo -```jsx -import React from "react"; -import { Collapse } from '@nutui/nutui-react-taro'; -import { ArrowDown } from '@nutui/icons-react-taro' - -const App = () => { - return ( - <> - }> - - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 京东“厂直优品计划”首推“政府优品馆” - - - - ); -}; -export default App; -``` + ::: @@ -47,32 +24,7 @@ export default App; :::demo -```jsx -import React, {useState} from "react"; -import { Collapse } from '@nutui/nutui-react-taro'; -import { ArrowDown } from '@nutui/icons-react-taro'; - -const App = () => { - const [activeName, setActiveName] = useState(['1', '2']) - const onChange = (activeName, name, status) => { - setActiveName(activeName) - } - return ( - - - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 京东“厂直优品计划”首推“政府优品馆” - - - ); -}; -export default App; -``` + ::: @@ -80,30 +32,7 @@ export default App; :::demo -```tsx -import React, { useState } from 'react' -import { Collapse} from '@nutui/nutui-react-taro' - -const App = () => { - const changeEnv = (isOpen: boolean, name: string) => { - console.log(isOpen, name) - } - return ( - changeEnv(isOpen, name)}> - - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 京东“厂直优品计划”首推“政府优品馆” - - - ) -} -export default App; -``` + ::: @@ -111,28 +40,7 @@ export default App; :::demo -```tsx -import React from 'react' -import { Collapse} from '@nutui/nutui-react-taro' -import { ArrowDown } from '@nutui/icons-react-taro' - -const App = () => { - return ( - }> - - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 京东“厂直优品计划”首推“政府优品馆” - - - ) -} -export default App; -``` + ::: @@ -140,28 +48,7 @@ export default App; :::demo -```jsx -import React from 'react' -import { Collapse} from '@nutui/nutui-react-taro' -import { ArrowDown, Checked } from '@nutui/icons-react-taro' - -const App = () => { - return ( - } rotate={90}> - }> - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - }> - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 京东“厂直优品计划”首推“政府优品馆” - - - ) -} -export default App; -``` + ::: @@ -169,53 +56,7 @@ export default App; :::demo -```jsx -import React from 'react' -import { Collapse } from '@nutui/nutui-react-taro' -import { ArrowDown, Checked } from '@nutui/icons-react-taro' - -const App = () => { - return ( - }> - - 标题1 - - } - name="1" - > - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 标题2 - - } - > - 京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府 - - - 京东“厂直优品计划”首推“政府优品馆” - - - ) -} -export default App; -``` + ::: @@ -223,70 +64,7 @@ export default App; :::demo -```jsx -import React, { useState } from 'react' -import { Collapse, Button} from '@nutui/nutui-react-taro' - -const oldDate = [ - { - title: '标题1', - name: '1', - data: '京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府', - }, - { - title: '标题12', - name: '2', - data: '京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府', - }, - { - title: '标题13', - name: '3', - data: '京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府', - }, -] -const newDate = [ - { - title: '标题21', - name: '1', - data: '京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府', - }, - { - title: '标题22', - name: '2', - data: '京东“厂直优品计划”首推“政府优品馆” 3年覆盖80%镇级政府', - }, -] - -const App = () => { - const [domData, setDomData] = useState(oldDate) - const changeNewData = () => { - setDomData(newDate) - } - const changeOldData = () => { - setDomData(oldDate) - } - return ( - <> - - {domData.map((item, index) => { - return ( - - {item.data} - - ) - })} - - - - - ) -} - export default App; -``` + ::: @@ -324,7 +102,7 @@ const App = () => { | 名称 | 说明 | 默认值 | | --- | --- | --- | -| \--nutui-collapse-item-padding | 内边距 | `13px 36px 13px 26px` | +| \--nutui-collapse-item-padding | 内边距 | `13px 26px` | | \--nutui-collapse-item-font-size | 字体大小 | `$font-size-base` | | \--nutui-collapse-item-line-height | 行高 | `24px` | | \--nutui-collapse-item-color | 字体颜色 | `#666666` | diff --git a/src/packages/collapse/doc.zh-TW.md b/src/packages/collapse/doc.zh-TW.md index 20aca97ced..30498a46d7 100644 --- a/src/packages/collapse/doc.zh-TW.md +++ b/src/packages/collapse/doc.zh-TW.md @@ -16,30 +16,7 @@ import { Collapse } from 'nutui-react' :::demo -```jsx -import React from "react"; -import { Collapse } from '@nutui/nutui-react'; -import { ArrowDown } from '@nutui/icons-react'; - -const App = () => { - return ( - <> - }> - - 京東“廠直優品計劃”首推“政府優品館” 3年覆蓋80%鎮級政府 - - - 京東“廠直優品計劃”首推“政府優品館” 3年覆蓋80%鎮級政府 - - - 京東“廠直優品計劃”首推“政府優品館” - - - - ); -}; -export default App; -``` + ::: @@ -47,32 +24,7 @@ export default App; :::demo -```jsx -import React, {useState} from "react"; -import { Collapse } from '@nutui/nutui-react'; -import { ArrowDown } from '@nutui/icons-react'; - -const App = () => { - const [activeName, setActiveName] = useState(['1', '2']) - const onChange = (activeName, name, status) => { - setActiveName(activeName) - } - return ( - - - 京東“廠直優品計劃”首推“政府優品館” 3年覆蓋80%鎮級政府 - - - 京東“廠直優品計劃”首推“政府優品館” 3年覆蓋80%鎮級政府 - - - 京東“廠直優品計劃”首推“政府優品館” - - - ); -}; -export default App; -``` + ::: @@ -80,31 +32,7 @@ export default App; :::demo -```tsx -import React, { useState } from 'react' -import { Collapse} from '@nutui/nutui-react' -import { ArrowDown } from '@nutui/icons-react' - -const App = () => { - const handleChange = (activeName, name, status) => { - console.log(activeName, name, status) - } - return ( - - - 京東“廠直優品計劃”首推“政府優品館” 3年覆蓋80%鎮級政府 - - - 京東“廠直優品計劃”首推“政府優品館” 3年覆蓋80%鎮級政府 - - - 京東“廠直優品計劃”首推“政府優品館” - - - ) -} -export default App; -``` + ::: @@ -112,28 +40,7 @@ export default App; :::demo -```tsx -import React from 'react' -import { Collapse} from '@nutui/nutui-react' -import { ArrowDown } from '@nutui/icons-react' - -const App = () => { - return ( - }> - - 京東“廠直優品計劃”首推“政府優品館” 3年覆蓋80%鎮級政府 - - - 京東“廠直優品計劃”首推“政府優品館” 3年覆蓋80%鎮級政府 - - - 京東“廠直優品計劃”首推“政府優品館” - - - ) -} -export default App; -``` + ::: @@ -141,28 +48,7 @@ export default App; :::demo -```jsx -import React from 'react' -import { Collapse} from '@nutui/nutui-react' -import { ArrowDown, Checked } from '@nutui/icons-react' - -const App = () => { - return ( - } rotate={90}> - }> - 京東“廠直優品計劃”首推“政府優品館” 3年覆蓋80%鎮級政府 - - }> - 京東“廠直優品計劃”首推“政府優品館” 3年覆蓋80%鎮級政府 - - - 京東“廠直優品計劃”首推“政府優品館” - - - ) -} -export default App; -``` + ::: @@ -170,53 +56,7 @@ export default App; :::demo -```jsx -import React from 'react' -import { Collapse, Button} from '@nutui/nutui-react' -import { ArrowDown, Checked } from '@nutui/icons-react' - -const App = () => { - return ( - }> - - 標題1 - - } - name="1" - > - 京東“廠直優品計劃”首推“政府優品館” 3年覆蓋80%鎮級政府 - - - 標題2 - - } - > - 京東“廠直優品計劃”首推“政府優品館” 3年覆蓋80%鎮級政府 - - - 京東“廠直優品計劃”首推“政府優品館” - - - ) -} -export default App; -``` + ::: @@ -224,70 +64,7 @@ export default App; :::demo -```jsx -import React, { useState } from 'react' -import { Collapse, Button } from '@nutui/nutui-react' - -const oldDate = [ - { - title: '標題1', - name: '1', - data: '京東“廠直優品計劃”首推“政府優品館” 3年覆蓋80%鎮級政府', - }, - { - title: '標題12', - name: '2', - data: '京東“廠直優品計劃”首推“政府優品館” 3年覆蓋80%鎮級政府', - }, - { - title: '標題13', - name: '3', - data: '京東“廠直優品計劃”首推“政府優品館” 3年覆蓋80%鎮級政府', - }, -] -const newDate = [ - { - title: '標題21', - name: '1', - data: '京東“廠直優品計劃”首推“政府優品館” 3年覆蓋80%鎮級政府', - }, - { - title: '標題22', - name: '2', - data: '京東“廠直優品計劃”首推“政府優品館” 3年覆蓋80%鎮級政府', - }, -] - -const App = () => { - const [domData, setDomData] = useState(oldDate) - const changeNewData = () => { - setDomData(newDate) - } - const changeOldData = () => { - setDomData(oldDate) - } - return ( - <> - - {domData.map((item, index) => { - return ( - - {item.data} - - ) - })} - - - - - ) -} - export default App; -``` + ::: @@ -325,7 +102,7 @@ const App = () => { | 名稱 | 說明 | 默認值 | | --- | --- | --- | -| \--nutui-collapse-item-padding | 內邊距 | `13px 36px 13px 26px` | +| \--nutui-collapse-item-padding | 內邊距 | `13px 26px` | | \--nutui-collapse-item-font-size | 字體大小 | `$font-size-base` | | \--nutui-collapse-item-line-height | 行高 | `24px` | | \--nutui-collapse-item-color | 字體顏色 | `#666666` | diff --git a/src/packages/collapse/index.taro.ts b/src/packages/collapse/index.taro.ts index 2bb1087f43..2ecbce069d 100644 --- a/src/packages/collapse/index.taro.ts +++ b/src/packages/collapse/index.taro.ts @@ -1,4 +1,4 @@ import { Collapse } from './collapse.taro' -export type { CollapseProps } from './collapse.taro' +export type { CollapseActiveName, CollapseProps } from './collapse.taro' export default Collapse diff --git a/src/packages/collapse/index.ts b/src/packages/collapse/index.ts index 7458d5a0a0..e4de82ffb1 100644 --- a/src/packages/collapse/index.ts +++ b/src/packages/collapse/index.ts @@ -1,4 +1,4 @@ import { Collapse } from './collapse' -export type { CollapseProps } from './collapse' +export type { CollapseActiveName, CollapseProps } from './collapse' export default Collapse diff --git a/src/packages/collapseitem/collapseitem.scss b/src/packages/collapseitem/collapseitem.scss index dbf95903a8..c3b8a31c60 100644 --- a/src/packages/collapseitem/collapseitem.scss +++ b/src/packages/collapseitem/collapseitem.scss @@ -1,17 +1,19 @@ .nut-collapse-item { position: relative; + &::after { position: absolute; box-sizing: border-box; content: ' '; pointer-events: none; right: 16px; - bottom: 0; left: 16px; + bottom: 0; border-bottom: $collapse-item-border-bottom; -webkit-transform: scaleY(0.5); transform: scaleY(0.5); } + &:last-child::after { display: none; } @@ -33,8 +35,8 @@ content: ' '; pointer-events: none; right: 16px; - bottom: 0; left: 16px; + bottom: 0; border-bottom: $collapse-item-header-border-bottom; -webkit-transform: scaleY(0.5); transform: scaleY(0.5); @@ -60,7 +62,7 @@ &-icon-box { display: flex; - padding-right: 40px; + width: 24px; position: relative; color: $color-text; } @@ -103,3 +105,10 @@ } } } +[dir='rtl'] .nut-collapse-item, +.nut-rtl .nut-collapse-item { + &-icon { + left: auto; + right: 5px; + } +} diff --git a/src/packages/collapseitem/collapseitem.taro.tsx b/src/packages/collapseitem/collapseitem.taro.tsx index a65539ddec..5152c81545 100644 --- a/src/packages/collapseitem/collapseitem.taro.tsx +++ b/src/packages/collapseitem/collapseitem.taro.tsx @@ -8,7 +8,7 @@ import React, { useMemo, } from 'react' import classNames from 'classnames' -import Taro from '@tarojs/taro' +import { createSelectorQuery } from '@tarojs/taro' import { BasicComponent, ComponentDefaults } from '@/utils/typings' import CollapseContext from '../collapse/context' @@ -85,7 +85,7 @@ export const CollapseItem: FunctionComponent< const getRect = (selector: string) => { return new Promise((resolve) => { - Taro.createSelectorQuery() + createSelectorQuery() .select(selector) .boundingClientRect() .exec((rect = []) => { diff --git a/src/packages/configprovider/__test__/__snapshots__/configprovider.spec.tsx.snap b/src/packages/configprovider/__test__/__snapshots__/configprovider.spec.tsx.snap index 3fdbb713d7..347a2370d2 100644 --- a/src/packages/configprovider/__test__/__snapshots__/configprovider.spec.tsx.snap +++ b/src/packages/configprovider/__test__/__snapshots__/configprovider.spec.tsx.snap @@ -1,6 +1,6 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html -exports[`configprovider should match snapshot 1`] = ` +exports[`configprovider > should match snapshot 1`] = `
} +export type ConfigProviderDirection = 'ltr' | 'rtl' | undefined + const classPrefix = 'nut-configprovider' export const defaultConfigRef: { @@ -20,6 +23,7 @@ export const defaultConfigRef: { } = { current: { locale: zhCN, + direction: 'ltr', }, } @@ -46,19 +50,25 @@ function convertThemeVarsToCSSVars(themeVars: Record) { return cssVars } +export const useRtl = () => { + const { direction } = useConfig() + return direction === 'rtl' +} + export const ConfigProvider: FunctionComponent< Partial > = (props) => { - const { style, className, children, ...config } = props + const { style, className, children, direction, ...config } = props const mergedConfig = useMemo( () => { return { ...getDefaultConfig(), ...config, + direction, } }, - [config], + [config, direction], (prev, next) => prev.some((prevTheme, index) => { const nextTheme = next[index] @@ -74,10 +84,11 @@ export const ConfigProvider: FunctionComponent< return (
{children} diff --git a/src/packages/configprovider/configprovider.tsx b/src/packages/configprovider/configprovider.tsx index 89dd5b97f8..1d2c5a7680 100644 --- a/src/packages/configprovider/configprovider.tsx +++ b/src/packages/configprovider/configprovider.tsx @@ -7,12 +7,16 @@ import { BasicComponent } from '@/utils/typings' import { BaseLang } from '@/locales/base' import zhCN from '@/locales/zh-CN' import type { NutCSSVariables } from './types' +import { inBrowser } from '@/utils/raf' export interface ConfigProviderProps extends BasicComponent { locale: BaseLang + direction?: ConfigProviderDirection theme?: Record } +export type ConfigProviderDirection = 'ltr' | 'rtl' | undefined + const classPrefix = 'nut-configprovider' export const defaultConfigRef: { @@ -46,19 +50,28 @@ function convertThemeVarsToCSSVars(themeVars: Record) { return cssVars } +export const useRtl = () => { + const { direction } = useConfig() + if (direction) { + return direction === 'rtl' + } + return inBrowser && document.dir === 'rtl' +} + export const ConfigProvider: FunctionComponent< Partial > = (props) => { - const { style, className, children, ...config } = props + const { style, className, children, direction, ...config } = props const mergedConfig = useMemo( () => { return { ...getDefaultConfig(), ...config, + direction, } }, - [config], + [config, direction], (prev, next) => prev.some((prevTheme, index) => { const nextTheme = next[index] @@ -78,7 +91,9 @@ export const ConfigProvider: FunctionComponent< style={{ ...cssVarStyle, ...style, + direction, }} + dir={direction} > {children}
diff --git a/src/packages/configprovider/demo.taro.tsx b/src/packages/configprovider/demo.taro.tsx index da994cc756..73ea10adf1 100644 --- a/src/packages/configprovider/demo.taro.tsx +++ b/src/packages/configprovider/demo.taro.tsx @@ -1,21 +1,13 @@ import React from 'react' import Taro from '@tarojs/taro' -import { - ConfigProvider, - TextArea, - Button, - Cell, - Rate, -} from '@/packages/nutui.react.taro' -import enUS from '@/locales/en-US' import Header from '@/sites/components/header' +import Demo1 from './demos/taro/demo1' +import Demo2 from './demos/taro/demo2' +import Demo3 from './demos/taro/demo3' +import Demo4 from './demos/taro/demo4' +import Demo5 from './demos/taro/demo5' import { useTranslate } from '@/sites/assets/locale/taro' -const darkTheme = { - nutuiColorPrimary: 'green', - nutuiColorPrimaryStop1: 'green', - nutuiColorPrimaryStop2: 'green', -} const ConfigProviderDemo = () => { const [translated] = useTranslate({ 'zh-CN': { @@ -23,61 +15,34 @@ const ConfigProviderDemo = () => { title2: 'Textarea 英文', defaultTheme: '默认主题', customTheme: '定制主题', - submit: '提交', }, 'zh-TW': { title1: '默認用法', title2: 'Textarea 英文', defaultTheme: '默認主題', customTheme: '定制主題', - submit: '提交', }, 'en-US': { title1: 'Textarea default', title2: 'Textarea en-US', customTheme: 'Custom Theme', defaultTheme: 'Default Theme', - submit: 'Submit', }, }) return ( <>
-

{translated.title1}

- -