@windwalker-io/unicorn-next 0.1.19 → 0.1.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/_arrayPush.js +325 -108
- package/dist/chunks/_arrayPush.js.map +1 -1
- package/dist/chunks/_baseRest.js +155 -60
- package/dist/chunks/_baseRest.js.map +1 -1
- package/dist/chunks/_baseUnary.js +463 -0
- package/dist/chunks/_baseUnary.js.map +1 -0
- package/dist/chunks/_getPrototype.js +292 -100
- package/dist/chunks/_getPrototype.js.map +1 -1
- package/dist/chunks/alert-adapter.js +29 -0
- package/dist/chunks/alert-adapter.js.map +1 -0
- package/dist/chunks/alert.js +21 -0
- package/dist/chunks/alert.js.map +1 -0
- package/dist/chunks/arr.js +24 -0
- package/dist/chunks/arr.js.map +1 -0
- package/dist/chunks/button-radio.js +127 -145
- package/dist/chunks/button-radio.js.map +1 -1
- package/dist/chunks/checkboxes-multi-select.js +44 -43
- package/dist/chunks/checkboxes-multi-select.js.map +1 -1
- package/dist/chunks/chunk.js +24 -0
- package/dist/chunks/cloneDeep.js +679 -212
- package/dist/chunks/cloneDeep.js.map +1 -1
- package/dist/chunks/cropper.min.js +6 -5
- package/dist/chunks/cropper.min.js.map +1 -1
- package/dist/chunks/crypto.js +26 -0
- package/dist/chunks/crypto.js.map +1 -0
- package/dist/chunks/data.js +49 -0
- package/dist/chunks/data.js.map +1 -0
- package/dist/chunks/dom.js +128 -0
- package/dist/chunks/dom.js.map +1 -0
- package/dist/chunks/events.js +270 -0
- package/dist/chunks/events.js.map +1 -0
- package/dist/chunks/field-cascade-select.js +207 -250
- package/dist/chunks/field-cascade-select.js.map +1 -1
- package/dist/chunks/field-file-drag.js +175 -209
- package/dist/chunks/field-file-drag.js.map +1 -1
- package/dist/chunks/field-flatpickr.js +94 -898
- package/dist/chunks/field-flatpickr.js.map +1 -1
- package/dist/chunks/field-modal-select.js +728 -467
- package/dist/chunks/field-modal-select.js.map +1 -1
- package/dist/chunks/field-modal-tree.js +771 -766
- package/dist/chunks/field-modal-tree.js.map +1 -1
- package/dist/chunks/field-multi-uploader.js +249 -256
- package/dist/chunks/field-multi-uploader.js.map +1 -1
- package/dist/chunks/field-repeatable.js +111 -127
- package/dist/chunks/field-repeatable.js.map +1 -1
- package/dist/chunks/field-single-image-drag.js +286 -338
- package/dist/chunks/field-single-image-drag.js.map +1 -1
- package/dist/chunks/form.js +146 -159
- package/dist/chunks/form.js.map +1 -1
- package/dist/chunks/grid.js +349 -418
- package/dist/chunks/grid.js.map +1 -1
- package/dist/chunks/helper.js +39 -0
- package/dist/chunks/helper.js.map +1 -0
- package/dist/chunks/http-client.js +221 -211
- package/dist/chunks/http-client.js.map +1 -1
- package/dist/chunks/iframe-modal.js +95 -115
- package/dist/chunks/iframe-modal.js.map +1 -1
- package/dist/chunks/keep-tab.js +92 -101
- package/dist/chunks/keep-tab.js.map +1 -1
- package/dist/chunks/lang.js +250 -0
- package/dist/chunks/lang.js.map +1 -0
- package/dist/chunks/legacy.js +197 -201
- package/dist/chunks/legacy.js.map +1 -1
- package/dist/chunks/list-dependent.js +195 -228
- package/dist/chunks/list-dependent.js.map +1 -1
- package/dist/chunks/loader.js +106 -0
- package/dist/chunks/loader.js.map +1 -0
- package/dist/chunks/monthSelect.js +251 -0
- package/dist/chunks/monthSelect.js.map +1 -0
- package/dist/chunks/router.js +111 -0
- package/dist/chunks/router.js.map +1 -0
- package/dist/chunks/s3-multipart-uploader.js +183 -210
- package/dist/chunks/s3-multipart-uploader.js.map +1 -1
- package/dist/chunks/s3-uploader.js +106 -128
- package/dist/chunks/s3-uploader.js.map +1 -1
- package/dist/chunks/show-on.js +358 -205
- package/dist/chunks/show-on.js.map +1 -1
- package/dist/chunks/timing.js +10 -0
- package/dist/chunks/timing.js.map +1 -0
- package/dist/chunks/tinymce.js +153 -203
- package/dist/chunks/tinymce.js.map +1 -1
- package/dist/chunks/ui-bootstrap5.js +58 -72
- package/dist/chunks/ui-bootstrap5.js.map +1 -1
- package/dist/chunks/ui.js +320 -0
- package/dist/chunks/ui.js.map +1 -0
- package/dist/chunks/unicorn.js.map +1 -1
- package/dist/chunks/useQueue.js +111 -0
- package/dist/chunks/useQueue.js.map +1 -0
- package/dist/chunks/useStack.js +76 -0
- package/dist/chunks/useStack.js.map +1 -0
- package/dist/chunks/validation.js +761 -853
- package/dist/chunks/validation.js.map +1 -1
- package/dist/editor.css +1 -1
- package/dist/index.d.ts +10 -8
- package/dist/multi-level-menu.css +1 -1
- package/dist/switcher.css +1 -1
- package/dist/unicorn.js +805 -130
- package/dist/unicorn.js.map +1 -1
- package/package.json +3 -3
- package/src/composable/useBsModalAlert.ts +29 -0
- package/src/composable/useHttp.ts +13 -1
- package/src/module/s3-uploader.ts +1 -1
- package/vite.config.ts +5 -1
- package/dist/chunks/_commonjsHelpers.js +0 -7
- package/dist/chunks/index.js +0 -314
- package/dist/chunks/isArguments.js +0 -146
- package/dist/chunks/unicorn.js +0 -2621
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sources":["../../../../../../node_modules/url-template/lib/url-template.js","../../src/module/http-client.ts"],"sourcesContent":["function encodeReserved(str) {\n return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, '[').replace(/%5D/g, ']');\n }\n return part;\n }).join('');\n}\n\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n\nfunction encodeValue(operator, value, key) {\n value = (operator === '+' || operator === '#') ? encodeReserved(value) : encodeUnreserved(value);\n\n if (key) {\n return encodeUnreserved(key) + '=' + value;\n } else {\n return value;\n }\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n\nfunction isKeyOperator(operator) {\n return operator === ';' || operator === '&' || operator === '?';\n}\n\nfunction getValues(context, operator, key, modifier) {\n var value = context[key],\n result = [];\n\n if (isDefined(value) && value !== '') {\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n value = value.toString();\n\n if (modifier && modifier !== '*') {\n value = value.substring(0, parseInt(modifier, 10));\n }\n\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : null));\n } else {\n if (modifier === '*') {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : null));\n });\n } else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n } else {\n var tmp = [];\n\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n tmp.push(encodeValue(operator, value));\n });\n } else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + '=' + tmp.join(','));\n } else if (tmp.length !== 0) {\n result.push(tmp.join(','));\n }\n }\n }\n } else {\n if (operator === ';') {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n } else if (value === '' && (operator === '&' || operator === '?')) {\n result.push(encodeUnreserved(key) + '=');\n } else if (value === '') {\n result.push('');\n }\n }\n return result;\n}\n\nexport function parseTemplate(template) {\n var operators = ['+', '#', '.', '/', ';', '?', '&'];\n\n return {\n expand: function (context) {\n return template.replace(/\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g, function (_, expression, literal) {\n if (expression) {\n var operator = null,\n values = [];\n\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n\n expression.split(/,/g).forEach(function (variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push.apply(values, getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n\n if (operator && operator !== '+') {\n var separator = ',';\n\n if (operator === '?') {\n separator = '&';\n } else if (operator !== '#') {\n separator = operator;\n }\n return (values.length !== 0 ? operator : '') + values.join(separator);\n } else {\n return values.join(',');\n }\n } else {\n return encodeReserved(literal);\n }\n });\n }\n };\n}\n","import type { AxiosInstance, AxiosRequestConfig, AxiosResponse, CreateAxiosDefaults } from 'axios';\nimport AxiosStatic, { AxiosError, isAxiosError, isCancel } from 'axios';\nimport { parseTemplate } from 'url-template';\nimport { data } from '../data';\nimport { route } from '../service';\n\nexport interface ApiReturn<T = any> {\n success: boolean;\n message?: string;\n code: number;\n status: number;\n data: T;\n}\n\ndeclare module 'axios' {\n export interface AxiosRequestConfig {\n vars?: Record<string, any>;\n methodSimulate?: string;\n methodSimulateByHeader?: boolean;\n }\n\n export interface CreateAxiosDefaults {\n }\n}\n\nfunction prepareAxios(axios: AxiosInstance): AxiosInstance {\n axios.interceptors.request.use((config) => {\n config.headers['X-CSRF-Token'] = data('csrf-token');\n\n if (config.url && config.url.startsWith('@')) {\n config.url = route(config.url);\n }\n\n if (config?.vars && config.url) {\n const tmpl = parseTemplate(config.url);\n config.url = tmpl.expand(config.vars || {});\n }\n\n // Simulate methods\n if (config.methodSimulate) {\n if (config.methodSimulateByHeader) {\n config.headers['X-HTTP-Method-Override'] = config;\n } else if (typeof config.data === 'object') {\n config.data['_method'] = config.method;\n } else if (typeof config.data === 'string') {\n if (config.data.includes('?')) {\n config.data += '&_method=' + config.method;\n } else {\n config.data += '?_method=' + config.method;\n }\n }\n\n if (config.method?.toLowerCase() !== 'get') {\n config.method = 'POST';\n }\n }\n\n return config;\n });\n\n return axios;\n}\n\nexport type UnicornHttpClient = ReturnType<typeof createHttpClient>;\n\nexport function createHttpClient(config?: CreateAxiosDefaults | AxiosInstance) {\n const axios = config && 'interceptors' in config\n ? config\n : AxiosStatic.create(config ?? {});\n\n prepareAxios(axios);\n\n function requestMiddleware(callback: Parameters<AxiosInstance['interceptors']['request']['use']>[0]) {\n return axios.interceptors.request.use(callback);\n }\n\n function responseMiddleware(callback: Parameters<AxiosInstance['interceptors']['response']['use']>[0]) {\n return axios.interceptors.response.use(callback);\n }\n\n /**\n * Send a GET request.\n */\n async function get<T = any, D = any>(\n url: string,\n options: Partial<AxiosRequestConfig> = {}\n ): Promise<AxiosResponse<T, D>> {\n options.url = url;\n options.method = 'GET';\n\n return request(options);\n }\n\n /**\n * Send a POST request.\n */\n async function post<T = any, D = any>(\n url: string,\n data?: any,\n options: Partial<AxiosRequestConfig> = {}\n ): Promise<AxiosResponse<T, D>> {\n options.url = url;\n options.method = 'POST';\n options.data = data;\n\n return request(options);\n }\n\n /**\n * Send a PUT request.\n *\n * @param {string} url\n * @param {any} data\n * @param {AxiosRequestConfig} options\n *\n * @returns {Promise<AxiosResponse>}\n */\n async function put<T = any, D = any>(\n url: string,\n data?: any,\n options: Partial<AxiosRequestConfig> = {}\n ): Promise<AxiosResponse<T, D>> {\n options.url = url;\n options.method = 'PUT';\n options.data = data;\n\n return request(options);\n }\n\n /**\n * Send a PATCH request.\n *\n * @param {string} url\n * @param {any} data\n * @param {AxiosRequestConfig} options\n *\n * @returns {Promise<AxiosResponse>}\n */\n async function patch<T = any, D = any>(\n url: string,\n data?: any,\n options: Partial<AxiosRequestConfig> = {}\n ): Promise<AxiosResponse<T, D>> {\n options.url = url;\n options.method = 'PATCH';\n options.data = data;\n\n return request(options);\n }\n\n /**\n * Send a DELETE request.\n *\n * @param {string} url\n * @param {any} data\n * @param {AxiosRequestConfig} options\n *\n * @returns {Promise<AxiosResponse>}\n */\n async function deletes<T = any, D = any>(\n url: string,\n data?: any,\n options: Partial<AxiosRequestConfig> = {}\n ): Promise<AxiosResponse<T, D>> {\n options.url = url;\n options.method = 'DELETE';\n options.data = data;\n\n return request(options);\n }\n\n /**\n * Send a HEAD request.\n *\n * @param {string} url\n * @param {AxiosRequestConfig} options\n *\n * @returns {Promise<AxiosResponse>}\n */\n async function head<T = any, D = any>(\n url: string,\n options: Partial<AxiosRequestConfig> = {}\n ): Promise<AxiosResponse<T, D>> {\n options.url = url;\n options.method = 'HEAD';\n\n return request(options);\n }\n\n /**\n * Send a OPTIONS request.\n *\n * @param {string} url\n * @param {AxiosRequestConfig} options\n *\n * @returns {Promise<AxiosResponse>}\n */\n async function options<T = any, D = any>(\n url: string,\n options: Partial<AxiosRequestConfig> = {}\n ): Promise<AxiosResponse<T, D>> {\n options.url = url;\n options.method = 'OPTIONS';\n\n return request(options);\n }\n\n /**\n * Send request.\n */\n async function request<T = any, D = any>(options: AxiosRequestConfig): Promise<AxiosResponse<T, D>> {\n try {\n return await axios(options);\n } catch (e) {\n (e as any).originMessage = (e as Error).message;\n\n const err = e as AxiosError<any>;\n\n if (err.response?.data?.message) {\n err.message = err.response.data.message;\n }\n\n throw err;\n }\n }\n\n return {\n axios,\n request,\n get,\n post,\n put,\n patch,\n delete: deletes,\n head,\n options,\n requestMiddleware,\n responseMiddleware,\n isCancel,\n AxiosError,\n isAxiosError,\n };\n}\n\nexport interface UnicornHttpModule {\n UnicornHttpClient: UnicornHttpClient;\n createHttpClient: typeof createHttpClient;\n}\n"],"names":["value","options","data"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"http-client.js","names":[],"sources":["../../../../../../node_modules/url-template/lib/url-template.js","../../src/module/http-client.ts"],"sourcesContent":["function encodeReserved(str) {\n return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, '[').replace(/%5D/g, ']');\n }\n return part;\n }).join('');\n}\n\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n\nfunction encodeValue(operator, value, key) {\n value = (operator === '+' || operator === '#') ? encodeReserved(value) : encodeUnreserved(value);\n\n if (key) {\n return encodeUnreserved(key) + '=' + value;\n } else {\n return value;\n }\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n\nfunction isKeyOperator(operator) {\n return operator === ';' || operator === '&' || operator === '?';\n}\n\nfunction getValues(context, operator, key, modifier) {\n var value = context[key],\n result = [];\n\n if (isDefined(value) && value !== '') {\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n value = value.toString();\n\n if (modifier && modifier !== '*') {\n value = value.substring(0, parseInt(modifier, 10));\n }\n\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : null));\n } else {\n if (modifier === '*') {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : null));\n });\n } else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n } else {\n var tmp = [];\n\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n tmp.push(encodeValue(operator, value));\n });\n } else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + '=' + tmp.join(','));\n } else if (tmp.length !== 0) {\n result.push(tmp.join(','));\n }\n }\n }\n } else {\n if (operator === ';') {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n } else if (value === '' && (operator === '&' || operator === '?')) {\n result.push(encodeUnreserved(key) + '=');\n } else if (value === '') {\n result.push('');\n }\n }\n return result;\n}\n\nexport function parseTemplate(template) {\n var operators = ['+', '#', '.', '/', ';', '?', '&'];\n\n return {\n expand: function (context) {\n return template.replace(/\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g, function (_, expression, literal) {\n if (expression) {\n var operator = null,\n values = [];\n\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n\n expression.split(/,/g).forEach(function (variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push.apply(values, getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n\n if (operator && operator !== '+') {\n var separator = ',';\n\n if (operator === '?') {\n separator = '&';\n } else if (operator !== '#') {\n separator = operator;\n }\n return (values.length !== 0 ? operator : '') + values.join(separator);\n } else {\n return values.join(',');\n }\n } else {\n return encodeReserved(literal);\n }\n });\n }\n };\n}\n","import type { AxiosInstance, AxiosRequestConfig, AxiosResponse, CreateAxiosDefaults } from 'axios';\nimport AxiosStatic, { AxiosError, isAxiosError, isCancel } from 'axios';\nimport { parseTemplate } from 'url-template';\nimport { data } from '../data';\nimport { route } from '../service';\n\nexport interface ApiReturn<T = any> {\n success: boolean;\n message?: string;\n code: number;\n status: number;\n data: T;\n}\n\ndeclare module 'axios' {\n export interface AxiosRequestConfig {\n vars?: Record<string, any>;\n methodSimulate?: string;\n methodSimulateByHeader?: boolean;\n }\n\n export interface CreateAxiosDefaults {\n }\n}\n\nfunction prepareAxios(axios: AxiosInstance): AxiosInstance {\n axios.interceptors.request.use((config) => {\n config.headers['X-CSRF-Token'] = data('csrf-token');\n\n if (config.url && config.url.startsWith('@')) {\n config.url = route(config.url);\n }\n\n if (config?.vars && config.url) {\n const tmpl = parseTemplate(config.url);\n config.url = tmpl.expand(config.vars || {});\n }\n\n // Simulate methods\n if (config.methodSimulate) {\n if (config.methodSimulateByHeader) {\n config.headers['X-HTTP-Method-Override'] = config;\n } else if (typeof config.data === 'object') {\n config.data['_method'] = config.method;\n } else if (typeof config.data === 'string') {\n if (config.data.includes('?')) {\n config.data += '&_method=' + config.method;\n } else {\n config.data += '?_method=' + config.method;\n }\n }\n\n if (config.method?.toLowerCase() !== 'get') {\n config.method = 'POST';\n }\n }\n\n return config;\n });\n\n return axios;\n}\n\nexport type UnicornHttpClient = ReturnType<typeof createHttpClient>;\n\nexport function createHttpClient(config?: CreateAxiosDefaults | AxiosInstance) {\n const axios = config && 'interceptors' in config\n ? config\n : AxiosStatic.create(config ?? {});\n\n prepareAxios(axios);\n\n function requestMiddleware(callback: Parameters<AxiosInstance['interceptors']['request']['use']>[0]) {\n return axios.interceptors.request.use(callback);\n }\n\n function responseMiddleware(callback: Parameters<AxiosInstance['interceptors']['response']['use']>[0]) {\n return axios.interceptors.response.use(callback);\n }\n\n /**\n * Send a GET request.\n */\n async function get<T = any, D = any>(\n url: string,\n options: Partial<AxiosRequestConfig> = {}\n ): Promise<AxiosResponse<T, D>> {\n options.url = url;\n options.method = 'GET';\n\n return request(options);\n }\n\n /**\n * Send a POST request.\n */\n async function post<T = any, D = any>(\n url: string,\n data?: any,\n options: Partial<AxiosRequestConfig> = {}\n ): Promise<AxiosResponse<T, D>> {\n options.url = url;\n options.method = 'POST';\n options.data = data;\n\n return request(options);\n }\n\n /**\n * Send a PUT request.\n *\n * @param {string} url\n * @param {any} data\n * @param {AxiosRequestConfig} options\n *\n * @returns {Promise<AxiosResponse>}\n */\n async function put<T = any, D = any>(\n url: string,\n data?: any,\n options: Partial<AxiosRequestConfig> = {}\n ): Promise<AxiosResponse<T, D>> {\n options.url = url;\n options.method = 'PUT';\n options.data = data;\n\n return request(options);\n }\n\n /**\n * Send a PATCH request.\n *\n * @param {string} url\n * @param {any} data\n * @param {AxiosRequestConfig} options\n *\n * @returns {Promise<AxiosResponse>}\n */\n async function patch<T = any, D = any>(\n url: string,\n data?: any,\n options: Partial<AxiosRequestConfig> = {}\n ): Promise<AxiosResponse<T, D>> {\n options.url = url;\n options.method = 'PATCH';\n options.data = data;\n\n return request(options);\n }\n\n /**\n * Send a DELETE request.\n *\n * @param {string} url\n * @param {any} data\n * @param {AxiosRequestConfig} options\n *\n * @returns {Promise<AxiosResponse>}\n */\n async function deletes<T = any, D = any>(\n url: string,\n data?: any,\n options: Partial<AxiosRequestConfig> = {}\n ): Promise<AxiosResponse<T, D>> {\n options.url = url;\n options.method = 'DELETE';\n options.data = data;\n\n return request(options);\n }\n\n /**\n * Send a HEAD request.\n *\n * @param {string} url\n * @param {AxiosRequestConfig} options\n *\n * @returns {Promise<AxiosResponse>}\n */\n async function head<T = any, D = any>(\n url: string,\n options: Partial<AxiosRequestConfig> = {}\n ): Promise<AxiosResponse<T, D>> {\n options.url = url;\n options.method = 'HEAD';\n\n return request(options);\n }\n\n /**\n * Send a OPTIONS request.\n *\n * @param {string} url\n * @param {AxiosRequestConfig} options\n *\n * @returns {Promise<AxiosResponse>}\n */\n async function options<T = any, D = any>(\n url: string,\n options: Partial<AxiosRequestConfig> = {}\n ): Promise<AxiosResponse<T, D>> {\n options.url = url;\n options.method = 'OPTIONS';\n\n return request(options);\n }\n\n /**\n * Send request.\n */\n async function request<T = any, D = any>(options: AxiosRequestConfig): Promise<AxiosResponse<T, D>> {\n try {\n return await axios(options);\n } catch (e) {\n (e as any).originMessage = (e as Error).message;\n\n const err = e as AxiosError<any>;\n\n if (err.response?.data?.message) {\n err.message = err.response.data.message;\n }\n\n throw err;\n }\n }\n\n return {\n axios,\n request,\n get,\n post,\n put,\n patch,\n delete: deletes,\n head,\n options,\n requestMiddleware,\n responseMiddleware,\n isCancel,\n AxiosError,\n isAxiosError,\n };\n}\n\nexport interface UnicornHttpModule {\n UnicornHttpClient: UnicornHttpClient;\n createHttpClient: typeof createHttpClient;\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { t as mergeDeep } from "./arr.js";
|
|
2
|
+
import { useUniDirective } from "../unicorn.js";
|
|
3
|
+
//#region src/module/iframe-modal.ts
|
|
4
|
+
var IFrameModalElement = class extends HTMLElement {
|
|
5
|
+
static is = "uni-iframe-modal";
|
|
6
|
+
options;
|
|
7
|
+
modalElement;
|
|
8
|
+
modal;
|
|
9
|
+
iframe;
|
|
10
|
+
template() {
|
|
11
|
+
return `
|
|
10
12
|
<div class="modal fade c-unicorn-iframe-modal" id="${this.getModalId()}"
|
|
11
13
|
data-iframe-modal>
|
|
12
14
|
<div class="modal-dialog ${this.options?.size || "modal-xl"}">
|
|
@@ -17,111 +19,89 @@ class IFrameModalElement extends HTMLElement {
|
|
|
17
19
|
</div>
|
|
18
20
|
</div>
|
|
19
21
|
</div>`;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
return;
|
|
83
|
-
}
|
|
84
|
-
let height = iframe.contentWindow.document.documentElement.scrollHeight;
|
|
85
|
-
height += 30;
|
|
86
|
-
if (height < 500) {
|
|
87
|
-
height = 500;
|
|
88
|
-
}
|
|
89
|
-
iframe.style.height = height + "px";
|
|
90
|
-
}, 30);
|
|
91
|
-
}
|
|
92
|
-
getModalId() {
|
|
93
|
-
return this.options?.id || this.id + "__modal";
|
|
94
|
-
}
|
|
95
|
-
}
|
|
22
|
+
}
|
|
23
|
+
get selector() {
|
|
24
|
+
return this.getAttribute("selector") || "[data-iframe-modal]";
|
|
25
|
+
}
|
|
26
|
+
async getBootstrapModal() {
|
|
27
|
+
const { Modal } = await import("bootstrap");
|
|
28
|
+
return this.modal ??= Modal.getOrCreateInstance(this.modalElement);
|
|
29
|
+
}
|
|
30
|
+
connectedCallback() {
|
|
31
|
+
this.options = JSON.parse(this.getAttribute("options") || "{}");
|
|
32
|
+
if (!this.innerHTML.trim()) this.innerHTML = this.template();
|
|
33
|
+
this.modalElement = this.querySelector(this.selector);
|
|
34
|
+
this.iframe = this.modalElement.querySelector("iframe");
|
|
35
|
+
this.iframe.modalLink = () => {
|
|
36
|
+
return this;
|
|
37
|
+
};
|
|
38
|
+
this.bindEvents();
|
|
39
|
+
this.getBootstrapModal();
|
|
40
|
+
}
|
|
41
|
+
bindEvents() {
|
|
42
|
+
this.modalElement.addEventListener("hidden.bs.modal", () => {
|
|
43
|
+
this.iframe.src = "";
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
async open(href, options = {}) {
|
|
47
|
+
options = mergeDeep({
|
|
48
|
+
height: void 0,
|
|
49
|
+
resize: false,
|
|
50
|
+
size: "modal-lg"
|
|
51
|
+
}, this.options, options);
|
|
52
|
+
if (options.resize) {
|
|
53
|
+
const onload = () => {
|
|
54
|
+
this.resize(this.iframe);
|
|
55
|
+
this.iframe.removeEventListener("load", onload);
|
|
56
|
+
};
|
|
57
|
+
this.iframe.addEventListener("load", onload);
|
|
58
|
+
} else this.iframe.style.height = options.height || "500px";
|
|
59
|
+
if (options.size != null) {
|
|
60
|
+
const dialog = this.modalElement.querySelector(".modal-dialog");
|
|
61
|
+
dialog.classList.remove("modal-lg", "modal-xl", "modal-sm", "modal-xs");
|
|
62
|
+
dialog.classList.add(options.size);
|
|
63
|
+
}
|
|
64
|
+
this.iframe.src = href;
|
|
65
|
+
(await this.getBootstrapModal()).show();
|
|
66
|
+
}
|
|
67
|
+
async close() {
|
|
68
|
+
this.iframe.src = "";
|
|
69
|
+
(await this.getBootstrapModal()).hide();
|
|
70
|
+
}
|
|
71
|
+
resize(iframe) {
|
|
72
|
+
setTimeout(() => {
|
|
73
|
+
if (!iframe.contentWindow) return;
|
|
74
|
+
let height = iframe.contentWindow.document.documentElement.scrollHeight;
|
|
75
|
+
height += 30;
|
|
76
|
+
if (height < 500) height = 500;
|
|
77
|
+
iframe.style.height = height + "px";
|
|
78
|
+
}, 30);
|
|
79
|
+
}
|
|
80
|
+
getModalId() {
|
|
81
|
+
return this.options?.id || this.id + "__modal";
|
|
82
|
+
}
|
|
83
|
+
};
|
|
96
84
|
async function init() {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
im.open(el.src, options);
|
|
115
|
-
} else if ("href" in el) {
|
|
116
|
-
im.open(el.href, options);
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
});
|
|
85
|
+
customElements.define(IFrameModalElement.is, IFrameModalElement);
|
|
86
|
+
return useUniDirective("modal-link", { mounted(el, binding) {
|
|
87
|
+
let options = {};
|
|
88
|
+
options.height = el.dataset.height;
|
|
89
|
+
options.resize = el.dataset.resize === "1" || el.dataset.resize === "true";
|
|
90
|
+
options.size = el.dataset.size;
|
|
91
|
+
const target = binding.value;
|
|
92
|
+
el.style.pointerEvents = "";
|
|
93
|
+
el.addEventListener("click", (e) => {
|
|
94
|
+
e.preventDefault();
|
|
95
|
+
e.stopPropagation();
|
|
96
|
+
const im = document.querySelector(target);
|
|
97
|
+
if (!im) return;
|
|
98
|
+
if ("src" in el) im.open(el.src, options);
|
|
99
|
+
else if ("href" in el) im.open(el.href, options);
|
|
100
|
+
});
|
|
101
|
+
} });
|
|
121
102
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
//# sourceMappingURL=iframe-modal.js.map
|
|
103
|
+
var ready = /* @__PURE__ */ init();
|
|
104
|
+
//#endregion
|
|
105
|
+
export { IFrameModalElement, ready };
|
|
106
|
+
|
|
107
|
+
//# sourceMappingURL=iframe-modal.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iframe-modal.js","sources":["../../src/module/iframe-modal.ts"],"sourcesContent":["import { Modal } from 'bootstrap';\nimport { useUniDirective } from '../composable';\nimport { mergeDeep } from '../utilities';\n\ninterface IFrameModalOptions {\n id?: string;\n size?: string;\n resize?: boolean;\n height?: string;\n}\n\nexport class IFrameModalElement extends HTMLElement {\n static is = 'uni-iframe-modal';\n\n options!: IFrameModalOptions;\n modalElement!: HTMLDivElement;\n modal!: Modal;\n iframe!: HTMLIFrameElement;\n\n template() {\n return `\n<div class=\"modal fade c-unicorn-iframe-modal\" id=\"${this.getModalId()}\"\n data-iframe-modal>\n <div class=\"modal-dialog ${this.options?.size || 'modal-xl'}\">\n <div class=\"modal-content\">\n <div class=\"modal-body\">\n <iframe class=\"c-unicorn-iframe-modal__iframe\" width=\"100%\" src=\"\" frameborder=\"0\"></iframe>\n </div>\n </div>\n </div>\n</div>`;\n }\n\n get selector() {\n return this.getAttribute('selector') || '[data-iframe-modal]';\n }\n\n async getBootstrapModal() {\n const { Modal } = await import('bootstrap');\n\n return this.modal ??= Modal.getOrCreateInstance(this.modalElement);\n }\n\n connectedCallback() {\n this.options = JSON.parse(this.getAttribute('options') || '{}');\n\n if (!this.innerHTML.trim()) {\n this.innerHTML = this.template();\n }\n\n this.modalElement = this.querySelector<HTMLDivElement>(this.selector)!;\n this.iframe = this.modalElement.querySelector<HTMLIFrameElement>('iframe')!;\n\n // @ts-ignore\n this.iframe.modalLink = () => {\n return this;\n };\n\n this.bindEvents();\n this.getBootstrapModal();\n }\n\n bindEvents() {\n this.modalElement.addEventListener('hidden.bs.modal', () => {\n this.iframe.src = '';\n });\n }\n\n async open(href: string, options: IFrameModalOptions = {}) {\n options = mergeDeep(\n {\n height: undefined,\n resize: false,\n size: 'modal-lg',\n },\n this.options,\n options\n );\n\n if (options.resize) {\n const onload = () => {\n this.resize(this.iframe);\n\n this.iframe.removeEventListener('load', onload);\n };\n\n this.iframe.addEventListener('load', onload);\n } else {\n this.iframe.style.height = options.height || '500px';\n }\n\n if (options.size != null) {\n const dialog = this.modalElement.querySelector<HTMLDivElement>('.modal-dialog')!;\n dialog.classList.remove('modal-lg', 'modal-xl', 'modal-sm', 'modal-xs');\n dialog.classList.add(options.size);\n }\n\n this.iframe.src = href;\n const modal = await this.getBootstrapModal();\n modal.show();\n }\n\n async close() {\n this.iframe.src = '';\n const modal = await this.getBootstrapModal();\n modal.hide();\n }\n\n resize(iframe: HTMLIFrameElement) {\n setTimeout(() => {\n if (!iframe.contentWindow) {\n return;\n }\n\n let height = iframe.contentWindow.document.documentElement.scrollHeight;\n\n height += 30;\n\n if (height < 500) {\n height = 500;\n }\n\n iframe.style.height = height + 'px';\n }, 30);\n }\n\n getModalId() {\n return this.options?.id || this.id + '__modal';\n }\n}\n\nasync function init() {\n customElements.define(IFrameModalElement.is, IFrameModalElement);\n\n return useUniDirective('modal-link', {\n mounted(el, binding) {\n let options: IFrameModalOptions = {};\n\n options.height = el.dataset.height;\n options.resize = el.dataset.resize === '1' || el.dataset.resize === 'true';\n options.size = el.dataset.size;\n\n const target = binding.value;\n\n el.style.pointerEvents = '';\n\n el.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n const im = document.querySelector(target);\n\n if (!im) {\n return;\n }\n\n if ('src' in el) {\n im.open(el.src, options);\n } else if ('href' in el) {\n im.open(el.href, options);\n }\n });\n }\n });\n}\nexport const ready = init();\n\nexport interface IFrameModalModule {\n IFrameModalElement: typeof IFrameModalElement;\n ready: typeof ready;\n}\n"],"
|
|
1
|
+
{"version":3,"file":"iframe-modal.js","names":[],"sources":["../../src/module/iframe-modal.ts"],"sourcesContent":["import { Modal } from 'bootstrap';\nimport { useUniDirective } from '../composable';\nimport { mergeDeep } from '../utilities';\n\ninterface IFrameModalOptions {\n id?: string;\n size?: string;\n resize?: boolean;\n height?: string;\n}\n\nexport class IFrameModalElement extends HTMLElement {\n static is = 'uni-iframe-modal';\n\n options!: IFrameModalOptions;\n modalElement!: HTMLDivElement;\n modal!: Modal;\n iframe!: HTMLIFrameElement;\n\n template() {\n return `\n<div class=\"modal fade c-unicorn-iframe-modal\" id=\"${this.getModalId()}\"\n data-iframe-modal>\n <div class=\"modal-dialog ${this.options?.size || 'modal-xl'}\">\n <div class=\"modal-content\">\n <div class=\"modal-body\">\n <iframe class=\"c-unicorn-iframe-modal__iframe\" width=\"100%\" src=\"\" frameborder=\"0\"></iframe>\n </div>\n </div>\n </div>\n</div>`;\n }\n\n get selector() {\n return this.getAttribute('selector') || '[data-iframe-modal]';\n }\n\n async getBootstrapModal() {\n const { Modal } = await import('bootstrap');\n\n return this.modal ??= Modal.getOrCreateInstance(this.modalElement);\n }\n\n connectedCallback() {\n this.options = JSON.parse(this.getAttribute('options') || '{}');\n\n if (!this.innerHTML.trim()) {\n this.innerHTML = this.template();\n }\n\n this.modalElement = this.querySelector<HTMLDivElement>(this.selector)!;\n this.iframe = this.modalElement.querySelector<HTMLIFrameElement>('iframe')!;\n\n // @ts-ignore\n this.iframe.modalLink = () => {\n return this;\n };\n\n this.bindEvents();\n this.getBootstrapModal();\n }\n\n bindEvents() {\n this.modalElement.addEventListener('hidden.bs.modal', () => {\n this.iframe.src = '';\n });\n }\n\n async open(href: string, options: IFrameModalOptions = {}) {\n options = mergeDeep(\n {\n height: undefined,\n resize: false,\n size: 'modal-lg',\n },\n this.options,\n options\n );\n\n if (options.resize) {\n const onload = () => {\n this.resize(this.iframe);\n\n this.iframe.removeEventListener('load', onload);\n };\n\n this.iframe.addEventListener('load', onload);\n } else {\n this.iframe.style.height = options.height || '500px';\n }\n\n if (options.size != null) {\n const dialog = this.modalElement.querySelector<HTMLDivElement>('.modal-dialog')!;\n dialog.classList.remove('modal-lg', 'modal-xl', 'modal-sm', 'modal-xs');\n dialog.classList.add(options.size);\n }\n\n this.iframe.src = href;\n const modal = await this.getBootstrapModal();\n modal.show();\n }\n\n async close() {\n this.iframe.src = '';\n const modal = await this.getBootstrapModal();\n modal.hide();\n }\n\n resize(iframe: HTMLIFrameElement) {\n setTimeout(() => {\n if (!iframe.contentWindow) {\n return;\n }\n\n let height = iframe.contentWindow.document.documentElement.scrollHeight;\n\n height += 30;\n\n if (height < 500) {\n height = 500;\n }\n\n iframe.style.height = height + 'px';\n }, 30);\n }\n\n getModalId() {\n return this.options?.id || this.id + '__modal';\n }\n}\n\nasync function init() {\n customElements.define(IFrameModalElement.is, IFrameModalElement);\n\n return useUniDirective('modal-link', {\n mounted(el, binding) {\n let options: IFrameModalOptions = {};\n\n options.height = el.dataset.height;\n options.resize = el.dataset.resize === '1' || el.dataset.resize === 'true';\n options.size = el.dataset.size;\n\n const target = binding.value;\n\n el.style.pointerEvents = '';\n\n el.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n const im = document.querySelector(target);\n\n if (!im) {\n return;\n }\n\n if ('src' in el) {\n im.open(el.src, options);\n } else if ('href' in el) {\n im.open(el.href, options);\n }\n });\n }\n });\n}\nexport const ready = init();\n\nexport interface IFrameModalModule {\n IFrameModalElement: typeof IFrameModalElement;\n ready: typeof ready;\n}\n"],"mappings":";;;AAWA,IAAa,qBAAb,cAAwC,YAAY;CAClD,OAAO,KAAK;CAEZ;CACA;CACA;CACA;CAEA,WAAW;AACT,SAAO;qDAC0C,KAAK,YAAY,CAAC;;+BAExC,KAAK,SAAS,QAAQ,WAAW;;;;;;;;;CAU9D,IAAI,WAAW;AACb,SAAO,KAAK,aAAa,WAAW,IAAI;;CAG1C,MAAM,oBAAoB;EACxB,MAAM,EAAE,UAAU,MAAM,OAAO;AAE/B,SAAO,KAAK,UAAU,MAAM,oBAAoB,KAAK,aAAa;;CAGpE,oBAAoB;AAClB,OAAK,UAAU,KAAK,MAAM,KAAK,aAAa,UAAU,IAAI,KAAK;AAE/D,MAAI,CAAC,KAAK,UAAU,MAAM,CACxB,MAAK,YAAY,KAAK,UAAU;AAGlC,OAAK,eAAe,KAAK,cAA8B,KAAK,SAAS;AACrE,OAAK,SAAS,KAAK,aAAa,cAAiC,SAAS;AAG1E,OAAK,OAAO,kBAAkB;AAC5B,UAAO;;AAGT,OAAK,YAAY;AACjB,OAAK,mBAAmB;;CAG1B,aAAa;AACX,OAAK,aAAa,iBAAiB,yBAAyB;AAC1D,QAAK,OAAO,MAAM;IAClB;;CAGJ,MAAM,KAAK,MAAc,UAA8B,EAAE,EAAE;AACzD,YAAU,UACR;GACE,QAAQ,KAAA;GACR,QAAQ;GACR,MAAM;GACP,EACD,KAAK,SACL,QACD;AAED,MAAI,QAAQ,QAAQ;GAClB,MAAM,eAAe;AACnB,SAAK,OAAO,KAAK,OAAO;AAExB,SAAK,OAAO,oBAAoB,QAAQ,OAAO;;AAGjD,QAAK,OAAO,iBAAiB,QAAQ,OAAO;QAE5C,MAAK,OAAO,MAAM,SAAS,QAAQ,UAAU;AAG/C,MAAI,QAAQ,QAAQ,MAAM;GACxB,MAAM,SAAS,KAAK,aAAa,cAA8B,gBAAgB;AAC/E,UAAO,UAAU,OAAO,YAAY,YAAY,YAAY,WAAW;AACvE,UAAO,UAAU,IAAI,QAAQ,KAAK;;AAGpC,OAAK,OAAO,MAAM;AAElB,GADc,MAAM,KAAK,mBAAmB,EACtC,MAAM;;CAGd,MAAM,QAAQ;AACZ,OAAK,OAAO,MAAM;AAElB,GADc,MAAM,KAAK,mBAAmB,EACtC,MAAM;;CAGd,OAAO,QAA2B;AAChC,mBAAiB;AACf,OAAI,CAAC,OAAO,cACV;GAGF,IAAI,SAAS,OAAO,cAAc,SAAS,gBAAgB;AAE3D,aAAU;AAEV,OAAI,SAAS,IACX,UAAS;AAGX,UAAO,MAAM,SAAS,SAAS;KAC9B,GAAG;;CAGR,aAAa;AACX,SAAO,KAAK,SAAS,MAAM,KAAK,KAAK;;;AAIzC,eAAe,OAAO;AACpB,gBAAe,OAAO,mBAAmB,IAAI,mBAAmB;AAEhE,QAAO,gBAAgB,cAAc,EACnC,QAAQ,IAAI,SAAS;EACnB,IAAI,UAA8B,EAAE;AAEpC,UAAQ,SAAS,GAAG,QAAQ;AAC5B,UAAQ,SAAS,GAAG,QAAQ,WAAW,OAAO,GAAG,QAAQ,WAAW;AACpE,UAAQ,OAAO,GAAG,QAAQ;EAE1B,MAAM,SAAS,QAAQ;AAEvB,KAAG,MAAM,gBAAgB;AAEzB,KAAG,iBAAiB,UAAU,MAAM;AAClC,KAAE,gBAAgB;AAClB,KAAE,iBAAiB;GACnB,MAAM,KAAK,SAAS,cAAc,OAAO;AAEzC,OAAI,CAAC,GACH;AAGF,OAAI,SAAS,GACX,IAAG,KAAK,GAAG,KAAK,QAAQ;YACf,UAAU,GACnB,IAAG,KAAK,GAAG,MAAM,QAAQ;IAE3B;IAEL,CAAC;;AAEJ,IAAa,QAAQ,sBAAM"}
|
package/dist/chunks/keep-tab.js
CHANGED
|
@@ -1,104 +1,95 @@
|
|
|
1
|
+
import { t as mergeDeep } from "./arr.js";
|
|
2
|
+
import { c as module, d as selectOne, u as selectAll } from "./dom.js";
|
|
3
|
+
import { t as sleep } from "./timing.js";
|
|
4
|
+
import { useUniDirective } from "../unicorn.js";
|
|
1
5
|
import { Tab } from "bootstrap";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
+
//#region src/bootstrap/keep-tab.ts
|
|
7
|
+
var defaultOptions = {
|
|
8
|
+
tabItemSelector: "[data-toggle=tab],[data-bs-toggle=tab],[data-toggle=pill],[data-bs-toggle=pill]",
|
|
9
|
+
delay: 0
|
|
6
10
|
};
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Hash code.
|
|
86
|
-
*/
|
|
87
|
-
async hashCode(text) {
|
|
88
|
-
const msgBuffer = new TextEncoder().encode(text);
|
|
89
|
-
const hashBuffer = await globalThis.crypto.subtle.digest("SHA-256", msgBuffer);
|
|
90
|
-
const hashArray = Array.from(new Uint8Array(hashBuffer));
|
|
91
|
-
return hashArray.map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
const ready = /* @__PURE__ */ useUniDirective("keeptab", {
|
|
95
|
-
mounted(el, { value }) {
|
|
96
|
-
const options = JSON.parse(value || "{}");
|
|
97
|
-
module$1(el, "uni.keeptab", () => new KeepTab(el, options));
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
export {
|
|
101
|
-
KeepTab,
|
|
102
|
-
ready
|
|
11
|
+
var KeepTab = class {
|
|
12
|
+
$element;
|
|
13
|
+
tabButtons;
|
|
14
|
+
storageKey = "";
|
|
15
|
+
options;
|
|
16
|
+
constructor(selector, options = {}) {
|
|
17
|
+
options = mergeDeep({}, defaultOptions, options);
|
|
18
|
+
let uid;
|
|
19
|
+
if (typeof selector === "object") uid = options.uid || selector.id;
|
|
20
|
+
else uid = selector;
|
|
21
|
+
const $element = this.$element = selectOne(selector);
|
|
22
|
+
if (!$element) {
|
|
23
|
+
console.warn(`[KeepTab] Element ${selector} not found.`);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
this.options = options;
|
|
27
|
+
this.$element = $element;
|
|
28
|
+
this.tabButtons = $element.querySelectorAll(this.options.tabItemSelector);
|
|
29
|
+
this.init(uid);
|
|
30
|
+
}
|
|
31
|
+
async init(uid) {
|
|
32
|
+
this.storageKey = "tab-href-" + await this.hashCode(location.href + ":" + uid);
|
|
33
|
+
this.bindEvents();
|
|
34
|
+
await sleep(this.options.delay || 0);
|
|
35
|
+
this.switchTab();
|
|
36
|
+
}
|
|
37
|
+
bindEvents() {
|
|
38
|
+
[].forEach.call(this.tabButtons, (button) => {
|
|
39
|
+
button.addEventListener("click", () => {
|
|
40
|
+
window.localStorage.setItem(this.storageKey, this.getButtonHref(button));
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
getButtonHref(button) {
|
|
45
|
+
return button.dataset.bsTarget || button.dataset.target || button.href;
|
|
46
|
+
}
|
|
47
|
+
findTabButtonByHref(href) {
|
|
48
|
+
return selectAll(this.options.tabItemSelector).filter((button) => {
|
|
49
|
+
if (button.href === href) return true;
|
|
50
|
+
if (button.dataset.bsTarget === href) return true;
|
|
51
|
+
return button.dataset.target === href;
|
|
52
|
+
}).shift();
|
|
53
|
+
}
|
|
54
|
+
activateTab(href) {
|
|
55
|
+
const tabTrigger = this.findTabButtonByHref(href);
|
|
56
|
+
if (tabTrigger) {
|
|
57
|
+
if (tabTrigger?.getAttribute("disabled") != null || tabTrigger.classList.contains("disabled")) return;
|
|
58
|
+
Tab.getOrCreateInstance(tabTrigger).show();
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
hasTab(href) {
|
|
62
|
+
return this.findTabButtonByHref(href) != null;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Switch tab.
|
|
66
|
+
*
|
|
67
|
+
* @returns {boolean}
|
|
68
|
+
*/
|
|
69
|
+
switchTab() {
|
|
70
|
+
if (localStorage.getItem(this.storageKey)) {
|
|
71
|
+
if (!this.hasTab(localStorage.getItem(this.storageKey) || "")) {
|
|
72
|
+
localStorage.removeItem(this.storageKey);
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
const tabhref = localStorage.getItem(this.storageKey) || "";
|
|
76
|
+
this.activateTab(tabhref);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Hash code.
|
|
81
|
+
*/
|
|
82
|
+
async hashCode(text) {
|
|
83
|
+
const msgBuffer = new TextEncoder().encode(text);
|
|
84
|
+
const hashBuffer = await globalThis.crypto.subtle.digest("SHA-256", msgBuffer);
|
|
85
|
+
return Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
86
|
+
}
|
|
103
87
|
};
|
|
104
|
-
|
|
88
|
+
var ready = /* @__PURE__ */ useUniDirective("keeptab", { mounted(el, { value }) {
|
|
89
|
+
const options = JSON.parse(value || "{}");
|
|
90
|
+
module(el, "uni.keeptab", () => new KeepTab(el, options));
|
|
91
|
+
} });
|
|
92
|
+
//#endregion
|
|
93
|
+
export { KeepTab, ready };
|
|
94
|
+
|
|
95
|
+
//# sourceMappingURL=keep-tab.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"keep-tab.js","sources":["../../src/bootstrap/keep-tab.ts"],"sourcesContent":["import { useUniDirective } from '../composable';\nimport { module, selectAll, selectOne, sleep } from '../service';\nimport { Tab } from 'bootstrap';\nimport { mergeDeep } from '../utilities';\n\nexport interface KeepTabOptions {\n uid?: string;\n delay?: number;\n tabItemSelector?: string;\n}\n\nconst defaultOptions = {\n tabItemSelector: '[data-toggle=tab],[data-bs-toggle=tab],[data-toggle=pill],[data-bs-toggle=pill]',\n delay: 0,\n};\n\nexport class KeepTab {\n $element: HTMLElement;\n tabButtons!: NodeListOf<HTMLElement>;\n storageKey: string = '';\n options: any;\n\n constructor(selector: HTMLElement | string, options: KeepTabOptions = {}) {\n options = mergeDeep({}, defaultOptions, options);\n let uid: string;\n\n if (typeof selector === 'object') {\n uid = options.uid || selector.id;\n } else {\n uid = selector;\n }\n\n const $element = this.$element = selectOne<HTMLElement>(selector)!;\n\n if (!$element) {\n console.warn(`[KeepTab] Element ${selector} not found.`);\n return;\n }\n\n this.options = options;\n\n this.$element = $element;\n this.tabButtons = $element.querySelectorAll(this.options.tabItemSelector);\n\n this.init(uid);\n }\n\n protected async init(uid: string) {\n this.storageKey = 'tab-href-' + await this.hashCode(location.href + ':' + uid);\n\n this.bindEvents();\n\n await sleep(this.options.delay || 0);\n\n this.switchTab();\n }\n\n bindEvents() {\n [].forEach.call(this.tabButtons, (button: HTMLAnchorElement) => {\n button.addEventListener('click', () => {\n // Store the selected tab href in localstorage\n window.localStorage.setItem(this.storageKey, this.getButtonHref(button));\n });\n });\n }\n\n getButtonHref(button: HTMLAnchorElement) {\n return button.dataset.bsTarget || button.dataset.target || button.href;\n }\n\n findTabButtonByHref(href: string) {\n return selectAll<HTMLAnchorElement>(this.options.tabItemSelector)\n .filter((button: HTMLAnchorElement) => {\n if (button.href === href) {\n return true;\n }\n\n if (button.dataset.bsTarget === href) {\n return true;\n }\n\n return button.dataset.target === href;\n })\n .shift();\n }\n\n activateTab(href: string) {\n const tabTrigger = this.findTabButtonByHref(href);\n\n if (tabTrigger) {\n if (tabTrigger?.getAttribute('disabled') != null || tabTrigger.classList.contains('disabled')) {\n return;\n }\n\n Tab.getOrCreateInstance(tabTrigger).show();\n }\n }\n\n hasTab(href: string) {\n return this.findTabButtonByHref(href) != null;\n }\n\n /**\n * Switch tab.\n *\n * @returns {boolean}\n */\n switchTab() {\n if (localStorage.getItem(this.storageKey)) {\n // When moving from tab area to a different view\n if (!this.hasTab(localStorage.getItem(this.storageKey) || '')) {\n localStorage.removeItem(this.storageKey);\n return true;\n }\n\n // Clean default tabs\n // selectOne(this.$element, '[data-toggle=\"tab\"], [data-bs-toggle=tab]')\n // this.$element.querySelector('a[data-toggle=\"tab\"]').parent().removeClass('active');\n\n const tabhref = localStorage.getItem(this.storageKey) || '';\n\n // Add active attribute for selected tab indicated by url\n this.activateTab(tabhref);\n\n // Check whether internal tab is selected (in format <tabname>-<id>)\n // const seperatorIndex = tabhref.indexOf('-');\n //\n // if (seperatorIndex !== -1) {\n // const singular = tabhref.substring(0, seperatorIndex);\n // const plural = singular + 's';\n //\n // this.activateTab(plural);\n // }\n }\n }\n\n /**\n * Hash code.\n */\n async hashCode(text: string): Promise<string> {\n const msgBuffer = new TextEncoder().encode(text);\n const hashBuffer = await globalThis.crypto.subtle.digest(\"SHA-256\", msgBuffer);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n return hashArray.map(b => b.toString(16).padStart(2, \"0\")).join(\"\");\n }\n}\n\nexport const ready = useUniDirective('keeptab', {\n mounted(el, { value }) {\n const options: KeepTabOptions = JSON.parse(value || '{}');\n\n module(el, 'uni.keeptab', () => new KeepTab(el, options));\n }\n});\n\nexport interface KeepTabModule {\n KeepTab: typeof KeepTab;\n ready: typeof ready;\n}\n"],"
|
|
1
|
+
{"version":3,"file":"keep-tab.js","names":[],"sources":["../../src/bootstrap/keep-tab.ts"],"sourcesContent":["import { useUniDirective } from '../composable';\nimport { module, selectAll, selectOne, sleep } from '../service';\nimport { Tab } from 'bootstrap';\nimport { mergeDeep } from '../utilities';\n\nexport interface KeepTabOptions {\n uid?: string;\n delay?: number;\n tabItemSelector?: string;\n}\n\nconst defaultOptions = {\n tabItemSelector: '[data-toggle=tab],[data-bs-toggle=tab],[data-toggle=pill],[data-bs-toggle=pill]',\n delay: 0,\n};\n\nexport class KeepTab {\n $element: HTMLElement;\n tabButtons!: NodeListOf<HTMLElement>;\n storageKey: string = '';\n options: any;\n\n constructor(selector: HTMLElement | string, options: KeepTabOptions = {}) {\n options = mergeDeep({}, defaultOptions, options);\n let uid: string;\n\n if (typeof selector === 'object') {\n uid = options.uid || selector.id;\n } else {\n uid = selector;\n }\n\n const $element = this.$element = selectOne<HTMLElement>(selector)!;\n\n if (!$element) {\n console.warn(`[KeepTab] Element ${selector} not found.`);\n return;\n }\n\n this.options = options;\n\n this.$element = $element;\n this.tabButtons = $element.querySelectorAll(this.options.tabItemSelector);\n\n this.init(uid);\n }\n\n protected async init(uid: string) {\n this.storageKey = 'tab-href-' + await this.hashCode(location.href + ':' + uid);\n\n this.bindEvents();\n\n await sleep(this.options.delay || 0);\n\n this.switchTab();\n }\n\n bindEvents() {\n [].forEach.call(this.tabButtons, (button: HTMLAnchorElement) => {\n button.addEventListener('click', () => {\n // Store the selected tab href in localstorage\n window.localStorage.setItem(this.storageKey, this.getButtonHref(button));\n });\n });\n }\n\n getButtonHref(button: HTMLAnchorElement) {\n return button.dataset.bsTarget || button.dataset.target || button.href;\n }\n\n findTabButtonByHref(href: string) {\n return selectAll<HTMLAnchorElement>(this.options.tabItemSelector)\n .filter((button: HTMLAnchorElement) => {\n if (button.href === href) {\n return true;\n }\n\n if (button.dataset.bsTarget === href) {\n return true;\n }\n\n return button.dataset.target === href;\n })\n .shift();\n }\n\n activateTab(href: string) {\n const tabTrigger = this.findTabButtonByHref(href);\n\n if (tabTrigger) {\n if (tabTrigger?.getAttribute('disabled') != null || tabTrigger.classList.contains('disabled')) {\n return;\n }\n\n Tab.getOrCreateInstance(tabTrigger).show();\n }\n }\n\n hasTab(href: string) {\n return this.findTabButtonByHref(href) != null;\n }\n\n /**\n * Switch tab.\n *\n * @returns {boolean}\n */\n switchTab() {\n if (localStorage.getItem(this.storageKey)) {\n // When moving from tab area to a different view\n if (!this.hasTab(localStorage.getItem(this.storageKey) || '')) {\n localStorage.removeItem(this.storageKey);\n return true;\n }\n\n // Clean default tabs\n // selectOne(this.$element, '[data-toggle=\"tab\"], [data-bs-toggle=tab]')\n // this.$element.querySelector('a[data-toggle=\"tab\"]').parent().removeClass('active');\n\n const tabhref = localStorage.getItem(this.storageKey) || '';\n\n // Add active attribute for selected tab indicated by url\n this.activateTab(tabhref);\n\n // Check whether internal tab is selected (in format <tabname>-<id>)\n // const seperatorIndex = tabhref.indexOf('-');\n //\n // if (seperatorIndex !== -1) {\n // const singular = tabhref.substring(0, seperatorIndex);\n // const plural = singular + 's';\n //\n // this.activateTab(plural);\n // }\n }\n }\n\n /**\n * Hash code.\n */\n async hashCode(text: string): Promise<string> {\n const msgBuffer = new TextEncoder().encode(text);\n const hashBuffer = await globalThis.crypto.subtle.digest(\"SHA-256\", msgBuffer);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n return hashArray.map(b => b.toString(16).padStart(2, \"0\")).join(\"\");\n }\n}\n\nexport const ready = useUniDirective('keeptab', {\n mounted(el, { value }) {\n const options: KeepTabOptions = JSON.parse(value || '{}');\n\n module(el, 'uni.keeptab', () => new KeepTab(el, options));\n }\n});\n\nexport interface KeepTabModule {\n KeepTab: typeof KeepTab;\n ready: typeof ready;\n}\n"],"mappings":";;;;;;AAWA,IAAM,iBAAiB;CACrB,iBAAiB;CACjB,OAAO;CACR;AAED,IAAa,UAAb,MAAqB;CACnB;CACA;CACA,aAAqB;CACrB;CAEA,YAAY,UAAgC,UAA0B,EAAE,EAAE;AACxE,YAAU,UAAU,EAAE,EAAE,gBAAgB,QAAQ;EAChD,IAAI;AAEJ,MAAI,OAAO,aAAa,SACtB,OAAM,QAAQ,OAAO,SAAS;MAE9B,OAAM;EAGR,MAAM,WAAW,KAAK,WAAW,UAAuB,SAAS;AAEjE,MAAI,CAAC,UAAU;AACb,WAAQ,KAAK,qBAAqB,SAAS,aAAa;AACxD;;AAGF,OAAK,UAAU;AAEf,OAAK,WAAW;AAChB,OAAK,aAAa,SAAS,iBAAiB,KAAK,QAAQ,gBAAgB;AAEzE,OAAK,KAAK,IAAI;;CAGhB,MAAgB,KAAK,KAAa;AAChC,OAAK,aAAa,cAAc,MAAM,KAAK,SAAS,SAAS,OAAO,MAAM,IAAI;AAE9E,OAAK,YAAY;AAEjB,QAAM,MAAM,KAAK,QAAQ,SAAS,EAAE;AAEpC,OAAK,WAAW;;CAGlB,aAAa;AACX,IAAE,CAAC,QAAQ,KAAK,KAAK,aAAa,WAA8B;AAC9D,UAAO,iBAAiB,eAAe;AAErC,WAAO,aAAa,QAAQ,KAAK,YAAY,KAAK,cAAc,OAAO,CAAC;KACxE;IACF;;CAGJ,cAAc,QAA2B;AACvC,SAAO,OAAO,QAAQ,YAAY,OAAO,QAAQ,UAAU,OAAO;;CAGpE,oBAAoB,MAAc;AAChC,SAAO,UAA6B,KAAK,QAAQ,gBAAgB,CAC9D,QAAQ,WAA8B;AACrC,OAAI,OAAO,SAAS,KAClB,QAAO;AAGT,OAAI,OAAO,QAAQ,aAAa,KAC9B,QAAO;AAGT,UAAO,OAAO,QAAQ,WAAW;IACjC,CACD,OAAO;;CAGZ,YAAY,MAAc;EACxB,MAAM,aAAa,KAAK,oBAAoB,KAAK;AAEjD,MAAI,YAAY;AACd,OAAI,YAAY,aAAa,WAAW,IAAI,QAAQ,WAAW,UAAU,SAAS,WAAW,CAC3F;AAGF,OAAI,oBAAoB,WAAW,CAAC,MAAM;;;CAI9C,OAAO,MAAc;AACnB,SAAO,KAAK,oBAAoB,KAAK,IAAI;;;;;;;CAQ3C,YAAY;AACV,MAAI,aAAa,QAAQ,KAAK,WAAW,EAAE;AAEzC,OAAI,CAAC,KAAK,OAAO,aAAa,QAAQ,KAAK,WAAW,IAAI,GAAG,EAAE;AAC7D,iBAAa,WAAW,KAAK,WAAW;AACxC,WAAO;;GAOT,MAAM,UAAU,aAAa,QAAQ,KAAK,WAAW,IAAI;AAGzD,QAAK,YAAY,QAAQ;;;;;;CAiB7B,MAAM,SAAS,MAA+B;EAC5C,MAAM,YAAY,IAAI,aAAa,CAAC,OAAO,KAAK;EAChD,MAAM,aAAa,MAAM,WAAW,OAAO,OAAO,OAAO,WAAW,UAAU;AAE9E,SADkB,MAAM,KAAK,IAAI,WAAW,WAAW,CAAC,CACvC,KAAI,MAAK,EAAE,SAAS,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,KAAK,GAAG;;;AAIvE,IAAa,QAAQ,gCAAgB,WAAW,EAC9C,QAAQ,IAAI,EAAE,SAAS;CACrB,MAAM,UAA0B,KAAK,MAAM,SAAS,KAAK;AAEzD,QAAO,IAAI,qBAAqB,IAAI,QAAQ,IAAI,QAAQ,CAAC;GAE5D,CAAC"}
|