This repository has been archived by the owner on Aug 1, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path10-es2015.ec02fe1afa20397c403c.js
1 lines (1 loc) · 38.8 KB
/
10-es2015.ec02fe1afa20397c403c.js
1
(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{z19X:function(t,e,a){"use strict";a.r(e);var o=a("8Y7J"),d=a("0qEG");class n{constructor(){this.item={cols:1,urls:{"en-US":"packages/acl/docs/control.en-US.md","zh-CN":"packages/acl/docs/control.zh-CN.md"},content:{"en-US":{content:'<section class="markdown"><h2 id="Foreword">Foreword<a onclick="window.location.hash = \'Foreword\'" class="anchor">#</a></h2><p>Many times you need to control the permissions of a button. <code>@delon/acl</code> provides an <code>acl</code> directive that allows you to control the permissions of a button, table, list, etc.</p><h2 id="Principle">Principle<a onclick="window.location.hash = \'Principle\'" class="anchor">#</a></h2><p><code>[acl]</code> adds a <code>acl__hide</code> style to the target element by default, and hides the unauthorized element with <code>display: none</code>, which is a simple and efficient way.</p><p>The corresponding <code>*aclIf</code> is a structured directive similar to <code>ngIf</code> which does not render the element when it is not authorized. <strong>Note:</strong> In order to keep it simple, it does not support <code>acl-ability</code> permission point configuration.</p><h2 id="DEMO">DEMO<a onclick="window.location.hash = \'DEMO\'" class="anchor">#</a></h2><h3 id="Role">Role<a onclick="window.location.hash = \'Role\'" class="anchor">#</a></h3><p>Displayed when the button must have a user role.</p><pre class="hljs language-html"><code><button [acl]="\'user\'"></button>\n<button *aclIf="\'user\'"></button></code></pre><p>Displayed when the button must have a user or manage role.</p><pre class="hljs language-html"><code><button [acl]="[\'user\', \'manage\']"></button>\n<button *aclIf="[\'user\', \'manage\']"></button></code></pre><p>Displayed when the button must have a user and manage role.</p><pre class="hljs language-html"><code><button [acl]="{ role: [\'user\', \'manage\'], mode: \'allOf\' }"></button>\n<button *aclIf="{ role: [\'user\', \'manage\'], mode: \'allOf\' }"></button></code></pre><p>Displayed when the input muse have a user role, displayed text when it\'s not authorized.</p><pre class="hljs language-html"><code><input nz-input *aclIf="\'user\'; else unauthorized">\n<ng-template #unauthorized>{{user}}</ng-template></code></pre><p>Use <code>except</code> reverse control to displayed when it\'s not authorized.</p><pre class="hljs language-html"><code><ng-template [aclIf]="role" except>\n <input nz-input>\n</ng-template></code></pre><h3 id="Permission">Permission<a onclick="window.location.hash = \'Permission\'" class="anchor">#</a></h3><p>Displayed when the button must have a 10 value permisseion.</p><pre class="hljs language-html"><code><button [acl]="10"></button></code></pre><p>In order for the acl instruction to be a role or a permission, so the value of the parameter value is <code>string</code> which mean the role, <code>number</code> which mean the permission. Use the <code>acl-ability</code> parameter if the permission is a string.</p><pre class="hljs language-html"><code><button acl [acl-ability]="\'USER-EDIT\'"></button></code></pre><ul><li><p><code>oneOf</code> Must be valid against exactly one of the given permission (default).</p></li><li><p><code>allOf</code> Must be valid against all of the given permission</p></li></ul><p>Displayed when the button must have a <code>10</code> and <code>USER-EDIT</code> permission.</p><pre class="hljs language-html"><code><button [acl]="{ ability: [10, \'USER-EDIT\'], mode: \'allOf\' }"></button></code></pre><p><strong>String permission</strong></p><p>The check permission is via the <code>can</code> method, and the <code>DelonACLConfig</code> contains the <code>preCan</code> method, which can be used to implement a string to distinguish roles or permissions.</p><pre class="hljs language-ts"><code>export function fnDelonACLConfig(): DelonACLConfig {\n return {\n ...new DelonACLConfig(),\n ...{\n preCan: (roleOrAbility: ACLCanType) => {\n const str = roleOrAbility.toString();\n return str.startsWith(\'ability.\') ? { ability: [ str ] } : null;\n }\n } as DelonACLConfig\n };\n}</code></pre><p>Therefore, passing a string with the beginning of <code>ability.</code> will be considered a permission point, for example:</p><pre class="hljs language-html"><code><button acl="ability.user.edit"></button></code></pre></section>',api:'<h2 id="API">API<a onclick="window.location.hash = \'API\'" class="anchor">#</a></h2><h3 id="*aclIf">*aclIf<a onclick="window.location.hash = \'*aclIf\'" class="anchor">#</a></h3><table><thead><tr><th>Property</th><th>Description</th><th>Type</th><th>Default</th></tr></thead><tbody><tr><td><code>[aclIf]</code></td><td><code>can</code> method parameter</td><td><code>ACLCanType</code></td><td>-</td></tr><tr><td><code>[aclIfThen]</code></td><td>Display template when authorized</td><td><code>TemplateRef<void> | null</code></td><td>-</td></tr><tr><td><code>[aclIfElse]</code></td><td>Display template when not authorized</td><td><code>TemplateRef<void> | null</code></td><td>-</td></tr><tr><td><code>[except]</code></td><td>Permissions denied to display</td><td><code>boolean</code></td><td><code>false</code></td></tr></tbody></table>',meta:{order:3,title:"Granular permissions",type:"Documents"},toc:[{id:"Foreword",title:"Foreword",h:2},{id:"Principle",title:"Principle",h:2},{id:"DEMO",title:"DEMO",h:2},{id:"Role",title:"Role",h:3},{id:"Permission",title:"Permission",h:3},{id:"API",title:"API",h:2},{id:"*aclIf",title:"*aclIf",h:3}]},"zh-CN":{content:'<section class="markdown"><h2 id="\u5199\u5728\u524d\u9762">\u5199\u5728\u524d\u9762<a onclick="window.location.hash = \'\u5199\u5728\u524d\u9762\'" class="anchor">#</a></h2><p>\u5f88\u591a\u65f6\u5019\u9700\u8981\u5bf9\u67d0\u4e2a\u6309\u94ae\u8fdb\u884c\u6743\u9650\u63a7\u5236\uff0c<code>@delon/acl</code> \u63d0\u4f9b\u4e00\u4e2a <code>acl</code> \u6307\u4ee4\uff0c\u53ef\u4ee5\u5229\u7528\u89d2\u8272\u6216\u6743\u9650\u70b9\u5bf9\u67d0\u4e2a\u6309\u94ae\u3001\u8868\u683c\u3001\u5217\u8868\u7b49\u5143\u7d20\u8fdb\u884c\u6743\u9650\u63a7\u5236\u3002</p><h2 id="\u539f\u7406">\u539f\u7406<a onclick="window.location.hash = \'\u539f\u7406\'" class="anchor">#</a></h2><p><code>[acl]</code> \u9ed8\u8ba4\u4f1a\u5728\u76ee\u6807\u5143\u7d20\u4e0a\u589e\u52a0\u4e00\u4e2a <code>acl__hide</code> \u6837\u5f0f\uff0c\u5229\u7528 <code>display: none</code> \u6765\u9690\u85cf\u672a\u6388\u6743\u5143\u7d20\uff0c\u5b83\u662f\u4e00\u4e2a\u7b80\u5355\u3001\u53c8\u9ad8\u6548\u7684\u65b9\u5f0f\u3002</p><p>\u4ee5\u6b64\u76f8\u5bf9\u5e94\u7684 <code>*aclIf</code> \u662f\u4e00\u4e2a\u7ed3\u6784\u578b\u6307\u4ee4\uff0c\u5b83\u7c7b\u4f3c <code>ngIf</code> \u5728\u672a\u6388\u6743\u65f6\u4f1a\u4e0d\u6e32\u67d3\u8be5\u5143\u7d20\u3002<strong>\u6ce8\uff1a</strong> \u4e3a\u4e86\u4fdd\u6301\u7b80\u6d01\u5b83\u5e76\u4e0d\u652f\u6301 <code>acl-ability</code> \u6743\u9650\u70b9\u914d\u7f6e\u3002</p><h2 id="\u793a\u4f8b">\u793a\u4f8b<a onclick="window.location.hash = \'\u793a\u4f8b\'" class="anchor">#</a></h2><h3 id="\u89d2\u8272">\u89d2\u8272<a onclick="window.location.hash = \'\u89d2\u8272\'" class="anchor">#</a></h3><p>\u6309\u94ae\u5fc5\u987b\u62e5\u6709 user \u89d2\u8272\u663e\u793a\u3002</p><pre class="hljs language-html"><code><button [acl]="\'user\'"></button>\n<button *aclIf="\'user\'"></button></code></pre><p>\u6309\u94ae\u5fc5\u987b\u62e5\u6709 user \u6216 manage \u89d2\u8272\u663e\u793a\u3002</p><pre class="hljs language-html"><code><button [acl]="[\'user\', \'manage\']"></button>\n<button *aclIf="[\'user\', \'manage\']"></button></code></pre><p>\u6309\u94ae\u5fc5\u987b\u62e5\u6709 user \u548c manage \u89d2\u8272\u663e\u793a\u3002</p><pre class="hljs language-html"><code><button [acl]="{ role: [\'user\', \'manage\'], mode: \'allOf\' }"></button>\n<button *aclIf="{ role: [\'user\', \'manage\'], mode: \'allOf\' }"></button></code></pre><p>\u5f53\u62e5\u6709 user \u89d2\u8272\u663e\u793a\u6587\u672c\u6846\uff0c\u672a\u6388\u6743\u663e\u793a\u6587\u672c\u3002</p><pre class="hljs language-html"><code><input nz-input *aclIf="\'user\'; else unauthorized">\n<ng-template #unauthorized>{{user}}</ng-template></code></pre><p>\u4f7f\u7528 <code>except</code> \u53cd\u5411\u63a7\u5236\uff0c\u5f53\u672a\u62e5\u6709 user \u89d2\u8272\u65f6\u663e\u793a\u3002</p><pre class="hljs language-html"><code><ng-template [aclIf]="role" except>\n <input nz-input>\n</ng-template></code></pre><h3 id="\u6743\u9650\u70b9">\u6743\u9650\u70b9<a onclick="window.location.hash = \'\u6743\u9650\u70b9\'" class="anchor">#</a></h3><p>\u6309\u94ae\u5fc5\u987b\u62e5\u6709 10 \u6743\u9650\u70b9\u663e\u793a\u3002</p><pre class="hljs language-html"><code><button [acl]="10"></button></code></pre><p>acl \u6307\u4ee4\u4e3a\u4e86\u80fd\u6240\u4f20\u9012\u7684\u503c\u662f\u89d2\u8272\u8fd8\u662f\u6743\u9650\u70b9\uff0c\u6240\u4ee5\u4ee5 <code>string</code> \u7c7b\u578b\u8868\u793a\u89d2\u8272\u3001<code>number</code> \u7c7b\u578b\u8868\u793a\u6743\u9650\u70b9\uff0c\u82e5\u6743\u9650\u70b9\u4e3a\u5b57\u7b26\u4e32\uff0c\u53ef\u4f7f\u7528\u4ee5\u4e0b\u5199\u6cd5\u3002</p><pre class="hljs language-html"><code><button acl [acl-ability]="\'USER-EDIT\'"></button></code></pre><p>\u4f7f\u7528 <code>mode: \'allOf\'</code> \u8868\u793a\u5fc5\u987b\u540c\u65f6\u62e5\u6709\u3002</p><ul><li><p><code>oneOf</code> \u8868\u793a\u53ea\u987b\u6ee1\u8db3\u89d2\u8272\u6216\u6743\u9650\u70b9\u6570\u7ec4\u4e2d\u7684\u4e00\u9879\u7b97\u6709\u6548\uff08\u9ed8\u8ba4\uff09</p></li><li><p><code>allOf</code> \u8868\u793a\u5fc5\u987b\u6ee1\u8db3\u6240\u6709\u89d2\u8272\u6216\u6743\u9650\u70b9\u6570\u7ec4\u7b97\u6709\u6548</p></li></ul><p>\u6309\u94ae\u5fc5\u987b\u62e5\u6709 <code>10</code> \u548c <code>USER-EDIT</code> \u6743\u9650\u70b9\u65f6\u663e\u793a\u3002</p><pre class="hljs language-html"><code><button [acl]="{ ability: [10, \'USER-EDIT\'], mode: \'allOf\' }"></button></code></pre><p><strong>\u5b57\u7b26\u4e32\u578b\u6743\u9650\u70b9</strong></p><p>\u68c0\u67e5\u6743\u9650\u662f\u901a\u8fc7 <code>can</code> \u65b9\u6cd5\uff0c<code>DelonACLConfig</code> \u5305\u542b <code>preCan</code> \u65b9\u6cd5\uff0c\u53ef\u4ee5\u5229\u7528\u8be5\u65b9\u6cd5\u6765\u5b9e\u73b0\u4e00\u4e2a\u5b57\u7b26\u4e32\u533a\u5206\u89d2\u8272\u6216\u6743\u9650\u70b9\u3002</p><pre class="hljs language-ts"><code>export function fnDelonACLConfig(): DelonACLConfig {\n return {\n ...new DelonACLConfig(),\n ...{\n preCan: (roleOrAbility: ACLCanType) => {\n const str = roleOrAbility.toString();\n return str.startsWith(\'ability.\') ? { ability: [ str ] } : null;\n }\n } as DelonACLConfig\n };\n}</code></pre><p>\u56e0\u6b64\uff0c\u5f53\u4f20\u9012\u4e00\u4e2a\u5e26\u6709 <code>ability.</code> \u5f00\u5934\u7684\u5b57\u7b26\u4e32\u4f1a\u88ab\u8ba4\u4e3a\u8fd9\u662f\u4e00\u4e2a\u6743\u9650\u70b9\uff0c\u4f8b\u5982\uff1a</p><pre class="hljs language-html"><code><button acl="ability.user.edit"></button></code></pre></section>',api:'<h2 id="API">API<a onclick="window.location.hash = \'API\'" class="anchor">#</a></h2><h3 id="*aclIf">*aclIf<a onclick="window.location.hash = \'*aclIf\'" class="anchor">#</a></h3><table><thead><tr><th>\u53c2\u6570</th><th>\u8bf4\u660e</th><th>\u7c7b\u578b</th><th>\u9ed8\u8ba4\u503c</th></tr></thead><tbody><tr><td><code>[aclIf]</code></td><td><code>can</code> \u65b9\u6cd5\u53c2\u6570\u4f53</td><td><code>ACLCanType</code></td><td>-</td></tr><tr><td><code>[aclIfThen]</code></td><td>\u5df2\u6388\u6743\u65f6\u663e\u793a\u6a21\u677f</td><td><code>TemplateRef<void> | null</code></td><td>-</td></tr><tr><td><code>[aclIfElse]</code></td><td>\u672a\u6388\u6743\u65f6\u663e\u793a\u6a21\u677f</td><td><code>TemplateRef<void> | null</code></td><td>-</td></tr><tr><td><code>[except]</code></td><td>\u672a\u6388\u6743\u65f6\u663e\u793a</td><td><code>boolean</code></td><td><code>false</code></td></tr></tbody></table>',meta:{order:3,title:"\u7c92\u5ea6\u63a7\u5236",type:"Documents"},toc:[{id:"\u5199\u5728\u524d\u9762",title:"\u5199\u5728\u524d\u9762",h:2},{id:"\u539f\u7406",title:"\u539f\u7406",h:2},{id:"\u793a\u4f8b",title:"\u793a\u4f8b",h:2},{id:"\u89d2\u8272",title:"\u89d2\u8272",h:3},{id:"\u6743\u9650\u70b9",title:"\u6743\u9650\u70b9",h:3},{id:"API",title:"API",h:2},{id:"*aclIf",title:"*aclIf",h:3}]}},demo:!1},this.codes=[]}}class c{constructor(){this.item={cols:1,urls:{"en-US":"packages/acl/docs/getting-started.en-US.md","zh-CN":"packages/acl/docs/getting-started.zh-CN.md"},content:{"en-US":{content:'<section class="markdown"><p>ACL (Access Control List) is a very simple role-based permission control method, you can use in any Angular projects, a online <a target="_blank" href="//ng-alain.github.io/ng-alain/#/logics/acl" data-url="//ng-alain.github.io/ng-alain/#/logics/acl">DEMO</a></p><h2 id="About-ACLService">About ACLService<a onclick="window.location.hash = \'About-ACLService\'" class="anchor">#</a></h2><p>The <code>ACLService</code> service class contains a set of methods based on role permissions. For a better coding experience ng-alain has multiple components or modules that depend on it, such as <code>st</code>, <code>MenuService</code> etc.. So, when you encounter the <code>acl</code> attribute, it means the parameter value of the <a href="#ACLCanType" data-url="#ACLCanType">can</a> method.</p><h2 id="Usage">Usage<a onclick="window.location.hash = \'Usage\'" class="anchor">#</a></h2><p>Install <code>@delon/acl</code>:</p><pre class="hljs language-bash"><code>yarn add @delon/acl</code></pre><p>Import <code>DelonACLModule</code> module:</p><pre class="hljs language-typescript"><code>import { DelonACLModule } from \'@delon/acl\';\n\n@NgModule({\n imports: [\n DelonACLModule.forRoot()\n ]\n})\nexport class AppModule { }</code></pre></section>',api:'<h2 id="API">API<a onclick="window.location.hash = \'API\'" class="anchor">#</a></h2><h3 id="DelonACLConfig">DelonACLConfig<a onclick="window.location.hash = \'DelonACLConfig\'" class="anchor">#</a></h3><table><thead><tr><th>Name</th><th>Type</th><th>Summary</th><th>Default</th></tr></thead><tbody><tr><td><code>[guard_url]</code></td><td><code>string</code></td><td>Router URL when guard fail</td><td><code>/403</code></td></tr><tr><td><code>[preCan]</code></td><td><code>(roleOrAbility: <a data-toc="ACLCanType">ACLCanType</a>) => <a data-toc="ACLType">ACLType</a></code></td><td><code>can</code> before execution callback</td><td>-</td></tr></tbody></table><h3 id="ACLService">ACLService<a onclick="window.location.hash = \'ACLService\'" class="anchor">#</a></h3><table><thead><tr><th>Name</th><th>Description</th></tr></thead><tbody><tr><td><code>[change]</code></td><td>Listen for ACL change notifications</td></tr><tr><td><code>[data]</code></td><td>Get all ACL data</td></tr><tr><td><code>setFull(val: boolean)</code></td><td>Whether to super administrator</td></tr><tr><td><code>set(value: <a data-toc="ACLType">ACLType</a>)</code></td><td>Set current user role or permission (automatic override)</td></tr><tr><td><code>setRole(roles: string[])</code></td><td>Set current user role (automatic override)</td></tr><tr><td><code>setAbility(abilities: (number | string)[])</code></td><td>Set current user permission (automatic override)</td></tr><tr><td><code>add(value: <a data-toc="ACLType">ACLType</a>)</code></td><td>Add role or permission to the current user</td></tr><tr><td><code>attachRole(roles: string[])</code></td><td>Attach a role to the current user</td></tr><tr><td><code>attachAbility(abilities: (number | string)[])</code></td><td>Attach a permission to the current user</td></tr><tr><td><code>removeRole(roles: string[])</code></td><td>Remove the role for the current user</td></tr><tr><td><code>removeAbility(abilities: (number | string)[])</code></td><td>Remove the permission for the current user</td></tr><tr><td><code>can(roleOrAbility: <a data-toc="ACLCanType">ACLCanType</a>)</code></td><td>Whether the current user has a role</td></tr><tr><td><code>canAbility(ability: <a data-toc="ACLCanType">ACLCanType</a>)</code></td><td>Whether the current user has a permission</td></tr></tbody></table><h3 id="ACLCanType">ACLCanType<a onclick="window.location.hash = \'ACLCanType\'" class="anchor">#</a></h3><pre class="hljs language-ts"><code>type ACLCanType = number | number[] | string | string[] | ACLType</code></pre><h3 id="ACLType">ACLType<a onclick="window.location.hash = \'ACLType\'" class="anchor">#</a></h3><table><thead><tr><th>Name</th><th>Type</th><th>Summary</th><th>Default</th></tr></thead><tbody><tr><td><code>[role]</code></td><td><code>string[]</code></td><td>List of role</td><td>-</td></tr><tr><td><code>[ability]</code></td><td><code>number[], string[]</code></td><td>List of permission</td><td>-</td></tr><tr><td><code>[mode]</code></td><td><code>allOf, oneOf</code></td><td><code>allOf</code> Must be valid against all of the given permission.<br><code>oneOf</code> Must be valid against exactly one of the given permission.</td><td><code>oneOf</code></td></tr><tr><td><code>[except]</code></td><td><code>boolean</code></td><td>Whether it\'s except, when the result is <code>true</code>, it means unauthorized</td><td><code>false</code></td></tr></tbody></table>',meta:{order:1,title:"Getting Started",type:"Documents",module:"DelonACLModule",config:"DelonACLConfig"},toc:[{id:"About-ACLService",title:"About ACLService",h:2},{id:"Usage",title:"Usage",h:2},{id:"API",title:"API",h:2},{id:"DelonACLConfig",title:"DelonACLConfig",h:3},{id:"ACLService",title:"ACLService",h:3},{id:"ACLCanType",title:"ACLCanType",h:3},{id:"ACLType",title:"ACLType",h:3}]},"zh-CN":{content:'<section class="markdown"><p>ACL \u5168\u79f0\u53eb\u8bbf\u95ee\u63a7\u5236\u5217\u8868\uff08Access Control List\uff09\uff0c\u662f\u4e00\u79cd\u975e\u5e38\u7b80\u5355\u7684\u57fa\u4e8e\u89d2\u8272\u6743\u9650\u63a7\u5236\u65b9\u5f0f\u3002\u4e00\u4e2a\u5b8c\u5168\u72ec\u7acb <code>@delon/acl</code> \u6a21\u5757\uff08<a target="_blank" href="//ng-alain.github.io/ng-alain/#/logics/acl" data-url="//ng-alain.github.io/ng-alain/#/logics/acl">DEMO</a>\uff09\u3002</p><h2 id="\u5982\u4f55\u8fd0\u884c">\u5982\u4f55\u8fd0\u884c<a onclick="window.location.hash = \'\u5982\u4f55\u8fd0\u884c\'" class="anchor">#</a></h2><p>\u5185\u90e8\u5b9e\u9645\u662f\u4e00\u4e2a <code>ACLService</code> \u5b83\u63d0\u4f9b\u4e00\u5957\u57fa\u4e8e\u89d2\u8272\u6743\u9650\u670d\u52a1\u7c7b\u3002\u4e3a\u4e86\u66f4\u597d\u7684\u7f16\u7801\u4f53\u9a8c ng-alain \u6709\u591a\u5904\u7ec4\u4ef6\u6216\u6a21\u5757\u4e5f\u4f9d\u8d56\u4e8e\u5b83\uff0c\u4f8b\u5982\uff1a<code>st</code>\u3001<code>MenuService</code> \u7b49\uff0c\u5e76\u4e14\u8fd9\u4e9b\u4f1a\u4ee5 <code>acl</code> \u5c5e\u6027\u7684\u5f62\u5f0f\u8868\u73b0\u3002\u56e0\u6b64\uff0c\u5f53\u9047\u5230 <code>acl</code> \u5c5e\u6027\u90fd\u8868\u793a <a href="#ACLCanType" data-url="#ACLCanType">can</a> \u65b9\u6cd5\u7684<strong>\u53c2\u6570\u503c</strong>\u3002</p><h2 id="\u5982\u4f55\u4f7f\u7528">\u5982\u4f55\u4f7f\u7528<a onclick="window.location.hash = \'\u5982\u4f55\u4f7f\u7528\'" class="anchor">#</a></h2><p>\u5b89\u88c5 <code>@delon/acl</code> \u4f9d\u8d56\u5305\uff1a</p><pre class="hljs language-bash"><code>yarn add @delon/acl</code></pre><p>\u5bfc\u5165 <code>DelonACLModule</code> \u6a21\u5757\uff1a</p><pre class="hljs language-typescript"><code>import { DelonACLModule } from \'@delon/acl\';\n\n@NgModule({\n imports: [\n DelonACLModule.forRoot()\n ]\n})\nexport class AppModule { }</code></pre></section>',api:'<h2 id="API">API<a onclick="window.location.hash = \'API\'" class="anchor">#</a></h2><h3 id="DelonACLConfig">DelonACLConfig<a onclick="window.location.hash = \'DelonACLConfig\'" class="anchor">#</a></h3><table><thead><tr><th>\u5c5e\u6027</th><th>\u7c7b\u578b</th><th>\u8bf4\u660e</th><th>\u9ed8\u8ba4</th></tr></thead><tbody><tr><td><code>[guard_url]</code></td><td><code>string</code></td><td>\u8def\u7531\u5b88\u536b\u5931\u8d25\u540e\u8df3\u8f6c</td><td><code>/403</code></td></tr><tr><td><code>[preCan]</code></td><td><code>(roleOrAbility: <a data-toc="ACLCanType">ACLCanType</a>) => <a data-toc="ACLType">ACLType</a></code></td><td><code>can</code> \u6267\u884c\u524d\u56de\u8c03</td><td>-</td></tr></tbody></table><h3 id="ACLService">ACLService<a onclick="window.location.hash = \'ACLService\'" class="anchor">#</a></h3><table><thead><tr><th>\u65b9\u6cd5</th><th>\u8bf4\u660e</th></tr></thead><tbody><tr><td><code>[change]</code></td><td>\u76d1\u542cACL\u53d8\u66f4\u901a\u77e5</td></tr><tr><td><code>[data]</code></td><td>\u83b7\u53d6\u6240\u6709ACL\u6570\u636e</td></tr><tr><td><code>setFull(val: boolean)</code></td><td>\u6807\u8bc6\u5f53\u524d\u7528\u6237\u4e3a\u5168\u91cf\uff0c\u5373\u4e0d\u53d7\u9650</td></tr><tr><td><code>set(value: <a data-toc="ACLType">ACLType</a>)</code></td><td>\u8bbe\u7f6e\u5f53\u524d\u7528\u6237\u89d2\u8272\u6216\u6743\u9650\u80fd\u529b\uff08\u4f1a\u5148\u6e05\u9664\u6240\u6709\uff09</td></tr><tr><td><code>setRole(roles: string[])</code></td><td>\u8bbe\u7f6e\u5f53\u524d\u7528\u6237\u89d2\u8272\uff08\u4f1a\u5148\u6e05\u9664\u6240\u6709\uff09</td></tr><tr><td><code>setAbility(abilities: (number | string)[])</code></td><td>\u8bbe\u7f6e\u5f53\u524d\u7528\u6237\u6743\u9650\u80fd\u529b\uff08\u4f1a\u5148\u6e05\u9664\u6240\u6709\uff09</td></tr><tr><td><code>add(value: <a data-toc="ACLType">ACLType</a>)</code></td><td>\u4e3a\u5f53\u524d\u7528\u6237\u589e\u52a0\u89d2\u8272\u6216\u6743\u9650\u80fd\u529b</td></tr><tr><td><code>attachRole(roles: string[])</code></td><td>\u4e3a\u5f53\u524d\u7528\u6237\u9644\u52a0\u89d2\u8272</td></tr><tr><td><code>attachAbility(abilities: (number | string)[])</code></td><td>\u4e3a\u5f53\u524d\u7528\u6237\u9644\u52a0\u6743\u9650</td></tr><tr><td><code>removeRole(roles: string[])</code></td><td>\u4e3a\u5f53\u524d\u7528\u6237\u79fb\u9664\u89d2\u8272</td></tr><tr><td><code>removeAbility(abilities: (number | string)[])</code></td><td>\u4e3a\u5f53\u524d\u7528\u6237\u79fb\u9664\u6743\u9650</td></tr><tr><td><code>can(roleOrAbility: <a data-toc="ACLCanType">ACLCanType</a>)</code></td><td>\u5f53\u524d\u7528\u6237\u662f\u5426\u6709\u5bf9\u5e94\u89d2\u8272</td></tr><tr><td><code>canAbility(ability: <a data-toc="ACLCanType">ACLCanType</a>)</code></td><td>\u5f53\u524d\u7528\u6237\u662f\u5426\u6709\u5bf9\u5e94\u6743\u9650\u70b9</td></tr></tbody></table><h3 id="ACLCanType">ACLCanType<a onclick="window.location.hash = \'ACLCanType\'" class="anchor">#</a></h3><pre class="hljs language-ts"><code>type ACLCanType = number | number[] | string | string[] | ACLType</code></pre><h3 id="ACLType">ACLType<a onclick="window.location.hash = \'ACLType\'" class="anchor">#</a></h3><table><thead><tr><th>\u5c5e\u6027</th><th>\u7c7b\u578b</th><th>\u8bf4\u660e</th><th>\u9ed8\u8ba4</th></tr></thead><tbody><tr><td><code>[role]</code></td><td><code>string[]</code></td><td>\u89d2\u8272</td><td>-</td></tr><tr><td><code>[ability]</code></td><td><code>number[], string[]</code></td><td>\u6743\u9650\u70b9</td><td>-</td></tr><tr><td><code>[mode]</code></td><td><code>allOf, oneOf</code></td><td><code>allOf</code> \u8868\u793a\u5fc5\u987b\u6ee1\u8db3\u6240\u6709\u89d2\u8272\u6216\u6743\u9650\u70b9\u6570\u7ec4\u7b97\u6709\u6548<br><code>oneOf</code> \u8868\u793a\u53ea\u987b\u6ee1\u8db3\u89d2\u8272\u6216\u6743\u9650\u70b9\u6570\u7ec4\u4e2d\u7684\u4e00\u9879\u7b97\u6709\u6548</td><td><code>oneOf</code></td></tr><tr><td><code>[except]</code></td><td><code>boolean</code></td><td>\u662f\u5426\u53d6\u53cd\uff0c\u5373\u7ed3\u679c\u4e3a <code>true</code> \u65f6\u8868\u793a\u672a\u6388\u6743</td><td><code>false</code></td></tr></tbody></table>',meta:{order:1,title:"\u5f00\u59cb\u4f7f\u7528",type:"Documents",module:"DelonACLModule",config:"DelonACLConfig"},toc:[{id:"\u5982\u4f55\u8fd0\u884c",title:"\u5982\u4f55\u8fd0\u884c",h:2},{id:"\u5982\u4f55\u4f7f\u7528",title:"\u5982\u4f55\u4f7f\u7528",h:2},{id:"API",title:"API",h:2},{id:"DelonACLConfig",title:"DelonACLConfig",h:3},{id:"ACLService",title:"ACLService",h:3},{id:"ACLCanType",title:"ACLCanType",h:3},{id:"ACLType",title:"ACLType",h:3}]}},demo:!1},this.codes=[]}}class l{constructor(){this.item={cols:1,urls:{"en-US":"packages/acl/docs/guard.en-US.md","zh-CN":"packages/acl/docs/guard.zh-CN.md"},content:{"en-US":{content:"<section class=\"markdown\"><article><h2 id=\"Foreword\">Foreword<a onclick=\"window.location.hash = 'Foreword'\" class=\"anchor\">#</a></h2><p>Routing guard prevent unauthorized users visit the page.</p><p><code>@delon/acl</code> implements the generic guard class <code>ACLGuard</code>, which allows for complex operations through simple configuration in route registration, and supports the <code>Observable</code> type.</p><p>Use the fixed attribute <code>guard</code> to specify the <code>ACLCanType</code> parameter value, for example:</p><pre class=\"hljs language-ts\"><code>const routes: Routes = [\n {\n path: 'auth',\n canActivate: [ ACLGuard ],\n data: { guard: 'user1' }\n },\n {\n path: 'auth',\n canActivate: [ ACLGuard ],\n data: {\n guard: <ACLType>{\n role: [ 'user1' ],\n ability: [ 10, 'USER-EDIT' ],\n mode: 'allOf'\n },\n guard_url: '/no-permisseion'\n }\n },\n]</code></pre><blockquote><p>The value of <code>guard</code> must match the value of <a href=\"/acl/api#ACLCanType\" data-url=\"/acl/api#ACLCanType\">ACLCanType</a>.</p></blockquote><h2 id=\"DEMO\">DEMO<a onclick=\"window.location.hash = 'DEMO'\" class=\"anchor\">#</a></h2><pre class=\"hljs language-ts\"><code>import { of } from 'rxjs';\nimport { ACLGuard } from '@delon/acl';\nconst routes: Routes = [\n {\n path: 'guard',\n component: GuardComponent,\n children: [\n { path: 'auth', component: GuardAuthComponent, canActivate: [ ACLGuard ], data: { guard: 'user1' } },\n { path: 'admin', component: GuardAdminComponent, canActivate: [ ACLGuard ], data: { guard: 'admin' } }\n ],\n canActivateChild: [ ACLGuard ],\n data: { guard: <ACLType>{ role: [ 'user1' ], ability: [ 10, 'USER-EDIT' ], mode: 'allOf' } }\n },\n { path: 'pro', loadChildren: './pro/pro.module#ProModule', canLoad: [ ACLGuard ], data: { guard: 1 } },\n { path: 'pro', loadChildren: './pro/pro.module#ProModule', canLoad: [ ACLGuard ], data: { guard: of(false).pipe(map(v => 'admin')) } }\n];</code></pre></article></section>",meta:{order:3,title:"Guard",type:"Documents"},toc:[{id:"Foreword",title:"Foreword",h:2},{id:"DEMO",title:"DEMO",h:2}]},"zh-CN":{content:"<section class=\"markdown\"><article><h2 id=\"\u5199\u5728\u524d\u9762\">\u5199\u5728\u524d\u9762<a onclick=\"window.location.hash = '\u5199\u5728\u524d\u9762'\" class=\"anchor\">#</a></h2><p>\u8def\u7531\u5b88\u536b\u53ef\u4ee5\u9632\u6b62\u672a\u6388\u6743\u7528\u6237\u8bbf\u95ee\u9875\u9762\u3002</p><p>\u8def\u7531\u5b88\u536b\u9700\u8981\u5355\u72ec\u5bf9\u6bcf\u4e00\u4e2a\u8def\u7531\u8fdb\u884c\u8bbe\u7f6e\uff0c\u5f88\u591a\u65f6\u5019\u8fd9\u770b\u8d77\u6765\u5f88\u7e41\u7410\uff0c<code>@delon/acl</code> \u5b9e\u73b0\u4e86\u901a\u7528\u5b88\u536b\u7c7b <code>ACLGuard</code>\uff0c\u53ef\u4ee5\u5728\u8def\u7531\u6ce8\u518c\u65f6\u900f\u8fc7\u7b80\u5355\u7684\u914d\u7f6e\u5b8c\u6210\u4e00\u4e9b\u590d\u6742\u7684\u64cd\u4f5c\uff0c\u751a\u81f3\u652f\u6301 <code>Observable</code> \u7c7b\u578b\u3002</p><p>\u4f7f\u7528\u56fa\u5b9a\u5c5e\u6027 <code>guard</code> \u6765\u6307\u5b9a <code>ACLCanType</code> \u53c2\u6570\uff0c\u4f8b\u5982\uff1a</p><pre class=\"hljs language-ts\"><code>const routes: Routes = [\n {\n path: 'auth',\n canActivate: [ ACLGuard ],\n data: { guard: 'user1' }\n },\n {\n path: 'auth',\n canActivate: [ ACLGuard ],\n data: {\n guard: <ACLType>{\n role: [ 'user1' ],\n ability: [ 10, 'USER-EDIT' ],\n mode: 'allOf'\n },\n guard_url: '/no-permisseion'\n }\n },\n]</code></pre><blockquote><p><code>guard</code> \u7684\u503c\u5fc5\u987b\u7b26\u5408 <a href=\"/acl/getting-started#ACLCanType\" data-url=\"/acl/getting-started#ACLCanType\">ACLCanType</a> \u7c7b\u578b\u503c\u3002</p></blockquote><h2 id=\"\u793a\u4f8b\">\u793a\u4f8b<a onclick=\"window.location.hash = '\u793a\u4f8b'\" class=\"anchor\">#</a></h2><pre class=\"hljs language-ts\"><code>import { of } from 'rxjs';\nimport { ACLGuard } from '@delon/acl';\nconst routes: Routes = [\n {\n path: 'guard',\n component: GuardComponent,\n children: [\n // \u89d2\u8272\u9650\u5b9a\n { path: 'auth', component: GuardAuthComponent, canActivate: [ ACLGuard ], data: { guard: 'user1' } },\n { path: 'admin', component: GuardAdminComponent, canActivate: [ ACLGuard ], data: { guard: 'admin' } }\n ],\n // \u6240\u6709\u5b50\u8def\u7531\u6709\u6548\n canActivateChild: [ ACLGuard ],\n data: { guard: <ACLType>{ role: [ 'user1' ], ability: [ 10, 'USER-EDIT' ], mode: 'allOf' } }\n },\n // \u6743\u9650\u70b9\u9650\u5b9a\n { path: 'pro', loadChildren: './pro/pro.module#ProModule', canLoad: [ ACLGuard ], data: { guard: 1 } },\n // \u6216\u4f7f\u7528Observable\u5b9e\u73b0\u66f4\u590d\u6742\u7684\u884c\u4e3a\n { path: 'pro', loadChildren: './pro/pro.module#ProModule', canLoad: [ ACLGuard ], data: { guard: of(false).pipe(map(v => 'admin')) } }\n];</code></pre></article></section>",meta:{order:3,title:"\u8def\u7531\u5b88\u536b",type:"Documents"},toc:[{id:"\u5199\u5728\u524d\u9762",title:"\u5199\u5728\u524d\u9762",h:2},{id:"\u793a\u4f8b",title:"\u793a\u4f8b",h:2}]}},demo:!1},this.codes=[]}}class r{}var i=a("pMnS"),s=a("EdU/"),h=a("/Yna"),p=a("JRKe"),u=a("Ed4d"),b=a("8WaK"),g=a("QfCi"),m=a("CghO"),C=a("Sq/J"),G=a("GYi0"),A=a("EXx9"),y=a("R6D3"),f=a("WP5L"),L=a("71F0"),w=a("fE+l"),T=a("0RMT"),v=a("QcbP"),D=a("0D9X"),S=a("SpJI"),I=a("hBP+"),k=a("QPFe"),O=a("RdGh"),z=a("D9vs"),M=a("DyZ0"),P=a("TY3c"),R=a("u+Cy"),j=a("8+8K"),E=a("YVZs"),x=a("F/j7"),U=a("/EOF"),F=a("ZKYL"),N=a("SZk1"),Y=a("5eO6"),q=a("9BMt"),Q=a("kRch"),J=a("QkPN"),W=a("vBNu"),B=a("Z7t+"),V=a("II6v"),Z=a("MRB6"),_=a("uU7u"),H=a("iInd"),X=a("cUpR"),K=o.ub({encapsulation:0,styles:["[_nghost-%COMP%] { display: block }"],data:{}});function $(t){return o.Sb(0,[(t()(),o.wb(0,0,null,null,1,"app-docs",[],null,null,null,B.b,B.a)),o.vb(1,245760,null,0,V.a,[Z.a,_.a,H.p,X.b],{codes:[0,"codes"],item:[1,"item"]},null)],(function(t,e){var a=e.component;t(e,1,0,a.codes,a.item)}),null)}function tt(t){return o.Sb(0,[(t()(),o.wb(0,0,null,null,1,"app-acl-control",[],null,null,null,$,K)),o.vb(1,49152,null,0,n,[],null,null)],null,null)}var et=o.sb("app-acl-control",n,tt,{},{},[]),at=o.ub({encapsulation:0,styles:["[_nghost-%COMP%] { display: block }"],data:{}});function ot(t){return o.Sb(0,[(t()(),o.wb(0,0,null,null,1,"app-docs",[],null,null,null,B.b,B.a)),o.vb(1,245760,null,0,V.a,[Z.a,_.a,H.p,X.b],{codes:[0,"codes"],item:[1,"item"]},null)],(function(t,e){var a=e.component;t(e,1,0,a.codes,a.item)}),null)}function dt(t){return o.Sb(0,[(t()(),o.wb(0,0,null,null,1,"app-acl-getting-started",[],null,null,null,ot,at)),o.vb(1,49152,null,0,c,[],null,null)],null,null)}var nt=o.sb("app-acl-getting-started",c,dt,{},{},[]),ct=o.ub({encapsulation:0,styles:["[_nghost-%COMP%] { display: block }"],data:{}});function lt(t){return o.Sb(0,[(t()(),o.wb(0,0,null,null,1,"app-docs",[],null,null,null,B.b,B.a)),o.vb(1,245760,null,0,V.a,[Z.a,_.a,H.p,X.b],{codes:[0,"codes"],item:[1,"item"]},null)],(function(t,e){var a=e.component;t(e,1,0,a.codes,a.item)}),null)}function rt(t){return o.Sb(0,[(t()(),o.wb(0,0,null,null,1,"app-acl-guard",[],null,null,null,lt,ct)),o.vb(1,49152,null,0,l,[],null,null)],null,null)}var it=o.sb("app-acl-guard",l,rt,{},{},[]),st=a("SVse"),ht=a("s7LF"),pt=a("5VGP"),ut=a("QQfA"),bt=a("IP0z"),gt=a("POq0"),mt=a("sAdM"),Ct=a("ekcc"),Gt=a("pQl/"),At=a("g+Fz"),yt=a("Ybye"),ft=a("NFMk"),Lt=a("10Ig"),wt=a("iC8E"),Tt=a("/HVE"),vt=a("v1Dh"),Dt=a("66zS"),St=a("5Izy"),It=a("yTpB"),kt=a("zMNK"),Ot=a("hOhj"),zt=a("r19J"),Mt=a("anqq"),Pt=a("IYs4"),Rt=a("EcpC"),jt=a("GaVp"),Et=a("/L1H"),xt=a("phDe"),Ut=a("rJp6"),Ft=a("Rgb0"),Nt=a("kS4m"),Yt=a("mW00"),qt=a("jTf7"),Qt=a("WPSl"),Jt=a("YdS3"),Wt=a("wQFA"),Bt=a("px0D"),Vt=a("3ZFI"),Zt=a("CYS+"),_t=a("oBm0"),Ht=a("A7zk"),Xt=a("YRt3"),Kt=a("lAiz"),$t=a("ce6n"),te=a("SBNi"),ee=a("7QIX"),ae=a("tYkK"),oe=a("wf2+"),de=a("eCGT"),ne=a("nHXS"),ce=a("fb/r"),le=a("zTFG"),re=a("JK0T"),ie=a("JXeA"),se=a("0CZq"),he=a("qU0y"),pe=a("vZsH"),ue=a("W4B1"),be=a("SHEi"),ge=a("FPpa"),me=a("RVNi"),Ce=a("NDed"),Ge=a("5A4h"),Ae=a("N2O2"),ye=a("ozKM"),fe=a("OvZZ"),Le=a("z+yo"),we=a("DQmg"),Te=a("haRT"),ve=a("1+nf"),De=a("XFzh"),Se=a("p+Sl"),Ie=a("HhpN"),ke=a("SN7N"),Oe=a("fwnu"),ze=a("VbP7"),Me=a("gaRz"),Pe=a("e15G"),Re=a("+YBk"),je=a("9J0+"),Ee=a("vIiB"),xe=a("CGSU"),Ue=a("5CFV"),Fe=a("GTZx"),Ne=a("hS58"),Ye=a("+ndR"),qe=a("EWQH"),Qe=a("aq9g"),Je=a("7Dpl"),We=a("ekmu"),Be=a("vjj7"),Ve=a("l/Xz"),Ze=a("sRo1"),_e=a("BQzg"),He=a("YQXl"),Xe=a("dZIx"),Ke=a("9bzR"),$e=a("WNQ9"),ta=a("5Oon"),ea=a("lM9c"),aa=a("OSVY"),oa=a("MNSj"),da=a("MZBU"),na=a("ev4S"),ca=a("G1y0"),la=a("5sGc"),ra=a("4/RT"),ia=a("Q1qs"),sa=a("k5cy"),ha=a("ceoF"),pa=a("gQlp"),ua=a("XYAa"),ba=a("vrge"),ga=a("nMAq"),ma=a("5PV9"),Ca=a("nIn3"),Ga=a("xo13"),Aa=a("CnVV"),ya=a("5p8d"),fa=a("qYUw"),La=a("JpOc"),wa=a("VRoF"),Ta=a("Uto7"),va=a("/p+U"),Da=a("ye40"),Sa=a("qcxY"),Ia=a("T+Em"),ka=a("ucmY"),Oa=a("sbFH"),za=a("76lH"),Ma=a("TSSN"),Pa=a("Fg/6"),Ra=a("kzz5"),ja=a("SqF5"),Ea=a("Wl7g"),xa=a("+TYD"),Ua=a("PCNd");a.d(e,"AclModuleNgFactory",(function(){return Fa}));var Fa=o.tb(r,[],(function(t){return o.Fb([o.Gb(512,o.j,o.db,[[8,[i.a,s.a,s.b,h.a,p.a,u.a,b.a,g.a,m.a,C.a,G.a,A.a,y.a,f.a,L.a,w.a,T.a,v.a,D.a,S.a,I.a,k.a,O.a,z.a,M.a,P.a,R.a,j.a,E.a,x.a,U.a,F.a,N.a,Y.a,q.a,Q.a,J.a,W.a,et,nt,it]],[3,o.j],o.w]),o.Gb(4608,st.p,st.o,[o.t,[2,st.K]]),o.Gb(4608,ht.x,ht.x,[]),o.Gb(4608,ht.e,ht.e,[]),o.Gb(5120,pt.z,pt.M,[st.e,[3,pt.z]]),o.Gb(4608,ut.d,ut.d,[ut.k,ut.f,o.j,ut.i,ut.g,o.q,o.y,st.e,bt.b,[2,st.j]]),o.Gb(5120,ut.l,ut.m,[ut.d]),o.Gb(4608,gt.c,gt.c,[]),o.Gb(5120,mt.b,mt.a,[[3,mt.b],Ct.a]),o.Gb(4608,Gt.d,Gt.d,[o.y]),o.Gb(4608,At.d,At.d,[st.e]),o.Gb(4608,yt.a,yt.a,[ft.g]),o.Gb(4608,Lt.a,Lt.a,[wt.d]),o.Gb(1073742336,st.c,st.c,[]),o.Gb(1073742336,ht.w,ht.w,[]),o.Gb(1073742336,ht.j,ht.j,[]),o.Gb(1073742336,H.t,H.t,[[2,H.y],[2,H.p]]),o.Gb(1073742336,ht.t,ht.t,[]),o.Gb(1073742336,Tt.b,Tt.b,[]),o.Gb(1073742336,vt.b,vt.b,[]),o.Gb(1073742336,Dt.b,Dt.b,[]),o.Gb(1073742336,pt.j,pt.j,[]),o.Gb(1073742336,St.b,St.b,[]),o.Gb(1073742336,It.a,It.a,[]),o.Gb(1073742336,bt.a,bt.a,[]),o.Gb(1073742336,kt.e,kt.e,[]),o.Gb(1073742336,Ot.g,Ot.g,[]),o.Gb(1073742336,ut.h,ut.h,[]),o.Gb(1073742336,pt.w,pt.w,[]),o.Gb(1073742336,zt.b,zt.b,[]),o.Gb(1073742336,Mt.b,Mt.b,[]),o.Gb(1073742336,Pt.b,Pt.b,[]),o.Gb(1073742336,gt.d,gt.d,[]),o.Gb(1073742336,Rt.b,Rt.b,[]),o.Gb(1073742336,pt.J,pt.J,[]),o.Gb(1073742336,jt.c,jt.c,[]),o.Gb(1073742336,pt.x,pt.x,[]),o.Gb(1073742336,Et.e,Et.e,[]),o.Gb(1073742336,xt.i,xt.i,[]),o.Gb(1073742336,xt.a,xt.a,[]),o.Gb(1073742336,xt.f,xt.f,[]),o.Gb(1073742336,Ut.c,Ut.c,[]),o.Gb(1073742336,Ft.b,Ft.b,[]),o.Gb(1073742336,Nt.d,Nt.d,[]),o.Gb(1073742336,Yt.c,Yt.c,[]),o.Gb(1073742336,qt.h,qt.h,[]),o.Gb(1073742336,Qt.f,Qt.f,[]),o.Gb(1073742336,Jt.d,Jt.d,[]),o.Gb(1073742336,Wt.d,Wt.d,[]),o.Gb(1073742336,pt.s,pt.s,[]),o.Gb(1073742336,Bt.d,Bt.d,[]),o.Gb(1073742336,Vt.b,Vt.b,[]),o.Gb(1073742336,Zt.c,Zt.c,[]),o.Gb(1073742336,_t.a,_t.a,[]),o.Gb(1073742336,Ht.a,Ht.a,[]),o.Gb(1073742336,Xt.b,Xt.b,[]),o.Gb(1073742336,Kt.g,Kt.g,[]),o.Gb(1073742336,Kt.b,Kt.b,[]),o.Gb(1073742336,$t.a,$t.a,[]),o.Gb(1073742336,te.b,te.b,[]),o.Gb(1073742336,wt.e,wt.e,[]),o.Gb(1073742336,wt.b,wt.b,[]),o.Gb(1073742336,ee.b,ee.b,[]),o.Gb(1073742336,ae.b,ae.b,[]),o.Gb(1073742336,oe.g,oe.g,[]),o.Gb(1073742336,de.b,de.b,[]),o.Gb(1073742336,ne.a,ne.a,[]),o.Gb(1073742336,ce.b,ce.b,[]),o.Gb(1073742336,le.d,le.d,[]),o.Gb(1073742336,re.b,re.b,[]),o.Gb(1073742336,ie.h,ie.h,[]),o.Gb(1073742336,ie.f,ie.f,[]),o.Gb(1073742336,pt.y,pt.y,[]),o.Gb(1073742336,ft.h,ft.h,[]),o.Gb(1073742336,ft.d,ft.d,[]),o.Gb(1073742336,ft.e,ft.e,[]),o.Gb(1073742336,se.f,se.f,[]),o.Gb(1073742336,se.e,se.e,[]),o.Gb(1073742336,he.a,he.a,[]),o.Gb(1073742336,pe.b,pe.b,[]),o.Gb(1073742336,ue.b,ue.b,[]),o.Gb(1073742336,be.c,be.c,[]),o.Gb(1073742336,ge.c,ge.c,[]),o.Gb(1073742336,me.b,me.b,[]),o.Gb(1073742336,Ce.c,Ce.c,[]),o.Gb(1073742336,Ge.a,Ge.a,[]),o.Gb(1073742336,Ae.b,Ae.b,[]),o.Gb(1073742336,ye.d,ye.d,[]),o.Gb(1073742336,fe.a,fe.a,[]),o.Gb(1073742336,Le.c,Le.c,[]),o.Gb(1073742336,we.b,we.b,[]),o.Gb(1073742336,Te.b,Te.b,[]),o.Gb(1073742336,ve.f,ve.f,[]),o.Gb(1073742336,De.b,De.b,[]),o.Gb(1073742336,Se.a,Se.a,[]),o.Gb(1073742336,pt.D,pt.D,[]),o.Gb(1073742336,Ie.c,Ie.c,[]),o.Gb(1073742336,ke.b,ke.b,[]),o.Gb(1073742336,Oe.b,Oe.b,[]),o.Gb(1073742336,pt.o,pt.o,[]),o.Gb(1073742336,ze.a,ze.a,[]),o.Gb(1073742336,Me.d,Me.d,[]),o.Gb(1073742336,Pe.a,Pe.a,[]),o.Gb(1073742336,Re.a,Re.a,[]),o.Gb(1073742336,je.a,je.a,[Dt.c]),o.Gb(1073742336,Ee.a,Ee.a,[]),o.Gb(1073742336,xe.a,xe.a,[]),o.Gb(1073742336,Ue.a,Ue.a,[]),o.Gb(1073742336,Fe.a,Fe.a,[]),o.Gb(1073742336,Ne.a,Ne.a,[]),o.Gb(1073742336,Ye.a,Ye.a,[]),o.Gb(1073742336,qe.a,qe.a,[]),o.Gb(1073742336,Qe.a,Qe.a,[]),o.Gb(1073742336,Je.a,Je.a,[]),o.Gb(1073742336,We.a,We.a,[]),o.Gb(1073742336,Be.a,Be.a,[]),o.Gb(1073742336,Ve.a,Ve.a,[]),o.Gb(1073742336,Ze.a,Ze.a,[]),o.Gb(1073742336,_e.a,_e.a,[]),o.Gb(1073742336,Gt.c,Gt.c,[]),o.Gb(1073742336,He.a,He.a,[]),o.Gb(1073742336,Xe.a,Xe.a,[]),o.Gb(1073742336,Ke.a,Ke.a,[]),o.Gb(1073742336,$e.a,$e.a,[]),o.Gb(1073742336,ta.a,ta.a,[]),o.Gb(1073742336,ea.a,ea.a,[]),o.Gb(1073742336,aa.a,aa.a,[]),o.Gb(1073742336,oa.a,oa.a,[]),o.Gb(1073742336,da.a,da.a,[]),o.Gb(1073742336,na.a,na.a,[]),o.Gb(1073742336,ca.a,ca.a,[]),o.Gb(1073742336,la.a,la.a,[]),o.Gb(1073742336,ra.a,ra.a,[]),o.Gb(1073742336,ia.a,ia.a,[]),o.Gb(1073742336,sa.a,sa.a,[]),o.Gb(1073742336,ha.a,ha.a,[]),o.Gb(1073742336,pa.a,pa.a,[]),o.Gb(1073742336,ua.a,ua.a,[]),o.Gb(1073742336,ba.a,ba.a,[]),o.Gb(1073742336,ga.a,ga.a,[]),o.Gb(1073742336,ma.a,ma.a,[]),o.Gb(1073742336,Ca.a,Ca.a,[]),o.Gb(1073742336,Ga.a,Ga.a,[]),o.Gb(1073742336,Aa.a,Aa.a,[]),o.Gb(1073742336,ya.a,ya.a,[]),o.Gb(1073742336,fa.a,fa.a,[]),o.Gb(1073742336,La.a,La.a,[]),o.Gb(1073742336,wa.a,wa.a,[]),o.Gb(1073742336,Ta.a,Ta.a,[]),o.Gb(1073742336,va.a,va.a,[]),o.Gb(1073742336,Da.a,Da.a,[]),o.Gb(1073742336,Sa.a,Sa.a,[]),o.Gb(1073742336,Ia.a,Ia.a,[]),o.Gb(1073742336,ka.a,ka.a,[]),o.Gb(1073742336,Oa.a,Oa.a,[]),o.Gb(1073742336,za.a,za.a,[]),o.Gb(1073742336,Ma.h,Ma.h,[]),o.Gb(1073742336,Pa.b,Pa.b,[]),o.Gb(1073742336,Ra.a,Ra.a,[]),o.Gb(1073742336,At.c,At.c,[]),o.Gb(1073742336,ja.c,ja.c,[]),o.Gb(1073742336,Ea.d,Ea.d,[]),o.Gb(1073742336,Ea.h,Ea.h,[]),o.Gb(1073742336,Ea.b,Ea.b,[]),o.Gb(1073742336,Ea.j,Ea.j,[]),o.Gb(1073742336,Ea.l,Ea.l,[]),o.Gb(1073742336,Ea.p,Ea.p,[]),o.Gb(1073742336,Ea.t,Ea.t,[]),o.Gb(1073742336,xa.a,xa.a,[]),o.Gb(1073742336,Ua.a,Ua.a,[]),o.Gb(1073742336,r,r,[]),o.Gb(256,ie.b,{nzAnimate:!0,nzDuration:3e3,nzMaxStack:7,nzPauseOnHover:!0,nzTop:24},[]),o.Gb(256,se.b,{nzTop:"24px",nzBottom:"24px",nzPlacement:"topRight",nzDuration:4500,nzMaxStack:7,nzPauseOnHover:!0,nzAnimate:!0},[]),o.Gb(256,Ct.a,Re.b,[]),o.Gb(1024,H.n,(function(){return[[{path:"",component:d.a,children:[{path:"",redirectTo:"getting-started/zh",pathMatch:"full"},{path:"control",redirectTo:"control/zh",pathMatch:"full"},{path:"control/:lang",component:n},{path:"getting-started",redirectTo:"getting-started/zh",pathMatch:"full"},{path:"getting-started/:lang",component:c},{path:"guard",redirectTo:"guard/zh",pathMatch:"full"},{path:"guard/:lang",component:l}]}]]}),[])])}))}}]);