[add] first

This commit is contained in:
建喵 2022-04-15 14:36:40 +08:00
commit b32400ec60
24 changed files with 20562 additions and 0 deletions

24
.gitignore vendored Normal file
View File

@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?

3
.vscode/extensions.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"recommendations": ["johnsoncodehk.volar"]
}

16
README.md Normal file
View File

@ -0,0 +1,16 @@
# Vue 3 + TypeScript + Vite
This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
## Recommended IDE Setup
- [VS Code](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar)
## Type Support For `.vue` Imports in TS
Since TypeScript cannot handle type information for `.vue` imports, they are shimmed to be a generic Vue component type by default. In most cases this is fine if you don't really care about component prop types outside of templates. However, if you wish to get actual prop types in `.vue` imports (for example to get props validation when using manual `h(...)` calls), you can enable Volar's Take Over mode by following these steps:
1. Run `Extensions: Show Built-in Extensions` from VS Code's command palette, look for `TypeScript and JavaScript Language Features`, then right click and select `Disable (Workspace)`. By default, Take Over mode will enable itself if the default TypeScript extension is disabled.
2. Reload the VS Code window by running `Developer: Reload Window` from the command palette.
You can learn more about Take Over mode [here](https://github.com/johnsoncodehk/volar/discussions/471).

94
index.html Normal file
View File

@ -0,0 +1,94 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>BJ Casino 測試</title>
<!-- SmartAppBanner -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black" />
<meta name="apple-itunes-app" content="app-id=1593328573">
<meta name="google-play-app" content="app-id=org.vicking.bj_casino">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="/banner/smart-app-banner.css">
<link rel="apple-touch-icon" href="./src/assets/icon.png">
<link rel="android-touch-icon" href="./src/assets/icon.png" />
<link rel="windows-touch-icon" href="./src/assets/icon.png" />
<style type="text/css">
* {
box-sizing: border-box;
}
</style>
<script type="text/javascript" src="./banner/smart-app-banner.js"></script>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
<!--没有应用下载应用-->
<script>
var u = navigator.userAgent;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1;
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
(function () {
OnLoad();
function OnLoad() {
_clearAllCookie();
_addMeta();
}
function _clearAllCookie() {
document.cookie.split(";").forEach(function (c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); });
}
function _addMeta() {
if (isiOS) {
var headNode = document.getElementsByTagName("head")[0];
var sbNode = document.createElement('meta');
sbNode.name = 'apple-itunes-app';
sbNode.content = 'app-id=1593328573';
headNode.appendChild(sbNode);
run('ios');
} else if (isAndroid) {
run('android');
} else {
run('android');
}
}
banner = undefined;
function run(force) {
var n = document.querySelector('.smartbanner');
if (n) {
n.parentNode.removeChild(n);
}
new SmartBanner({
title: '爆機娛樂城',
author: 'Vic King Electronics Co., Ltd.',
button: '下載',
scale: 'auto',
// url: './ToAppStore.html',
force: force,
daysHidden: 0,
daysReminder: 0,
layer: false,
hideOnInstall: false,
iOSUniversalApp: true,
});
};
})()
</script>
</html>

19282
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

27
package.json Normal file
View File

@ -0,0 +1,27 @@
{
"name": "bj-casino-deeplink",
"private": true,
"version": "0.0.0",
"scripts": {
"dev": "vite",
"serve": "vue-cli-service serve",
"build": "vite build",
"build1": "vue-tsc --noEmit && vite build",
"preview": "vite preview"
},
"dependencies": {
"@vue/cli": "^5.0.4",
"@vue/compiler-sfc": "^3.2.32",
"bootstrap": "^5.1.3",
"element-plus": "^2.1.9",
"moment": "^2.29.2",
"vue": "^3.2.25"
},
"devDependencies": {
"@vitejs/plugin-vue": "^2.3.1",
"typescript": "^4.5.4",
"vite": "^2.9.2",
"vue-tsc": "^0.29.8"
},
"@vue/compiler-sfc": "file: node_modules/@vue/compiler-sfc"
}

View File

@ -0,0 +1,292 @@
.smartbanner-show {
margin-top: 80px;
}
.smartbanner-show .smartbanner {
display: block;
}
/** Default **/
.smartbanner {
position: absolute;
left: 0;
top: 0;
display: none;
width: 100%;
height: 80px;
line-height: 80px;
font-family: 'Helvetica Neue', sans-serif;
background: #f4f4f4;
z-index: 9998;
-webkit-font-smoothing: antialiased;
overflow: hidden;
-webkit-text-size-adjust: none;
}
.smartbanner-container {
margin: 0 auto;
white-space: nowrap;
}
.smartbanner-close {
display: inline-block;
vertical-align: middle;
margin: 0 5px 0 5px;
font-family: 'ArialRoundedMTBold', Arial;
font-size: 20px;
text-align: center;
color: #888;
text-decoration: none;
border: 0;
border-radius: 14px;
-webkit-font-smoothing: subpixel-antialiased;
}
.smartbanner-close:active,
.smartbanner-close:hover {
color: #aaa;
}
.smartbanner-icon {
display: inline-block;
vertical-align: middle;
width: 57px;
height: 57px;
margin-right: 12px;
background-size: cover;
border-radius: 10px;
}
.smartbanner-info {
display: inline-block;
vertical-align: middle;
width: 44%;
font-size: 11px;
line-height: 1.2em;
font-weight: bold;
}
.smartbanner-title {
font-size: 13px;
line-height: 18px;
}
.smartbanner-button {
position: absolute;
right: 20px;
top: 0;
bottom: 0;
margin: auto 0;
height: 24px;
font-size: 14px;
line-height: 24px;
text-align: center;
font-weight: bold;
color: #6a6a6a;
text-transform: uppercase;
text-decoration: none;
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8);
}
.smartbanner-button:active,
.smartbanner-button:hover {
color: #aaa;
}
.smartbanner-button-text {
}
.smartbanner-button-text:active,
.smartbanner-button-text:hover {
}
/** iOS **/
.smartbanner-ios {
background: #f4f4f4;
background: linear-gradient(to bottom, #f4f4f4, #cdcdcd);
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
line-height: 80px;
}
.smartbanner-ios .smartbanner-close {
border: 0;
width: 18px;
height: 18px;
line-height: 18px;
color: #888;
text-shadow: 0 1px 0 white;
}
.smartbanner-ios .smartbanner-close:active,
.smartbanner-ios .smartbanner-close:hover {
color: #aaa;
}
.smartbanner-ios .smartbanner-icon {
background: rgba(0, 0, 0, 0.6);
background-size: cover;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
}
.smartbanner-ios .smartbanner-info {
color: #6a6a6a;
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8);
}
.smartbanner-ios .smartbanner-title {
color: #4d4d4d;
font-weight: bold;
}
.smartbanner-ios .smartbanner-button {
padding: 0 10px;
min-width: 10%;
color: #6a6a6a;
background: #efefef;
background: linear-gradient(to bottom, #efefef, #dcdcdc);
border-radius: 3px;
box-shadow: inset 0 0 0 1px #bfbfbf, 0 1px 0 rgba(255, 255, 255, 0.6), 0 2px 0 rgba(255, 255, 255, 0.7) inset;
}
.smartbanner-ios .smartbanner-button:active,
.smartbanner-ios .smartbanner-button:hover {
background: #dcdcdc;
background: linear-gradient(to bottom, #dcdcdc, #efefef);
}
.smartbanner-ios .smartbanner-button-text {
}
.smartbanner-ios .smartbanner-button-text:active,
.smartbanner-ios .smartbanner-button-text:hover {
}
/** Android **/
.smartbanner-android {
background: #3d3d3d url(data:image/gif;base64,R0lGODlhCAAIAIABAFVVVf///yH5BAEHAAEALAAAAAAIAAgAAAINRG4XudroGJBRsYcxKAA7);
box-shadow: inset 0 4px 0 #88b131;
line-height: 82px;
}
.smartbanner-android .smartbanner-close {
border: 0;
width: 17px;
height: 17px;
line-height: 17px;
margin-right: 7px;
color: #b1b1b3;
background: #1c1e21;
text-shadow: 0 1px 1px #000;
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.8) inset, 0 1px 1px rgba(255, 255, 255, 0.3);
}
.smartbanner-android .smartbanner-close:active,
.smartbanner-android .smartbanner-close:hover {
color: #eee;
}
.smartbanner-android .smartbanner-icon {
background-color: transparent;
box-shadow: none;
}
.smartbanner-android .smartbanner-info {
color: #ccc;
text-shadow: 0 1px 2px #000;
}
.smartbanner-android .smartbanner-title {
color: #fff;
font-weight: bold;
}
.smartbanner-android .smartbanner-button {
min-width: 12%;
color: #d1d1d1;
padding: 0;
background: none;
border-radius: 0;
box-shadow: 0 0 0 1px #333, 0 0 0 2px #dddcdc;
}
.smartbanner-android .smartbanner-button:active,
.smartbanner-android .smartbanner-button:hover {
background: none;
}
.smartbanner-android .smartbanner-button-text {
text-align: center;
display: block;
padding: 0 10px;
background: #42b6c9;
background: linear-gradient(to bottom, #42b6c9, #39a9bb);
text-transform: none;
text-shadow: none;
box-shadow: none;
}
.smartbanner-android .smartbanner-button-text:active,
.smartbanner-android .smartbanner-button-text:hover {
background: #2ac7e1;
}
/** Windows **/
.smartbanner-windows {
background: #f4f4f4;
background: linear-gradient(to bottom, #f4f4f4, #cdcdcd);
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
line-height: 80px;
}
.smartbanner-windows .smartbanner-close {
border: 0;
width: 18px;
height: 18px;
line-height: 18px;
color: #888;
text-shadow: 0 1px 0 white;
}
.smartbanner-windows .smartbanner-close:active,
.smartbanner-windows .smartbanner-close:hover {
color: #aaa;
}
.smartbanner-windows .smartbanner-icon {
background: rgba(0, 0, 0, 0.6);
background-size: cover;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
}
.smartbanner-windows .smartbanner-info {
color: #6a6a6a;
text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8);
}
.smartbanner-windows .smartbanner-title {
color: #4d4d4d;
font-weight: bold;
}
.smartbanner-windows .smartbanner-button {
padding: 0 10px;
min-width: 10%;
color: #6a6a6a;
background: #efefef;
background: linear-gradient(to bottom, #efefef, #dcdcdc);
border-radius: 3px;
box-shadow: inset 0 0 0 1px #bfbfbf, 0 1px 0 rgba(255, 255, 255, 0.6), 0 2px 0 rgba(255, 255, 255, 0.7) inset;
}
.smartbanner-windows .smartbanner-button:active,
.smartbanner-windows .smartbanner-button:hover {
background: #dcdcdc;
background: linear-gradient(to bottom, #dcdcdc, #efefef);
}
.smartbanner-windows .smartbanner-button-text {
}
.smartbanner-windows .smartbanner-button-text:active,
.smartbanner-windows .smartbanner-button-text:hover {
}

View File

@ -0,0 +1,59 @@
/*
UAParser.js v0.7.18
Lightweight JavaScript-based User-Agent string parser
https://github.com/faisalman/ua-parser-js
Copyright ? 2012-2016 Faisal Salman <fyzlman@gmail.com>
Dual licensed under GPLv2 or MIT
*/
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(a,d,b){a!=Array.prototype&&a!=Object.prototype&&(a[d]=b.value)};$jscomp.getGlobal=function(a){return"undefined"!=typeof window&&window===a?a:"undefined"!=typeof global&&null!=global?global:a};$jscomp.global=$jscomp.getGlobal(this);
$jscomp.polyfill=function(a,d,b,e){if(d){b=$jscomp.global;a=a.split(".");for(e=0;e<a.length-1;e++){var c=a[e];c in b||(b[c]={});b=b[c]}a=a[a.length-1];e=b[a];d=d(e);d!=e&&null!=d&&$jscomp.defineProperty(b,a,{configurable:!0,writable:!0,value:d})}};$jscomp.polyfill("Object.getOwnPropertySymbols",function(a){return a?a:function(){return[]}},"es6","es5");$jscomp.SYMBOL_PREFIX="jscomp_symbol_";
$jscomp.initSymbol=function(){$jscomp.initSymbol=function(){};$jscomp.global.Symbol||($jscomp.global.Symbol=$jscomp.Symbol)};$jscomp.Symbol=function(){var a=0;return function(d){return $jscomp.SYMBOL_PREFIX+(d||"")+a++}}();
$jscomp.initSymbolIterator=function(){$jscomp.initSymbol();var a=$jscomp.global.Symbol.iterator;a||(a=$jscomp.global.Symbol.iterator=$jscomp.global.Symbol("iterator"));"function"!=typeof Array.prototype[a]&&$jscomp.defineProperty(Array.prototype,a,{configurable:!0,writable:!0,value:function(){return $jscomp.arrayIterator(this)}});$jscomp.initSymbolIterator=function(){}};$jscomp.arrayIterator=function(a){var d=0;return $jscomp.iteratorPrototype(function(){return d<a.length?{done:!1,value:a[d++]}:{done:!0}})};
$jscomp.iteratorPrototype=function(a){$jscomp.initSymbolIterator();a={next:a};a[$jscomp.global.Symbol.iterator]=function(){return this};return a};$jscomp.iteratorFromArray=function(a,d){$jscomp.initSymbolIterator();a instanceof String&&(a+="");var b=0,e={next:function(){if(b<a.length){var c=b++;return{value:d(c,a[c]),done:!1}}e.next=function(){return{done:!0,value:void 0}};return e.next()}};e[Symbol.iterator]=function(){return e};return e};
$jscomp.polyfill("Array.prototype.keys",function(a){return a?a:function(){return $jscomp.iteratorFromArray(this,function(a){return a})}},"es6","es3");$jscomp.owns=function(a,d){return Object.prototype.hasOwnProperty.call(a,d)};$jscomp.assign="function"==typeof Object.assign?Object.assign:function(a,d){for(var b=1;b<arguments.length;b++){var e=arguments[b];if(e)for(var c in e)$jscomp.owns(e,c)&&(a[c]=e[c])}return a};$jscomp.polyfill("Object.assign",function(a){return a||$jscomp.assign},"es6","es3");
(function(a){"object"===typeof exports&&"undefined"!==typeof module?module.exports=a():"function"===typeof define&&define.amd?define([],a):("undefined"!==typeof window?window:"undefined"!==typeof global?global:"undefined"!==typeof self?self:this).SmartBanner=a()})(function(){return function(){function a(d,b,e){function c(f,k){if(!b[f]){if(!d[f]){var r="function"==typeof require&&require;if(!k&&r)return r(f,!0);if(m)return m(f,!0);k=Error("Cannot find module '"+f+"'");throw k.code="MODULE_NOT_FOUND",
k;}k=b[f]={exports:{}};d[f][0].call(k.exports,function(a){return c(d[f][1][a]||a)},k,k.exports,a,d,b,e)}return b[f].exports}for(var m="function"==typeof require&&require,f=0;f<e.length;f++)c(e[f]);return c}return a}()({1:[function(a,d,b){var e=a("object-assign"),c=a("component-query"),m=a("get-doc"),f=a("cookie-cutter"),n=a("ua-parser-js"),k=(navigator.language||navigator.userLanguage||navigator.browserLanguage).slice(-2)||"us",r=m&&m.documentElement,g={ios:{appMeta:"apple-itunes-app",iconRels:["apple-touch-icon-precomposed",
"apple-touch-icon"],getStoreLink:function(){return"https://itunes.apple.com/"+this.options.appStoreLanguage+"/app/id"+this.appId+"?mt=8"}},android:{appMeta:"google-play-app",iconRels:["android-touch-icon","apple-touch-icon-precomposed","apple-touch-icon"],getStoreLink:function(){return"http://play.google.com/store/apps/details?id="+this.appId}},windows:{appMeta:"msApplication-ID",iconRels:["windows-touch-icon","apple-touch-icon-precomposed","apple-touch-icon"],getStoreLink:function(){return"http://www.windowsphone.com/s?appid="+
this.appId}}};a=function(a){var c=n(navigator.userAgent);this.options=e({},{daysHidden:15,daysReminder:90,appStoreLanguage:k,button:"OPEN",store:{ios:"On the App Store",android:"In Google Play",windows:"In the Windows Store"},price:{ios:"FREE",android:"FREE",windows:"FREE"},theme:"",icon:"",force:""},a||{});this.options.force?this.type=this.options.force:"Windows Phone"===c.os.name||"Windows Mobile"===c.os.name?this.type="windows":"iOS"===c.os.name?this.type="ios":"Android"===c.os.name&&(this.type=
"android");if(this.type&&this.options.store[this.type]){this.appMeta=g[this.type].appMeta;this.parseAppId();a="ios"===this.type&&"Mobile Safari"===c.browser.name&&6<=parseInt(c.os.version,10);var l=navigator.standalone,b=f.get(this.appId+"-smartbanner-closed"),d=f.get(this.appId+"-smartbanner-installed");a||l||b||d||(e(this,g[this.type]),!this.appId&&"IOS"===c.os.name&&"Safari"===c.browser.name)||(this.create(),this.show())}};a.prototype={constructor:a,create:function(){var a=this.getStoreLink(),
e=this.options.price[this.type]+" - "+this.options.store[this.type];if(this.options.icon)var f=this.options.icon;else for(var b=0;b<this.iconRels.length;b++){var d=c('link[rel="'+this.iconRels[b]+'"]');if(d){f=d.getAttribute("href");break}}var t=m.createElement("div");t.className="smartbanner smartbanner-"+(this.options.theme||this.type);t.innerHTML='<div class="smartbanner-container"><a href="javascript:void(0);" class="smartbanner-close">&times;</a><span class="smartbanner-icon" style="background-image: url('+
f+')"></span><div class="smartbanner-info"><div class="smartbanner-title">'+this.options.title+"</div><div>"+this.options.author+"</div><span>"+e+'</span></div><a href="'+a+'" class="smartbanner-button"><span class="smartbanner-button-text">'+this.options.button+"</span></a></div>";m.body?m.body.appendChild(t):m&&m.addEventListener("DOMContentLoaded",function(){m.body.appendChild(t)});c(".smartbanner-button",t).addEventListener("click",this.install.bind(this),!1);c(".smartbanner-close",t).addEventListener("click",
this.close.bind(this),!1)},hide:function(){r.classList.remove("smartbanner-show");if("function"===typeof this.options.close)return this.options.close()},show:function(){r.classList.add("smartbanner-show");if("function"===typeof this.options.show)return this.options.show()},close:function(){this.hide();f.set(this.appId+"-smartbanner-closed","true",{path:"/",expires:new Date(Number(new Date)+864E5*this.options.daysHidden)});if("function"===typeof this.options.close)return this.options.close()},install:function(){this.hide();
f.set(this.appId+"-smartbanner-installed","true",{path:"/",expires:new Date(Number(new Date)+864E5*this.options.daysReminder)});if("function"===typeof this.options.close)return this.options.close()},parseAppId:function(){var a=c('meta[name="'+this.appMeta+'"]');if(a)return this.appId="windows"===this.type?a.getAttribute("content"):/app-id=([^\s,]+)/.exec(a.getAttribute("content"))[1]}};d.exports=a},{"component-query":2,"cookie-cutter":3,"get-doc":4,"object-assign":6,"ua-parser-js":7}],2:[function(a,
d,b){function e(a,e){return e.querySelector(a)}b=d.exports=function(a,b){b=b||document;return e(a,b)};b.all=function(a,e){e=e||document;return e.querySelectorAll(a)};b.engine=function(a){if(!a.one)throw Error(".one callback required");if(!a.all)throw Error(".all callback required");e=a.one;b.all=a.all;return b}},{}],3:[function(a,d,b){b=d.exports=function(a){a||(a={});"string"===typeof a&&(a={cookie:a});void 0===a.cookie&&(a.cookie="");return{get:function(c){for(var b=a.cookie.split(/;\s*/),f=0;f<
b.length;f++){var e=b[f].split("=");if(unescape(e[0])===c)return unescape(e[1])}},set:function(c,b,f){f||(f={});c=escape(c)+"="+escape(b);f.expires&&(c+="; expires="+f.expires);f.path&&(c+="; path="+escape(f.path));f.domain&&(c+="; domain="+escape(f.domain));f.secure&&(c+="; secure");return a.cookie=c}}};"undefined"!==typeof document&&(a=b(document),b.get=a.get,b.set=a.set)},{}],4:[function(a,d,b){a=a("has-dom");d.exports=a()?document:null},{"has-dom":5}],5:[function(a,d,b){d.exports=function(){return"undefined"!==
typeof window&&"undefined"!==typeof document&&"function"===typeof document.createElement}},{}],6:[function(a,d,b){var e=Object.getOwnPropertySymbols,c=Object.prototype.hasOwnProperty,m=Object.prototype.propertyIsEnumerable;d.exports=function(){try{if(!Object.assign)return!1;var a=new String("abc");a[5]="de";if("5"===Object.getOwnPropertyNames(a)[0])return!1;var c={};for(a=0;10>a;a++)c["_"+String.fromCharCode(a)]=a;if("0123456789"!==Object.getOwnPropertyNames(c).map(function(a){return c[a]}).join(""))return!1;
var b={};"abcdefghijklmnopqrst".split("").forEach(function(a){b[a]=a});return"abcdefghijklmnopqrst"!==Object.keys(Object.assign({},b)).join("")?!1:!0}catch(r){return!1}}()?Object.assign:function(a,b){if(null===a||void 0===a)throw new TypeError("Object.assign cannot be called with null or undefined");var d=Object(a);for(var f,g=1;g<arguments.length;g++){var p=Object(arguments[g]);for(var n in p)c.call(p,n)&&(d[n]=p[n]);if(e){f=e(p);for(var l=0;l<f.length;l++)m.call(p,f[l])&&(d[f[l]]=p[f[l]])}}return d}},
{}],7:[function(a,d,b){(function(a,c){var e={extend:function(a,c){var b={},e;for(e in a)b[e]=c[e]&&0===c[e].length%2?c[e].concat(a[e]):a[e];return b},has:function(a,c){return"string"===typeof a?-1!==c.toLowerCase().indexOf(a.toLowerCase()):!1},lowerize:function(a){return a.toLowerCase()},major:function(a){return"string"===typeof a?a.replace(/[^\d\.]/g,"").split(".")[0]:c},trim:function(a){return a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}},f=function(a,b){for(var e=0,d,f,l,h,g,q;e<b.length&&
!g;){var k=b[e],m=b[e+1];for(d=f=0;d<k.length&&!g;)if(g=k[d++].exec(a))for(l=0;l<m.length;l++)q=g[++f],h=m[l],"object"===typeof h&&0<h.length?2==h.length?this[h[0]]="function"==typeof h[1]?h[1].call(this,q):h[1]:3==h.length?this[h[0]]="function"!==typeof h[1]||h[1].exec&&h[1].test?q?q.replace(h[1],h[2]):c:q?h[1].call(this,q,h[2]):c:4==h.length&&(this[h[0]]=q?h[3].call(this,q.replace(h[1],h[2])):c):this[h]=q?q:c;e+=2}},n=function(a,b){for(var d in b)if("object"===typeof b[d]&&0<b[d].length)for(var f=
0;f<b[d].length;f++){if(e.has(b[d][f],a))return"?"===d?c:d}else if(e.has(b[d],a))return"?"===d?c:d;return a},k={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2E3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2","8.1":"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},r={browser:[[/(opera\smini)\/([\w\.-]+)/i,/(opera\s[mobiletab]+).+version\/([\w\.-]+)/i,/(opera).+version\/([\w\.]+)/i,/(opera)[\/\s]+([\w\.]+)/i],["name","version"],[/(opios)[\/\s]+([\w\.]+)/i],[["name","Opera Mini"],"version"],
[/\s(opr)\/([\w\.]+)/i],[["name","Opera"],"version"],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?([\w\.]*)/i,/(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?([\w\.]*)/i,/(?:ms|\()(ie)\s([\w\.]+)/i,/(rekonq)\/([\w\.]*)/i,/(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark)\/([\w\.-]+)/i],["name","version"],[/(trident).+rv[:\s]([\w\.]+).+like\sgecko/i],[["name","IE"],"version"],[/(edge|edgios|edgea)\/((\d+)?[\w\.]+)/i],
[["name","Edge"],"version"],[/(yabrowser)\/([\w\.]+)/i],[["name","Yandex"],"version"],[/(puffin)\/([\w\.]+)/i],[["name","Puffin"],"version"],[/((?:[\s\/])uc?\s?browser|(?:juc.+)ucweb)[\/\s]?([\w\.]+)/i],[["name","UCBrowser"],"version"],[/(comodo_dragon)\/([\w\.]+)/i],[["name",/_/g," "],"version"],[/(micromessenger)\/([\w\.]+)/i],[["name","WeChat"],"version"],[/(qqbrowserlite)\/([\w\.]+)/i],["name","version"],[/(QQ)\/([\d\.]+)/i],["name","version"],[/m?(qqbrowser)[\/\s]?([\w\.]+)/i],["name","version"],
[/(BIDUBrowser)[\/\s]?([\w\.]+)/i],["name","version"],[/(2345Explorer)[\/\s]?([\w\.]+)/i],["name","version"],[/(MetaSr)[\/\s]?([\w\.]+)/i],["name"],[/(LBBROWSER)/i],["name"],[/xiaomi\/miuibrowser\/([\w\.]+)/i],["version",["name","MIUI Browser"]],[/;fbav\/([\w\.]+);/i],["version",["name","Facebook"]],[/headlesschrome(?:\/([\w\.]+)|\s)/i],["version",["name","Chrome Headless"]],[/\swv\).+(chrome)\/([\w\.]+)/i],[["name",/(.+)/,"$1 WebView"],"version"],[/((?:oculus|samsung)browser)\/([\w\.]+)/i],[["name",
/(.+(?:g|us))(.+)/,"$1 $2"],"version"],[/android.+version\/([\w\.]+)\s+(?:mobile\s?safari|safari)*/i],["version",["name","Android Browser"]],[/(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?([\w\.]+)/i],["name","version"],[/(dolfin)\/([\w\.]+)/i],[["name","Dolphin"],"version"],[/((?:android.+)crmo|crios)\/([\w\.]+)/i],[["name","Chrome"],"version"],[/(coast)\/([\w\.]+)/i],[["name","Opera Coast"],"version"],[/fxios\/([\w\.-]+)/i],["version",["name","Firefox"]],[/version\/([\w\.]+).+?mobile\/\w+\s(safari)/i],
["version",["name","Mobile Safari"]],[/version\/([\w\.]+).+?(mobile\s?safari|safari)/i],["version","name"],[/webkit.+?(gsa)\/([\w\.]+).+?(mobile\s?safari|safari)(\/[\w\.]+)/i],[["name","GSA"],"version"],[/webkit.+?(mobile\s?safari|safari)(\/[\w\.]+)/i],["name",["version",n,{"1.0":"/8","1.2":"/1","1.3":"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(konqueror)\/([\w\.]+)/i,/(webkit|khtml)\/([\w\.]+)/i],["name","version"],[/(navigator|netscape)\/([\w\.-]+)/i],[["name","Netscape"],
"version"],[/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?([\w\.\+]+)/i,/(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([\w\.-]+)$/i,/(mozilla)\/([\w\.]+).+rv:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir)[\/\s]?([\w\.]+)/i,/(links)\s\(([\w\.]+)/i,/(gobrowser)\/?([\w\.]*)/i,/(ice\s?browser)\/v?([\w\._]+)/i,/(mosaic)[\/\s]([\w\.]+)/i],["name","version"]],cpu:[[/(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\)]/i],
[["architecture","amd64"]],[/(ia32(?=;))/i],[["architecture",e.lowerize]],[/((?:i[346]|x)86)[;\)]/i],[["architecture","ia32"]],[/windows\s(ce|mobile);\sppc;/i],[["architecture","arm"]],[/((?:ppc|powerpc)(?:64)?)(?:\smac|;|\))/i],[["architecture",/ower/,"",e.lowerize]],[/(sun4\w)[;\)]/i],[["architecture","sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|arm(?:64|(?=v\d+;))|(?=atmel\s)avr|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i],[["architecture",e.lowerize]]],device:[[/\((ipad|playbook);[\w\s\);-]+(rim|apple)/i],
["model","vendor",["type","tablet"]],[/applecoremedia\/[\w\.]+ \((ipad)/],["model",["vendor","Apple"],["type","tablet"]],[/(apple\s{0,1}tv)/i],[["model","Apple TV"],["vendor","Apple"]],[/(archos)\s(gamepad2?)/i,/(hp).+(touchpad)/i,/(hp).+(tablet)/i,/(kindle)\/([\w\.]+)/i,/\s(nook)[\w\s]+build\/(\w+)/i,/(dell)\s(strea[kpr\s\d]*[\dko])/i],["vendor","model",["type","tablet"]],[/(kf[A-z]+)\sbuild\/.+silk\//i],["model",["vendor","Amazon"],["type","tablet"]],[/(sd|kf)[0349hijorstuw]+\sbuild\/.+silk\//i],
[["model",n,{"Fire Phone":["SD","KF"]}],["vendor","Amazon"],["type","mobile"]],[/\((ip[honed|\s\w*]+);.+(apple)/i],["model","vendor",["type","mobile"]],[/\((ip[honed|\s\w*]+);/i],["model",["vendor","Apple"],["type","mobile"]],[/(blackberry)[\s-]?(\w+)/i,/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[\s_-]?([\w-]*)/i,/(hp)\s([\w\s]+\w)/i,/(asus)-?(\w+)/i],["vendor","model",["type","mobile"]],[/\(bb10;\s(\w+)/i],["model",["vendor","BlackBerry"],["type","mobile"]],
[/android.+(transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7|padfone)/i],["model",["vendor","Asus"],["type","tablet"]],[/(sony)\s(tablet\s[ps])\sbuild\//i,/(sony)?(?:sgp.+)\sbuild\//i],[["vendor","Sony"],["model","Xperia Tablet"],["type","tablet"]],[/android.+\s([c-g]\d{4}|so[-l]\w+)\sbuild\//i],["model",["vendor","Sony"],["type","mobile"]],[/\s(ouya)\s/i,/(nintendo)\s([wids3u]+)/i],["vendor","model",["type","console"]],[/android.+;\s(shield)\sbuild/i],["model",["vendor","Nvidia"],["type","console"]],
[/(playstation\s[34portablevi]+)/i],["model",["vendor","Sony"],["type","console"]],[/(sprint\s(\w+))/i],[["vendor",n,{HTC:"APA",Sprint:"Sprint"}],["model",n,{"Evo Shift 4G":"7373KT"}],["type","mobile"]],[/(lenovo)\s?(S(?:5000|6000)+(?:[-][\w+]))/i],["vendor","model",["type","tablet"]],[/(htc)[;_\s-]+([\w\s]+(?=\))|\w+)*/i,/(zte)-(\w*)/i,/(alcatel|geeksphone|lenovo|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]*)/i],["vendor",["model",/_/g," "],["type","mobile"]],[/(nexus\s9)/i],["model",["vendor","HTC"],
["type","tablet"]],[/d\/huawei([\w\s-]+)[;\)]/i,/(nexus\s6p)/i],["model",["vendor","Huawei"],["type","mobile"]],[/(microsoft);\s(lumia[\s\w]+)/i],["vendor","model",["type","mobile"]],[/[\s\(;](xbox(?:\sone)?)[\s\);]/i],["model",["vendor","Microsoft"],["type","console"]],[/(kin\.[onetw]{3})/i],[["model",/\./g," "],["vendor","Microsoft"],["type","mobile"]],[/\s(milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?:?(\s4g)?)[\w\s]+build\//i,/mot[\s-]?(\w*)/i,/(XT\d{3,4}) build\//i,/(nexus\s6)/i],["model",
["vendor","Motorola"],["type","mobile"]],[/android.+\s(mz60\d|xoom[\s2]{0,2})\sbuild\//i],["model",["vendor","Motorola"],["type","tablet"]],[/hbbtv\/\d+\.\d+\.\d+\s+\([\w\s]*;\s*(\w[^;]*);([^;]*)/i],[["vendor",e.trim],["model",e.trim],["type","smarttv"]],[/hbbtv.+maple;(\d+)/i],[["model",/^/,"SmartTV"],["vendor","Samsung"],["type","smarttv"]],[/\(dtv[\);].+(aquos)/i],["model",["vendor","Sharp"],["type","smarttv"]],[/android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n\d+|sgh-t8[56]9|nexus 10))/i,/((SM-T\w+))/i],
[["vendor","Samsung"],"model",["type","tablet"]],[/smart-tv.+(samsung)/i],["vendor",["type","smarttv"],"model"],[/((s[cgp]h-\w+|gt-\w+|galaxy\snexus|sm-\w[\w\d]+))/i,/(sam[sung]*)[\s-]*(\w+-?[\w-]*)/i,/sec-((sgh\w+))/i],[["vendor","Samsung"],"model",["type","mobile"]],[/sie-(\w*)/i],["model",["vendor","Siemens"],["type","mobile"]],[/(maemo|nokia).*(n900|lumia\s\d+)/i,/(nokia)[\s_-]?([\w-]*)/i],[["vendor","Nokia"],"model",["type","mobile"]],[/android\s3\.[\s\w;-]{10}(a\d{3})/i],["model",["vendor",
"Acer"],["type","tablet"]],[/android.+([vl]k\-?\d{3})\s+build/i],["model",["vendor","LG"],["type","tablet"]],[/android\s3\.[\s\w;-]{10}(lg?)-([06cv9]{3,4})/i],[["vendor","LG"],"model",["type","tablet"]],[/(lg) netcast\.tv/i],["vendor","model",["type","smarttv"]],[/(nexus\s[45])/i,/lg[e;\s\/-]+(\w*)/i,/android.+lg(\-?[\d\w]+)\s+build/i],["model",["vendor","LG"],["type","mobile"]],[/android.+(ideatab[a-z0-9\-\s]+)/i],["model",["vendor","Lenovo"],["type","tablet"]],[/linux;.+((jolla));/i],["vendor",
"model",["type","mobile"]],[/((pebble))app\/[\d\.]+\s/i],["vendor","model",["type","wearable"]],[/android.+;\s(oppo)\s?([\w\s]+)\sbuild/i],["vendor","model",["type","mobile"]],[/crkey/i],[["model","Chromecast"],["vendor","Google"]],[/android.+;\s(glass)\s\d/i],["model",["vendor","Google"],["type","wearable"]],[/android.+;\s(pixel c)\s/i],["model",["vendor","Google"],["type","tablet"]],[/android.+;\s(pixel xl|pixel)\s/i],["model",["vendor","Google"],["type","mobile"]],[/android.+;\s(\w+)\s+build\/hm\1/i,
/android.+(hm[\s\-_]*note?[\s_]*(?:\d\w)?)\s+build/i,/android.+(mi[\s\-_]*(?:one|one[\s_]plus|note lte)?[\s_]*(?:\d?\w?)[\s_]*(?:plus)?)\s+build/i,/android.+(redmi[\s\-_]*(?:note)?(?:[\s_]*[\w\s]+))\s+build/i],[["model",/_/g," "],["vendor","Xiaomi"],["type","mobile"]],[/android.+(mi[\s\-_]*(?:pad)(?:[\s_]*[\w\s]+))\s+build/i],[["model",/_/g," "],["vendor","Xiaomi"],["type","tablet"]],[/android.+;\s(m[1-5]\snote)\sbuild/i],["model",["vendor","Meizu"],["type","tablet"]],[/android.+a000(1)\s+build/i,
/android.+oneplus\s(a\d{4})\s+build/i],["model",["vendor","OnePlus"],["type","mobile"]],[/android.+[;\/]\s*(RCT[\d\w]+)\s+build/i],["model",["vendor","RCA"],["type","tablet"]],[/android.+[;\/\s]+(Venue[\d\s]{2,7})\s+build/i],["model",["vendor","Dell"],["type","tablet"]],[/android.+[;\/]\s*(Q[T|M][\d\w]+)\s+build/i],["model",["vendor","Verizon"],["type","tablet"]],[/android.+[;\/]\s+(Barnes[&\s]+Noble\s+|BN[RT])(V?.*)\s+build/i],[["vendor","Barnes & Noble"],"model",["type","tablet"]],[/android.+[;\/]\s+(TM\d{3}.*\b)\s+build/i],
["model",["vendor","NuVision"],["type","tablet"]],[/android.+;\s(k88)\sbuild/i],["model",["vendor","ZTE"],["type","tablet"]],[/android.+[;\/]\s*(gen\d{3})\s+build.*49h/i],["model",["vendor","Swiss"],["type","mobile"]],[/android.+[;\/]\s*(zur\d{3})\s+build/i],["model",["vendor","Swiss"],["type","tablet"]],[/android.+[;\/]\s*((Zeki)?TB.*\b)\s+build/i],["model",["vendor","Zeki"],["type","tablet"]],[/(android).+[;\/]\s+([YR]\d{2})\s+build/i,/android.+[;\/]\s+(Dragon[\-\s]+Touch\s+|DT)(\w{5})\sbuild/i],
[["vendor","Dragon Touch"],"model",["type","tablet"]],[/android.+[;\/]\s*(NS-?\w{0,9})\sbuild/i],["model",["vendor","Insignia"],["type","tablet"]],[/android.+[;\/]\s*((NX|Next)-?\w{0,9})\s+build/i],["model",["vendor","NextBook"],["type","tablet"]],[/android.+[;\/]\s*(Xtreme_)?(V(1[045]|2[015]|30|40|60|7[05]|90))\s+build/i],[["vendor","Voice"],"model",["type","mobile"]],[/android.+[;\/]\s*(LVTEL\-)?(V1[12])\s+build/i],[["vendor","LvTel"],"model",["type","mobile"]],[/android.+[;\/]\s*(V(100MD|700NA|7011|917G).*\b)\s+build/i],
["model",["vendor","Envizen"],["type","tablet"]],[/android.+[;\/]\s*(Le[\s\-]+Pan)[\s\-]+(\w{1,9})\s+build/i],["vendor","model",["type","tablet"]],[/android.+[;\/]\s*(Trio[\s\-]*.*)\s+build/i],["model",["vendor","MachSpeed"],["type","tablet"]],[/android.+[;\/]\s*(Trinity)[\-\s]*(T\d{3})\s+build/i],["vendor","model",["type","tablet"]],[/android.+[;\/]\s*TU_(1491)\s+build/i],["model",["vendor","Rotor"],["type","tablet"]],[/android.+(KS(.+))\s+build/i],["model",["vendor","Amazon"],["type","tablet"]],
[/android.+(Gigaset)[\s\-]+(Q\w{1,9})\s+build/i],["vendor","model",["type","tablet"]],[/\s(tablet|tab)[;\/]/i,/\s(mobile)(?:[;\/]|\ssafari)/i],[["type",e.lowerize],"vendor","model"],[/(android[\w\.\s\-]{0,9});.+build/i],["model",["vendor","Generic"]]],engine:[[/windows.+\sedge\/([\w\.]+)/i],["version",["name","EdgeHTML"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i,/(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i,/(icab)[\/\s]([23]\.[\d\.]+)/i],["name","version"],
[/rv:([\w\.]{1,9}).+(gecko)/i],["version","name"]],os:[[/microsoft\s(windows)\s(vista|xp)/i],["name","version"],[/(windows)\snt\s6\.2;\s(arm)/i,/(windows\sphone(?:\sos)*)[\s\/]?([\d\.\s\w]*)/i,/(windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i],["name",["version",n,k]],[/(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i],[["name","Windows"],["version",n,k]],[/\((bb)(10);/i],[["name","BlackBerry"],"version"],[/(blackberry)\w*\/?([\w\.]*)/i,/(tizen)[\/\s]([\w\.]+)/i,/(android|webos|palm\sos|qnx|bada|rim\stablet\sos|meego|contiki)[\/\s-]?([\w\.]*)/i,
/linux;.+(sailfish);/i],["name","version"],[/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]*)/i],[["name","Symbian"],"version"],[/\((series40);/i],["name"],[/mozilla.+\(mobile;.+gecko.+firefox/i],[["name","Firefox OS"],"version"],[/(nintendo|playstation)\s([wids34portablevu]+)/i,/(mint)[\/\s\(]?(\w*)/i,/(mageia|vectorlinux)[;\s]/i,/(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?(?!chrom)([\w\.-]*)/i,/(hurd|linux)\s?([\w\.]*)/i,
/(gnu)\s?([\w\.]*)/i],["name","version"],[/(cros)\s[\w]+\s([\w\.]+\w)/i],[["name","Chromium OS"],"version"],[/(sunos)\s?([\w\.\d]*)/i],[["name","Solaris"],"version"],[/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]*)/i],["name","version"],[/(haiku)\s(\w+)/i],["name","version"],[/cfnetwork\/.+darwin/i,/ip[honead]{2,4}(?:.*os\s([\w]+)\slike\smac|;\sopera)/i],[["version",/_/g,"."],["name","iOS"]],[/(mac\sos\sx)\s?([\w\s\.]*)/i,/(macintosh|mac(?=_powerpc)\s)/i],[["name","Mac OS"],["version",/_/g,"."]],[/((?:open)?solaris)[\/\s-]?([\w\.]*)/i,
/(aix)\s((\d)(?=\.|\)|\s)[\w\.])*/i,/(plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos|openvms)/i,/(unix)\s?([\w\.]*)/i],["name","version"]]},g=function(b,d){"object"===typeof b&&(d=b,b=c);if(!(this instanceof g))return(new g(b,d)).getResult();var l=b||(a&&a.navigator&&a.navigator.userAgent?a.navigator.userAgent:""),k=d?e.extend(r,d):r;this.getBrowser=function(){var a={name:c,version:c};f.call(a,l,k.browser);a.major=e.major(a.version);return a};this.getCPU=function(){var a={architecture:c};f.call(a,
l,k.cpu);return a};this.getDevice=function(){var a={vendor:c,model:c,type:c};f.call(a,l,k.device);return a};this.getEngine=function(){var a={name:c,version:c};f.call(a,l,k.engine);return a};this.getOS=function(){var a={name:c,version:c};f.call(a,l,k.os);return a};this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}};this.getUA=function(){return l};this.setUA=function(a){l=a;return this};return this};
g.VERSION="0.7.18";g.BROWSER={NAME:"name",MAJOR:"major",VERSION:"version"};g.CPU={ARCHITECTURE:"architecture"};g.DEVICE={MODEL:"model",VENDOR:"vendor",TYPE:"type",CONSOLE:"console",MOBILE:"mobile",SMARTTV:"smarttv",TABLET:"tablet",WEARABLE:"wearable",EMBEDDED:"embedded"};g.ENGINE={NAME:"name",VERSION:"version"};g.OS={NAME:"name",VERSION:"version"};"undefined"!==typeof b?("undefined"!==typeof d&&d.exports&&(b=d.exports=g),b.UAParser=g):a&&(a.UAParser=g);var p=a&&(a.jQuery||a.Zepto);if("undefined"!==
typeof p){var u=new g;p.ua=u.getResult();p.ua.get=function(){return u.getUA()};p.ua.set=function(a){u.setUA(a);a=u.getResult();for(var b in a)p.ua[b]=a[b]}}})("object"===typeof window?window:this)},{}]},{},[1])(1)});

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

22
src/App.vue Normal file
View File

@ -0,0 +1,22 @@
<script setup lang="ts">
import BJ_Casino_Deeplink from './components/BJ_Casino_Deeplink.vue';
</script>
<template>
<BJ_Casino_Deeplink />
</template>
<style>
@import url('../src/assets/fonts.css');
@import url('../src/assets/mystyle.css');
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
/* text-align: center; */
color: #2671d4;
margin-top: 0px;
font-family: 'Zen Maru Gothic', sans-serif;
}
</style>

13
src/assets/fonts.css Normal file
View File

@ -0,0 +1,13 @@
@font-face {
/* 重命名字体名 */
font-family: 'Zen Maru Gothic';
src: url('./fonts/ZenMaruGothic-Regular.ttf');
font-weight: normal;
font-style: normal;
}
.btn {
font-size: 25px;
/* width: 200px; */
/* height: 60px; */
}

Binary file not shown.

BIN
src/assets/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 593 KiB

BIN
src/assets/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

62
src/assets/mystyle.css Normal file
View File

@ -0,0 +1,62 @@
/* The switch - the box around the slider */
.switch {
position: relative;
display: inline-block;
width: 60px;
height: 34px;
}
/* Hide default HTML checkbox */
.switch input {
opacity: 0;
width: 0;
height: 0;
}
/* The slider */
.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
-webkit-transition: .4s;
transition: .4s;
}
.slider:before {
position: absolute;
content: "";
height: 26px;
width: 26px;
left: 4px;
bottom: 4px;
background-color: white;
-webkit-transition: .4s;
transition: .4s;
}
input:checked + .slider {
background-color: #2196F3;
}
input:focus + .slider {
box-shadow: 0 0 1px #2196F3;
}
input:checked + .slider:before {
-webkit-transform: translateX(26px);
-ms-transform: translateX(26px);
transform: translateX(26px);
}
/* Rounded sliders */
.slider.round {
border-radius: 34px;
}
.slider.round:before {
border-radius: 50%;
}

View File

@ -0,0 +1,111 @@
<script setup lang="ts">
import { ref } from "vue";
import { BJ_Casino_Deeplink } from "../script/BJ_Casino_Deeplink";
const servertypeDefault = ref('')
const hostportDefault = ref('')
const patchDefault = ref('')
const servertype = ref(0)
const hostport = ref(0)
const patch = ref(0)
const iscustom = ref(false)
const input3 = ref('')
const self = {
servertypeDefault: servertypeDefault,
hostportDefault: hostportDefault,
patchDefault: patchDefault,
servertype: servertype,
hostport: hostport,
patch: patch,
iscustom: iscustom,
}
const Script = new BJ_Casino_Deeplink(self);
const ServertypeData = Script.GetServerType();
const HostportData = Script.GetHostport();
const Patch = Script.GetPatch();
</script>
<template>
<div>
<h1>
<div>
servertype:
<el-select v-model="servertypeDefault" filterable
@change="(data: any) => { Script.SelectServertype(data) }">
<el-option v-for="(item, index) in ServertypeData" :key="item.value" :label="item.label"
:value="item.value" />
</el-select>
</div>
<div>
hostport:
<el-select v-model="hostportDefault" filterable
@change="(data: any) => { Script.SelectHostport(data) }">
<el-option v-for="(item, index) in HostportData" :key="item.value" :label="item.label"
:value="item.value" />
</el-select>
</div>
<div>
patch:
<el-select v-model="patchDefault" filterable @change="(data: any) => { Script.SelectPatch(data) }">
<el-option v-for="(item, index) in Patch" :key="item.value" :label="item.label"
:value="item.value" />
</el-select>
</div>
<div>
使用自己帶進來的URL參數
<label class="switch">
<input type="checkbox" id="iscustom">
<span class="slider"></span>
</label>
</div>
<el-button type="success" @click.native="() => { Script.OnclickOpen() }" size="large" round>開啟遊戲&gt;&gt;
</el-button>
<br>
<el-button type="primary" @click.native="() => { Script.Install_Debug() }" size="large" round>
安裝Debug&gt;&gt;
</el-button>
<br>
<el-button type="primary" @click.native="() => { Script.Install_Release() }" size="large" round>
安裝Release&gt;&gt;</el-button>
<br>
<el-button type="primary" @click.native="() => { Script.Install_Release_Debug() }" size="large" round>
安裝Release(可看log)&gt;&gt;</el-button>
<br>
<el-button type="primary" @click.native="() => { Script.Install_B2B() }" size="large" round>安裝B2B&gt;&gt;
</el-button>
<br>
<el-button type="primary" @click.native="() => { Script.Install_JM() }" size="large" round>安裝建喵版&gt;&gt;
</el-button>
<br>
<el-button type="primary" @click.native="() => { Script.Install_Store() }" size="large" round>APP商店&gt;&gt;
</el-button>
<br>
<el-button type="primary" @click.native="() => { Script.Install_Bowei() }" size="large" round>安裝柏威版&gt;&gt;
</el-button>
<div>
<el-button type="warning" @click.native="() => { Script.Install_InternalTest(input3) }" size="large"
round>
前往
</el-button>
<el-input v-model="input3" placeholder="Google Play商店(內部測試) 版本號" class="input-with-select"
style="width:25%; font-size:25px; text-align">
</el-input>
Google Play商店(內部測試) 版本號
</div>
<br>
<a href="bjcasino://get/message?ClearAllCache">清空資料&gt;&gt;</a>
<br><br>
<a href="bjcasino://get/message?GetOtherUserProfile=100000185">跟建喵做朋友&gt;&gt;</a>
<br><br>
<a href="bjcasino://get/message?GetOtherUserProfile=100000157">跟豆豆做朋友&gt;&gt;</a>
<br><br>
<a href="bjcasino://get/message?GetOtherUserProfile=100000148">跟柏威做朋友&gt;&gt;</a>
<br><br>
<a href="bjcasino://get/message?OnClickChatAndChat=100000157">跟豆豆聊聊天&gt;&gt;</a>
<br><br>
<a href="http://org.vicking.bj">Test&gt;&gt;</a>
<!-- http://220.134.195.1/public/bonus_casino/html5/jianmiau/SD_Casino_Deeplink/apple-app-site-association -->
<br><br>
</h1>
</div>
</template>

View File

@ -0,0 +1,58 @@
<script setup lang="ts">
import { ref } from "vue";
import { HelloWorld } from "../script/HelloWorld";
const self = {
msg: ref('Hello Vue 3 + TypeScript'),
count: ref(0),
}
const HW = new HelloWorld(self);
</script>
<template>
<h1>{{ self.msg.value }}</h1>
<button @click="HW.HandleChangeString">handleChangeString</button>
<p>
Recommended IDE setup:
<a href="https://code.visualstudio.com/" target="_blank">VSCode</a>
+
<a href="https://github.com/johnsoncodehk/volar" target="_blank">Volar</a>
</p>
<p>
See
<code>README.md</code> for more information.
</p>
<p>
<a href="https://vitejs.dev/guide/features.html" target="_blank">Vite Docs</a>
|
<a href="https://v3.vuejs.org/" target="_blank">Vue 3 Docs</a>
</p>
count is: {{ self.count }}
<br />
<button type="button" @click="HW.AddCount">AddCount</button>
<p>
Edit
<code>components/HelloWorld.vue</code> to test hot module replacement.
</p>
</template>
<style scoped>
a {
color: #42b983;
}
label {
margin: 0 0.5em;
font-weight: bold;
}
code {
background-color: #eee;
padding: 2px 4px;
border-radius: 4px;
color: #304455;
}
</style>

8
src/env.d.ts vendored Normal file
View File

@ -0,0 +1,8 @@
/// <reference types="vite/client" />
declare module '*.vue' {
import type { DefineComponent } from 'vue'
// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types
const component: DefineComponent<{}, {}, any>
export default component
}

10
src/main.ts Normal file
View File

@ -0,0 +1,10 @@
import 'bootstrap';
import 'bootstrap/dist/css/bootstrap.min.css';
import ElementPlus from 'element-plus';
import 'element-plus/dist/index.css';
import locale from 'element-plus/lib/locale/lang/zh-tw';
import { createApp } from 'vue';
import App from './App.vue';
createApp(App).use(ElementPlus, { locale }).mount('#app')

View File

@ -0,0 +1,409 @@
export class BJ_Casino_Deeplink {
//#region public
public Servertype: any[] = [5, ["不選擇版本", "Web", "Out", "Submit", "Internal_release", "Internal_Dev"]];
public Hostport: any[] = [1, ["不選擇環境", "內版", "肉乾", "賴宏", "40", "送審", "外版", "testing1", "testing2", "testing3"]];
public Patch: any[] = [1, [
"不選擇資源路徑",
"內版",
"B2B",
"送審",
"外版",
"alex",
"bowei",
"建喵-內版",
"建喵-B2B",
"建喵-送審",
"建喵-外版"
]];
//#endregion
//#region private
private _client: any;
private _u = navigator.userAgent;
private _isAndroid = this._u.indexOf('Android') > -1 || this._u.indexOf('Adr') > -1;
private _isiOS = !!this._u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
//#endregion
//#region Lifecycle
/**
*
*/
constructor(client: any) {
this._client = client;
this.onLoad();
}
public onLoad() {
this._client.servertype.value = this.Servertype[0];
this._client.hostport.value = this.Hostport[0];
this._client.patch.value = this.Patch[0];
this._client.servertypeDefault.value = this.Servertype[1][this._client.servertype.value];
this._client.hostportDefault.value = this.Hostport[1][this._client.hostport.value];
this._client.patchDefault.value = this.Patch[1][this._client.patch.value];
};
//#endregion
//#region Get Data
public SelectServertype(data: any) {
// data为el-option上:value绑定的对象
this._client.servertype.value = data;
}
public SelectHostport(data: any) {
// data为el-option上:value绑定的对象
this._client.hostport.value = data;
}
public SelectPatch(data: any) {
// data为el-option上:value绑定的对象
this._client.patch.value = data;
}
//#endregion
//#region Get Data
public GetServerType(): { key: string; value: string; label: string; }[] {
const servertypes: any[] = this.Servertype[1];
let options: any[] = [];
for (let i: number = 0; i < servertypes.length; i++) {
const servertype = servertypes[i];
options.push({
value: i,
label: servertype
});
}
return options;
}
public GetHostport(): { key: string; value: string; label: string; }[] {
const hostports: any[] = this.Hostport[1];
let options: any[] = [];
for (let i: number = 0; i < hostports.length; i++) {
const hostport = hostports[i];
options.push({
value: i,
label: hostport
});
}
return options;
}
public GetPatch(): { key: string; value: string; label: string; }[] {
const patchs: any[] = this.Patch[1];
let options: any[] = [];
for (let i: number = 0; i < patchs.length; i++) {
const patch = patchs[i];
options.push({
value: i,
label: patch
});
}
return options;
}
//#endregion
//#region Custom
public Install_Debug() {
if (this._isAndroid) {
window.open("https://dl.dropboxusercontent.com/s/aoh4p9vs1lrofy2/BJ_Casino-debug.apk?v=" + Date.now(), '_self');
} else if (this._isiOS) {
window.open("itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/z390yysswqiiii4/BJ_Casino-debug.plist", '_self');
} else {
window.open("https://dl.dropboxusercontent.com/s/aoh4p9vs1lrofy2/BJ_Casino-debug.apk?v=" + Date.now(), '_blank');
window.open("https://dl.dropboxusercontent.com/s/4ki0rglk4w01ian/BJ_Casino-debug.ipa", '_blank');
}
}
public Install_Release() {
if (this._isAndroid) {
window.open("https://dl.dropboxusercontent.com/s/6mjrw913u6ma5w8/BJ_Casino-release.apk?v=" + Date.now(), '_self');
} else if (this._isiOS) {
window.open("itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/9qckj6t66jgb6rw/BJ_Casino-release.plist", '_self');
} else {
window.open("https://dl.dropboxusercontent.com/s/6mjrw913u6ma5w8/BJ_Casino-release.apk?v=" + Date.now(), '_blank');
window.open("https://dl.dropboxusercontent.com/s/hyyswyun3m42qbk/BJ_Casino-release.ipa?v=" + Date.now(), '_blank');
}
}
public Install_Release_Debug() {
if (this._isAndroid) {
window.open("https://dl.dropboxusercontent.com/s/16m2b5sncymj6f9/BJ_Casino-release-debug.apk?v=" + Date.now(), '_self');
} else if (this._isiOS) {
window.open("itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/wixnsxbc7ctk87f/BJ_Casino-release-debug.plist", '_self');
} else {
window.open("https://dl.dropboxusercontent.com/s/16m2b5sncymj6f9/BJ_Casino-release-debug.apk?v=" + Date.now(), '_blank');
window.open("https://dl.dropboxusercontent.com/s/f6qjm1gk8jjvmhx/BJ_Casino-release-debug.ipa?v=" + Date.now(), '_blank');
}
}
public Install_B2B() {
if (this._isAndroid) {
window.open("https://dl.dropboxusercontent.com/s/g66xrcdfj9e093i/BJ_Casino-B2B.apk?v=" + Date.now(), '_self');
} else if (this._isiOS) {
window.open("itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/rrs1ev3llogrm0a/BJ_Casino-B2B.plist", '_self');
} else {
window.open("https://dl.dropboxusercontent.com/s/g66xrcdfj9e093i/BJ_Casino-B2B.apk?v=" + Date.now(), '_blank');
window.open("https://dl.dropboxusercontent.com/s/fm79uc9ygrnzone/BJ_Casino-B2B.ipa?v=" + Date.now(), '_blank');
}
}
public Install_JM() {
if (this._isAndroid) {
window.open("https://dl.dropboxusercontent.com/s/9zlj6og4octmim8/BJ_Casino-JM.apk?v=" + Date.now(), '_self');
} else if (this._isiOS) {
window.open("itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/23mx7l7cchbvjcv/BJ_Casino-JM.plist", '_self');
} else {
window.open("https://dl.dropboxusercontent.com/s/9zlj6og4octmim8/BJ_Casino-JM.apk?v=" + Date.now(), '_blank');
window.open("https://dl.dropboxusercontent.com/s/dwlil2rbfe1wi13/BJ_Casino-JM.ipa?v=" + Date.now(), '_blank');
}
}
public Install_Store() {
if (this._isAndroid) {
window.open("https://play.google.com/store/apps/details?id=org.vicking.bj_casino", '_self');
} else if (this._isiOS) {
window.open("https://apps.apple.com/tw/app/爆機娛樂城/id1593328573", '_self');
} else {
window.open("https://play.google.com/store/apps/details?id=org.vicking.bj_casino", '_blank');
window.open("https://apps.apple.com/tw/app/爆機娛樂城/id1593328573", '_blank');
}
}
public Install_Bowei() {
if (this._isAndroid) {
window.open("http://220.134.195.1/public/bonus_casino/html5/bowei/BJ_Casino-debug.apk?v=" + Date.now(), '_self');
} else if (this._isiOS) {
alert("iOS不提供");
} else {
window.open("http://220.134.195.1/public/bonus_casino/html5/bowei/BJ_Casino-debug.apk?v=" + Date.now(), '_blank');
}
}
public Install_InternalTest(InternalTest: number): void {
// let InternalTest = document.getElementById("InternalTest").value;
// let InternalTest = "";
if (this._isAndroid && InternalTest) {
window.open(`https://play.google.com/apps/test/org.vicking.bj_casino/${InternalTest}`, '_self');
} else if (this._isiOS) {
alert("iOS不提供");
} else {
window.open(`https://play.google.com/apps/test/org.vicking.bj_casino/${InternalTest}`, '_blank');
}
}
public OnclickOpen() {
let hostport = this._client.hostport.value;
let servertype = +this._client.servertype.value;
let patch = +this._client.patch.value;
let E_iscustom: any = document.getElementById("iscustom");
let iscustom = E_iscustom.checked;
let URLscheme: any = {};
switch (servertype) {
case 0: {
break;
}
default: {
URLscheme["servertype"] = servertype;
break;
}
}
switch (hostport) {
// 不選擇環境
case 0: {
break;
}
// 外網連內版
case 1: {
URLscheme["host"] = "http://220.134.195.1";
URLscheme["port"] = "19005";
break;
}
// 肉乾
case 2: {
URLscheme["host"] = "http://192.168.5.230";
URLscheme["port"] = "9006";
break;
}
// 賴宏
case 3: {
URLscheme["host"] = "http://192.168.5.134";
URLscheme["port"] = "9005";
break;
}
// 40
case 4: {
URLscheme["host"] = "http://192.168.5.12";
URLscheme["port"] = "9487";
break;
}
// 送審
case 5: {
URLscheme["host"] = "https://submit.online-bj.com";
URLscheme["port"] = "9005";
break;
}
// 外版
case 6: {
URLscheme["host"] = "https://game.online-bj.com";
URLscheme["port"] = "9005";
break;
}
// testing1
case 7: {
URLscheme["host"] = "http://bj-testing1.casino.catan.com.tw";
URLscheme["port"] = "9005";
break;
}
// testing2
case 8: {
URLscheme["host"] = "http://bj-testing2.casino.catan.com.tw";
URLscheme["port"] = "9005";
break;
}
// testing3
case 9: {
URLscheme["host"] = "http://bj-testing3.casino.catan.com.tw";
URLscheme["port"] = "9005";
break;
}
default: {
break;
}
}
switch (patch) {
// "https://patch.online-bj.com/game/",
// "https://patch-submit.online-bj.com/game/",
// "http://220.134.195.1/public/bonus_casino/html5/alex/APPBundleTest/",
// "http://220.134.195.1/public/bonus_casino/html5/jianmiau/Bundle/",
// "http://patch-release.online-bj.com/",
// "http://patch-dev.online-bj.com/",
case 0: {
break;
}
// Dev
case 1: {
URLscheme["patch"] = "http://patch-dev.online-bj.com/";
break;
}
// B2B
case 2: {
URLscheme["patch"] = "http://patch-release.online-bj.com/";
break;
}
// 送審
case 3: {
URLscheme["patch"] = "https://patch-submit.online-bj.com/game/";
break;
}
// 外版
case 4: {
URLscheme["patch"] = "https://patch.online-bj.com/game/";
break;
}
// alex
case 5: {
URLscheme["patch"] = "http://220.134.195.1/public/bonus_casino/html5/alex/Bundle/";
break;
}
// bowei
case 6: {
URLscheme["patch"] = "http://220.134.195.1/public/bonus_casino/html5/bowei/Bundle/";
break;
}
// jianmiau-Dev
case 7: {
// URLscheme["patch"] = "http://220.134.195.1/public/bonus_casino/html5/jianmiau/Bundle/";
URLscheme["patch"] = "http://192.168.5.36/Source/_BJ_Source/BJ-Internal-Dev/";
break;
}
// jianmiau-Release
case 8: {
URLscheme["patch"] = "http://192.168.5.36/Source/_BJ_Source/BJ-Internal-Release/";
break;
}
// jianmiau-Submit
case 9: {
URLscheme["patch"] = "http://192.168.5.36/Source/_BJ_Source/BJ-Submit/";
break;
}
// jianmiau-Out
case 10: {
URLscheme["patch"] = "http://192.168.5.36/Source/_BJ_Source/BJ-Out/";
break;
}
default: {
break;
}
// case 0: {
// break;
// }
// default: {
// URLscheme["patch"] = document.getElementById("patch").options[patch].label;
// break;
// }
}
let url = "";
if (iscustom) {
let URLscheme = new URL(location.href);
if (this._isiOS || this._isAndroid) {
url = `bjcasino://get/message${URLscheme.search}`;
} else {
url = `http://192.168.5.108:7456/phone.html${URLscheme.search}`;
}
} else {
let _URLSearchParams = new URLSearchParams(URLscheme).toString();
let _decodeURI = decodeURIComponent(_URLSearchParams);
if (this._isiOS || this._isAndroid) {
url = `bjcasino://get/message${_decodeURI ? `?${_decodeURI}` : ""}`;
} else {
url = `http://192.168.5.108:7456/phone.html${_decodeURI ? `?${_decodeURI}` : ""}`;
}
}
if (this._isiOS || this._isAndroid) {
window.open(url, '_self');
} else {
window.open(url, '_blank');
}
}
//#endregion
}

28
src/script/HelloWorld.ts Normal file
View File

@ -0,0 +1,28 @@
export class HelloWorld {
//#region private
private _client: any;
//#endregion
//#region Lifecycle
/**
*
*/
constructor(client: any) {
this._client = client;
}
public HandleChangeString() {
this._client.msg.value = "ChangeString HelloWorld";
}
public AddCount() {
this._client.count.value++;
}
//#endregion
}

28
tsconfig.json Normal file
View File

@ -0,0 +1,28 @@
{
"compilerOptions": {
"target": "esnext",
"useDefineForClassFields": true,
"module": "esnext",
"moduleResolution": "node",
"strict": true,
"jsx": "preserve",
"sourceMap": true,
"resolveJsonModule": true,
"esModuleInterop": true,
"lib": [
"esnext",
"dom"
]
},
"include": [
"src/**/*.ts",
"src/**/*.d.ts",
"src/**/*.tsx",
"src/**/*.vue"
],
"references": [
{
"path": "./tsconfig.node.json"
}
]
}

8
tsconfig.node.json Normal file
View File

@ -0,0 +1,8 @@
{
"compilerOptions": {
"composite": true,
"module": "esnext",
"moduleResolution": "node"
},
"include": ["vite.config.ts"]
}

8
vite.config.ts Normal file
View File

@ -0,0 +1,8 @@
import vue from '@vitejs/plugin-vue'
import { defineConfig } from 'vite'
// https://vitejs.dev/config/
export default defineConfig({
base: "./",
plugins: [vue(),]
})