Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: ng-alain/delon
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 14.1.1
Choose a base ref
...
head repository: ng-alain/delon
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 14.2.0
Choose a head ref
  • 14 commits
  • 57 files changed
  • 1 contributor

Commits on Oct 30, 2022

  1. Copy the full SHA
    f58b854 View commit details
  2. chore: fix demo (#1542)

    cipchk authored Oct 30, 2022
    Copy the full SHA
    0889f39 View commit details
  3. Copy the full SHA
    9c5a1da View commit details
  4. chore: fallback #1531 (#1543)

    cipchk authored Oct 30, 2022
    Copy the full SHA
    fe9a94b View commit details
  5. Copy the full SHA
    591b604 View commit details

Commits on Nov 10, 2022

  1. Copy the full SHA
    586277d View commit details

Commits on Nov 11, 2022

  1. Copy the full SHA
    86c8ca1 View commit details
  2. Copy the full SHA
    04e97f1 View commit details
  3. Copy the full SHA
    df01dcc View commit details
  4. Copy the full SHA
    4ed1aa4 View commit details
  5. Copy the full SHA
    a408cbb View commit details
  6. Copy the full SHA
    a197bb1 View commit details
  7. Copy the full SHA
    6913f01 View commit details
  8. Copy the full SHA
    59b8a22 View commit details
Showing with 764 additions and 189 deletions.
  1. +4 −0 .github/workflows/deploy-site.yml
  2. +21 −0 CHANGELOG.md
  3. +12 −4 azure-pipelines.yml
  4. +22 −0 docs/changelog.en-US.md
  5. +22 −0 docs/changelog.zh-CN.md
  6. +6 −5 package.json
  7. +4 −2 packages/abc/exception/demo/403.md
  8. +22 −16 packages/abc/exception/exception.component.ts
  9. +8 −8 packages/abc/exception/index.en-US.md
  10. +8 −8 packages/abc/exception/index.zh-CN.md
  11. +73 −0 packages/abc/hotkey/demo/basic.md
  12. +27 −0 packages/abc/hotkey/hotkey.directive.ts
  13. +11 −0 packages/abc/hotkey/hotkey.module.ts
  14. +51 −0 packages/abc/hotkey/hotkey.spec.ts
  15. +20 −0 packages/abc/hotkey/index.en-US.md
  16. +1 −0 packages/abc/hotkey/index.ts
  17. +20 −0 packages/abc/hotkey/index.zh-CN.md
  18. +6 −0 packages/abc/hotkey/ng-package.json
  19. +2 −0 packages/abc/hotkey/public_api.ts
  20. +1 −0 packages/abc/ng-package.json
  21. +1 −0 packages/abc/notice-icon/index.en-US.md
  22. +1 −0 packages/abc/notice-icon/index.zh-CN.md
  23. +2 −2 packages/abc/notice-icon/notice-icon.component.html
  24. +6 −0 packages/abc/notice-icon/notice-icon.component.ts
  25. +11 −0 packages/abc/notice-icon/notice-icon.spec.ts
  26. +6 −12 packages/abc/notice-icon/style/index.less
  27. +1 −0 packages/abc/package.json
  28. +2 −2 packages/abc/st/demo/widget.md
  29. +2 −1 packages/abc/st/st.component.html
  30. +27 −21 packages/abc/st/st.component.ts
  31. +18 −3 packages/abc/st/style/index.less
  32. +50 −0 packages/abc/st/test/st.spec.ts
  33. +12 −0 packages/form/docs/qa.en-US.md
  34. +12 −0 packages/form/docs/qa.zh-CN.md
  35. +37 −0 packages/form/spec/schema.spec.ts
  36. +1 −3 packages/form/src/model/form.property.factory.ts
  37. +3 −0 packages/form/src/model/form.property.ts
  38. +2 −1 packages/theme/setting-drawer/setting-drawer.component.ts
  39. +3 −0 packages/util/config/abc/exception.type.ts
  40. +1 −0 packages/util/config/abc/index.ts
  41. +8 −0 packages/util/config/abc/st.type.ts
  42. +2 −0 packages/util/config/config.types.ts
  43. +24 −3 packages/util/other/lazy.service.spec.ts
  44. +88 −15 packages/util/other/lazy.service.ts
  45. +21 −0 schematics/docs/sta.en-US.md
  46. +21 −0 schematics/docs/sta.zh-CN.md
  47. +8 −2 schematics/sta/index.spec.ts
  48. +17 −8 schematics/sta/index.ts
  49. +7 −0 schematics/sta/schema.json
  50. +5 −0 schematics/sta/types.ts
  51. +1 −1 schematics/test.ts
  52. +2 −1 scripts/ci/utils.sh
  53. +2 −0 src/app/core/code/files/delon-abc.module.ts
  54. +3 −1 src/app/shared/shared-delon.module.ts
  55. +2 −0 src/app/shared/shared-zorro.module.ts
  56. +11 −1 src/app/shared/st-widget/img.widget.ts
  57. +3 −69 src/dev/demo.component.ts
4 changes: 4 additions & 0 deletions .github/workflows/deploy-site.yml
Original file line number Diff line number Diff line change
@@ -7,6 +7,10 @@ jobs:
if: "startsWith(github.event.commits[0].message, 'release')"
runs-on: ubuntu-latest
steps:
- uses: actions/setup-node@v3
with:
node-version: 14.17.0

- name: checkout
uses: actions/checkout@master

21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,24 @@
# [14.2.0](https://github.com/ng-alain/delon/compare/14.1.1...14.2.0) (2022-11-11)


### Bug Fixes

* **abc:st:** fix miss center title when set sort ([#1547](https://github.com/ng-alain/delon/issues/1547)) ([86c8ca1](https://github.com/ng-alain/delon/commit/86c8ca188f4398c30b69877b8c8874ad5b71d096))
* **abc:st:** fix use pure recoard data for modal params ([#1541](https://github.com/ng-alain/delon/issues/1541)) ([04e97f1](https://github.com/ng-alain/delon/commit/04e97f1aa1fbc4e883bea8c8abdde462f068df95))
* **cli:** upgrade `ng-alain-plugin-theme` ([#1545](https://github.com/ng-alain/delon/issues/1545)) ([591b604](https://github.com/ng-alain/delon/commit/591b60493d777e10bfd1b820d02b3f3151ff29fd))
* **theme:setting-drawer:** add `lessJs` property ([#1544](https://github.com/ng-alain/delon/issues/1544)) ([9c5a1da](https://github.com/ng-alain/delon/commit/9c5a1da6b84e786ee7ba0051bebd6effb10ef083))


### Features

* **abc:exception:** add `typeDict` of global config ([#1551](https://github.com/ng-alain/delon/issues/1551)) ([a408cbb](https://github.com/ng-alain/delon/commit/a408cbb0b5724221d9f9540c28226986ba43502d))
* **abc:hotkey:** add hotkey component ([#1538](https://github.com/ng-alain/delon/issues/1538)) ([6913f01](https://github.com/ng-alain/delon/commit/6913f01f00f06c778cf454a8662fb48231c04377))
* **abc:notice-icon:** add `centered` property ([#1546](https://github.com/ng-alain/delon/issues/1546)) ([df01dcc](https://github.com/ng-alain/delon/commit/df01dcc6c51e8bf6a13cfa1bf1a51f691ae87a7d))
* **cli:sta:** add `tagsMapping` property ([#1549](https://github.com/ng-alain/delon/issues/1549)) ([4ed1aa4](https://github.com/ng-alain/delon/commit/4ed1aa4c677ebc572c6df1337a75e29c76d869ae))
* **util:other:lazy:** add `attriburte` property ([#1548](https://github.com/ng-alain/delon/issues/1548)) ([a197bb1](https://github.com/ng-alain/delon/commit/a197bb1453b72b5645878dedd55f17d3436f93ae))



## [14.1.1](https://github.com/ng-alain/delon/compare/14.1.0...14.1.1) (2022-10-14)


16 changes: 12 additions & 4 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
@@ -17,11 +17,18 @@ stages:
displayName: 'Install Node.js'

- stage: build
dependsOn: env
jobs:
- job: build
steps:
- script: yarn install
- task: NodeTool@0
inputs:
versionSpec: '14.17.0'
displayName: 'Install Node.js'
- script: |
node --version
yarn --version
yarn config list
yarn install
displayName: 'Install'
- task: Bash@3
env:
@@ -73,9 +80,9 @@ stages:
env:
ACCESS_REPO: $(ACCESS_REPO)
ACCESS_TOKEN: $(ACCESS_TOKEN)
dependsOn: env

- stage: test
dependsOn: env
jobs:
- job: packages
steps:
@@ -110,12 +117,13 @@ stages:
- script: yarn install
displayName: 'Install'
- script: yarn run test:cli
dependsOn: env

- stage: lint
dependsOn: env
jobs:
- job: packages
steps:
- script: yarn install
displayName: 'Install'
- script: yarn run lint
dependsOn: env
22 changes: 22 additions & 0 deletions docs/changelog.en-US.md
Original file line number Diff line number Diff line change
@@ -14,6 +14,28 @@ NG-ALAIN strictly follows [Semantic Versioning 2.0.0](http://semver.org/lang/zh-

---

# [14.2.0](https://github.com/ng-alain/delon/compare/14.1.1...14.2.0) (2022-11-11)

### Scaffold

* Add press F1 to focus in top search ([#2314](https://github.com/ng-alain/ng-alain/pull/2314))

### Bug Fixes

* **abc:st:** fix miss center title when set sort ([#1547](https://github.com/ng-alain/delon/issues/1547)) ([86c8ca1](https://github.com/ng-alain/delon/commit/86c8ca188f4398c30b69877b8c8874ad5b71d096))
* **abc:st:** fix use pure recoard data for modal params ([#1541](https://github.com/ng-alain/delon/issues/1541)) ([04e97f1](https://github.com/ng-alain/delon/commit/04e97f1aa1fbc4e883bea8c8abdde462f068df95))
* **cli:** upgrade `ng-alain-plugin-theme` ([#1545](https://github.com/ng-alain/delon/issues/1545)) ([591b604](https://github.com/ng-alain/delon/commit/591b60493d777e10bfd1b820d02b3f3151ff29fd))

### Features

* **theme:setting-drawer:** add `lessJs` property ([#1544](https://github.com/ng-alain/delon/issues/1544)) ([9c5a1da](https://github.com/ng-alain/delon/commit/9c5a1da6b84e786ee7ba0051bebd6effb10ef083))
* **abc:exception:** add `typeDict` of global config ([#1551](https://github.com/ng-alain/delon/issues/1551)) ([a408cbb](https://github.com/ng-alain/delon/commit/a408cbb0b5724221d9f9540c28226986ba43502d))
* **abc:hotkey:** add `hotkey` component ([#1538](https://github.com/ng-alain/delon/issues/1538)) ([6913f01](https://github.com/ng-alain/delon/commit/6913f01f00f06c778cf454a8662fb48231c04377))
* **abc:notice-icon:** add `centered` property ([#1546](https://github.com/ng-alain/delon/issues/1546)) ([df01dcc](https://github.com/ng-alain/delon/commit/df01dcc6c51e8bf6a13cfa1bf1a51f691ae87a7d))
* **cli:sta:** add `tagsMapping` property ([#1549](https://github.com/ng-alain/delon/issues/1549)) ([4ed1aa4](https://github.com/ng-alain/delon/commit/4ed1aa4c677ebc572c6df1337a75e29c76d869ae))
* **util:other:lazy:** add `attriburte` property ([#1548](https://github.com/ng-alain/delon/issues/1548)) ([a197bb1](https://github.com/ng-alain/delon/commit/a197bb1453b72b5645878dedd55f17d3436f93ae))


## [14.1.1](https://github.com/ng-alain/delon/compare/14.1.0...14.1.1) (2022-10-14)

### Bug Fixes
22 changes: 22 additions & 0 deletions docs/changelog.zh-CN.md
Original file line number Diff line number Diff line change
@@ -14,6 +14,28 @@ NG-ALAIN 严格遵循 [Semantic Versioning 2.0.0](http://semver.org/lang/zh-CN/)

---

# [14.2.0](https://github.com/ng-alain/delon/compare/14.1.1...14.2.0) (2022-11-11)

### Scaffold

* 添加按 `F1` 顶部搜索框获得焦点 ([#2314](https://github.com/ng-alain/ng-alain/pull/2314))

### Bug Fixes

* **abc:st:** 修复设置排序时居中失效 ([#1547](https://github.com/ng-alain/delon/issues/1547)) ([86c8ca1](https://github.com/ng-alain/delon/commit/86c8ca188f4398c30b69877b8c8874ad5b71d096))
* **abc:st:** 修复 modal 参数支持返回纯净数据(过滤 `_values` 等) ([#1541](https://github.com/ng-alain/delon/issues/1541)) ([04e97f1](https://github.com/ng-alain/delon/commit/04e97f1aa1fbc4e883bea8c8abdde462f068df95))
* **cli:** 更新 `ng-alain-plugin-theme` ([#1545](https://github.com/ng-alain/delon/issues/1545)) ([591b604](https://github.com/ng-alain/delon/commit/591b60493d777e10bfd1b820d02b3f3151ff29fd))

### Features

* **theme:setting-drawer:** 新增 `lessJs` 属性 ([#1544](https://github.com/ng-alain/delon/issues/1544)) ([9c5a1da](https://github.com/ng-alain/delon/commit/9c5a1da6b84e786ee7ba0051bebd6effb10ef083))
* **abc:exception:** 新增全局配置项 `typeDict` ([#1551](https://github.com/ng-alain/delon/issues/1551)) ([a408cbb](https://github.com/ng-alain/delon/commit/a408cbb0b5724221d9f9540c28226986ba43502d))
* **abc:hotkey:** 新增 `hotkey` 热键组件 ([#1538](https://github.com/ng-alain/delon/issues/1538)) ([6913f01](https://github.com/ng-alain/delon/commit/6913f01f00f06c778cf454a8662fb48231c04377))
* **abc:notice-icon:** 新增 `centered` 属性 ([#1546](https://github.com/ng-alain/delon/issues/1546)) ([df01dcc](https://github.com/ng-alain/delon/commit/df01dcc6c51e8bf6a13cfa1bf1a51f691ae87a7d))
* **cli:sta:** 新增 `tagsMapping` 属性,支持只 Tags 映射转换 ([#1549](https://github.com/ng-alain/delon/issues/1549)) ([4ed1aa4](https://github.com/ng-alain/delon/commit/4ed1aa4c677ebc572c6df1337a75e29c76d869ae))
* **util:other:lazy:** 新增 `attriburte` 属性,支持自定义 `script``link` 属性 ([#1548](https://github.com/ng-alain/delon/issues/1548)) ([a197bb1](https://github.com/ng-alain/delon/commit/a197bb1453b72b5645878dedd55f17d3436f93ae))


## [14.1.1](https://github.com/ng-alain/delon/compare/14.1.0...14.1.1) (2022-10-14)

### Bug Fixes
11 changes: 6 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "delon",
"version": "14.1.1",
"version": "14.2.0",
"description": "Delon is a set of essential modules for NG-ALAIN.",
"keywords": [
"delon",
@@ -21,7 +21,7 @@
},
"homepage": "https://ng-alain.com",
"engines": {
"node": "^14.15.5 || ^16.10.0",
"node": "^14.15.5 || ^16.10.0 || ^18.10.0",
"yarn": ">=1.21.1 <2",
"npm": "Please use yarn instead of NPM to install dependencies"
},
@@ -91,7 +91,8 @@
"@ng-util/monaco-editor": "^14.0.0",
"@nguniversal/express-engine": "~14.1.0",
"express": "^4.18.1",
"isutf8": "^4.0.0"
"isutf8": "^4.0.0",
"@github/hotkey": "^2.0.1"
},
"devDependencies": {
"@angular-devkit/build-angular": "^14.2.1",
@@ -156,7 +157,7 @@
"less-bundle-promise": "^1.0.11",
"ng-alain-codelyzer": "^0.0.1",
"ng-alain-sts": "^0.0.2",
"ng-alain-plugin-theme": "^13.0.3",
"ng-alain-plugin-theme": "^14.0.0",
"tsconfig-paths": "^4.1.0",
"@nguniversal/builders": "^14.1.0",
"@types/express": "^4.17.13",
@@ -180,7 +181,7 @@
"eslint-plugin-deprecation": "~1.3.2",
"lint-staged": "^13.0.3",
"raw-loader": "^4.0.2",
"swagger-typescript-api": "^10.0.1",
"swagger-typescript-api": "^11.1.3",
"sitemap": "^7.1.1"
},
"lint-staged": {
6 changes: 4 additions & 2 deletions packages/abc/exception/demo/403.md
Original file line number Diff line number Diff line change
@@ -10,10 +10,12 @@ import { Component } from '@angular/core';

@Component({
selector: 'app-demo',
template: ` <exception [type]="403">
template: `
<exception [type]="403">
<button nz-button [nzType]="'primary'">回到首页</button>
<button nz-button>查看详情</button>
</exception>`,
</exception>
`,
})
export class DemoComponent {}
```
38 changes: 22 additions & 16 deletions packages/abc/exception/exception.component.ts
Original file line number Diff line number Diff line change
@@ -16,6 +16,7 @@ import { Subject, takeUntil } from 'rxjs';

import { DelonLocaleService, LocaleData } from '@delon/theme';
import { isEmpty } from '@delon/util/browser';
import { AlainConfigService } from '@delon/util/config';
import { NzSafeAny } from 'ng-zorro-antd/core/types';

export type ExceptionType = 403 | 404 | 500;
@@ -46,24 +47,11 @@ export class ExceptionComponent implements OnInit, OnDestroy {
_img: SafeUrl = '';
_title: SafeHtml = '';
_desc: SafeHtml = '';
private typeDict!: { [key: number | string]: { img: string; title: string; desc?: string } };

@Input()
set type(value: ExceptionType) {
const item: { img: string; title: string } = {
403: {
img: 'https://gw.alipayobjects.com/zos/rmsportal/wZcnGqRDyhPOEYFcZDnb.svg',
title: '403'
},
404: {
img: 'https://gw.alipayobjects.com/zos/rmsportal/KpnpchXsobRgLElEozzI.svg',
title: '404'
},
500: {
img: 'https://gw.alipayobjects.com/zos/rmsportal/RVRUAYdCGeYNBWoKiIwB.svg',
title: '500'
}
}[value];

const item = this.typeDict[value];
if (!item) return;

this.fixImg(item.img);
@@ -101,9 +89,27 @@ export class ExceptionComponent implements OnInit, OnDestroy {
constructor(
private i18n: DelonLocaleService,
private dom: DomSanitizer,
configSrv: AlainConfigService,
@Optional() private directionality: Directionality,
private cdr: ChangeDetectorRef
) {}
) {
configSrv.attach(this, 'exception', {
typeDict: {
403: {
img: 'https://gw.alipayobjects.com/zos/rmsportal/wZcnGqRDyhPOEYFcZDnb.svg',
title: '403'
},
404: {
img: 'https://gw.alipayobjects.com/zos/rmsportal/KpnpchXsobRgLElEozzI.svg',
title: '404'
},
500: {
img: 'https://gw.alipayobjects.com/zos/rmsportal/RVRUAYdCGeYNBWoKiIwB.svg',
title: '500'
}
}
});
}

ngOnInit(): void {
this.dir = this.directionality.value;
16 changes: 8 additions & 8 deletions packages/abc/exception/index.en-US.md
Original file line number Diff line number Diff line change
@@ -12,11 +12,11 @@ Exceptions page is used to provide feedback on specific abnormal state. Usually,

### exception

| Property | Description | Type | Default |
|----------|-------------|------|---------|
| `[type]` | type of exception, the corresponding default `title`, `desc`, `img` will be given if set, which can be overridden by explicit setting of `title`, `desc`, `img` | `'403','404','500'` | - |
| `[title]` | title | `string` | - |
| `[desc]` | supplementary description | `string` | - |
| `[img]` | the url of background image | `string` | - |
| `[backRouterLink]` | Back of router link | `string, any[]` | `/` |
| `ng-content` | suggested operations, a default 'Home' link will show if not set | `TemplateRef<void>` | - |
| Property | Description | Type | Default | Global Config |
|----------|-------------|------|---------|---------------|
| `[type]` | type of exception, the corresponding default `title`, `desc`, `img` will be given if set, which can be overridden by explicit setting of `title`, `desc`, `img` | `'403','404','500'` | - ||
| `[title]` | title | `string` | - | - |
| `[desc]` | supplementary description | `string` | - | - |
| `[img]` | the url of background image | `string` | - | - |
| `[backRouterLink]` | Back of router link | `string, any[]` | `/` | - |
| `ng-content` | suggested operations, a default 'Home' link will show if not set | `TemplateRef<void>` | - | - |
16 changes: 8 additions & 8 deletions packages/abc/exception/index.zh-CN.md
Original file line number Diff line number Diff line change
@@ -12,11 +12,11 @@ module: import { ExceptionModule } from '@delon/abc/exception';

### exception

| 成员 | 说明 | 类型 | 默认值 |
|----|----|----|-----|
| `[type]` | 页面类型,若配置,则自带对应类型默认的 `title``desc``img`,此默认设置可以被 `title``desc``img` 覆盖 | `'403','404','500'` | - |
| `[title]` | 标题 | `string` | - |
| `[desc]` | 补充描述 | `string` | - |
| `[img]` | 背景图片地址 | `string` | - |
| `[backRouterLink]` | 后退路由链接 | `string, any[]` | `/` |
| `ng-content` | 建议操作,配置此属性时默认的『返回首页』按钮不生效 | `TemplateRef<void>` | - |
| 成员 | 说明 | 类型 | 默认值 | 全局配置 |
|----|----|----|-----|------|
| `[type]` | 页面类型,若配置,则自带对应类型默认的 `title``desc``img`,此默认设置可以被 `title``desc``img` 覆盖 | `'403','404','500'` | - ||
| `[title]` | 标题 | `string` | - | - |
| `[desc]` | 补充描述 | `string` | - | - |
| `[img]` | 背景图片地址 | `string` | - | - |
| `[backRouterLink]` | 后退路由链接 | `string, any[]` | `/` | - |
| `ng-content` | 建议操作,配置此属性时默认的『返回首页』按钮不生效 | `TemplateRef<void>` | - | - |
73 changes: 73 additions & 0 deletions packages/abc/hotkey/demo/basic.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
---
order: 1
title:
zh-CN: 基础
en-US: Basic
---

## zh-CN

最简单的用法。

## en-US

Simplest of usage.

```ts
import { Component } from '@angular/core';

import { NzMessageService } from 'ng-zorro-antd/message';

@Component({
selector: 'app-demo',
template: `
<button
nz-button
nzType="primary"
(click)="show('clicked button 1!')"
hotkey="Control+d,Meta+d"
data-hotkey-scope="text-area-1"
>
press meta+d or ctrl+d in text area 1 to click button 1
</button>
<br />
<textarea nz-input id="text-area-1" rows="4" cols="40" hotkey="q" #textArea1 (focus)="selectText(textArea1)">
text area 1, press q to focus this textarea and select all text</textarea
>
<br />
<button
nz-button
nzType="primary"
(click)="show('clicked button 2!')"
hotkey="Control+d,Meta+d"
data-hotkey-scope="text-area-2"
>
press meta+d or ctrl+d in text area 2 to click button 2
</button>
<br />
<textarea nz-input nzType="primary" id="text-area-2" rows="4" cols="40">text area 2</textarea><br />
<label><input nz-input hotkey="t" type="text" />Press <kbd>t</kbd> to focus this field</label><br />
<label><nz-switch hotkey="r"></nz-switch>Press <kbd>r</kbd> to check/uncheck this checkbox</label><br />
<a (click)="show('click link')" nz-button nzType="link" hotkey="o k"> Press <kbd>o k</kbd> click this link </a>
`,
styles: [
`
:host kbd {
color: #f50;
padding: 0 8px;
}
`
]
})
export class DemoComponent {
constructor(private msg: NzMessageService) {}

show(msg: string): void {
this.msg.info(msg);
}

selectText(el: HTMLTextAreaElement): void {
el.select();
}
}
```
Loading