Deploying to gh-pages from @ LingASDJ/RW-API-Code #9
This commit is contained in:
parent
685364d00e
commit
e738d7f395
20
api-dev.html
20
api-dev.html
File diff suppressed because one or more lines are too long
|
@ -1,5 +1,5 @@
|
||||||
import{_ as e,K as p,o as c,c as r,k as s,a,O as n,w as o,X as t}from"./chunks/framework.d377e0cc.js";const Q=JSON.parse('{"title":"","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"api-dev.md","filePath":"api-dev.md"}'),i={name:"api-dev.md"},d=s("div",{style:{display:"flex","align-content":"flex-start","flex-wrap":"nowrap","flex-direction":"row","justify-content":"center"}},[s("h1",null,"RTS-Code-API---开发规范")],-1),u=s("div",{style:{display:"flex","align-content":"flex-start","flex-wrap":"nowrap","flex-direction":"row","justify-content":"center"}},[s("img",{src:"https://rust.coldmint.top/ftp/ling/cdnpng/logo.png"})],-1),h={class:"tip custom-block"},D=s("p",{class:"custom-block-title"},"TIP",-1),_=s("br",null,null,-1),y=s("br",null,null,-1),C=s("br",null,null,-1),b=s("blockquote",null,[s("p",null,[a("1.确保代码的解释通俗易懂,能让新手迅速入门"),s("br"),a("2.编写的代码应该以以下格式进行:")]),s("h3",null,"代码的格式编写规范:"),a("1.代码的英文名和附属信息(参考站点已添加的代码例子)"),s("br")],-1),A=s("p",null,[a("2.代码的简介"),s("br"),a(" 3.代码的要点指示"),s("br"),a(" 4.代码的演示例子"),s("br"),a(" 5.代码的扩展例子(可选)"),s("br"),a(" 6.GIF演示/视频演示(可选)")],-1),m={class:"tip custom-block"},F=s("p",{class:"custom-block-title"},"TIP",-1),g=s("br",null,null,-1),f={class:"warning custom-block"},k=s("p",{class:"custom-block-title"},"WARNING",-1),v=s("div",{class:"warning custom-block"},[s("p",{class:"custom-block-title"},"WARNING"),s("p",null,"有一些代码或许有一些新的写法,或该写法可能已经废弃,如果遇到这些代码,编写者需要注明,并提供推荐代码。")],-1),q={class:"info custom-block"},P=s("p",{class:"custom-block-title"},"INFO",-1),T=t(`<h4 id="其他说明" tabindex="-1">其他说明: <a class="header-anchor" href="#其他说明" aria-label="Permalink to "其他说明:""></a></h4><p>有关于MarkDown的其他书写格式,请参考MD书写规范<br><a href="https://docs.github.com/zh/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax" target="_blank" rel="noreferrer">MD文档参考--点我立刻学习</a></p><h4 id="附加说明" tabindex="-1">附加说明: <a class="header-anchor" href="#附加说明" aria-label="Permalink to "附加说明:""></a></h4><div class="language-txt"><button title="Copy Code" class="copy"></button><span class="lang">txt</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">由于插件众多,为避免MD格式冲突,换行建议最好使用<br>进行换行,</span></span>
|
import{_ as e,c as p,C as s,a,I as n,E as o,V as t,J as c,o as r}from"./chunks/framework.fcc0bf38.js";const Q=JSON.parse('{"title":"","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"api-dev.md","filePath":"api-dev.md"}'),i={name:"api-dev.md"},d=s("div",{style:{display:"flex","align-content":"flex-start","flex-wrap":"nowrap","flex-direction":"row","justify-content":"center"}},[s("h1",null,"RTS-Code-API---开发规范")],-1),u=s("div",{style:{display:"flex","align-content":"flex-start","flex-wrap":"nowrap","flex-direction":"row","justify-content":"center"}},[s("img",{src:"https://rust.coldmint.top/ftp/ling/cdnpng/logo.png"})],-1),h={class:"tip custom-block"},D=s("p",{class:"custom-block-title"},"TIP",-1),_=s("br",null,null,-1),y=s("br",null,null,-1),C=s("br",null,null,-1),b=s("blockquote",null,[s("p",null,[a("1.确保代码的解释通俗易懂,能让新手迅速入门"),s("br"),a("2.编写的代码应该以以下格式进行:")]),s("h3",null,"代码的格式编写规范:"),a("1.代码的英文名和附属信息(参考站点已添加的代码例子)"),s("br")],-1),A=s("p",null,[a("2.代码的简介"),s("br"),a(" 3.代码的要点指示"),s("br"),a(" 4.代码的演示例子"),s("br"),a(" 5.代码的扩展例子(可选)"),s("br"),a(" 6.GIF演示/视频演示(可选)")],-1),m={class:"tip custom-block"},F=s("p",{class:"custom-block-title"},"TIP",-1),g=s("br",null,null,-1),f={class:"warning custom-block"},k=s("p",{class:"custom-block-title"},"WARNING",-1),v=s("div",{class:"warning custom-block"},[s("p",{class:"custom-block-title"},"WARNING"),s("p",null,"有一些代码或许有一些新的写法,或该写法可能已经废弃,如果遇到这些代码,编写者需要注明,并提供推荐代码。")],-1),q={class:"info custom-block"},P=s("p",{class:"custom-block-title"},"INFO",-1),T=t(`<h4 id="其他说明" tabindex="-1">其他说明: <a class="header-anchor" href="#其他说明" aria-label="Permalink to "其他说明:""></a></h4><p>有关于MarkDown的其他书写格式,请参考MD书写规范<br><a href="https://docs.github.com/zh/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax" target="_blank" rel="noreferrer">MD文档参考--点我立刻学习</a></p><h4 id="附加说明" tabindex="-1">附加说明: <a class="header-anchor" href="#附加说明" aria-label="Permalink to "附加说明:""></a></h4><div class="language-txt"><button title="Copy Code" class="copy"></button><span class="lang">txt</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">由于插件众多,为避免MD格式冲突,换行建议最好使用<br>进行换行,</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">如果要在一些扩展格式渲染演示,请使用<font>标签,</span></span></code></pre></div><h4 id="部署策略" tabindex="-1">部署策略: <a class="header-anchor" href="#部署策略" aria-label="Permalink to "部署策略:""></a></h4><div class="info custom-block"><p class="custom-block-title">INFO</p><p>1.本地部署</p></div>`,6),w={class:"tip custom-block"},x=s("p",{class:"custom-block-title"},"TIP",-1),I=s("br",null,null,-1),N=s("blockquote",null,[s("p",null,[a("npm i docsify-cli -g"),s("br"),a("docsify serve docs")])],-1),E=s("div",{class:"info custom-block"},[s("p",{class:"custom-block-title"},"INFO"),s("p",null,"2.Netlify部署")],-1),S={class:"tip custom-block"},R=s("p",{class:"custom-block-title"},"TIP",-1),M=s("br",null,null,-1),V=s("br",null,null,-1),O=s("br",null,null,-1),G=t(`<h4 id="_1-md扩展格式" tabindex="-1">1.MD扩展格式: <a class="header-anchor" href="#_1-md扩展格式" aria-label="Permalink to "1.MD扩展格式:""></a></h4><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">::: info</span></span>
|
<span class="line"><span style="color:#A6ACCD;">如果要在一些扩展格式渲染演示,请使用<font>标签,</span></span></code></pre></div><h4 id="部署策略" tabindex="-1">部署策略: <a class="header-anchor" href="#部署策略" aria-label="Permalink to "部署策略:""></a></h4><div class="info custom-block"><p class="custom-block-title">INFO</p><p>1.本地部署</p></div>`,6),I={class:"tip custom-block"},w=s("p",{class:"custom-block-title"},"TIP",-1),x=s("br",null,null,-1),N=s("blockquote",null,[s("p",null,[a("npm i docsify-cli -g"),s("br"),a("docsify serve docs")])],-1),E=s("div",{class:"info custom-block"},[s("p",{class:"custom-block-title"},"INFO"),s("p",null,"2.Netlify部署")],-1),S={class:"tip custom-block"},R=s("p",{class:"custom-block-title"},"TIP",-1),V=s("br",null,null,-1),M=s("br",null,null,-1),O=s("br",null,null,-1),G=t(`<h4 id="_1-md扩展格式" tabindex="-1">1.MD扩展格式: <a class="header-anchor" href="#_1-md扩展格式" aria-label="Permalink to "1.MD扩展格式:""></a></h4><div class="language-"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">::: info</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">信息文本</span></span>
|
<span class="line"><span style="color:#A6ACCD;">信息文本</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">:::</span></span>
|
<span class="line"><span style="color:#A6ACCD;">:::</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;"></span></span>
|
<span class="line"><span style="color:#A6ACCD;"></span></span>
|
||||||
|
@ -34,4 +34,4 @@ import{_ as e,K as p,o as c,c as r,k as s,a,O as n,w as o,X as t}from"./chunks/f
|
||||||
`,-1),$=t(`<div class="language-html"><button title="Copy Code" class="copy"></button><span class="lang">html</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;"><</span><span style="color:#F07178;">iframe</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">src</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">"</span><span style="color:#C3E88D;">视频地址</span><span style="color:#89DDFF;">"</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">scrolling</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">"</span><span style="color:#C3E88D;">no</span><span style="color:#89DDFF;">"</span><span style="color:#89DDFF;"> border=</span><span style="color:#89DDFF;">"</span><span style="color:#C3E88D;">0</span><span style="color:#89DDFF;">"</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">frameborder</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">"</span><span style="color:#C3E88D;">no</span><span style="color:#89DDFF;">"</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">framespacing</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">"</span><span style="color:#C3E88D;">0</span><span style="color:#89DDFF;">"</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">allowfullscreen</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">"</span><span style="color:#C3E88D;">true</span><span style="color:#89DDFF;">"</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">width</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">"</span><span style="color:#C3E88D;">100%</span><span style="color:#89DDFF;">"</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">height</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">"</span><span style="color:#C3E88D;">400</span><span style="color:#89DDFF;">"</span><span style="color:#89DDFF;">></span></span>
|
`,-1),$=t(`<div class="language-html"><button title="Copy Code" class="copy"></button><span class="lang">html</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;"><</span><span style="color:#F07178;">iframe</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">src</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">"</span><span style="color:#C3E88D;">视频地址</span><span style="color:#89DDFF;">"</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">scrolling</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">"</span><span style="color:#C3E88D;">no</span><span style="color:#89DDFF;">"</span><span style="color:#89DDFF;"> border=</span><span style="color:#89DDFF;">"</span><span style="color:#C3E88D;">0</span><span style="color:#89DDFF;">"</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">frameborder</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">"</span><span style="color:#C3E88D;">no</span><span style="color:#89DDFF;">"</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">framespacing</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">"</span><span style="color:#C3E88D;">0</span><span style="color:#89DDFF;">"</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">allowfullscreen</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">"</span><span style="color:#C3E88D;">true</span><span style="color:#89DDFF;">"</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">width</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">"</span><span style="color:#C3E88D;">100%</span><span style="color:#89DDFF;">"</span><span style="color:#89DDFF;"> </span><span style="color:#C792EA;">height</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">"</span><span style="color:#C3E88D;">400</span><span style="color:#89DDFF;">"</span><span style="color:#89DDFF;">></span></span>
|
||||||
<span class="line"><span style="color:#89DDFF;"></</span><span style="color:#F07178;">iframe</span><span style="color:#89DDFF;">></span></span></code></pre></div><h4 id="_3-插入表格" tabindex="-1">3.插入表格 <a class="header-anchor" href="#_3-插入表格" aria-label="Permalink to "3.插入表格""></a></h4><h3 id="代码演示" tabindex="-1">代码演示: <a class="header-anchor" href="#代码演示" aria-label="Permalink to "代码演示:""></a></h3><table><thead><tr><th>A</th><th>B</th><th>C</th></tr></thead><tbody><tr><td>1</td><td>2</td><td>3</td></tr></tbody></table><h3 id="代码例子" tabindex="-1">代码例子: <a class="header-anchor" href="#代码例子" aria-label="Permalink to "代码例子:""></a></h3><div class="language-markdown"><button title="Copy Code" class="copy"></button><span class="lang">markdown</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">|A|B|C| </span></span>
|
<span class="line"><span style="color:#89DDFF;"></</span><span style="color:#F07178;">iframe</span><span style="color:#89DDFF;">></span></span></code></pre></div><h4 id="_3-插入表格" tabindex="-1">3.插入表格 <a class="header-anchor" href="#_3-插入表格" aria-label="Permalink to "3.插入表格""></a></h4><h3 id="代码演示" tabindex="-1">代码演示: <a class="header-anchor" href="#代码演示" aria-label="Permalink to "代码演示:""></a></h3><table><thead><tr><th>A</th><th>B</th><th>C</th></tr></thead><tbody><tr><td>1</td><td>2</td><td>3</td></tr></tbody></table><h3 id="代码例子" tabindex="-1">代码例子: <a class="header-anchor" href="#代码例子" aria-label="Permalink to "代码例子:""></a></h3><div class="language-markdown"><button title="Copy Code" class="copy"></button><span class="lang">markdown</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#A6ACCD;">|A|B|C| </span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">|-|-|-</span></span>
|
<span class="line"><span style="color:#A6ACCD;">|-|-|-</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">|1|2|3|</span></span></code></pre></div><p>如果你仍然不会Markdown表格写法,这里给你一个链接:</p><h3><a href="https://tableconvert.com/zh-cn/markdown-to-markdown" target="_blank">TableConvert-MD-点击进入</a></h3><h3 id="_4-扩展写法-高级" tabindex="-1">4.扩展写法(高级) <a class="header-anchor" href="#_4-扩展写法-高级" aria-label="Permalink to "4.扩展写法(高级)""></a></h3><p>有一些时候,我们可能需要在已经标记的后面再添加东西, 但Markdown解析方式在标签后面再有一个标签就不会识别了。<br> 所以这里我们必须直接使用原生Html的代码, 通过浏览器的检查元素,你应该能迅速找到模块框架, 将它的模块元素区域复制下来,并调用。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>该文档可能还有很多缺陷,如果你有更好的建议,请发送Issues或者PR给我。</p></div><div class="info custom-block"><p class="custom-block-title">INFO</p><p>编写于2023-5-9 RTS-Code-API[第3版-第3次修订]</p></div>`,12);function j(H,W,z,X,J,K){const l=p("font");return c(),r("div",null,[d,u,s("div",h,[D,s("p",null,[a("0.如果你确定你想"),n(l,{color:"orange"},{default:o(()=>[a("帮忙开发此站点")]),_:1}),a(","),_,a(" 就可以点击右上角的Github按钮,"),n(l,{color:"orange"},{default:o(()=>[a("Clone我们的库")]),_:1}),a(","),y,a(" 编写代码并进行PR申请,我非常感谢你的帮忙,感谢各位的支持与帮助。"),C]),b,A]),s("div",m,[F,s("p",null,[a("使用外部资源时,请使用支持HTTPS协议的资源地址传输。"),g,a(" 否则在"),n(l,{color:"orange"},{default:o(()=>[a("Google Chrome等一系列以CEF的内核")]),_:1}),a("上会因为强制替换HTTPS导致资源无法打开。")])]),s("div",f,[k,s("p",null,[a("不能使用过于高深的说明,严禁出现谜语人话语,无用话语,任何玩梗, 夹带私货等一系列与本站无关的东西,违者将不能通过"),n(l,{color:"green"},{default:o(()=>[a("PR审核")]),_:1})])]),v,s("div",q,[P,s("p",null,[a("为了更好的方便一起编写站点的贡献者,本站点提供了以下的"),n(l,{color:"green"},{default:o(()=>[a("扩展MD格式供各位书写")]),_:1})])]),T,s("div",w,[x,s("p",null,[a("如果要本地测试,请确保设备有"),n(l,{color:"green"},{default:o(()=>[a("Node.js")]),_:1}),a(" 并在项目根目录使用以下命令:"),I]),N]),E,s("div",S,[R,s("p",null,[a("如果你已经发送了PR请求,可以通过我的Netlify预览站点进行预览,"),M,a(" Netlify会在你的PR请求下面显示你的预览页面地址。"),V,a(" 点击"),s("b",null,[n(l,{color:"orange"},{default:o(()=>[a("😎 Deploy Preview后面的链接")]),_:1})]),a("即可看见效果"),O,a(" 由于某些原因,TX会拦截Netlify的站点,请使用浏览器预览。")])]),G,B,$])}const U=e(i,[["render",j]]);export{Q as __pageData,U as default};
|
<span class="line"><span style="color:#A6ACCD;">|1|2|3|</span></span></code></pre></div><p>如果你仍然不会Markdown表格写法,这里给你一个链接:</p><h3><a href="https://tableconvert.com/zh-cn/markdown-to-markdown" target="_blank">TableConvert-MD-点击进入</a></h3><h3 id="_4-扩展写法-高级" tabindex="-1">4.扩展写法(高级) <a class="header-anchor" href="#_4-扩展写法-高级" aria-label="Permalink to "4.扩展写法(高级)""></a></h3><p>有一些时候,我们可能需要在已经标记的后面再添加东西, 但Markdown解析方式在标签后面再有一个标签就不会识别了。<br> 所以这里我们必须直接使用原生Html的代码, 通过浏览器的检查元素,你应该能迅速找到模块框架, 将它的模块元素区域复制下来,并调用。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>该文档可能还有很多缺陷,如果你有更好的建议,请发送Issues或者PR给我。</p></div><div class="info custom-block"><p class="custom-block-title">INFO</p><p>编写于2023-5-9 RTS-Code-API[第3版-第3次修订]</p></div>`,12);function j(H,W,z,J,X,K){const l=c("font");return r(),p("div",null,[d,u,s("div",h,[D,s("p",null,[a("0.如果你确定你想"),n(l,{color:"orange"},{default:o(()=>[a("帮忙开发此站点")]),_:1}),a(","),_,a(" 就可以点击右上角的Github按钮,"),n(l,{color:"orange"},{default:o(()=>[a("Clone我们的库")]),_:1}),a(","),y,a(" 编写代码并进行PR申请,我非常感谢你的帮忙,感谢各位的支持与帮助。"),C]),b,A]),s("div",m,[F,s("p",null,[a("使用外部资源时,请使用支持HTTPS协议的资源地址传输。"),g,a(" 否则在"),n(l,{color:"orange"},{default:o(()=>[a("Google Chrome等一系列以CEF的内核")]),_:1}),a("上会因为强制替换HTTPS导致资源无法打开。")])]),s("div",f,[k,s("p",null,[a("不能使用过于高深的说明,严禁出现谜语人话语,无用话语,任何玩梗, 夹带私货等一系列与本站无关的东西,违者将不能通过"),n(l,{color:"green"},{default:o(()=>[a("PR审核")]),_:1})])]),v,s("div",q,[P,s("p",null,[a("为了更好的方便一起编写站点的贡献者,本站点提供了以下的"),n(l,{color:"green"},{default:o(()=>[a("扩展MD格式供各位书写")]),_:1})])]),T,s("div",I,[w,s("p",null,[a("如果要本地测试,请确保设备有"),n(l,{color:"green"},{default:o(()=>[a("Node.js")]),_:1}),a(" 并在项目根目录使用以下命令:"),x]),N]),E,s("div",S,[R,s("p",null,[a("如果你已经发送了PR请求,可以通过我的Netlify预览站点进行预览,"),V,a(" Netlify会在你的PR请求下面显示你的预览页面地址。"),M,a(" 点击"),s("b",null,[n(l,{color:"orange"},{default:o(()=>[a("😎 Deploy Preview后面的链接")]),_:1})]),a("即可看见效果"),O,a(" 由于某些原因,TX会拦截Netlify的站点,请使用浏览器预览。")])]),G,B,$])}const U=e(i,[["render",j]]);export{Q as __pageData,U as default};
|
|
@ -1,2 +1,2 @@
|
||||||
import{_ as e,K as p,o as c,c as r,k as s,a,O as n,w as o,X as t}from"./chunks/framework.d377e0cc.js";const Q=JSON.parse('{"title":"","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"api-dev.md","filePath":"api-dev.md"}'),i={name:"api-dev.md"},d=s("div",{style:{display:"flex","align-content":"flex-start","flex-wrap":"nowrap","flex-direction":"row","justify-content":"center"}},[s("h1",null,"RTS-Code-API---开发规范")],-1),u=s("div",{style:{display:"flex","align-content":"flex-start","flex-wrap":"nowrap","flex-direction":"row","justify-content":"center"}},[s("img",{src:"https://rust.coldmint.top/ftp/ling/cdnpng/logo.png"})],-1),h={class:"tip custom-block"},D=s("p",{class:"custom-block-title"},"TIP",-1),_=s("br",null,null,-1),y=s("br",null,null,-1),C=s("br",null,null,-1),b=s("blockquote",null,[s("p",null,[a("1.确保代码的解释通俗易懂,能让新手迅速入门"),s("br"),a("2.编写的代码应该以以下格式进行:")]),s("h3",null,"代码的格式编写规范:"),a("1.代码的英文名和附属信息(参考站点已添加的代码例子)"),s("br")],-1),A=s("p",null,[a("2.代码的简介"),s("br"),a(" 3.代码的要点指示"),s("br"),a(" 4.代码的演示例子"),s("br"),a(" 5.代码的扩展例子(可选)"),s("br"),a(" 6.GIF演示/视频演示(可选)")],-1),m={class:"tip custom-block"},F=s("p",{class:"custom-block-title"},"TIP",-1),g=s("br",null,null,-1),f={class:"warning custom-block"},k=s("p",{class:"custom-block-title"},"WARNING",-1),v=s("div",{class:"warning custom-block"},[s("p",{class:"custom-block-title"},"WARNING"),s("p",null,"有一些代码或许有一些新的写法,或该写法可能已经废弃,如果遇到这些代码,编写者需要注明,并提供推荐代码。")],-1),q={class:"info custom-block"},P=s("p",{class:"custom-block-title"},"INFO",-1),T=t("",6),w={class:"tip custom-block"},x=s("p",{class:"custom-block-title"},"TIP",-1),I=s("br",null,null,-1),N=s("blockquote",null,[s("p",null,[a("npm i docsify-cli -g"),s("br"),a("docsify serve docs")])],-1),E=s("div",{class:"info custom-block"},[s("p",{class:"custom-block-title"},"INFO"),s("p",null,"2.Netlify部署")],-1),S={class:"tip custom-block"},R=s("p",{class:"custom-block-title"},"TIP",-1),M=s("br",null,null,-1),V=s("br",null,null,-1),O=s("br",null,null,-1),G=t("",12),B=s("iframe",{src:"https://vdse.bdstatic.com//192d9a98d782d9c74c96f09db9378d93.mp4",scrolling:"no",border:"0",frameborder:"no",framespacing:"0",allowfullscreen:"true",width:"100%",height:"400"},`
|
import{_ as e,c as p,C as s,a,I as n,E as o,V as t,J as c,o as r}from"./chunks/framework.fcc0bf38.js";const Q=JSON.parse('{"title":"","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"api-dev.md","filePath":"api-dev.md"}'),i={name:"api-dev.md"},d=s("div",{style:{display:"flex","align-content":"flex-start","flex-wrap":"nowrap","flex-direction":"row","justify-content":"center"}},[s("h1",null,"RTS-Code-API---开发规范")],-1),u=s("div",{style:{display:"flex","align-content":"flex-start","flex-wrap":"nowrap","flex-direction":"row","justify-content":"center"}},[s("img",{src:"https://rust.coldmint.top/ftp/ling/cdnpng/logo.png"})],-1),h={class:"tip custom-block"},D=s("p",{class:"custom-block-title"},"TIP",-1),_=s("br",null,null,-1),y=s("br",null,null,-1),C=s("br",null,null,-1),b=s("blockquote",null,[s("p",null,[a("1.确保代码的解释通俗易懂,能让新手迅速入门"),s("br"),a("2.编写的代码应该以以下格式进行:")]),s("h3",null,"代码的格式编写规范:"),a("1.代码的英文名和附属信息(参考站点已添加的代码例子)"),s("br")],-1),A=s("p",null,[a("2.代码的简介"),s("br"),a(" 3.代码的要点指示"),s("br"),a(" 4.代码的演示例子"),s("br"),a(" 5.代码的扩展例子(可选)"),s("br"),a(" 6.GIF演示/视频演示(可选)")],-1),m={class:"tip custom-block"},F=s("p",{class:"custom-block-title"},"TIP",-1),g=s("br",null,null,-1),f={class:"warning custom-block"},k=s("p",{class:"custom-block-title"},"WARNING",-1),v=s("div",{class:"warning custom-block"},[s("p",{class:"custom-block-title"},"WARNING"),s("p",null,"有一些代码或许有一些新的写法,或该写法可能已经废弃,如果遇到这些代码,编写者需要注明,并提供推荐代码。")],-1),q={class:"info custom-block"},P=s("p",{class:"custom-block-title"},"INFO",-1),T=t("",6),I={class:"tip custom-block"},w=s("p",{class:"custom-block-title"},"TIP",-1),x=s("br",null,null,-1),N=s("blockquote",null,[s("p",null,[a("npm i docsify-cli -g"),s("br"),a("docsify serve docs")])],-1),E=s("div",{class:"info custom-block"},[s("p",{class:"custom-block-title"},"INFO"),s("p",null,"2.Netlify部署")],-1),S={class:"tip custom-block"},R=s("p",{class:"custom-block-title"},"TIP",-1),V=s("br",null,null,-1),M=s("br",null,null,-1),O=s("br",null,null,-1),G=t("",12),B=s("iframe",{src:"https://vdse.bdstatic.com//192d9a98d782d9c74c96f09db9378d93.mp4",scrolling:"no",border:"0",frameborder:"no",framespacing:"0",allowfullscreen:"true",width:"100%",height:"400"},`
|
||||||
`,-1),$=t("",12);function j(H,W,z,X,J,K){const l=p("font");return c(),r("div",null,[d,u,s("div",h,[D,s("p",null,[a("0.如果你确定你想"),n(l,{color:"orange"},{default:o(()=>[a("帮忙开发此站点")]),_:1}),a(","),_,a(" 就可以点击右上角的Github按钮,"),n(l,{color:"orange"},{default:o(()=>[a("Clone我们的库")]),_:1}),a(","),y,a(" 编写代码并进行PR申请,我非常感谢你的帮忙,感谢各位的支持与帮助。"),C]),b,A]),s("div",m,[F,s("p",null,[a("使用外部资源时,请使用支持HTTPS协议的资源地址传输。"),g,a(" 否则在"),n(l,{color:"orange"},{default:o(()=>[a("Google Chrome等一系列以CEF的内核")]),_:1}),a("上会因为强制替换HTTPS导致资源无法打开。")])]),s("div",f,[k,s("p",null,[a("不能使用过于高深的说明,严禁出现谜语人话语,无用话语,任何玩梗, 夹带私货等一系列与本站无关的东西,违者将不能通过"),n(l,{color:"green"},{default:o(()=>[a("PR审核")]),_:1})])]),v,s("div",q,[P,s("p",null,[a("为了更好的方便一起编写站点的贡献者,本站点提供了以下的"),n(l,{color:"green"},{default:o(()=>[a("扩展MD格式供各位书写")]),_:1})])]),T,s("div",w,[x,s("p",null,[a("如果要本地测试,请确保设备有"),n(l,{color:"green"},{default:o(()=>[a("Node.js")]),_:1}),a(" 并在项目根目录使用以下命令:"),I]),N]),E,s("div",S,[R,s("p",null,[a("如果你已经发送了PR请求,可以通过我的Netlify预览站点进行预览,"),M,a(" Netlify会在你的PR请求下面显示你的预览页面地址。"),V,a(" 点击"),s("b",null,[n(l,{color:"orange"},{default:o(()=>[a("😎 Deploy Preview后面的链接")]),_:1})]),a("即可看见效果"),O,a(" 由于某些原因,TX会拦截Netlify的站点,请使用浏览器预览。")])]),G,B,$])}const U=e(i,[["render",j]]);export{Q as __pageData,U as default};
|
`,-1),$=t("",12);function j(H,W,z,J,X,K){const l=c("font");return r(),p("div",null,[d,u,s("div",h,[D,s("p",null,[a("0.如果你确定你想"),n(l,{color:"orange"},{default:o(()=>[a("帮忙开发此站点")]),_:1}),a(","),_,a(" 就可以点击右上角的Github按钮,"),n(l,{color:"orange"},{default:o(()=>[a("Clone我们的库")]),_:1}),a(","),y,a(" 编写代码并进行PR申请,我非常感谢你的帮忙,感谢各位的支持与帮助。"),C]),b,A]),s("div",m,[F,s("p",null,[a("使用外部资源时,请使用支持HTTPS协议的资源地址传输。"),g,a(" 否则在"),n(l,{color:"orange"},{default:o(()=>[a("Google Chrome等一系列以CEF的内核")]),_:1}),a("上会因为强制替换HTTPS导致资源无法打开。")])]),s("div",f,[k,s("p",null,[a("不能使用过于高深的说明,严禁出现谜语人话语,无用话语,任何玩梗, 夹带私货等一系列与本站无关的东西,违者将不能通过"),n(l,{color:"green"},{default:o(()=>[a("PR审核")]),_:1})])]),v,s("div",q,[P,s("p",null,[a("为了更好的方便一起编写站点的贡献者,本站点提供了以下的"),n(l,{color:"green"},{default:o(()=>[a("扩展MD格式供各位书写")]),_:1})])]),T,s("div",I,[w,s("p",null,[a("如果要本地测试,请确保设备有"),n(l,{color:"green"},{default:o(()=>[a("Node.js")]),_:1}),a(" 并在项目根目录使用以下命令:"),x]),N]),E,s("div",S,[R,s("p",null,[a("如果你已经发送了PR请求,可以通过我的Netlify预览站点进行预览,"),V,a(" Netlify会在你的PR请求下面显示你的预览页面地址。"),M,a(" 点击"),s("b",null,[n(l,{color:"orange"},{default:o(()=>[a("😎 Deploy Preview后面的链接")]),_:1})]),a("即可看见效果"),O,a(" 由于某些原因,TX会拦截Netlify的站点,请使用浏览器预览。")])]),G,B,$])}const U=e(i,[["render",j]]);export{Q as __pageData,U as default};
|
|
@ -1,961 +0,0 @@
|
||||||
import{_ as tn,o as nn,b as rn,w as an,l as sn,p as on,m as cn,k as T,G as le,a5 as ln,a6 as un,a7 as dn,a8 as fn,a9 as hn,aa as pn,ab as mn,ac as gn,ad as bn,ae as _n,$ as In,d as yn,u as En,j as wn,A as Tn,af as vn,ag as An,ah as Sn,ai as Cn}from"./chunks/framework.d377e0cc.js";import{t as rt}from"./chunks/theme.c4d0bb19.js";/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2017 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*//**
|
|
||||||
* @license
|
|
||||||
* Copyright 2017 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const it=function(t){const e=[];let n=0;for(let r=0;r<t.length;r++){let i=t.charCodeAt(r);i<128?e[n++]=i:i<2048?(e[n++]=i>>6|192,e[n++]=i&63|128):(i&64512)===55296&&r+1<t.length&&(t.charCodeAt(r+1)&64512)===56320?(i=65536+((i&1023)<<10)+(t.charCodeAt(++r)&1023),e[n++]=i>>18|240,e[n++]=i>>12&63|128,e[n++]=i>>6&63|128,e[n++]=i&63|128):(e[n++]=i>>12|224,e[n++]=i>>6&63|128,e[n++]=i&63|128)}return e},Rn=function(t){const e=[];let n=0,r=0;for(;n<t.length;){const i=t[n++];if(i<128)e[r++]=String.fromCharCode(i);else if(i>191&&i<224){const a=t[n++];e[r++]=String.fromCharCode((i&31)<<6|a&63)}else if(i>239&&i<365){const a=t[n++],s=t[n++],o=t[n++],c=((i&7)<<18|(a&63)<<12|(s&63)<<6|o&63)-65536;e[r++]=String.fromCharCode(55296+(c>>10)),e[r++]=String.fromCharCode(56320+(c&1023))}else{const a=t[n++],s=t[n++];e[r++]=String.fromCharCode((i&15)<<12|(a&63)<<6|s&63)}}return e.join("")},at={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:typeof atob=="function",encodeByteArray(t,e){if(!Array.isArray(t))throw Error("encodeByteArray takes an array as a parameter");this.init_();const n=e?this.byteToCharMapWebSafe_:this.byteToCharMap_,r=[];for(let i=0;i<t.length;i+=3){const a=t[i],s=i+1<t.length,o=s?t[i+1]:0,c=i+2<t.length,l=c?t[i+2]:0,d=a>>2,h=(a&3)<<4|o>>4;let g=(o&15)<<2|l>>6,b=l&63;c||(b=64,s||(g=64)),r.push(n[d],n[h],n[g],n[b])}return r.join("")},encodeString(t,e){return this.HAS_NATIVE_SUPPORT&&!e?btoa(t):this.encodeByteArray(it(t),e)},decodeString(t,e){return this.HAS_NATIVE_SUPPORT&&!e?atob(t):Rn(this.decodeStringToByteArray(t,e))},decodeStringToByteArray(t,e){this.init_();const n=e?this.charToByteMapWebSafe_:this.charToByteMap_,r=[];for(let i=0;i<t.length;){const a=n[t.charAt(i++)],o=i<t.length?n[t.charAt(i)]:0;++i;const l=i<t.length?n[t.charAt(i)]:64;++i;const h=i<t.length?n[t.charAt(i)]:64;if(++i,a==null||o==null||l==null||h==null)throw new Dn;const g=a<<2|o>>4;if(r.push(g),l!==64){const b=o<<4&240|l>>2;if(r.push(b),h!==64){const en=l<<6&192|h;r.push(en)}}}return r},init_(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(let t=0;t<this.ENCODED_VALS.length;t++)this.byteToCharMap_[t]=this.ENCODED_VALS.charAt(t),this.charToByteMap_[this.byteToCharMap_[t]]=t,this.byteToCharMapWebSafe_[t]=this.ENCODED_VALS_WEBSAFE.charAt(t),this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[t]]=t,t>=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(t)]=t,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(t)]=t)}}};class Dn extends Error{constructor(){super(...arguments),this.name="DecodeBase64StringError"}}const Mn=function(t){const e=it(t);return at.encodeByteArray(e,!0)},st=function(t){return Mn(t).replace(/\./g,"")},Nn=function(t){try{return at.decodeString(t,!0)}catch(e){console.error("base64Decode failed: ",e)}return null};/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2022 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/function On(){if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("Unable to locate global object.")}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2022 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const Pn=()=>On().__FIREBASE_DEFAULTS__,Bn=()=>{if(typeof process>"u"||typeof process.env>"u")return;const t={}.__FIREBASE_DEFAULTS__;if(t)return JSON.parse(t)},kn=()=>{if(typeof document>"u")return;let t;try{t=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch{return}const e=t&&Nn(t[1]);return e&&JSON.parse(e)},Fn=()=>{try{return Pn()||Bn()||kn()}catch(t){console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${t}`);return}},$n=()=>{var t;return(t=Fn())===null||t===void 0?void 0:t.config};/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2017 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/class Ln{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise((e,n)=>{this.resolve=e,this.reject=n})}wrapCallback(e){return(n,r)=>{n?this.reject(n):this.resolve(r),typeof e=="function"&&(this.promise.catch(()=>{}),e.length===1?e(n):e(n,r))}}}function Un(){const t=typeof chrome=="object"?chrome.runtime:typeof browser=="object"?browser.runtime:void 0;return typeof t=="object"&&t.id!==void 0}function _e(){try{return typeof indexedDB=="object"}catch{return!1}}function Ie(){return new Promise((t,e)=>{try{let n=!0;const r="validate-browser-context-for-indexeddb-analytics-module",i=self.indexedDB.open(r);i.onsuccess=()=>{i.result.close(),n||self.indexedDB.deleteDatabase(r),t(!0)},i.onupgradeneeded=()=>{n=!1},i.onerror=()=>{var a;e(((a=i.error)===null||a===void 0?void 0:a.message)||"")}}catch(n){e(n)}})}function ot(){return!(typeof navigator>"u"||!navigator.cookieEnabled)}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2017 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const xn="FirebaseError";class k extends Error{constructor(e,n,r){super(n),this.code=e,this.customData=r,this.name=xn,Object.setPrototypeOf(this,k.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,x.prototype.create)}}class x{constructor(e,n,r){this.service=e,this.serviceName=n,this.errors=r}create(e,...n){const r=n[0]||{},i=`${this.service}/${e}`,a=this.errors[e],s=a?jn(a,r):"Error",o=`${this.serviceName}: ${s} (${i}).`;return new k(i,o,r)}}function jn(t,e){return t.replace(Vn,(n,r)=>{const i=e[r];return i!=null?String(i):`<${r}?>`})}const Vn=/\{\$([^}]+)}/g;function H(t,e){if(t===e)return!0;const n=Object.keys(t),r=Object.keys(e);for(const i of n){if(!r.includes(i))return!1;const a=t[i],s=e[i];if(Ne(a)&&Ne(s)){if(!H(a,s))return!1}else if(a!==s)return!1}for(const i of r)if(!n.includes(i))return!1;return!0}function Ne(t){return t!==null&&typeof t=="object"}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const Hn=1e3,zn=2,qn=4*60*60*1e3,Gn=.5;function Oe(t,e=Hn,n=zn){const r=e*Math.pow(n,t),i=Math.round(Gn*r*(Math.random()-.5)*2);return Math.min(qn,r+i)}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2021 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/function ye(t){return t&&t._delegate?t._delegate:t}class v{constructor(e,n,r){this.name=e,this.instanceFactory=n,this.type=r,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode="LAZY",this.onInstanceCreated=null}setInstantiationMode(e){return this.instantiationMode=e,this}setMultipleInstances(e){return this.multipleInstances=e,this}setServiceProps(e){return this.serviceProps=e,this}setInstanceCreatedCallback(e){return this.onInstanceCreated=e,this}}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const D="[DEFAULT]";/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/class Wn{constructor(e,n){this.name=e,this.container=n,this.component=null,this.instances=new Map,this.instancesDeferred=new Map,this.instancesOptions=new Map,this.onInitCallbacks=new Map}get(e){const n=this.normalizeInstanceIdentifier(e);if(!this.instancesDeferred.has(n)){const r=new Ln;if(this.instancesDeferred.set(n,r),this.isInitialized(n)||this.shouldAutoInitialize())try{const i=this.getOrInitializeService({instanceIdentifier:n});i&&r.resolve(i)}catch{}}return this.instancesDeferred.get(n).promise}getImmediate(e){var n;const r=this.normalizeInstanceIdentifier(e==null?void 0:e.identifier),i=(n=e==null?void 0:e.optional)!==null&&n!==void 0?n:!1;if(this.isInitialized(r)||this.shouldAutoInitialize())try{return this.getOrInitializeService({instanceIdentifier:r})}catch(a){if(i)return null;throw a}else{if(i)return null;throw Error(`Service ${this.name} is not available`)}}getComponent(){return this.component}setComponent(e){if(e.name!==this.name)throw Error(`Mismatching Component ${e.name} for Provider ${this.name}.`);if(this.component)throw Error(`Component for ${this.name} has already been provided`);if(this.component=e,!!this.shouldAutoInitialize()){if(Xn(e))try{this.getOrInitializeService({instanceIdentifier:D})}catch{}for(const[n,r]of this.instancesDeferred.entries()){const i=this.normalizeInstanceIdentifier(n);try{const a=this.getOrInitializeService({instanceIdentifier:i});r.resolve(a)}catch{}}}}clearInstance(e=D){this.instancesDeferred.delete(e),this.instancesOptions.delete(e),this.instances.delete(e)}async delete(){const e=Array.from(this.instances.values());await Promise.all([...e.filter(n=>"INTERNAL"in n).map(n=>n.INTERNAL.delete()),...e.filter(n=>"_delete"in n).map(n=>n._delete())])}isComponentSet(){return this.component!=null}isInitialized(e=D){return this.instances.has(e)}getOptions(e=D){return this.instancesOptions.get(e)||{}}initialize(e={}){const{options:n={}}=e,r=this.normalizeInstanceIdentifier(e.instanceIdentifier);if(this.isInitialized(r))throw Error(`${this.name}(${r}) has already been initialized`);if(!this.isComponentSet())throw Error(`Component ${this.name} has not been registered yet`);const i=this.getOrInitializeService({instanceIdentifier:r,options:n});for(const[a,s]of this.instancesDeferred.entries()){const o=this.normalizeInstanceIdentifier(a);r===o&&s.resolve(i)}return i}onInit(e,n){var r;const i=this.normalizeInstanceIdentifier(n),a=(r=this.onInitCallbacks.get(i))!==null&&r!==void 0?r:new Set;a.add(e),this.onInitCallbacks.set(i,a);const s=this.instances.get(i);return s&&e(s,i),()=>{a.delete(e)}}invokeOnInitCallbacks(e,n){const r=this.onInitCallbacks.get(n);if(r)for(const i of r)try{i(e,n)}catch{}}getOrInitializeService({instanceIdentifier:e,options:n={}}){let r=this.instances.get(e);if(!r&&this.component&&(r=this.component.instanceFactory(this.container,{instanceIdentifier:Kn(e),options:n}),this.instances.set(e,r),this.instancesOptions.set(e,n),this.invokeOnInitCallbacks(r,e),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,e,r)}catch{}return r||null}normalizeInstanceIdentifier(e=D){return this.component?this.component.multipleInstances?e:D:e}shouldAutoInitialize(){return!!this.component&&this.component.instantiationMode!=="EXPLICIT"}}function Kn(t){return t===D?void 0:t}function Xn(t){return t.instantiationMode==="EAGER"}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/class Yn{constructor(e){this.name=e,this.providers=new Map}addComponent(e){const n=this.getProvider(e.name);if(n.isComponentSet())throw new Error(`Component ${e.name} has already been registered with ${this.name}`);n.setComponent(e)}addOrOverwriteComponent(e){this.getProvider(e.name).isComponentSet()&&this.providers.delete(e.name),this.addComponent(e)}getProvider(e){if(this.providers.has(e))return this.providers.get(e);const n=new Wn(e,this);return this.providers.set(e,n),n}getProviders(){return Array.from(this.providers.values())}}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2017 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/var u;(function(t){t[t.DEBUG=0]="DEBUG",t[t.VERBOSE=1]="VERBOSE",t[t.INFO=2]="INFO",t[t.WARN=3]="WARN",t[t.ERROR=4]="ERROR",t[t.SILENT=5]="SILENT"})(u||(u={}));const Jn={debug:u.DEBUG,verbose:u.VERBOSE,info:u.INFO,warn:u.WARN,error:u.ERROR,silent:u.SILENT},Qn=u.INFO,Zn={[u.DEBUG]:"log",[u.VERBOSE]:"log",[u.INFO]:"info",[u.WARN]:"warn",[u.ERROR]:"error"},er=(t,e,...n)=>{if(e<t.logLevel)return;const r=new Date().toISOString(),i=Zn[e];if(i)console[i](`[${r}] ${t.name}:`,...n);else throw new Error(`Attempted to log a message with an invalid logType (value: ${e})`)};class Ee{constructor(e){this.name=e,this._logLevel=Qn,this._logHandler=er,this._userLogHandler=null}get logLevel(){return this._logLevel}set logLevel(e){if(!(e in u))throw new TypeError(`Invalid value "${e}" assigned to \`logLevel\``);this._logLevel=e}setLogLevel(e){this._logLevel=typeof e=="string"?Jn[e]:e}get logHandler(){return this._logHandler}set logHandler(e){if(typeof e!="function")throw new TypeError("Value assigned to `logHandler` must be a function");this._logHandler=e}get userLogHandler(){return this._userLogHandler}set userLogHandler(e){this._userLogHandler=e}debug(...e){this._userLogHandler&&this._userLogHandler(this,u.DEBUG,...e),this._logHandler(this,u.DEBUG,...e)}log(...e){this._userLogHandler&&this._userLogHandler(this,u.VERBOSE,...e),this._logHandler(this,u.VERBOSE,...e)}info(...e){this._userLogHandler&&this._userLogHandler(this,u.INFO,...e),this._logHandler(this,u.INFO,...e)}warn(...e){this._userLogHandler&&this._userLogHandler(this,u.WARN,...e),this._logHandler(this,u.WARN,...e)}error(...e){this._userLogHandler&&this._userLogHandler(this,u.ERROR,...e),this._logHandler(this,u.ERROR,...e)}}const tr=(t,e)=>e.some(n=>t instanceof n);let Pe,Be;function nr(){return Pe||(Pe=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function rr(){return Be||(Be=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const ct=new WeakMap,ue=new WeakMap,lt=new WeakMap,J=new WeakMap,we=new WeakMap;function ir(t){const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("success",a),t.removeEventListener("error",s)},a=()=>{n(A(t.result)),i()},s=()=>{r(t.error),i()};t.addEventListener("success",a),t.addEventListener("error",s)});return e.then(n=>{n instanceof IDBCursor&&ct.set(n,t)}).catch(()=>{}),we.set(e,t),e}function ar(t){if(ue.has(t))return;const e=new Promise((n,r)=>{const i=()=>{t.removeEventListener("complete",a),t.removeEventListener("error",s),t.removeEventListener("abort",s)},a=()=>{n(),i()},s=()=>{r(t.error||new DOMException("AbortError","AbortError")),i()};t.addEventListener("complete",a),t.addEventListener("error",s),t.addEventListener("abort",s)});ue.set(t,e)}let de={get(t,e,n){if(t instanceof IDBTransaction){if(e==="done")return ue.get(t);if(e==="objectStoreNames")return t.objectStoreNames||lt.get(t);if(e==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return A(t[e])},set(t,e,n){return t[e]=n,!0},has(t,e){return t instanceof IDBTransaction&&(e==="done"||e==="store")?!0:e in t}};function sr(t){de=t(de)}function or(t){return t===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(e,...n){const r=t.call(Q(this),e,...n);return lt.set(r,e.sort?e.sort():[e]),A(r)}:rr().includes(t)?function(...e){return t.apply(Q(this),e),A(ct.get(this))}:function(...e){return A(t.apply(Q(this),e))}}function cr(t){return typeof t=="function"?or(t):(t instanceof IDBTransaction&&ar(t),tr(t,nr())?new Proxy(t,de):t)}function A(t){if(t instanceof IDBRequest)return ir(t);if(J.has(t))return J.get(t);const e=cr(t);return e!==t&&(J.set(t,e),we.set(e,t)),e}const Q=t=>we.get(t);function ut(t,e,{blocked:n,upgrade:r,blocking:i,terminated:a}={}){const s=indexedDB.open(t,e),o=A(s);return r&&s.addEventListener("upgradeneeded",c=>{r(A(s.result),c.oldVersion,c.newVersion,A(s.transaction))}),n&&s.addEventListener("blocked",()=>n()),o.then(c=>{a&&c.addEventListener("close",()=>a()),i&&c.addEventListener("versionchange",()=>i())}).catch(()=>{}),o}const lr=["get","getKey","getAll","getAllKeys","count"],ur=["put","add","delete","clear"],Z=new Map;function ke(t,e){if(!(t instanceof IDBDatabase&&!(e in t)&&typeof e=="string"))return;if(Z.get(e))return Z.get(e);const n=e.replace(/FromIndex$/,""),r=e!==n,i=ur.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||lr.includes(n)))return;const a=async function(s,...o){const c=this.transaction(s,i?"readwrite":"readonly");let l=c.store;return r&&(l=l.index(o.shift())),(await Promise.all([l[n](...o),i&&c.done]))[0]};return Z.set(e,a),a}sr(t=>({...t,get:(e,n,r)=>ke(e,n)||t.get(e,n,r),has:(e,n)=>!!ke(e,n)||t.has(e,n)}));/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/class dr{constructor(e){this.container=e}getPlatformInfoString(){return this.container.getProviders().map(n=>{if(fr(n)){const r=n.getImmediate();return`${r.library}/${r.version}`}else return null}).filter(n=>n).join(" ")}}function fr(t){const e=t.getComponent();return(e==null?void 0:e.type)==="VERSION"}const fe="@firebase/app",Fe="0.9.7";/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const O=new Ee("@firebase/app"),hr="@firebase/app-compat",pr="@firebase/analytics-compat",mr="@firebase/analytics",gr="@firebase/app-check-compat",br="@firebase/app-check",_r="@firebase/auth",Ir="@firebase/auth-compat",yr="@firebase/database",Er="@firebase/database-compat",wr="@firebase/functions",Tr="@firebase/functions-compat",vr="@firebase/installations",Ar="@firebase/installations-compat",Sr="@firebase/messaging",Cr="@firebase/messaging-compat",Rr="@firebase/performance",Dr="@firebase/performance-compat",Mr="@firebase/remote-config",Nr="@firebase/remote-config-compat",Or="@firebase/storage",Pr="@firebase/storage-compat",Br="@firebase/firestore",kr="@firebase/firestore-compat",Fr="firebase";/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const he="[DEFAULT]",$r={[fe]:"fire-core",[hr]:"fire-core-compat",[mr]:"fire-analytics",[pr]:"fire-analytics-compat",[br]:"fire-app-check",[gr]:"fire-app-check-compat",[_r]:"fire-auth",[Ir]:"fire-auth-compat",[yr]:"fire-rtdb",[Er]:"fire-rtdb-compat",[wr]:"fire-fn",[Tr]:"fire-fn-compat",[vr]:"fire-iid",[Ar]:"fire-iid-compat",[Sr]:"fire-fcm",[Cr]:"fire-fcm-compat",[Rr]:"fire-perf",[Dr]:"fire-perf-compat",[Mr]:"fire-rc",[Nr]:"fire-rc-compat",[Or]:"fire-gcs",[Pr]:"fire-gcs-compat",[Br]:"fire-fst",[kr]:"fire-fst-compat","fire-js":"fire-js",[Fr]:"fire-js-all"};/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const z=new Map,pe=new Map;function Lr(t,e){try{t.container.addComponent(e)}catch(n){O.debug(`Component ${e.name} failed to register with FirebaseApp ${t.name}`,n)}}function R(t){const e=t.name;if(pe.has(e))return O.debug(`There were multiple attempts to register component ${e}.`),!1;pe.set(e,t);for(const n of z.values())Lr(n,t);return!0}function j(t,e){const n=t.container.getProvider("heartbeat").getImmediate({optional:!0});return n&&n.triggerHeartbeat(),t.container.getProvider(e)}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const Ur={"no-app":"No Firebase App '{$appName}' has been created - call Firebase App.initializeApp()","bad-app-name":"Illegal App name: '{$appName}","duplicate-app":"Firebase App named '{$appName}' already exists with different options or config","app-deleted":"Firebase App named '{$appName}' already deleted","no-options":"Need to provide options, when not being deployed to hosting via source.","invalid-app-argument":"firebase.{$appName}() takes either no argument or a Firebase App instance.","invalid-log-argument":"First argument to `onLog` must be null or a function.","idb-open":"Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.","idb-get":"Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.","idb-set":"Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.","idb-delete":"Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}."},S=new x("app","Firebase",Ur);/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/class xr{constructor(e,n,r){this._isDeleted=!1,this._options=Object.assign({},e),this._config=Object.assign({},n),this._name=n.name,this._automaticDataCollectionEnabled=n.automaticDataCollectionEnabled,this._container=r,this.container.addComponent(new v("app",()=>this,"PUBLIC"))}get automaticDataCollectionEnabled(){return this.checkDestroyed(),this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(e){this.checkDestroyed(),this._automaticDataCollectionEnabled=e}get name(){return this.checkDestroyed(),this._name}get options(){return this.checkDestroyed(),this._options}get config(){return this.checkDestroyed(),this._config}get container(){return this._container}get isDeleted(){return this._isDeleted}set isDeleted(e){this._isDeleted=e}checkDestroyed(){if(this.isDeleted)throw S.create("app-deleted",{appName:this._name})}}function dt(t,e={}){let n=t;typeof e!="object"&&(e={name:e});const r=Object.assign({name:he,automaticDataCollectionEnabled:!1},e),i=r.name;if(typeof i!="string"||!i)throw S.create("bad-app-name",{appName:String(i)});if(n||(n=$n()),!n)throw S.create("no-options");const a=z.get(i);if(a){if(H(n,a.options)&&H(r,a.config))return a;throw S.create("duplicate-app",{appName:i})}const s=new Yn(i);for(const c of pe.values())s.addComponent(c);const o=new xr(n,r,s);return z.set(i,o),o}function ft(t=he){const e=z.get(t);if(!e&&t===he)return dt();if(!e)throw S.create("no-app",{appName:t});return e}function E(t,e,n){var r;let i=(r=$r[t])!==null&&r!==void 0?r:t;n&&(i+=`-${n}`);const a=i.match(/\s|\//),s=e.match(/\s|\//);if(a||s){const o=[`Unable to register library "${i}" with version "${e}":`];a&&o.push(`library name "${i}" contains illegal characters (whitespace or "/")`),a&&s&&o.push("and"),s&&o.push(`version name "${e}" contains illegal characters (whitespace or "/")`),O.warn(o.join(" "));return}R(new v(`${i}-version`,()=>({library:i,version:e}),"VERSION"))}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2021 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const jr="firebase-heartbeat-database",Vr=1,U="firebase-heartbeat-store";let ee=null;function ht(){return ee||(ee=ut(jr,Vr,{upgrade:(t,e)=>{switch(e){case 0:t.createObjectStore(U)}}}).catch(t=>{throw S.create("idb-open",{originalErrorMessage:t.message})})),ee}async function Hr(t){try{return(await ht()).transaction(U).objectStore(U).get(pt(t))}catch(e){if(e instanceof k)O.warn(e.message);else{const n=S.create("idb-get",{originalErrorMessage:e==null?void 0:e.message});O.warn(n.message)}}}async function $e(t,e){try{const r=(await ht()).transaction(U,"readwrite");return await r.objectStore(U).put(e,pt(t)),r.done}catch(n){if(n instanceof k)O.warn(n.message);else{const r=S.create("idb-set",{originalErrorMessage:n==null?void 0:n.message});O.warn(r.message)}}}function pt(t){return`${t.name}!${t.options.appId}`}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2021 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const zr=1024,qr=30*24*60*60*1e3;class Gr{constructor(e){this.container=e,this._heartbeatsCache=null;const n=this.container.getProvider("app").getImmediate();this._storage=new Kr(n),this._heartbeatsCachePromise=this._storage.read().then(r=>(this._heartbeatsCache=r,r))}async triggerHeartbeat(){const n=this.container.getProvider("platform-logger").getImmediate().getPlatformInfoString(),r=Le();if(this._heartbeatsCache===null&&(this._heartbeatsCache=await this._heartbeatsCachePromise),!(this._heartbeatsCache.lastSentHeartbeatDate===r||this._heartbeatsCache.heartbeats.some(i=>i.date===r)))return this._heartbeatsCache.heartbeats.push({date:r,agent:n}),this._heartbeatsCache.heartbeats=this._heartbeatsCache.heartbeats.filter(i=>{const a=new Date(i.date).valueOf();return Date.now()-a<=qr}),this._storage.overwrite(this._heartbeatsCache)}async getHeartbeatsHeader(){if(this._heartbeatsCache===null&&await this._heartbeatsCachePromise,this._heartbeatsCache===null||this._heartbeatsCache.heartbeats.length===0)return"";const e=Le(),{heartbeatsToSend:n,unsentEntries:r}=Wr(this._heartbeatsCache.heartbeats),i=st(JSON.stringify({version:2,heartbeats:n}));return this._heartbeatsCache.lastSentHeartbeatDate=e,r.length>0?(this._heartbeatsCache.heartbeats=r,await this._storage.overwrite(this._heartbeatsCache)):(this._heartbeatsCache.heartbeats=[],this._storage.overwrite(this._heartbeatsCache)),i}}function Le(){return new Date().toISOString().substring(0,10)}function Wr(t,e=zr){const n=[];let r=t.slice();for(const i of t){const a=n.find(s=>s.agent===i.agent);if(a){if(a.dates.push(i.date),Ue(n)>e){a.dates.pop();break}}else if(n.push({agent:i.agent,dates:[i.date]}),Ue(n)>e){n.pop();break}r=r.slice(1)}return{heartbeatsToSend:n,unsentEntries:r}}class Kr{constructor(e){this.app=e,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return _e()?Ie().then(()=>!0).catch(()=>!1):!1}async read(){return await this._canUseIndexedDBPromise?await Hr(this.app)||{heartbeats:[]}:{heartbeats:[]}}async overwrite(e){var n;if(await this._canUseIndexedDBPromise){const i=await this.read();return $e(this.app,{lastSentHeartbeatDate:(n=e.lastSentHeartbeatDate)!==null&&n!==void 0?n:i.lastSentHeartbeatDate,heartbeats:e.heartbeats})}else return}async add(e){var n;if(await this._canUseIndexedDBPromise){const i=await this.read();return $e(this.app,{lastSentHeartbeatDate:(n=e.lastSentHeartbeatDate)!==null&&n!==void 0?n:i.lastSentHeartbeatDate,heartbeats:[...i.heartbeats,...e.heartbeats]})}else return}}function Ue(t){return st(JSON.stringify({version:2,heartbeats:t})).length}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/function Xr(t){R(new v("platform-logger",e=>new dr(e),"PRIVATE")),R(new v("heartbeat",e=>new Gr(e),"PRIVATE")),E(fe,Fe,t),E(fe,Fe,"esm2017"),E("fire-js","")}Xr("");var Yr="firebase",Jr="9.19.1";/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2020 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/E(Yr,Jr,"app");const mt="@firebase/installations",Te="0.6.4";/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const gt=1e4,bt=`w:${Te}`,_t="FIS_v2",Qr="https://firebaseinstallations.googleapis.com/v1",Zr=60*60*1e3,ei="installations",ti="Installations";/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const ni={"missing-app-config-values":'Missing App configuration value: "{$valueName}"',"not-registered":"Firebase Installation is not registered.","installation-not-found":"Firebase Installation not found.","request-failed":'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',"app-offline":"Could not process request. Application offline.","delete-pending-registration":"Can't delete installation while there is a pending registration request."},P=new x(ei,ti,ni);function It(t){return t instanceof k&&t.code.includes("request-failed")}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/function yt({projectId:t}){return`${Qr}/projects/${t}/installations`}function Et(t){return{token:t.token,requestStatus:2,expiresIn:ii(t.expiresIn),creationTime:Date.now()}}async function wt(t,e){const r=(await e.json()).error;return P.create("request-failed",{requestName:t,serverCode:r.code,serverMessage:r.message,serverStatus:r.status})}function Tt({apiKey:t}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":t})}function ri(t,{refreshToken:e}){const n=Tt(t);return n.append("Authorization",ai(e)),n}async function vt(t){const e=await t();return e.status>=500&&e.status<600?t():e}function ii(t){return Number(t.replace("s","000"))}function ai(t){return`${_t} ${t}`}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/async function si({appConfig:t,heartbeatServiceProvider:e},{fid:n}){const r=yt(t),i=Tt(t),a=e.getImmediate({optional:!0});if(a){const l=await a.getHeartbeatsHeader();l&&i.append("x-firebase-client",l)}const s={fid:n,authVersion:_t,appId:t.appId,sdkVersion:bt},o={method:"POST",headers:i,body:JSON.stringify(s)},c=await vt(()=>fetch(r,o));if(c.ok){const l=await c.json();return{fid:l.fid||n,registrationStatus:2,refreshToken:l.refreshToken,authToken:Et(l.authToken)}}else throw await wt("Create Installation",c)}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/function At(t){return new Promise(e=>{setTimeout(e,t)})}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/function oi(t){return btoa(String.fromCharCode(...t)).replace(/\+/g,"-").replace(/\//g,"_")}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const ci=/^[cdef][\w-]{21}$/,me="";function li(){try{const t=new Uint8Array(17);(self.crypto||self.msCrypto).getRandomValues(t),t[0]=112+t[0]%16;const n=ui(t);return ci.test(n)?n:me}catch{return me}}function ui(t){return oi(t).substr(0,22)}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/function K(t){return`${t.appName}!${t.appId}`}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const St=new Map;function Ct(t,e){const n=K(t);Rt(n,e),di(n,e)}function Rt(t,e){const n=St.get(t);if(n)for(const r of n)r(e)}function di(t,e){const n=fi();n&&n.postMessage({key:t,fid:e}),hi()}let M=null;function fi(){return!M&&"BroadcastChannel"in self&&(M=new BroadcastChannel("[Firebase] FID Change"),M.onmessage=t=>{Rt(t.data.key,t.data.fid)}),M}function hi(){St.size===0&&M&&(M.close(),M=null)}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const pi="firebase-installations-database",mi=1,B="firebase-installations-store";let te=null;function ve(){return te||(te=ut(pi,mi,{upgrade:(t,e)=>{switch(e){case 0:t.createObjectStore(B)}}})),te}async function q(t,e){const n=K(t),i=(await ve()).transaction(B,"readwrite"),a=i.objectStore(B),s=await a.get(n);return await a.put(e,n),await i.done,(!s||s.fid!==e.fid)&&Ct(t,e.fid),e}async function Dt(t){const e=K(t),r=(await ve()).transaction(B,"readwrite");await r.objectStore(B).delete(e),await r.done}async function X(t,e){const n=K(t),i=(await ve()).transaction(B,"readwrite"),a=i.objectStore(B),s=await a.get(n),o=e(s);return o===void 0?await a.delete(n):await a.put(o,n),await i.done,o&&(!s||s.fid!==o.fid)&&Ct(t,o.fid),o}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/async function Ae(t){let e;const n=await X(t.appConfig,r=>{const i=gi(r),a=bi(t,i);return e=a.registrationPromise,a.installationEntry});return n.fid===me?{installationEntry:await e}:{installationEntry:n,registrationPromise:e}}function gi(t){const e=t||{fid:li(),registrationStatus:0};return Mt(e)}function bi(t,e){if(e.registrationStatus===0){if(!navigator.onLine){const i=Promise.reject(P.create("app-offline"));return{installationEntry:e,registrationPromise:i}}const n={fid:e.fid,registrationStatus:1,registrationTime:Date.now()},r=_i(t,n);return{installationEntry:n,registrationPromise:r}}else return e.registrationStatus===1?{installationEntry:e,registrationPromise:Ii(t)}:{installationEntry:e}}async function _i(t,e){try{const n=await si(t,e);return q(t.appConfig,n)}catch(n){throw It(n)&&n.customData.serverCode===409?await Dt(t.appConfig):await q(t.appConfig,{fid:e.fid,registrationStatus:0}),n}}async function Ii(t){let e=await xe(t.appConfig);for(;e.registrationStatus===1;)await At(100),e=await xe(t.appConfig);if(e.registrationStatus===0){const{installationEntry:n,registrationPromise:r}=await Ae(t);return r||n}return e}function xe(t){return X(t,e=>{if(!e)throw P.create("installation-not-found");return Mt(e)})}function Mt(t){return yi(t)?{fid:t.fid,registrationStatus:0}:t}function yi(t){return t.registrationStatus===1&&t.registrationTime+gt<Date.now()}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/async function Ei({appConfig:t,heartbeatServiceProvider:e},n){const r=wi(t,n),i=ri(t,n),a=e.getImmediate({optional:!0});if(a){const l=await a.getHeartbeatsHeader();l&&i.append("x-firebase-client",l)}const s={installation:{sdkVersion:bt,appId:t.appId}},o={method:"POST",headers:i,body:JSON.stringify(s)},c=await vt(()=>fetch(r,o));if(c.ok){const l=await c.json();return Et(l)}else throw await wt("Generate Auth Token",c)}function wi(t,{fid:e}){return`${yt(t)}/${e}/authTokens:generate`}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/async function Se(t,e=!1){let n;const r=await X(t.appConfig,a=>{if(!Nt(a))throw P.create("not-registered");const s=a.authToken;if(!e&&Ai(s))return a;if(s.requestStatus===1)return n=Ti(t,e),a;{if(!navigator.onLine)throw P.create("app-offline");const o=Ci(a);return n=vi(t,o),o}});return n?await n:r.authToken}async function Ti(t,e){let n=await je(t.appConfig);for(;n.authToken.requestStatus===1;)await At(100),n=await je(t.appConfig);const r=n.authToken;return r.requestStatus===0?Se(t,e):r}function je(t){return X(t,e=>{if(!Nt(e))throw P.create("not-registered");const n=e.authToken;return Ri(n)?Object.assign(Object.assign({},e),{authToken:{requestStatus:0}}):e})}async function vi(t,e){try{const n=await Ei(t,e),r=Object.assign(Object.assign({},e),{authToken:n});return await q(t.appConfig,r),n}catch(n){if(It(n)&&(n.customData.serverCode===401||n.customData.serverCode===404))await Dt(t.appConfig);else{const r=Object.assign(Object.assign({},e),{authToken:{requestStatus:0}});await q(t.appConfig,r)}throw n}}function Nt(t){return t!==void 0&&t.registrationStatus===2}function Ai(t){return t.requestStatus===2&&!Si(t)}function Si(t){const e=Date.now();return e<t.creationTime||t.creationTime+t.expiresIn<e+Zr}function Ci(t){const e={requestStatus:1,requestTime:Date.now()};return Object.assign(Object.assign({},t),{authToken:e})}function Ri(t){return t.requestStatus===1&&t.requestTime+gt<Date.now()}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/async function Di(t){const e=t,{installationEntry:n,registrationPromise:r}=await Ae(e);return r?r.catch(console.error):Se(e).catch(console.error),n.fid}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/async function Mi(t,e=!1){const n=t;return await Ni(n),(await Se(n,e)).token}async function Ni(t){const{registrationPromise:e}=await Ae(t);e&&await e}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/function Oi(t){if(!t||!t.options)throw ne("App Configuration");if(!t.name)throw ne("App Name");const e=["projectId","apiKey","appId"];for(const n of e)if(!t.options[n])throw ne(n);return{appName:t.name,projectId:t.options.projectId,apiKey:t.options.apiKey,appId:t.options.appId}}function ne(t){return P.create("missing-app-config-values",{valueName:t})}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2020 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const Ot="installations",Pi="installations-internal",Bi=t=>{const e=t.getProvider("app").getImmediate(),n=Oi(e),r=j(e,"heartbeat");return{app:e,appConfig:n,heartbeatServiceProvider:r,_delete:()=>Promise.resolve()}},ki=t=>{const e=t.getProvider("app").getImmediate(),n=j(e,Ot).getImmediate();return{getId:()=>Di(n),getToken:i=>Mi(n,i)}};function Fi(){R(new v(Ot,Bi,"PUBLIC")),R(new v(Pi,ki,"PRIVATE"))}Fi();E(mt,Te);E(mt,Te,"esm2017");/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const G="analytics",$i="firebase_id",Li="origin",Ui=60*1e3,xi="https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig",Ce="https://www.googletagmanager.com/gtag/js";/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const m=new Ee("@firebase/analytics");/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const ji={"already-exists":"A Firebase Analytics instance with the appId {$id} already exists. Only one Firebase Analytics instance can be created for each appId.","already-initialized":"initializeAnalytics() cannot be called again with different options than those it was initially called with. It can be called again with the same options to return the existing instance, or getAnalytics() can be used to get a reference to the already-intialized instance.","already-initialized-settings":"Firebase Analytics has already been initialized.settings() must be called before initializing any Analytics instanceor it will have no effect.","interop-component-reg-failed":"Firebase Analytics Interop Component failed to instantiate: {$reason}","invalid-analytics-context":"Firebase Analytics is not supported in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","indexeddb-unavailable":"IndexedDB unavailable or restricted in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}","fetch-throttle":"The config fetch request timed out while in an exponential backoff state. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.","config-fetch-failed":"Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}","no-api-key":'The "apiKey" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid API key.',"no-app-id":'The "appId" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid app ID.',"invalid-gtag-resource":"Trusted Types detected an invalid gtag resource: {$gtagURL}."},I=new x("analytics","Analytics",ji);/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/function Vi(t){if(!t.startsWith(Ce)){const e=I.create("invalid-gtag-resource",{gtagURL:t});return m.warn(e.message),""}return t}function Pt(t){return Promise.all(t.map(e=>e.catch(n=>n)))}function Hi(t,e){let n;return window.trustedTypes&&(n=window.trustedTypes.createPolicy(t,e)),n}function zi(t,e){const n=Hi("firebase-js-sdk-policy",{createScriptURL:Vi}),r=document.createElement("script"),i=`${Ce}?l=${t}&id=${e}`;r.src=n?n==null?void 0:n.createScriptURL(i):i,r.async=!0,document.head.appendChild(r)}function qi(t){let e=[];return Array.isArray(window[t])?e=window[t]:window[t]=e,e}async function Gi(t,e,n,r,i,a){const s=r[i];try{if(s)await e[s];else{const c=(await Pt(n)).find(l=>l.measurementId===i);c&&await e[c.appId]}}catch(o){m.error(o)}t("config",i,a)}async function Wi(t,e,n,r,i){try{let a=[];if(i&&i.send_to){let s=i.send_to;Array.isArray(s)||(s=[s]);const o=await Pt(n);for(const c of s){const l=o.find(h=>h.measurementId===c),d=l&&e[l.appId];if(d)a.push(d);else{a=[];break}}}a.length===0&&(a=Object.values(e)),await Promise.all(a),t("event",r,i||{})}catch(a){m.error(a)}}function Ki(t,e,n,r){async function i(a,s,o){try{a==="event"?await Wi(t,e,n,s,o):a==="config"?await Gi(t,e,n,r,s,o):a==="consent"?t("consent","update",o):t("set",s)}catch(c){m.error(c)}}return i}function Xi(t,e,n,r,i){let a=function(...s){window[r].push(arguments)};return window[i]&&typeof window[i]=="function"&&(a=window[i]),window[i]=Ki(a,t,e,n),{gtagCore:a,wrappedGtag:window[i]}}function Yi(t){const e=window.document.getElementsByTagName("script");for(const n of Object.values(e))if(n.src&&n.src.includes(Ce)&&n.src.includes(t))return n;return null}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2020 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const Ji=30,Qi=1e3;class Zi{constructor(e={},n=Qi){this.throttleMetadata=e,this.intervalMillis=n}getThrottleMetadata(e){return this.throttleMetadata[e]}setThrottleMetadata(e,n){this.throttleMetadata[e]=n}deleteThrottleMetadata(e){delete this.throttleMetadata[e]}}const Bt=new Zi;function ea(t){return new Headers({Accept:"application/json","x-goog-api-key":t})}async function ta(t){var e;const{appId:n,apiKey:r}=t,i={method:"GET",headers:ea(r)},a=xi.replace("{app-id}",n),s=await fetch(a,i);if(s.status!==200&&s.status!==304){let o="";try{const c=await s.json();!((e=c.error)===null||e===void 0)&&e.message&&(o=c.error.message)}catch{}throw I.create("config-fetch-failed",{httpStatus:s.status,responseMessage:o})}return s.json()}async function na(t,e=Bt,n){const{appId:r,apiKey:i,measurementId:a}=t.options;if(!r)throw I.create("no-app-id");if(!i){if(a)return{measurementId:a,appId:r};throw I.create("no-api-key")}const s=e.getThrottleMetadata(r)||{backoffCount:0,throttleEndTimeMillis:Date.now()},o=new aa;return setTimeout(async()=>{o.abort()},n!==void 0?n:Ui),kt({appId:r,apiKey:i,measurementId:a},s,o,e)}async function kt(t,{throttleEndTimeMillis:e,backoffCount:n},r,i=Bt){var a;const{appId:s,measurementId:o}=t;try{await ra(r,e)}catch(c){if(o)return m.warn(`Timed out fetching this Firebase app's measurement ID from the server. Falling back to the measurement ID ${o} provided in the "measurementId" field in the local Firebase config. [${c==null?void 0:c.message}]`),{appId:s,measurementId:o};throw c}try{const c=await ta(t);return i.deleteThrottleMetadata(s),c}catch(c){const l=c;if(!ia(l)){if(i.deleteThrottleMetadata(s),o)return m.warn(`Failed to fetch this Firebase app's measurement ID from the server. Falling back to the measurement ID ${o} provided in the "measurementId" field in the local Firebase config. [${l==null?void 0:l.message}]`),{appId:s,measurementId:o};throw c}const d=Number((a=l==null?void 0:l.customData)===null||a===void 0?void 0:a.httpStatus)===503?Oe(n,i.intervalMillis,Ji):Oe(n,i.intervalMillis),h={throttleEndTimeMillis:Date.now()+d,backoffCount:n+1};return i.setThrottleMetadata(s,h),m.debug(`Calling attemptFetch again in ${d} millis`),kt(t,h,r,i)}}function ra(t,e){return new Promise((n,r)=>{const i=Math.max(e-Date.now(),0),a=setTimeout(n,i);t.addEventListener(()=>{clearTimeout(a),r(I.create("fetch-throttle",{throttleEndTimeMillis:e}))})})}function ia(t){if(!(t instanceof k)||!t.customData)return!1;const e=Number(t.customData.httpStatus);return e===429||e===500||e===503||e===504}class aa{constructor(){this.listeners=[]}addEventListener(e){this.listeners.push(e)}abort(){this.listeners.forEach(e=>e())}}async function sa(t,e,n,r,i){if(i&&i.global){t("event",n,r);return}else{const a=await e,s=Object.assign(Object.assign({},r),{send_to:a});t("event",n,s)}}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2020 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/async function oa(){if(_e())try{await Ie()}catch(t){return m.warn(I.create("indexeddb-unavailable",{errorInfo:t==null?void 0:t.toString()}).message),!1}else return m.warn(I.create("indexeddb-unavailable",{errorInfo:"IndexedDB is not available in this environment."}).message),!1;return!0}async function ca(t,e,n,r,i,a,s){var o;const c=na(t);c.then(b=>{n[b.measurementId]=b.appId,t.options.measurementId&&b.measurementId!==t.options.measurementId&&m.warn(`The measurement ID in the local Firebase config (${t.options.measurementId}) does not match the measurement ID fetched from the server (${b.measurementId}). To ensure analytics events are always sent to the correct Analytics property, update the measurement ID field in the local config or remove it from the local config.`)}).catch(b=>m.error(b)),e.push(c);const l=oa().then(b=>{if(b)return r.getId()}),[d,h]=await Promise.all([c,l]);Yi(a)||zi(a,d.measurementId),i("js",new Date);const g=(o=s==null?void 0:s.config)!==null&&o!==void 0?o:{};return g[Li]="firebase",g.update=!0,h!=null&&(g[$i]=h),i("config",d.measurementId,g),d.measurementId}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/class la{constructor(e){this.app=e}_delete(){return delete L[this.app.options.appId],Promise.resolve()}}let L={},Ve=[];const He={};let re="dataLayer",ua="gtag",ze,Ft,qe=!1;function da(){const t=[];if(Un()&&t.push("This is a browser extension environment."),ot()||t.push("Cookies are not available."),t.length>0){const e=t.map((r,i)=>`(${i+1}) ${r}`).join(" "),n=I.create("invalid-analytics-context",{errorInfo:e});m.warn(n.message)}}function fa(t,e,n){da();const r=t.options.appId;if(!r)throw I.create("no-app-id");if(!t.options.apiKey)if(t.options.measurementId)m.warn(`The "apiKey" field is empty in the local Firebase config. This is needed to fetch the latest measurement ID for this Firebase app. Falling back to the measurement ID ${t.options.measurementId} provided in the "measurementId" field in the local Firebase config.`);else throw I.create("no-api-key");if(L[r]!=null)throw I.create("already-exists",{id:r});if(!qe){qi(re);const{wrappedGtag:a,gtagCore:s}=Xi(L,Ve,He,re,ua);Ft=a,ze=s,qe=!0}return L[r]=ca(t,Ve,He,e,ze,re,n),new la(t)}function ha(t=ft()){t=ye(t);const e=j(t,G);return e.isInitialized()?e.getImmediate():pa(t)}function pa(t,e={}){const n=j(t,G);if(n.isInitialized()){const i=n.getImmediate();if(H(e,n.getOptions()))return i;throw I.create("already-initialized")}return n.initialize({options:e})}function ma(t,e,n,r){t=ye(t),sa(Ft,L[t.app.options.appId],e,n,r).catch(i=>m.error(i))}const Ge="@firebase/analytics",We="0.9.5";function ga(){R(new v(G,(e,{options:n})=>{const r=e.getProvider("app").getImmediate(),i=e.getProvider("installations-internal").getImmediate();return fa(r,i,n)},"PUBLIC")),R(new v("analytics-internal",t,"PRIVATE")),E(Ge,We),E(Ge,We,"esm2017");function t(e){try{const n=e.getProvider(G).getImmediate();return{logEvent:(r,i,a)=>ma(n,r,i,a)}}catch(n){throw I.create("interop-component-reg-failed",{reason:n})}}}ga();const Ke="@firebase/performance",ge="0.6.4";/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2020 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const $t=ge,ba="FB-PERF-TRACE-START",_a="FB-PERF-TRACE-STOP",be="FB-PERF-TRACE-MEASURE",Lt="_wt_",Ut="_fp",xt="_fcp",jt="_fid",Vt="@firebase/performance/config",Ht="@firebase/performance/configexpire",Ia="performance",zt="Performance";/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2020 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const ya={"trace started":"Trace {$traceName} was started before.","trace stopped":"Trace {$traceName} is not running.","nonpositive trace startTime":"Trace {$traceName} startTime should be positive.","nonpositive trace duration":"Trace {$traceName} duration should be positive.","no window":"Window is not available.","no app id":"App id is not available.","no project id":"Project id is not available.","no api key":"Api key is not available.","invalid cc log":"Attempted to queue invalid cc event","FB not default":"Performance can only start when Firebase app instance is the default one.","RC response not ok":"RC response is not ok","invalid attribute name":"Attribute name {$attributeName} is invalid.","invalid attribute value":"Attribute value {$attributeValue} is invalid.","invalid custom metric name":"Custom metric name {$customMetricName} is invalid","invalid String merger input":"Input for String merger is invalid, contact support team to resolve.","already initialized":"initializePerformance() has already been called with different options. To avoid this error, call initializePerformance() with the same options as when it was originally called, or call getPerformance() to return the already initialized instance."},p=new x(Ia,zt,ya);/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2020 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const w=new Ee(zt);w.logLevel=u.INFO;/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2020 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/let ie,qt;class f{constructor(e){if(this.window=e,!e)throw p.create("no window");this.performance=e.performance,this.PerformanceObserver=e.PerformanceObserver,this.windowLocation=e.location,this.navigator=e.navigator,this.document=e.document,this.navigator&&this.navigator.cookieEnabled&&(this.localStorage=e.localStorage),e.perfMetrics&&e.perfMetrics.onFirstInputDelay&&(this.onFirstInputDelay=e.perfMetrics.onFirstInputDelay)}getUrl(){return this.windowLocation.href.split("?")[0]}mark(e){!this.performance||!this.performance.mark||this.performance.mark(e)}measure(e,n,r){!this.performance||!this.performance.measure||this.performance.measure(e,n,r)}getEntriesByType(e){return!this.performance||!this.performance.getEntriesByType?[]:this.performance.getEntriesByType(e)}getEntriesByName(e){return!this.performance||!this.performance.getEntriesByName?[]:this.performance.getEntriesByName(e)}getTimeOrigin(){return this.performance&&(this.performance.timeOrigin||this.performance.timing.navigationStart)}requiredApisAvailable(){return!fetch||!Promise||!ot()?(w.info("Firebase Performance cannot start if browser does not support fetch and Promise or cookie is disabled."),!1):_e()?!0:(w.info("IndexedDB is not supported by current browswer"),!1)}setupObserver(e,n){if(!this.PerformanceObserver)return;new this.PerformanceObserver(i=>{for(const a of i.getEntries())n(a)}).observe({entryTypes:[e]})}static getInstance(){return ie===void 0&&(ie=new f(qt)),ie}}function Ea(t){qt=t}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2020 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/let Gt;function wa(t){const e=t.getId();return e.then(n=>{Gt=n}),e}function Re(){return Gt}function Ta(t){const e=t.getToken();return e.then(n=>{}),e}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2020 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/function Xe(t,e){const n=t.length-e.length;if(n<0||n>1)throw p.create("invalid String merger input");const r=[];for(let i=0;i<t.length;i++)r.push(t.charAt(i)),e.length>i&&r.push(e.charAt(i));return r.join("")}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2019 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/let ae;class _{constructor(){this.instrumentationEnabled=!0,this.dataCollectionEnabled=!0,this.loggingEnabled=!1,this.tracesSamplingRate=1,this.networkRequestsSamplingRate=1,this.logEndPointUrl="https://firebaselogging.googleapis.com/v0cc/log?format=json_proto",this.flTransportEndpointUrl=Xe("hts/frbslgigp.ogepscmv/ieo/eaylg","tp:/ieaeogn-agolai.o/1frlglgc/o"),this.transportKey=Xe("AzSC8r6ReiGqFMyfvgow","Iayx0u-XT3vksVM-pIV"),this.logSource=462,this.logTraceAfterSampling=!1,this.logNetworkAfterSampling=!1,this.configTimeToLive=12}getFlTransportFullUrl(){return this.flTransportEndpointUrl.concat("?key=",this.transportKey)}static getInstance(){return ae===void 0&&(ae=new _),ae}}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2020 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/var F;(function(t){t[t.UNKNOWN=0]="UNKNOWN",t[t.VISIBLE=1]="VISIBLE",t[t.HIDDEN=2]="HIDDEN"})(F||(F={}));const va=["firebase_","google_","ga_"],Aa=new RegExp("^[a-zA-Z]\\w*$"),Sa=40,Ca=100;function Ra(){const t=f.getInstance().navigator;return t!=null&&t.serviceWorker?t.serviceWorker.controller?2:3:1}function Wt(){switch(f.getInstance().document.visibilityState){case"visible":return F.VISIBLE;case"hidden":return F.HIDDEN;default:return F.UNKNOWN}}function Da(){const e=f.getInstance().navigator.connection;switch(e&&e.effectiveType){case"slow-2g":return 1;case"2g":return 2;case"3g":return 3;case"4g":return 4;default:return 0}}function Ma(t){return t.length===0||t.length>Sa?!1:!va.some(n=>t.startsWith(n))&&!!t.match(Aa)}function Na(t){return t.length!==0&&t.length<=Ca}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2020 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/function Kt(t){var e;const n=(e=t.options)===null||e===void 0?void 0:e.appId;if(!n)throw p.create("no app id");return n}function Oa(t){var e;const n=(e=t.options)===null||e===void 0?void 0:e.projectId;if(!n)throw p.create("no project id");return n}function Pa(t){var e;const n=(e=t.options)===null||e===void 0?void 0:e.apiKey;if(!n)throw p.create("no api key");return n}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2020 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const Ba="0.0.1",y={loggingEnabled:!0},ka="FIREBASE_INSTALLATIONS_AUTH";function Fa(t,e){const n=$a();return n?(Ye(n),Promise.resolve()):xa(t,e).then(Ye).then(r=>La(r),()=>{})}function $a(){const t=f.getInstance().localStorage;if(!t)return;const e=t.getItem(Ht);if(!e||!ja(e))return;const n=t.getItem(Vt);if(n)try{return JSON.parse(n)}catch{return}}function La(t){const e=f.getInstance().localStorage;!t||!e||(e.setItem(Vt,JSON.stringify(t)),e.setItem(Ht,String(Date.now()+_.getInstance().configTimeToLive*60*60*1e3)))}const Ua="Could not fetch config, will use default configs";function xa(t,e){return Ta(t.installations).then(n=>{const r=Oa(t.app),i=Pa(t.app),a=`https://firebaseremoteconfig.googleapis.com/v1/projects/${r}/namespaces/fireperf:fetch?key=${i}`,s=new Request(a,{method:"POST",headers:{Authorization:`${ka} ${n}`},body:JSON.stringify({app_instance_id:e,app_instance_id_token:n,app_id:Kt(t.app),app_version:$t,sdk_version:Ba})});return fetch(s).then(o=>{if(o.ok)return o.json();throw p.create("RC response not ok")})}).catch(()=>{w.info(Ua)})}function Ye(t){if(!t)return t;const e=_.getInstance(),n=t.entries||{};return n.fpr_enabled!==void 0?e.loggingEnabled=String(n.fpr_enabled)==="true":e.loggingEnabled=y.loggingEnabled,n.fpr_log_source?e.logSource=Number(n.fpr_log_source):y.logSource&&(e.logSource=y.logSource),n.fpr_log_endpoint_url?e.logEndPointUrl=n.fpr_log_endpoint_url:y.logEndPointUrl&&(e.logEndPointUrl=y.logEndPointUrl),n.fpr_log_transport_key?e.transportKey=n.fpr_log_transport_key:y.transportKey&&(e.transportKey=y.transportKey),n.fpr_vc_network_request_sampling_rate!==void 0?e.networkRequestsSamplingRate=Number(n.fpr_vc_network_request_sampling_rate):y.networkRequestsSamplingRate!==void 0&&(e.networkRequestsSamplingRate=y.networkRequestsSamplingRate),n.fpr_vc_trace_sampling_rate!==void 0?e.tracesSamplingRate=Number(n.fpr_vc_trace_sampling_rate):y.tracesSamplingRate!==void 0&&(e.tracesSamplingRate=y.tracesSamplingRate),e.logTraceAfterSampling=Je(e.tracesSamplingRate),e.logNetworkAfterSampling=Je(e.networkRequestsSamplingRate),t}function ja(t){return Number(t)>Date.now()}function Je(t){return Math.random()<=t}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2020 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/let De=1,se;function Xt(t){return De=2,se=se||Ha(t),se}function Va(){return De===3}function Ha(t){return za().then(()=>wa(t.installations)).then(e=>Fa(t,e)).then(()=>Qe(),()=>Qe())}function za(){const t=f.getInstance().document;return new Promise(e=>{if(t&&t.readyState!=="complete"){const n=()=>{t.readyState==="complete"&&(t.removeEventListener("readystatechange",n),e())};t.addEventListener("readystatechange",n)}else e()})}function Qe(){De=3}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2020 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const Me=10*1e3,qa=5.5*1e3,Yt=3,Ga=1e3;let W=Yt,C=[],Ze=!1;function Wa(){Ze||(Y(qa),Ze=!0)}function Y(t){setTimeout(()=>{if(W!==0){if(!C.length)return Y(Me);Ka()}},t)}function Ka(){const t=C.splice(0,Ga),e=t.map(r=>({source_extension_json_proto3:r.message,event_time_ms:String(r.eventTime)})),n={request_time_ms:String(Date.now()),client_info:{client_type:1,js_client_info:{}},log_source:_.getInstance().logSource,log_event:e};Xa(n,t).catch(()=>{C=[...t,...C],W--,w.info(`Tries left: ${W}.`),Y(Me)})}function Xa(t,e){return Ya(t).then(n=>(n.ok||w.info("Call to Firebase backend failed."),n.json())).then(n=>{const r=Number(n.nextRequestWaitMillis);let i=Me;isNaN(r)||(i=Math.max(r,i));const a=n.logResponseDetails;Array.isArray(a)&&a.length>0&&a[0].responseAction==="RETRY_REQUEST_LATER"&&(C=[...e,...C],w.info("Retry transport request later.")),W=Yt,Y(i)})}function Ya(t){const e=_.getInstance().getFlTransportFullUrl();return fetch(e,{method:"POST",body:JSON.stringify(t)})}function Ja(t){if(!t.eventTime||!t.message)throw p.create("invalid cc log");C=[...C,t]}function Qa(t){return(...e)=>{const n=t(...e);Ja({message:n,eventTime:Date.now()})}}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2020 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/let oe;function Jt(t,e){oe||(oe=Qa(es)),oe(t,e)}function V(t){const e=_.getInstance();!e.instrumentationEnabled&&t.isAuto||!e.dataCollectionEnabled&&!t.isAuto||f.getInstance().requiredApisAvailable()&&(t.isAuto&&Wt()!==F.VISIBLE||(Va()?ce(t):Xt(t.performanceController).then(()=>ce(t),()=>ce(t))))}function ce(t){if(!Re())return;const e=_.getInstance();!e.loggingEnabled||!e.logTraceAfterSampling||setTimeout(()=>Jt(t,1),0)}function Za(t){const e=_.getInstance();if(!e.instrumentationEnabled)return;const n=t.url,r=e.logEndPointUrl.split("?")[0],i=e.flTransportEndpointUrl.split("?")[0];n===r||n===i||!e.loggingEnabled||!e.logNetworkAfterSampling||setTimeout(()=>Jt(t,0),0)}function es(t,e){return e===0?ts(t):ns(t)}function ts(t){const e={url:t.url,http_method:t.httpMethod||0,http_response_code:200,response_payload_bytes:t.responsePayloadBytes,client_start_time_us:t.startTimeUs,time_to_response_initiated_us:t.timeToResponseInitiatedUs,time_to_response_completed_us:t.timeToResponseCompletedUs},n={application_info:Qt(t.performanceController.app),network_request_metric:e};return JSON.stringify(n)}function ns(t){const e={name:t.name,is_auto:t.isAuto,client_start_time_us:t.startTimeUs,duration_us:t.durationUs};Object.keys(t.counters).length!==0&&(e.counters=t.counters);const n=t.getAttributes();Object.keys(n).length!==0&&(e.custom_attributes=n);const r={application_info:Qt(t.performanceController.app),trace_metric:e};return JSON.stringify(r)}function Qt(t){return{google_app_id:Kt(t),app_instance_id:Re(),web_app_info:{sdk_version:$t,page_url:f.getInstance().getUrl(),service_worker_status:Ra(),visibility_state:Wt(),effective_connection_type:Da()},application_process_state:0}}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2020 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const rs=100,is="_",as=[Ut,xt,jt];function ss(t,e){return t.length===0||t.length>rs?!1:e&&e.startsWith(Lt)&&as.indexOf(t)>-1||!t.startsWith(is)}function os(t){const e=Math.floor(t);return e<t&&w.info(`Metric value should be an Integer, setting the value as : ${e}.`),e}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2020 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/class N{constructor(e,n,r=!1,i){this.performanceController=e,this.name=n,this.isAuto=r,this.state=1,this.customAttributes={},this.counters={},this.api=f.getInstance(),this.randomId=Math.floor(Math.random()*1e6),this.isAuto||(this.traceStartMark=`${ba}-${this.randomId}-${this.name}`,this.traceStopMark=`${_a}-${this.randomId}-${this.name}`,this.traceMeasure=i||`${be}-${this.randomId}-${this.name}`,i&&this.calculateTraceMetrics())}start(){if(this.state!==1)throw p.create("trace started",{traceName:this.name});this.api.mark(this.traceStartMark),this.state=2}stop(){if(this.state!==2)throw p.create("trace stopped",{traceName:this.name});this.state=3,this.api.mark(this.traceStopMark),this.api.measure(this.traceMeasure,this.traceStartMark,this.traceStopMark),this.calculateTraceMetrics(),V(this)}record(e,n,r){if(e<=0)throw p.create("nonpositive trace startTime",{traceName:this.name});if(n<=0)throw p.create("nonpositive trace duration",{traceName:this.name});if(this.durationUs=Math.floor(n*1e3),this.startTimeUs=Math.floor(e*1e3),r&&r.attributes&&(this.customAttributes=Object.assign({},r.attributes)),r&&r.metrics)for(const i of Object.keys(r.metrics))isNaN(Number(r.metrics[i]))||(this.counters[i]=Math.floor(Number(r.metrics[i])));V(this)}incrementMetric(e,n=1){this.counters[e]===void 0?this.putMetric(e,n):this.putMetric(e,this.counters[e]+n)}putMetric(e,n){if(ss(e,this.name))this.counters[e]=os(n??0);else throw p.create("invalid custom metric name",{customMetricName:e})}getMetric(e){return this.counters[e]||0}putAttribute(e,n){const r=Ma(e),i=Na(n);if(r&&i){this.customAttributes[e]=n;return}if(!r)throw p.create("invalid attribute name",{attributeName:e});if(!i)throw p.create("invalid attribute value",{attributeValue:n})}getAttribute(e){return this.customAttributes[e]}removeAttribute(e){this.customAttributes[e]!==void 0&&delete this.customAttributes[e]}getAttributes(){return Object.assign({},this.customAttributes)}setStartTime(e){this.startTimeUs=e}setDuration(e){this.durationUs=e}calculateTraceMetrics(){const e=this.api.getEntriesByName(this.traceMeasure),n=e&&e[0];n&&(this.durationUs=Math.floor(n.duration*1e3),this.startTimeUs=Math.floor((n.startTime+this.api.getTimeOrigin())*1e3))}static createOobTrace(e,n,r,i){const a=f.getInstance().getUrl();if(!a)return;const s=new N(e,Lt+a,!0),o=Math.floor(f.getInstance().getTimeOrigin()*1e3);s.setStartTime(o),n&&n[0]&&(s.setDuration(Math.floor(n[0].duration*1e3)),s.putMetric("domInteractive",Math.floor(n[0].domInteractive*1e3)),s.putMetric("domContentLoadedEventEnd",Math.floor(n[0].domContentLoadedEventEnd*1e3)),s.putMetric("loadEventEnd",Math.floor(n[0].loadEventEnd*1e3)));const c="first-paint",l="first-contentful-paint";if(r){const d=r.find(g=>g.name===c);d&&d.startTime&&s.putMetric(Ut,Math.floor(d.startTime*1e3));const h=r.find(g=>g.name===l);h&&h.startTime&&s.putMetric(xt,Math.floor(h.startTime*1e3)),i&&s.putMetric(jt,Math.floor(i*1e3))}V(s)}static createUserTimingTrace(e,n){const r=new N(e,n,!1,n);V(r)}}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2020 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/function et(t,e){const n=e;if(!n||n.responseStart===void 0)return;const r=f.getInstance().getTimeOrigin(),i=Math.floor((n.startTime+r)*1e3),a=n.responseStart?Math.floor((n.responseStart-n.startTime)*1e3):void 0,s=Math.floor((n.responseEnd-n.startTime)*1e3),o=n.name&&n.name.split("?")[0],c={performanceController:t,url:o,responsePayloadBytes:n.transferSize,startTimeUs:i,timeToResponseInitiatedUs:a,timeToResponseCompletedUs:s};Za(c)}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2020 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/const cs=5e3;function tt(t){Re()&&(setTimeout(()=>us(t),0),setTimeout(()=>ls(t),0),setTimeout(()=>ds(t),0))}function ls(t){const e=f.getInstance(),n=e.getEntriesByType("resource");for(const r of n)et(t,r);e.setupObserver("resource",r=>et(t,r))}function us(t){const e=f.getInstance(),n=e.getEntriesByType("navigation"),r=e.getEntriesByType("paint");if(e.onFirstInputDelay){let i=setTimeout(()=>{N.createOobTrace(t,n,r),i=void 0},cs);e.onFirstInputDelay(a=>{i&&(clearTimeout(i),N.createOobTrace(t,n,r,a))})}else N.createOobTrace(t,n,r)}function ds(t){const e=f.getInstance(),n=e.getEntriesByType("measure");for(const r of n)nt(t,r);e.setupObserver("measure",r=>nt(t,r))}function nt(t,e){const n=e.name;n.substring(0,be.length)!==be&&N.createUserTimingTrace(t,n)}/**
|
|
||||||
* @license
|
|
||||||
* Copyright 2020 Google LLC
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/class fs{constructor(e,n){this.app=e,this.installations=n,this.initialized=!1}_init(e){this.initialized||((e==null?void 0:e.dataCollectionEnabled)!==void 0&&(this.dataCollectionEnabled=e.dataCollectionEnabled),(e==null?void 0:e.instrumentationEnabled)!==void 0&&(this.instrumentationEnabled=e.instrumentationEnabled),f.getInstance().requiredApisAvailable()?Ie().then(n=>{n&&(Wa(),Xt(this).then(()=>tt(this),()=>tt(this)),this.initialized=!0)}).catch(n=>{w.info(`Environment doesn't support IndexedDB: ${n}`)}):w.info('Firebase Performance cannot start if the browser does not support "Fetch" and "Promise", or cookies are disabled.'))}set instrumentationEnabled(e){_.getInstance().instrumentationEnabled=e}get instrumentationEnabled(){return _.getInstance().instrumentationEnabled}set dataCollectionEnabled(e){_.getInstance().dataCollectionEnabled=e}get dataCollectionEnabled(){return _.getInstance().dataCollectionEnabled}}const hs="[DEFAULT]";function ps(t=ft()){return t=ye(t),j(t,"performance").getImmediate()}const ms=(t,{options:e})=>{const n=t.getProvider("app").getImmediate(),r=t.getProvider("installations-internal").getImmediate();if(n.name!==hs)throw p.create("FB not default");if(typeof window>"u")throw p.create("no window");Ea(window);const i=new fs(n,r);return i._init(e),i};function gs(){R(new v("performance",ms,"PUBLIC")),E(Ke,ge),E(Ke,ge,"esm2017")}gs();const bs=t=>(on("data-v-3835a11e"),t=t(),cn(),t),_s=bs(()=>T("div",{"data-v-98ddab3d":"","data-v-8f7cd5e4":"",class:"VPContent",id:"VPContent"},[T("div",{"data-v-6c4a3ffe":"","data-v-98ddab3d":"",class:"NotFound"},[T("img",{src:"https://rust.coldmint.top/ftp/ling/cdnpng/logo.png",alt:"",class:"notfound-img"}),T("p",{"data-v-6c4a3ffe":"",class:"code"},"404"),T("h1",{"data-v-6c4a3ffe":"",class:"title"}," 你干嘛~,这里什么都没有! "),T("div",{"data-v-6c4a3ffe":"",class:"divider"}),T("blockquote",{"data-v-6c4a3ffe":"",class:"quote"}," 你寻找的页面可能不存在或被迁移…… "),T("div",{"data-v-6c4a3ffe":"",class:"action"},[T("a",{"data-v-6c4a3ffe":"",class:"link",href:"/","aria-label":"go to home"}," 返回主页 ")])])],-1)),Is={__name:"NotFound",setup(t){const{Layout:e}=rt;return(n,r)=>(nn(),rn(sn(e),null,{"not-found":an(()=>[_s]),_:1}))}},ys=tn(Is,[["__scopeId","data-v-3835a11e"]]),Es=()=>{const e=dt({apiKey:"AIzaSyANVvapu0ihi1cM8ZzuXTkwjx9lM_J1RyQ",authDomain:"rw-api-code-d0779.firebaseapp.com",projectId:"rw-api-code-d0779",storageBucket:"rw-api-code-d0779.appspot.com",messagingSenderId:"363611843335",appId:"1:363611843335:web:f15aef7ab427f52b4033a2",measurementId:"G-XJH5TKP5VL"});return ha(e),ps(e),"Firebase initialized successfully"};(async function(){try{const t=await Es();console.log(t)}catch(t){console.error(t)}})();function ws(t){return new Promise(e=>setTimeout(e,t))}async function Ts(){try{await navigator.permissions.query({name:"clipboard-write"})}catch(t){console.error(t)}}async function vs(){try{await ws(1e3);const t=document.getElementsByClassName("copy");for(let e=0;e<t.length;e++){const n=t[e];n.addEventListener("touchend",async()=>{await Ts();const a=[...n.parentNode.querySelector("code").querySelectorAll("span")],s=[...new Set(a.map(o=>o.textContent))].join("");try{await navigator.clipboard.writeText(s)}catch{const c=document.createElement("textarea");c.value=s,document.body.appendChild(c),c.select(),document.execCommand("copy"),document.body.removeChild(c)}})}}catch(t){console.error(t)}}vs();const As={...rt,Layout:ys};function Zt(t){if(t.extends){const e=Zt(t.extends);return{...e,...t,async enhanceApp(n){e.enhanceApp&&await e.enhanceApp(n),t.enhanceApp&&await t.enhanceApp(n)}}}return t}const $=Zt(As),Ss=yn({name:"VitePressApp",setup(){const{site:t}=En();return wn(()=>{Tn(()=>{document.documentElement.lang=t.value.lang,document.documentElement.dir=t.value.dir})}),vn(),An(),Sn(),$.setup&&$.setup(),()=>Cn($.Layout)}});async function Cs(){const t=Ds(),e=Rs();e.provide(un,t);const n=dn(t.route);return e.provide(fn,n),e.component("Content",hn),e.component("ClientOnly",pn),Object.defineProperties(e.config.globalProperties,{$frontmatter:{get(){return n.frontmatter.value}},$params:{get(){return n.page.value.params}}}),$.enhanceApp&&await $.enhanceApp({app:e,router:t,siteData:mn}),{app:e,router:t,data:n}}function Rs(){return gn(Ss)}function Ds(){let t=le,e;return bn(n=>{let r=_n(n);return r?(t&&(e=r),(t||e===r)&&(r=r.replace(/\.js$/,".lean.js")),le&&(t=!1),In(()=>import(r),[])):null},$.NotFound)}le&&Cs().then(({app:t,router:e,data:n})=>{e.go().then(()=>{ln(e.route,n.site),t.mount("#app")})});export{Cs as createApp};
|
|
961
assets/app.9ee7a110.js
Normal file
961
assets/app.9ee7a110.js
Normal file
|
@ -0,0 +1,961 @@
|
||||||
|
import{_ as hn,o as pn,D as mn,E as gn,b as bn,S as In,U as yn,C as T,d as _n,Q as he,a5 as En,u as wn,q as Tn,k as vn,a6 as An,a7 as Sn,a8 as Cn,a9 as Dn,aa as Rn,ab as Mn,ac as Nn,ad as On,ae as Pn,af as Bn,ag as $n,ah as kn,ai as Fn,M as Ln}from"./chunks/framework.fcc0bf38.js";import{t as ht}from"./chunks/theme.9136979b.js";/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2017 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*//**
|
||||||
|
* @license
|
||||||
|
* Copyright 2017 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const pt=function(e){const t=[];let n=0;for(let r=0;r<e.length;r++){let i=e.charCodeAt(r);i<128?t[n++]=i:i<2048?(t[n++]=i>>6|192,t[n++]=i&63|128):(i&64512)===55296&&r+1<e.length&&(e.charCodeAt(r+1)&64512)===56320?(i=65536+((i&1023)<<10)+(e.charCodeAt(++r)&1023),t[n++]=i>>18|240,t[n++]=i>>12&63|128,t[n++]=i>>6&63|128,t[n++]=i&63|128):(t[n++]=i>>12|224,t[n++]=i>>6&63|128,t[n++]=i&63|128)}return t},Un=function(e){const t=[];let n=0,r=0;for(;n<e.length;){const i=e[n++];if(i<128)t[r++]=String.fromCharCode(i);else if(i>191&&i<224){const a=e[n++];t[r++]=String.fromCharCode((i&31)<<6|a&63)}else if(i>239&&i<365){const a=e[n++],s=e[n++],o=e[n++],c=((i&7)<<18|(a&63)<<12|(s&63)<<6|o&63)-65536;t[r++]=String.fromCharCode(55296+(c>>10)),t[r++]=String.fromCharCode(56320+(c&1023))}else{const a=e[n++],s=e[n++];t[r++]=String.fromCharCode((i&15)<<12|(a&63)<<6|s&63)}}return t.join("")},mt={byteToCharMap_:null,charToByteMap_:null,byteToCharMapWebSafe_:null,charToByteMapWebSafe_:null,ENCODED_VALS_BASE:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",get ENCODED_VALS(){return this.ENCODED_VALS_BASE+"+/="},get ENCODED_VALS_WEBSAFE(){return this.ENCODED_VALS_BASE+"-_."},HAS_NATIVE_SUPPORT:typeof atob=="function",encodeByteArray(e,t){if(!Array.isArray(e))throw Error("encodeByteArray takes an array as a parameter");this.init_();const n=t?this.byteToCharMapWebSafe_:this.byteToCharMap_,r=[];for(let i=0;i<e.length;i+=3){const a=e[i],s=i+1<e.length,o=s?e[i+1]:0,c=i+2<e.length,l=c?e[i+2]:0,d=a>>2,h=(a&3)<<4|o>>4;let g=(o&15)<<2|l>>6,b=l&63;c||(b=64,s||(g=64)),r.push(n[d],n[h],n[g],n[b])}return r.join("")},encodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?btoa(e):this.encodeByteArray(pt(e),t)},decodeString(e,t){return this.HAS_NATIVE_SUPPORT&&!t?atob(e):Un(this.decodeStringToByteArray(e,t))},decodeStringToByteArray(e,t){this.init_();const n=t?this.charToByteMapWebSafe_:this.charToByteMap_,r=[];for(let i=0;i<e.length;){const a=n[e.charAt(i++)],o=i<e.length?n[e.charAt(i)]:0;++i;const l=i<e.length?n[e.charAt(i)]:64;++i;const h=i<e.length?n[e.charAt(i)]:64;if(++i,a==null||o==null||l==null||h==null)throw new xn;const g=a<<2|o>>4;if(r.push(g),l!==64){const b=o<<4&240|l>>2;if(r.push(b),h!==64){const fn=l<<6&192|h;r.push(fn)}}}return r},init_(){if(!this.byteToCharMap_){this.byteToCharMap_={},this.charToByteMap_={},this.byteToCharMapWebSafe_={},this.charToByteMapWebSafe_={};for(let e=0;e<this.ENCODED_VALS.length;e++)this.byteToCharMap_[e]=this.ENCODED_VALS.charAt(e),this.charToByteMap_[this.byteToCharMap_[e]]=e,this.byteToCharMapWebSafe_[e]=this.ENCODED_VALS_WEBSAFE.charAt(e),this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[e]]=e,e>=this.ENCODED_VALS_BASE.length&&(this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(e)]=e,this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(e)]=e)}}};class xn extends Error{constructor(){super(...arguments),this.name="DecodeBase64StringError"}}const jn=function(e){const t=pt(e);return mt.encodeByteArray(t,!0)},gt=function(e){return jn(e).replace(/\./g,"")},Vn=function(e){try{return mt.decodeString(e,!0)}catch(t){console.error("base64Decode failed: ",t)}return null};/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2022 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/function Hn(){if(typeof self<"u")return self;if(typeof window<"u")return window;if(typeof global<"u")return global;throw new Error("Unable to locate global object.")}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2022 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const zn=()=>Hn().__FIREBASE_DEFAULTS__,qn=()=>{if(typeof process>"u"||typeof process.env>"u")return;const e={}.__FIREBASE_DEFAULTS__;if(e)return JSON.parse(e)},Wn=()=>{if(typeof document>"u")return;let e;try{e=document.cookie.match(/__FIREBASE_DEFAULTS__=([^;]+)/)}catch{return}const t=e&&Vn(e[1]);return t&&JSON.parse(t)},Gn=()=>{try{return zn()||qn()||Wn()}catch(e){console.info(`Unable to get __FIREBASE_DEFAULTS__ due to: ${e}`);return}},Kn=()=>{var e;return(e=Gn())===null||e===void 0?void 0:e.config};/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2017 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/class Xn{constructor(){this.reject=()=>{},this.resolve=()=>{},this.promise=new Promise((t,n)=>{this.resolve=t,this.reject=n})}wrapCallback(t){return(n,r)=>{n?this.reject(n):this.resolve(r),typeof t=="function"&&(this.promise.catch(()=>{}),t.length===1?t(n):t(n,r))}}}function Yn(){const e=typeof chrome=="object"?chrome.runtime:typeof browser=="object"?browser.runtime:void 0;return typeof e=="object"&&e.id!==void 0}function ve(){try{return typeof indexedDB=="object"}catch{return!1}}function Ae(){return new Promise((e,t)=>{try{let n=!0;const r="validate-browser-context-for-indexeddb-analytics-module",i=self.indexedDB.open(r);i.onsuccess=()=>{i.result.close(),n||self.indexedDB.deleteDatabase(r),e(!0)},i.onupgradeneeded=()=>{n=!1},i.onerror=()=>{var a;t(((a=i.error)===null||a===void 0?void 0:a.message)||"")}}catch(n){t(n)}})}function bt(){return!(typeof navigator>"u"||!navigator.cookieEnabled)}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2017 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const Jn="FirebaseError";class k extends Error{constructor(t,n,r){super(n),this.code=t,this.customData=r,this.name=Jn,Object.setPrototypeOf(this,k.prototype),Error.captureStackTrace&&Error.captureStackTrace(this,j.prototype.create)}}class j{constructor(t,n,r){this.service=t,this.serviceName=n,this.errors=r}create(t,...n){const r=n[0]||{},i=`${this.service}/${t}`,a=this.errors[t],s=a?Qn(a,r):"Error",o=`${this.serviceName}: ${s} (${i}).`;return new k(i,o,r)}}function Qn(e,t){return e.replace(Zn,(n,r)=>{const i=t[r];return i!=null?String(i):`<${r}?>`})}const Zn=/\{\$([^}]+)}/g;function z(e,t){if(e===t)return!0;const n=Object.keys(e),r=Object.keys(t);for(const i of n){if(!r.includes(i))return!1;const a=e[i],s=t[i];if(Le(a)&&Le(s)){if(!z(a,s))return!1}else if(a!==s)return!1}for(const i of r)if(!n.includes(i))return!1;return!0}function Le(e){return e!==null&&typeof e=="object"}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const er=1e3,tr=2,nr=4*60*60*1e3,rr=.5;function Ue(e,t=er,n=tr){const r=t*Math.pow(n,e),i=Math.round(rr*r*(Math.random()-.5)*2);return Math.min(nr,r+i)}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2021 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/function Se(e){return e&&e._delegate?e._delegate:e}class v{constructor(t,n,r){this.name=t,this.instanceFactory=n,this.type=r,this.multipleInstances=!1,this.serviceProps={},this.instantiationMode="LAZY",this.onInstanceCreated=null}setInstantiationMode(t){return this.instantiationMode=t,this}setMultipleInstances(t){return this.multipleInstances=t,this}setServiceProps(t){return this.serviceProps=t,this}setInstanceCreatedCallback(t){return this.onInstanceCreated=t,this}}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const M="[DEFAULT]";/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/class ir{constructor(t,n){this.name=t,this.container=n,this.component=null,this.instances=new Map,this.instancesDeferred=new Map,this.instancesOptions=new Map,this.onInitCallbacks=new Map}get(t){const n=this.normalizeInstanceIdentifier(t);if(!this.instancesDeferred.has(n)){const r=new Xn;if(this.instancesDeferred.set(n,r),this.isInitialized(n)||this.shouldAutoInitialize())try{const i=this.getOrInitializeService({instanceIdentifier:n});i&&r.resolve(i)}catch{}}return this.instancesDeferred.get(n).promise}getImmediate(t){var n;const r=this.normalizeInstanceIdentifier(t==null?void 0:t.identifier),i=(n=t==null?void 0:t.optional)!==null&&n!==void 0?n:!1;if(this.isInitialized(r)||this.shouldAutoInitialize())try{return this.getOrInitializeService({instanceIdentifier:r})}catch(a){if(i)return null;throw a}else{if(i)return null;throw Error(`Service ${this.name} is not available`)}}getComponent(){return this.component}setComponent(t){if(t.name!==this.name)throw Error(`Mismatching Component ${t.name} for Provider ${this.name}.`);if(this.component)throw Error(`Component for ${this.name} has already been provided`);if(this.component=t,!!this.shouldAutoInitialize()){if(sr(t))try{this.getOrInitializeService({instanceIdentifier:M})}catch{}for(const[n,r]of this.instancesDeferred.entries()){const i=this.normalizeInstanceIdentifier(n);try{const a=this.getOrInitializeService({instanceIdentifier:i});r.resolve(a)}catch{}}}}clearInstance(t=M){this.instancesDeferred.delete(t),this.instancesOptions.delete(t),this.instances.delete(t)}async delete(){const t=Array.from(this.instances.values());await Promise.all([...t.filter(n=>"INTERNAL"in n).map(n=>n.INTERNAL.delete()),...t.filter(n=>"_delete"in n).map(n=>n._delete())])}isComponentSet(){return this.component!=null}isInitialized(t=M){return this.instances.has(t)}getOptions(t=M){return this.instancesOptions.get(t)||{}}initialize(t={}){const{options:n={}}=t,r=this.normalizeInstanceIdentifier(t.instanceIdentifier);if(this.isInitialized(r))throw Error(`${this.name}(${r}) has already been initialized`);if(!this.isComponentSet())throw Error(`Component ${this.name} has not been registered yet`);const i=this.getOrInitializeService({instanceIdentifier:r,options:n});for(const[a,s]of this.instancesDeferred.entries()){const o=this.normalizeInstanceIdentifier(a);r===o&&s.resolve(i)}return i}onInit(t,n){var r;const i=this.normalizeInstanceIdentifier(n),a=(r=this.onInitCallbacks.get(i))!==null&&r!==void 0?r:new Set;a.add(t),this.onInitCallbacks.set(i,a);const s=this.instances.get(i);return s&&t(s,i),()=>{a.delete(t)}}invokeOnInitCallbacks(t,n){const r=this.onInitCallbacks.get(n);if(r)for(const i of r)try{i(t,n)}catch{}}getOrInitializeService({instanceIdentifier:t,options:n={}}){let r=this.instances.get(t);if(!r&&this.component&&(r=this.component.instanceFactory(this.container,{instanceIdentifier:ar(t),options:n}),this.instances.set(t,r),this.instancesOptions.set(t,n),this.invokeOnInitCallbacks(r,t),this.component.onInstanceCreated))try{this.component.onInstanceCreated(this.container,t,r)}catch{}return r||null}normalizeInstanceIdentifier(t=M){return this.component?this.component.multipleInstances?t:M:t}shouldAutoInitialize(){return!!this.component&&this.component.instantiationMode!=="EXPLICIT"}}function ar(e){return e===M?void 0:e}function sr(e){return e.instantiationMode==="EAGER"}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/class or{constructor(t){this.name=t,this.providers=new Map}addComponent(t){const n=this.getProvider(t.name);if(n.isComponentSet())throw new Error(`Component ${t.name} has already been registered with ${this.name}`);n.setComponent(t)}addOrOverwriteComponent(t){this.getProvider(t.name).isComponentSet()&&this.providers.delete(t.name),this.addComponent(t)}getProvider(t){if(this.providers.has(t))return this.providers.get(t);const n=new ir(t,this);return this.providers.set(t,n),n}getProviders(){return Array.from(this.providers.values())}}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2017 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/var u;(function(e){e[e.DEBUG=0]="DEBUG",e[e.VERBOSE=1]="VERBOSE",e[e.INFO=2]="INFO",e[e.WARN=3]="WARN",e[e.ERROR=4]="ERROR",e[e.SILENT=5]="SILENT"})(u||(u={}));const cr={debug:u.DEBUG,verbose:u.VERBOSE,info:u.INFO,warn:u.WARN,error:u.ERROR,silent:u.SILENT},lr=u.INFO,ur={[u.DEBUG]:"log",[u.VERBOSE]:"log",[u.INFO]:"info",[u.WARN]:"warn",[u.ERROR]:"error"},dr=(e,t,...n)=>{if(t<e.logLevel)return;const r=new Date().toISOString(),i=ur[t];if(i)console[i](`[${r}] ${e.name}:`,...n);else throw new Error(`Attempted to log a message with an invalid logType (value: ${t})`)};class Ce{constructor(t){this.name=t,this._logLevel=lr,this._logHandler=dr,this._userLogHandler=null}get logLevel(){return this._logLevel}set logLevel(t){if(!(t in u))throw new TypeError(`Invalid value "${t}" assigned to \`logLevel\``);this._logLevel=t}setLogLevel(t){this._logLevel=typeof t=="string"?cr[t]:t}get logHandler(){return this._logHandler}set logHandler(t){if(typeof t!="function")throw new TypeError("Value assigned to `logHandler` must be a function");this._logHandler=t}get userLogHandler(){return this._userLogHandler}set userLogHandler(t){this._userLogHandler=t}debug(...t){this._userLogHandler&&this._userLogHandler(this,u.DEBUG,...t),this._logHandler(this,u.DEBUG,...t)}log(...t){this._userLogHandler&&this._userLogHandler(this,u.VERBOSE,...t),this._logHandler(this,u.VERBOSE,...t)}info(...t){this._userLogHandler&&this._userLogHandler(this,u.INFO,...t),this._logHandler(this,u.INFO,...t)}warn(...t){this._userLogHandler&&this._userLogHandler(this,u.WARN,...t),this._logHandler(this,u.WARN,...t)}error(...t){this._userLogHandler&&this._userLogHandler(this,u.ERROR,...t),this._logHandler(this,u.ERROR,...t)}}const fr=(e,t)=>t.some(n=>e instanceof n);let xe,je;function hr(){return xe||(xe=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function pr(){return je||(je=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const It=new WeakMap,pe=new WeakMap,yt=new WeakMap,Q=new WeakMap,De=new WeakMap;function mr(e){const t=new Promise((n,r)=>{const i=()=>{e.removeEventListener("success",a),e.removeEventListener("error",s)},a=()=>{n(A(e.result)),i()},s=()=>{r(e.error),i()};e.addEventListener("success",a),e.addEventListener("error",s)});return t.then(n=>{n instanceof IDBCursor&&It.set(n,e)}).catch(()=>{}),De.set(t,e),t}function gr(e){if(pe.has(e))return;const t=new Promise((n,r)=>{const i=()=>{e.removeEventListener("complete",a),e.removeEventListener("error",s),e.removeEventListener("abort",s)},a=()=>{n(),i()},s=()=>{r(e.error||new DOMException("AbortError","AbortError")),i()};e.addEventListener("complete",a),e.addEventListener("error",s),e.addEventListener("abort",s)});pe.set(e,t)}let me={get(e,t,n){if(e instanceof IDBTransaction){if(t==="done")return pe.get(e);if(t==="objectStoreNames")return e.objectStoreNames||yt.get(e);if(t==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return A(e[t])},set(e,t,n){return e[t]=n,!0},has(e,t){return e instanceof IDBTransaction&&(t==="done"||t==="store")?!0:t in e}};function br(e){me=e(me)}function Ir(e){return e===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(t,...n){const r=e.call(Z(this),t,...n);return yt.set(r,t.sort?t.sort():[t]),A(r)}:pr().includes(e)?function(...t){return e.apply(Z(this),t),A(It.get(this))}:function(...t){return A(e.apply(Z(this),t))}}function yr(e){return typeof e=="function"?Ir(e):(e instanceof IDBTransaction&&gr(e),fr(e,hr())?new Proxy(e,me):e)}function A(e){if(e instanceof IDBRequest)return mr(e);if(Q.has(e))return Q.get(e);const t=yr(e);return t!==e&&(Q.set(e,t),De.set(t,e)),t}const Z=e=>De.get(e);function _r(e,t,{blocked:n,upgrade:r,blocking:i,terminated:a}={}){const s=indexedDB.open(e,t),o=A(s);return r&&s.addEventListener("upgradeneeded",c=>{r(A(s.result),c.oldVersion,c.newVersion,A(s.transaction),c)}),n&&s.addEventListener("blocked",c=>n(c.oldVersion,c.newVersion,c)),o.then(c=>{a&&c.addEventListener("close",()=>a()),i&&c.addEventListener("versionchange",l=>i(l.oldVersion,l.newVersion,l))}).catch(()=>{}),o}const Er=["get","getKey","getAll","getAllKeys","count"],wr=["put","add","delete","clear"],ee=new Map;function Ve(e,t){if(!(e instanceof IDBDatabase&&!(t in e)&&typeof t=="string"))return;if(ee.get(t))return ee.get(t);const n=t.replace(/FromIndex$/,""),r=t!==n,i=wr.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||Er.includes(n)))return;const a=async function(s,...o){const c=this.transaction(s,i?"readwrite":"readonly");let l=c.store;return r&&(l=l.index(o.shift())),(await Promise.all([l[n](...o),i&&c.done]))[0]};return ee.set(t,a),a}br(e=>({...e,get:(t,n,r)=>Ve(t,n)||e.get(t,n,r),has:(t,n)=>!!Ve(t,n)||e.has(t,n)}));/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/class Tr{constructor(t){this.container=t}getPlatformInfoString(){return this.container.getProviders().map(n=>{if(vr(n)){const r=n.getImmediate();return`${r.library}/${r.version}`}else return null}).filter(n=>n).join(" ")}}function vr(e){const t=e.getComponent();return(t==null?void 0:t.type)==="VERSION"}const ge="@firebase/app",He="0.9.9";/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const P=new Ce("@firebase/app"),Ar="@firebase/app-compat",Sr="@firebase/analytics-compat",Cr="@firebase/analytics",Dr="@firebase/app-check-compat",Rr="@firebase/app-check",Mr="@firebase/auth",Nr="@firebase/auth-compat",Or="@firebase/database",Pr="@firebase/database-compat",Br="@firebase/functions",$r="@firebase/functions-compat",kr="@firebase/installations",Fr="@firebase/installations-compat",Lr="@firebase/messaging",Ur="@firebase/messaging-compat",xr="@firebase/performance",jr="@firebase/performance-compat",Vr="@firebase/remote-config",Hr="@firebase/remote-config-compat",zr="@firebase/storage",qr="@firebase/storage-compat",Wr="@firebase/firestore",Gr="@firebase/firestore-compat",Kr="firebase";/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const be="[DEFAULT]",Xr={[ge]:"fire-core",[Ar]:"fire-core-compat",[Cr]:"fire-analytics",[Sr]:"fire-analytics-compat",[Rr]:"fire-app-check",[Dr]:"fire-app-check-compat",[Mr]:"fire-auth",[Nr]:"fire-auth-compat",[Or]:"fire-rtdb",[Pr]:"fire-rtdb-compat",[Br]:"fire-fn",[$r]:"fire-fn-compat",[kr]:"fire-iid",[Fr]:"fire-iid-compat",[Lr]:"fire-fcm",[Ur]:"fire-fcm-compat",[xr]:"fire-perf",[jr]:"fire-perf-compat",[Vr]:"fire-rc",[Hr]:"fire-rc-compat",[zr]:"fire-gcs",[qr]:"fire-gcs-compat",[Wr]:"fire-fst",[Gr]:"fire-fst-compat","fire-js":"fire-js",[Kr]:"fire-js-all"};/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const q=new Map,Ie=new Map;function Yr(e,t){try{e.container.addComponent(t)}catch(n){P.debug(`Component ${t.name} failed to register with FirebaseApp ${e.name}`,n)}}function R(e){const t=e.name;if(Ie.has(t))return P.debug(`There were multiple attempts to register component ${t}.`),!1;Ie.set(t,e);for(const n of q.values())Yr(n,e);return!0}function V(e,t){const n=e.container.getProvider("heartbeat").getImmediate({optional:!0});return n&&n.triggerHeartbeat(),e.container.getProvider(t)}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const Jr={["no-app"]:"No Firebase App '{$appName}' has been created - call Firebase App.initializeApp()",["bad-app-name"]:"Illegal App name: '{$appName}",["duplicate-app"]:"Firebase App named '{$appName}' already exists with different options or config",["app-deleted"]:"Firebase App named '{$appName}' already deleted",["no-options"]:"Need to provide options, when not being deployed to hosting via source.",["invalid-app-argument"]:"firebase.{$appName}() takes either no argument or a Firebase App instance.",["invalid-log-argument"]:"First argument to `onLog` must be null or a function.",["idb-open"]:"Error thrown when opening IndexedDB. Original error: {$originalErrorMessage}.",["idb-get"]:"Error thrown when reading from IndexedDB. Original error: {$originalErrorMessage}.",["idb-set"]:"Error thrown when writing to IndexedDB. Original error: {$originalErrorMessage}.",["idb-delete"]:"Error thrown when deleting from IndexedDB. Original error: {$originalErrorMessage}."},S=new j("app","Firebase",Jr);/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/class Qr{constructor(t,n,r){this._isDeleted=!1,this._options=Object.assign({},t),this._config=Object.assign({},n),this._name=n.name,this._automaticDataCollectionEnabled=n.automaticDataCollectionEnabled,this._container=r,this.container.addComponent(new v("app",()=>this,"PUBLIC"))}get automaticDataCollectionEnabled(){return this.checkDestroyed(),this._automaticDataCollectionEnabled}set automaticDataCollectionEnabled(t){this.checkDestroyed(),this._automaticDataCollectionEnabled=t}get name(){return this.checkDestroyed(),this._name}get options(){return this.checkDestroyed(),this._options}get config(){return this.checkDestroyed(),this._config}get container(){return this._container}get isDeleted(){return this._isDeleted}set isDeleted(t){this._isDeleted=t}checkDestroyed(){if(this.isDeleted)throw S.create("app-deleted",{appName:this._name})}}function _t(e,t={}){let n=e;typeof t!="object"&&(t={name:t});const r=Object.assign({name:be,automaticDataCollectionEnabled:!1},t),i=r.name;if(typeof i!="string"||!i)throw S.create("bad-app-name",{appName:String(i)});if(n||(n=Kn()),!n)throw S.create("no-options");const a=q.get(i);if(a){if(z(n,a.options)&&z(r,a.config))return a;throw S.create("duplicate-app",{appName:i})}const s=new or(i);for(const c of Ie.values())s.addComponent(c);const o=new Qr(n,r,s);return q.set(i,o),o}function Et(e=be){const t=q.get(e);if(!t&&e===be)return _t();if(!t)throw S.create("no-app",{appName:e});return t}function E(e,t,n){var r;let i=(r=Xr[e])!==null&&r!==void 0?r:e;n&&(i+=`-${n}`);const a=i.match(/\s|\//),s=t.match(/\s|\//);if(a||s){const o=[`Unable to register library "${i}" with version "${t}":`];a&&o.push(`library name "${i}" contains illegal characters (whitespace or "/")`),a&&s&&o.push("and"),s&&o.push(`version name "${t}" contains illegal characters (whitespace or "/")`),P.warn(o.join(" "));return}R(new v(`${i}-version`,()=>({library:i,version:t}),"VERSION"))}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2021 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const Zr="firebase-heartbeat-database",ei=1,x="firebase-heartbeat-store";let te=null;function wt(){return te||(te=_r(Zr,ei,{upgrade:(e,t)=>{switch(t){case 0:e.createObjectStore(x)}}}).catch(e=>{throw S.create("idb-open",{originalErrorMessage:e.message})})),te}async function ti(e){try{return(await wt()).transaction(x).objectStore(x).get(Tt(e))}catch(t){if(t instanceof k)P.warn(t.message);else{const n=S.create("idb-get",{originalErrorMessage:t==null?void 0:t.message});P.warn(n.message)}}}async function ze(e,t){try{const r=(await wt()).transaction(x,"readwrite");return await r.objectStore(x).put(t,Tt(e)),r.done}catch(n){if(n instanceof k)P.warn(n.message);else{const r=S.create("idb-set",{originalErrorMessage:n==null?void 0:n.message});P.warn(r.message)}}}function Tt(e){return`${e.name}!${e.options.appId}`}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2021 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const ni=1024,ri=30*24*60*60*1e3;class ii{constructor(t){this.container=t,this._heartbeatsCache=null;const n=this.container.getProvider("app").getImmediate();this._storage=new si(n),this._heartbeatsCachePromise=this._storage.read().then(r=>(this._heartbeatsCache=r,r))}async triggerHeartbeat(){const n=this.container.getProvider("platform-logger").getImmediate().getPlatformInfoString(),r=qe();if(this._heartbeatsCache===null&&(this._heartbeatsCache=await this._heartbeatsCachePromise),!(this._heartbeatsCache.lastSentHeartbeatDate===r||this._heartbeatsCache.heartbeats.some(i=>i.date===r)))return this._heartbeatsCache.heartbeats.push({date:r,agent:n}),this._heartbeatsCache.heartbeats=this._heartbeatsCache.heartbeats.filter(i=>{const a=new Date(i.date).valueOf();return Date.now()-a<=ri}),this._storage.overwrite(this._heartbeatsCache)}async getHeartbeatsHeader(){if(this._heartbeatsCache===null&&await this._heartbeatsCachePromise,this._heartbeatsCache===null||this._heartbeatsCache.heartbeats.length===0)return"";const t=qe(),{heartbeatsToSend:n,unsentEntries:r}=ai(this._heartbeatsCache.heartbeats),i=gt(JSON.stringify({version:2,heartbeats:n}));return this._heartbeatsCache.lastSentHeartbeatDate=t,r.length>0?(this._heartbeatsCache.heartbeats=r,await this._storage.overwrite(this._heartbeatsCache)):(this._heartbeatsCache.heartbeats=[],this._storage.overwrite(this._heartbeatsCache)),i}}function qe(){return new Date().toISOString().substring(0,10)}function ai(e,t=ni){const n=[];let r=e.slice();for(const i of e){const a=n.find(s=>s.agent===i.agent);if(a){if(a.dates.push(i.date),We(n)>t){a.dates.pop();break}}else if(n.push({agent:i.agent,dates:[i.date]}),We(n)>t){n.pop();break}r=r.slice(1)}return{heartbeatsToSend:n,unsentEntries:r}}class si{constructor(t){this.app=t,this._canUseIndexedDBPromise=this.runIndexedDBEnvironmentCheck()}async runIndexedDBEnvironmentCheck(){return ve()?Ae().then(()=>!0).catch(()=>!1):!1}async read(){return await this._canUseIndexedDBPromise?await ti(this.app)||{heartbeats:[]}:{heartbeats:[]}}async overwrite(t){var n;if(await this._canUseIndexedDBPromise){const i=await this.read();return ze(this.app,{lastSentHeartbeatDate:(n=t.lastSentHeartbeatDate)!==null&&n!==void 0?n:i.lastSentHeartbeatDate,heartbeats:t.heartbeats})}else return}async add(t){var n;if(await this._canUseIndexedDBPromise){const i=await this.read();return ze(this.app,{lastSentHeartbeatDate:(n=t.lastSentHeartbeatDate)!==null&&n!==void 0?n:i.lastSentHeartbeatDate,heartbeats:[...i.heartbeats,...t.heartbeats]})}else return}}function We(e){return gt(JSON.stringify({version:2,heartbeats:e})).length}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/function oi(e){R(new v("platform-logger",t=>new Tr(t),"PRIVATE")),R(new v("heartbeat",t=>new ii(t),"PRIVATE")),E(ge,He,e),E(ge,He,"esm2017"),E("fire-js","")}oi("");var ci="firebase",li="9.21.0";/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/E(ci,li,"app");const ui=(e,t)=>t.some(n=>e instanceof n);let Ge,Ke;function di(){return Ge||(Ge=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])}function fi(){return Ke||(Ke=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])}const vt=new WeakMap,ye=new WeakMap,At=new WeakMap,ne=new WeakMap,Re=new WeakMap;function hi(e){const t=new Promise((n,r)=>{const i=()=>{e.removeEventListener("success",a),e.removeEventListener("error",s)},a=()=>{n(C(e.result)),i()},s=()=>{r(e.error),i()};e.addEventListener("success",a),e.addEventListener("error",s)});return t.then(n=>{n instanceof IDBCursor&&vt.set(n,e)}).catch(()=>{}),Re.set(t,e),t}function pi(e){if(ye.has(e))return;const t=new Promise((n,r)=>{const i=()=>{e.removeEventListener("complete",a),e.removeEventListener("error",s),e.removeEventListener("abort",s)},a=()=>{n(),i()},s=()=>{r(e.error||new DOMException("AbortError","AbortError")),i()};e.addEventListener("complete",a),e.addEventListener("error",s),e.addEventListener("abort",s)});ye.set(e,t)}let _e={get(e,t,n){if(e instanceof IDBTransaction){if(t==="done")return ye.get(e);if(t==="objectStoreNames")return e.objectStoreNames||At.get(e);if(t==="store")return n.objectStoreNames[1]?void 0:n.objectStore(n.objectStoreNames[0])}return C(e[t])},set(e,t,n){return e[t]=n,!0},has(e,t){return e instanceof IDBTransaction&&(t==="done"||t==="store")?!0:t in e}};function mi(e){_e=e(_e)}function gi(e){return e===IDBDatabase.prototype.transaction&&!("objectStoreNames"in IDBTransaction.prototype)?function(t,...n){const r=e.call(re(this),t,...n);return At.set(r,t.sort?t.sort():[t]),C(r)}:fi().includes(e)?function(...t){return e.apply(re(this),t),C(vt.get(this))}:function(...t){return C(e.apply(re(this),t))}}function bi(e){return typeof e=="function"?gi(e):(e instanceof IDBTransaction&&pi(e),ui(e,di())?new Proxy(e,_e):e)}function C(e){if(e instanceof IDBRequest)return hi(e);if(ne.has(e))return ne.get(e);const t=bi(e);return t!==e&&(ne.set(e,t),Re.set(t,e)),t}const re=e=>Re.get(e);function Ii(e,t,{blocked:n,upgrade:r,blocking:i,terminated:a}={}){const s=indexedDB.open(e,t),o=C(s);return r&&s.addEventListener("upgradeneeded",c=>{r(C(s.result),c.oldVersion,c.newVersion,C(s.transaction))}),n&&s.addEventListener("blocked",()=>n()),o.then(c=>{a&&c.addEventListener("close",()=>a()),i&&c.addEventListener("versionchange",()=>i())}).catch(()=>{}),o}const yi=["get","getKey","getAll","getAllKeys","count"],_i=["put","add","delete","clear"],ie=new Map;function Xe(e,t){if(!(e instanceof IDBDatabase&&!(t in e)&&typeof t=="string"))return;if(ie.get(t))return ie.get(t);const n=t.replace(/FromIndex$/,""),r=t!==n,i=_i.includes(n);if(!(n in(r?IDBIndex:IDBObjectStore).prototype)||!(i||yi.includes(n)))return;const a=async function(s,...o){const c=this.transaction(s,i?"readwrite":"readonly");let l=c.store;return r&&(l=l.index(o.shift())),(await Promise.all([l[n](...o),i&&c.done]))[0]};return ie.set(t,a),a}mi(e=>({...e,get:(t,n,r)=>Xe(t,n)||e.get(t,n,r),has:(t,n)=>!!Xe(t,n)||e.has(t,n)}));const St="@firebase/installations",Me="0.6.4";/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const Ct=1e4,Dt=`w:${Me}`,Rt="FIS_v2",Ei="https://firebaseinstallations.googleapis.com/v1",wi=60*60*1e3,Ti="installations",vi="Installations";/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const Ai={["missing-app-config-values"]:'Missing App configuration value: "{$valueName}"',["not-registered"]:"Firebase Installation is not registered.",["installation-not-found"]:"Firebase Installation not found.",["request-failed"]:'{$requestName} request failed with error "{$serverCode} {$serverStatus}: {$serverMessage}"',["app-offline"]:"Could not process request. Application offline.",["delete-pending-registration"]:"Can't delete installation while there is a pending registration request."},B=new j(Ti,vi,Ai);function Mt(e){return e instanceof k&&e.code.includes("request-failed")}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/function Nt({projectId:e}){return`${Ei}/projects/${e}/installations`}function Ot(e){return{token:e.token,requestStatus:2,expiresIn:Ci(e.expiresIn),creationTime:Date.now()}}async function Pt(e,t){const r=(await t.json()).error;return B.create("request-failed",{requestName:e,serverCode:r.code,serverMessage:r.message,serverStatus:r.status})}function Bt({apiKey:e}){return new Headers({"Content-Type":"application/json",Accept:"application/json","x-goog-api-key":e})}function Si(e,{refreshToken:t}){const n=Bt(e);return n.append("Authorization",Di(t)),n}async function $t(e){const t=await e();return t.status>=500&&t.status<600?e():t}function Ci(e){return Number(e.replace("s","000"))}function Di(e){return`${Rt} ${e}`}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/async function Ri({appConfig:e,heartbeatServiceProvider:t},{fid:n}){const r=Nt(e),i=Bt(e),a=t.getImmediate({optional:!0});if(a){const l=await a.getHeartbeatsHeader();l&&i.append("x-firebase-client",l)}const s={fid:n,authVersion:Rt,appId:e.appId,sdkVersion:Dt},o={method:"POST",headers:i,body:JSON.stringify(s)},c=await $t(()=>fetch(r,o));if(c.ok){const l=await c.json();return{fid:l.fid||n,registrationStatus:2,refreshToken:l.refreshToken,authToken:Ot(l.authToken)}}else throw await Pt("Create Installation",c)}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/function kt(e){return new Promise(t=>{setTimeout(t,e)})}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/function Mi(e){return btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_")}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const Ni=/^[cdef][\w-]{21}$/,Ee="";function Oi(){try{const e=new Uint8Array(17);(self.crypto||self.msCrypto).getRandomValues(e),e[0]=112+e[0]%16;const n=Pi(e);return Ni.test(n)?n:Ee}catch{return Ee}}function Pi(e){return Mi(e).substr(0,22)}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/function X(e){return`${e.appName}!${e.appId}`}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const Ft=new Map;function Lt(e,t){const n=X(e);Ut(n,t),Bi(n,t)}function Ut(e,t){const n=Ft.get(e);if(n)for(const r of n)r(t)}function Bi(e,t){const n=$i();n&&n.postMessage({key:e,fid:t}),ki()}let N=null;function $i(){return!N&&"BroadcastChannel"in self&&(N=new BroadcastChannel("[Firebase] FID Change"),N.onmessage=e=>{Ut(e.data.key,e.data.fid)}),N}function ki(){Ft.size===0&&N&&(N.close(),N=null)}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const Fi="firebase-installations-database",Li=1,$="firebase-installations-store";let ae=null;function Ne(){return ae||(ae=Ii(Fi,Li,{upgrade:(e,t)=>{switch(t){case 0:e.createObjectStore($)}}})),ae}async function W(e,t){const n=X(e),i=(await Ne()).transaction($,"readwrite"),a=i.objectStore($),s=await a.get(n);return await a.put(t,n),await i.done,(!s||s.fid!==t.fid)&&Lt(e,t.fid),t}async function xt(e){const t=X(e),r=(await Ne()).transaction($,"readwrite");await r.objectStore($).delete(t),await r.done}async function Y(e,t){const n=X(e),i=(await Ne()).transaction($,"readwrite"),a=i.objectStore($),s=await a.get(n),o=t(s);return o===void 0?await a.delete(n):await a.put(o,n),await i.done,o&&(!s||s.fid!==o.fid)&&Lt(e,o.fid),o}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/async function Oe(e){let t;const n=await Y(e.appConfig,r=>{const i=Ui(r),a=xi(e,i);return t=a.registrationPromise,a.installationEntry});return n.fid===Ee?{installationEntry:await t}:{installationEntry:n,registrationPromise:t}}function Ui(e){const t=e||{fid:Oi(),registrationStatus:0};return jt(t)}function xi(e,t){if(t.registrationStatus===0){if(!navigator.onLine){const i=Promise.reject(B.create("app-offline"));return{installationEntry:t,registrationPromise:i}}const n={fid:t.fid,registrationStatus:1,registrationTime:Date.now()},r=ji(e,n);return{installationEntry:n,registrationPromise:r}}else return t.registrationStatus===1?{installationEntry:t,registrationPromise:Vi(e)}:{installationEntry:t}}async function ji(e,t){try{const n=await Ri(e,t);return W(e.appConfig,n)}catch(n){throw Mt(n)&&n.customData.serverCode===409?await xt(e.appConfig):await W(e.appConfig,{fid:t.fid,registrationStatus:0}),n}}async function Vi(e){let t=await Ye(e.appConfig);for(;t.registrationStatus===1;)await kt(100),t=await Ye(e.appConfig);if(t.registrationStatus===0){const{installationEntry:n,registrationPromise:r}=await Oe(e);return r||n}return t}function Ye(e){return Y(e,t=>{if(!t)throw B.create("installation-not-found");return jt(t)})}function jt(e){return Hi(e)?{fid:e.fid,registrationStatus:0}:e}function Hi(e){return e.registrationStatus===1&&e.registrationTime+Ct<Date.now()}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/async function zi({appConfig:e,heartbeatServiceProvider:t},n){const r=qi(e,n),i=Si(e,n),a=t.getImmediate({optional:!0});if(a){const l=await a.getHeartbeatsHeader();l&&i.append("x-firebase-client",l)}const s={installation:{sdkVersion:Dt,appId:e.appId}},o={method:"POST",headers:i,body:JSON.stringify(s)},c=await $t(()=>fetch(r,o));if(c.ok){const l=await c.json();return Ot(l)}else throw await Pt("Generate Auth Token",c)}function qi(e,{fid:t}){return`${Nt(e)}/${t}/authTokens:generate`}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/async function Pe(e,t=!1){let n;const r=await Y(e.appConfig,a=>{if(!Vt(a))throw B.create("not-registered");const s=a.authToken;if(!t&&Ki(s))return a;if(s.requestStatus===1)return n=Wi(e,t),a;{if(!navigator.onLine)throw B.create("app-offline");const o=Yi(a);return n=Gi(e,o),o}});return n?await n:r.authToken}async function Wi(e,t){let n=await Je(e.appConfig);for(;n.authToken.requestStatus===1;)await kt(100),n=await Je(e.appConfig);const r=n.authToken;return r.requestStatus===0?Pe(e,t):r}function Je(e){return Y(e,t=>{if(!Vt(t))throw B.create("not-registered");const n=t.authToken;return Ji(n)?Object.assign(Object.assign({},t),{authToken:{requestStatus:0}}):t})}async function Gi(e,t){try{const n=await zi(e,t),r=Object.assign(Object.assign({},t),{authToken:n});return await W(e.appConfig,r),n}catch(n){if(Mt(n)&&(n.customData.serverCode===401||n.customData.serverCode===404))await xt(e.appConfig);else{const r=Object.assign(Object.assign({},t),{authToken:{requestStatus:0}});await W(e.appConfig,r)}throw n}}function Vt(e){return e!==void 0&&e.registrationStatus===2}function Ki(e){return e.requestStatus===2&&!Xi(e)}function Xi(e){const t=Date.now();return t<e.creationTime||e.creationTime+e.expiresIn<t+wi}function Yi(e){const t={requestStatus:1,requestTime:Date.now()};return Object.assign(Object.assign({},e),{authToken:t})}function Ji(e){return e.requestStatus===1&&e.requestTime+Ct<Date.now()}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/async function Qi(e){const t=e,{installationEntry:n,registrationPromise:r}=await Oe(t);return r?r.catch(console.error):Pe(t).catch(console.error),n.fid}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/async function Zi(e,t=!1){const n=e;return await ea(n),(await Pe(n,t)).token}async function ea(e){const{registrationPromise:t}=await Oe(e);t&&await t}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/function ta(e){if(!e||!e.options)throw se("App Configuration");if(!e.name)throw se("App Name");const t=["projectId","apiKey","appId"];for(const n of t)if(!e.options[n])throw se(n);return{appName:e.name,projectId:e.options.projectId,apiKey:e.options.apiKey,appId:e.options.appId}}function se(e){return B.create("missing-app-config-values",{valueName:e})}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const Ht="installations",na="installations-internal",ra=e=>{const t=e.getProvider("app").getImmediate(),n=ta(t),r=V(t,"heartbeat");return{app:t,appConfig:n,heartbeatServiceProvider:r,_delete:()=>Promise.resolve()}},ia=e=>{const t=e.getProvider("app").getImmediate(),n=V(t,Ht).getImmediate();return{getId:()=>Qi(n),getToken:i=>Zi(n,i)}};function aa(){R(new v(Ht,ra,"PUBLIC")),R(new v(na,ia,"PRIVATE"))}aa();E(St,Me);E(St,Me,"esm2017");/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const G="analytics",sa="firebase_id",oa="origin",ca=60*1e3,la="https://firebase.googleapis.com/v1alpha/projects/-/apps/{app-id}/webConfig",Be="https://www.googletagmanager.com/gtag/js";/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const m=new Ce("@firebase/analytics");/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const ua={["already-exists"]:"A Firebase Analytics instance with the appId {$id} already exists. Only one Firebase Analytics instance can be created for each appId.",["already-initialized"]:"initializeAnalytics() cannot be called again with different options than those it was initially called with. It can be called again with the same options to return the existing instance, or getAnalytics() can be used to get a reference to the already-intialized instance.",["already-initialized-settings"]:"Firebase Analytics has already been initialized.settings() must be called before initializing any Analytics instanceor it will have no effect.",["interop-component-reg-failed"]:"Firebase Analytics Interop Component failed to instantiate: {$reason}",["invalid-analytics-context"]:"Firebase Analytics is not supported in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}",["indexeddb-unavailable"]:"IndexedDB unavailable or restricted in this environment. Wrap initialization of analytics in analytics.isSupported() to prevent initialization in unsupported environments. Details: {$errorInfo}",["fetch-throttle"]:"The config fetch request timed out while in an exponential backoff state. Unix timestamp in milliseconds when fetch request throttling ends: {$throttleEndTimeMillis}.",["config-fetch-failed"]:"Dynamic config fetch failed: [{$httpStatus}] {$responseMessage}",["no-api-key"]:'The "apiKey" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid API key.',["no-app-id"]:'The "appId" field is empty in the local Firebase config. Firebase Analytics requires this field tocontain a valid app ID.',["no-client-id"]:'The "client_id" field is empty.',["invalid-gtag-resource"]:"Trusted Types detected an invalid gtag resource: {$gtagURL}."},y=new j("analytics","Analytics",ua);/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/function da(e){if(!e.startsWith(Be)){const t=y.create("invalid-gtag-resource",{gtagURL:e});return m.warn(t.message),""}return e}function zt(e){return Promise.all(e.map(t=>t.catch(n=>n)))}function fa(e,t){let n;return window.trustedTypes&&(n=window.trustedTypes.createPolicy(e,t)),n}function ha(e,t){const n=fa("firebase-js-sdk-policy",{createScriptURL:da}),r=document.createElement("script"),i=`${Be}?l=${e}&id=${t}`;r.src=n?n==null?void 0:n.createScriptURL(i):i,r.async=!0,document.head.appendChild(r)}function pa(e){let t=[];return Array.isArray(window[e])?t=window[e]:window[e]=t,t}async function ma(e,t,n,r,i,a){const s=r[i];try{if(s)await t[s];else{const c=(await zt(n)).find(l=>l.measurementId===i);c&&await t[c.appId]}}catch(o){m.error(o)}e("config",i,a)}async function ga(e,t,n,r,i){try{let a=[];if(i&&i.send_to){let s=i.send_to;Array.isArray(s)||(s=[s]);const o=await zt(n);for(const c of s){const l=o.find(h=>h.measurementId===c),d=l&&t[l.appId];if(d)a.push(d);else{a=[];break}}}a.length===0&&(a=Object.values(t)),await Promise.all(a),e("event",r,i||{})}catch(a){m.error(a)}}function ba(e,t,n,r){async function i(a,...s){try{if(a==="event"){const[o,c]=s;await ga(e,t,n,o,c)}else if(a==="config"){const[o,c]=s;await ma(e,t,n,r,o,c)}else if(a==="consent"){const[o]=s;e("consent","update",o)}else if(a==="get"){const[o,c,l]=s;e("get",o,c,l)}else if(a==="set"){const[o]=s;e("set",o)}else e(a,...s)}catch(o){m.error(o)}}return i}function Ia(e,t,n,r,i){let a=function(...s){window[r].push(arguments)};return window[i]&&typeof window[i]=="function"&&(a=window[i]),window[i]=ba(a,e,t,n),{gtagCore:a,wrappedGtag:window[i]}}function ya(e){const t=window.document.getElementsByTagName("script");for(const n of Object.values(t))if(n.src&&n.src.includes(Be)&&n.src.includes(e))return n;return null}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const _a=30,Ea=1e3;class wa{constructor(t={},n=Ea){this.throttleMetadata=t,this.intervalMillis=n}getThrottleMetadata(t){return this.throttleMetadata[t]}setThrottleMetadata(t,n){this.throttleMetadata[t]=n}deleteThrottleMetadata(t){delete this.throttleMetadata[t]}}const qt=new wa;function Ta(e){return new Headers({Accept:"application/json","x-goog-api-key":e})}async function va(e){var t;const{appId:n,apiKey:r}=e,i={method:"GET",headers:Ta(r)},a=la.replace("{app-id}",n),s=await fetch(a,i);if(s.status!==200&&s.status!==304){let o="";try{const c=await s.json();!((t=c.error)===null||t===void 0)&&t.message&&(o=c.error.message)}catch{}throw y.create("config-fetch-failed",{httpStatus:s.status,responseMessage:o})}return s.json()}async function Aa(e,t=qt,n){const{appId:r,apiKey:i,measurementId:a}=e.options;if(!r)throw y.create("no-app-id");if(!i){if(a)return{measurementId:a,appId:r};throw y.create("no-api-key")}const s=t.getThrottleMetadata(r)||{backoffCount:0,throttleEndTimeMillis:Date.now()},o=new Da;return setTimeout(async()=>{o.abort()},n!==void 0?n:ca),Wt({appId:r,apiKey:i,measurementId:a},s,o,t)}async function Wt(e,{throttleEndTimeMillis:t,backoffCount:n},r,i=qt){var a;const{appId:s,measurementId:o}=e;try{await Sa(r,t)}catch(c){if(o)return m.warn(`Timed out fetching this Firebase app's measurement ID from the server. Falling back to the measurement ID ${o} provided in the "measurementId" field in the local Firebase config. [${c==null?void 0:c.message}]`),{appId:s,measurementId:o};throw c}try{const c=await va(e);return i.deleteThrottleMetadata(s),c}catch(c){const l=c;if(!Ca(l)){if(i.deleteThrottleMetadata(s),o)return m.warn(`Failed to fetch this Firebase app's measurement ID from the server. Falling back to the measurement ID ${o} provided in the "measurementId" field in the local Firebase config. [${l==null?void 0:l.message}]`),{appId:s,measurementId:o};throw c}const d=Number((a=l==null?void 0:l.customData)===null||a===void 0?void 0:a.httpStatus)===503?Ue(n,i.intervalMillis,_a):Ue(n,i.intervalMillis),h={throttleEndTimeMillis:Date.now()+d,backoffCount:n+1};return i.setThrottleMetadata(s,h),m.debug(`Calling attemptFetch again in ${d} millis`),Wt(e,h,r,i)}}function Sa(e,t){return new Promise((n,r)=>{const i=Math.max(t-Date.now(),0),a=setTimeout(n,i);e.addEventListener(()=>{clearTimeout(a),r(y.create("fetch-throttle",{throttleEndTimeMillis:t}))})})}function Ca(e){if(!(e instanceof k)||!e.customData)return!1;const t=Number(e.customData.httpStatus);return t===429||t===500||t===503||t===504}class Da{constructor(){this.listeners=[]}addEventListener(t){this.listeners.push(t)}abort(){this.listeners.forEach(t=>t())}}async function Ra(e,t,n,r,i){if(i&&i.global){e("event",n,r);return}else{const a=await t,s=Object.assign(Object.assign({},r),{send_to:a});e("event",n,s)}}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/async function Ma(){if(ve())try{await Ae()}catch(e){return m.warn(y.create("indexeddb-unavailable",{errorInfo:e==null?void 0:e.toString()}).message),!1}else return m.warn(y.create("indexeddb-unavailable",{errorInfo:"IndexedDB is not available in this environment."}).message),!1;return!0}async function Na(e,t,n,r,i,a,s){var o;const c=Aa(e);c.then(b=>{n[b.measurementId]=b.appId,e.options.measurementId&&b.measurementId!==e.options.measurementId&&m.warn(`The measurement ID in the local Firebase config (${e.options.measurementId}) does not match the measurement ID fetched from the server (${b.measurementId}). To ensure analytics events are always sent to the correct Analytics property, update the measurement ID field in the local config or remove it from the local config.`)}).catch(b=>m.error(b)),t.push(c);const l=Ma().then(b=>{if(b)return r.getId()}),[d,h]=await Promise.all([c,l]);ya(a)||ha(a,d.measurementId),i("js",new Date);const g=(o=s==null?void 0:s.config)!==null&&o!==void 0?o:{};return g[oa]="firebase",g.update=!0,h!=null&&(g[sa]=h),i("config",d.measurementId,g),d.measurementId}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/class Oa{constructor(t){this.app=t}_delete(){return delete U[this.app.options.appId],Promise.resolve()}}let U={},Qe=[];const Ze={};let oe="dataLayer",Pa="gtag",et,Gt,tt=!1;function Ba(){const e=[];if(Yn()&&e.push("This is a browser extension environment."),bt()||e.push("Cookies are not available."),e.length>0){const t=e.map((r,i)=>`(${i+1}) ${r}`).join(" "),n=y.create("invalid-analytics-context",{errorInfo:t});m.warn(n.message)}}function $a(e,t,n){Ba();const r=e.options.appId;if(!r)throw y.create("no-app-id");if(!e.options.apiKey)if(e.options.measurementId)m.warn(`The "apiKey" field is empty in the local Firebase config. This is needed to fetch the latest measurement ID for this Firebase app. Falling back to the measurement ID ${e.options.measurementId} provided in the "measurementId" field in the local Firebase config.`);else throw y.create("no-api-key");if(U[r]!=null)throw y.create("already-exists",{id:r});if(!tt){pa(oe);const{wrappedGtag:a,gtagCore:s}=Ia(U,Qe,Ze,oe,Pa);Gt=a,et=s,tt=!0}return U[r]=Na(e,Qe,Ze,t,et,oe,n),new Oa(e)}function ka(e=Et()){e=Se(e);const t=V(e,G);return t.isInitialized()?t.getImmediate():Fa(e)}function Fa(e,t={}){const n=V(e,G);if(n.isInitialized()){const i=n.getImmediate();if(z(t,n.getOptions()))return i;throw y.create("already-initialized")}return n.initialize({options:t})}function La(e,t,n,r){e=Se(e),Ra(Gt,U[e.app.options.appId],t,n,r).catch(i=>m.error(i))}const nt="@firebase/analytics",rt="0.10.0";function Ua(){R(new v(G,(t,{options:n})=>{const r=t.getProvider("app").getImmediate(),i=t.getProvider("installations-internal").getImmediate();return $a(r,i,n)},"PUBLIC")),R(new v("analytics-internal",e,"PRIVATE")),E(nt,rt),E(nt,rt,"esm2017");function e(t){try{const n=t.getProvider(G).getImmediate();return{logEvent:(r,i,a)=>La(n,r,i,a)}}catch(n){throw y.create("interop-component-reg-failed",{reason:n})}}}Ua();const it="@firebase/performance",we="0.6.4";/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const Kt=we,xa="FB-PERF-TRACE-START",ja="FB-PERF-TRACE-STOP",Te="FB-PERF-TRACE-MEASURE",Xt="_wt_",Yt="_fp",Jt="_fcp",Qt="_fid",Zt="@firebase/performance/config",en="@firebase/performance/configexpire",Va="performance",tn="Performance";/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const Ha={["trace started"]:"Trace {$traceName} was started before.",["trace stopped"]:"Trace {$traceName} is not running.",["nonpositive trace startTime"]:"Trace {$traceName} startTime should be positive.",["nonpositive trace duration"]:"Trace {$traceName} duration should be positive.",["no window"]:"Window is not available.",["no app id"]:"App id is not available.",["no project id"]:"Project id is not available.",["no api key"]:"Api key is not available.",["invalid cc log"]:"Attempted to queue invalid cc event",["FB not default"]:"Performance can only start when Firebase app instance is the default one.",["RC response not ok"]:"RC response is not ok",["invalid attribute name"]:"Attribute name {$attributeName} is invalid.",["invalid attribute value"]:"Attribute value {$attributeValue} is invalid.",["invalid custom metric name"]:"Custom metric name {$customMetricName} is invalid",["invalid String merger input"]:"Input for String merger is invalid, contact support team to resolve.",["already initialized"]:"initializePerformance() has already been called with different options. To avoid this error, call initializePerformance() with the same options as when it was originally called, or call getPerformance() to return the already initialized instance."},p=new j(Va,tn,Ha);/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const w=new Ce(tn);w.logLevel=u.INFO;/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/let ce,nn;class f{constructor(t){if(this.window=t,!t)throw p.create("no window");this.performance=t.performance,this.PerformanceObserver=t.PerformanceObserver,this.windowLocation=t.location,this.navigator=t.navigator,this.document=t.document,this.navigator&&this.navigator.cookieEnabled&&(this.localStorage=t.localStorage),t.perfMetrics&&t.perfMetrics.onFirstInputDelay&&(this.onFirstInputDelay=t.perfMetrics.onFirstInputDelay)}getUrl(){return this.windowLocation.href.split("?")[0]}mark(t){!this.performance||!this.performance.mark||this.performance.mark(t)}measure(t,n,r){!this.performance||!this.performance.measure||this.performance.measure(t,n,r)}getEntriesByType(t){return!this.performance||!this.performance.getEntriesByType?[]:this.performance.getEntriesByType(t)}getEntriesByName(t){return!this.performance||!this.performance.getEntriesByName?[]:this.performance.getEntriesByName(t)}getTimeOrigin(){return this.performance&&(this.performance.timeOrigin||this.performance.timing.navigationStart)}requiredApisAvailable(){return!fetch||!Promise||!bt()?(w.info("Firebase Performance cannot start if browser does not support fetch and Promise or cookie is disabled."),!1):ve()?!0:(w.info("IndexedDB is not supported by current browswer"),!1)}setupObserver(t,n){if(!this.PerformanceObserver)return;new this.PerformanceObserver(i=>{for(const a of i.getEntries())n(a)}).observe({entryTypes:[t]})}static getInstance(){return ce===void 0&&(ce=new f(nn)),ce}}function za(e){nn=e}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/let rn;function qa(e){const t=e.getId();return t.then(n=>{rn=n}),t}function $e(){return rn}function Wa(e){const t=e.getToken();return t.then(n=>{}),t}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/function at(e,t){const n=e.length-t.length;if(n<0||n>1)throw p.create("invalid String merger input");const r=[];for(let i=0;i<e.length;i++)r.push(e.charAt(i)),t.length>i&&r.push(t.charAt(i));return r.join("")}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2019 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/let le;class I{constructor(){this.instrumentationEnabled=!0,this.dataCollectionEnabled=!0,this.loggingEnabled=!1,this.tracesSamplingRate=1,this.networkRequestsSamplingRate=1,this.logEndPointUrl="https://firebaselogging.googleapis.com/v0cc/log?format=json_proto",this.flTransportEndpointUrl=at("hts/frbslgigp.ogepscmv/ieo/eaylg","tp:/ieaeogn-agolai.o/1frlglgc/o"),this.transportKey=at("AzSC8r6ReiGqFMyfvgow","Iayx0u-XT3vksVM-pIV"),this.logSource=462,this.logTraceAfterSampling=!1,this.logNetworkAfterSampling=!1,this.configTimeToLive=12}getFlTransportFullUrl(){return this.flTransportEndpointUrl.concat("?key=",this.transportKey)}static getInstance(){return le===void 0&&(le=new I),le}}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/var F;(function(e){e[e.UNKNOWN=0]="UNKNOWN",e[e.VISIBLE=1]="VISIBLE",e[e.HIDDEN=2]="HIDDEN"})(F||(F={}));const Ga=["firebase_","google_","ga_"],Ka=new RegExp("^[a-zA-Z]\\w*$"),Xa=40,Ya=100;function Ja(){const e=f.getInstance().navigator;return e!=null&&e.serviceWorker?e.serviceWorker.controller?2:3:1}function an(){switch(f.getInstance().document.visibilityState){case"visible":return F.VISIBLE;case"hidden":return F.HIDDEN;default:return F.UNKNOWN}}function Qa(){const t=f.getInstance().navigator.connection;switch(t&&t.effectiveType){case"slow-2g":return 1;case"2g":return 2;case"3g":return 3;case"4g":return 4;default:return 0}}function Za(e){return e.length===0||e.length>Xa?!1:!Ga.some(n=>e.startsWith(n))&&!!e.match(Ka)}function es(e){return e.length!==0&&e.length<=Ya}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/function sn(e){var t;const n=(t=e.options)===null||t===void 0?void 0:t.appId;if(!n)throw p.create("no app id");return n}function ts(e){var t;const n=(t=e.options)===null||t===void 0?void 0:t.projectId;if(!n)throw p.create("no project id");return n}function ns(e){var t;const n=(t=e.options)===null||t===void 0?void 0:t.apiKey;if(!n)throw p.create("no api key");return n}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const rs="0.0.1",_={loggingEnabled:!0},is="FIREBASE_INSTALLATIONS_AUTH";function as(e,t){const n=ss();return n?(st(n),Promise.resolve()):ls(e,t).then(st).then(r=>os(r),()=>{})}function ss(){const e=f.getInstance().localStorage;if(!e)return;const t=e.getItem(en);if(!t||!us(t))return;const n=e.getItem(Zt);if(n)try{return JSON.parse(n)}catch{return}}function os(e){const t=f.getInstance().localStorage;!e||!t||(t.setItem(Zt,JSON.stringify(e)),t.setItem(en,String(Date.now()+I.getInstance().configTimeToLive*60*60*1e3)))}const cs="Could not fetch config, will use default configs";function ls(e,t){return Wa(e.installations).then(n=>{const r=ts(e.app),i=ns(e.app),a=`https://firebaseremoteconfig.googleapis.com/v1/projects/${r}/namespaces/fireperf:fetch?key=${i}`,s=new Request(a,{method:"POST",headers:{Authorization:`${is} ${n}`},body:JSON.stringify({app_instance_id:t,app_instance_id_token:n,app_id:sn(e.app),app_version:Kt,sdk_version:rs})});return fetch(s).then(o=>{if(o.ok)return o.json();throw p.create("RC response not ok")})}).catch(()=>{w.info(cs)})}function st(e){if(!e)return e;const t=I.getInstance(),n=e.entries||{};return n.fpr_enabled!==void 0?t.loggingEnabled=String(n.fpr_enabled)==="true":t.loggingEnabled=_.loggingEnabled,n.fpr_log_source?t.logSource=Number(n.fpr_log_source):_.logSource&&(t.logSource=_.logSource),n.fpr_log_endpoint_url?t.logEndPointUrl=n.fpr_log_endpoint_url:_.logEndPointUrl&&(t.logEndPointUrl=_.logEndPointUrl),n.fpr_log_transport_key?t.transportKey=n.fpr_log_transport_key:_.transportKey&&(t.transportKey=_.transportKey),n.fpr_vc_network_request_sampling_rate!==void 0?t.networkRequestsSamplingRate=Number(n.fpr_vc_network_request_sampling_rate):_.networkRequestsSamplingRate!==void 0&&(t.networkRequestsSamplingRate=_.networkRequestsSamplingRate),n.fpr_vc_trace_sampling_rate!==void 0?t.tracesSamplingRate=Number(n.fpr_vc_trace_sampling_rate):_.tracesSamplingRate!==void 0&&(t.tracesSamplingRate=_.tracesSamplingRate),t.logTraceAfterSampling=ot(t.tracesSamplingRate),t.logNetworkAfterSampling=ot(t.networkRequestsSamplingRate),e}function us(e){return Number(e)>Date.now()}function ot(e){return Math.random()<=e}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/let ke=1,ue;function on(e){return ke=2,ue=ue||fs(e),ue}function ds(){return ke===3}function fs(e){return hs().then(()=>qa(e.installations)).then(t=>as(e,t)).then(()=>ct(),()=>ct())}function hs(){const e=f.getInstance().document;return new Promise(t=>{if(e&&e.readyState!=="complete"){const n=()=>{e.readyState==="complete"&&(e.removeEventListener("readystatechange",n),t())};e.addEventListener("readystatechange",n)}else t()})}function ct(){ke=3}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const Fe=10*1e3,ps=5.5*1e3,cn=3,ms=1e3;let K=cn,D=[],lt=!1;function gs(){lt||(J(ps),lt=!0)}function J(e){setTimeout(()=>{if(K!==0){if(!D.length)return J(Fe);bs()}},e)}function bs(){const e=D.splice(0,ms),t=e.map(r=>({source_extension_json_proto3:r.message,event_time_ms:String(r.eventTime)})),n={request_time_ms:String(Date.now()),client_info:{client_type:1,js_client_info:{}},log_source:I.getInstance().logSource,log_event:t};Is(n,e).catch(()=>{D=[...e,...D],K--,w.info(`Tries left: ${K}.`),J(Fe)})}function Is(e,t){return ys(e).then(n=>(n.ok||w.info("Call to Firebase backend failed."),n.json())).then(n=>{const r=Number(n.nextRequestWaitMillis);let i=Fe;isNaN(r)||(i=Math.max(r,i));const a=n.logResponseDetails;Array.isArray(a)&&a.length>0&&a[0].responseAction==="RETRY_REQUEST_LATER"&&(D=[...t,...D],w.info("Retry transport request later.")),K=cn,J(i)})}function ys(e){const t=I.getInstance().getFlTransportFullUrl();return fetch(t,{method:"POST",body:JSON.stringify(e)})}function _s(e){if(!e.eventTime||!e.message)throw p.create("invalid cc log");D=[...D,e]}function Es(e){return(...t)=>{const n=e(...t);_s({message:n,eventTime:Date.now()})}}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/let de;function ln(e,t){de||(de=Es(Ts)),de(e,t)}function H(e){const t=I.getInstance();!t.instrumentationEnabled&&e.isAuto||!t.dataCollectionEnabled&&!e.isAuto||f.getInstance().requiredApisAvailable()&&(e.isAuto&&an()!==F.VISIBLE||(ds()?fe(e):on(e.performanceController).then(()=>fe(e),()=>fe(e))))}function fe(e){if(!$e())return;const t=I.getInstance();!t.loggingEnabled||!t.logTraceAfterSampling||setTimeout(()=>ln(e,1),0)}function ws(e){const t=I.getInstance();if(!t.instrumentationEnabled)return;const n=e.url,r=t.logEndPointUrl.split("?")[0],i=t.flTransportEndpointUrl.split("?")[0];n===r||n===i||!t.loggingEnabled||!t.logNetworkAfterSampling||setTimeout(()=>ln(e,0),0)}function Ts(e,t){return t===0?vs(e):As(e)}function vs(e){const t={url:e.url,http_method:e.httpMethod||0,http_response_code:200,response_payload_bytes:e.responsePayloadBytes,client_start_time_us:e.startTimeUs,time_to_response_initiated_us:e.timeToResponseInitiatedUs,time_to_response_completed_us:e.timeToResponseCompletedUs},n={application_info:un(e.performanceController.app),network_request_metric:t};return JSON.stringify(n)}function As(e){const t={name:e.name,is_auto:e.isAuto,client_start_time_us:e.startTimeUs,duration_us:e.durationUs};Object.keys(e.counters).length!==0&&(t.counters=e.counters);const n=e.getAttributes();Object.keys(n).length!==0&&(t.custom_attributes=n);const r={application_info:un(e.performanceController.app),trace_metric:t};return JSON.stringify(r)}function un(e){return{google_app_id:sn(e),app_instance_id:$e(),web_app_info:{sdk_version:Kt,page_url:f.getInstance().getUrl(),service_worker_status:Ja(),visibility_state:an(),effective_connection_type:Qa()},application_process_state:0}}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const Ss=100,Cs="_",Ds=[Yt,Jt,Qt];function Rs(e,t){return e.length===0||e.length>Ss?!1:t&&t.startsWith(Xt)&&Ds.indexOf(e)>-1||!e.startsWith(Cs)}function Ms(e){const t=Math.floor(e);return t<e&&w.info(`Metric value should be an Integer, setting the value as : ${t}.`),t}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/class O{constructor(t,n,r=!1,i){this.performanceController=t,this.name=n,this.isAuto=r,this.state=1,this.customAttributes={},this.counters={},this.api=f.getInstance(),this.randomId=Math.floor(Math.random()*1e6),this.isAuto||(this.traceStartMark=`${xa}-${this.randomId}-${this.name}`,this.traceStopMark=`${ja}-${this.randomId}-${this.name}`,this.traceMeasure=i||`${Te}-${this.randomId}-${this.name}`,i&&this.calculateTraceMetrics())}start(){if(this.state!==1)throw p.create("trace started",{traceName:this.name});this.api.mark(this.traceStartMark),this.state=2}stop(){if(this.state!==2)throw p.create("trace stopped",{traceName:this.name});this.state=3,this.api.mark(this.traceStopMark),this.api.measure(this.traceMeasure,this.traceStartMark,this.traceStopMark),this.calculateTraceMetrics(),H(this)}record(t,n,r){if(t<=0)throw p.create("nonpositive trace startTime",{traceName:this.name});if(n<=0)throw p.create("nonpositive trace duration",{traceName:this.name});if(this.durationUs=Math.floor(n*1e3),this.startTimeUs=Math.floor(t*1e3),r&&r.attributes&&(this.customAttributes=Object.assign({},r.attributes)),r&&r.metrics)for(const i of Object.keys(r.metrics))isNaN(Number(r.metrics[i]))||(this.counters[i]=Math.floor(Number(r.metrics[i])));H(this)}incrementMetric(t,n=1){this.counters[t]===void 0?this.putMetric(t,n):this.putMetric(t,this.counters[t]+n)}putMetric(t,n){if(Rs(t,this.name))this.counters[t]=Ms(n??0);else throw p.create("invalid custom metric name",{customMetricName:t})}getMetric(t){return this.counters[t]||0}putAttribute(t,n){const r=Za(t),i=es(n);if(r&&i){this.customAttributes[t]=n;return}if(!r)throw p.create("invalid attribute name",{attributeName:t});if(!i)throw p.create("invalid attribute value",{attributeValue:n})}getAttribute(t){return this.customAttributes[t]}removeAttribute(t){this.customAttributes[t]!==void 0&&delete this.customAttributes[t]}getAttributes(){return Object.assign({},this.customAttributes)}setStartTime(t){this.startTimeUs=t}setDuration(t){this.durationUs=t}calculateTraceMetrics(){const t=this.api.getEntriesByName(this.traceMeasure),n=t&&t[0];n&&(this.durationUs=Math.floor(n.duration*1e3),this.startTimeUs=Math.floor((n.startTime+this.api.getTimeOrigin())*1e3))}static createOobTrace(t,n,r,i){const a=f.getInstance().getUrl();if(!a)return;const s=new O(t,Xt+a,!0),o=Math.floor(f.getInstance().getTimeOrigin()*1e3);s.setStartTime(o),n&&n[0]&&(s.setDuration(Math.floor(n[0].duration*1e3)),s.putMetric("domInteractive",Math.floor(n[0].domInteractive*1e3)),s.putMetric("domContentLoadedEventEnd",Math.floor(n[0].domContentLoadedEventEnd*1e3)),s.putMetric("loadEventEnd",Math.floor(n[0].loadEventEnd*1e3)));const c="first-paint",l="first-contentful-paint";if(r){const d=r.find(g=>g.name===c);d&&d.startTime&&s.putMetric(Yt,Math.floor(d.startTime*1e3));const h=r.find(g=>g.name===l);h&&h.startTime&&s.putMetric(Jt,Math.floor(h.startTime*1e3)),i&&s.putMetric(Qt,Math.floor(i*1e3))}H(s)}static createUserTimingTrace(t,n){const r=new O(t,n,!1,n);H(r)}}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/function ut(e,t){const n=t;if(!n||n.responseStart===void 0)return;const r=f.getInstance().getTimeOrigin(),i=Math.floor((n.startTime+r)*1e3),a=n.responseStart?Math.floor((n.responseStart-n.startTime)*1e3):void 0,s=Math.floor((n.responseEnd-n.startTime)*1e3),o=n.name&&n.name.split("?")[0],c={performanceController:e,url:o,responsePayloadBytes:n.transferSize,startTimeUs:i,timeToResponseInitiatedUs:a,timeToResponseCompletedUs:s};ws(c)}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/const Ns=5e3;function dt(e){$e()&&(setTimeout(()=>Ps(e),0),setTimeout(()=>Os(e),0),setTimeout(()=>Bs(e),0))}function Os(e){const t=f.getInstance(),n=t.getEntriesByType("resource");for(const r of n)ut(e,r);t.setupObserver("resource",r=>ut(e,r))}function Ps(e){const t=f.getInstance(),n=t.getEntriesByType("navigation"),r=t.getEntriesByType("paint");if(t.onFirstInputDelay){let i=setTimeout(()=>{O.createOobTrace(e,n,r),i=void 0},Ns);t.onFirstInputDelay(a=>{i&&(clearTimeout(i),O.createOobTrace(e,n,r,a))})}else O.createOobTrace(e,n,r)}function Bs(e){const t=f.getInstance(),n=t.getEntriesByType("measure");for(const r of n)ft(e,r);t.setupObserver("measure",r=>ft(e,r))}function ft(e,t){const n=t.name;n.substring(0,Te.length)!==Te&&O.createUserTimingTrace(e,n)}/**
|
||||||
|
* @license
|
||||||
|
* Copyright 2020 Google LLC
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/class $s{constructor(t,n){this.app=t,this.installations=n,this.initialized=!1}_init(t){this.initialized||((t==null?void 0:t.dataCollectionEnabled)!==void 0&&(this.dataCollectionEnabled=t.dataCollectionEnabled),(t==null?void 0:t.instrumentationEnabled)!==void 0&&(this.instrumentationEnabled=t.instrumentationEnabled),f.getInstance().requiredApisAvailable()?Ae().then(n=>{n&&(gs(),on(this).then(()=>dt(this),()=>dt(this)),this.initialized=!0)}).catch(n=>{w.info(`Environment doesn't support IndexedDB: ${n}`)}):w.info('Firebase Performance cannot start if the browser does not support "Fetch" and "Promise", or cookies are disabled.'))}set instrumentationEnabled(t){I.getInstance().instrumentationEnabled=t}get instrumentationEnabled(){return I.getInstance().instrumentationEnabled}set dataCollectionEnabled(t){I.getInstance().dataCollectionEnabled=t}get dataCollectionEnabled(){return I.getInstance().dataCollectionEnabled}}const ks="[DEFAULT]";function Fs(e=Et()){return e=Se(e),V(e,"performance").getImmediate()}const Ls=(e,{options:t})=>{const n=e.getProvider("app").getImmediate(),r=e.getProvider("installations-internal").getImmediate();if(n.name!==ks)throw p.create("FB not default");if(typeof window>"u")throw p.create("no window");za(window);const i=new $s(n,r);return i._init(t),i};function Us(){R(new v("performance",Ls,"PUBLIC")),E(it,we),E(it,we,"esm2017")}Us();const xs=e=>(In("data-v-fd8ce0a8"),e=e(),yn(),e),js=xs(()=>T("div",{"data-v-98ddab3d":"","data-v-8f7cd5e4":"",class:"VPContent",id:"VPContent"},[T("div",{"data-v-6c4a3ffe":"","data-v-98ddab3d":"",class:"NotFound"},[T("img",{src:"https://rust.coldmint.top/ftp/ling/cdnpng/logo.png",alt:"",class:"notfound-img"}),T("p",{"data-v-6c4a3ffe":"",class:"code"},"404"),T("h1",{"data-v-6c4a3ffe":"",class:"title"}," 你干嘛~,这里什么都没有! "),T("div",{"data-v-6c4a3ffe":"",class:"divider"}),T("blockquote",{"data-v-6c4a3ffe":"",class:"quote"}," 你寻找的页面可能不存在或被迁移…… "),T("div",{"data-v-6c4a3ffe":"",class:"action"},[T("a",{"data-v-6c4a3ffe":"",class:"link",href:"/","aria-label":"go to home"}," 返回主页 ")])])],-1)),Vs={__name:"NotFound",setup(e){const{Layout:t}=ht;return(n,r)=>(pn(),mn(bn(t),null,{"not-found":gn(()=>[js]),_:1}))}},Hs=hn(Vs,[["__scopeId","data-v-fd8ce0a8"]]),zs=()=>{const t=_t({apiKey:"AIzaSyANVvapu0ihi1cM8ZzuXTkwjx9lM_J1RyQ",authDomain:"rw-api-code-d0779.firebaseapp.com",projectId:"rw-api-code-d0779",storageBucket:"rw-api-code-d0779.appspot.com",messagingSenderId:"363611843335",appId:"1:363611843335:web:f15aef7ab427f52b4033a2",measurementId:"G-XJH5TKP5VL"});return ka(t),Fs(t),"Firebase initialized successfully"};(async function(){try{const e=await zs();console.log(e)}catch(e){console.error(e)}})();function qs(e){return new Promise(t=>setTimeout(t,e))}async function Ws(){try{await navigator.permissions.query({name:"clipboard-write"})}catch(e){console.error(e)}}async function Gs(){try{await qs(1e3);const e=document.getElementsByClassName("copy");for(let t=0;t<e.length;t++){const n=e[t];n.addEventListener("touchend",async()=>{await Ws();const a=[...n.parentNode.querySelector("code").querySelectorAll("span")],s=[...new Set(a.map(o=>o.textContent))].join("");try{await navigator.clipboard.writeText(s)}catch{const c=document.createElement("textarea");c.value=s,document.body.appendChild(c),c.select(),document.execCommand("copy"),document.body.removeChild(c)}})}}catch(e){console.error(e)}}Gs();const Ks={...ht,Layout:Hs};function dn(e){if(e.extends){const t=dn(e.extends);return{...t,...e,async enhanceApp(n){t.enhanceApp&&await t.enhanceApp(n),e.enhanceApp&&await e.enhanceApp(n)}}}return e}const L=dn(Ks),Xs=_n({name:"VitePressApp",setup(){const{site:e}=wn();return Tn(()=>{vn(()=>{document.documentElement.lang=e.value.lang,document.documentElement.dir=e.value.dir})}),An(),Sn(),Cn(),L.setup&&L.setup(),()=>Dn(L.Layout)}});async function Ys(){const e=Qs(),t=Js();t.provide(Rn,e);const n=Mn(e.route);return t.provide(Nn,n),t.component("Content",On),t.component("ClientOnly",Pn),Object.defineProperties(t.config.globalProperties,{$frontmatter:{get(){return n.frontmatter.value}},$params:{get(){return n.page.value.params}}}),L.enhanceApp&&await L.enhanceApp({app:t,router:e,siteData:Bn}),{app:t,router:e,data:n}}function Js(){return $n(Xs)}function Qs(){let e=he,t;return kn(n=>{let r=Fn(n);return e&&(t=r),(e||t===r)&&(r=r.replace(/\.js$/,".lean.js")),he&&(e=!1),Ln(()=>import(r),[])},L.NotFound)}he&&Ys().then(({app:e,router:t,data:n})=>{t.go().then(()=>{En(t.route,n.site),e.mount("#app")})});export{Ys as createApp};
|
File diff suppressed because one or more lines are too long
1
assets/chunks/@localSearchIndexroot.e1eaeb94.js
Normal file
1
assets/chunks/@localSearchIndexroot.e1eaeb94.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
assets/chunks/VPLocalSearchBox.d1ada2c9.js
Normal file
1
assets/chunks/VPLocalSearchBox.d1ada2c9.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
assets/chunks/framework.fcc0bf38.js
Normal file
2
assets/chunks/framework.fcc0bf38.js
Normal file
File diff suppressed because one or more lines are too long
7
assets/chunks/theme.9136979b.js
Normal file
7
assets/chunks/theme.9136979b.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
||||||
import{_ as t,o as a,c as s,X as r}from"./chunks/framework.d377e0cc.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"cos.md","filePath":"cos.md"}'),e={name:"cos.md"},b=r('<h3 id="站点开发贡献者-截止到2023-8-22" tabindex="-1">站点开发贡献者-截止到2023-8-22 <a class="header-anchor" href="#站点开发贡献者-截止到2023-8-22" aria-label="Permalink to "站点开发贡献者-截止到2023-8-22""></a></h3><table><tr><td align="center"><a href="https://github.com/shishanyue"><img src="https://avatars.githubusercontent.com/u/62888460?v=4" width="100;" alt="shishanyue"><br><sub><b>Shishanyue</b></sub><br>RWE作者 <br>第一深度 </a></td><td align="center"><a href="https://github.com/LingASDJ"><img src="https://avatars.githubusercontent.com/u/70191651?v=4" width="100;" alt="LingASDJ"><br><sub><b>JDSA Ling</b></sub><br>站长 </a></td><td align="center"><a href="https://github.com/tobby3600"><img src="https://avatars.githubusercontent.com/u/79432329?v=4" width="100;" alt="tobby3600"><br><sub><b>Tobby</b></sub><br>逻辑组 </a></td><td align="center"><a href="https://github.com/mason369"><img src="https://avatars.githubusercontent.com/u/93964390?v=4" width="100;" alt="mason369"><br><sub><b>Mason</b></sub><br>技术支持 <br>副站长 </a></td><td align="center"><a href="https://github.com/liusxs"><img src="https://avatars.githubusercontent.com/u/101164913?v=4" width="100;" alt="liusxs"><br><sub><b>Liuliu</b></sub><br>布局优化 <br>副站长 </a></td><td align="center"><a href="https://github.com/allureluoli"><img src="https://avatars.githubusercontent.com/u/106828088?v=4" width="100;" alt="allureluoli"><br><sub><b>二月</b></sub><br>图像组 <br>二月可爱捏 </a></td></tr><tr><td align="center"><a href="https://github.com/WisenextTime"><img src="https://avatars.githubusercontent.com/u/141509640?v=4" width="100;" alt="WisenextTime"><br><sub><b>作业中毒</b></sub><br>刷兵运动组 <br>催逝员 </a></td><td align="center"><a href="https://github.com/Thisisafox"><img src="https://avatars.githubusercontent.com/u/141534430?v=4" width="100;" alt="Thisisafox"><br><sub><b>屑狐狸</b></sub><br>附属攻击组 <br>大聪明 </a></td><td align="center"><a href="#"><img src="https://avatars.githubusercontent.com/in/29110?s=64&v=4" width="100;" alt="Thisisafox"><br><sub><b>???</b></sub><br>更多贡献者 <br>等待你的到来 </a></td></tr></table>',2),i=[b];function h(u,c,n,o,l,d){return a(),s("div",null,i)}const p=t(e,[["render",h]]);export{g as __pageData,p as default};
|
import{_ as t,c as a,o as s,V as r}from"./chunks/framework.fcc0bf38.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"cos.md","filePath":"cos.md"}'),e={name:"cos.md"},b=r('<h3 id="站点开发贡献者-截止到2023-8-22" tabindex="-1">站点开发贡献者-截止到2023-8-22 <a class="header-anchor" href="#站点开发贡献者-截止到2023-8-22" aria-label="Permalink to "站点开发贡献者-截止到2023-8-22""></a></h3><table><tr><td align="center"><a href="https://github.com/shishanyue"><img src="https://avatars.githubusercontent.com/u/62888460?v=4" width="100;" alt="shishanyue"><br><sub><b>Shishanyue</b></sub><br>RWE作者 <br>第一深度 </a></td><td align="center"><a href="https://github.com/LingASDJ"><img src="https://avatars.githubusercontent.com/u/70191651?v=4" width="100;" alt="LingASDJ"><br><sub><b>JDSA Ling</b></sub><br>站长 </a></td><td align="center"><a href="https://github.com/tobby3600"><img src="https://avatars.githubusercontent.com/u/79432329?v=4" width="100;" alt="tobby3600"><br><sub><b>Tobby</b></sub><br>逻辑组 </a></td><td align="center"><a href="https://github.com/mason369"><img src="https://avatars.githubusercontent.com/u/93964390?v=4" width="100;" alt="mason369"><br><sub><b>Mason</b></sub><br>技术支持 <br>副站长 </a></td><td align="center"><a href="https://github.com/liusxs"><img src="https://avatars.githubusercontent.com/u/101164913?v=4" width="100;" alt="liusxs"><br><sub><b>Liuliu</b></sub><br>布局优化 <br>副站长 </a></td><td align="center"><a href="https://github.com/allureluoli"><img src="https://avatars.githubusercontent.com/u/106828088?v=4" width="100;" alt="allureluoli"><br><sub><b>二月</b></sub><br>图像组 <br>二月可爱捏 </a></td></tr><tr><td align="center"><a href="https://github.com/WisenextTime"><img src="https://avatars.githubusercontent.com/u/141509640?v=4" width="100;" alt="WisenextTime"><br><sub><b>作业中毒</b></sub><br>刷兵运动组 <br>催逝员 </a></td><td align="center"><a href="https://github.com/Thisisafox"><img src="https://avatars.githubusercontent.com/u/141534430?v=4" width="100;" alt="Thisisafox"><br><sub><b>屑狐狸</b></sub><br>附属攻击组 <br>大聪明 </a></td><td align="center"><a href="#"><img src="https://avatars.githubusercontent.com/in/29110?s=64&v=4" width="100;" alt="Thisisafox"><br><sub><b>???</b></sub><br>更多贡献者 <br>等待你的到来 </a></td></tr></table>',2),i=[b];function h(u,c,n,o,l,d){return s(),a("div",null,i)}const p=t(e,[["render",h]]);export{g as __pageData,p as default};
|
1
assets/cos.md.4cc32180.lean.js
Normal file
1
assets/cos.md.4cc32180.lean.js
Normal file
|
@ -0,0 +1 @@
|
||||||
|
import{_ as t,c as a,o as s,V as r}from"./chunks/framework.fcc0bf38.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"cos.md","filePath":"cos.md"}'),e={name:"cos.md"},b=r("",2),i=[b];function h(u,c,n,o,l,d){return s(),a("div",null,i)}const p=t(e,[["render",h]]);export{g as __pageData,p as default};
|
|
@ -1 +0,0 @@
|
||||||
import{_ as t,o as a,c as s,X as r}from"./chunks/framework.d377e0cc.js";const g=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"cos.md","filePath":"cos.md"}'),e={name:"cos.md"},b=r("",2),i=[b];function h(u,c,n,o,l,d){return a(),s("div",null,i)}const p=t(e,[["render",h]]);export{g as __pageData,p as default};
|
|
|
@ -1 +1 @@
|
||||||
import{_ as t,o as e,c as n}from"./chunks/framework.d377e0cc.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","action":null,"hero":{"name":"铁锈战争-API-Code","text":"轻松编码,轻松学习","tagline":"学习Mod,制作Mod,创新Mod","image":{"src":"https://rust.coldmint.top/ftp/ling/cdnpng/logo.png","alt":"RW-API-Code"},"actions":[{"theme":"alt","text":"编写指南","link":"/api-dev"},{"theme":"brand","text":"Github","link":"https://github.com/LingASDJ/RW-API-Code"}]},"features":[{"title":"单位代码表","details":"学习最基础的铁锈单位API-Code","link":"/src/Unit/core","linkText":"让我们立刻开始吧!"},{"title":"地图代码表","details":"学习铁锈的地图TMX代码表","linkText":"让我们立刻开始吧![开发中]"},{"title":"调试代码表","details":"学习铁锈的高级调试代码表(仅Android)","linkText":"让我们立刻开始吧![开发中]"},{"title":"RW-Engine指南","details":"学习铁锈Mod RW-Engine的使用(仅Android)","link":"/src/RW-Engine/quick-start","linkText":"让我们立刻开始吧![开发中]"}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),i={name:"index.md"};function o(a,d,l,r,s,c){return e(),n("div")}const x=t(i,[["render",o]]);export{m as __pageData,x as default};
|
import{_ as t,c as e,o as n}from"./chunks/framework.fcc0bf38.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","action":null,"hero":{"name":"铁锈战争-API-Code","text":"轻松编码,轻松学习","tagline":"学习Mod,制作Mod,创新Mod","image":{"src":"https://rust.coldmint.top/ftp/ling/cdnpng/logo.png","alt":"RW-API-Code"},"actions":[{"theme":"alt","text":"编写指南","link":"/api-dev"},{"theme":"brand","text":"Github","link":"https://github.com/LingASDJ/RW-API-Code"}]},"features":[{"title":"单位代码表","details":"学习最基础的铁锈单位API-Code","link":"/src/Unit/core","linkText":"让我们立刻开始吧!"},{"title":"地图代码表","details":"学习铁锈的地图TMX代码表","linkText":"让我们立刻开始吧![开发中]"},{"title":"调试代码表","details":"学习铁锈的高级调试代码表(仅Android)","linkText":"让我们立刻开始吧![开发中]"},{"title":"RW-Engine指南","details":"学习铁锈Mod RW-Engine的使用(仅Android)","link":"/src/RW-Engine/quick-start","linkText":"让我们立刻开始吧![开发中]"}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),i={name:"index.md"};function o(a,d,l,r,s,c){return n(),e("div")}const x=t(i,[["render",o]]);export{m as __pageData,x as default};
|
|
@ -1 +1 @@
|
||||||
import{_ as t,o as e,c as n}from"./chunks/framework.d377e0cc.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","action":null,"hero":{"name":"铁锈战争-API-Code","text":"轻松编码,轻松学习","tagline":"学习Mod,制作Mod,创新Mod","image":{"src":"https://rust.coldmint.top/ftp/ling/cdnpng/logo.png","alt":"RW-API-Code"},"actions":[{"theme":"alt","text":"编写指南","link":"/api-dev"},{"theme":"brand","text":"Github","link":"https://github.com/LingASDJ/RW-API-Code"}]},"features":[{"title":"单位代码表","details":"学习最基础的铁锈单位API-Code","link":"/src/Unit/core","linkText":"让我们立刻开始吧!"},{"title":"地图代码表","details":"学习铁锈的地图TMX代码表","linkText":"让我们立刻开始吧![开发中]"},{"title":"调试代码表","details":"学习铁锈的高级调试代码表(仅Android)","linkText":"让我们立刻开始吧![开发中]"},{"title":"RW-Engine指南","details":"学习铁锈Mod RW-Engine的使用(仅Android)","link":"/src/RW-Engine/quick-start","linkText":"让我们立刻开始吧![开发中]"}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),i={name:"index.md"};function o(a,d,l,r,s,c){return e(),n("div")}const x=t(i,[["render",o]]);export{m as __pageData,x as default};
|
import{_ as t,c as e,o as n}from"./chunks/framework.fcc0bf38.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","action":null,"hero":{"name":"铁锈战争-API-Code","text":"轻松编码,轻松学习","tagline":"学习Mod,制作Mod,创新Mod","image":{"src":"https://rust.coldmint.top/ftp/ling/cdnpng/logo.png","alt":"RW-API-Code"},"actions":[{"theme":"alt","text":"编写指南","link":"/api-dev"},{"theme":"brand","text":"Github","link":"https://github.com/LingASDJ/RW-API-Code"}]},"features":[{"title":"单位代码表","details":"学习最基础的铁锈单位API-Code","link":"/src/Unit/core","linkText":"让我们立刻开始吧!"},{"title":"地图代码表","details":"学习铁锈的地图TMX代码表","linkText":"让我们立刻开始吧![开发中]"},{"title":"调试代码表","details":"学习铁锈的高级调试代码表(仅Android)","linkText":"让我们立刻开始吧![开发中]"},{"title":"RW-Engine指南","details":"学习铁锈Mod RW-Engine的使用(仅Android)","link":"/src/RW-Engine/quick-start","linkText":"让我们立刻开始吧![开发中]"}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),i={name:"index.md"};function o(a,d,l,r,s,c){return n(),e("div")}const x=t(i,[["render",o]]);export{m as __pageData,x as default};
|
|
@ -1 +1 @@
|
||||||
import{_ as e,o as t,c as s,k as a}from"./chunks/framework.d377e0cc.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"src/Debug/test.md","filePath":"src/Debug/test.md"}'),o={name:"src/Debug/test.md"},r=a("p",null,"fasa",-1),c=[r];function n(_,d,i,p,l,f){return t(),s("div",null,c)}const h=e(o,[["render",n]]);export{u as __pageData,h as default};
|
import{_ as e,c as t,o as s,C as a}from"./chunks/framework.fcc0bf38.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"src/Debug/test.md","filePath":"src/Debug/test.md"}'),o={name:"src/Debug/test.md"},r=a("p",null,"fasa",-1),c=[r];function n(_,d,i,p,l,f){return s(),t("div",null,c)}const h=e(o,[["render",n]]);export{u as __pageData,h as default};
|
|
@ -1 +1 @@
|
||||||
import{_ as e,o as t,c as s,k as a}from"./chunks/framework.d377e0cc.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"src/Debug/test.md","filePath":"src/Debug/test.md"}'),o={name:"src/Debug/test.md"},r=a("p",null,"fasa",-1),c=[r];function n(_,d,i,p,l,f){return t(),s("div",null,c)}const h=e(o,[["render",n]]);export{u as __pageData,h as default};
|
import{_ as e,c as t,o as s,C as a}from"./chunks/framework.fcc0bf38.js";const u=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"src/Debug/test.md","filePath":"src/Debug/test.md"}'),o={name:"src/Debug/test.md"},r=a("p",null,"fasa",-1),c=[r];function n(_,d,i,p,l,f){return s(),t("div",null,c)}const h=e(o,[["render",n]]);export{u as __pageData,h as default};
|
|
@ -1 +1 @@
|
||||||
import{_ as a,o as t,c as e}from"./chunks/framework.d377e0cc.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"src/Map/tsada.md","filePath":"src/Map/tsada.md"}'),s={name:"src/Map/tsada.md"};function r(c,o,n,d,p,_){return t(),e("div")}const f=a(s,[["render",r]]);export{m as __pageData,f as default};
|
import{_ as a,c as t,o as e}from"./chunks/framework.fcc0bf38.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"src/Map/tsada.md","filePath":"src/Map/tsada.md"}'),s={name:"src/Map/tsada.md"};function r(c,o,n,d,p,_){return e(),t("div")}const f=a(s,[["render",r]]);export{m as __pageData,f as default};
|
|
@ -1 +1 @@
|
||||||
import{_ as a,o as t,c as e}from"./chunks/framework.d377e0cc.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"src/Map/tsada.md","filePath":"src/Map/tsada.md"}'),s={name:"src/Map/tsada.md"};function r(c,o,n,d,p,_){return t(),e("div")}const f=a(s,[["render",r]]);export{m as __pageData,f as default};
|
import{_ as a,c as t,o as e}from"./chunks/framework.fcc0bf38.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"src/Map/tsada.md","filePath":"src/Map/tsada.md"}'),s={name:"src/Map/tsada.md"};function r(c,o,n,d,p,_){return e(),t("div")}const f=a(s,[["render",r]]);export{m as __pageData,f as default};
|
|
@ -1,4 +1,4 @@
|
||||||
import{_ as n,o as e,c as s,X as a}from"./chunks/framework.d377e0cc.js";const q=JSON.parse('{"title":"QuickStart","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/RW-Engine/quick-start.md","filePath":"src/RW-Engine/quick-start.md"}'),t={name:"src/RW-Engine/quick-start.md"},o=a(`<h1 id="quickstart" tabindex="-1"><strong>QuickStart</strong> <a class="header-anchor" href="#quickstart" aria-label="Permalink to "**QuickStart**""></a></h1><h2 id="一-安装rw-engine" tabindex="-1">一.安装RW-Engine <a class="header-anchor" href="#一-安装rw-engine" aria-label="Permalink to "一.安装RW-Engine""></a></h2><h3 id="下载rw-engine" tabindex="-1">下载RW-Engine <a class="header-anchor" href="#下载rw-engine" aria-label="Permalink to "下载RW-Engine""></a></h3><pre><code>蓝奏云:
|
import{_ as n,c as e,o as s,V as a}from"./chunks/framework.fcc0bf38.js";const q=JSON.parse('{"title":"QuickStart","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/RW-Engine/quick-start.md","filePath":"src/RW-Engine/quick-start.md"}'),t={name:"src/RW-Engine/quick-start.md"},o=a(`<h1 id="quickstart" tabindex="-1"><strong>QuickStart</strong> <a class="header-anchor" href="#quickstart" aria-label="Permalink to "**QuickStart**""></a></h1><h2 id="一-安装rw-engine" tabindex="-1">一.安装RW-Engine <a class="header-anchor" href="#一-安装rw-engine" aria-label="Permalink to "一.安装RW-Engine""></a></h2><h3 id="下载rw-engine" tabindex="-1">下载RW-Engine <a class="header-anchor" href="#下载rw-engine" aria-label="Permalink to "下载RW-Engine""></a></h3><pre><code>蓝奏云:
|
||||||
</code></pre><h3 id="安装rw-engine" tabindex="-1">安装RW-Engine <a class="header-anchor" href="#安装rw-engine" aria-label="Permalink to "安装RW-Engine""></a></h3><pre><code>解压下载的ZIP,将里面的RW_Engine这个文件夹整个复制到你的mod的目录下。
|
</code></pre><h3 id="安装rw-engine" tabindex="-1">安装RW-Engine <a class="header-anchor" href="#安装rw-engine" aria-label="Permalink to "安装RW-Engine""></a></h3><pre><code>解压下载的ZIP,将里面的RW_Engine这个文件夹整个复制到你的mod的目录下。
|
||||||
|
|
||||||
文件结构:
|
文件结构:
|
||||||
|
@ -28,4 +28,4 @@ import{_ as n,o as e,c as s,X as a}from"./chunks/framework.d377e0cc.js";const q=
|
||||||
<span class="line"><span style="color:#A6ACCD;">isVisible:true</span></span>
|
<span class="line"><span style="color:#A6ACCD;">isVisible:true</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">sendMessageTo:memory.LTVSystem</span></span>
|
<span class="line"><span style="color:#A6ACCD;">sendMessageTo:memory.LTVSystem</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">sendMessageWithTags:setText</span></span>
|
<span class="line"><span style="color:#A6ACCD;">sendMessageWithTags:setText</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">sendMessageWithData:</span><span style="color:#F07178;">text</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">"</span><span style="color:#C3E88D;">B站关注学画画的十山月</span><span style="color:#89DDFF;">"</span></span></code></pre></div>`,15),l=[o];function i(r,p,c,u,d,y){return e(),s("div",null,l)}const h=n(t,[["render",i]]);export{q as __pageData,h as default};
|
<span class="line"><span style="color:#A6ACCD;">sendMessageWithData:</span><span style="color:#F07178;">text</span><span style="color:#89DDFF;">=</span><span style="color:#89DDFF;">"</span><span style="color:#C3E88D;">B站关注学画画的十山月</span><span style="color:#89DDFF;">"</span></span></code></pre></div>`,15),l=[o];function i(r,p,c,u,d,y){return s(),e("div",null,l)}const h=n(t,[["render",i]]);export{q as __pageData,h as default};
|
|
@ -1 +1 @@
|
||||||
import{_ as n,o as e,c as s,X as a}from"./chunks/framework.d377e0cc.js";const q=JSON.parse('{"title":"QuickStart","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/RW-Engine/quick-start.md","filePath":"src/RW-Engine/quick-start.md"}'),t={name:"src/RW-Engine/quick-start.md"},o=a("",15),l=[o];function i(r,p,c,u,d,y){return e(),s("div",null,l)}const h=n(t,[["render",i]]);export{q as __pageData,h as default};
|
import{_ as n,c as e,o as s,V as a}from"./chunks/framework.fcc0bf38.js";const q=JSON.parse('{"title":"QuickStart","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/RW-Engine/quick-start.md","filePath":"src/RW-Engine/quick-start.md"}'),t={name:"src/RW-Engine/quick-start.md"},o=a("",15),l=[o];function i(r,p,c,u,d,y){return s(),e("div",null,l)}const h=n(t,[["render",i]]);export{q as __pageData,h as default};
|
|
@ -1,4 +1,4 @@
|
||||||
import{_ as a,o as e,c as t,X as n}from"./chunks/framework.d377e0cc.js";const b=JSON.parse('{"title":"[attachment]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/attachment.md","filePath":"src/Unit/attachment.md"}'),i={name:"src/Unit/attachment.md"},o=n(`<h1 id="attachment-组" tabindex="-1"><strong>[attachment]组</strong> <a class="header-anchor" href="#attachment-组" aria-label="Permalink to "**[attachment]组**""></a></h1><h2 id="第一类-附属代码组" tabindex="-1">第一类-附属代码组 <a class="header-anchor" href="#第一类-附属代码组" aria-label="Permalink to "第一类-附属代码组""></a></h2><h3 id="x-y" tabindex="-1">x/y <a class="header-anchor" href="#x-y" aria-label="Permalink to "x/y""></a></h3><h4 id="x-y-代码简介" tabindex="-1">x/y-代码简介 <a class="header-anchor" href="#x-y-代码简介" aria-label="Permalink to "x/y-代码简介""></a></h4><p>代码:x/y 中文释义:x坐标/y坐标 类型:逻辑布尔值LogicBoolean 隶属于:附属代码组</p><h4 id="x-y-要点指示" tabindex="-1">x/y-要点指示 <a class="header-anchor" href="#x-y-要点指示" aria-label="Permalink to "x/y-要点指示""></a></h4><p>相对主体单位的x偏移坐标/y偏移坐标</p><h4 id="x-y-演示例子" tabindex="-1">x/y-演示例子 <a class="header-anchor" href="#x-y-演示例子" aria-label="Permalink to "x/y-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attachment_1]</span></span>
|
import{_ as a,c as e,o as t,V as n}from"./chunks/framework.fcc0bf38.js";const b=JSON.parse('{"title":"[attachment]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/attachment.md","filePath":"src/Unit/attachment.md"}'),i={name:"src/Unit/attachment.md"},o=n(`<h1 id="attachment-组" tabindex="-1"><strong>[attachment]组</strong> <a class="header-anchor" href="#attachment-组" aria-label="Permalink to "**[attachment]组**""></a></h1><h2 id="第一类-附属代码组" tabindex="-1">第一类-附属代码组 <a class="header-anchor" href="#第一类-附属代码组" aria-label="Permalink to "第一类-附属代码组""></a></h2><h3 id="x-y" tabindex="-1">x/y <a class="header-anchor" href="#x-y" aria-label="Permalink to "x/y""></a></h3><h4 id="x-y-代码简介" tabindex="-1">x/y-代码简介 <a class="header-anchor" href="#x-y-代码简介" aria-label="Permalink to "x/y-代码简介""></a></h4><p>代码:x/y 中文释义:x坐标/y坐标 类型:逻辑布尔值LogicBoolean 隶属于:附属代码组</p><h4 id="x-y-要点指示" tabindex="-1">x/y-要点指示 <a class="header-anchor" href="#x-y-要点指示" aria-label="Permalink to "x/y-要点指示""></a></h4><p>相对主体单位的x偏移坐标/y偏移坐标</p><h4 id="x-y-演示例子" tabindex="-1">x/y-演示例子 <a class="header-anchor" href="#x-y-演示例子" aria-label="Permalink to "x/y-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attachment_1]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">x:10</span></span>
|
<span class="line"><span style="color:#A6ACCD;">x:10</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">y:10</span></span></code></pre></div><hr><h3 id="height" tabindex="-1">height <a class="header-anchor" href="#height" aria-label="Permalink to "height""></a></h3><h4 id="height-代码简介" tabindex="-1">height-代码简介 <a class="header-anchor" href="#height-代码简介" aria-label="Permalink to "height-代码简介""></a></h4><p>代码:height 中文释义:高度 类型:浮点值float 隶属于:附属代码组</p><h4 id="height-要点指示" tabindex="-1">height-要点指示 <a class="header-anchor" href="#height-要点指示" aria-label="Permalink to "height-要点指示""></a></h4><p>附属基于主体单位的高度</p><h4 id="height-演示例子" tabindex="-1">height-演示例子 <a class="header-anchor" href="#height-演示例子" aria-label="Permalink to "height-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attachment_1]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">y:10</span></span></code></pre></div><hr><h3 id="height" tabindex="-1">height <a class="header-anchor" href="#height" aria-label="Permalink to "height""></a></h3><h4 id="height-代码简介" tabindex="-1">height-代码简介 <a class="header-anchor" href="#height-代码简介" aria-label="Permalink to "height-代码简介""></a></h4><p>代码:height 中文释义:高度 类型:浮点值float 隶属于:附属代码组</p><h4 id="height-要点指示" tabindex="-1">height-要点指示 <a class="header-anchor" href="#height-要点指示" aria-label="Permalink to "height-要点指示""></a></h4><p>附属基于主体单位的高度</p><h4 id="height-演示例子" tabindex="-1">height-演示例子 <a class="header-anchor" href="#height-演示例子" aria-label="Permalink to "height-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attachment_1]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">height:10.5</span></span></code></pre></div><hr><h3 id="idledir" tabindex="-1">idleDir <a class="header-anchor" href="#idledir" aria-label="Permalink to "idleDir""></a></h3><h4 id="idledir-代码简介" tabindex="-1">idleDir-代码简介 <a class="header-anchor" href="#idledir-代码简介" aria-label="Permalink to "idleDir-代码简介""></a></h4><p>代码:idleDir 中文释义:闲置角度 类型:浮点值float 隶属于:附属代码组</p><h4 id="idledir-要点指示" tabindex="-1">idleDir-要点指示 <a class="header-anchor" href="#idledir-要点指示" aria-label="Permalink to "idleDir-要点指示""></a></h4><p>闲置时的角度</p><h4 id="idledir-演示例子" tabindex="-1">idleDir-演示例子 <a class="header-anchor" href="#idledir-演示例子" aria-label="Permalink to "idleDir-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attachment_1]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">height:10.5</span></span></code></pre></div><hr><h3 id="idledir" tabindex="-1">idleDir <a class="header-anchor" href="#idledir" aria-label="Permalink to "idleDir""></a></h3><h4 id="idledir-代码简介" tabindex="-1">idleDir-代码简介 <a class="header-anchor" href="#idledir-代码简介" aria-label="Permalink to "idleDir-代码简介""></a></h4><p>代码:idleDir 中文释义:闲置角度 类型:浮点值float 隶属于:附属代码组</p><h4 id="idledir-要点指示" tabindex="-1">idleDir-要点指示 <a class="header-anchor" href="#idledir-要点指示" aria-label="Permalink to "idleDir-要点指示""></a></h4><p>闲置时的角度</p><h4 id="idledir-演示例子" tabindex="-1">idleDir-演示例子 <a class="header-anchor" href="#idledir-演示例子" aria-label="Permalink to "idleDir-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attachment_1]</span></span>
|
||||||
|
@ -34,4 +34,4 @@ import{_ as a,o as e,c as t,X as n}from"./chunks/framework.d377e0cc.js";const b=
|
||||||
<span class="line"><span style="color:#A6ACCD;">redirectDamageToParent_shieldOnly:true</span></span></code></pre></div><hr><h2 id="第二类-未知代码组" tabindex="-1">第二类-未知代码组 <a class="header-anchor" href="#第二类-未知代码组" aria-label="Permalink to "第二类-未知代码组""></a></h2><h3 id="lockdir" tabindex="-1">lockDir <a class="header-anchor" href="#lockdir" aria-label="Permalink to "lockDir""></a></h3><h4 id="lockdir-代码简介" tabindex="-1">lockDir-代码简介 <a class="header-anchor" href="#lockdir-代码简介" aria-label="Permalink to "lockDir-代码简介""></a></h4><p>代码:lockDir 中文释义:锁定角度 类型:布尔值bool 隶属于:未知代码组</p><h4 id="lockdir-要点指示" tabindex="-1">lockDir-要点指示 <a class="header-anchor" href="#lockdir-要点指示" aria-label="Permalink to "lockDir-要点指示""></a></h4><p>未知</p><h4 id="lockdir-演示例子" tabindex="-1">lockDir-演示例子 <a class="header-anchor" href="#lockdir-演示例子" aria-label="Permalink to "lockDir-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attachment_1]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">redirectDamageToParent_shieldOnly:true</span></span></code></pre></div><hr><h2 id="第二类-未知代码组" tabindex="-1">第二类-未知代码组 <a class="header-anchor" href="#第二类-未知代码组" aria-label="Permalink to "第二类-未知代码组""></a></h2><h3 id="lockdir" tabindex="-1">lockDir <a class="header-anchor" href="#lockdir" aria-label="Permalink to "lockDir""></a></h3><h4 id="lockdir-代码简介" tabindex="-1">lockDir-代码简介 <a class="header-anchor" href="#lockdir-代码简介" aria-label="Permalink to "lockDir-代码简介""></a></h4><p>代码:lockDir 中文释义:锁定角度 类型:布尔值bool 隶属于:未知代码组</p><h4 id="lockdir-要点指示" tabindex="-1">lockDir-要点指示 <a class="header-anchor" href="#lockdir-要点指示" aria-label="Permalink to "lockDir-要点指示""></a></h4><p>未知</p><h4 id="lockdir-演示例子" tabindex="-1">lockDir-演示例子 <a class="header-anchor" href="#lockdir-演示例子" aria-label="Permalink to "lockDir-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attachment_1]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">lockDir:true</span></span></code></pre></div><hr><h3 id="unloadincurrentposition" tabindex="-1">unloadInCurrentPosition <a class="header-anchor" href="#unloadincurrentposition" aria-label="Permalink to "unloadInCurrentPosition""></a></h3><h4 id="unloadincurrentposition-代码简介" tabindex="-1">unloadInCurrentPosition-代码简介 <a class="header-anchor" href="#unloadincurrentposition-代码简介" aria-label="Permalink to "unloadInCurrentPosition-代码简介""></a></h4><p>代码:lockRotation 中文释义:卸载于此位置 类型:布尔值bool 隶属于:未知代码组</p><h4 id="unloadincurrentposition-要点指示" tabindex="-1">unloadInCurrentPosition-要点指示 <a class="header-anchor" href="#unloadincurrentposition-要点指示" aria-label="Permalink to "unloadInCurrentPosition-要点指示""></a></h4><p>未知</p><h4 id="unloadincurrentposition-演示例子" tabindex="-1">unloadInCurrentPosition-演示例子 <a class="header-anchor" href="#unloadincurrentposition-演示例子" aria-label="Permalink to "unloadInCurrentPosition-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attachment_1]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">lockDir:true</span></span></code></pre></div><hr><h3 id="unloadincurrentposition" tabindex="-1">unloadInCurrentPosition <a class="header-anchor" href="#unloadincurrentposition" aria-label="Permalink to "unloadInCurrentPosition""></a></h3><h4 id="unloadincurrentposition-代码简介" tabindex="-1">unloadInCurrentPosition-代码简介 <a class="header-anchor" href="#unloadincurrentposition-代码简介" aria-label="Permalink to "unloadInCurrentPosition-代码简介""></a></h4><p>代码:lockRotation 中文释义:卸载于此位置 类型:布尔值bool 隶属于:未知代码组</p><h4 id="unloadincurrentposition-要点指示" tabindex="-1">unloadInCurrentPosition-要点指示 <a class="header-anchor" href="#unloadincurrentposition-要点指示" aria-label="Permalink to "unloadInCurrentPosition-要点指示""></a></h4><p>未知</p><h4 id="unloadincurrentposition-演示例子" tabindex="-1">unloadInCurrentPosition-演示例子 <a class="header-anchor" href="#unloadincurrentposition-演示例子" aria-label="Permalink to "unloadInCurrentPosition-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attachment_1]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">unloadInCurrentPosition:true</span></span></code></pre></div><hr><h3 id="onconvertkeepexistingunitinsameslot" tabindex="-1">onConvertKeepExistingUnitInSameSlot <a class="header-anchor" href="#onconvertkeepexistingunitinsameslot" aria-label="Permalink to "onConvertKeepExistingUnitInSameSlot""></a></h3><h4 id="onconvertkeepexistingunitinsameslot-代码简介" tabindex="-1">onConvertKeepExistingUnitInSameSlot-代码简介 <a class="header-anchor" href="#onconvertkeepexistingunitinsameslot-代码简介" aria-label="Permalink to "onConvertKeepExistingUnitInSameSlot-代码简介""></a></h4><p>代码:onConvertKeepExistingUnitInSameSlot 中文释义:转换时附属仍然在同一槽位中 类型:布尔值bool 隶属于:未知代码组</p><h4 id="onconvertkeepexistingunitinsameslot-要点指示" tabindex="-1">onConvertKeepExistingUnitInSameSlot-要点指示 <a class="header-anchor" href="#onconvertkeepexistingunitinsameslot-要点指示" aria-label="Permalink to "onConvertKeepExistingUnitInSameSlot-要点指示""></a></h4><p>未知</p><h4 id="onconvertkeepexistingunitinsameslot-演示例子" tabindex="-1">onConvertKeepExistingUnitInSameSlot-演示例子 <a class="header-anchor" href="#onconvertkeepexistingunitinsameslot-演示例子" aria-label="Permalink to "onConvertKeepExistingUnitInSameSlot-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attachment_1]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">unloadInCurrentPosition:true</span></span></code></pre></div><hr><h3 id="onconvertkeepexistingunitinsameslot" tabindex="-1">onConvertKeepExistingUnitInSameSlot <a class="header-anchor" href="#onconvertkeepexistingunitinsameslot" aria-label="Permalink to "onConvertKeepExistingUnitInSameSlot""></a></h3><h4 id="onconvertkeepexistingunitinsameslot-代码简介" tabindex="-1">onConvertKeepExistingUnitInSameSlot-代码简介 <a class="header-anchor" href="#onconvertkeepexistingunitinsameslot-代码简介" aria-label="Permalink to "onConvertKeepExistingUnitInSameSlot-代码简介""></a></h4><p>代码:onConvertKeepExistingUnitInSameSlot 中文释义:转换时附属仍然在同一槽位中 类型:布尔值bool 隶属于:未知代码组</p><h4 id="onconvertkeepexistingunitinsameslot-要点指示" tabindex="-1">onConvertKeepExistingUnitInSameSlot-要点指示 <a class="header-anchor" href="#onconvertkeepexistingunitinsameslot-要点指示" aria-label="Permalink to "onConvertKeepExistingUnitInSameSlot-要点指示""></a></h4><p>未知</p><h4 id="onconvertkeepexistingunitinsameslot-演示例子" tabindex="-1">onConvertKeepExistingUnitInSameSlot-演示例子 <a class="header-anchor" href="#onconvertkeepexistingunitinsameslot-演示例子" aria-label="Permalink to "onConvertKeepExistingUnitInSameSlot-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attachment_1]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">onConvertKeepExistingUnitInSameSlot:true</span></span></code></pre></div><hr>`,283),s=[o];function r(l,h,d,c,p,m){return e(),t("div",null,s)}const g=a(i,[["render",r]]);export{b as __pageData,g as default};
|
<span class="line"><span style="color:#A6ACCD;">onConvertKeepExistingUnitInSameSlot:true</span></span></code></pre></div><hr>`,283),s=[o];function r(l,h,d,c,p,m){return t(),e("div",null,s)}const g=a(i,[["render",r]]);export{b as __pageData,g as default};
|
|
@ -1 +1 @@
|
||||||
import{_ as a,o as e,c as t,X as n}from"./chunks/framework.d377e0cc.js";const b=JSON.parse('{"title":"[attachment]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/attachment.md","filePath":"src/Unit/attachment.md"}'),i={name:"src/Unit/attachment.md"},o=n("",283),s=[o];function r(l,h,d,c,p,m){return e(),t("div",null,s)}const g=a(i,[["render",r]]);export{b as __pageData,g as default};
|
import{_ as a,c as e,o as t,V as n}from"./chunks/framework.fcc0bf38.js";const b=JSON.parse('{"title":"[attachment]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/attachment.md","filePath":"src/Unit/attachment.md"}'),i={name:"src/Unit/attachment.md"},o=n("",283),s=[o];function r(l,h,d,c,p,m){return t(),e("div",null,s)}const g=a(i,[["render",r]]);export{b as __pageData,g as default};
|
|
@ -1,4 +1,4 @@
|
||||||
import{_ as a,o as t,c as e,X as n}from"./chunks/framework.d377e0cc.js";const k=JSON.parse('{"title":"[attack]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/attack.md","filePath":"src/Unit/attack.md"}'),i={name:"src/Unit/attack.md"},s=n(`<h1 id="attack-组" tabindex="-1"><strong>[attack]组</strong> <a class="header-anchor" href="#attack-组" aria-label="Permalink to "**[attack]组**""></a></h1><h2 id="第一类-基础攻击代码组" tabindex="-1">第一类-基础攻击代码组 <a class="header-anchor" href="#第一类-基础攻击代码组" aria-label="Permalink to "第一类-基础攻击代码组""></a></h2><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>以下的代码为<code>通用代码</code>,多半是必要的代码,如果不包括这些,可能在<code>绝大多数情况下导致错误</code>。</p></div><div class="info custom-block"><p class="custom-block-title">INFO</p><p>此处攻击代码均可以在炮塔节进行覆盖</p></div><h3 id="canattack" tabindex="-1">canAttack <a class="header-anchor" href="#canattack" aria-label="Permalink to "canAttack""></a></h3><h4 id="canattack-代码简介" tabindex="-1">canAttack-代码简介 <a class="header-anchor" href="#canattack-代码简介" aria-label="Permalink to "canAttack-代码简介""></a></h4><p>代码:canAttack 中文释义:可攻击 类型:布尔值bool 隶属于:基础攻击代码组</p><h4 id="canattack-要点指示" tabindex="-1">canAttack-要点指示 <a class="header-anchor" href="#canattack-要点指示" aria-label="Permalink to "canAttack-要点指示""></a></h4><p>设置单位是否能攻击</p><h4 id="canattack-演示例子" tabindex="-1">canAttack-演示例子 <a class="header-anchor" href="#canattack-演示例子" aria-label="Permalink to "canAttack-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
|
import{_ as a,c as t,o as e,V as n}from"./chunks/framework.fcc0bf38.js";const k=JSON.parse('{"title":"[attack]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/attack.md","filePath":"src/Unit/attack.md"}'),i={name:"src/Unit/attack.md"},s=n(`<h1 id="attack-组" tabindex="-1"><strong>[attack]组</strong> <a class="header-anchor" href="#attack-组" aria-label="Permalink to "**[attack]组**""></a></h1><h2 id="第一类-基础攻击代码组" tabindex="-1">第一类-基础攻击代码组 <a class="header-anchor" href="#第一类-基础攻击代码组" aria-label="Permalink to "第一类-基础攻击代码组""></a></h2><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>以下的代码为<code>通用代码</code>,多半是必要的代码,如果不包括这些,可能在<code>绝大多数情况下导致错误</code>。</p></div><div class="info custom-block"><p class="custom-block-title">INFO</p><p>此处攻击代码均可以在炮塔节进行覆盖</p></div><h3 id="canattack" tabindex="-1">canAttack <a class="header-anchor" href="#canattack" aria-label="Permalink to "canAttack""></a></h3><h4 id="canattack-代码简介" tabindex="-1">canAttack-代码简介 <a class="header-anchor" href="#canattack-代码简介" aria-label="Permalink to "canAttack-代码简介""></a></h4><p>代码:canAttack 中文释义:可攻击 类型:布尔值bool 隶属于:基础攻击代码组</p><h4 id="canattack-要点指示" tabindex="-1">canAttack-要点指示 <a class="header-anchor" href="#canattack-要点指示" aria-label="Permalink to "canAttack-要点指示""></a></h4><p>设置单位是否能攻击</p><h4 id="canattack-演示例子" tabindex="-1">canAttack-演示例子 <a class="header-anchor" href="#canattack-演示例子" aria-label="Permalink to "canAttack-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">canAttack:true</span></span></code></pre></div><hr><h3 id="canattacklandunits" tabindex="-1">canAttackLandUnits <a class="header-anchor" href="#canattacklandunits" aria-label="Permalink to "canAttackLandUnits""></a></h3><h4 id="canattacklandunits-代码简介" tabindex="-1">canAttackLandUnits-代码简介 <a class="header-anchor" href="#canattacklandunits-代码简介" aria-label="Permalink to "canAttackLandUnits-代码简介""></a></h4><p>代码:canAttackLandUnits 中文释义:可攻击表面单位 类型:逻辑布尔值LogicBoolean 隶属于:基础攻击代码组</p><h4 id="canattacklandunits-要点指示" tabindex="-1">canAttackLandUnits-要点指示 <a class="header-anchor" href="#canattacklandunits-要点指示" aria-label="Permalink to "canAttackLandUnits-要点指示""></a></h4><p>设置单位是否能对地面目标攻击</p><h4 id="canattacklandunits-演示例子" tabindex="-1">canAttackLandUnits-演示例子 <a class="header-anchor" href="#canattacklandunits-演示例子" aria-label="Permalink to "canAttackLandUnits-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">canAttack:true</span></span></code></pre></div><hr><h3 id="canattacklandunits" tabindex="-1">canAttackLandUnits <a class="header-anchor" href="#canattacklandunits" aria-label="Permalink to "canAttackLandUnits""></a></h3><h4 id="canattacklandunits-代码简介" tabindex="-1">canAttackLandUnits-代码简介 <a class="header-anchor" href="#canattacklandunits-代码简介" aria-label="Permalink to "canAttackLandUnits-代码简介""></a></h4><p>代码:canAttackLandUnits 中文释义:可攻击表面单位 类型:逻辑布尔值LogicBoolean 隶属于:基础攻击代码组</p><h4 id="canattacklandunits-要点指示" tabindex="-1">canAttackLandUnits-要点指示 <a class="header-anchor" href="#canattacklandunits-要点指示" aria-label="Permalink to "canAttackLandUnits-要点指示""></a></h4><p>设置单位是否能对地面目标攻击</p><h4 id="canattacklandunits-演示例子" tabindex="-1">canAttackLandUnits-演示例子 <a class="header-anchor" href="#canattacklandunits-演示例子" aria-label="Permalink to "canAttackLandUnits-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">canAttackLandUnits:if self.ammo>=2</span></span></code></pre></div><hr><h3 id="canattackflyingunits" tabindex="-1">canAttackFlyingUnits <a class="header-anchor" href="#canattackflyingunits" aria-label="Permalink to "canAttackFlyingUnits""></a></h3><h4 id="canattackflyingunits-代码简介" tabindex="-1">canAttackFlyingUnits-代码简介 <a class="header-anchor" href="#canattackflyingunits-代码简介" aria-label="Permalink to "canAttackFlyingUnits-代码简介""></a></h4><p>代码:canAttackFlyingUnits 中文释义:可攻击空中单位 类型:逻辑布尔值LogicBoolean 隶属于:基础攻击代码组</p><h4 id="canattackflyingunits-要点指示" tabindex="-1">canAttackFlyingUnits-要点指示 <a class="header-anchor" href="#canattackflyingunits-要点指示" aria-label="Permalink to "canAttackFlyingUnits-要点指示""></a></h4><p>设置单位是否能对空中目标攻击</p><h4 id="canattackflyingunits-演示例子" tabindex="-1">canAttackFlyingUnits-演示例子 <a class="header-anchor" href="#canattackflyingunits-演示例子" aria-label="Permalink to "canAttackFlyingUnits-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">canAttackLandUnits:if self.ammo>=2</span></span></code></pre></div><hr><h3 id="canattackflyingunits" tabindex="-1">canAttackFlyingUnits <a class="header-anchor" href="#canattackflyingunits" aria-label="Permalink to "canAttackFlyingUnits""></a></h3><h4 id="canattackflyingunits-代码简介" tabindex="-1">canAttackFlyingUnits-代码简介 <a class="header-anchor" href="#canattackflyingunits-代码简介" aria-label="Permalink to "canAttackFlyingUnits-代码简介""></a></h4><p>代码:canAttackFlyingUnits 中文释义:可攻击空中单位 类型:逻辑布尔值LogicBoolean 隶属于:基础攻击代码组</p><h4 id="canattackflyingunits-要点指示" tabindex="-1">canAttackFlyingUnits-要点指示 <a class="header-anchor" href="#canattackflyingunits-要点指示" aria-label="Permalink to "canAttackFlyingUnits-要点指示""></a></h4><p>设置单位是否能对空中目标攻击</p><h4 id="canattackflyingunits-演示例子" tabindex="-1">canAttackFlyingUnits-演示例子 <a class="header-anchor" href="#canattackflyingunits-演示例子" aria-label="Permalink to "canAttackFlyingUnits-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">canAttackFlyingUnits:if self.ammo>=2</span></span></code></pre></div><hr><h3 id="canattackunderwaterunits" tabindex="-1">canAttackUnderwaterUnits <a class="header-anchor" href="#canattackunderwaterunits" aria-label="Permalink to "canAttackUnderwaterUnits""></a></h3><h4 id="canattackunderwaterunits-代码简介" tabindex="-1">canAttackUnderwaterUnits-代码简介 <a class="header-anchor" href="#canattackunderwaterunits-代码简介" aria-label="Permalink to "canAttackUnderwaterUnits-代码简介""></a></h4><p>代码:canAttackUnderwaterUnits 中文释义:可攻击水下单位 类型:逻辑布尔值LogicBoolean 隶属于:基础攻击代码组</p><h4 id="canattackunderwaterunits-要点指示" tabindex="-1">canAttackUnderwaterUnits-要点指示 <a class="header-anchor" href="#canattackunderwaterunits-要点指示" aria-label="Permalink to "canAttackUnderwaterUnits-要点指示""></a></h4><p>设置单位是否能对潜水目标攻击</p><h4 id="canattackunderwaterunits-演示例子" tabindex="-1">canAttackUnderwaterUnits-演示例子 <a class="header-anchor" href="#canattackunderwaterunits-演示例子" aria-label="Permalink to "canAttackUnderwaterUnits-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">canAttackFlyingUnits:if self.ammo>=2</span></span></code></pre></div><hr><h3 id="canattackunderwaterunits" tabindex="-1">canAttackUnderwaterUnits <a class="header-anchor" href="#canattackunderwaterunits" aria-label="Permalink to "canAttackUnderwaterUnits""></a></h3><h4 id="canattackunderwaterunits-代码简介" tabindex="-1">canAttackUnderwaterUnits-代码简介 <a class="header-anchor" href="#canattackunderwaterunits-代码简介" aria-label="Permalink to "canAttackUnderwaterUnits-代码简介""></a></h4><p>代码:canAttackUnderwaterUnits 中文释义:可攻击水下单位 类型:逻辑布尔值LogicBoolean 隶属于:基础攻击代码组</p><h4 id="canattackunderwaterunits-要点指示" tabindex="-1">canAttackUnderwaterUnits-要点指示 <a class="header-anchor" href="#canattackunderwaterunits-要点指示" aria-label="Permalink to "canAttackUnderwaterUnits-要点指示""></a></h4><p>设置单位是否能对潜水目标攻击</p><h4 id="canattackunderwaterunits-演示例子" tabindex="-1">canAttackUnderwaterUnits-演示例子 <a class="header-anchor" href="#canattackunderwaterunits-演示例子" aria-label="Permalink to "canAttackUnderwaterUnits-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
|
||||||
|
@ -19,9 +19,9 @@ import{_ as a,o as t,c as e,X as n}from"./chunks/framework.d377e0cc.js";const k=
|
||||||
<span class="line"><span style="color:#A6ACCD;">shootDelay:60</span></span></code></pre></div><hr><h3 id="maxattackrange" tabindex="-1">maxAttackRange <a class="header-anchor" href="#maxattackrange" aria-label="Permalink to "maxAttackRange""></a></h3><h4 id="maxattackrange-代码简介" tabindex="-1">maxAttackRange-代码简介 <a class="header-anchor" href="#maxattackrange-代码简介" aria-label="Permalink to "maxAttackRange-代码简介""></a></h4><p>代码:maxAttackRange 中文释义:攻击距离 类型:整数int 隶属于:攻击属性代码组</p><h4 id="maxattackrange-要点指示" tabindex="-1">maxAttackRange-要点指示 <a class="header-anchor" href="#maxattackrange-要点指示" aria-label="Permalink to "maxAttackRange-要点指示""></a></h4><p>设置单位炮塔的攻击距离,在炮塔节使用limitingRange覆盖</p><details class="details custom-block"><summary>Details</summary><p>limitingRange不能超过maxAttackRange,如果炮塔都使用了limitingRange,那此处需要删除maxAttackRange</p></details><h4 id="maxattackrange-演示例子" tabindex="-1">maxAttackRange-演示例子 <a class="header-anchor" href="#maxattackrange-演示例子" aria-label="Permalink to "maxAttackRange-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">shootDelay:60</span></span></code></pre></div><hr><h3 id="maxattackrange" tabindex="-1">maxAttackRange <a class="header-anchor" href="#maxattackrange" aria-label="Permalink to "maxAttackRange""></a></h3><h4 id="maxattackrange-代码简介" tabindex="-1">maxAttackRange-代码简介 <a class="header-anchor" href="#maxattackrange-代码简介" aria-label="Permalink to "maxAttackRange-代码简介""></a></h4><p>代码:maxAttackRange 中文释义:攻击距离 类型:整数int 隶属于:攻击属性代码组</p><h4 id="maxattackrange-要点指示" tabindex="-1">maxAttackRange-要点指示 <a class="header-anchor" href="#maxattackrange-要点指示" aria-label="Permalink to "maxAttackRange-要点指示""></a></h4><p>设置单位炮塔的攻击距离,在炮塔节使用limitingRange覆盖</p><details class="details custom-block"><summary>Details</summary><p>limitingRange不能超过maxAttackRange,如果炮塔都使用了limitingRange,那此处需要删除maxAttackRange</p></details><h4 id="maxattackrange-演示例子" tabindex="-1">maxAttackRange-演示例子 <a class="header-anchor" href="#maxattackrange-演示例子" aria-label="Permalink to "maxAttackRange-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">maxAttackRange:1000</span></span></code></pre></div><hr><h3 id="aimoffsetspread" tabindex="-1">aimOffsetSpread <a class="header-anchor" href="#aimoffsetspread" aria-label="Permalink to "aimOffsetSpread""></a></h3><h4 id="aimoffsetspread-代码简介" tabindex="-1">aimOffsetSpread-代码简介 <a class="header-anchor" href="#aimoffsetspread-代码简介" aria-label="Permalink to "aimOffsetSpread-代码简介""></a></h4><p>代码:aimOffsetSpread 中文释义:攻击偏移 类型:浮点值float 隶属于:攻击属性组</p><h4 id="aimoffsetspread-要点指示" tabindex="-1">aimOffsetSpread-要点指示 <a class="header-anchor" href="#aimoffsetspread-要点指示" aria-label="Permalink to "aimOffsetSpread-要点指示""></a></h4><p>攻击时按照敌人半径乘对应值进行位置偏移,填0时攻击中心</p><h4 id="aimoffsetspread-演示例子" tabindex="-1">aimOffsetSpread-演示例子 <a class="header-anchor" href="#aimoffsetspread-演示例子" aria-label="Permalink to "aimOffsetSpread-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">maxAttackRange:1000</span></span></code></pre></div><hr><h3 id="aimoffsetspread" tabindex="-1">aimOffsetSpread <a class="header-anchor" href="#aimoffsetspread" aria-label="Permalink to "aimOffsetSpread""></a></h3><h4 id="aimoffsetspread-代码简介" tabindex="-1">aimOffsetSpread-代码简介 <a class="header-anchor" href="#aimoffsetspread-代码简介" aria-label="Permalink to "aimOffsetSpread-代码简介""></a></h4><p>代码:aimOffsetSpread 中文释义:攻击偏移 类型:浮点值float 隶属于:攻击属性组</p><h4 id="aimoffsetspread-要点指示" tabindex="-1">aimOffsetSpread-要点指示 <a class="header-anchor" href="#aimoffsetspread-要点指示" aria-label="Permalink to "aimOffsetSpread-要点指示""></a></h4><p>攻击时按照敌人半径乘对应值进行位置偏移,填0时攻击中心</p><h4 id="aimoffsetspread-演示例子" tabindex="-1">aimOffsetSpread-演示例子 <a class="header-anchor" href="#aimoffsetspread-演示例子" aria-label="Permalink to "aimOffsetSpread-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">aimOffsetSpread:0.6</span></span></code></pre></div><hr><h3 id="shootdelaymultiplier-shootdamagemultiplier" tabindex="-1">shootDelayMultiplier/shootDamageMultiplier <a class="header-anchor" href="#shootdelaymultiplier-shootdamagemultiplier" aria-label="Permalink to "shootDelayMultiplier/shootDamageMultiplier""></a></h3><h4 id="shootdelaymultiplier-shootdamagemultiplier-代码简介" tabindex="-1">shootDelayMultiplier/shootDamageMultiplier-代码简介 <a class="header-anchor" href="#shootdelaymultiplier-shootdamagemultiplier-代码简介" aria-label="Permalink to "shootDelayMultiplier/shootDamageMultiplier-代码简介""></a></h4><p>代码:shootDelayMultiplier/shootDamageMultiplier 中文释义:攻击间隔乘数/攻击伤害乘数 类型:浮点值 隶属于:攻击属性代码组</p><h4 id="shootdelaymultiplier-shootdamagemultiplier-要点指示" tabindex="-1">shootDelayMultiplier/shootDamageMultiplier-要点指示 <a class="header-anchor" href="#shootdelaymultiplier-shootdamagemultiplier-要点指示" aria-label="Permalink to "shootDelayMultiplier/shootDamageMultiplier-要点指示""></a></h4><p>设置单位的攻击间隔乘数和攻击伤害乘数,在行动节使用setUnitStats修改</p><h4 id="shootdelaymultiplier-shootdamagemultiplier-演示例子" tabindex="-1">shootDelayMultiplier/shootDamageMultiplier-演示例子 <a class="header-anchor" href="#shootdelaymultiplier-shootdamagemultiplier-演示例子" aria-label="Permalink to "shootDelayMultiplier/shootDamageMultiplier-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[action_1]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">aimOffsetSpread:0.6</span></span></code></pre></div><hr><h3 id="shootdelaymultiplier-shootdamagemultiplier" tabindex="-1">shootDelayMultiplier/shootDamageMultiplier <a class="header-anchor" href="#shootdelaymultiplier-shootdamagemultiplier" aria-label="Permalink to "shootDelayMultiplier/shootDamageMultiplier""></a></h3><h4 id="shootdelaymultiplier-shootdamagemultiplier-代码简介" tabindex="-1">shootDelayMultiplier/shootDamageMultiplier-代码简介 <a class="header-anchor" href="#shootdelaymultiplier-shootdamagemultiplier-代码简介" aria-label="Permalink to "shootDelayMultiplier/shootDamageMultiplier-代码简介""></a></h4><p>代码:shootDelayMultiplier/shootDamageMultiplier 中文释义:攻击间隔乘数/攻击伤害乘数 类型:浮点值 隶属于:攻击属性代码组</p><h4 id="shootdelaymultiplier-shootdamagemultiplier-要点指示" tabindex="-1">shootDelayMultiplier/shootDamageMultiplier-要点指示 <a class="header-anchor" href="#shootdelaymultiplier-shootdamagemultiplier-要点指示" aria-label="Permalink to "shootDelayMultiplier/shootDamageMultiplier-要点指示""></a></h4><p>设置单位的攻击间隔乘数和攻击伤害乘数,在行动节使用setUnitStats修改</p><h4 id="shootdelaymultiplier-shootdamagemultiplier-演示例子" tabindex="-1">shootDelayMultiplier/shootDamageMultiplier-演示例子 <a class="header-anchor" href="#shootdelaymultiplier-shootdamagemultiplier-演示例子" aria-label="Permalink to "shootDelayMultiplier/shootDamageMultiplier-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[action_1]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">setUnitStats:</span><span style="color:#F07178;">shootDelayMultiplier</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">0.8,</span><span style="color:#F07178;">shootDamageMultiplier</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">1.4</span></span></code></pre></div><hr><h2 id="第四类-显示相关组" tabindex="-1">第四类-显示相关组 <a class="header-anchor" href="#第四类-显示相关组" aria-label="Permalink to "第四类-显示相关组""></a></h2><div class="vp-code-group"><div class="tabs"><input type="radio" name="group--bwwA" id="tab-sb4ecIj" checked="checked"><label for="tab-sb4ecIj">屑狐狸</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">以下的代码为</span><span style="color:#89DDFF;">\`</span><span style="color:#FFCB6B;">显示代码</span><span style="color:#89DDFF;">\`</span><span style="color:#FFCB6B;">,用于让单位在攻击时效果更好</span></span>
|
<span class="line"><span style="color:#A6ACCD;">setUnitStats:</span><span style="color:#F07178;">shootDelayMultiplier</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">0.8,</span><span style="color:#F07178;">shootDamageMultiplier</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">1.4</span></span></code></pre></div><hr><h2 id="第四类-显示相关组" tabindex="-1">第四类-显示相关组 <a class="header-anchor" href="#第四类-显示相关组" aria-label="Permalink to "第四类-显示相关组""></a></h2><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-HjEPZ" id="tab-5ijSeq3" checked="checked"><label for="tab-5ijSeq3">屑狐狸</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">以下的代码为</span><span style="color:#89DDFF;">\`</span><span style="color:#FFCB6B;">显示代码</span><span style="color:#89DDFF;">\`</span><span style="color:#FFCB6B;">,用于让单位在攻击时效果更好</span></span>
|
||||||
<span class="line"><span style="color:#FFCB6B;">对于部分有对应需求的单位来说这部分较为有用</span></span></code></pre></div></div></div><h3 id="setmainturretas" tabindex="-1">setMainTurretAs <a class="header-anchor" href="#setmainturretas" aria-label="Permalink to "setMainTurretAs""></a></h3><h4 id="setmainturretas-代码简介" tabindex="-1">setMainTurretAs-代码简介 <a class="header-anchor" href="#setmainturretas-代码简介" aria-label="Permalink to "setMainTurretAs-代码简介""></a></h4><p>代码:setMainTurretAs 中文释义:设置主炮塔 类型:炮塔turret ref 隶属于:显示相关组</p><h4 id="setmainturretas-要点指示" tabindex="-1">setMainTurretAs-要点指示 <a class="header-anchor" href="#setmainturretas-要点指示" aria-label="Permalink to "setMainTurretAs-要点指示""></a></h4><p>设置单位主炮塔</p><h4 id="setmainturretas-演示例子" tabindex="-1">setMainTurretAs-演示例子 <a class="header-anchor" href="#setmainturretas-演示例子" aria-label="Permalink to "setMainTurretAs-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
|
<span class="line"><span style="color:#FFCB6B;">对于部分有对应需求的单位来说这部分较为有用</span></span></code></pre></div></div></div><h3 id="setmainturretas" tabindex="-1">setMainTurretAs <a class="header-anchor" href="#setmainturretas" aria-label="Permalink to "setMainTurretAs""></a></h3><h4 id="setmainturretas-代码简介" tabindex="-1">setMainTurretAs-代码简介 <a class="header-anchor" href="#setmainturretas-代码简介" aria-label="Permalink to "setMainTurretAs-代码简介""></a></h4><p>代码:setMainTurretAs 中文释义:设置主炮塔 类型:炮塔turret ref 隶属于:显示相关组</p><h4 id="setmainturretas-要点指示" tabindex="-1">setMainTurretAs-要点指示 <a class="header-anchor" href="#setmainturretas-要点指示" aria-label="Permalink to "setMainTurretAs-要点指示""></a></h4><p>设置单位主炮塔</p><h4 id="setmainturretas-演示例子" tabindex="-1">setMainTurretAs-演示例子 <a class="header-anchor" href="#setmainturretas-演示例子" aria-label="Permalink to "setMainTurretAs-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">setMainTurretAs:31</span></span></code></pre></div><hr><h3 id="turretrotatewithbody" tabindex="-1">turretRotateWithBody <a class="header-anchor" href="#turretrotatewithbody" aria-label="Permalink to "turretRotateWithBody""></a></h3><h4 id="turretrotatewithbody-代码简介" tabindex="-1">turretRotateWithBody-代码简介 <a class="header-anchor" href="#turretrotatewithbody-代码简介" aria-label="Permalink to "turretRotateWithBody-代码简介""></a></h4><p>代码:turretRotateWithBody 中文释义:炮塔跟随主体旋转 类型:布尔值bool 隶属于:显示相关组</p><h4 id="turretrotatewithbody-要点指示" tabindex="-1">turretRotateWithBody-要点指示 <a class="header-anchor" href="#turretrotatewithbody-要点指示" aria-label="Permalink to "turretRotateWithBody-要点指示""></a></h4><p>设置单位炮塔跟随主体旋转,比如重型拦截机</p><h4 id="turretrotatewithbody-演示例子" tabindex="-1">turretRotateWithBody-演示例子 <a class="header-anchor" href="#turretrotatewithbody-演示例子" aria-label="Permalink to "turretRotateWithBody-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">setMainTurretAs:31</span></span></code></pre></div><hr><h3 id="turretrotatewithbody" tabindex="-1">turretRotateWithBody <a class="header-anchor" href="#turretrotatewithbody" aria-label="Permalink to "turretRotateWithBody""></a></h3><h4 id="turretrotatewithbody-代码简介" tabindex="-1">turretRotateWithBody-代码简介 <a class="header-anchor" href="#turretrotatewithbody-代码简介" aria-label="Permalink to "turretRotateWithBody-代码简介""></a></h4><p>代码:turretRotateWithBody 中文释义:炮塔跟随主体旋转 类型:布尔值bool 隶属于:显示相关组</p><h4 id="turretrotatewithbody-要点指示" tabindex="-1">turretRotateWithBody-要点指示 <a class="header-anchor" href="#turretrotatewithbody-要点指示" aria-label="Permalink to "turretRotateWithBody-要点指示""></a></h4><p>设置单位炮塔跟随主体旋转,比如重型拦截机</p><h4 id="turretrotatewithbody-演示例子" tabindex="-1">turretRotateWithBody-演示例子 <a class="header-anchor" href="#turretrotatewithbody-演示例子" aria-label="Permalink to "turretRotateWithBody-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">turretRotateWithBody:true</span></span></code></pre></div><hr><h3 id="attackmovement" tabindex="-1">attackMovement <a class="header-anchor" href="#attackmovement" aria-label="Permalink to "attackMovement""></a></h3><h4 id="attackmovement-代码简介" tabindex="-1">attackMovement-代码简介 <a class="header-anchor" href="#attackmovement-代码简介" aria-label="Permalink to "attackMovement-代码简介""></a></h4><p>代码:attackMovement 中文释义:攻击移动类型 类型:字符串string 隶属于:显示相关组</p><h4 id="attackmovement-要点指示" tabindex="-1">attackMovement-要点指示 <a class="header-anchor" href="#attackmovement-要点指示" aria-label="Permalink to "attackMovement-要点指示""></a></h4><p>设置单位攻击移动类型</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>可填类型如下</p><table><thead><tr><th>类型</th><th>normal</th><th>bomber</th><th>moveaway</th><th>strafing</th></tr></thead><tbody><tr><td>效果</td><td>无</td><td>轰炸机</td><td>无效</td><td>无效</td></tr></tbody></table></div><h4 id="attackmovement-演示例子" tabindex="-1">attackMovement-演示例子 <a class="header-anchor" href="#attackmovement-演示例子" aria-label="Permalink to "attackMovement-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">turretRotateWithBody:true</span></span></code></pre></div><hr><h3 id="attackmovement" tabindex="-1">attackMovement <a class="header-anchor" href="#attackmovement" aria-label="Permalink to "attackMovement""></a></h3><h4 id="attackmovement-代码简介" tabindex="-1">attackMovement-代码简介 <a class="header-anchor" href="#attackmovement-代码简介" aria-label="Permalink to "attackMovement-代码简介""></a></h4><p>代码:attackMovement 中文释义:攻击移动类型 类型:字符串string 隶属于:显示相关组</p><h4 id="attackmovement-要点指示" tabindex="-1">attackMovement-要点指示 <a class="header-anchor" href="#attackmovement-要点指示" aria-label="Permalink to "attackMovement-要点指示""></a></h4><p>设置单位攻击移动类型</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>可填类型如下</p><table><thead><tr><th>类型</th><th>normal</th><th>bomber</th><th>moveaway</th><th>strafing</th></tr></thead><tbody><tr><td>效果</td><td>无</td><td>轰炸机</td><td>无效</td><td>无效</td></tr></tbody></table></div><h4 id="attackmovement-演示例子" tabindex="-1">attackMovement-演示例子 <a class="header-anchor" href="#attackmovement-演示例子" aria-label="Permalink to "attackMovement-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">attackMovement:bomber</span></span></code></pre></div><hr><h3 id="showrangeuiguide" tabindex="-1">showRangeUIGuide <a class="header-anchor" href="#showrangeuiguide" aria-label="Permalink to "showRangeUIGuide""></a></h3><h4 id="showrangeuiguide-代码简介" tabindex="-1">showRangeUIGuide-代码简介 <a class="header-anchor" href="#showrangeuiguide-代码简介" aria-label="Permalink to "showRangeUIGuide-代码简介""></a></h4><p>代码:showRangeUIGuide 中文释义:显示范围UI 类型:布尔值bool 隶属于:显示相关组</p><h4 id="showrangeuiguide-要点指示" tabindex="-1">showRangeUIGuide-要点指示 <a class="header-anchor" href="#showrangeuiguide-要点指示" aria-label="Permalink to "showRangeUIGuide-要点指示""></a></h4><p>是否显示范围UI,如默认不显示的小范围填写true则会显示范围,比如瞭望塔</p><h4 id="showrangeuiguide-演示例子" tabindex="-1">showRangeUIGuide-演示例子 <a class="header-anchor" href="#showrangeuiguide-演示例子" aria-label="Permalink to "showRangeUIGuide-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">attackMovement:bomber</span></span></code></pre></div><hr><h3 id="showrangeuiguide" tabindex="-1">showRangeUIGuide <a class="header-anchor" href="#showrangeuiguide" aria-label="Permalink to "showRangeUIGuide""></a></h3><h4 id="showrangeuiguide-代码简介" tabindex="-1">showRangeUIGuide-代码简介 <a class="header-anchor" href="#showrangeuiguide-代码简介" aria-label="Permalink to "showRangeUIGuide-代码简介""></a></h4><p>代码:showRangeUIGuide 中文释义:显示范围UI 类型:布尔值bool 隶属于:显示相关组</p><h4 id="showrangeuiguide-要点指示" tabindex="-1">showRangeUIGuide-要点指示 <a class="header-anchor" href="#showrangeuiguide-要点指示" aria-label="Permalink to "showRangeUIGuide-要点指示""></a></h4><p>是否显示范围UI,如默认不显示的小范围填写true则会显示范围,比如瞭望塔</p><h4 id="showrangeuiguide-演示例子" tabindex="-1">showRangeUIGuide-演示例子 <a class="header-anchor" href="#showrangeuiguide-演示例子" aria-label="Permalink to "showRangeUIGuide-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[attack]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">showRangeUIGuide:true</span></span></code></pre></div><hr>`,206),l=[s];function r(o,c,h,d,p,u){return t(),e("div",null,l)}const m=a(i,[["render",r]]);export{k as __pageData,m as default};
|
<span class="line"><span style="color:#A6ACCD;">showRangeUIGuide:true</span></span></code></pre></div><hr>`,206),l=[s];function r(o,c,h,d,p,u){return e(),t("div",null,l)}const m=a(i,[["render",r]]);export{k as __pageData,m as default};
|
|
@ -1 +1 @@
|
||||||
import{_ as a,o as t,c as e,X as n}from"./chunks/framework.d377e0cc.js";const k=JSON.parse('{"title":"[attack]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/attack.md","filePath":"src/Unit/attack.md"}'),i={name:"src/Unit/attack.md"},s=n("",206),l=[s];function r(o,c,h,d,p,u){return t(),e("div",null,l)}const m=a(i,[["render",r]]);export{k as __pageData,m as default};
|
import{_ as a,c as t,o as e,V as n}from"./chunks/framework.fcc0bf38.js";const k=JSON.parse('{"title":"[attack]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/attack.md","filePath":"src/Unit/attack.md"}'),i={name:"src/Unit/attack.md"},s=n("",206),l=[s];function r(o,c,h,d,p,u){return e(),t("div",null,l)}const m=a(i,[["render",r]]);export{k as __pageData,m as default};
|
|
@ -1,4 +1,4 @@
|
||||||
import{_ as n,K as i,o,c,k as s,a,O as t,w as p,X as e}from"./chunks/framework.d377e0cc.js";const _=JSON.parse('{"title":"[canBuild]建造组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/canbuild.md","filePath":"src/Unit/canbuild.md"}'),r={name:"src/Unit/canbuild.md"},d=e(`<h1 id="canbuild-建造组" tabindex="-1"><strong>[canBuild]建造组</strong> <a class="header-anchor" href="#canbuild-建造组" aria-label="Permalink to "**[canBuild]建造组**""></a></h1><h3 id="canbuild-name" tabindex="-1">[canBuild_NAME] <a class="header-anchor" href="#canbuild-name" aria-label="Permalink to "[canBuild_NAME]""></a></h3><h4 id="canbuild-name-代码简介" tabindex="-1">[canBuild_NAME]-代码简介 <a class="header-anchor" href="#canbuild-name-代码简介" aria-label="Permalink to "[canBuild_NAME]-代码简介""></a></h4><p>代码: [canBuild_NAME] 中文释义:可建造_名字 类型:字符型 canBuild_NAME = 组名 如果不填写此组名 将默认拥有一个命名为空格的组名。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>建议将NAME命名为此组的描述或可建造单位的昵称。<br> 以便于阅读代码。</p></div><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-wiz-c" id="tab-ZhRUPGr" checked="checked"><label for="tab-ZhRUPGr">allureluoli</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">canBuild_造小坦</span><span style="color:#89DDFF;">]</span></span>
|
import{_ as n,c as i,C as s,a,I as o,E as c,V as e,J as t,o as p}from"./chunks/framework.fcc0bf38.js";const _=JSON.parse('{"title":"[canBuild]建造组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/canbuild.md","filePath":"src/Unit/canbuild.md"}'),r={name:"src/Unit/canbuild.md"},d=e(`<h1 id="canbuild-建造组" tabindex="-1"><strong>[canBuild]建造组</strong> <a class="header-anchor" href="#canbuild-建造组" aria-label="Permalink to "**[canBuild]建造组**""></a></h1><h3 id="canbuild-name" tabindex="-1">[canBuild_NAME] <a class="header-anchor" href="#canbuild-name" aria-label="Permalink to "[canBuild_NAME]""></a></h3><h4 id="canbuild-name-代码简介" tabindex="-1">[canBuild_NAME]-代码简介 <a class="header-anchor" href="#canbuild-name-代码简介" aria-label="Permalink to "[canBuild_NAME]-代码简介""></a></h4><p>代码: [canBuild_NAME] 中文释义:可建造_名字 类型:字符型 canBuild_NAME = 组名 如果不填写此组名 将默认拥有一个命名为空格的组名。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>建议将NAME命名为此组的描述或可建造单位的昵称。<br> 以便于阅读代码。</p></div><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-8tBz-" id="tab-oLGhYuX" checked="checked"><label for="tab-oLGhYuX">allureluoli</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">canBuild_造小坦</span><span style="color:#89DDFF;">]</span></span>
|
||||||
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">canBuild_SmallTank</span><span style="color:#89DDFF;">]</span></span>
|
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">canBuild_SmallTank</span><span style="color:#89DDFF;">]</span></span>
|
||||||
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">canBuild_建造科技</span><span style="color:#89DDFF;">]</span></span></code></pre></div></div></div><div class="danger custom-block"><p class="custom-block-title">DANGER</p><p>[canBuild_NAME] 中的NAME命名禁止重复,否则会引发报错。<br> 其中下划线作为分隔符也是重要的,如果没有将引发报错。</p></div><h4 id="canbuild-name-演示例子" tabindex="-1">[canBuild_NAME]-演示例子 <a class="header-anchor" href="#canbuild-name-演示例子" aria-label="Permalink to "[canBuild_NAME]-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[canBuild_SmallTank]</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;">#英文命名</span></span>
|
<span class="line"><span style="color:#89DDFF;">[</span><span style="color:#A6ACCD;">canBuild_建造科技</span><span style="color:#89DDFF;">]</span></span></code></pre></div></div></div><div class="danger custom-block"><p class="custom-block-title">DANGER</p><p>[canBuild_NAME] 中的NAME命名禁止重复,否则会引发报错。<br> 其中下划线作为分隔符也是重要的,如果没有将引发报错。</p></div><h4 id="canbuild-name-演示例子" tabindex="-1">[canBuild_NAME]-演示例子 <a class="header-anchor" href="#canbuild-name-演示例子" aria-label="Permalink to "[canBuild_NAME]-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[canBuild_SmallTank]</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;">#英文命名</span></span>
|
||||||
<span class="line"><span style="color:#89DDFF;">[canBuild_小坦克]</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;">#中文命名</span></span>
|
<span class="line"><span style="color:#89DDFF;">[canBuild_小坦克]</span><span style="color:#A6ACCD;"> </span><span style="color:#676E95;font-style:italic;">#中文命名</span></span>
|
||||||
|
@ -30,4 +30,4 @@ import{_ as n,K as i,o,c,k as s,a,O as t,w as p,X as e}from"./chunks/framework.d
|
||||||
<span class="line"><span style="color:#A6ACCD;">isLockedAlt2Message: 第三个原因是我觉得你应该把雪糕分我一半吃。</span></span></code></pre></div><h3 id="addresources" tabindex="-1">addResources <a class="header-anchor" href="#addresources" aria-label="Permalink to "addResources""></a></h3><h4 id="addresources-代码简介" tabindex="-1">addResources-代码简介 <a class="header-anchor" href="#addresources-代码简介" aria-label="Permalink to "addResources-代码简介""></a></h4><p>代码:addResources 中文释义: 增加资源 类型: 资源</p><h4 id="addresources-用法" tabindex="-1">addResources-用法 <a class="header-anchor" href="#addresources-用法" aria-label="Permalink to "addResources-用法""></a></h4><p>填写所需的资源名和数量,在放置建筑物或生产单位时,将这些资源添加到自身中。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>使用逗号分隔,可以添加多种资源。</p></div><h4 id="addresources-演示例子" tabindex="-1">addResources-演示例子 <a class="header-anchor" href="#addresources-演示例子" aria-label="Permalink to "addResources-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[canBuild_SmallTank]</span><span style="color:#A6ACCD;"> </span></span>
|
<span class="line"><span style="color:#A6ACCD;">isLockedAlt2Message: 第三个原因是我觉得你应该把雪糕分我一半吃。</span></span></code></pre></div><h3 id="addresources" tabindex="-1">addResources <a class="header-anchor" href="#addresources" aria-label="Permalink to "addResources""></a></h3><h4 id="addresources-代码简介" tabindex="-1">addResources-代码简介 <a class="header-anchor" href="#addresources-代码简介" aria-label="Permalink to "addResources-代码简介""></a></h4><p>代码:addResources 中文释义: 增加资源 类型: 资源</p><h4 id="addresources-用法" tabindex="-1">addResources-用法 <a class="header-anchor" href="#addresources-用法" aria-label="Permalink to "addResources-用法""></a></h4><p>填写所需的资源名和数量,在放置建筑物或生产单位时,将这些资源添加到自身中。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>使用逗号分隔,可以添加多种资源。</p></div><h4 id="addresources-演示例子" tabindex="-1">addResources-演示例子 <a class="header-anchor" href="#addresources-演示例子" aria-label="Permalink to "addResources-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[canBuild_SmallTank]</span><span style="color:#A6ACCD;"> </span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">addResources: </span><span style="color:#F07178;">ammo</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">5, </span><span style="color:#F07178;">setFlag</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">1</span></span></code></pre></div><h3 id="price" tabindex="-1">price <a class="header-anchor" href="#price" aria-label="Permalink to "price""></a></h3><h4 id="price-代码简介" tabindex="-1">price-代码简介 <a class="header-anchor" href="#price-代码简介" aria-label="Permalink to "price-代码简介""></a></h4><p>代码:price 中文释义: 价格 类型: 资源</p><h4 id="price-用法" tabindex="-1">price-用法 <a class="header-anchor" href="#price-用法" aria-label="Permalink to "price-用法""></a></h4><p>填写所需的资源名和数量,会覆盖默认需要的资源和价格。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>用处如建造一个建筑时候附送一个单位。此代码可用设定为两者价钱之和,矿场600,送矿车1400,而建造时花2000,送1400,卖600,可避免玩家刷钱。(抄自HX代码表)</p></div><h4 id="price-演示例子" tabindex="-1">price-演示例子 <a class="header-anchor" href="#price-演示例子" aria-label="Permalink to "price-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[canBuild_SmallTank]</span><span style="color:#A6ACCD;"> </span></span>
|
<span class="line"><span style="color:#A6ACCD;">addResources: </span><span style="color:#F07178;">ammo</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">5, </span><span style="color:#F07178;">setFlag</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">1</span></span></code></pre></div><h3 id="price" tabindex="-1">price <a class="header-anchor" href="#price" aria-label="Permalink to "price""></a></h3><h4 id="price-代码简介" tabindex="-1">price-代码简介 <a class="header-anchor" href="#price-代码简介" aria-label="Permalink to "price-代码简介""></a></h4><p>代码:price 中文释义: 价格 类型: 资源</p><h4 id="price-用法" tabindex="-1">price-用法 <a class="header-anchor" href="#price-用法" aria-label="Permalink to "price-用法""></a></h4><p>填写所需的资源名和数量,会覆盖默认需要的资源和价格。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>用处如建造一个建筑时候附送一个单位。此代码可用设定为两者价钱之和,矿场600,送矿车1400,而建造时花2000,送1400,卖600,可避免玩家刷钱。(抄自HX代码表)</p></div><h4 id="price-演示例子" tabindex="-1">price-演示例子 <a class="header-anchor" href="#price-演示例子" aria-label="Permalink to "price-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[canBuild_SmallTank]</span><span style="color:#A6ACCD;"> </span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">price: 5000,</span><span style="color:#F07178;">ammo</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">5</span></span></code></pre></div><h3 id="isguiblinking" tabindex="-1">isGuiBlinking <a class="header-anchor" href="#isguiblinking" aria-label="Permalink to "isGuiBlinking""></a></h3><h4 id="isguiblinking-代码简介" tabindex="-1">isGuiBlinking-代码简介 <a class="header-anchor" href="#isguiblinking-代码简介" aria-label="Permalink to "isGuiBlinking-代码简介""></a></h4><p>代码:isGuiBlinking 中文释义: 界面闪烁 类型: 逻辑布尔值</p><h4 id="isguiblinking-用法" tabindex="-1">isGuiBlinking-用法 <a class="header-anchor" href="#isguiblinking-用法" aria-label="Permalink to "isGuiBlinking-用法""></a></h4><p>为true时在UI中拥有闪烁效果。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>可以添加条件判断语句。<br> 满足某些条件时闪烁此UI,用来提示某些单位可以建造了。</p></div><h4 id="isguiblinking-演示例子" tabindex="-1">isGuiBlinking-演示例子 <a class="header-anchor" href="#isguiblinking-演示例子" aria-label="Permalink to "isGuiBlinking-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[canBuild_SmallTank]</span><span style="color:#A6ACCD;"> </span></span>
|
<span class="line"><span style="color:#A6ACCD;">price: 5000,</span><span style="color:#F07178;">ammo</span><span style="color:#89DDFF;">=</span><span style="color:#A6ACCD;">5</span></span></code></pre></div><h3 id="isguiblinking" tabindex="-1">isGuiBlinking <a class="header-anchor" href="#isguiblinking" aria-label="Permalink to "isGuiBlinking""></a></h3><h4 id="isguiblinking-代码简介" tabindex="-1">isGuiBlinking-代码简介 <a class="header-anchor" href="#isguiblinking-代码简介" aria-label="Permalink to "isGuiBlinking-代码简介""></a></h4><p>代码:isGuiBlinking 中文释义: 界面闪烁 类型: 逻辑布尔值</p><h4 id="isguiblinking-用法" tabindex="-1">isGuiBlinking-用法 <a class="header-anchor" href="#isguiblinking-用法" aria-label="Permalink to "isGuiBlinking-用法""></a></h4><p>为true时在UI中拥有闪烁效果。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>可以添加条件判断语句。<br> 满足某些条件时闪烁此UI,用来提示某些单位可以建造了。</p></div><h4 id="isguiblinking-演示例子" tabindex="-1">isGuiBlinking-演示例子 <a class="header-anchor" href="#isguiblinking-演示例子" aria-label="Permalink to "isGuiBlinking-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[canBuild_SmallTank]</span><span style="color:#A6ACCD;"> </span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">isGuiBlinking:true</span></span></code></pre></div>`,59);function m(g,A,y,C,q,D){const l=i("font");return o(),c("div",null,[d,s("div",h,[u,s("p",null,[a("可以用来告知玩家被锁定原因。"),k,a(" 能够通过转义字符 "),t(l,{color:"red"},{default:p(()=>[a("\\n")]),_:1}),a(" 实现文本换行。")])]),b])}const v=n(r,[["render",m]]);export{_ as __pageData,v as default};
|
<span class="line"><span style="color:#A6ACCD;">isGuiBlinking:true</span></span></code></pre></div>`,59);function m(g,A,y,C,q,D){const l=t("font");return p(),i("div",null,[d,s("div",h,[u,s("p",null,[a("可以用来告知玩家被锁定原因。"),k,a(" 能够通过转义字符 "),o(l,{color:"red"},{default:c(()=>[a("\\n")]),_:1}),a(" 实现文本换行。")])]),b])}const v=n(r,[["render",m]]);export{_ as __pageData,v as default};
|
1
assets/src_Unit_canbuild.md.4f4f1935.lean.js
Normal file
1
assets/src_Unit_canbuild.md.4f4f1935.lean.js
Normal file
|
@ -0,0 +1 @@
|
||||||
|
import{_ as n,c as i,C as s,a,I as o,E as c,V as e,J as t,o as p}from"./chunks/framework.fcc0bf38.js";const _=JSON.parse('{"title":"[canBuild]建造组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/canbuild.md","filePath":"src/Unit/canbuild.md"}'),r={name:"src/Unit/canbuild.md"},d=e("",64),h={class:"tip custom-block"},u=s("p",{class:"custom-block-title"},"TIP",-1),k=s("br",null,null,-1),b=e("",59);function m(g,A,y,C,q,D){const l=t("font");return p(),i("div",null,[d,s("div",h,[u,s("p",null,[a("可以用来告知玩家被锁定原因。"),k,a(" 能够通过转义字符 "),o(l,{color:"red"},{default:c(()=>[a("\\n")]),_:1}),a(" 实现文本换行。")])]),b])}const v=n(r,[["render",m]]);export{_ as __pageData,v as default};
|
|
@ -1 +0,0 @@
|
||||||
import{_ as n,K as i,o,c,k as s,a,O as t,w as p,X as e}from"./chunks/framework.d377e0cc.js";const _=JSON.parse('{"title":"[canBuild]建造组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/canbuild.md","filePath":"src/Unit/canbuild.md"}'),r={name:"src/Unit/canbuild.md"},d=e("",64),h={class:"tip custom-block"},u=s("p",{class:"custom-block-title"},"TIP",-1),k=s("br",null,null,-1),b=e("",59);function m(g,A,y,C,q,D){const l=i("font");return o(),c("div",null,[d,s("div",h,[u,s("p",null,[a("可以用来告知玩家被锁定原因。"),k,a(" 能够通过转义字符 "),t(l,{color:"red"},{default:p(()=>[a("\\n")]),_:1}),a(" 实现文本换行。")])]),b])}const v=n(r,[["render",m]]);export{_ as __pageData,v as default};
|
|
|
@ -1,4 +1,4 @@
|
||||||
import{_ as t,K as o,o as r,c,k as e,a,O as n,w as l,X as i}from"./chunks/framework.d377e0cc.js";const E=JSON.parse('{"title":"[core]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/core.md","filePath":"src/Unit/core.md"}'),p={name:"src/Unit/core.md"},d=i(`<h1 id="core-组" tabindex="-1"><strong>[core]组</strong> <a class="header-anchor" href="#core-组" aria-label="Permalink to "**[core]组**""></a></h1><h2 id="第一类-通用代码组" tabindex="-1">第一类-通用代码组 <a class="header-anchor" href="#第一类-通用代码组" aria-label="Permalink to "第一类-通用代码组""></a></h2><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>以下的代码为<code>通用代码</code>,多半是必要的代码,如果不包括这些,可能在<code>绝大多数情况下导致错误</code>。</p></div><h3 id="name" tabindex="-1">name <a class="header-anchor" href="#name" aria-label="Permalink to "name""></a></h3><h4 id="name-代码简介" tabindex="-1">name-代码简介 <a class="header-anchor" href="#name-代码简介" aria-label="Permalink to "name-代码简介""></a></h4><p>代码:name 中文释义:名字 类型:字符型 隶属于:通用代码组</p><h4 id="name-要点指示" tabindex="-1">name-要点指示 <a class="header-anchor" href="#name-要点指示" aria-label="Permalink to "name-要点指示""></a></h4><hr><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-j1QKR" id="tab-FA0CGIG" checked="checked"><label for="tab-FA0CGIG">JDSALing</label><input type="radio" name="group-j1QKR" id="tab--_UPHgB"><label for="tab--_UPHgB">Tobby3600</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">定义单位原始名称,可以是中文。</span></span>
|
import{_ as t,c as o,C as e,a,I as n,E as l,V as i,J as r,o as c}from"./chunks/framework.fcc0bf38.js";const E=JSON.parse('{"title":"[core]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/core.md","filePath":"src/Unit/core.md"}'),p={name:"src/Unit/core.md"},d=i(`<h1 id="core-组" tabindex="-1"><strong>[core]组</strong> <a class="header-anchor" href="#core-组" aria-label="Permalink to "**[core]组**""></a></h1><h2 id="第一类-通用代码组" tabindex="-1">第一类-通用代码组 <a class="header-anchor" href="#第一类-通用代码组" aria-label="Permalink to "第一类-通用代码组""></a></h2><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>以下的代码为<code>通用代码</code>,多半是必要的代码,如果不包括这些,可能在<code>绝大多数情况下导致错误</code>。</p></div><h3 id="name" tabindex="-1">name <a class="header-anchor" href="#name" aria-label="Permalink to "name""></a></h3><h4 id="name-代码简介" tabindex="-1">name-代码简介 <a class="header-anchor" href="#name-代码简介" aria-label="Permalink to "name-代码简介""></a></h4><p>代码:name 中文释义:名字 类型:字符型 隶属于:通用代码组</p><h4 id="name-要点指示" tabindex="-1">name-要点指示 <a class="header-anchor" href="#name-要点指示" aria-label="Permalink to "name-要点指示""></a></h4><hr><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-e-uDq" id="tab-XZcKgk9" checked="checked"><label for="tab-XZcKgk9">JDSALing</label><input type="radio" name="group-e-uDq" id="tab-U59wtpM"><label for="tab-U59wtpM">Tobby3600</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">定义单位原始名称,可以是中文。</span></span>
|
||||||
<span class="line"><span style="color:#FFCB6B;">游戏使用它区分其它单位。</span></span>
|
<span class="line"><span style="color:#FFCB6B;">游戏使用它区分其它单位。</span></span>
|
||||||
<span class="line"></span>
|
<span class="line"></span>
|
||||||
<span class="line"><span style="color:#FFCB6B;">如果没有在[displayText或者语言文件设置显示名称],</span></span>
|
<span class="line"><span style="color:#FFCB6B;">如果没有在[displayText或者语言文件设置显示名称],</span></span>
|
||||||
|
@ -16,13 +16,13 @@ import{_ as t,K as o,o as r,c,k as e,a,O as n,w as l,X as i}from"./chunks/framew
|
||||||
<span class="line"><span style="color:#A6ACCD;">displayText_zh:中文标题</span></span>
|
<span class="line"><span style="color:#A6ACCD;">displayText_zh:中文标题</span></span>
|
||||||
<span class="line"></span>
|
<span class="line"></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">displayDescription: -English Description</span></span>
|
<span class="line"><span style="color:#A6ACCD;">displayDescription: -English Description</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">displayDescription_zh:-中文描述</span></span></code></pre></div><hr><h3 id="price" tabindex="-1">price <a class="header-anchor" href="#price" aria-label="Permalink to "price""></a></h3><h4 id="price-代码简介" tabindex="-1">price-代码简介 <a class="header-anchor" href="#price-代码简介" aria-label="Permalink to "price-代码简介""></a></h4><p>代码:price 中文释义:价格 类型:整数 隶属于:通用代码组</p><h4 id="price-要点指示" tabindex="-1">price-要点指示 <a class="header-anchor" href="#price-要点指示" aria-label="Permalink to "price-要点指示""></a></h4><p>定义单位的价格,显示在单位信息中,建造时也以此价格为准。</p><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-AczSx" id="tab-JcYohpn" checked="checked"><label for="tab-JcYohpn">Tobby3600</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">默认情况下,price只需要填写一个整数,此时使用的是游戏内自带的资金credit;</span><span style="color:#A6ACCD;"> </span></span>
|
<span class="line"><span style="color:#A6ACCD;">displayDescription_zh:-中文描述</span></span></code></pre></div><hr><h3 id="price" tabindex="-1">price <a class="header-anchor" href="#price" aria-label="Permalink to "price""></a></h3><h4 id="price-代码简介" tabindex="-1">price-代码简介 <a class="header-anchor" href="#price-代码简介" aria-label="Permalink to "price-代码简介""></a></h4><p>代码:price 中文释义:价格 类型:整数 隶属于:通用代码组</p><h4 id="price-要点指示" tabindex="-1">price-要点指示 <a class="header-anchor" href="#price-要点指示" aria-label="Permalink to "price-要点指示""></a></h4><p>定义单位的价格,显示在单位信息中,建造时也以此价格为准。</p><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-fB83f" id="tab-lQo786S" checked="checked"><label for="tab-lQo786S">Tobby3600</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">默认情况下,price只需要填写一个整数,此时使用的是游戏内自带的资金credit;</span><span style="color:#A6ACCD;"> </span></span>
|
||||||
<span class="line"><span style="color:#FFCB6B;">想要更改资源类型,可以使用:</span></span>
|
<span class="line"><span style="color:#FFCB6B;">想要更改资源类型,可以使用:</span></span>
|
||||||
<span class="line"><span style="color:#89DDFF;">\`</span><span style="color:#FFCB6B;">price:资源1</span><span style="color:#C3E88D;">=数值1,资源2=数值2,资源3=数值3,……</span><span style="color:#89DDFF;">\`</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">的格式</span></span>
|
<span class="line"><span style="color:#89DDFF;">\`</span><span style="color:#FFCB6B;">price:资源1</span><span style="color:#C3E88D;">=数值1,资源2=数值2,资源3=数值3,……</span><span style="color:#89DDFF;">\`</span><span style="color:#A6ACCD;"> </span><span style="color:#FFCB6B;">的格式</span></span>
|
||||||
<span class="line"><span style="color:#FFCB6B;">(前提是此资源要在使用的单位进行定义)。</span></span></code></pre></div></div></div><h4 id="price-演示例子" tabindex="-1">price-演示例子 <a class="header-anchor" href="#price-演示例子" aria-label="Permalink to "price-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
|
<span class="line"><span style="color:#FFCB6B;">(前提是此资源要在使用的单位进行定义)。</span></span></code></pre></div></div></div><h4 id="price-演示例子" tabindex="-1">price-演示例子 <a class="header-anchor" href="#price-演示例子" aria-label="Permalink to "price-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">price:120,石油=80,铁=60</span></span></code></pre></div><hr><h3 id="radius" tabindex="-1">radius <a class="header-anchor" href="#radius" aria-label="Permalink to "radius""></a></h3><h4 id="radius-代码简介" tabindex="-1">radius-代码简介 <a class="header-anchor" href="#radius-代码简介" aria-label="Permalink to "radius-代码简介""></a></h4><p>代码:radius 中文释义:半径 类型:整数 隶属于:通用代码组</p><h4 id="radius-要点指示" tabindex="-1">radius-要点指示 <a class="header-anchor" href="#radius-要点指示" aria-label="Permalink to "radius-要点指示""></a></h4><p>半径定义单位的<code>实际碰撞体积和显示范围</code>,在未设置<code>选择框大小</code>时,半径决定是单位选择框的大小。 半径的单位是像素(px)。</p><h4 id="radius-演示例子" tabindex="-1">radius-演示例子 <a class="header-anchor" href="#radius-演示例子" aria-label="Permalink to "radius-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">price:120,石油=80,铁=60</span></span></code></pre></div><hr><h3 id="radius" tabindex="-1">radius <a class="header-anchor" href="#radius" aria-label="Permalink to "radius""></a></h3><h4 id="radius-代码简介" tabindex="-1">radius-代码简介 <a class="header-anchor" href="#radius-代码简介" aria-label="Permalink to "radius-代码简介""></a></h4><p>代码:radius 中文释义:半径 类型:整数 隶属于:通用代码组</p><h4 id="radius-要点指示" tabindex="-1">radius-要点指示 <a class="header-anchor" href="#radius-要点指示" aria-label="Permalink to "radius-要点指示""></a></h4><p>半径定义单位的<code>实际碰撞体积和显示范围</code>,在未设置<code>选择框大小</code>时,半径决定是单位选择框的大小。 半径的单位是像素(px)。</p><h4 id="radius-演示例子" tabindex="-1">radius-演示例子 <a class="header-anchor" href="#radius-演示例子" aria-label="Permalink to "radius-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">radius:20</span></span></code></pre></div><hr><h3 id="mass" tabindex="-1">mass <a class="header-anchor" href="#mass" aria-label="Permalink to "mass""></a></h3><h4 id="mass-代码简介" tabindex="-1">mass-代码简介 <a class="header-anchor" href="#mass-代码简介" aria-label="Permalink to "mass-代码简介""></a></h4><p>代码:mass 中文释义:质量 类型:整数 隶属于:通用代码组</p><h4 id="mass-要点指示" tabindex="-1">mass-要点指示 <a class="header-anchor" href="#mass-要点指示" aria-label="Permalink to "mass-要点指示""></a></h4><p>质量决定单位在各种碰撞时的效果。<code>质量越大,其他单位越难推动</code>。</p><h4 id="mass-演示例子" tabindex="-1">mass-演示例子 <a class="header-anchor" href="#mass-演示例子" aria-label="Permalink to "mass-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">radius:20</span></span></code></pre></div><hr><h3 id="mass" tabindex="-1">mass <a class="header-anchor" href="#mass" aria-label="Permalink to "mass""></a></h3><h4 id="mass-代码简介" tabindex="-1">mass-代码简介 <a class="header-anchor" href="#mass-代码简介" aria-label="Permalink to "mass-代码简介""></a></h4><p>代码:mass 中文释义:质量 类型:整数 隶属于:通用代码组</p><h4 id="mass-要点指示" tabindex="-1">mass-要点指示 <a class="header-anchor" href="#mass-要点指示" aria-label="Permalink to "mass-要点指示""></a></h4><p>质量决定单位在各种碰撞时的效果。<code>质量越大,其他单位越难推动</code>。</p><h4 id="mass-演示例子" tabindex="-1">mass-演示例子 <a class="header-anchor" href="#mass-演示例子" aria-label="Permalink to "mass-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">mass:2000</span></span></code></pre></div><hr><h3 id="maxhp" tabindex="-1">maxHp <a class="header-anchor" href="#maxhp" aria-label="Permalink to "maxHp""></a></h3><h4 id="maxhp-代码简介" tabindex="-1">maxHp-代码简介 <a class="header-anchor" href="#maxhp-代码简介" aria-label="Permalink to "maxHp-代码简介""></a></h4><p>代码:maxHp 中文释义:最大生命值 类型:整数 隶属于:通用代码组</p><h4 id="maxhp-要点指示" tabindex="-1">maxHp-要点指示 <a class="header-anchor" href="#maxhp-要点指示" aria-label="Permalink to "maxHp-要点指示""></a></h4><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-QELLE" id="tab-35cLAu7" checked="checked"><label for="tab-35cLAu7">tobby3600</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">最大生命值定义单位在不修改它时最多能够有多少血量,</span></span>
|
<span class="line"><span style="color:#A6ACCD;">mass:2000</span></span></code></pre></div><hr><h3 id="maxhp" tabindex="-1">maxHp <a class="header-anchor" href="#maxhp" aria-label="Permalink to "maxHp""></a></h3><h4 id="maxhp-代码简介" tabindex="-1">maxHp-代码简介 <a class="header-anchor" href="#maxhp-代码简介" aria-label="Permalink to "maxHp-代码简介""></a></h4><p>代码:maxHp 中文释义:最大生命值 类型:整数 隶属于:通用代码组</p><h4 id="maxhp-要点指示" tabindex="-1">maxHp-要点指示 <a class="header-anchor" href="#maxhp-要点指示" aria-label="Permalink to "maxHp-要点指示""></a></h4><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-J3IDl" id="tab-uIACUF_" checked="checked"><label for="tab-uIACUF_">tobby3600</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">最大生命值定义单位在不修改它时最多能够有多少血量,</span></span>
|
||||||
<span class="line"><span style="color:#FFCB6B;">单位默认生成时即是这个血量。</span></span>
|
<span class="line"><span style="color:#FFCB6B;">单位默认生成时即是这个血量。</span></span>
|
||||||
<span class="line"><span style="color:#82AAFF;">maxHp可以通过单位参考.maxHp</span><span style="color:#89DDFF;">()</span><span style="color:#A6ACCD;">来获取,</span></span>
|
<span class="line"><span style="color:#82AAFF;">maxHp可以通过单位参考.maxHp</span><span style="color:#89DDFF;">()</span><span style="color:#A6ACCD;">来获取,</span></span>
|
||||||
<span class="line"><span style="color:#FFCB6B;">也可以通过[action]进行修改。</span></span></code></pre></div></div></div><h4 id="maxhp-演示例子" tabindex="-1">maxHp-演示例子 <a class="header-anchor" href="#maxhp-演示例子" aria-label="Permalink to "maxHp-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
|
<span class="line"><span style="color:#FFCB6B;">也可以通过[action]进行修改。</span></span></code></pre></div></div></div><h4 id="maxhp-演示例子" tabindex="-1">maxHp-演示例子 <a class="header-anchor" href="#maxhp-演示例子" aria-label="Permalink to "maxHp-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
|
||||||
|
@ -61,7 +61,7 @@ import{_ as t,K as o,o as r,c,k as e,a,O as n,w as l,X as i}from"./chunks/framew
|
||||||
<span class="line"><span style="color:#676E95;font-style:italic;">#如果受到40以下的常规攻击,则进行最低伤害判定</span></span></code></pre></div><hr><h3 id="borrowresourceswhilealive" tabindex="-1">borrowResourcesWhileAlive <a class="header-anchor" href="#borrowresourceswhilealive" aria-label="Permalink to "borrowResourcesWhileAlive""></a></h3><h4 id="borrowresourceswhilealive-代码简介" tabindex="-1">borrowResourcesWhileAlive-代码简介 <a class="header-anchor" href="#borrowresourceswhilealive-代码简介" aria-label="Permalink to "borrowResourcesWhileAlive-代码简介""></a></h4><p>代码:armour 中文释义:资源活着时借用 类型:Price型 隶属于:单位统计代码组</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>创建时获取这些资源,删除或销毁时将其返回。 例如用于电力逻辑,负数供电和正数耗电。</p></div><h4 id="borrowresourceswhilealive-演示例子" tabindex="-1">borrowResourcesWhileAlive-演示例子 <a class="header-anchor" href="#borrowresourceswhilealive-演示例子" aria-label="Permalink to "borrowResourcesWhileAlive-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
|
<span class="line"><span style="color:#676E95;font-style:italic;">#如果受到40以下的常规攻击,则进行最低伤害判定</span></span></code></pre></div><hr><h3 id="borrowresourceswhilealive" tabindex="-1">borrowResourcesWhileAlive <a class="header-anchor" href="#borrowresourceswhilealive" aria-label="Permalink to "borrowResourcesWhileAlive""></a></h3><h4 id="borrowresourceswhilealive-代码简介" tabindex="-1">borrowResourcesWhileAlive-代码简介 <a class="header-anchor" href="#borrowresourceswhilealive-代码简介" aria-label="Permalink to "borrowResourcesWhileAlive-代码简介""></a></h4><p>代码:armour 中文释义:资源活着时借用 类型:Price型 隶属于:单位统计代码组</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>创建时获取这些资源,删除或销毁时将其返回。 例如用于电力逻辑,负数供电和正数耗电。</p></div><h4 id="borrowresourceswhilealive-演示例子" tabindex="-1">borrowResourcesWhileAlive-演示例子 <a class="header-anchor" href="#borrowresourceswhilealive-演示例子" aria-label="Permalink to "borrowResourcesWhileAlive-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">borrowResourcesWhileAlive:5000</span></span>
|
<span class="line"><span style="color:#A6ACCD;">borrowResourcesWhileAlive:5000</span></span>
|
||||||
<span class="line"><span style="color:#676E95;font-style:italic;">#单位活着的时候给予5000金币,死亡扣除5000金币</span></span>
|
<span class="line"><span style="color:#676E95;font-style:italic;">#单位活着的时候给予5000金币,死亡扣除5000金币</span></span>
|
||||||
<span class="line"><span style="color:#676E95;font-style:italic;">#一个小型贷款系统,</span></span></code></pre></div><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-OCPjM" id="tab-gH9N5xA" checked="checked"><label for="tab-gH9N5xA">考考你</label><input type="radio" name="group-OCPjM" id="tab-NRud-dQ"><label for="tab-NRud-dQ">显示答案</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">如果这里要通过这个代码做一个小的贷款系统,</span></span>
|
<span class="line"><span style="color:#676E95;font-style:italic;">#一个小型贷款系统,</span></span></code></pre></div><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-2yvIb" id="tab-iB97klY" checked="checked"><label for="tab-iB97klY">考考你</label><input type="radio" name="group-2yvIb" id="tab-6ns0Ecz"><label for="tab-6ns0Ecz">显示答案</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">如果这里要通过这个代码做一个小的贷款系统,</span></span>
|
||||||
<span class="line"><span style="color:#FFCB6B;">并经过一段时间让单位死亡。</span><span style="color:#A6ACCD;"> </span></span>
|
<span class="line"><span style="color:#FFCB6B;">并经过一段时间让单位死亡。</span><span style="color:#A6ACCD;"> </span></span>
|
||||||
<span class="line"><span style="color:#FFCB6B;">只需要4行代码即可实现,试试看。</span></span>
|
<span class="line"><span style="color:#FFCB6B;">只需要4行代码即可实现,试试看。</span></span>
|
||||||
<span class="line"><span style="color:#FFCB6B;">提示:dieOnZeroEnergy:true</span></span>
|
<span class="line"><span style="color:#FFCB6B;">提示:dieOnZeroEnergy:true</span></span>
|
||||||
|
@ -116,4 +116,4 @@ import{_ as t,K as o,o as r,c,k as e,a,O as n,w as l,X as i}from"./chunks/framew
|
||||||
<span class="line"><span style="color:#A6ACCD;">footprint: -1,-1,1,1</span></span></code></pre></div><hr><h3 id="constructionfootprint" tabindex="-1">constructionFootprint <a class="header-anchor" href="#constructionfootprint" aria-label="Permalink to "constructionFootprint""></a></h3><h4 id="constructionfootprint-代码简介" tabindex="-1">constructionFootprint-代码简介 <a class="header-anchor" href="#constructionfootprint-代码简介" aria-label="Permalink to "constructionFootprint-代码简介""></a></h4><p>代码:constructionFootprint 中文释义:建筑覆盖范围 类型:多整型 隶属于:构建代码组</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>基础规则同上,这个区域内不能建造建筑,但是单位可以通过。<br> 一般需要设定比上一个面积大。<br> 好处是即使建造的密密麻麻,单位也有路可走。</p></div><h4 id="constructionfootprint-演示例子" tabindex="-1">constructionFootprint-演示例子 <a class="header-anchor" href="#constructionfootprint-演示例子" aria-label="Permalink to "constructionFootprint-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">footprint: -1,-1,1,1</span></span></code></pre></div><hr><h3 id="constructionfootprint" tabindex="-1">constructionFootprint <a class="header-anchor" href="#constructionfootprint" aria-label="Permalink to "constructionFootprint""></a></h3><h4 id="constructionfootprint-代码简介" tabindex="-1">constructionFootprint-代码简介 <a class="header-anchor" href="#constructionfootprint-代码简介" aria-label="Permalink to "constructionFootprint-代码简介""></a></h4><p>代码:constructionFootprint 中文释义:建筑覆盖范围 类型:多整型 隶属于:构建代码组</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>基础规则同上,这个区域内不能建造建筑,但是单位可以通过。<br> 一般需要设定比上一个面积大。<br> 好处是即使建造的密密麻麻,单位也有路可走。</p></div><h4 id="constructionfootprint-演示例子" tabindex="-1">constructionFootprint-演示例子 <a class="header-anchor" href="#constructionfootprint-演示例子" aria-label="Permalink to "constructionFootprint-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">constructionFootprint: -1,-1,1,3</span></span></code></pre></div><hr><h3 id="displayfootprint" tabindex="-1">displayFootprint <a class="header-anchor" href="#displayfootprint" aria-label="Permalink to "displayFootprint""></a></h3><h4 id="displayfootprint-代码简介" tabindex="-1">displayFootprint-代码简介 <a class="header-anchor" href="#displayfootprint-代码简介" aria-label="Permalink to "displayFootprint-代码简介""></a></h4><p>代码:displayFootprint 中文释义:建筑选择UI 类型:多整型 隶属于:构建代码组</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>基础规则同上,用于选择单位时UI显示。不设定则默认为建筑覆盖区域。</p></div><h4 id="displayfootprint-演示例子" tabindex="-1">displayFootprint-演示例子 <a class="header-anchor" href="#displayfootprint-演示例子" aria-label="Permalink to "displayFootprint-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">constructionFootprint: -1,-1,1,3</span></span></code></pre></div><hr><h3 id="displayfootprint" tabindex="-1">displayFootprint <a class="header-anchor" href="#displayfootprint" aria-label="Permalink to "displayFootprint""></a></h3><h4 id="displayfootprint-代码简介" tabindex="-1">displayFootprint-代码简介 <a class="header-anchor" href="#displayfootprint-代码简介" aria-label="Permalink to "displayFootprint-代码简介""></a></h4><p>代码:displayFootprint 中文释义:建筑选择UI 类型:多整型 隶属于:构建代码组</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>基础规则同上,用于选择单位时UI显示。不设定则默认为建筑覆盖区域。</p></div><h4 id="displayfootprint-演示例子" tabindex="-1">displayFootprint-演示例子 <a class="header-anchor" href="#displayfootprint-演示例子" aria-label="Permalink to "displayFootprint-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">displayFootprint: 0,0,1,1</span></span></code></pre></div><hr><h3 id="buildingselectionoffset" tabindex="-1">buildingSelectionOffset <a class="header-anchor" href="#buildingselectionoffset" aria-label="Permalink to "buildingSelectionOffset""></a></h3><h4 id="buildingselectionoffset-代码简介" tabindex="-1">buildingSelectionOffset-代码简介 <a class="header-anchor" href="#buildingselectionoffset-代码简介" aria-label="Permalink to "buildingSelectionOffset-代码简介""></a></h4><p>代码:buildingSelectionOffset 中文释义:建筑UI调整 类型:整型 隶属于:构建代码组</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>基础规则同上,用于选择单位时UI显示。不设定则默认为建筑覆盖区域。</p></div><h4 id="buildingselectionoffset-演示例子" tabindex="-1">buildingSelectionOffset-演示例子 <a class="header-anchor" href="#buildingselectionoffset-演示例子" aria-label="Permalink to "buildingSelectionOffset-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">displayFootprint: 0,0,1,1</span></span></code></pre></div><hr><h3 id="buildingselectionoffset" tabindex="-1">buildingSelectionOffset <a class="header-anchor" href="#buildingselectionoffset" aria-label="Permalink to "buildingSelectionOffset""></a></h3><h4 id="buildingselectionoffset-代码简介" tabindex="-1">buildingSelectionOffset-代码简介 <a class="header-anchor" href="#buildingselectionoffset-代码简介" aria-label="Permalink to "buildingSelectionOffset-代码简介""></a></h4><p>代码:buildingSelectionOffset 中文释义:建筑UI调整 类型:整型 隶属于:构建代码组</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>基础规则同上,用于选择单位时UI显示。不设定则默认为建筑覆盖区域。</p></div><h4 id="buildingselectionoffset-演示例子" tabindex="-1">buildingSelectionOffset-演示例子 <a class="header-anchor" href="#buildingselectionoffset-演示例子" aria-label="Permalink to "buildingSelectionOffset-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[core]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">buildingSelectionOffset: 4</span></span></code></pre></div><hr>`,183);function F(_,T,R,w,B,I){const s=o("font");return r(),c("div",null,[d,e("p",null,[a("主要在"),n(s,{color:"orange"},{default:l(()=>[a("启用多个自定义Mod")]),_:1}),a("进行优先级定义"),h,a(" 以逗号分隔的名称列表。像"),n(s,{color:"orange"},{default:l(()=>[a("名称一样,但优先级较低")]),_:1}),a(",对于"),n(s,{color:"orange"},{default:l(()=>[a("启用多个自定义mod")]),_:1}),a("有用。")]),u,e("div",b,[g,e("p",null,[a("早期是用于在"),n(s,{color:"orange"},{default:l(()=>[a("builtFrom")]),_:1}),a("的代码,并结合科技等级使用。如果工厂的等级低于单位的目标科技等级,则会在工厂里面隐藏该单位。"),m,a("自铁锈1.09后出现"),n(s,{color:"orange"},{default:l(()=>[a("overrideAndReplace")]),_:1}),a("后,该方法则不建议使用。有关于新策略,请参考"),n(s,{color:"orange"},{default:l(()=>[a("overrideAndReplace")]),_:1}),a("代码文档指南。"),y,a(" 设置单位的科技等级,共有3个级别,1级GUI显示为绿色,2、3级显示为黄色。超过3报错。")])]),C,e("div",k,[f,e("p",null,[a("若设置成true,则会在单位死亡时产生血迹,"),q,a(" 图像在"),n(s,{color:"orange"},{default:l(()=>[a("drawable/blood_mark.png"),v,a("当hideScorchMark:true")]),_:1}),a("时可以隐藏非生物则为黑色爆炸效果。")])]),x,e("div",D,[A,e("p",null,[a("能量恢复是持续的,如果你设置了"),n(s,{color:"orange"},{default:l(()=>[a("energyNeedsToRechargeToFull")]),_:1}),a(", 那么攻击时按energyRegen恢复,耗尽时的灰条按此处设定值恢复。")])]),P])}const M=t(p,[["render",F]]);export{E as __pageData,M as default};
|
<span class="line"><span style="color:#A6ACCD;">buildingSelectionOffset: 4</span></span></code></pre></div><hr>`,183);function F(_,T,R,w,B,I){const s=r("font");return c(),o("div",null,[d,e("p",null,[a("主要在"),n(s,{color:"orange"},{default:l(()=>[a("启用多个自定义Mod")]),_:1}),a("进行优先级定义"),h,a(" 以逗号分隔的名称列表。像"),n(s,{color:"orange"},{default:l(()=>[a("名称一样,但优先级较低")]),_:1}),a(",对于"),n(s,{color:"orange"},{default:l(()=>[a("启用多个自定义mod")]),_:1}),a("有用。")]),u,e("div",b,[g,e("p",null,[a("早期是用于在"),n(s,{color:"orange"},{default:l(()=>[a("builtFrom")]),_:1}),a("的代码,并结合科技等级使用。如果工厂的等级低于单位的目标科技等级,则会在工厂里面隐藏该单位。"),m,a("自铁锈1.09后出现"),n(s,{color:"orange"},{default:l(()=>[a("overrideAndReplace")]),_:1}),a("后,该方法则不建议使用。有关于新策略,请参考"),n(s,{color:"orange"},{default:l(()=>[a("overrideAndReplace")]),_:1}),a("代码文档指南。"),y,a(" 设置单位的科技等级,共有3个级别,1级GUI显示为绿色,2、3级显示为黄色。超过3报错。")])]),C,e("div",k,[f,e("p",null,[a("若设置成true,则会在单位死亡时产生血迹,"),q,a(" 图像在"),n(s,{color:"orange"},{default:l(()=>[a("drawable/blood_mark.png"),v,a("当hideScorchMark:true")]),_:1}),a("时可以隐藏非生物则为黑色爆炸效果。")])]),x,e("div",D,[A,e("p",null,[a("能量恢复是持续的,如果你设置了"),n(s,{color:"orange"},{default:l(()=>[a("energyNeedsToRechargeToFull")]),_:1}),a(", 那么攻击时按energyRegen恢复,耗尽时的灰条按此处设定值恢复。")])]),P])}const M=t(p,[["render",F]]);export{E as __pageData,M as default};
|
1
assets/src_Unit_core.md.9eb125bd.lean.js
Normal file
1
assets/src_Unit_core.md.9eb125bd.lean.js
Normal file
|
@ -0,0 +1 @@
|
||||||
|
import{_ as t,c as o,C as e,a,I as n,E as l,V as i,J as r,o as c}from"./chunks/framework.fcc0bf38.js";const E=JSON.parse('{"title":"[core]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/core.md","filePath":"src/Unit/core.md"}'),p={name:"src/Unit/core.md"},d=i("",51),h=e("br",null,null,-1),u=i("",20),b={class:"tip custom-block"},g=e("p",{class:"custom-block-title"},"TIP",-1),m=e("br",null,null,-1),y=e("br",null,null,-1),C=i("",13),k={class:"tip custom-block"},f=e("p",{class:"custom-block-title"},"TIP",-1),q=e("br",null,null,-1),v=e("br",null,null,-1),x=i("",77),D={class:"tip custom-block"},A=e("p",{class:"custom-block-title"},"TIP",-1),P=i("",183);function F(_,T,R,w,B,I){const s=r("font");return c(),o("div",null,[d,e("p",null,[a("主要在"),n(s,{color:"orange"},{default:l(()=>[a("启用多个自定义Mod")]),_:1}),a("进行优先级定义"),h,a(" 以逗号分隔的名称列表。像"),n(s,{color:"orange"},{default:l(()=>[a("名称一样,但优先级较低")]),_:1}),a(",对于"),n(s,{color:"orange"},{default:l(()=>[a("启用多个自定义mod")]),_:1}),a("有用。")]),u,e("div",b,[g,e("p",null,[a("早期是用于在"),n(s,{color:"orange"},{default:l(()=>[a("builtFrom")]),_:1}),a("的代码,并结合科技等级使用。如果工厂的等级低于单位的目标科技等级,则会在工厂里面隐藏该单位。"),m,a("自铁锈1.09后出现"),n(s,{color:"orange"},{default:l(()=>[a("overrideAndReplace")]),_:1}),a("后,该方法则不建议使用。有关于新策略,请参考"),n(s,{color:"orange"},{default:l(()=>[a("overrideAndReplace")]),_:1}),a("代码文档指南。"),y,a(" 设置单位的科技等级,共有3个级别,1级GUI显示为绿色,2、3级显示为黄色。超过3报错。")])]),C,e("div",k,[f,e("p",null,[a("若设置成true,则会在单位死亡时产生血迹,"),q,a(" 图像在"),n(s,{color:"orange"},{default:l(()=>[a("drawable/blood_mark.png"),v,a("当hideScorchMark:true")]),_:1}),a("时可以隐藏非生物则为黑色爆炸效果。")])]),x,e("div",D,[A,e("p",null,[a("能量恢复是持续的,如果你设置了"),n(s,{color:"orange"},{default:l(()=>[a("energyNeedsToRechargeToFull")]),_:1}),a(", 那么攻击时按energyRegen恢复,耗尽时的灰条按此处设定值恢复。")])]),P])}const M=t(p,[["render",F]]);export{E as __pageData,M as default};
|
|
@ -1 +0,0 @@
|
||||||
import{_ as t,K as o,o as r,c,k as e,a,O as n,w as l,X as i}from"./chunks/framework.d377e0cc.js";const E=JSON.parse('{"title":"[core]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/core.md","filePath":"src/Unit/core.md"}'),p={name:"src/Unit/core.md"},d=i("",51),h=e("br",null,null,-1),u=i("",20),b={class:"tip custom-block"},g=e("p",{class:"custom-block-title"},"TIP",-1),m=e("br",null,null,-1),y=e("br",null,null,-1),C=i("",13),k={class:"tip custom-block"},f=e("p",{class:"custom-block-title"},"TIP",-1),q=e("br",null,null,-1),v=e("br",null,null,-1),x=i("",77),D={class:"tip custom-block"},A=e("p",{class:"custom-block-title"},"TIP",-1),P=i("",183);function F(_,T,R,w,B,I){const s=o("font");return r(),c("div",null,[d,e("p",null,[a("主要在"),n(s,{color:"orange"},{default:l(()=>[a("启用多个自定义Mod")]),_:1}),a("进行优先级定义"),h,a(" 以逗号分隔的名称列表。像"),n(s,{color:"orange"},{default:l(()=>[a("名称一样,但优先级较低")]),_:1}),a(",对于"),n(s,{color:"orange"},{default:l(()=>[a("启用多个自定义mod")]),_:1}),a("有用。")]),u,e("div",b,[g,e("p",null,[a("早期是用于在"),n(s,{color:"orange"},{default:l(()=>[a("builtFrom")]),_:1}),a("的代码,并结合科技等级使用。如果工厂的等级低于单位的目标科技等级,则会在工厂里面隐藏该单位。"),m,a("自铁锈1.09后出现"),n(s,{color:"orange"},{default:l(()=>[a("overrideAndReplace")]),_:1}),a("后,该方法则不建议使用。有关于新策略,请参考"),n(s,{color:"orange"},{default:l(()=>[a("overrideAndReplace")]),_:1}),a("代码文档指南。"),y,a(" 设置单位的科技等级,共有3个级别,1级GUI显示为绿色,2、3级显示为黄色。超过3报错。")])]),C,e("div",k,[f,e("p",null,[a("若设置成true,则会在单位死亡时产生血迹,"),q,a(" 图像在"),n(s,{color:"orange"},{default:l(()=>[a("drawable/blood_mark.png"),v,a("当hideScorchMark:true")]),_:1}),a("时可以隐藏非生物则为黑色爆炸效果。")])]),x,e("div",D,[A,e("p",null,[a("能量恢复是持续的,如果你设置了"),n(s,{color:"orange"},{default:l(()=>[a("energyNeedsToRechargeToFull")]),_:1}),a(", 那么攻击时按energyRegen恢复,耗尽时的灰条按此处设定值恢复。")])]),P])}const M=t(p,[["render",F]]);export{E as __pageData,M as default};
|
|
|
@ -1,4 +1,4 @@
|
||||||
import{_ as a,o as e,c as s,X as n}from"./chunks/framework.d377e0cc.js";const f=JSON.parse('{"title":"[graphics]图像组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/graphics.md","filePath":"src/Unit/graphics.md"}'),l={name:"src/Unit/graphics.md"},t=n(`<h1 id="graphics-图像组" tabindex="-1"><strong>[graphics]图像组</strong> <a class="header-anchor" href="#graphics-图像组" aria-label="Permalink to "**[graphics]图像组**""></a></h1><h3 id="image" tabindex="-1">image <a class="header-anchor" href="#image" aria-label="Permalink to "image""></a></h3><h4 id="image-代码简介" tabindex="-1">image-代码简介 <a class="header-anchor" href="#image-代码简介" aria-label="Permalink to "image-代码简介""></a></h4><p>代码:image 中文释义:图像 类型:字符型</p><div class="danger custom-block"><p class="custom-block-title">DANGER</p><p>如果需要隐藏单位的图像请使用空白透明的图像替代。<br> 请勿直接忽略此项,会直接报错导致此单位代码无法加载,从而报错。</p></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>铁锈战争支持多种图片格式,如:jpg,png,bmp...等,但也有一部分的格式并不支持,如webp这种的。<br> 尽量使用png格式的图片也许不失为一个好的选择。</p></div><h4 id="image-用法" tabindex="-1">image-用法 <a class="header-anchor" href="#image-用法" aria-label="Permalink to "image-用法""></a></h4><p>填写图片文件或图片文件的路径,图片文件将作为单位的主体图像。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>路径可使用相对路径或绝对路径。<br> 绝对路径中的根目录是以模组包内的首层目录为根目录的。<br> 相对路径则是以ini代码文件的目录为起始目录。<br> 图片和代码在同一目录下直接填写路径的用法相当于使用了相对路径。<br> 此方法基本适用于[graphics]组内所有需要引用图像文件的地方。</p></div><h4 id="image-示例" tabindex="-1">image-示例 <a class="header-anchor" href="#image-示例" aria-label="Permalink to "image-示例""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[graphics]</span></span>
|
import{_ as a,c as e,o as s,V as n}from"./chunks/framework.fcc0bf38.js";const f=JSON.parse('{"title":"[graphics]图像组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/graphics.md","filePath":"src/Unit/graphics.md"}'),l={name:"src/Unit/graphics.md"},t=n(`<h1 id="graphics-图像组" tabindex="-1"><strong>[graphics]图像组</strong> <a class="header-anchor" href="#graphics-图像组" aria-label="Permalink to "**[graphics]图像组**""></a></h1><h3 id="image" tabindex="-1">image <a class="header-anchor" href="#image" aria-label="Permalink to "image""></a></h3><h4 id="image-代码简介" tabindex="-1">image-代码简介 <a class="header-anchor" href="#image-代码简介" aria-label="Permalink to "image-代码简介""></a></h4><p>代码:image 中文释义:图像 类型:字符型</p><div class="danger custom-block"><p class="custom-block-title">DANGER</p><p>如果需要隐藏单位的图像请使用空白透明的图像替代。<br> 请勿直接忽略此项,会直接报错导致此单位代码无法加载,从而报错。</p></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>铁锈战争支持多种图片格式,如:jpg,png,bmp...等,但也有一部分的格式并不支持,如webp这种的。<br> 尽量使用png格式的图片也许不失为一个好的选择。</p></div><h4 id="image-用法" tabindex="-1">image-用法 <a class="header-anchor" href="#image-用法" aria-label="Permalink to "image-用法""></a></h4><p>填写图片文件或图片文件的路径,图片文件将作为单位的主体图像。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>路径可使用相对路径或绝对路径。<br> 绝对路径中的根目录是以模组包内的首层目录为根目录的。<br> 相对路径则是以ini代码文件的目录为起始目录。<br> 图片和代码在同一目录下直接填写路径的用法相当于使用了相对路径。<br> 此方法基本适用于[graphics]组内所有需要引用图像文件的地方。</p></div><h4 id="image-示例" tabindex="-1">image-示例 <a class="header-anchor" href="#image-示例" aria-label="Permalink to "image-示例""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[graphics]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">image: ROOT:\\124\\255\\tank.png </span><span style="color:#676E95;font-style:italic;"># 绝对路径</span></span>
|
<span class="line"><span style="color:#A6ACCD;">image: ROOT:\\124\\255\\tank.png </span><span style="color:#676E95;font-style:italic;"># 绝对路径</span></span>
|
||||||
<span class="line"></span>
|
<span class="line"></span>
|
||||||
<span class="line"><span style="color:#89DDFF;">[graphics]</span></span>
|
<span class="line"><span style="color:#89DDFF;">[graphics]</span></span>
|
||||||
|
@ -167,4 +167,4 @@ import{_ as a,o as e,c as s,X as n}from"./chunks/framework.d377e0cc.js";const f=
|
||||||
<span class="line"><span style="color:#A6ACCD;">dustEffectReverse:true</span></span>
|
<span class="line"><span style="color:#A6ACCD;">dustEffectReverse:true</span></span>
|
||||||
<span class="line"></span>
|
<span class="line"></span>
|
||||||
<span class="line"><span style="color:#89DDFF;">[graphics]</span></span>
|
<span class="line"><span style="color:#89DDFF;">[graphics]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">dustEffectReverse:false</span></span></code></pre></div>`,298),o=[t];function i(r,c,p,h,d,m){return e(),s("div",null,o)}const g=a(l,[["render",i]]);export{f as __pageData,g as default};
|
<span class="line"><span style="color:#A6ACCD;">dustEffectReverse:false</span></span></code></pre></div>`,298),o=[t];function i(r,c,p,h,d,m){return s(),e("div",null,o)}const g=a(l,[["render",i]]);export{f as __pageData,g as default};
|
|
@ -1 +1 @@
|
||||||
import{_ as a,o as e,c as s,X as n}from"./chunks/framework.d377e0cc.js";const f=JSON.parse('{"title":"[graphics]图像组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/graphics.md","filePath":"src/Unit/graphics.md"}'),l={name:"src/Unit/graphics.md"},t=n("",298),o=[t];function i(r,c,p,h,d,m){return e(),s("div",null,o)}const g=a(l,[["render",i]]);export{f as __pageData,g as default};
|
import{_ as a,c as e,o as s,V as n}from"./chunks/framework.fcc0bf38.js";const f=JSON.parse('{"title":"[graphics]图像组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/graphics.md","filePath":"src/Unit/graphics.md"}'),l={name:"src/Unit/graphics.md"},t=n("",298),o=[t];function i(r,c,p,h,d,m){return s(),e("div",null,o)}const g=a(l,[["render",i]]);export{f as __pageData,g as default};
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1,4 +1,4 @@
|
||||||
import{_ as e,o as a,c as t,X as n}from"./chunks/framework.d377e0cc.js";const u=JSON.parse('{"title":"[movement]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/movement.md","filePath":"src/Unit/movement.md"}'),o={name:"src/Unit/movement.md"},l=n(`<h1 id="movement-组" tabindex="-1"><strong>[movement]组</strong> <a class="header-anchor" href="#movement-组" aria-label="Permalink to "**[movement]组**""></a></h1><h2 id="第一类-通用代码组" tabindex="-1">第一类-通用代码组 <a class="header-anchor" href="#第一类-通用代码组" aria-label="Permalink to "第一类-通用代码组""></a></h2><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>以下的代码为<code>通用代码</code>,多半是必要的代码,如果不包括这些,可能在<code>绝大多数情况下导致错误</code>。</p></div><h3 id="movementtype" tabindex="-1">movementType <a class="header-anchor" href="#movementtype" aria-label="Permalink to "movementType""></a></h3><h4 id="movementtype-代码简介" tabindex="-1">movementType-代码简介 <a class="header-anchor" href="#movementtype-代码简介" aria-label="Permalink to "movementType-代码简介""></a></h4><p>代码:movementType 中文释义:运动类型 类型:字符串 隶属于:通用代码组</p><h4 id="string-要点指示" tabindex="-1">string-要点指示 <a class="header-anchor" href="#string-要点指示" aria-label="Permalink to "string-要点指示""></a></h4><p>定义单位的运动类型,判定单位是否可在某种地形上运动,可用值为NONE、LAND、BUILDING、AIR、WATER、HOVER、OVER_CLIFF、OVER_CLIFF_WATER。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>不同的运动类型特点如下</p><table><thead><tr><th>类型</th><th>可跨陆地</th><th>可跨悬崖</th><th>可跨水</th><th>可跨岩浆</th></tr></thead><tbody><tr><td>NONE</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>LAND</td><td>✓</td><td>×</td><td>×</td><td>×</td></tr><tr><td>BUILDING</td><td>✓</td><td>×</td><td>×</td><td>×</td></tr><tr><td>AIR</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>WATER</td><td>×</td><td>×</td><td>✓</td><td>×</td></tr><tr><td>HOVER</td><td>✓</td><td>×</td><td>✓</td><td>×</td></tr><tr><td>OVER_CLIFF</td><td>✓</td><td>✓</td><td>×</td><td>×</td></tr><tr><td>OVER_CLIFF_WATER</td><td>✓</td><td>✓</td><td>✓</td><td>×</td></tr></tbody></table></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>类型NONE虽然说移动无视地形,但是只能在LAND类型地块进行放置</p></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>NONE移动类型在多选单位进行移动时会有卡寻路的问题 BUILDING移动类型似乎已经废弃,和LAND没有任何区别</p></div><h4 id="movementtype-演示例子" tabindex="-1">movementType-演示例子 <a class="header-anchor" href="#movementtype-演示例子" aria-label="Permalink to "movementType-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
|
import{_ as e,c as a,o as t,V as n}from"./chunks/framework.fcc0bf38.js";const u=JSON.parse('{"title":"[movement]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/movement.md","filePath":"src/Unit/movement.md"}'),o={name:"src/Unit/movement.md"},l=n(`<h1 id="movement-组" tabindex="-1"><strong>[movement]组</strong> <a class="header-anchor" href="#movement-组" aria-label="Permalink to "**[movement]组**""></a></h1><h2 id="第一类-通用代码组" tabindex="-1">第一类-通用代码组 <a class="header-anchor" href="#第一类-通用代码组" aria-label="Permalink to "第一类-通用代码组""></a></h2><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>以下的代码为<code>通用代码</code>,多半是必要的代码,如果不包括这些,可能在<code>绝大多数情况下导致错误</code>。</p></div><h3 id="movementtype" tabindex="-1">movementType <a class="header-anchor" href="#movementtype" aria-label="Permalink to "movementType""></a></h3><h4 id="movementtype-代码简介" tabindex="-1">movementType-代码简介 <a class="header-anchor" href="#movementtype-代码简介" aria-label="Permalink to "movementType-代码简介""></a></h4><p>代码:movementType 中文释义:运动类型 类型:字符串 隶属于:通用代码组</p><h4 id="string-要点指示" tabindex="-1">string-要点指示 <a class="header-anchor" href="#string-要点指示" aria-label="Permalink to "string-要点指示""></a></h4><p>定义单位的运动类型,判定单位是否可在某种地形上运动,可用值为NONE、LAND、BUILDING、AIR、WATER、HOVER、OVER_CLIFF、OVER_CLIFF_WATER。</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>不同的运动类型特点如下</p><table><thead><tr><th>类型</th><th>可跨陆地</th><th>可跨悬崖</th><th>可跨水</th><th>可跨岩浆</th></tr></thead><tbody><tr><td>NONE</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>LAND</td><td>✓</td><td>×</td><td>×</td><td>×</td></tr><tr><td>BUILDING</td><td>✓</td><td>×</td><td>×</td><td>×</td></tr><tr><td>AIR</td><td>✓</td><td>✓</td><td>✓</td><td>✓</td></tr><tr><td>WATER</td><td>×</td><td>×</td><td>✓</td><td>×</td></tr><tr><td>HOVER</td><td>✓</td><td>×</td><td>✓</td><td>×</td></tr><tr><td>OVER_CLIFF</td><td>✓</td><td>✓</td><td>×</td><td>×</td></tr><tr><td>OVER_CLIFF_WATER</td><td>✓</td><td>✓</td><td>✓</td><td>×</td></tr></tbody></table></div><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>类型NONE虽然说移动无视地形,但是只能在LAND类型地块进行放置</p></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>NONE移动类型在多选单位进行移动时会有卡寻路的问题 BUILDING移动类型似乎已经废弃,和LAND没有任何区别</p></div><h4 id="movementtype-演示例子" tabindex="-1">movementType-演示例子 <a class="header-anchor" href="#movementtype-演示例子" aria-label="Permalink to "movementType-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">movementType:LAND</span></span></code></pre></div><hr><h2 id="第二类-速度相关组" tabindex="-1">第二类-速度相关组 <a class="header-anchor" href="#第二类-速度相关组" aria-label="Permalink to "第二类-速度相关组""></a></h2><h3 id="movespeed" tabindex="-1">moveSpeed <a class="header-anchor" href="#movespeed" aria-label="Permalink to "moveSpeed""></a></h3><h4 id="movespeed-代码简介" tabindex="-1">moveSpeed-代码简介 <a class="header-anchor" href="#movespeed-代码简介" aria-label="Permalink to "moveSpeed-代码简介""></a></h4><p>代码:moveSpeed 中文释义:移动速度 类型:浮点数 隶属于:通用代码组</p><h4 id="movespeed-要点指示" tabindex="-1">moveSpeed-要点指示 <a class="header-anchor" href="#movespeed-要点指示" aria-label="Permalink to "moveSpeed-要点指示""></a></h4><p>定义单位的移动速度,显示在单位信息中</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>移动速度的单位是<strong>像素/帧</strong>,同时铁锈战争地图图块大小为20x20,且一秒60帧,所以说移动速度为1的话,每秒可以移动三格</p></div><h4 id="movespeed-演示例子" tabindex="-1">moveSpeed-演示例子 <a class="header-anchor" href="#movespeed-演示例子" aria-label="Permalink to "moveSpeed-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">movementType:LAND</span></span></code></pre></div><hr><h2 id="第二类-速度相关组" tabindex="-1">第二类-速度相关组 <a class="header-anchor" href="#第二类-速度相关组" aria-label="Permalink to "第二类-速度相关组""></a></h2><h3 id="movespeed" tabindex="-1">moveSpeed <a class="header-anchor" href="#movespeed" aria-label="Permalink to "moveSpeed""></a></h3><h4 id="movespeed-代码简介" tabindex="-1">moveSpeed-代码简介 <a class="header-anchor" href="#movespeed-代码简介" aria-label="Permalink to "moveSpeed-代码简介""></a></h4><p>代码:moveSpeed 中文释义:移动速度 类型:浮点数 隶属于:通用代码组</p><h4 id="movespeed-要点指示" tabindex="-1">moveSpeed-要点指示 <a class="header-anchor" href="#movespeed-要点指示" aria-label="Permalink to "moveSpeed-要点指示""></a></h4><p>定义单位的移动速度,显示在单位信息中</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>移动速度的单位是<strong>像素/帧</strong>,同时铁锈战争地图图块大小为20x20,且一秒60帧,所以说移动速度为1的话,每秒可以移动三格</p></div><h4 id="movespeed-演示例子" tabindex="-1">moveSpeed-演示例子 <a class="header-anchor" href="#movespeed-演示例子" aria-label="Permalink to "moveSpeed-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">moveSpeed:0.5</span></span></code></pre></div><hr><h3 id="moveaccelerationspeed" tabindex="-1">moveAccelerationSpeed <a class="header-anchor" href="#moveaccelerationspeed" aria-label="Permalink to "moveAccelerationSpeed""></a></h3><h4 id="moveaccelerationspeed-代码简介" tabindex="-1">moveAccelerationSpeed-代码简介 <a class="header-anchor" href="#moveaccelerationspeed-代码简介" aria-label="Permalink to "moveAccelerationSpeed-代码简介""></a></h4><p>代码:moveAccelerationSpeed 中文释义:加速度 类型:浮点数 隶属于:速度相关组</p><h4 id="moveaccelerationspeed-要点指示" tabindex="-1">moveAccelerationSpeed-要点指示 <a class="header-anchor" href="#moveaccelerationspeed-要点指示" aria-label="Permalink to "moveAccelerationSpeed-要点指示""></a></h4><p>定义单位的加速度,单位在移动时会从零开始加速直到移动速度</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>加速度也是按帧计算的,如果你需要一秒加速0.6,你需要填写的值为0.01</p></div><h4 id="moveaccelerationspeed-演示例子" tabindex="-1">moveAccelerationSpeed-演示例子 <a class="header-anchor" href="#moveaccelerationspeed-演示例子" aria-label="Permalink to "moveAccelerationSpeed-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">moveSpeed:0.5</span></span></code></pre></div><hr><h3 id="moveaccelerationspeed" tabindex="-1">moveAccelerationSpeed <a class="header-anchor" href="#moveaccelerationspeed" aria-label="Permalink to "moveAccelerationSpeed""></a></h3><h4 id="moveaccelerationspeed-代码简介" tabindex="-1">moveAccelerationSpeed-代码简介 <a class="header-anchor" href="#moveaccelerationspeed-代码简介" aria-label="Permalink to "moveAccelerationSpeed-代码简介""></a></h4><p>代码:moveAccelerationSpeed 中文释义:加速度 类型:浮点数 隶属于:速度相关组</p><h4 id="moveaccelerationspeed-要点指示" tabindex="-1">moveAccelerationSpeed-要点指示 <a class="header-anchor" href="#moveaccelerationspeed-要点指示" aria-label="Permalink to "moveAccelerationSpeed-要点指示""></a></h4><p>定义单位的加速度,单位在移动时会从零开始加速直到移动速度</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>加速度也是按帧计算的,如果你需要一秒加速0.6,你需要填写的值为0.01</p></div><h4 id="moveaccelerationspeed-演示例子" tabindex="-1">moveAccelerationSpeed-演示例子 <a class="header-anchor" href="#moveaccelerationspeed-演示例子" aria-label="Permalink to "moveAccelerationSpeed-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">moveSpeed:1</span></span>
|
<span class="line"><span style="color:#A6ACCD;">moveSpeed:1</span></span>
|
||||||
|
@ -9,7 +9,7 @@ import{_ as e,o as a,c as t,X as n}from"./chunks/framework.d377e0cc.js";const u=
|
||||||
<span class="line"><span style="color:#A6ACCD;">reverseSpeedPercentage:0.4</span></span></code></pre></div><hr><h3 id="maxturnspeed" tabindex="-1">maxTurnSpeed <a class="header-anchor" href="#maxturnspeed" aria-label="Permalink to "maxTurnSpeed""></a></h3><h4 id="maxturnspeed-代码简介" tabindex="-1">maxTurnSpeed-代码简介 <a class="header-anchor" href="#maxturnspeed-代码简介" aria-label="Permalink to "maxTurnSpeed-代码简介""></a></h4><p>代码:maxTurnSpeed 中文释义:转弯速度 类型:浮点数 隶属于:速度相关组</p><h4 id="maxturnspeed-要点指示" tabindex="-1">maxTurnSpeed-要点指示 <a class="header-anchor" href="#maxturnspeed-要点指示" aria-label="Permalink to "maxTurnSpeed-要点指示""></a></h4><p>定义单位转弯的速度</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>转弯速度的单位是<strong>度/帧</strong>,如果转弯速度为1,那么一秒将旋转60度</p></div><h4 id="maxturnspeed-演示例子" tabindex="-1">maxTurnSpeed-演示例子 <a class="header-anchor" href="#maxturnspeed-演示例子" aria-label="Permalink to "maxTurnSpeed-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">reverseSpeedPercentage:0.4</span></span></code></pre></div><hr><h3 id="maxturnspeed" tabindex="-1">maxTurnSpeed <a class="header-anchor" href="#maxturnspeed" aria-label="Permalink to "maxTurnSpeed""></a></h3><h4 id="maxturnspeed-代码简介" tabindex="-1">maxTurnSpeed-代码简介 <a class="header-anchor" href="#maxturnspeed-代码简介" aria-label="Permalink to "maxTurnSpeed-代码简介""></a></h4><p>代码:maxTurnSpeed 中文释义:转弯速度 类型:浮点数 隶属于:速度相关组</p><h4 id="maxturnspeed-要点指示" tabindex="-1">maxTurnSpeed-要点指示 <a class="header-anchor" href="#maxturnspeed-要点指示" aria-label="Permalink to "maxTurnSpeed-要点指示""></a></h4><p>定义单位转弯的速度</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>转弯速度的单位是<strong>度/帧</strong>,如果转弯速度为1,那么一秒将旋转60度</p></div><h4 id="maxturnspeed-演示例子" tabindex="-1">maxTurnSpeed-演示例子 <a class="header-anchor" href="#maxturnspeed-演示例子" aria-label="Permalink to "maxTurnSpeed-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">maxTurnSpeed:1.5</span></span></code></pre></div><hr><h3 id="turnacceleration" tabindex="-1">turnAcceleration <a class="header-anchor" href="#turnacceleration" aria-label="Permalink to "turnAcceleration""></a></h3><h4 id="turnacceleration-代码简介" tabindex="-1">turnAcceleration-代码简介 <a class="header-anchor" href="#turnacceleration-代码简介" aria-label="Permalink to "turnAcceleration-代码简介""></a></h4><p>代码:turnAcceleration 中文释义:转弯速度 类型:浮点数 隶属于:速度相关组</p><h4 id="turnacceleration-要点指示" tabindex="-1">turnAcceleration-要点指示 <a class="header-anchor" href="#turnacceleration-要点指示" aria-label="Permalink to "turnAcceleration-要点指示""></a></h4><p>定义单位转弯的加速度,开始转弯时将从零开始加速直到转弯速度</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>转弯加速度是按帧计算的,如果想要每秒增加0.6需要填0.01</p></div><h4 id="turnacceleration-演示例子" tabindex="-1">turnAcceleration-演示例子 <a class="header-anchor" href="#turnacceleration-演示例子" aria-label="Permalink to "turnAcceleration-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">maxTurnSpeed:1.5</span></span></code></pre></div><hr><h3 id="turnacceleration" tabindex="-1">turnAcceleration <a class="header-anchor" href="#turnacceleration" aria-label="Permalink to "turnAcceleration""></a></h3><h4 id="turnacceleration-代码简介" tabindex="-1">turnAcceleration-代码简介 <a class="header-anchor" href="#turnacceleration-代码简介" aria-label="Permalink to "turnAcceleration-代码简介""></a></h4><p>代码:turnAcceleration 中文释义:转弯速度 类型:浮点数 隶属于:速度相关组</p><h4 id="turnacceleration-要点指示" tabindex="-1">turnAcceleration-要点指示 <a class="header-anchor" href="#turnacceleration-要点指示" aria-label="Permalink to "turnAcceleration-要点指示""></a></h4><p>定义单位转弯的加速度,开始转弯时将从零开始加速直到转弯速度</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>转弯加速度是按帧计算的,如果想要每秒增加0.6需要填0.01</p></div><h4 id="turnacceleration-演示例子" tabindex="-1">turnAcceleration-演示例子 <a class="header-anchor" href="#turnacceleration-演示例子" aria-label="Permalink to "turnAcceleration-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">maxTurnSpeed:1.5</span></span>
|
<span class="line"><span style="color:#A6ACCD;">maxTurnSpeed:1.5</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">turnAcceleration:0.01</span></span></code></pre></div><hr><h2 id="第三类-高度相关组" tabindex="-1">第三类-高度相关组 <a class="header-anchor" href="#第三类-高度相关组" aria-label="Permalink to "第三类-高度相关组""></a></h2><h3 id="targetheight" tabindex="-1">targetHeight <a class="header-anchor" href="#targetheight" aria-label="Permalink to "targetHeight""></a></h3><h4 id="targetheight-代码简介" tabindex="-1">targetHeight-代码简介 <a class="header-anchor" href="#targetheight-代码简介" aria-label="Permalink to "targetHeight-代码简介""></a></h4><p>代码:targetHeight 中文释义:到达高度 类型:浮点数 隶属于:高度相关组</p><h4 id="targetheight-要点指示" tabindex="-1">targetHeight-要点指示 <a class="header-anchor" href="#targetheight-要点指示" aria-label="Permalink to "targetHeight-要点指示""></a></h4><p>定义单位的高度,当单位创建完成时会从0到达这个高度</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>如果运动类型为AIR,targetHeight默认值将为20</p></div><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-v31n8" id="tab-XLkKKph" checked="checked"><label for="tab-XLkKKph">摸鱼人time</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">大部分单位能被什么类型的攻击方式攻击不取决于移动类型,而是取决于高度</span></span>
|
<span class="line"><span style="color:#A6ACCD;">turnAcceleration:0.01</span></span></code></pre></div><hr><h2 id="第三类-高度相关组" tabindex="-1">第三类-高度相关组 <a class="header-anchor" href="#第三类-高度相关组" aria-label="Permalink to "第三类-高度相关组""></a></h2><h3 id="targetheight" tabindex="-1">targetHeight <a class="header-anchor" href="#targetheight" aria-label="Permalink to "targetHeight""></a></h3><h4 id="targetheight-代码简介" tabindex="-1">targetHeight-代码简介 <a class="header-anchor" href="#targetheight-代码简介" aria-label="Permalink to "targetHeight-代码简介""></a></h4><p>代码:targetHeight 中文释义:到达高度 类型:浮点数 隶属于:高度相关组</p><h4 id="targetheight-要点指示" tabindex="-1">targetHeight-要点指示 <a class="header-anchor" href="#targetheight-要点指示" aria-label="Permalink to "targetHeight-要点指示""></a></h4><p>定义单位的高度,当单位创建完成时会从0到达这个高度</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>如果运动类型为AIR,targetHeight默认值将为20</p></div><div class="vp-code-group"><div class="tabs"><input type="radio" name="group-aHhzY" id="tab-eWGv7o2" checked="checked"><label for="tab-eWGv7o2">摸鱼人time</label></div><div class="blocks"><div class="language-bash active"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#FFCB6B;">大部分单位能被什么类型的攻击方式攻击不取决于移动类型,而是取决于高度</span></span>
|
||||||
<span class="line"><span style="color:#FFCB6B;">如果高度是负数,那么可以被水下攻击命中</span></span>
|
<span class="line"><span style="color:#FFCB6B;">如果高度是负数,那么可以被水下攻击命中</span></span>
|
||||||
<span class="line"><span style="color:#FFCB6B;">如果高度位于0到10之间,可以被对表面攻击命中</span></span>
|
<span class="line"><span style="color:#FFCB6B;">如果高度位于0到10之间,可以被对表面攻击命中</span></span>
|
||||||
<span class="line"><span style="color:#FFCB6B;">如果高度大于10,可以被对空攻击命中</span></span>
|
<span class="line"><span style="color:#FFCB6B;">如果高度大于10,可以被对空攻击命中</span></span>
|
||||||
|
@ -30,4 +30,4 @@ import{_ as e,o as a,c as t,X as n}from"./chunks/framework.d377e0cc.js";const u=
|
||||||
<span class="line"><span style="color:#A6ACCD;">moveSlidingDir:-1</span></span></code></pre></div><hr><h3 id="joinsgroupformations" tabindex="-1">joinsGroupFormations <a class="header-anchor" href="#joinsgroupformations" aria-label="Permalink to "joinsGroupFormations""></a></h3><h4 id="joinsgroupformations-代码简介" tabindex="-1">joinsGroupFormations-代码简介 <a class="header-anchor" href="#joinsgroupformations-代码简介" aria-label="Permalink to "joinsGroupFormations-代码简介""></a></h4><p>代码:joinsGroupFormations 中文释义:加入到队形 类型:布尔值 隶属于:杂项</p><h4 id="joinsgroupformations-要点指示" tabindex="-1">joinsGroupFormations-要点指示 <a class="header-anchor" href="#joinsgroupformations-要点指示" aria-label="Permalink to "joinsGroupFormations-要点指示""></a></h4><p>定义单位移动时是否要按队形行动</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>默认值为true,这使大部分单位在移动时会排列为一个方阵,着不仅有效的使单位在一定程度上散开,避免aoe伤害,也能加快寻路运算速度,但是会使大量单位行进时部分单位一直撞墙 如果改为false,每个单位将单独进行寻路,这使得单位会挤在一起并且可能造成卡顿</p></div><h4 id="joinsgroupformations-演示例子" tabindex="-1">joinsGroupFormations-演示例子 <a class="header-anchor" href="#joinsgroupformations-演示例子" aria-label="Permalink to "joinsGroupFormations-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">moveSlidingDir:-1</span></span></code></pre></div><hr><h3 id="joinsgroupformations" tabindex="-1">joinsGroupFormations <a class="header-anchor" href="#joinsgroupformations" aria-label="Permalink to "joinsGroupFormations""></a></h3><h4 id="joinsgroupformations-代码简介" tabindex="-1">joinsGroupFormations-代码简介 <a class="header-anchor" href="#joinsgroupformations-代码简介" aria-label="Permalink to "joinsGroupFormations-代码简介""></a></h4><p>代码:joinsGroupFormations 中文释义:加入到队形 类型:布尔值 隶属于:杂项</p><h4 id="joinsgroupformations-要点指示" tabindex="-1">joinsGroupFormations-要点指示 <a class="header-anchor" href="#joinsgroupformations-要点指示" aria-label="Permalink to "joinsGroupFormations-要点指示""></a></h4><p>定义单位移动时是否要按队形行动</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>默认值为true,这使大部分单位在移动时会排列为一个方阵,着不仅有效的使单位在一定程度上散开,避免aoe伤害,也能加快寻路运算速度,但是会使大量单位行进时部分单位一直撞墙 如果改为false,每个单位将单独进行寻路,这使得单位会挤在一起并且可能造成卡顿</p></div><h4 id="joinsgroupformations-演示例子" tabindex="-1">joinsGroupFormations-演示例子 <a class="header-anchor" href="#joinsgroupformations-演示例子" aria-label="Permalink to "joinsGroupFormations-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">joinsGroupFormations:true</span></span></code></pre></div><hr><h3 id="ignoremoveorders" tabindex="-1">ignoreMoveOrders <a class="header-anchor" href="#ignoremoveorders" aria-label="Permalink to "ignoreMoveOrders""></a></h3><h4 id="ignoremoveorders-代码简介" tabindex="-1">ignoreMoveOrders-代码简介 <a class="header-anchor" href="#ignoremoveorders-代码简介" aria-label="Permalink to "ignoreMoveOrders-代码简介""></a></h4><p>代码:ignoreMoveOrders 中文释义:忽略移动指令:布尔值 隶属于:杂项</p><h4 id="ignoremoveorders-要点指示" tabindex="-1">ignoreMoveOrders-要点指示 <a class="header-anchor" href="#ignoremoveorders-要点指示" aria-label="Permalink to "ignoreMoveOrders-要点指示""></a></h4><p>定义单位是否接受来自玩家的移动指令</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>这个代码只能和<strong>moveSpeed:0</strong>一起使用,但是可以通过setUnitStats改变移动速度</p></div><h4 id="ignoremoveorders-演示例子" tabindex="-1">ignoreMoveOrders-演示例子 <a class="header-anchor" href="#ignoremoveorders-演示例子" aria-label="Permalink to "ignoreMoveOrders-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">joinsGroupFormations:true</span></span></code></pre></div><hr><h3 id="ignoremoveorders" tabindex="-1">ignoreMoveOrders <a class="header-anchor" href="#ignoremoveorders" aria-label="Permalink to "ignoreMoveOrders""></a></h3><h4 id="ignoremoveorders-代码简介" tabindex="-1">ignoreMoveOrders-代码简介 <a class="header-anchor" href="#ignoremoveorders-代码简介" aria-label="Permalink to "ignoreMoveOrders-代码简介""></a></h4><p>代码:ignoreMoveOrders 中文释义:忽略移动指令:布尔值 隶属于:杂项</p><h4 id="ignoremoveorders-要点指示" tabindex="-1">ignoreMoveOrders-要点指示 <a class="header-anchor" href="#ignoremoveorders-要点指示" aria-label="Permalink to "ignoreMoveOrders-要点指示""></a></h4><p>定义单位是否接受来自玩家的移动指令</p><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>这个代码只能和<strong>moveSpeed:0</strong>一起使用,但是可以通过setUnitStats改变移动速度</p></div><h4 id="ignoremoveorders-演示例子" tabindex="-1">ignoreMoveOrders-演示例子 <a class="header-anchor" href="#ignoremoveorders-演示例子" aria-label="Permalink to "ignoreMoveOrders-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[movement]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">ignoreMoveOrders:true</span></span>
|
<span class="line"><span style="color:#A6ACCD;">ignoreMoveOrders:true</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">moveSpeed:0</span></span></code></pre></div><hr>`,175),i=[l];function s(r,d,c,p,h,m){return a(),t("div",null,i)}const v=e(o,[["render",s]]);export{u as __pageData,v as default};
|
<span class="line"><span style="color:#A6ACCD;">moveSpeed:0</span></span></code></pre></div><hr>`,175),i=[l];function s(r,d,c,p,h,m){return t(),a("div",null,i)}const v=e(o,[["render",s]]);export{u as __pageData,v as default};
|
|
@ -1 +1 @@
|
||||||
import{_ as e,o as a,c as t,X as n}from"./chunks/framework.d377e0cc.js";const u=JSON.parse('{"title":"[movement]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/movement.md","filePath":"src/Unit/movement.md"}'),o={name:"src/Unit/movement.md"},l=n("",175),i=[l];function s(r,d,c,p,h,m){return a(),t("div",null,i)}const v=e(o,[["render",s]]);export{u as __pageData,v as default};
|
import{_ as e,c as a,o as t,V as n}from"./chunks/framework.fcc0bf38.js";const u=JSON.parse('{"title":"[movement]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/movement.md","filePath":"src/Unit/movement.md"}'),o={name:"src/Unit/movement.md"},l=n("",175),i=[l];function s(r,d,c,p,h,m){return t(),a("div",null,i)}const v=e(o,[["render",s]]);export{u as __pageData,v as default};
|
File diff suppressed because one or more lines are too long
|
@ -1 +1 @@
|
||||||
import{_ as a,o as e,c as s,X as t}from"./chunks/framework.d377e0cc.js";const m=JSON.parse('{"title":"spawnUnits&spawnProjectiles","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/spawnunit_spawnprojectile.md","filePath":"src/Unit/spawnunit_spawnprojectile.md"}'),o={name:"src/Unit/spawnunit_spawnprojectile.md"},n=t("",169),r=[n];function i(l,p,c,d,h,f){return e(),s("div",null,r)}const b=a(o,[["render",i]]);export{m as __pageData,b as default};
|
import{_ as a,c as e,o as s,V as t}from"./chunks/framework.fcc0bf38.js";const m=JSON.parse('{"title":"spawnUnits&spawnProjectiles","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/spawnunit_spawnprojectile.md","filePath":"src/Unit/spawnunit_spawnprojectile.md"}'),o={name:"src/Unit/spawnunit_spawnprojectile.md"},n=t("",169),r=[n];function i(l,p,c,d,h,f){return s(),e("div",null,r)}const b=a(o,[["render",i]]);export{m as __pageData,b as default};
|
|
@ -1,4 +1,4 @@
|
||||||
import{_ as a,o as e,c as t,X as n}from"./chunks/framework.d377e0cc.js";const m=JSON.parse('{"title":"[turret]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/turret.md","filePath":"src/Unit/turret.md"}'),i={name:"src/Unit/turret.md"},r=n(`<h1 id="turret-组" tabindex="-1"><strong>[turret]组</strong> <a class="header-anchor" href="#turret-组" aria-label="Permalink to "**[turret]组**""></a></h1><h2 id="第一类-重复代码组" tabindex="-1">第一类-重复代码组 <a class="header-anchor" href="#第一类-重复代码组" aria-label="Permalink to "第一类-重复代码组""></a></h2><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>以下的代码与<code>攻击节</code>重复,在此处可以覆盖<code>攻击节</code>的全局数据</p></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>炮塔上限为31个,显示顺序为ini顺序递增</p></div><h3 id="canshoot" tabindex="-1">canShoot <a class="header-anchor" href="#canshoot" aria-label="Permalink to "canShoot""></a></h3><h4 id="canshoot-代码简介" tabindex="-1">canShoot-代码简介 <a class="header-anchor" href="#canshoot-代码简介" aria-label="Permalink to "canShoot-代码简介""></a></h4><p>代码:canShoot 中文释义:可攻击 类型:布尔值bool 隶属于:重复代码组</p><h4 id="canshoot-要点指示" tabindex="-1">canShoot-要点指示 <a class="header-anchor" href="#canshoot-要点指示" aria-label="Permalink to "canShoot-要点指示""></a></h4><p>设置该炮塔是否能攻击</p><h4 id="canshoot-演示例子" tabindex="-1">canShoot-演示例子 <a class="header-anchor" href="#canshoot-演示例子" aria-label="Permalink to "canShoot-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
|
import{_ as a,c as e,o as t,V as n}from"./chunks/framework.fcc0bf38.js";const m=JSON.parse('{"title":"[turret]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/turret.md","filePath":"src/Unit/turret.md"}'),i={name:"src/Unit/turret.md"},r=n(`<h1 id="turret-组" tabindex="-1"><strong>[turret]组</strong> <a class="header-anchor" href="#turret-组" aria-label="Permalink to "**[turret]组**""></a></h1><h2 id="第一类-重复代码组" tabindex="-1">第一类-重复代码组 <a class="header-anchor" href="#第一类-重复代码组" aria-label="Permalink to "第一类-重复代码组""></a></h2><div class="tip custom-block"><p class="custom-block-title">TIP</p><p>以下的代码与<code>攻击节</code>重复,在此处可以覆盖<code>攻击节</code>的全局数据</p></div><div class="warning custom-block"><p class="custom-block-title">WARNING</p><p>炮塔上限为31个,显示顺序为ini顺序递增</p></div><h3 id="canshoot" tabindex="-1">canShoot <a class="header-anchor" href="#canshoot" aria-label="Permalink to "canShoot""></a></h3><h4 id="canshoot-代码简介" tabindex="-1">canShoot-代码简介 <a class="header-anchor" href="#canshoot-代码简介" aria-label="Permalink to "canShoot-代码简介""></a></h4><p>代码:canShoot 中文释义:可攻击 类型:布尔值bool 隶属于:重复代码组</p><h4 id="canshoot-要点指示" tabindex="-1">canShoot-要点指示 <a class="header-anchor" href="#canshoot-要点指示" aria-label="Permalink to "canShoot-要点指示""></a></h4><p>设置该炮塔是否能攻击</p><h4 id="canshoot-演示例子" tabindex="-1">canShoot-演示例子 <a class="header-anchor" href="#canshoot-演示例子" aria-label="Permalink to "canShoot-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">canShoot:true</span></span></code></pre></div><hr><h3 id="canattacklandunits" tabindex="-1">canAttackLandUnits <a class="header-anchor" href="#canattacklandunits" aria-label="Permalink to "canAttackLandUnits""></a></h3><h4 id="canattacklandunits-代码简介" tabindex="-1">canAttackLandUnits-代码简介 <a class="header-anchor" href="#canattacklandunits-代码简介" aria-label="Permalink to "canAttackLandUnits-代码简介""></a></h4><p>代码:canAttackLandUnits 中文释义:可攻击表面单位 类型:逻辑布尔值LogicBoolean 隶属于:重复代码组</p><h4 id="canattacklandunits-要点指示" tabindex="-1">canAttackLandUnits-要点指示 <a class="header-anchor" href="#canattacklandunits-要点指示" aria-label="Permalink to "canAttackLandUnits-要点指示""></a></h4><p>设置该炮塔是否能对地面目标攻击</p><h4 id="canattacklandunits-演示例子" tabindex="-1">canAttackLandUnits-演示例子 <a class="header-anchor" href="#canattacklandunits-演示例子" aria-label="Permalink to "canAttackLandUnits-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">canShoot:true</span></span></code></pre></div><hr><h3 id="canattacklandunits" tabindex="-1">canAttackLandUnits <a class="header-anchor" href="#canattacklandunits" aria-label="Permalink to "canAttackLandUnits""></a></h3><h4 id="canattacklandunits-代码简介" tabindex="-1">canAttackLandUnits-代码简介 <a class="header-anchor" href="#canattacklandunits-代码简介" aria-label="Permalink to "canAttackLandUnits-代码简介""></a></h4><p>代码:canAttackLandUnits 中文释义:可攻击表面单位 类型:逻辑布尔值LogicBoolean 隶属于:重复代码组</p><h4 id="canattacklandunits-要点指示" tabindex="-1">canAttackLandUnits-要点指示 <a class="header-anchor" href="#canattacklandunits-要点指示" aria-label="Permalink to "canAttackLandUnits-要点指示""></a></h4><p>设置该炮塔是否能对地面目标攻击</p><h4 id="canattacklandunits-演示例子" tabindex="-1">canAttackLandUnits-演示例子 <a class="header-anchor" href="#canattacklandunits-演示例子" aria-label="Permalink to "canAttackLandUnits-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">canAttackLandUnits:if self.ammo>=2</span></span></code></pre></div><hr><h3 id="canattackflyingunits" tabindex="-1">canAttackFlyingUnits <a class="header-anchor" href="#canattackflyingunits" aria-label="Permalink to "canAttackFlyingUnits""></a></h3><h4 id="canattackflyingunits-代码简介" tabindex="-1">canAttackFlyingUnits-代码简介 <a class="header-anchor" href="#canattackflyingunits-代码简介" aria-label="Permalink to "canAttackFlyingUnits-代码简介""></a></h4><p>代码:canAttackFlyingUnits 中文释义:可攻击空中单位 类型:逻辑布尔值LogicBoolean 隶属于:重复代码组</p><h4 id="canattackflyingunits-要点指示" tabindex="-1">canAttackFlyingUnits-要点指示 <a class="header-anchor" href="#canattackflyingunits-要点指示" aria-label="Permalink to "canAttackFlyingUnits-要点指示""></a></h4><p>设置该炮塔是否能对空中目标攻击</p><h4 id="canattackflyingunits-演示例子" tabindex="-1">canAttackFlyingUnits-演示例子 <a class="header-anchor" href="#canattackflyingunits-演示例子" aria-label="Permalink to "canAttackFlyingUnits-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">canAttackLandUnits:if self.ammo>=2</span></span></code></pre></div><hr><h3 id="canattackflyingunits" tabindex="-1">canAttackFlyingUnits <a class="header-anchor" href="#canattackflyingunits" aria-label="Permalink to "canAttackFlyingUnits""></a></h3><h4 id="canattackflyingunits-代码简介" tabindex="-1">canAttackFlyingUnits-代码简介 <a class="header-anchor" href="#canattackflyingunits-代码简介" aria-label="Permalink to "canAttackFlyingUnits-代码简介""></a></h4><p>代码:canAttackFlyingUnits 中文释义:可攻击空中单位 类型:逻辑布尔值LogicBoolean 隶属于:重复代码组</p><h4 id="canattackflyingunits-要点指示" tabindex="-1">canAttackFlyingUnits-要点指示 <a class="header-anchor" href="#canattackflyingunits-要点指示" aria-label="Permalink to "canAttackFlyingUnits-要点指示""></a></h4><p>设置该炮塔是否能对空中目标攻击</p><h4 id="canattackflyingunits-演示例子" tabindex="-1">canAttackFlyingUnits-演示例子 <a class="header-anchor" href="#canattackflyingunits-演示例子" aria-label="Permalink to "canAttackFlyingUnits-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">canAttackFlyingUnits:if self.ammo>=2</span></span></code></pre></div><hr><h3 id="canattackunderwaterunits" tabindex="-1">canAttackUnderwaterUnits <a class="header-anchor" href="#canattackunderwaterunits" aria-label="Permalink to "canAttackUnderwaterUnits""></a></h3><h4 id="canattackunderwaterunits-代码简介" tabindex="-1">canAttackUnderwaterUnits-代码简介 <a class="header-anchor" href="#canattackunderwaterunits-代码简介" aria-label="Permalink to "canAttackUnderwaterUnits-代码简介""></a></h4><p>代码:canAttackUnderwaterUnits 中文释义:可攻击水下单位 类型:逻辑布尔值LogicBoolean 隶属于:重复代码组</p><h4 id="canattackunderwaterunits-要点指示" tabindex="-1">canAttackUnderwaterUnits-要点指示 <a class="header-anchor" href="#canattackunderwaterunits-要点指示" aria-label="Permalink to "canAttackUnderwaterUnits-要点指示""></a></h4><p>设置该炮塔是否能对潜水目标攻击</p><h4 id="canattackunderwaterunits-演示例子" tabindex="-1">canAttackUnderwaterUnits-演示例子 <a class="header-anchor" href="#canattackunderwaterunits-演示例子" aria-label="Permalink to "canAttackUnderwaterUnits-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">canAttackFlyingUnits:if self.ammo>=2</span></span></code></pre></div><hr><h3 id="canattackunderwaterunits" tabindex="-1">canAttackUnderwaterUnits <a class="header-anchor" href="#canattackunderwaterunits" aria-label="Permalink to "canAttackUnderwaterUnits""></a></h3><h4 id="canattackunderwaterunits-代码简介" tabindex="-1">canAttackUnderwaterUnits-代码简介 <a class="header-anchor" href="#canattackunderwaterunits-代码简介" aria-label="Permalink to "canAttackUnderwaterUnits-代码简介""></a></h4><p>代码:canAttackUnderwaterUnits 中文释义:可攻击水下单位 类型:逻辑布尔值LogicBoolean 隶属于:重复代码组</p><h4 id="canattackunderwaterunits-要点指示" tabindex="-1">canAttackUnderwaterUnits-要点指示 <a class="header-anchor" href="#canattackunderwaterunits-要点指示" aria-label="Permalink to "canAttackUnderwaterUnits-要点指示""></a></h4><p>设置该炮塔是否能对潜水目标攻击</p><h4 id="canattackunderwaterunits-演示例子" tabindex="-1">canAttackUnderwaterUnits-演示例子 <a class="header-anchor" href="#canattackunderwaterunits-演示例子" aria-label="Permalink to "canAttackUnderwaterUnits-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
|
||||||
|
@ -74,4 +74,4 @@ import{_ as a,o as e,c as t,X as n}from"./chunks/framework.d377e0cc.js";const m=
|
||||||
<span class="line"><span style="color:#A6ACCD;">onShoot_playAnimation:1</span></span></code></pre></div><hr><h3 id="onshoot-freezebodymovementfor-1" tabindex="-1">onShoot_freezeBodyMovementFor <a class="header-anchor" href="#onshoot-freezebodymovementfor-1" aria-label="Permalink to "onShoot_freezeBodyMovementFor""></a></h3><h4 id="onshoot-freezebodymovementfor-代码简介-1" tabindex="-1">onShoot_freezeBodyMovementFor-代码简介 <a class="header-anchor" href="#onshoot-freezebodymovementfor-代码简介-1" aria-label="Permalink to "onShoot_freezeBodyMovementFor-代码简介""></a></h4><p>代码:onShoot_freezeBodyMovementFor 中文释义:开火冻结移动 类型:浮点值float 隶属于:触发相关组</p><h4 id="onshoot-freezebodymovementfor-要点指示-1" tabindex="-1">onShoot_freezeBodyMovementFor-要点指示 <a class="header-anchor" href="#onshoot-freezebodymovementfor-要点指示-1" aria-label="Permalink to "onShoot_freezeBodyMovementFor-要点指示""></a></h4><p>设置炮塔开火后无法移动的时间,按帧计时</p><h4 id="onshoot-freezebodymovementfor-演示例子-1" tabindex="-1">onShoot_freezeBodyMovementFor-演示例子 <a class="header-anchor" href="#onshoot-freezebodymovementfor-演示例子-1" aria-label="Permalink to "onShoot_freezeBodyMovementFor-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">onShoot_playAnimation:1</span></span></code></pre></div><hr><h3 id="onshoot-freezebodymovementfor-1" tabindex="-1">onShoot_freezeBodyMovementFor <a class="header-anchor" href="#onshoot-freezebodymovementfor-1" aria-label="Permalink to "onShoot_freezeBodyMovementFor""></a></h3><h4 id="onshoot-freezebodymovementfor-代码简介-1" tabindex="-1">onShoot_freezeBodyMovementFor-代码简介 <a class="header-anchor" href="#onshoot-freezebodymovementfor-代码简介-1" aria-label="Permalink to "onShoot_freezeBodyMovementFor-代码简介""></a></h4><p>代码:onShoot_freezeBodyMovementFor 中文释义:开火冻结移动 类型:浮点值float 隶属于:触发相关组</p><h4 id="onshoot-freezebodymovementfor-要点指示-1" tabindex="-1">onShoot_freezeBodyMovementFor-要点指示 <a class="header-anchor" href="#onshoot-freezebodymovementfor-要点指示-1" aria-label="Permalink to "onShoot_freezeBodyMovementFor-要点指示""></a></h4><p>设置炮塔开火后无法移动的时间,按帧计时</p><h4 id="onshoot-freezebodymovementfor-演示例子-1" tabindex="-1">onShoot_freezeBodyMovementFor-演示例子 <a class="header-anchor" href="#onshoot-freezebodymovementfor-演示例子-1" aria-label="Permalink to "onShoot_freezeBodyMovementFor-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">onShoot_freezeBodyMovementFor:60</span></span></code></pre></div><hr><h3 id="onshoot-triggeractions" tabindex="-1">onShoot_triggerActions <a class="header-anchor" href="#onshoot-triggeractions" aria-label="Permalink to "onShoot_triggerActions""></a></h3><h4 id="onshoot-triggeractions-代码简介" tabindex="-1">onShoot_triggerActions-代码简介 <a class="header-anchor" href="#onshoot-triggeractions-代码简介" aria-label="Permalink to "onShoot_triggerActions-代码简介""></a></h4><p>代码:onShoot_triggerActions 中文释义:开火触发行动 类型:行动action 隶属于:触发相关组</p><h4 id="onshoot-triggeractions-要点指示" tabindex="-1">onShoot_triggerActions-要点指示 <a class="header-anchor" href="#onshoot-triggeractions-要点指示" aria-label="Permalink to "onShoot_triggerActions-要点指示""></a></h4><p>设置炮塔攻击时触发的行动</p><h4 id="onshoot-triggeractions-演示例子" tabindex="-1">onShoot_triggerActions-演示例子 <a class="header-anchor" href="#onshoot-triggeractions-演示例子" aria-label="Permalink to "onShoot_triggerActions-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">onShoot_freezeBodyMovementFor:60</span></span></code></pre></div><hr><h3 id="onshoot-triggeractions" tabindex="-1">onShoot_triggerActions <a class="header-anchor" href="#onshoot-triggeractions" aria-label="Permalink to "onShoot_triggerActions""></a></h3><h4 id="onshoot-triggeractions-代码简介" tabindex="-1">onShoot_triggerActions-代码简介 <a class="header-anchor" href="#onshoot-triggeractions-代码简介" aria-label="Permalink to "onShoot_triggerActions-代码简介""></a></h4><p>代码:onShoot_triggerActions 中文释义:开火触发行动 类型:行动action 隶属于:触发相关组</p><h4 id="onshoot-triggeractions-要点指示" tabindex="-1">onShoot_triggerActions-要点指示 <a class="header-anchor" href="#onshoot-triggeractions-要点指示" aria-label="Permalink to "onShoot_triggerActions-要点指示""></a></h4><p>设置炮塔攻击时触发的行动</p><h4 id="onshoot-triggeractions-演示例子" tabindex="-1">onShoot_triggerActions-演示例子 <a class="header-anchor" href="#onshoot-triggeractions-演示例子" aria-label="Permalink to "onShoot_triggerActions-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">onShoot_triggerActions:1</span></span></code></pre></div><hr><h3 id="unloaduptoxunitsandgiveattackorder" tabindex="-1">unloadUpToXUnitsAndGiveAttackOrder <a class="header-anchor" href="#unloaduptoxunitsandgiveattackorder" aria-label="Permalink to "unloadUpToXUnitsAndGiveAttackOrder""></a></h3><h4 id="unloaduptoxunitsandgiveattackorder-代码简介" tabindex="-1">unloadUpToXUnitsAndGiveAttackOrder-代码简介 <a class="header-anchor" href="#unloaduptoxunitsandgiveattackorder-代码简介" aria-label="Permalink to "unloadUpToXUnitsAndGiveAttackOrder-代码简介""></a></h4><p>代码:unloadUpToXUnitsAndGiveAttackOrder 中文释义:卸载n个单位并赋予攻击目标 类型:整数int 隶属于:触发相关组</p><h4 id="unloaduptoxunitsandgiveattackorder-要点指示" tabindex="-1">unloadUpToXUnitsAndGiveAttackOrder-要点指示 <a class="header-anchor" href="#unloaduptoxunitsandgiveattackorder-要点指示" aria-label="Permalink to "unloadUpToXUnitsAndGiveAttackOrder-要点指示""></a></h4><p>在炮塔开火处卸载n个单位 同时提供路径让它们攻击炮塔指定的目标</p><h4 id="unloaduptoxunitsandgiveattackorder-演示例子" tabindex="-1">unloadUpToXUnitsAndGiveAttackOrder-演示例子 <a class="header-anchor" href="#unloaduptoxunitsandgiveattackorder-演示例子" aria-label="Permalink to "unloadUpToXUnitsAndGiveAttackOrder-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
|
<span class="line"><span style="color:#A6ACCD;">onShoot_triggerActions:1</span></span></code></pre></div><hr><h3 id="unloaduptoxunitsandgiveattackorder" tabindex="-1">unloadUpToXUnitsAndGiveAttackOrder <a class="header-anchor" href="#unloaduptoxunitsandgiveattackorder" aria-label="Permalink to "unloadUpToXUnitsAndGiveAttackOrder""></a></h3><h4 id="unloaduptoxunitsandgiveattackorder-代码简介" tabindex="-1">unloadUpToXUnitsAndGiveAttackOrder-代码简介 <a class="header-anchor" href="#unloaduptoxunitsandgiveattackorder-代码简介" aria-label="Permalink to "unloadUpToXUnitsAndGiveAttackOrder-代码简介""></a></h4><p>代码:unloadUpToXUnitsAndGiveAttackOrder 中文释义:卸载n个单位并赋予攻击目标 类型:整数int 隶属于:触发相关组</p><h4 id="unloaduptoxunitsandgiveattackorder-要点指示" tabindex="-1">unloadUpToXUnitsAndGiveAttackOrder-要点指示 <a class="header-anchor" href="#unloaduptoxunitsandgiveattackorder-要点指示" aria-label="Permalink to "unloadUpToXUnitsAndGiveAttackOrder-要点指示""></a></h4><p>在炮塔开火处卸载n个单位 同时提供路径让它们攻击炮塔指定的目标</p><h4 id="unloaduptoxunitsandgiveattackorder-演示例子" tabindex="-1">unloadUpToXUnitsAndGiveAttackOrder-演示例子 <a class="header-anchor" href="#unloaduptoxunitsandgiveattackorder-演示例子" aria-label="Permalink to "unloadUpToXUnitsAndGiveAttackOrder-演示例子""></a></h4><div class="language-ini"><button title="Copy Code" class="copy"></button><span class="lang">ini</span><pre class="shiki material-theme-palenight"><code><span class="line"><span style="color:#89DDFF;">[turret_1]</span></span>
|
||||||
<span class="line"><span style="color:#A6ACCD;">unloadUpToXUnitsAndGiveAttackOrder:1</span></span></code></pre></div><hr>`,584),l=[r];function o(s,c,h,d,p,u){return e(),t("div",null,l)}const b=a(i,[["render",o]]);export{m as __pageData,b as default};
|
<span class="line"><span style="color:#A6ACCD;">unloadUpToXUnitsAndGiveAttackOrder:1</span></span></code></pre></div><hr>`,584),l=[r];function o(s,c,h,d,p,u){return t(),e("div",null,l)}const b=a(i,[["render",o]]);export{m as __pageData,b as default};
|
|
@ -1 +1 @@
|
||||||
import{_ as a,o as e,c as t,X as n}from"./chunks/framework.d377e0cc.js";const m=JSON.parse('{"title":"[turret]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/turret.md","filePath":"src/Unit/turret.md"}'),i={name:"src/Unit/turret.md"},r=n("",584),l=[r];function o(s,c,h,d,p,u){return e(),t("div",null,l)}const b=a(i,[["render",o]]);export{m as __pageData,b as default};
|
import{_ as a,c as e,o as t,V as n}from"./chunks/framework.fcc0bf38.js";const m=JSON.parse('{"title":"[turret]组","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"src/Unit/turret.md","filePath":"src/Unit/turret.md"}'),i={name:"src/Unit/turret.md"},r=n("",584),l=[r];function o(s,c,h,d,p,u){return t(),e("div",null,l)}const b=a(i,[["render",o]]);export{m as __pageData,b as default};
|
|
@ -1 +1 @@
|
||||||
{"cos.md":"c9635cbb","index.md":"f503aa80","src_debug_test.md":"5eb6a57a","src_map_tsada.md":"a63d0bb5","src_rw-engine_quick-start.md":"921da213","src_unit_canbuild.md":"c15db697","src_unit_attack.md":"883ec5ec","src_unit_attachment.md":"278f3818","api-dev.md":"8b5f2e0b","src_unit_spawnunit_spawnprojectile.md":"d50999f9","src_unit_loginboolean.md":"13e85825","src_unit_core.md":"cb3c28d4","src_unit_graphics.md":"8ae7ad98","src_unit_movement.md":"ca621e83","src_unit_turret.md":"d370e296"}
|
{"cos.md":"4cc32180","src_debug_test.md":"501f237e","src_rw-engine_quick-start.md":"a2b4fb07","index.md":"7a8a1ce3","src_map_tsada.md":"95d6f1dd","api-dev.md":"447d3fe1","src_unit_attack.md":"9d57709d","src_unit_canbuild.md":"4f4f1935","src_unit_movement.md":"3ff8232f","src_unit_spawnunit_spawnprojectile.md":"5ab9c365","src_unit_graphics.md":"6e56c4ad","src_unit_attachment.md":"2e3e2a58","src_unit_core.md":"9eb125bd","src_unit_turret.md":"149ab95e","src_unit_loginboolean.md":"33f0931b"}
|
||||||
|
|
18
index.html
18
index.html
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user