From 76434677bad58810a8822efd869b1bead3dc3426 Mon Sep 17 00:00:00 2001 From: Mark Heptinstall <92581963+mark-heptinstall@users.noreply.github.com> Date: Thu, 23 Feb 2023 14:38:54 +0000 Subject: [PATCH 01/22] Use edit in edit_uri example To match the behaviour when the default branch is not `master` (e.g. main), the example `edit_uri` should start with `edit` instead of `blob` --- docs/setup/adding-a-git-repository.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/setup/adding-a-git-repository.md b/docs/setup/adding-a-git-repository.md index 1dc988a88..2315c7c48 100644 --- a/docs/setup/adding-a-git-repository.md +++ b/docs/setup/adding-a-git-repository.md @@ -109,7 +109,7 @@ resolves to the subfolder where your documentation is hosted. If your default branch is called `main`, change the setting to: ``` yaml -edit_uri: blob/main/docs/ +edit_uri: edit/main/docs/ ``` After making sure that `edit_uri` is correctly configured, buttons for code From 1dd229a59114c998cce184c7261f250a3f21807d Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 24 Feb 2023 02:37:38 +0100 Subject: [PATCH 02/22] ci: merge publish workflow with build one --- .github/workflows/build.yml | 82 ++++++++++++++++++++++++-- .github/workflows/publish.yml | 105 ---------------------------------- 2 files changed, 78 insertions(+), 109 deletions(-) delete mode 100644 .github/workflows/publish.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 52b30da89..de5f442eb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,18 +20,23 @@ name: build on: - - push - - pull_request + push: + branches: + - master + pull_request: + release: + types: + - published env: NODE_VERSION: 14.x + PYTHON_VERSION: 3.x permissions: contents: read jobs: - build: - name: Build project + npm: runs-on: ubuntu-latest steps: @@ -61,3 +66,72 @@ jobs: run: | npm run build git diff --name-only + + pypi: + runs-on: ubuntu-latest + steps: + + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Set up Python runtime + uses: actions/setup-python@v4 + with: + python-version: ${{ env.PYTHON_VERSION }} + + - name: Set up Python dependencies + run: pip install --upgrade build twine + + - name: Build Python package + run: python -m build + + - name: Publish Python package + env: + PYPI_USERNAME: ${{ secrets.PYPI_USERNAME }} + PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }} + run: twine upload --disable-progress-bar -u ${PYPI_USERNAME} -p ${PYPI_PASSWORD} dist/* + + docker: + runs-on: ubuntu-latest + steps: + + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Login to DockerHub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GHCR_TOKEN }} + + - name: Build Docker image + uses: docker/build-push-action@v3 + with: + context: . + # platforms: linux/amd64,linux/arm64 + tags: | + ${{ github.event.repository.full_name }}:latest + ${{ github.event.repository.full_name }}:${{ github.event.release.tag_name }} + ghcr.io/${{ github.event.repository.full_name }}:latest + ghcr.io/${{ github.event.repository.full_name }}:${{ github.event.release.tag_name }} + + - name: Check Docker image + working-directory: /tmp + run: | + docker run --rm -i -v ${PWD}:/docs ${{ github.event.repository.full_name }} new . + docker run --rm -i -v ${PWD}:/docs ${{ github.event.repository.full_name }} build + + - name: Publish Docker image + env: + DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} + DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} + run: | + docker push --all-tags ${{ github.event.repository.full_name }} + docker push --all-tags ghcr.io/${{ github.event.repository.full_name }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml deleted file mode 100644 index dab67447d..000000000 --- a/.github/workflows/publish.yml +++ /dev/null @@ -1,105 +0,0 @@ -# Copyright (c) 2016-2023 Martin Donath - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. - -name: publish -on: - release: - types: - - published - -env: - PYTHON_VERSION: 3.x - -permissions: - contents: read - -jobs: - publish_pypi: - name: Build and push Python package - if: github.event.repository.fork == false - runs-on: ubuntu-latest - steps: - - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Set up Python runtime - uses: actions/setup-python@v4 - with: - python-version: ${{ env.PYTHON_VERSION }} - - - name: Set up Python dependencies - run: pip install --upgrade build twine - - - name: Build Python package - run: python -m build - - - name: Publish Python package - env: - PYPI_USERNAME: ${{ secrets.PYPI_USERNAME }} - PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }} - run: twine upload --disable-progress-bar -u ${PYPI_USERNAME} -p ${PYPI_PASSWORD} dist/* - - publish_docker: - name: Build and push Docker image - if: github.event.repository.fork == false - runs-on: ubuntu-latest - steps: - - - name: Checkout repository - uses: actions/checkout@v3 - - - name: Login to DockerHub - uses: docker/login-action@v2 - with: - username: ${{ secrets.DOCKER_USERNAME }} - password: ${{ secrets.DOCKER_PASSWORD }} - - - name: Login to GitHub Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GHCR_TOKEN }} - - - name: Build Docker image - uses: docker/build-push-action@v3 - with: - context: . - # platforms: linux/amd64,linux/arm64 - tags: | - ${{ github.event.repository.full_name }}:latest - ${{ github.event.repository.full_name }}:${{ github.event.release.tag_name }} - ghcr.io/${{ github.event.repository.full_name }}:latest - ghcr.io/${{ github.event.repository.full_name }}:${{ github.event.release.tag_name }} - - - name: Check Docker image - working-directory: /tmp - run: | - docker run --rm -i -v ${PWD}:/docs ${{ github.event.repository.full_name }} new . - docker run --rm -i -v ${PWD}:/docs ${{ github.event.repository.full_name }} build - - - name: Publish Docker image - env: - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} - DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - run: | - docker push --all-tags ${{ github.event.repository.full_name }} - docker push --all-tags ghcr.io/${{ github.event.repository.full_name }} From c0c2aa2348bab93a90da39a4daff235474778bc9 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 24 Feb 2023 02:57:16 +0100 Subject: [PATCH 03/22] ci: use docker metadata action for tags and labels Also do not set latest tag on prerelease for the Docker image. --- .github/workflows/build.yml | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index de5f442eb..623f1ff5a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -111,22 +111,33 @@ jobs: username: ${{ github.repository_owner }} password: ${{ secrets.GHCR_TOKEN }} + - name: Generate Docker tags and labels + id: meta + uses: docker/metadata-action@v4 + with: + images: | + ${{ github.event.repository.full_name }} + ghcr.io/${{ github.event.repository.full_name }} + tags: | + type=ref,event=branch + type=ref,event=tag + type=ref,event=pr + flavor: | + latest=${{ github.event.release.prerelease == false }} + - name: Build Docker image uses: docker/build-push-action@v3 with: context: . # platforms: linux/amd64,linux/arm64 - tags: | - ${{ github.event.repository.full_name }}:latest - ${{ github.event.repository.full_name }}:${{ github.event.release.tag_name }} - ghcr.io/${{ github.event.repository.full_name }}:latest - ghcr.io/${{ github.event.repository.full_name }}:${{ github.event.release.tag_name }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} - name: Check Docker image working-directory: /tmp run: | - docker run --rm -i -v ${PWD}:/docs ${{ github.event.repository.full_name }} new . - docker run --rm -i -v ${PWD}:/docs ${{ github.event.repository.full_name }} build + docker run --rm -i -v ${PWD}:/docs ${{ github.event.repository.full_name }}:${{ steps.meta.outputs.version }} new . + docker run --rm -i -v ${PWD}:/docs ${{ github.event.repository.full_name }}:${{ steps.meta.outputs.version }} build - name: Publish Docker image env: From f5c6191e294b29fbd1c083a555737d7aa0217cf3 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 24 Feb 2023 03:00:51 +0100 Subject: [PATCH 04/22] ci: use build push action to publish docker image --- .github/workflows/build.yml | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 623f1ff5a..e21487c3b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -98,6 +98,9 @@ jobs: - name: Checkout repository uses: actions/checkout@v3 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + - name: Login to DockerHub uses: docker/login-action@v2 with: @@ -129,7 +132,7 @@ jobs: uses: docker/build-push-action@v3 with: context: . - # platforms: linux/amd64,linux/arm64 + load: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} @@ -140,9 +143,9 @@ jobs: docker run --rm -i -v ${PWD}:/docs ${{ github.event.repository.full_name }}:${{ steps.meta.outputs.version }} build - name: Publish Docker image - env: - DOCKER_USERNAME: ${{ secrets.DOCKER_USERNAME }} - DOCKER_PASSWORD: ${{ secrets.DOCKER_PASSWORD }} - run: | - docker push --all-tags ${{ github.event.repository.full_name }} - docker push --all-tags ghcr.io/${{ github.event.repository.full_name }} + uses: docker/build-push-action@v3 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} From 54da076e6f86d83ebdccb5b1476e5eb0adf63b63 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Fri, 24 Feb 2023 03:01:24 +0100 Subject: [PATCH 05/22] ci: only publish python package and docker image on release --- .github/workflows/build.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e21487c3b..8a2a72ab7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -86,6 +86,7 @@ jobs: run: python -m build - name: Publish Python package + if: github.event_name == 'release' env: PYPI_USERNAME: ${{ secrets.PYPI_USERNAME }} PYPI_PASSWORD: ${{ secrets.PYPI_PASSWORD }} @@ -102,12 +103,14 @@ jobs: uses: docker/setup-buildx-action@v2 - name: Login to DockerHub + if: github.event_name == 'release' uses: docker/login-action@v2 with: username: ${{ secrets.DOCKER_USERNAME }} password: ${{ secrets.DOCKER_PASSWORD }} - name: Login to GitHub Container Registry + if: github.event_name == 'release' uses: docker/login-action@v2 with: registry: ghcr.io @@ -146,6 +149,6 @@ jobs: uses: docker/build-push-action@v3 with: context: . - push: true + push: ${{ github.event_name == 'release' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} From b4f012ee48c15c25f2ba889cabb0e174c3b33bc1 Mon Sep 17 00:00:00 2001 From: Shuzhou Liu Date: Sat, 25 Feb 2023 19:09:44 +0800 Subject: [PATCH 06/22] feat: `zh-Hant` Chinese (Traditional) translation --- src/partials/languages/zh-Hant.html | 35 +++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/src/partials/languages/zh-Hant.html b/src/partials/languages/zh-Hant.html index fc7801931..6ba99d566 100644 --- a/src/partials/languages/zh-Hant.html +++ b/src/partials/languages/zh-Hant.html @@ -25,23 +25,54 @@ "language": "zh-Hant", "action.edit": "編輯此頁", "action.skip": "跳轉至", + "action.view": "查看源代碼 ⬅️", + "announce.dismiss": "不再顯示此訊息 ⬅️", + "blog.archive": "存檔 ⬅️", + "blog.categories": "分類 ⬅️", + "blog.categories.in": "分類在 ⬅️", + "blog.continue": "繼續閲讀 ⬅️", + "blog.draft": "草稿 ⬅️", + "blog.index": "回到首頁 ⬅️", + "blog.meta": "元數據 ⬅️", + "blog.references": "相關鏈接 ⬅️", "clipboard.copy": "拷貝", "clipboard.copied": "已拷貝", + "consent.accept": "接受 ⬅️", + "consent.manage": "管理設置 ⬅️", + "consent.reject": "拒絕 ⬅️", + "footer": "頁脚 ⬅️", "footer.next": "下一頁", "footer.previous": "上一頁", + "header": "頁首 ⬅️", "meta.comments": "評論", "meta.source": "來源", "search.config.lang": "ja", "search.config.pipeline": "stemmer", "search.config.separator": "[\\s\\-,。]+", + "nav": "導航 ⬅️", + "readtime.one": "需要 1 分鐘閲讀 ⬅️", + "readtime.other": "需要 # 分鐘閲讀 ⬅️", + "rss.created": "簡易資訊聚合 ⬅️", + "rss.updated": "更新之部分的簡易資訊聚合 ⬅️", + "search": "搜尋 ⬅️", "search.placeholder": "搜尋", + "search.share": "分享 ⬅️", + "search.reset": "清空 ⬅️", "search.result.initializer": "正在初始化搜尋引擎", "search.result.placeholder": "鍵入以開始檢索", "search.result.none": "沒有找到符合條件的結果", "search.result.one": "找到 1 个符合條件的結果", - "search.result.other": "# 個符合條件的結果", + "search.result.other": "找到 # 個符合條件的結果", + "search.result.more.one": "此頁尚有 1 個符合的項目 ⬅️", + "search.result.more.other": "此頁尚有 # 個符合的項目 ⬅️", + "search.result.term.missing": "缺失 ⬅️", + "select.language": "選擇語言 ⬅️", + "select.version": "選擇版本 ⬅️", "source": "前往倉庫", + "source.file.contributors": "貢獻者 ⬅️", "source.file.date.created": "建立日期", "source.file.date.updated": "最後更新", - "toc": "目錄" + "tabs": "標籤頁 ⬅️", + "toc": "目錄", + "top": "回到頂部 ⬅️" }[key] }}{% endmacro %} From 04a6f140ce939f02a37bb3e896c8ca43cdf0b320 Mon Sep 17 00:00:00 2001 From: Shuzhou Liu Date: Sun, 26 Feb 2023 07:48:18 +0800 Subject: [PATCH 07/22] =?UTF-8?q?fix:=20remove=20=E2=AC=85=EF=B8=8Fs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/partials/languages/zh-Hant.html | 62 ++++++++++++++--------------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/src/partials/languages/zh-Hant.html b/src/partials/languages/zh-Hant.html index 6ba99d566..96c08b7b5 100644 --- a/src/partials/languages/zh-Hant.html +++ b/src/partials/languages/zh-Hant.html @@ -25,54 +25,54 @@ "language": "zh-Hant", "action.edit": "編輯此頁", "action.skip": "跳轉至", - "action.view": "查看源代碼 ⬅️", - "announce.dismiss": "不再顯示此訊息 ⬅️", - "blog.archive": "存檔 ⬅️", - "blog.categories": "分類 ⬅️", - "blog.categories.in": "分類在 ⬅️", - "blog.continue": "繼續閲讀 ⬅️", - "blog.draft": "草稿 ⬅️", - "blog.index": "回到首頁 ⬅️", - "blog.meta": "元數據 ⬅️", - "blog.references": "相關鏈接 ⬅️", + "action.view": "查看源代碼", + "announce.dismiss": "不再顯示此訊息", + "blog.archive": "存檔", + "blog.categories": "分類", + "blog.categories.in": "分類在", + "blog.continue": "繼續閲讀", + "blog.draft": "草稿", + "blog.index": "回到首頁", + "blog.meta": "元數據", + "blog.references": "相關鏈接", "clipboard.copy": "拷貝", "clipboard.copied": "已拷貝", - "consent.accept": "接受 ⬅️", - "consent.manage": "管理設置 ⬅️", - "consent.reject": "拒絕 ⬅️", - "footer": "頁脚 ⬅️", + "consent.accept": "接受", + "consent.manage": "管理設置", + "consent.reject": "拒絕", + "footer": "頁脚", "footer.next": "下一頁", "footer.previous": "上一頁", - "header": "頁首 ⬅️", + "header": "頁首", "meta.comments": "評論", "meta.source": "來源", "search.config.lang": "ja", "search.config.pipeline": "stemmer", "search.config.separator": "[\\s\\-,。]+", - "nav": "導航 ⬅️", - "readtime.one": "需要 1 分鐘閲讀 ⬅️", - "readtime.other": "需要 # 分鐘閲讀 ⬅️", - "rss.created": "簡易資訊聚合 ⬅️", - "rss.updated": "更新之部分的簡易資訊聚合 ⬅️", - "search": "搜尋 ⬅️", + "nav": "導航", + "readtime.one": "需要 1 分鐘閲讀", + "readtime.other": "需要 # 分鐘閲讀", + "rss.created": "簡易資訊聚合", + "rss.updated": "更新之部分的簡易資訊聚合", + "search": "搜尋", "search.placeholder": "搜尋", - "search.share": "分享 ⬅️", - "search.reset": "清空 ⬅️", + "search.share": "分享", + "search.reset": "清空", "search.result.initializer": "正在初始化搜尋引擎", "search.result.placeholder": "鍵入以開始檢索", "search.result.none": "沒有找到符合條件的結果", "search.result.one": "找到 1 个符合條件的結果", "search.result.other": "找到 # 個符合條件的結果", - "search.result.more.one": "此頁尚有 1 個符合的項目 ⬅️", - "search.result.more.other": "此頁尚有 # 個符合的項目 ⬅️", - "search.result.term.missing": "缺失 ⬅️", - "select.language": "選擇語言 ⬅️", - "select.version": "選擇版本 ⬅️", + "search.result.more.one": "此頁尚有 1 個符合的項目", + "search.result.more.other": "此頁尚有 # 個符合的項目", + "search.result.term.missing": "缺失", + "select.language": "選擇語言", + "select.version": "選擇版本", "source": "前往倉庫", - "source.file.contributors": "貢獻者 ⬅️", + "source.file.contributors": "貢獻者", "source.file.date.created": "建立日期", "source.file.date.updated": "最後更新", - "tabs": "標籤頁 ⬅️", + "tabs": "標籤頁", "toc": "目錄", - "top": "回到頂部 ⬅️" + "top": "回到頂部" }[key] }}{% endmacro %} From 02f6699c34801c063d8d52515d412015d020047e Mon Sep 17 00:00:00 2001 From: squidfunk Date: Sun, 26 Feb 2023 10:50:37 +0100 Subject: [PATCH 08/22] Updated Hebrew translations --- material/partials/languages/he.html | 2 +- src/partials/languages/he.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/material/partials/languages/he.html b/material/partials/languages/he.html index 504fda21c..e25dc6141 100644 --- a/material/partials/languages/he.html +++ b/material/partials/languages/he.html @@ -40,7 +40,7 @@ "search.result.initializer": "אתחול חיפוש", "search.result.placeholder": "יש להקליד כדי להתחיל לחפש", "search.result.none": "אין מסמכים תואמים", - "search.result.one": " מסמך1 תואם", + "search.result.one": "מסמך1 תואם", "search.result.other": "# מסמך תואם", "search.result.more.one": "עוד אחד בדף הזה", "search.result.more.other": "עוד # בדף הזה", diff --git a/src/partials/languages/he.html b/src/partials/languages/he.html index a12a2a96b..128edab59 100644 --- a/src/partials/languages/he.html +++ b/src/partials/languages/he.html @@ -60,7 +60,7 @@ "search.result.initializer": "אתחול חיפוש", "search.result.placeholder": "יש להקליד כדי להתחיל לחפש", "search.result.none": "אין מסמכים תואמים", - "search.result.one": " מסמך1 תואם", + "search.result.one": "מסמך1 תואם", "search.result.other": "# מסמך תואם", "search.result.more.one": "עוד אחד בדף הזה", "search.result.more.other": "עוד # בדף הזה", From a84029906521400d8438c0dd06e78aba91a6a574 Mon Sep 17 00:00:00 2001 From: squidfunk Date: Sun, 26 Feb 2023 10:51:40 +0100 Subject: [PATCH 09/22] Updated Chinese (Traditional) translations --- material/partials/languages/zh-Hant.html | 35 ++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/material/partials/languages/zh-Hant.html b/material/partials/languages/zh-Hant.html index 687179a30..0a96a2516 100644 --- a/material/partials/languages/zh-Hant.html +++ b/material/partials/languages/zh-Hant.html @@ -5,23 +5,54 @@ "language": "zh-Hant", "action.edit": "編輯此頁", "action.skip": "跳轉至", + "action.view": "查看源代碼", + "announce.dismiss": "不再顯示此訊息", + "blog.archive": "存檔", + "blog.categories": "分類", + "blog.categories.in": "分類在", + "blog.continue": "繼續閲讀", + "blog.draft": "草稿", + "blog.index": "回到首頁", + "blog.meta": "元數據", + "blog.references": "相關鏈接", "clipboard.copy": "拷貝", "clipboard.copied": "已拷貝", + "consent.accept": "接受", + "consent.manage": "管理設置", + "consent.reject": "拒絕", + "footer": "頁脚", "footer.next": "下一頁", "footer.previous": "上一頁", + "header": "頁首", "meta.comments": "評論", "meta.source": "來源", "search.config.lang": "ja", "search.config.pipeline": "stemmer", "search.config.separator": "[\\s\\-,。]+", + "nav": "導航", + "readtime.one": "需要 1 分鐘閲讀", + "readtime.other": "需要 # 分鐘閲讀", + "rss.created": "簡易資訊聚合", + "rss.updated": "更新之部分的簡易資訊聚合", + "search": "搜尋", "search.placeholder": "搜尋", + "search.share": "分享", + "search.reset": "清空", "search.result.initializer": "正在初始化搜尋引擎", "search.result.placeholder": "鍵入以開始檢索", "search.result.none": "沒有找到符合條件的結果", "search.result.one": "找到 1 个符合條件的結果", - "search.result.other": "# 個符合條件的結果", + "search.result.other": "找到 # 個符合條件的結果", + "search.result.more.one": "此頁尚有 1 個符合的項目", + "search.result.more.other": "此頁尚有 # 個符合的項目", + "search.result.term.missing": "缺失", + "select.language": "選擇語言", + "select.version": "選擇版本", "source": "前往倉庫", + "source.file.contributors": "貢獻者", "source.file.date.created": "建立日期", "source.file.date.updated": "最後更新", - "toc": "目錄" + "tabs": "標籤頁", + "toc": "目錄", + "top": "回到頂部" }[key] }}{% endmacro %} From 01377d23e34d0509c1e1de7b68362a396012f666 Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sun, 26 Feb 2023 11:44:39 +0100 Subject: [PATCH 10/22] ci: bump docker/build-push-action to v4 --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8a2a72ab7..7a003e293 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -132,7 +132,7 @@ jobs: latest=${{ github.event.release.prerelease == false }} - name: Build Docker image - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v4 with: context: . load: true @@ -146,7 +146,7 @@ jobs: docker run --rm -i -v ${PWD}:/docs ${{ github.event.repository.full_name }}:${{ steps.meta.outputs.version }} build - name: Publish Docker image - uses: docker/build-push-action@v3 + uses: docker/build-push-action@v4 with: context: . push: ${{ github.event_name == 'release' }} From f3ae326e1a620e6ef84f37d41f5bf653f677f1a7 Mon Sep 17 00:00:00 2001 From: squidfunk Date: Sun, 26 Feb 2023 11:49:11 +0100 Subject: [PATCH 11/22] Documentation --- docs/setup/setting-up-navigation.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/setup/setting-up-navigation.md b/docs/setup/setting-up-navigation.md index ed81f698e..ea8684256 100644 --- a/docs/setup/setting-up-navigation.md +++ b/docs/setup/setting-up-navigation.md @@ -262,16 +262,19 @@ navigation section: ``` yaml nav: - Section: - - section/index.md + - section/index.md # (1)! - Page 1: section/page-1.md ... - Page n: section/page-n.md ``` +1. MkDocs also considers files called `README.md` as [index pages]. + [Section index pages support]: https://github.com/squidfunk/mkdocs-material/releases/tag/7.3.0 [Section index pages enabled]: ../assets/screenshots/navigation-index-on.png [Section index pages disabled]: ../assets/screenshots/navigation-index-off.png [toc.integrate]: #navigation-integration + [index pages]: https://www.mkdocs.org/user-guide/writing-your-docs/#index-pages ### Table of contents From a90f176e306c7617f0ce614c47f380060774e262 Mon Sep 17 00:00:00 2001 From: squidfunk Date: Sun, 26 Feb 2023 11:56:22 +0100 Subject: [PATCH 12/22] Prepare 9.0.15 release --- CHANGELOG | 5 +++++ docs/changelog/index.md | 5 +++++ material/base.html | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 4f1ef11b2..2b0fe87ab 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,8 @@ +mkdocs-material-9.0.15 (2023-02-26) + + * Updated Chinese (Traditional) translations + * Updated Hebrew translations + mkdocs-material-9.0.14+insiders-4.32.1 (2023-02-23) * Fixed code block spans interfering with copying diff --git a/docs/changelog/index.md b/docs/changelog/index.md index 50a34bf5e..8daf01021 100644 --- a/docs/changelog/index.md +++ b/docs/changelog/index.md @@ -2,6 +2,11 @@ ## Material for MkDocs +### 9.0.15 February 26, 2023 { id="9.0.15" } + +- Updated Chinese (Traditional) translations +- Updated Hebrew translations + ### 9.0.14 February 23, 2023 { id="9.0.14" } - Fixed #5072: Rendering bug on navigation expand button in Firefox diff --git a/material/base.html b/material/base.html index 0705661f5..24062c6f3 100644 --- a/material/base.html +++ b/material/base.html @@ -28,7 +28,7 @@ {% endif %} - + {% endblock %} {% block htmltitle %} {% if page.meta and page.meta.title %} diff --git a/package-lock.json b/package-lock.json index a67bcbe35..2c8c5dbdd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "mkdocs-material", - "version": "9.0.14", + "version": "9.0.15", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "mkdocs-material", - "version": "9.0.14", + "version": "9.0.15", "license": "MIT", "dependencies": { "array-flat-polyfill": "^1.0.1", diff --git a/package.json b/package.json index bfa70418e..bb47fdc03 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "mkdocs-material", - "version": "9.0.14", + "version": "9.0.15", "description": "Documentation that simply works", "keywords": [ "mkdocs", From 4d7291f25e5458976227e3431408257cfbf3265c Mon Sep 17 00:00:00 2001 From: squidfunk Date: Sun, 26 Feb 2023 15:28:47 +0100 Subject: [PATCH 13/22] Refactored tag modifier implementation --- .../{bundle.2a6f1dda.min.js => bundle.3e1761d0.min.js} | 4 ++-- ...{bundle.2a6f1dda.min.js.map => bundle.3e1761d0.min.js.map} | 4 ++-- material/base.html | 2 +- material/partials/icons.html | 2 +- material/partials/tags.html | 2 +- material/plugins/tags/plugin.py | 2 +- src/assets/javascripts/templates/search/index.tsx | 2 +- src/partials/icons.html | 2 +- src/partials/tags.html | 2 +- src/plugins/tags/plugin.py | 2 +- 10 files changed, 12 insertions(+), 12 deletions(-) rename material/assets/javascripts/{bundle.2a6f1dda.min.js => bundle.3e1761d0.min.js} (68%) rename material/assets/javascripts/{bundle.2a6f1dda.min.js.map => bundle.3e1761d0.min.js.map} (83%) diff --git a/material/assets/javascripts/bundle.2a6f1dda.min.js b/material/assets/javascripts/bundle.3e1761d0.min.js similarity index 68% rename from material/assets/javascripts/bundle.2a6f1dda.min.js rename to material/assets/javascripts/bundle.3e1761d0.min.js index 2f912a0bf..f0941f280 100644 --- a/material/assets/javascripts/bundle.2a6f1dda.min.js +++ b/material/assets/javascripts/bundle.3e1761d0.min.js @@ -24,6 +24,6 @@ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */var Or=function(e,t){return Or=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,n){r.__proto__=n}||function(r,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(r[o]=n[o])},Or(e,t)};function ie(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");Or(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}function pn(e,t,r,n){function o(i){return i instanceof r?i:new r(function(s){s(i)})}return new(r||(r=Promise))(function(i,s){function a(u){try{c(n.next(u))}catch(p){s(p)}}function f(u){try{c(n.throw(u))}catch(p){s(p)}}function c(u){u.done?i(u.value):o(u.value).then(a,f)}c((n=n.apply(e,t||[])).next())})}function $t(e,t){var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},n,o,i,s;return s={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function a(c){return function(u){return f([c,u])}}function f(c){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,o&&(i=c[0]&2?o.return:c[0]?o.throw||((i=o.return)&&i.call(o),0):o.next)&&!(i=i.call(o,c[1])).done)return i;switch(o=0,i&&(c=[c[0]&2,i.value]),c[0]){case 0:case 1:i=c;break;case 4:return r.label++,{value:c[1],done:!1};case 5:r.label++,o=c[1],c=[0];continue;case 7:c=r.ops.pop(),r.trys.pop();continue;default:if(i=r.trys,!(i=i.length>0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function W(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,i;n1||a(m,d)})})}function a(m,d){try{f(n[m](d))}catch(h){p(i[0][3],h)}}function f(m){m.value instanceof Ze?Promise.resolve(m.value.v).then(c,u):p(i[0][2],m)}function c(m){a("next",m)}function u(m){a("throw",m)}function p(m,d){m(d),i.shift(),i.length&&a(i[0][0],i[0][1])}}function mn(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof xe=="function"?xe(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(s){return new Promise(function(a,f){s=e[i](s),o(a,f,s.done,s.value)})}}function o(i,s,a,f){Promise.resolve(f).then(function(c){i({value:c,done:a})},s)}}function A(e){return typeof e=="function"}function at(e){var t=function(n){Error.call(n),n.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var It=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: `+r.map(function(n,o){return o+1+") "+n.toString()}).join(` - `):"",this.name="UnsubscriptionError",this.errors=r}});function Ve(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var je=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,n,o,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var a=xe(s),f=a.next();!f.done;f=a.next()){var c=f.value;c.remove(this)}}catch(v){t={error:v}}finally{try{f&&!f.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}else s.remove(this);var u=this.initialTeardown;if(A(u))try{u()}catch(v){i=v instanceof It?v.errors:[v]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var m=xe(p),d=m.next();!d.done;d=m.next()){var h=d.value;try{dn(h)}catch(v){i=i!=null?i:[],v instanceof It?i=D(D([],W(i)),W(v.errors)):i.push(v)}}}catch(v){n={error:v}}finally{try{d&&!d.done&&(o=m.return)&&o.call(m)}finally{if(n)throw n.error}}}if(i)throw new It(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)dn(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Ve(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Ve(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Tr=je.EMPTY;function Ft(e){return e instanceof je||e&&"closed"in e&&A(e.remove)&&A(e.add)&&A(e.unsubscribe)}function dn(e){A(e)?e():e.unsubscribe()}var Ae={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],n=2;n0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,s=o.isStopped,a=o.observers;return i||s?Tr:(this.currentObservers=null,a.push(r),new je(function(){n.currentObservers=null,Ve(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,s=n.isStopped;o?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new U;return r.source=this,r},t.create=function(r,n){return new wn(r,n)},t}(U);var wn=function(e){ie(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Tr},t}(E);var Et={now:function(){return(Et.delegate||Date).now()},delegate:void 0};var wt=function(e){ie(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=Et);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,s=n._infiniteTimeWindow,a=n._timestampProvider,f=n._windowTime;o||(i.push(r),!s&&i.push(a.now()+f)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,s=o._buffer,a=s.slice(),f=0;f0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var s=r.actions;n!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==n&&(ut.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Wt);var Tn=function(e){ie(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Dt);var we=new Tn(On);var R=new U(function(e){return e.complete()});function Vt(e){return e&&A(e.schedule)}function kr(e){return e[e.length-1]}function Qe(e){return A(kr(e))?e.pop():void 0}function Se(e){return Vt(kr(e))?e.pop():void 0}function zt(e,t){return typeof kr(e)=="number"?e.pop():t}var pt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Nt(e){return A(e==null?void 0:e.then)}function qt(e){return A(e[ft])}function Kt(e){return Symbol.asyncIterator&&A(e==null?void 0:e[Symbol.asyncIterator])}function Qt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Ki(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Yt=Ki();function Gt(e){return A(e==null?void 0:e[Yt])}function Bt(e){return ln(this,arguments,function(){var r,n,o,i;return $t(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,Ze(r.read())];case 3:return n=s.sent(),o=n.value,i=n.done,i?[4,Ze(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,Ze(o)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Jt(e){return A(e==null?void 0:e.getReader)}function $(e){if(e instanceof U)return e;if(e!=null){if(qt(e))return Qi(e);if(pt(e))return Yi(e);if(Nt(e))return Gi(e);if(Kt(e))return _n(e);if(Gt(e))return Bi(e);if(Jt(e))return Ji(e)}throw Qt(e)}function Qi(e){return new U(function(t){var r=e[ft]();if(A(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Yi(e){return new U(function(t){for(var r=0;r=2;return function(n){return n.pipe(e?_(function(o,i){return e(o,i,n)}):de,Te(1),r?Pe(t):zn(function(){return new Zt}))}}function Nn(){for(var e=[],t=0;t=2,!0))}function ue(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new E}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,f=a===void 0?!0:a;return function(c){var u,p,m,d=0,h=!1,v=!1,B=function(){p==null||p.unsubscribe(),p=void 0},ne=function(){B(),u=m=void 0,h=v=!1},z=function(){var O=u;ne(),O==null||O.unsubscribe()};return g(function(O,Ke){d++,!v&&!h&&B();var De=m=m!=null?m:r();Ke.add(function(){d--,d===0&&!v&&!h&&(p=jr(z,f))}),De.subscribe(Ke),!u&&d>0&&(u=new tt({next:function(Fe){return De.next(Fe)},error:function(Fe){v=!0,B(),p=jr(ne,o,Fe),De.error(Fe)},complete:function(){h=!0,B(),p=jr(ne,s),De.complete()}}),$(O).subscribe(u))})(c)}}function jr(e,t){for(var r=[],n=2;ne.next(document)),e}function K(e,t=document){return Array.from(t.querySelectorAll(e))}function V(e,t=document){let r=ce(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function ce(e,t=document){return t.querySelector(e)||void 0}function _e(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function rr(e){return L(b(document.body,"focusin"),b(document.body,"focusout")).pipe(He(1),l(()=>{let t=_e();return typeof t!="undefined"?e.contains(t):!1}),N(e===_e()),G())}function Je(e){return{x:e.offsetLeft,y:e.offsetTop}}function Yn(e){return L(b(window,"load"),b(window,"resize")).pipe(Re(0,we),l(()=>Je(e)),N(Je(e)))}function nr(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return L(b(e,"scroll"),b(window,"resize")).pipe(Re(0,we),l(()=>nr(e)),N(nr(e)))}var Bn=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!zr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),xa?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!zr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=ya.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Jn=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Zn=typeof WeakMap!="undefined"?new WeakMap:new Bn,eo=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=Ea.getInstance(),n=new Ra(t,r,this);Zn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){eo.prototype[e]=function(){var t;return(t=Zn.get(this))[e].apply(t,arguments)}});var ka=function(){return typeof or.ResizeObserver!="undefined"?or.ResizeObserver:eo}(),to=ka;var ro=new E,Ha=I(()=>H(new to(e=>{for(let t of e)ro.next(t)}))).pipe(x(e=>L(Oe,H(e)).pipe(C(()=>e.disconnect()))),J(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ge(e){return Ha.pipe(S(t=>t.observe(e)),x(t=>ro.pipe(_(({target:r})=>r===e),C(()=>t.unobserve(e)),l(()=>he(e)))),N(he(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function sr(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var no=new E,Pa=I(()=>H(new IntersectionObserver(e=>{for(let t of e)no.next(t)},{threshold:0}))).pipe(x(e=>L(Oe,H(e)).pipe(C(()=>e.disconnect()))),J(1));function cr(e){return Pa.pipe(S(t=>t.observe(e)),x(t=>no.pipe(_(({target:r})=>r===e),C(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function oo(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=he(e),o=bt(e);return r>=o.height-n.height-t}),G())}var fr={drawer:V("[data-md-toggle=drawer]"),search:V("[data-md-toggle=search]")};function io(e){return fr[e].checked}function qe(e,t){fr[e].checked!==t&&fr[e].click()}function Ue(e){let t=fr[e];return b(t,"change").pipe(l(()=>t.checked),N(t.checked))}function $a(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ia(){return L(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(N(!1))}function ao(){let e=b(window,"keydown").pipe(_(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:io("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),_(({mode:t,type:r})=>{if(t==="global"){let n=_e();if(typeof n!="undefined")return!$a(n,r)}return!0}),ue());return Ia().pipe(x(t=>t?R:e))}function Me(){return new URL(location.href)}function ot(e){location.href=e.href}function so(){return new E}function co(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)co(e,r)}function M(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)co(n,o);return n}function ur(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function fo(){return location.hash.substring(1)}function uo(e){let t=M("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Fa(){return b(window,"hashchange").pipe(l(fo),N(fo()),_(e=>e.length>0),J(1))}function po(){return Fa().pipe(l(e=>ce(`[id="${e}"]`)),_(e=>typeof e!="undefined"))}function Nr(e){let t=matchMedia(e);return er(r=>t.addListener(()=>r(t.matches))).pipe(N(t.matches))}function lo(){let e=matchMedia("print");return L(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(N(e.matches))}function qr(e,t){return e.pipe(x(r=>r?t():R))}function pr(e,t={credentials:"same-origin"}){return pe(fetch(`${e}`,t)).pipe(fe(()=>R),x(r=>r.status!==200?Ot(()=>new Error(r.statusText)):H(r)))}function We(e,t){return pr(e,t).pipe(x(r=>r.json()),J(1))}function mo(e,t){let r=new DOMParser;return pr(e,t).pipe(x(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),J(1))}function lr(e){let t=M("script",{src:e});return I(()=>(document.head.appendChild(t),L(b(t,"load"),b(t,"error").pipe(x(()=>Ot(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),C(()=>document.head.removeChild(t)),Te(1))))}function ho(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function bo(){return L(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(ho),N(ho()))}function vo(){return{width:innerWidth,height:innerHeight}}function go(){return b(window,"resize",{passive:!0}).pipe(l(vo),N(vo()))}function yo(){return Q([bo(),go()]).pipe(l(([e,t])=>({offset:e,size:t})),J(1))}function mr(e,{viewport$:t,header$:r}){let n=t.pipe(X("size")),o=Q([n,r]).pipe(l(()=>Je(e)));return Q([r,t,o]).pipe(l(([{height:i},{offset:s,size:a},{x:f,y:c}])=>({offset:{x:s.x-f,y:s.y-c+i},size:a})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(s=>{let a=document.createElement("script");a.src=i,a.onload=s,document.body.appendChild(a)})),Promise.resolve())}var r=class extends EventTarget{constructor(n){super(),this.url=n,this.m=i=>{i.source===this.w&&(this.dispatchEvent(new MessageEvent("message",{data:i.data})),this.onmessage&&this.onmessage(i))},this.e=(i,s,a,f,c)=>{if(s===`${this.url}`){let u=new ErrorEvent("error",{message:i,filename:s,lineno:a,colno:f,error:c});this.dispatchEvent(u),this.onerror&&this.onerror(u)}};let o=document.createElement("iframe");o.hidden=!0,document.body.appendChild(this.iframe=o),this.w.document.open(),this.w.document.write(` {% endblock %} {% block scripts %} - + {% for path in config.extra_javascript %} {% endfor %} diff --git a/material/partials/icons.html b/material/partials/icons.html index dbc26c6e7..96b88095e 100644 --- a/material/partials/icons.html +++ b/material/partials/icons.html @@ -23,7 +23,7 @@ {% set modifier = "--" ~ type %} {% endif %} {% set _ = style.append( - ".md-tag-icon" ~ modifier ~ "{" ~ + ".md-tag" ~ modifier ~ "{" ~ "--md-tag-icon:" ~ "url('data:image/svg+xml;charset=utf-8," ~ icon | replace("\n", "") ~ diff --git a/material/partials/tags.html b/material/partials/tags.html index ad8cfd83d..abf4a4c17 100644 --- a/material/partials/tags.html +++ b/material/partials/tags.html @@ -10,7 +10,7 @@ {% if config.extra.tags %} {% set icon = " md-tag-icon" %} {% if tag.type %} - {% set icon = icon ~ " md-tag-icon--" ~ tag.type %} + {% set icon = icon ~ " md-tag--" ~ tag.type %} {% endif %} {% endif %} {% if tag.url %} diff --git a/material/plugins/tags/plugin.py b/material/plugins/tags/plugin.py index 8dbec6656..6afbfe83f 100644 --- a/material/plugins/tags/plugin.py +++ b/material/plugins/tags/plugin.py @@ -116,7 +116,7 @@ class TagsPlugin(BasePlugin[TagsPluginConfig]): classes.append("md-tag-icon") type = self.tags_map.get(tag) if type: - classes.append(f"md-tag-icon--{type}") + classes.append(f"md-tag--{type}") # Render section for tag and a link to each page classes = " ".join(classes) diff --git a/src/assets/javascripts/templates/search/index.tsx b/src/assets/javascripts/templates/search/index.tsx index 6825d407c..350c0505a 100644 --- a/src/assets/javascripts/templates/search/index.tsx +++ b/src/assets/javascripts/templates/search/index.tsx @@ -90,7 +90,7 @@ function renderSearchDocument( {document.tags && document.tags.map(tag => { const type = tags ? tag in tags - ? `md-tag-icon md-tag-icon--${tags[tag]}` + ? `md-tag-icon md-tag--${tags[tag]}` : "md-tag-icon" : "" return ( diff --git a/src/partials/icons.html b/src/partials/icons.html index 3b3bfa273..b94f9dbb9 100644 --- a/src/partials/icons.html +++ b/src/partials/icons.html @@ -45,7 +45,7 @@ {% set modifier = "--" ~ type %} {% endif %} {% set _ = style.append( - ".md-tag-icon" ~ modifier ~ "{" ~ + ".md-tag" ~ modifier ~ "{" ~ "--md-tag-icon:" ~ "url('data:image/svg+xml;charset=utf-8," ~ icon | replace("\n", "") ~ diff --git a/src/partials/tags.html b/src/partials/tags.html index 42bee5f41..b572f71de 100644 --- a/src/partials/tags.html +++ b/src/partials/tags.html @@ -32,7 +32,7 @@ {% if config.extra.tags %} {% set icon = " md-tag-icon" %} {% if tag.type %} - {% set icon = icon ~ " md-tag-icon--" ~ tag.type %} + {% set icon = icon ~ " md-tag--" ~ tag.type %} {% endif %} {% endif %} diff --git a/src/plugins/tags/plugin.py b/src/plugins/tags/plugin.py index 8dbec6656..6afbfe83f 100644 --- a/src/plugins/tags/plugin.py +++ b/src/plugins/tags/plugin.py @@ -116,7 +116,7 @@ class TagsPlugin(BasePlugin[TagsPluginConfig]): classes.append("md-tag-icon") type = self.tags_map.get(tag) if type: - classes.append(f"md-tag-icon--{type}") + classes.append(f"md-tag--{type}") # Render section for tag and a link to each page classes = " ".join(classes) From 96fa354d2a121af6efbaca518cb970d9f37a04cf Mon Sep 17 00:00:00 2001 From: Akiicat Date: Sun, 26 Feb 2023 23:44:56 +0800 Subject: [PATCH 14/22] Update zh-TW.html --- src/partials/languages/zh-TW.html | 32 ++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/src/partials/languages/zh-TW.html b/src/partials/languages/zh-TW.html index 57d5f28af..6e518d948 100644 --- a/src/partials/languages/zh-TW.html +++ b/src/partials/languages/zh-TW.html @@ -22,23 +22,39 @@ {% macro t(key) %}{{ { - "language": "zh-Hant", + "language": "zh-TW", "action.edit": "編輯此頁", "action.skip": "跳轉到", + "action.view": "查看此頁原始碼", "announce.dismiss": "不再顯示此訊息", + "blog.archive": "封存", + "blog.categories": "分類", + "blog.categories.in": "於", + "blog.continue": "繼續閱讀", + "blog.draft": "草稿", + "blog.index": "回到主頁", + "blog.meta": "元數據", + "blog.references": "相關連結", "clipboard.copy": "複製", "clipboard.copied": "已複製", "consent.accept": "同意", "consent.manage": "管理設定", "consent.reject": "拒絕", + "footer": "頁腳", "footer.next": "下一頁", "footer.previous": "上一頁", + "header": "頁首", "meta.comments": "留言", "meta.source": "來源", - "search.config.lang": "ja", - "search.config.pipeline": "stemmer", - "search.config.separator": "[\\s\\- 、。,.?;]+", + "nav": "導覽列", + "readtime.one": "需要 1 分鐘閱讀時間", + "readtime.other": "需要 # 分鐘閱讀時間", + "rss.created": "RSS 訂閱", + "rss.updated": "RSS 訂閱內容已更新", + "search": "搜尋", "search.placeholder": "搜尋", + "search.share": "分享", + "search.reset": "清除", "search.result.initializer": "正在初始化搜尋引擎", "search.result.placeholder": "打字進行搜尋", "search.result.none": "沒有符合的項目", @@ -46,8 +62,14 @@ "search.result.other": "找到 # 個符合的項目", "search.result.more.one": "此頁尚有 1 個符合的項目", "search.result.more.other": "此頁尚有 # 個符合的項目", + "search.result.term.missing": "缺少字詞", + "select.language": "選擇語言", + "select.version": "選擇版本", "source": "前往倉庫", + "source.file.contributors": "貢獻者", "source.file.date.created": "建立日期", "source.file.date.updated": "最後更新", - "toc": "目錄" + "tabs": "標籤", + "toc": "目錄", + "top": "回到頂端" }[key] }}{% endmacro %} From 901b05e5eea9be27404c9891b4f5dd042880b9d3 Mon Sep 17 00:00:00 2001 From: Akiicat Date: Sun, 26 Feb 2023 23:52:11 +0800 Subject: [PATCH 15/22] Update zh-TW.html add search.config MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "search.config.lang": "ja", "search.config.pipeline": "stemmer", "search.config.separator": "[\\s\\- 、。,.?;]+", --- src/partials/languages/zh-TW.html | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/partials/languages/zh-TW.html b/src/partials/languages/zh-TW.html index 6e518d948..fd09de928 100644 --- a/src/partials/languages/zh-TW.html +++ b/src/partials/languages/zh-TW.html @@ -52,6 +52,9 @@ "rss.created": "RSS 訂閱", "rss.updated": "RSS 訂閱內容已更新", "search": "搜尋", + "search.config.lang": "ja", + "search.config.pipeline": "stemmer", + "search.config.separator": "[\\s\\- 、。,.?;]+", "search.placeholder": "搜尋", "search.share": "分享", "search.reset": "清除", From 402835e9300b4292846d19442467a89f15314909 Mon Sep 17 00:00:00 2001 From: squidfunk Date: Sun, 26 Feb 2023 17:36:59 +0100 Subject: [PATCH 16/22] Update logo --- .github/assets/logo-dark.svg | 236 ----------------------------------- .github/assets/logo.svg | 103 ++++++++------- README.md | 5 +- 3 files changed, 52 insertions(+), 292 deletions(-) delete mode 100644 .github/assets/logo-dark.svg diff --git a/.github/assets/logo-dark.svg b/.github/assets/logo-dark.svg deleted file mode 100644 index 8c8b75dae..000000000 --- a/.github/assets/logo-dark.svg +++ /dev/null @@ -1,236 +0,0 @@ - - -
- -
- -

Material for MkDocs

-

Documentation that simply works

-
-
-
-
diff --git a/.github/assets/logo.svg b/.github/assets/logo.svg index e3e17df2b..346d25733 100644 --- a/.github/assets/logo.svg +++ b/.github/assets/logo.svg @@ -3,81 +3,80 @@
diff --git a/README.md b/README.md index c244dc156..c0c6023cf 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,7 @@

- + Material for MkDocs - - Material for MkDocs -

From 920b9130fb1434594cc1e95575e6388ec07ba313 Mon Sep 17 00:00:00 2001 From: squidfunk Date: Sun, 26 Feb 2023 17:40:20 +0100 Subject: [PATCH 17/22] Update logo --- .github/assets/logo.svg | 102 ++++++++++++++++++++-------------------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/.github/assets/logo.svg b/.github/assets/logo.svg index 346d25733..d7a3684ba 100644 --- a/.github/assets/logo.svg +++ b/.github/assets/logo.svg @@ -3,80 +3,80 @@

From 5e01734c1e5b4c085a40f65c271c8774576e5eed Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sun, 26 Feb 2023 12:12:56 +0100 Subject: [PATCH 18/22] ci: build multi-platform image --- .github/workflows/build.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7a003e293..b2e037d3b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -99,6 +99,9 @@ jobs: - name: Checkout repository uses: actions/checkout@v3 + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 @@ -145,10 +148,16 @@ jobs: docker run --rm -i -v ${PWD}:/docs ${{ github.event.repository.full_name }}:${{ steps.meta.outputs.version }} new . docker run --rm -i -v ${PWD}:/docs ${{ github.event.repository.full_name }}:${{ steps.meta.outputs.version }} build + - name: Set platforms + if: github.event_name == 'release' + run: | + echo "PLATFORMS=linux/amd64,linux/arm64,linux/arm/v7" >> $GITHUB_ENV + - name: Publish Docker image uses: docker/build-push-action@v4 with: context: . + platforms: ${{ env.PLATFORMS }} push: ${{ github.event_name == 'release' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} From d4bda6f3deeda56ce175d640afc6b3b5def5dbba Mon Sep 17 00:00:00 2001 From: CrazyMax Date: Sun, 26 Feb 2023 12:25:51 +0100 Subject: [PATCH 19/22] ci: inspect and check manifest after publishing docker images --- .github/workflows/build.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b2e037d3b..fd28646aa 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -161,3 +161,14 @@ jobs: push: ${{ github.event_name == 'release' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} + + - name: Check manifest + if: github.event_name == 'release' + run: | + docker buildx imagetools inspect ${{ github.event.repository.full_name }}:${{ steps.meta.outputs.version }} + + - name: Inspect image + if: github.event_name == 'release' + run: | + docker pull ${{ github.event.repository.full_name }}:${{ steps.meta.outputs.version }} + docker image inspect ${{ github.event.repository.full_name }}:${{ steps.meta.outputs.version }} From 9b581ae19e75e2a828012303c661115368e1c540 Mon Sep 17 00:00:00 2001 From: squidfunk Date: Sun, 26 Feb 2023 19:00:56 +0100 Subject: [PATCH 20/22] Fixed occasional flickering of dismissed announcement bar --- ...3e1761d0.min.js => bundle.ce72ebac.min.js} | 6 ++-- ....min.js.map => bundle.ce72ebac.min.js.map} | 6 ++-- material/base.html | 2 +- material/partials/languages/zh-TW.html | 29 +++++++++++++++++-- mkdocs.yml | 2 +- .../javascripts/components/announce/index.ts | 17 ++++------- 6 files changed, 40 insertions(+), 22 deletions(-) rename material/assets/javascripts/{bundle.3e1761d0.min.js => bundle.ce72ebac.min.js} (64%) rename material/assets/javascripts/{bundle.3e1761d0.min.js.map => bundle.ce72ebac.min.js.map} (74%) diff --git a/material/assets/javascripts/bundle.3e1761d0.min.js b/material/assets/javascripts/bundle.ce72ebac.min.js similarity index 64% rename from material/assets/javascripts/bundle.3e1761d0.min.js rename to material/assets/javascripts/bundle.ce72ebac.min.js index f0941f280..baeb03195 100644 --- a/material/assets/javascripts/bundle.3e1761d0.min.js +++ b/material/assets/javascripts/bundle.ce72ebac.min.js @@ -3,7 +3,7 @@ * https://clipboardjs.com/ * * Licensed MIT © Zeno Rocha - */(function(t,r){typeof Lt=="object"&&typeof Kr=="object"?Kr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Lt=="object"?Lt.ClipboardJS=r():t.ClipboardJS=r()})(Lt,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return ki}});var s=i(279),a=i.n(s),f=i(370),c=i.n(f),u=i(817),p=i.n(u);function m(j){try{return document.execCommand(j)}catch(T){return!1}}var d=function(T){var w=p()(T);return m("cut"),w},h=d;function v(j){var T=document.documentElement.getAttribute("dir")==="rtl",w=document.createElement("textarea");w.style.fontSize="12pt",w.style.border="0",w.style.padding="0",w.style.margin="0",w.style.position="absolute",w.style[T?"right":"left"]="-9999px";var k=window.pageYOffset||document.documentElement.scrollTop;return w.style.top="".concat(k,"px"),w.setAttribute("readonly",""),w.value=j,w}var B=function(T,w){var k=v(T);w.container.appendChild(k);var F=p()(k);return m("copy"),k.remove(),F},ne=function(T){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},k="";return typeof T=="string"?k=B(T,w):T instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(T==null?void 0:T.type)?k=B(T.value,w):(k=p()(T),m("copy")),k},z=ne;function O(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?O=function(w){return typeof w}:O=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},O(j)}var Ke=function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w=T.action,k=w===void 0?"copy":w,F=T.container,q=T.target,Le=T.text;if(k!=="copy"&&k!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&O(q)==="object"&&q.nodeType===1){if(k==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(k==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Le)return z(Le,{container:F});if(q)return k==="cut"?h(q):z(q,{container:F})},De=Ke;function Fe(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Fe=function(w){return typeof w}:Fe=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},Fe(j)}function Oi(j,T){if(!(j instanceof T))throw new TypeError("Cannot call a class as a function")}function nn(j,T){for(var w=0;w0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof F.action=="function"?F.action:this.defaultAction,this.target=typeof F.target=="function"?F.target:this.defaultTarget,this.text=typeof F.text=="function"?F.text:this.defaultText,this.container=Fe(F.container)==="object"?F.container:document.body}},{key:"listenClick",value:function(F){var q=this;this.listener=c()(F,"click",function(Le){return q.onClick(Le)})}},{key:"onClick",value:function(F){var q=F.delegateTarget||F.currentTarget,Le=this.action(q)||"copy",kt=De({action:Le,container:this.container,target:this.target(q),text:this.text(q)});this.emit(kt?"success":"error",{action:Le,text:kt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(F){return yr("action",F)}},{key:"defaultTarget",value:function(F){var q=yr("target",F);if(q)return document.querySelector(q)}},{key:"defaultText",value:function(F){return yr("text",F)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(F){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return z(F,q)}},{key:"cut",value:function(F){return h(F)}},{key:"isSupported",value:function(){var F=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof F=="string"?[F]:F,Le=!!document.queryCommandSupported;return q.forEach(function(kt){Le=Le&&!!document.queryCommandSupported(kt)}),Le}}]),w}(a()),ki=Ri},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,f){for(;a&&a.nodeType!==o;){if(typeof a.matches=="function"&&a.matches(f))return a;a=a.parentNode}}n.exports=s},438:function(n,o,i){var s=i(828);function a(u,p,m,d,h){var v=c.apply(this,arguments);return u.addEventListener(m,v,h),{destroy:function(){u.removeEventListener(m,v,h)}}}function f(u,p,m,d,h){return typeof u.addEventListener=="function"?a.apply(null,arguments):typeof m=="function"?a.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(v){return a(v,p,m,d,h)}))}function c(u,p,m,d){return function(h){h.delegateTarget=s(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=f},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(n,o,i){var s=i(879),a=i(438);function f(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(h))throw new TypeError("Third argument must be a Function");if(s.node(m))return c(m,d,h);if(s.nodeList(m))return u(m,d,h);if(s.string(m))return p(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function u(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function p(m,d,h){return a(document.body,m,d,h)}n.exports=f},817:function(n){function o(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var f=window.getSelection(),c=document.createRange();c.selectNodeContents(i),f.removeAllRanges(),f.addRange(c),s=f.toString()}return s}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,s,a){var f=this.e||(this.e={});return(f[i]||(f[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var f=this;function c(){f.off(i,c),s.apply(a,arguments)}return c._=s,this.on(i,c,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),f=0,c=a.length;for(f;f{"use strict";/*! + */(function(t,r){typeof Lt=="object"&&typeof Kr=="object"?Kr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Lt=="object"?Lt.ClipboardJS=r():t.ClipboardJS=r()})(Lt,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return ki}});var s=i(279),a=i.n(s),f=i(370),c=i.n(f),u=i(817),p=i.n(u);function m(j){try{return document.execCommand(j)}catch(T){return!1}}var d=function(T){var w=p()(T);return m("cut"),w},h=d;function v(j){var T=document.documentElement.getAttribute("dir")==="rtl",w=document.createElement("textarea");w.style.fontSize="12pt",w.style.border="0",w.style.padding="0",w.style.margin="0",w.style.position="absolute",w.style[T?"right":"left"]="-9999px";var k=window.pageYOffset||document.documentElement.scrollTop;return w.style.top="".concat(k,"px"),w.setAttribute("readonly",""),w.value=j,w}var B=function(T,w){var k=v(T);w.container.appendChild(k);var F=p()(k);return m("copy"),k.remove(),F},ne=function(T){var w=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},k="";return typeof T=="string"?k=B(T,w):T instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(T==null?void 0:T.type)?k=B(T.value,w):(k=p()(T),m("copy")),k},z=ne;function O(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?O=function(w){return typeof w}:O=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},O(j)}var Ke=function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},w=T.action,k=w===void 0?"copy":w,F=T.container,N=T.target,Le=T.text;if(k!=="copy"&&k!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(N!==void 0)if(N&&O(N)==="object"&&N.nodeType===1){if(k==="copy"&&N.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(k==="cut"&&(N.hasAttribute("readonly")||N.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Le)return z(Le,{container:F});if(N)return k==="cut"?h(N):z(N,{container:F})},De=Ke;function Fe(j){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Fe=function(w){return typeof w}:Fe=function(w){return w&&typeof Symbol=="function"&&w.constructor===Symbol&&w!==Symbol.prototype?"symbol":typeof w},Fe(j)}function Oi(j,T){if(!(j instanceof T))throw new TypeError("Cannot call a class as a function")}function nn(j,T){for(var w=0;w0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof F.action=="function"?F.action:this.defaultAction,this.target=typeof F.target=="function"?F.target:this.defaultTarget,this.text=typeof F.text=="function"?F.text:this.defaultText,this.container=Fe(F.container)==="object"?F.container:document.body}},{key:"listenClick",value:function(F){var N=this;this.listener=c()(F,"click",function(Le){return N.onClick(Le)})}},{key:"onClick",value:function(F){var N=F.delegateTarget||F.currentTarget,Le=this.action(N)||"copy",kt=De({action:Le,container:this.container,target:this.target(N),text:this.text(N)});this.emit(kt?"success":"error",{action:Le,text:kt,trigger:N,clearSelection:function(){N&&N.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(F){return yr("action",F)}},{key:"defaultTarget",value:function(F){var N=yr("target",F);if(N)return document.querySelector(N)}},{key:"defaultText",value:function(F){return yr("text",F)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(F){var N=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return z(F,N)}},{key:"cut",value:function(F){return h(F)}},{key:"isSupported",value:function(){var F=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],N=typeof F=="string"?[F]:F,Le=!!document.queryCommandSupported;return N.forEach(function(kt){Le=Le&&!!document.queryCommandSupported(kt)}),Le}}]),w}(a()),ki=Ri},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,f){for(;a&&a.nodeType!==o;){if(typeof a.matches=="function"&&a.matches(f))return a;a=a.parentNode}}n.exports=s},438:function(n,o,i){var s=i(828);function a(u,p,m,d,h){var v=c.apply(this,arguments);return u.addEventListener(m,v,h),{destroy:function(){u.removeEventListener(m,v,h)}}}function f(u,p,m,d,h){return typeof u.addEventListener=="function"?a.apply(null,arguments):typeof m=="function"?a.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(v){return a(v,p,m,d,h)}))}function c(u,p,m,d){return function(h){h.delegateTarget=s(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=f},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(n,o,i){var s=i(879),a=i(438);function f(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(h))throw new TypeError("Third argument must be a Function");if(s.node(m))return c(m,d,h);if(s.nodeList(m))return u(m,d,h);if(s.string(m))return p(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function u(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function p(m,d,h){return a(document.body,m,d,h)}n.exports=f},817:function(n){function o(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var f=window.getSelection(),c=document.createRange();c.selectNodeContents(i),f.removeAllRanges(),f.addRange(c),s=f.toString()}return s}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,s,a){var f=this.e||(this.e={});return(f[i]||(f[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var f=this;function c(){f.off(i,c),s.apply(a,arguments)}return c._=s,this.on(i,c,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),f=0,c=a.length;for(f;f{"use strict";/*! * escape-html * Copyright(c) 2012-2013 TJ Holowaychuk * Copyright(c) 2015 Andreas Lubbe @@ -24,6 +24,6 @@ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ***************************************************************************** */var Or=function(e,t){return Or=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,n){r.__proto__=n}||function(r,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(r[o]=n[o])},Or(e,t)};function ie(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");Or(e,t);function r(){this.constructor=e}e.prototype=t===null?Object.create(t):(r.prototype=t.prototype,new r)}function pn(e,t,r,n){function o(i){return i instanceof r?i:new r(function(s){s(i)})}return new(r||(r=Promise))(function(i,s){function a(u){try{c(n.next(u))}catch(p){s(p)}}function f(u){try{c(n.throw(u))}catch(p){s(p)}}function c(u){u.done?i(u.value):o(u.value).then(a,f)}c((n=n.apply(e,t||[])).next())})}function $t(e,t){var r={label:0,sent:function(){if(i[0]&1)throw i[1];return i[1]},trys:[],ops:[]},n,o,i,s;return s={next:a(0),throw:a(1),return:a(2)},typeof Symbol=="function"&&(s[Symbol.iterator]=function(){return this}),s;function a(c){return function(u){return f([c,u])}}function f(c){if(n)throw new TypeError("Generator is already executing.");for(;r;)try{if(n=1,o&&(i=c[0]&2?o.return:c[0]?o.throw||((i=o.return)&&i.call(o),0):o.next)&&!(i=i.call(o,c[1])).done)return i;switch(o=0,i&&(c=[c[0]&2,i.value]),c[0]){case 0:case 1:i=c;break;case 4:return r.label++,{value:c[1],done:!1};case 5:r.label++,o=c[1],c=[0];continue;case 7:c=r.ops.pop(),r.trys.pop();continue;default:if(i=r.trys,!(i=i.length>0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function W(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,i;n1||a(m,d)})})}function a(m,d){try{f(n[m](d))}catch(h){p(i[0][3],h)}}function f(m){m.value instanceof Ze?Promise.resolve(m.value.v).then(c,u):p(i[0][2],m)}function c(m){a("next",m)}function u(m){a("throw",m)}function p(m,d){m(d),i.shift(),i.length&&a(i[0][0],i[0][1])}}function mn(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof xe=="function"?xe(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(s){return new Promise(function(a,f){s=e[i](s),o(a,f,s.done,s.value)})}}function o(i,s,a,f){Promise.resolve(f).then(function(c){i({value:c,done:a})},s)}}function A(e){return typeof e=="function"}function at(e){var t=function(n){Error.call(n),n.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var It=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: `+r.map(function(n,o){return o+1+") "+n.toString()}).join(` - `):"",this.name="UnsubscriptionError",this.errors=r}});function Ve(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var je=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,n,o,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var a=xe(s),f=a.next();!f.done;f=a.next()){var c=f.value;c.remove(this)}}catch(v){t={error:v}}finally{try{f&&!f.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}else s.remove(this);var u=this.initialTeardown;if(A(u))try{u()}catch(v){i=v instanceof It?v.errors:[v]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var m=xe(p),d=m.next();!d.done;d=m.next()){var h=d.value;try{dn(h)}catch(v){i=i!=null?i:[],v instanceof It?i=D(D([],W(i)),W(v.errors)):i.push(v)}}}catch(v){n={error:v}}finally{try{d&&!d.done&&(o=m.return)&&o.call(m)}finally{if(n)throw n.error}}}if(i)throw new It(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)dn(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Ve(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Ve(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Tr=je.EMPTY;function Ft(e){return e instanceof je||e&&"closed"in e&&A(e.remove)&&A(e.add)&&A(e.unsubscribe)}function dn(e){A(e)?e():e.unsubscribe()}var Ae={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],n=2;n0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,s=o.isStopped,a=o.observers;return i||s?Tr:(this.currentObservers=null,a.push(r),new je(function(){n.currentObservers=null,Ve(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,s=n.isStopped;o?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new U;return r.source=this,r},t.create=function(r,n){return new wn(r,n)},t}(U);var wn=function(e){ie(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Tr},t}(E);var Et={now:function(){return(Et.delegate||Date).now()},delegate:void 0};var wt=function(e){ie(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=Et);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,s=n._infiniteTimeWindow,a=n._timestampProvider,f=n._windowTime;o||(i.push(r),!s&&i.push(a.now()+f)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,s=o._buffer,a=s.slice(),f=0;f0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var s=r.actions;n!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==n&&(ut.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Wt);var Tn=function(e){ie(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Dt);var we=new Tn(On);var R=new U(function(e){return e.complete()});function Vt(e){return e&&A(e.schedule)}function kr(e){return e[e.length-1]}function Qe(e){return A(kr(e))?e.pop():void 0}function Se(e){return Vt(kr(e))?e.pop():void 0}function zt(e,t){return typeof kr(e)=="number"?e.pop():t}var pt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Nt(e){return A(e==null?void 0:e.then)}function qt(e){return A(e[ft])}function Kt(e){return Symbol.asyncIterator&&A(e==null?void 0:e[Symbol.asyncIterator])}function Qt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function Ki(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Yt=Ki();function Gt(e){return A(e==null?void 0:e[Yt])}function Bt(e){return ln(this,arguments,function(){var r,n,o,i;return $t(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,Ze(r.read())];case 3:return n=s.sent(),o=n.value,i=n.done,i?[4,Ze(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,Ze(o)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Jt(e){return A(e==null?void 0:e.getReader)}function $(e){if(e instanceof U)return e;if(e!=null){if(qt(e))return Qi(e);if(pt(e))return Yi(e);if(Nt(e))return Gi(e);if(Kt(e))return _n(e);if(Gt(e))return Bi(e);if(Jt(e))return Ji(e)}throw Qt(e)}function Qi(e){return new U(function(t){var r=e[ft]();if(A(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function Yi(e){return new U(function(t){for(var r=0;r=2;return function(n){return n.pipe(e?_(function(o,i){return e(o,i,n)}):de,Te(1),r?Pe(t):zn(function(){return new Zt}))}}function Nn(){for(var e=[],t=0;t=2,!0))}function ue(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new E}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,f=a===void 0?!0:a;return function(c){var u,p,m,d=0,h=!1,v=!1,B=function(){p==null||p.unsubscribe(),p=void 0},ne=function(){B(),u=m=void 0,h=v=!1},z=function(){var O=u;ne(),O==null||O.unsubscribe()};return g(function(O,Ke){d++,!v&&!h&&B();var De=m=m!=null?m:r();Ke.add(function(){d--,d===0&&!v&&!h&&(p=jr(z,f))}),De.subscribe(Ke),!u&&d>0&&(u=new tt({next:function(Fe){return De.next(Fe)},error:function(Fe){v=!0,B(),p=jr(ne,o,Fe),De.error(Fe)},complete:function(){h=!0,B(),p=jr(ne,s),De.complete()}}),$(O).subscribe(u))})(c)}}function jr(e,t){for(var r=[],n=2;ne.next(document)),e}function K(e,t=document){return Array.from(t.querySelectorAll(e))}function V(e,t=document){let r=ce(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function ce(e,t=document){return t.querySelector(e)||void 0}function _e(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function rr(e){return L(b(document.body,"focusin"),b(document.body,"focusout")).pipe(He(1),l(()=>{let t=_e();return typeof t!="undefined"?e.contains(t):!1}),N(e===_e()),G())}function Je(e){return{x:e.offsetLeft,y:e.offsetTop}}function Yn(e){return L(b(window,"load"),b(window,"resize")).pipe(Re(0,we),l(()=>Je(e)),N(Je(e)))}function nr(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return L(b(e,"scroll"),b(window,"resize")).pipe(Re(0,we),l(()=>nr(e)),N(nr(e)))}var Bn=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!zr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),xa?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!zr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=ya.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Jn=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Zn=typeof WeakMap!="undefined"?new WeakMap:new Bn,eo=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=Ea.getInstance(),n=new Ra(t,r,this);Zn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){eo.prototype[e]=function(){var t;return(t=Zn.get(this))[e].apply(t,arguments)}});var ka=function(){return typeof or.ResizeObserver!="undefined"?or.ResizeObserver:eo}(),to=ka;var ro=new E,Ha=I(()=>H(new to(e=>{for(let t of e)ro.next(t)}))).pipe(x(e=>L(Oe,H(e)).pipe(C(()=>e.disconnect()))),J(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ge(e){return Ha.pipe(S(t=>t.observe(e)),x(t=>ro.pipe(_(({target:r})=>r===e),C(()=>t.unobserve(e)),l(()=>he(e)))),N(he(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function sr(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var no=new E,Pa=I(()=>H(new IntersectionObserver(e=>{for(let t of e)no.next(t)},{threshold:0}))).pipe(x(e=>L(Oe,H(e)).pipe(C(()=>e.disconnect()))),J(1));function cr(e){return Pa.pipe(S(t=>t.observe(e)),x(t=>no.pipe(_(({target:r})=>r===e),C(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function oo(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=he(e),o=bt(e);return r>=o.height-n.height-t}),G())}var fr={drawer:V("[data-md-toggle=drawer]"),search:V("[data-md-toggle=search]")};function io(e){return fr[e].checked}function qe(e,t){fr[e].checked!==t&&fr[e].click()}function Ue(e){let t=fr[e];return b(t,"change").pipe(l(()=>t.checked),N(t.checked))}function $a(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ia(){return L(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(N(!1))}function ao(){let e=b(window,"keydown").pipe(_(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:io("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),_(({mode:t,type:r})=>{if(t==="global"){let n=_e();if(typeof n!="undefined")return!$a(n,r)}return!0}),ue());return Ia().pipe(x(t=>t?R:e))}function Me(){return new URL(location.href)}function ot(e){location.href=e.href}function so(){return new E}function co(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)co(e,r)}function M(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)co(n,o);return n}function ur(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function fo(){return location.hash.substring(1)}function uo(e){let t=M("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Fa(){return b(window,"hashchange").pipe(l(fo),N(fo()),_(e=>e.length>0),J(1))}function po(){return Fa().pipe(l(e=>ce(`[id="${e}"]`)),_(e=>typeof e!="undefined"))}function Nr(e){let t=matchMedia(e);return er(r=>t.addListener(()=>r(t.matches))).pipe(N(t.matches))}function lo(){let e=matchMedia("print");return L(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(N(e.matches))}function qr(e,t){return e.pipe(x(r=>r?t():R))}function pr(e,t={credentials:"same-origin"}){return pe(fetch(`${e}`,t)).pipe(fe(()=>R),x(r=>r.status!==200?Ot(()=>new Error(r.statusText)):H(r)))}function We(e,t){return pr(e,t).pipe(x(r=>r.json()),J(1))}function mo(e,t){let r=new DOMParser;return pr(e,t).pipe(x(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),J(1))}function lr(e){let t=M("script",{src:e});return I(()=>(document.head.appendChild(t),L(b(t,"load"),b(t,"error").pipe(x(()=>Ot(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),C(()=>document.head.removeChild(t)),Te(1))))}function ho(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function bo(){return L(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(ho),N(ho()))}function vo(){return{width:innerWidth,height:innerHeight}}function go(){return b(window,"resize",{passive:!0}).pipe(l(vo),N(vo()))}function yo(){return Q([bo(),go()]).pipe(l(([e,t])=>({offset:e,size:t})),J(1))}function mr(e,{viewport$:t,header$:r}){let n=t.pipe(X("size")),o=Q([n,r]).pipe(l(()=>Je(e)));return Q([r,t,o]).pipe(l(([{height:i},{offset:s,size:a},{x:f,y:c}])=>({offset:{x:s.x-f,y:s.y-c+i},size:a})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(s=>{let a=document.createElement("script");a.src=i,a.onload=s,document.body.appendChild(a)})),Promise.resolve())}var r=class extends EventTarget{constructor(n){super(),this.url=n,this.m=i=>{i.source===this.w&&(this.dispatchEvent(new MessageEvent("message",{data:i.data})),this.onmessage&&this.onmessage(i))},this.e=(i,s,a,f,c)=>{if(s===`${this.url}`){let u=new ErrorEvent("error",{message:i,filename:s,lineno:a,colno:f,error:c});this.dispatchEvent(u),this.onerror&&this.onerror(u)}};let o=document.createElement("iframe");o.hidden=!0,document.body.appendChild(this.iframe=o),this.w.document.open(),this.w.document.write(` {% endblock %} {% block scripts %} - + {% for path in config.extra_javascript %} {% endfor %} diff --git a/material/partials/languages/zh-TW.html b/material/partials/languages/zh-TW.html index d05b72b69..be79e14f2 100644 --- a/material/partials/languages/zh-TW.html +++ b/material/partials/languages/zh-TW.html @@ -2,23 +2,42 @@ This file was automatically generated - do not edit -#} {% macro t(key) %}{{ { - "language": "zh-Hant", + "language": "zh-TW", "action.edit": "編輯此頁", "action.skip": "跳轉到", + "action.view": "查看此頁原始碼", "announce.dismiss": "不再顯示此訊息", + "blog.archive": "封存", + "blog.categories": "分類", + "blog.categories.in": "於", + "blog.continue": "繼續閱讀", + "blog.draft": "草稿", + "blog.index": "回到主頁", + "blog.meta": "元數據", + "blog.references": "相關連結", "clipboard.copy": "複製", "clipboard.copied": "已複製", "consent.accept": "同意", "consent.manage": "管理設定", "consent.reject": "拒絕", + "footer": "頁腳", "footer.next": "下一頁", "footer.previous": "上一頁", + "header": "頁首", "meta.comments": "留言", "meta.source": "來源", + "nav": "導覽列", + "readtime.one": "需要 1 分鐘閱讀時間", + "readtime.other": "需要 # 分鐘閱讀時間", + "rss.created": "RSS 訂閱", + "rss.updated": "RSS 訂閱內容已更新", + "search": "搜尋", "search.config.lang": "ja", "search.config.pipeline": "stemmer", "search.config.separator": "[\\s\\- 、。,.?;]+", "search.placeholder": "搜尋", + "search.share": "分享", + "search.reset": "清除", "search.result.initializer": "正在初始化搜尋引擎", "search.result.placeholder": "打字進行搜尋", "search.result.none": "沒有符合的項目", @@ -26,8 +45,14 @@ "search.result.other": "找到 # 個符合的項目", "search.result.more.one": "此頁尚有 1 個符合的項目", "search.result.more.other": "此頁尚有 # 個符合的項目", + "search.result.term.missing": "缺少字詞", + "select.language": "選擇語言", + "select.version": "選擇版本", "source": "前往倉庫", + "source.file.contributors": "貢獻者", "source.file.date.created": "建立日期", "source.file.date.updated": "最後更新", - "toc": "目錄" + "tabs": "標籤", + "toc": "目錄", + "top": "回到頂端" }[key] }}{% endmacro %} diff --git a/mkdocs.yml b/mkdocs.yml index 907a04493..c120475fb 100755 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -38,7 +38,7 @@ theme: name: material custom_dir: material/.overrides features: - # - announce.dismiss + - announce.dismiss - content.action.edit - content.action.view - content.code.annotate diff --git a/src/assets/javascripts/components/announce/index.ts b/src/assets/javascripts/components/announce/index.ts index 9e0d2447a..92c4d1ebb 100644 --- a/src/assets/javascripts/components/announce/index.ts +++ b/src/assets/javascripts/components/announce/index.ts @@ -28,7 +28,6 @@ import { finalize, fromEvent, map, - startWith, tap } from "rxjs" @@ -86,18 +85,12 @@ export function mountAnnounce( /* Mount component on subscription */ return defer(() => { const push$ = new Subject() - push$ - .pipe( - startWith({ hash: __md_get("__announce") }) - ) - .subscribe(({ hash }) => { - if (hash && hash === (__md_get("__announce") ?? hash)) { - el.hidden = true + push$.subscribe(({ hash }) => { + el.hidden = true - /* Persist preference in local storage */ - __md_set("__announce", hash) - } - }) + /* Persist preference in local storage */ + __md_set("__announce", hash) + }) /* Create and return component */ return watchAnnounce(el) From 966e2eb2698cf37de4e5daef2e5e4bd01f3dfc59 Mon Sep 17 00:00:00 2001 From: squidfunk Date: Sun, 26 Feb 2023 19:13:28 +0100 Subject: [PATCH 21/22] Mitigate flickering of header shadow --- material/partials/header.html | 4 +++- src/partials/header.html | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/material/partials/header.html b/material/partials/header.html index 66264c00e..89f9513be 100644 --- a/material/partials/header.html +++ b/material/partials/header.html @@ -3,7 +3,9 @@ -#} {% set class = "md-header" %} {% if "navigation.tabs.sticky" in features %} - {% set class = class ~ " md-header--lifted" %} + {% set class = class ~ " md-header--shadow md-header--lifted" %} +{% elif "navigation.tabs" not in features %} + {% set class = class ~ " md-header--shadow" %} {% endif %}