@windwalker-io/unicorn-next 0.1.18 → 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.
Files changed (108) hide show
  1. package/dist/chunks/_arrayPush.js +325 -108
  2. package/dist/chunks/_arrayPush.js.map +1 -1
  3. package/dist/chunks/_baseRest.js +155 -60
  4. package/dist/chunks/_baseRest.js.map +1 -1
  5. package/dist/chunks/_baseUnary.js +463 -0
  6. package/dist/chunks/_baseUnary.js.map +1 -0
  7. package/dist/chunks/_getPrototype.js +292 -100
  8. package/dist/chunks/_getPrototype.js.map +1 -1
  9. package/dist/chunks/alert-adapter.js +29 -0
  10. package/dist/chunks/alert-adapter.js.map +1 -0
  11. package/dist/chunks/alert.js +21 -0
  12. package/dist/chunks/alert.js.map +1 -0
  13. package/dist/chunks/arr.js +24 -0
  14. package/dist/chunks/arr.js.map +1 -0
  15. package/dist/chunks/button-radio.js +127 -145
  16. package/dist/chunks/button-radio.js.map +1 -1
  17. package/dist/chunks/checkboxes-multi-select.js +44 -43
  18. package/dist/chunks/checkboxes-multi-select.js.map +1 -1
  19. package/dist/chunks/chunk.js +24 -0
  20. package/dist/chunks/cloneDeep.js +679 -212
  21. package/dist/chunks/cloneDeep.js.map +1 -1
  22. package/dist/chunks/cropper.min.js +6 -5
  23. package/dist/chunks/cropper.min.js.map +1 -1
  24. package/dist/chunks/crypto.js +26 -0
  25. package/dist/chunks/crypto.js.map +1 -0
  26. package/dist/chunks/data.js +49 -0
  27. package/dist/chunks/data.js.map +1 -0
  28. package/dist/chunks/dom.js +128 -0
  29. package/dist/chunks/dom.js.map +1 -0
  30. package/dist/chunks/events.js +270 -0
  31. package/dist/chunks/events.js.map +1 -0
  32. package/dist/chunks/field-cascade-select.js +207 -250
  33. package/dist/chunks/field-cascade-select.js.map +1 -1
  34. package/dist/chunks/field-file-drag.js +175 -209
  35. package/dist/chunks/field-file-drag.js.map +1 -1
  36. package/dist/chunks/field-flatpickr.js +94 -898
  37. package/dist/chunks/field-flatpickr.js.map +1 -1
  38. package/dist/chunks/field-modal-select.js +728 -467
  39. package/dist/chunks/field-modal-select.js.map +1 -1
  40. package/dist/chunks/field-modal-tree.js +771 -766
  41. package/dist/chunks/field-modal-tree.js.map +1 -1
  42. package/dist/chunks/field-multi-uploader.js +249 -256
  43. package/dist/chunks/field-multi-uploader.js.map +1 -1
  44. package/dist/chunks/field-repeatable.js +111 -127
  45. package/dist/chunks/field-repeatable.js.map +1 -1
  46. package/dist/chunks/field-single-image-drag.js +286 -338
  47. package/dist/chunks/field-single-image-drag.js.map +1 -1
  48. package/dist/chunks/form.js +146 -159
  49. package/dist/chunks/form.js.map +1 -1
  50. package/dist/chunks/grid.js +349 -418
  51. package/dist/chunks/grid.js.map +1 -1
  52. package/dist/chunks/helper.js +39 -0
  53. package/dist/chunks/helper.js.map +1 -0
  54. package/dist/chunks/http-client.js +221 -211
  55. package/dist/chunks/http-client.js.map +1 -1
  56. package/dist/chunks/iframe-modal.js +95 -115
  57. package/dist/chunks/iframe-modal.js.map +1 -1
  58. package/dist/chunks/keep-tab.js +92 -101
  59. package/dist/chunks/keep-tab.js.map +1 -1
  60. package/dist/chunks/lang.js +250 -0
  61. package/dist/chunks/lang.js.map +1 -0
  62. package/dist/chunks/legacy.js +197 -201
  63. package/dist/chunks/legacy.js.map +1 -1
  64. package/dist/chunks/list-dependent.js +195 -228
  65. package/dist/chunks/list-dependent.js.map +1 -1
  66. package/dist/chunks/loader.js +106 -0
  67. package/dist/chunks/loader.js.map +1 -0
  68. package/dist/chunks/monthSelect.js +251 -0
  69. package/dist/chunks/monthSelect.js.map +1 -0
  70. package/dist/chunks/router.js +111 -0
  71. package/dist/chunks/router.js.map +1 -0
  72. package/dist/chunks/s3-multipart-uploader.js +183 -210
  73. package/dist/chunks/s3-multipart-uploader.js.map +1 -1
  74. package/dist/chunks/s3-uploader.js +106 -128
  75. package/dist/chunks/s3-uploader.js.map +1 -1
  76. package/dist/chunks/show-on.js +358 -205
  77. package/dist/chunks/show-on.js.map +1 -1
  78. package/dist/chunks/timing.js +10 -0
  79. package/dist/chunks/timing.js.map +1 -0
  80. package/dist/chunks/tinymce.js +153 -203
  81. package/dist/chunks/tinymce.js.map +1 -1
  82. package/dist/chunks/ui-bootstrap5.js +58 -72
  83. package/dist/chunks/ui-bootstrap5.js.map +1 -1
  84. package/dist/chunks/ui.js +320 -0
  85. package/dist/chunks/ui.js.map +1 -0
  86. package/dist/chunks/unicorn.js.map +1 -1
  87. package/dist/chunks/useQueue.js +111 -0
  88. package/dist/chunks/useQueue.js.map +1 -0
  89. package/dist/chunks/useStack.js +76 -0
  90. package/dist/chunks/useStack.js.map +1 -0
  91. package/dist/chunks/validation.js +761 -853
  92. package/dist/chunks/validation.js.map +1 -1
  93. package/dist/editor.css +1 -1
  94. package/dist/index.d.ts +27 -15
  95. package/dist/multi-level-menu.css +1 -1
  96. package/dist/switcher.css +1 -1
  97. package/dist/unicorn.js +805 -130
  98. package/dist/unicorn.js.map +1 -1
  99. package/package.json +3 -3
  100. package/src/composable/useBsModalAlert.ts +92 -12
  101. package/src/composable/useHttp.ts +13 -1
  102. package/src/module/s3-uploader.ts +1 -1
  103. package/src/service/ui.ts +31 -15
  104. package/vite.config.ts +5 -1
  105. package/dist/chunks/_commonjsHelpers.js +0 -7
  106. package/dist/chunks/index.js +0 -314
  107. package/dist/chunks/isArguments.js +0 -146
  108. package/dist/chunks/unicorn.js +0 -2580
@@ -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 { a6 as mergeDeep, a as useUniDirective } from "./unicorn.js";
2
- class IFrameModalElement extends HTMLElement {
3
- static is = "uni-iframe-modal";
4
- options;
5
- modalElement;
6
- modal;
7
- iframe;
8
- template() {
9
- return `
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
- get selector() {
22
- return this.getAttribute("selector") || "[data-iframe-modal]";
23
- }
24
- async getBootstrapModal() {
25
- const { Modal: Modal2 } = await import("bootstrap");
26
- return this.modal ??= Modal2.getOrCreateInstance(this.modalElement);
27
- }
28
- connectedCallback() {
29
- this.options = JSON.parse(this.getAttribute("options") || "{}");
30
- if (!this.innerHTML.trim()) {
31
- this.innerHTML = this.template();
32
- }
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
- {
49
- height: void 0,
50
- resize: false,
51
- size: "modal-lg"
52
- },
53
- this.options,
54
- options
55
- );
56
- if (options.resize) {
57
- const onload = () => {
58
- this.resize(this.iframe);
59
- this.iframe.removeEventListener("load", onload);
60
- };
61
- this.iframe.addEventListener("load", onload);
62
- } else {
63
- this.iframe.style.height = options.height || "500px";
64
- }
65
- if (options.size != null) {
66
- const dialog = this.modalElement.querySelector(".modal-dialog");
67
- dialog.classList.remove("modal-lg", "modal-xl", "modal-sm", "modal-xs");
68
- dialog.classList.add(options.size);
69
- }
70
- this.iframe.src = href;
71
- const modal = await this.getBootstrapModal();
72
- modal.show();
73
- }
74
- async close() {
75
- this.iframe.src = "";
76
- const modal = await this.getBootstrapModal();
77
- modal.hide();
78
- }
79
- resize(iframe) {
80
- setTimeout(() => {
81
- if (!iframe.contentWindow) {
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
- customElements.define(IFrameModalElement.is, IFrameModalElement);
98
- return useUniDirective("modal-link", {
99
- mounted(el, binding) {
100
- let options = {};
101
- options.height = el.dataset.height;
102
- options.resize = el.dataset.resize === "1" || el.dataset.resize === "true";
103
- options.size = el.dataset.size;
104
- const target = binding.value;
105
- el.style.pointerEvents = "";
106
- el.addEventListener("click", (e) => {
107
- e.preventDefault();
108
- e.stopPropagation();
109
- const im = document.querySelector(target);
110
- if (!im) {
111
- return;
112
- }
113
- if ("src" in el) {
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
- const ready = /* @__PURE__ */ init();
123
- export {
124
- IFrameModalElement,
125
- ready
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"],"names":["Modal"],"mappings":"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"}
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"}
@@ -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
- import { a as useUniDirective, z as module$1, a6 as mergeDeep, v as selectOne, al as sleep, w as selectAll } from "./unicorn.js";
3
- const defaultOptions = {
4
- tabItemSelector: "[data-toggle=tab],[data-bs-toggle=tab],[data-toggle=pill],[data-bs-toggle=pill]",
5
- delay: 0
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
- class KeepTab {
8
- $element;
9
- tabButtons;
10
- storageKey = "";
11
- options;
12
- constructor(selector, options = {}) {
13
- options = mergeDeep({}, defaultOptions, options);
14
- let uid;
15
- if (typeof selector === "object") {
16
- uid = options.uid || selector.id;
17
- } else {
18
- uid = selector;
19
- }
20
- const $element = this.$element = selectOne(selector);
21
- if (!$element) {
22
- console.warn(`[KeepTab] Element ${selector} not found.`);
23
- return;
24
- }
25
- this.options = options;
26
- this.$element = $element;
27
- this.tabButtons = $element.querySelectorAll(this.options.tabItemSelector);
28
- this.init(uid);
29
- }
30
- async init(uid) {
31
- this.storageKey = "tab-href-" + await this.hashCode(location.href + ":" + uid);
32
- this.bindEvents();
33
- await sleep(this.options.delay || 0);
34
- this.switchTab();
35
- }
36
- bindEvents() {
37
- [].forEach.call(this.tabButtons, (button) => {
38
- button.addEventListener("click", () => {
39
- window.localStorage.setItem(this.storageKey, this.getButtonHref(button));
40
- });
41
- });
42
- }
43
- getButtonHref(button) {
44
- return button.dataset.bsTarget || button.dataset.target || button.href;
45
- }
46
- findTabButtonByHref(href) {
47
- return selectAll(this.options.tabItemSelector).filter((button) => {
48
- if (button.href === href) {
49
- return true;
50
- }
51
- if (button.dataset.bsTarget === href) {
52
- return true;
53
- }
54
- return button.dataset.target === href;
55
- }).shift();
56
- }
57
- activateTab(href) {
58
- const tabTrigger = this.findTabButtonByHref(href);
59
- if (tabTrigger) {
60
- if (tabTrigger?.getAttribute("disabled") != null || tabTrigger.classList.contains("disabled")) {
61
- return;
62
- }
63
- Tab.getOrCreateInstance(tabTrigger).show();
64
- }
65
- }
66
- hasTab(href) {
67
- return this.findTabButtonByHref(href) != null;
68
- }
69
- /**
70
- * Switch tab.
71
- *
72
- * @returns {boolean}
73
- */
74
- switchTab() {
75
- if (localStorage.getItem(this.storageKey)) {
76
- if (!this.hasTab(localStorage.getItem(this.storageKey) || "")) {
77
- localStorage.removeItem(this.storageKey);
78
- return true;
79
- }
80
- const tabhref = localStorage.getItem(this.storageKey) || "";
81
- this.activateTab(tabhref);
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
- //# sourceMappingURL=keep-tab.js.map
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"],"names":["module"],"mappings":"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"}
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"}