@oneb/ui-vue 0.3.32 → 0.4.0
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/ChevronLeftIcon-7505e081.cjs +1 -0
- package/dist/ChevronLeftIcon-bb9adb5b.js +20 -0
- package/dist/ChevronRightIcon-2992cf0d.cjs +1 -0
- package/dist/ChevronRightIcon-b0585768.js +20 -0
- package/dist/ChevronUpIcon-64a673e1.cjs +1 -0
- package/dist/{ChevronRightIcon-4549a26b.js → ChevronUpIcon-c43f27a9.js} +2 -19
- package/dist/MagnifyingGlassIcon-adf871ba.cjs +1 -0
- package/dist/MagnifyingGlassIcon-ca213d3d.js +20 -0
- package/dist/OneDropdownAuto.vue_vue_type_script_setup_true_lang-2c508e8a.js +79 -0
- package/dist/OneDropdownAuto.vue_vue_type_script_setup_true_lang-bf923b04.cjs +1 -0
- package/dist/OneFormInput.vue_vue_type_script_setup_true_lang-b89117e7.js +521 -0
- package/dist/OneFormInput.vue_vue_type_script_setup_true_lang-f6f7cd96.cjs +1 -0
- package/dist/OneHelpMenu-6ec63535.cjs +1 -0
- package/dist/{OneHelpMenu-73817f8a.js → OneHelpMenu-d5182c78.js} +118 -213
- package/dist/OneMarkdown.vue_vue_type_script_setup_true_lang-05266fc3.cjs +1 -0
- package/dist/OneMarkdown.vue_vue_type_script_setup_true_lang-bb2219c7.js +18 -0
- package/dist/OneModal-02a9a173.js +189 -0
- package/dist/OneModal-0e92c039.cjs +1 -0
- package/dist/OneTooltip.vue_vue_type_script_setup_true_lang-c492c128.js +25 -0
- package/dist/OneTooltip.vue_vue_type_script_setup_true_lang-e83a81ea.cjs +1 -0
- package/dist/SpinnerIcon-01be39fe.cjs +1 -0
- package/dist/{SpinnerIcon-74648c98.js → SpinnerIcon-516264ba.js} +5 -6
- package/dist/button/index.cjs +1 -1
- package/dist/button/index.d.ts +1 -1
- package/dist/button/index.js +3 -4
- package/dist/checkbox/checkbox.d.ts +5 -0
- package/dist/checkbox/index.cjs +1 -1
- package/dist/checkbox/index.js +40 -34
- package/dist/chips/OneChips.vue.d.ts +2 -0
- package/dist/chips/chips.d.ts +25 -0
- package/dist/chips/index.cjs +1 -0
- package/dist/chips/index.d.ts +3 -0
- package/dist/chips/index.js +62 -0
- package/dist/clipboard-494e1513.cjs +1 -0
- package/dist/clipboard-733b79a1.js +22 -0
- package/dist/common/OneDetailsList.vue.d.ts +2 -0
- package/dist/common/OneDetailsRow.vue.d.ts +2 -0
- package/dist/common/index.cjs +1 -1
- package/dist/common/index.d.ts +2 -0
- package/dist/common/index.js +68 -16
- package/dist/composables/index.cjs +1 -0
- package/dist/composables/index.d.ts +18 -0
- package/dist/composables/index.js +91 -0
- package/dist/composables/useAsyncMethod.d.ts +17 -0
- package/dist/composables/useAsyncSelect.d.ts +26 -0
- package/dist/composables/useConfirm.d.ts +27 -0
- package/dist/composables/useCursorList.d.ts +42 -0
- package/dist/composables/useDebouncedRef.d.ts +6 -0
- package/dist/composables/useFileUpload.d.ts +21 -0
- package/dist/composables/useFormSubmit.d.ts +23 -0
- package/dist/composables/useIsMobile.d.ts +8 -0
- package/dist/confirm/OneConfirmHost.vue.d.ts +2 -0
- package/dist/confirm/confirm.d.ts +10 -0
- package/dist/confirm/index.cjs +1 -0
- package/dist/confirm/index.d.ts +5 -0
- package/dist/confirm/index.js +59 -0
- package/dist/cursorList/OneCursorList.vue.d.ts +2 -0
- package/dist/cursorList/index.cjs +1 -0
- package/dist/cursorList/index.d.ts +3 -0
- package/dist/cursorList/index.js +78 -0
- package/dist/dataTable/index.cjs +1 -1
- package/dist/dataTable/index.js +256 -301
- package/dist/dateTime/OneDateTime.vue.d.ts +2 -0
- package/dist/dateTime/dateTime.d.ts +43 -0
- package/dist/dateTime/index.cjs +1 -0
- package/dist/dateTime/index.d.ts +3 -0
- package/dist/dateTime/index.js +66 -0
- package/dist/dropdown/index.cjs +1 -1
- package/dist/dropdown/index.js +302 -376
- package/dist/dropdown-5cb64ab7.cjs +1 -0
- package/dist/dropdown-c81fb945.js +101 -0
- package/dist/entityPicker/index.cjs +1 -1
- package/dist/entityPicker/index.js +57 -57
- package/dist/entityPicker/useEntityModal.d.ts +7 -3
- package/dist/errorsPage/OneCrashScreen.vue.d.ts +2 -0
- package/dist/errorsPage/OneErrorHero.vue.d.ts +2 -0
- package/dist/errorsPage/OneNotFoundPage.vue.d.ts +2 -0
- package/dist/errorsPage/OneServerErrorPage.vue.d.ts +2 -0
- package/dist/errorsPage/OneSnakeGame.vue.d.ts +2 -0
- package/dist/errorsPage/createAppErrorHandler.d.ts +24 -0
- package/dist/errorsPage/errorsType.d.ts +5 -0
- package/dist/errorsPage/index.cjs +1 -1
- package/dist/errorsPage/index.d.ts +8 -0
- package/dist/errorsPage/index.js +557 -28
- package/dist/errorsPage/useCrashState.d.ts +10 -0
- package/dist/fileUpload/OneDropzone.vue.d.ts +2 -0
- package/dist/fileUpload/OneFileUpload.vue.d.ts +2 -0
- package/dist/fileUpload/fileUpload.d.ts +17 -0
- package/dist/fileUpload/index.cjs +1 -0
- package/dist/fileUpload/index.d.ts +6 -0
- package/dist/fileUpload/index.js +228 -0
- package/dist/filterBuilder/OneFilterBuilder.vue.d.ts +2 -0
- package/dist/filterBuilder/OneFilterGroup.vue.d.ts +2 -0
- package/dist/filterBuilder/OneFilterRule.vue.d.ts +2 -0
- package/dist/filterBuilder/filterBuilder.d.ts +17 -0
- package/dist/filterBuilder/index.cjs +1 -0
- package/dist/filterBuilder/index.d.ts +5 -0
- package/dist/filterBuilder/index.js +257 -0
- package/dist/form/form.d.ts +1 -1
- package/dist/form/index.cjs +1 -1
- package/dist/form/index.js +66 -574
- package/dist/i18n/index.cjs +1 -1
- package/dist/i18n/index.js +99 -15
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +18 -0
- package/dist/index.js +242 -104
- package/dist/indicators/OneStatCard.vue.d.ts +2 -0
- package/dist/indicators/index.cjs +1 -1
- package/dist/indicators/index.d.ts +1 -0
- package/dist/indicators/index.js +66 -29
- package/dist/label/index.cjs +1 -1
- package/dist/label/index.js +5 -5
- package/dist/layout/OneAuthLayout.vue.d.ts +2 -0
- package/dist/layout/OneBackButton.vue.d.ts +2 -0
- package/dist/layout/OneBreadcrumbs.vue.d.ts +2 -0
- package/dist/layout/OneEmptyLayout.vue.d.ts +6 -0
- package/dist/layout/OneGridLayout.vue.d.ts +2 -0
- package/dist/layout/index.cjs +1 -1
- package/dist/layout/index.d.ts +6 -1
- package/dist/layout/index.js +1057 -765
- package/dist/layout/layout.d.ts +11 -0
- package/dist/modal/OneModalHost.vue.d.ts +2 -0
- package/dist/modal/index.cjs +1 -1
- package/dist/modal/index.d.ts +3 -0
- package/dist/modal/index.js +84 -27
- package/dist/modal/modal.d.ts +9 -0
- package/dist/modal/useModalStack.d.ts +20 -0
- package/dist/notifications/OneNotificationItem.vue.d.ts +2 -0
- package/dist/notifications/OneNotificationsBell.vue.d.ts +2 -0
- package/dist/notifications/OneNotificationsPanel.vue.d.ts +2 -0
- package/dist/notifications/index.cjs +1 -0
- package/dist/notifications/index.d.ts +7 -0
- package/dist/notifications/index.js +477 -0
- package/dist/notifications/notifications.d.ts +53 -0
- package/dist/notifications/useNotifyfeed.d.ts +32 -0
- package/dist/periodPicker/index.cjs +1 -1
- package/dist/periodPicker/index.js +126 -139
- package/dist/popover/OnePopover.vue.d.ts +2 -0
- package/dist/popover/index.cjs +1 -0
- package/dist/popover/index.d.ts +3 -0
- package/dist/popover/index.js +102 -0
- package/dist/popover/popover.d.ts +31 -0
- package/dist/progress/OneProgress.vue.d.ts +2 -0
- package/dist/progress/index.cjs +1 -0
- package/dist/progress/index.d.ts +3 -0
- package/dist/progress/index.js +74 -0
- package/dist/progress/progress.d.ts +32 -0
- package/dist/searchInput/OneSearchInput.vue.d.ts +2 -0
- package/dist/searchInput/index.cjs +1 -0
- package/dist/searchInput/index.d.ts +3 -0
- package/dist/searchInput/index.js +103 -0
- package/dist/searchInput/searchInput.d.ts +39 -0
- package/dist/settings/OneSettingsLayout.vue.d.ts +2 -0
- package/dist/settings/OneSettingsRow.vue.d.ts +2 -0
- package/dist/settings/OneSettingsSection.vue.d.ts +2 -0
- package/dist/settings/index.cjs +1 -0
- package/dist/settings/index.d.ts +4 -0
- package/dist/settings/index.js +116 -0
- package/dist/spinner/OneSpinner.vue.d.ts +2 -0
- package/dist/spinner/index.cjs +1 -0
- package/dist/spinner/index.d.ts +3 -0
- package/dist/spinner/index.js +30 -0
- package/dist/spinner/spinner.d.ts +10 -0
- package/dist/stageBadge/index.cjs +1 -1
- package/dist/stageBadge/index.js +18 -16
- package/dist/stepper/OneStepper.vue.d.ts +2 -0
- package/dist/stepper/index.cjs +1 -0
- package/dist/stepper/index.d.ts +3 -0
- package/dist/stepper/index.js +53 -0
- package/dist/stepper/stepper.d.ts +24 -0
- package/dist/style.css +1 -1
- package/dist/switch/index.cjs +1 -1
- package/dist/switch/index.js +3 -4
- package/dist/tabs/OneTab.vue.d.ts +2 -0
- package/dist/tabs/OneTabs.vue.d.ts +2 -0
- package/dist/tabs/index.cjs +1 -0
- package/dist/tabs/index.d.ts +4 -0
- package/dist/tabs/index.js +64 -0
- package/dist/tabs/tabs.d.ts +7 -0
- package/dist/toast/OneMascotToast.vue.d.ts +2 -0
- package/dist/toast/RabbitIcon.vue.d.ts +2 -0
- package/dist/toast/index.cjs +1 -1
- package/dist/toast/index.d.ts +4 -0
- package/dist/toast/index.js +139 -74
- package/dist/toast/useMascotToast.d.ts +12 -0
- package/dist/tooltip/OneTooltip.vue.d.ts +2 -0
- package/dist/tooltip/index.cjs +2 -2
- package/dist/tooltip/index.d.ts +1 -0
- package/dist/tooltip/index.js +33 -30
- package/dist/useConfirm-6344b49d.cjs +1 -0
- package/dist/useConfirm-74e99a5c.js +23 -0
- package/dist/useCursorList-5c1b57aa.js +62 -0
- package/dist/useCursorList-e1cb41e7.cjs +1 -0
- package/dist/useElementWidth-b36a7ce9.js +40 -0
- package/dist/useElementWidth-b3e53f48.cjs +1 -0
- package/dist/useFileUpload-228dbc07.js +24 -0
- package/dist/useFileUpload-f47622bb.cjs +1 -0
- package/dist/useIsMobile-7b1f08cf.cjs +1 -0
- package/dist/useIsMobile-98fc0cf9.js +7 -0
- package/dist/useMediaQuery-1d87df02.cjs +1 -0
- package/dist/useMediaQuery-77a19b18.js +37 -0
- package/dist/useModal-6a5d870b.js +30 -0
- package/dist/useModal-aa6f4a57.cjs +1 -0
- package/dist/userList/OneUserInviteModal.vue.d.ts +2 -0
- package/dist/userList/OneUserList.vue.d.ts +2 -0
- package/dist/userList/OneUserListItem.vue.d.ts +2 -0
- package/dist/userList/index.cjs +1 -0
- package/dist/userList/index.d.ts +4 -0
- package/dist/userList/index.js +559 -0
- package/dist/utils/clipboard.d.ts +6 -0
- package/dist/utils/format.d.ts +17 -0
- package/dist/utils/index.cjs +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +125 -0
- package/dist/utils/string.d.ts +25 -0
- package/dist/utils/versionChecker.d.ts +26 -0
- package/package.json +215 -24
- package/dist/ChevronRightIcon-7a2f0c20.cjs +0 -1
- package/dist/OneHelpMenu-c6e88d8f.cjs +0 -1
- package/dist/OneMarkdown.vue_vue_type_style_index_0_lang-0ea8fbf8.cjs +0 -1
- package/dist/OneMarkdown.vue_vue_type_style_index_0_lang-4ed993c7.js +0 -1
- package/dist/SpinnerIcon-ccb6f3fc.cjs +0 -1
- package/dist/SpinnerIcon.vue_vue_type_style_index_0_lang-0ea8fbf8.cjs +0 -1
- package/dist/SpinnerIcon.vue_vue_type_style_index_0_lang-4ed993c7.js +0 -1
- package/dist/useModal-0c73777f.cjs +0 -1
- package/dist/useModal-7fe9444b.js +0 -194
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface AppErrorHandlerOptions {
|
|
2
|
+
/** Reporter hook — the place for Sentry.captureException(err). */
|
|
3
|
+
onError?: (err: unknown, info: string) => void;
|
|
4
|
+
/**
|
|
5
|
+
* Vue error `info` values treated as critical (the app cannot render).
|
|
6
|
+
* Defaults to setup/render failures.
|
|
7
|
+
*/
|
|
8
|
+
criticalInfos?: string[];
|
|
9
|
+
/** What to do on a critical error. Defaults to showing OneCrashScreen. */
|
|
10
|
+
onCritical?: (err: unknown) => void;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Factory for `app.config.errorHandler`: reports every error via `onError`,
|
|
14
|
+
* logs it, and escalates critical ones (setup/render crashes) to the crash
|
|
15
|
+
* screen. The backend/reporter stays in the app — the library only takes
|
|
16
|
+
* callbacks.
|
|
17
|
+
*
|
|
18
|
+
* ```ts
|
|
19
|
+
* app.config.errorHandler = createAppErrorHandler({
|
|
20
|
+
* onError: (err) => Sentry.captureException(err)
|
|
21
|
+
* })
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function createAppErrorHandler(opts?: AppErrorHandlerOptions): (err: unknown, _instance: unknown, info: string) => void;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ExtractPropTypes } from 'vue';
|
|
2
|
+
import type { TranslateFunction } from '../i18n/plugin';
|
|
2
3
|
export type ErrorsVariantType = '500' | '404' | '403';
|
|
3
4
|
export declare const errorsProps: {
|
|
4
5
|
statusMessage: {
|
|
@@ -17,5 +18,9 @@ export declare const errorsProps: {
|
|
|
17
18
|
type: PropType<ErrorsVariantType>;
|
|
18
19
|
default: string;
|
|
19
20
|
};
|
|
21
|
+
t: {
|
|
22
|
+
type: PropType<TranslateFunction>;
|
|
23
|
+
default: any;
|
|
24
|
+
};
|
|
20
25
|
};
|
|
21
26
|
export type ErrorsProps = ExtractPropTypes<typeof errorsProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),o=require("../_plugin-vue_export-helper-f246444f.cjs"),s={statusMessage:{type:String,required:!1},statusText:{type:String,required:!1},requestId:{type:String,required:!1},statusCode:{type:String,default:"403"}},n=e.defineComponent({name:"ErrorPage",props:s});const a={class:"error-container"},l={class:"text-8xl text-secondary-content"},d={key:0},i={key:1,class:"pt-5"},p={class:"request-info hidden"};function c(u,t,m,g,_,y){const r=e.resolveComponent("router-link");return e.openBlock(),e.createElementBlock("div",a,[e.createElementVNode("h1",l,e.toDisplayString(u.statusCode),1),u.statusMessage?(e.openBlock(),e.createElementBlock("p",d,e.toDisplayString(u.statusMessage),1)):e.createCommentVNode("",!0),t[4]||(t[4]=e.createElementVNode("div",{class:"border-b border-secondary-stroke w-full pt-10"},null,-1)),u.statusText?(e.openBlock(),e.createElementBlock("p",i,e.toDisplayString(u.statusText),1)):e.createCommentVNode("",!0),e.createElementVNode("div",p,[e.createElementVNode("p",null,[t[0]||(t[0]=e.createElementVNode("strong",null,"Request ID:",-1)),e.createTextVNode(" "+e.toDisplayString(u.requestId),1)]),t[1]||(t[1]=e.createElementVNode("button",{class:"copy-btn"},"Скопіювати",-1)),t[2]||(t[2]=e.createElementVNode("p",null,[e.createTextVNode(" Передайте цю інформацію розробнику або напишіть в "),e.createElementVNode("a",{href:"https://t.me/telegram_bot",target:"_blank"},"Telegram-бот")],-1))]),e.createVNode(r,{to:"/",class:"home-link"},{default:e.withCtx(()=>[...t[3]||(t[3]=[e.createTextVNode("Перейти на головну сторінку",-1)])]),_:1})])}const E=o._export_sfc(n,[["render",c],["__scopeId","data-v-41b3a0e1"]]);exports.OneErrorPage=E;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),b=require("../i18n/index.cjs"),F=require("../_plugin-vue_export-helper-f246444f.cjs"),G=require("vue-router"),N=require("../button/index.cjs"),U=require("../clipboard-494e1513.cjs");require("../SpinnerIcon-01be39fe.cjs");const A={statusMessage:{type:String,required:!1},statusText:{type:String,required:!1},requestId:{type:String,required:!1},statusCode:{type:String,default:"403"},t:{type:Function,default:void 0}},K=e.defineComponent({name:"ErrorPage",props:A,setup(t){const n=b.useOnebI18n();return{t:e.computed(()=>t.t??n)}}});const J={class:"error-container"},Q={class:"text-8xl text-secondary-content"},W={key:0},X={key:1,class:"pt-5"},Y={class:"request-info hidden"};function Z(t,n,m,o,u,c){const r=e.resolveComponent("router-link");return e.openBlock(),e.createElementBlock("div",J,[e.createElementVNode("h1",Q,e.toDisplayString(t.statusCode),1),t.statusMessage?(e.openBlock(),e.createElementBlock("p",W,e.toDisplayString(t.statusMessage),1)):e.createCommentVNode("",!0),n[3]||(n[3]=e.createElementVNode("div",{class:"border-b border-secondary-stroke w-full pt-10"},null,-1)),t.statusText?(e.openBlock(),e.createElementBlock("p",X,e.toDisplayString(t.statusText),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Y,[e.createElementVNode("p",null,[n[0]||(n[0]=e.createElementVNode("strong",null,"Request ID:",-1)),e.createTextVNode(" "+e.toDisplayString(t.requestId),1)]),n[1]||(n[1]=e.createElementVNode("button",{class:"copy-btn"},"Скопіювати",-1)),n[2]||(n[2]=e.createElementVNode("p",null,[e.createTextVNode(" Передайте цю інформацію розробнику або напишіть в "),e.createElementVNode("a",{href:"https://t.me/telegram_bot",target:"_blank"},"Telegram-бот")],-1))]),e.createVNode(r,{to:"/",class:"home-link"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(t.t("ui.errors.go_home")),1)]),_:1})])}const ee=F._export_sfc(K,[["render",Z],["__scopeId","data-v-4ac01274"]]),te={class:"flex items-center justify-center gap-2 sm:gap-4"},oe={key:0,class:"relative"},ne={class:"one-error-logo-bounce"},se=["src"],re={key:0,class:"absolute inset-0 animate-ping opacity-20","aria-hidden":"true"},ae=["src"],B="text-[100px] sm:text-[160px] font-bold text-secondary-stroke leading-none select-none",le=e.defineComponent({__name:"OneErrorHero",props:{left:{type:String,required:!0},middle:{type:String,required:!0},right:{type:String,required:!0},logoSrc:{type:String,default:void 0}},setup(t){const n=t,m=e.useSlots(),o=e.computed(()=>!!m.default),u=e.computed(()=>o.value||!!n.logoSrc);return(c,r)=>(e.openBlock(),e.createElementBlock("div",te,[e.createElementVNode("span",{class:e.normalizeClass(B)},e.toDisplayString(t.left),1),u.value?(e.openBlock(),e.createElementBlock("div",oe,[e.createElementVNode("div",ne,[e.renderSlot(c.$slots,"default",{},()=>[e.createElementVNode("img",{src:t.logoSrc,class:"w-20 h-20 sm:w-28 sm:h-28",alt:"Logo"},null,8,se)],!0)]),t.logoSrc&&!o.value?(e.openBlock(),e.createElementBlock("div",re,[e.createElementVNode("img",{src:t.logoSrc,class:"w-20 h-20 sm:w-28 sm:h-28",alt:""},null,8,ae)])):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("span",{key:1,class:e.normalizeClass(B)},e.toDisplayString(t.middle),1)),e.createElementVNode("span",{class:e.normalizeClass(B)},e.toDisplayString(t.right),1)]))}});const L=F._export_sfc(le,[["__scopeId","data-v-59d54d25"]]),ce={class:"w-full"},ie={class:"flex items-center justify-between mb-4"},ue={class:"flex items-center gap-4"},de={class:"text-sm text-secondary-base"},me={class:"text-success-content","data-test":"snake-score"},pe={key:0,class:"text-sm text-danger-base font-medium","data-test":"snake-status"},ve={key:1,class:"text-sm text-success-content","data-test":"snake-status"},fe={key:2,class:"text-sm text-secondary-content","data-test":"snake-status"},ye={class:"flex gap-2"},ge={class:"bg-secondary-body-active border border-secondary-stroke rounded-20 p-4 shadow-sm"},xe=["data-snake"],ke={key:0,class:"absolute inset-1 rounded-md border border-success-active/40"},_e={key:1,class:"absolute inset-2 rounded-sm bg-danger-base"},he={class:"text-xs text-secondary-content text-center mt-3"},R=e.defineComponent({__name:"OneSnakeGame",props:{gridSize:{type:Number,default:15},tickMs:{type:Number,default:170},t:{type:Function,default:void 0}},emits:["score","game-over"],setup(t,{expose:n,emit:m}){const o=t,u=m,c=b.useOnebI18n(),r=e.computed(()=>o.t??c),d=e.ref([]),p=e.ref({x:1,y:0}),y=e.ref({x:1,y:0}),v=e.ref({x:0,y:0}),g=e.ref(0),f=e.ref(!1),i=e.ref(!1);let _=null;const M=e.computed(()=>Array.from({length:o.gridSize*o.gridSize},(a,s)=>({x:s%o.gridSize,y:Math.floor(s/o.gridSize)}))),w=a=>{var s,l;return((s=d.value[0])==null?void 0:s.x)===a.x&&((l=d.value[0])==null?void 0:l.y)===a.y},D=a=>d.value.some((s,l)=>l!==0&&s.x===a.x&&s.y===a.y),V=a=>v.value.x===a.x&&v.value.y===a.y,O=a=>{const s=[];for(let x=0;x<o.gridSize;x+=1)for(let k=0;k<o.gridSize;k+=1)a.some(j=>j.x===k&&j.y===x)||s.push({x:k,y:x});if(s.length===0)return{x:0,y:0};const l=Math.floor(Math.random()*s.length);return s[l]},S=()=>{_!=null&&(clearInterval(_),_=null),f.value=!1},T=()=>{S(),i.value=!0,u("game-over",g.value)},h=()=>{S(),d.value=[{x:Math.floor(o.gridSize/2),y:Math.floor(o.gridSize/2)}],p.value={x:1,y:0},y.value={x:1,y:0},v.value=O(d.value),g.value=0,i.value=!1},H=a=>{p.value.x+a.x===0&&p.value.y+a.y===0||(y.value=a)},P=()=>{p.value=y.value;const a=d.value[0],s={x:a.x+p.value.x,y:a.y+p.value.y};if(s.x<0||s.x>=o.gridSize||s.y<0||s.y>=o.gridSize){T();return}if(d.value.some(k=>k.x===s.x&&k.y===s.y)){T();return}const x=[s,...d.value];s.x===v.value.x&&s.y===v.value.y?(g.value+=1,u("score",g.value),v.value=O(x)):x.pop(),d.value=x},q=()=>{_!=null||i.value||(f.value=!0,_=setInterval(P,o.tickMs))},I=()=>{if(i.value){h();return}f.value?S():q()},z=a=>{const s=a.key.toLowerCase(),l={arrowup:{x:0,y:-1},w:{x:0,y:-1},arrowdown:{x:0,y:1},s:{x:0,y:1},arrowleft:{x:-1,y:0},a:{x:-1,y:0},arrowright:{x:1,y:0},d:{x:1,y:0}};l[s]?(H(l[s]),!f.value&&!i.value&&q()):s===" "?(a.preventDefault(),i.value||I()):s==="enter"&&i.value&&h()};return e.onMounted(()=>{h(),window.addEventListener("keydown",z)}),e.onUnmounted(()=>{S(),window.removeEventListener("keydown",z)}),n({score:g,isRunning:f,isGameOver:i,resetGame:h}),(a,s)=>(e.openBlock(),e.createElementBlock("div",ce,[e.createElementVNode("div",ie,[e.createElementVNode("div",ue,[e.createElementVNode("span",de,[e.createTextVNode(e.toDisplayString(r.value("ui.errors.snake_score"))+": ",1),e.createElementVNode("strong",me,e.toDisplayString(g.value),1)]),i.value?(e.openBlock(),e.createElementBlock("span",pe,e.toDisplayString(r.value("ui.errors.snake_game_over")),1)):f.value?(e.openBlock(),e.createElementBlock("span",ve,e.toDisplayString(r.value("ui.errors.snake_running")),1)):(e.openBlock(),e.createElementBlock("span",fe,e.toDisplayString(r.value("ui.errors.snake_paused")),1))]),e.createElementVNode("div",ye,[e.createElementVNode("button",{type:"button",class:"px-3 py-1.5 rounded-lg text-sm text-white bg-success-base hover:bg-success-hover transition","data-test":"snake-toggle",onClick:I},e.toDisplayString(i.value?r.value("ui.errors.snake_restart"):f.value?r.value("ui.errors.snake_pause"):r.value("ui.errors.snake_start")),1),e.createElementVNode("button",{type:"button",class:"px-3 py-1.5 rounded-lg text-sm border border-secondary-stroke text-secondary-base hover:bg-secondary-body-hover transition","data-test":"snake-reset",onClick:h},e.toDisplayString(r.value("ui.errors.snake_reset")),1)])]),e.createElementVNode("div",ge,[e.createElementVNode("div",{class:"w-full mx-auto",style:e.normalizeStyle({display:"grid",gridTemplateColumns:`repeat(${t.gridSize}, minmax(0, 1fr))`})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M.value,l=>(e.openBlock(),e.createElementBlock("div",{key:`${l.x}-${l.y}`,class:e.normalizeClass(["relative aspect-square border border-secondary-stroke/60",[w(l)?"bg-success-active shadow-inner":D(l)?"bg-success-25":V(l)?"bg-danger-glow":"bg-white"]]),"data-test":"snake-cell","data-snake":w(l)?"head":D(l)?"body":V(l)?"food":void 0},[w(l)?(e.openBlock(),e.createElementBlock("div",ke)):V(l)?(e.openBlock(),e.createElementBlock("div",_e)):e.createCommentVNode("",!0)],10,xe))),128))],4)]),e.createElementVNode("p",he,e.toDisplayString(r.value("ui.errors.snake_instructions")),1)]))}}),be={class:"flex flex-col items-center justify-center p-4"},Se={class:"text-center mb-8"},Ee={class:"text-xl text-secondary-base mt-2"},Ne={class:"flex gap-4 mt-4"},we=e.defineComponent({__name:"OneNotFoundPage",props:{logoSrc:{type:String,default:void 0},homeTo:{type:[String,Object],default:"/"},withGame:{type:Boolean,default:!0},t:{type:Function,default:void 0}},setup(t){const n=t,m=b.useOnebI18n(),o=e.computed(()=>n.t??m),u=G.useRouter(),c=e.ref(!1),r=()=>{u?u.back():typeof window<"u"&&window.history.back()};return(d,p)=>{const y=e.resolveComponent("RouterLink");return e.openBlock(),e.createElementBlock("div",be,[e.createElementVNode("div",Se,[e.createVNode(L,{left:"4",middle:"0",right:"4","logo-src":t.logoSrc},e.createSlots({_:2},[d.$slots.logo?{name:"default",fn:e.withCtx(()=>[e.renderSlot(d.$slots,"logo")]),key:"0"}:void 0]),1032,["logo-src"]),e.createElementVNode("p",Ee,e.toDisplayString(o.value("ui.errors.page_not_found")),1)]),t.withGame&&!c.value?(e.openBlock(),e.createBlock(e.unref(N.OneButton),{key:0,variant:"success",size:"lg",label:o.value("ui.errors.play_snake"),"data-test":"nf-play",onClick:p[0]||(p[0]=v=>c.value=!0)},null,8,["label"])):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createBlock(R,{key:1,class:"max-w-2xl",t:o.value},null,8,["t"])):e.createCommentVNode("",!0),e.createElementVNode("div",Ne,[e.createVNode(y,{to:t.homeTo,class:"text-info-base hover:text-info-active underline text-sm","data-test":"nf-home"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.value("ui.errors.go_home")),1)]),_:1},8,["to"]),e.createElementVNode("button",{type:"button",class:"text-secondary-base hover:text-secondary-hover underline text-sm","data-test":"nf-back",onClick:r},e.toDisplayString(o.value("ui.errors.go_back")),1)])])}}}),Ve={class:"flex flex-col items-center justify-center p-4"},Be={class:"text-center mb-8"},Ce={class:"text-xl text-secondary-base mt-2"},$e={class:"text-sm text-secondary-content mt-2 max-w-md mx-auto"},De={key:0,class:"mb-6 text-sm text-secondary-base text-center","data-test":"se-request"},Oe={class:"flex flex-col items-center gap-4"},Te=e.defineComponent({__name:"OneServerErrorPage",props:{logoSrc:{type:String,default:void 0},homeTo:{type:[String,Object],default:"/"},requestId:{type:String,default:void 0},t:{type:Function,default:void 0}},setup(t){const n=t,m=b.useOnebI18n(),o=e.computed(()=>n.t??m),u=e.ref(!1);let c=null;const r=async()=>{!n.requestId||!await U.copyToClipboard(n.requestId)||(u.value=!0,c!=null&&clearTimeout(c),c=setTimeout(()=>{u.value=!1,c=null},2e3))},d=()=>{window.location.reload()};return e.onBeforeUnmount(()=>{c!=null&&clearTimeout(c)}),(p,y)=>{const v=e.resolveComponent("RouterLink");return e.openBlock(),e.createElementBlock("div",Ve,[e.createElementVNode("div",Be,[e.createVNode(L,{left:"5",middle:"0",right:"0","logo-src":t.logoSrc},e.createSlots({_:2},[p.$slots.logo?{name:"default",fn:e.withCtx(()=>[e.renderSlot(p.$slots,"logo")]),key:"0"}:void 0]),1032,["logo-src"]),e.createElementVNode("p",Ce,e.toDisplayString(o.value("ui.errors.server_error")),1),e.createElementVNode("p",$e,e.toDisplayString(o.value("ui.errors.server_error_hint")),1)]),t.requestId?(e.openBlock(),e.createElementBlock("div",De,[e.createTextVNode(e.toDisplayString(o.value("ui.errors.request_id"))+": ",1),e.createElementVNode("strong",null,e.toDisplayString(t.requestId),1),e.createElementVNode("button",{type:"button",class:"ml-2 text-info-base hover:text-info-active underline","data-test":"se-copy",onClick:r},e.toDisplayString(u.value?o.value("ui.errors.copied"):o.value("ui.errors.copy")),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Oe,[e.createVNode(e.unref(N.OneButton),{variant:"primary",size:"lg",label:o.value("ui.errors.reload_page"),"data-test":"se-reload",onClick:d},null,8,["label"]),e.renderSlot(p.$slots,"support"),e.createVNode(v,{to:t.homeTo,class:"text-info-base hover:text-info-active underline text-sm","data-test":"se-home"},{default:e.withCtx(()=>[e.createTextVNode(e.toDisplayString(o.value("ui.errors.go_home")),1)]),_:1},8,["to"])])])}}}),E=e.ref(!1),C=e.ref(null);function $(){return{show:E,error:C,trigger:m=>{E.value||(C.value=m,E.value=!0)},dismiss:()=>{E.value=!1,C.value=null}}}const qe={key:0,class:"fixed inset-0 z-[10000] flex items-center justify-center bg-secondary-body p-6",role:"alert","aria-live":"assertive","data-test":"crash-screen"},Ie={class:"flex w-full max-w-[480px] flex-col items-center text-center"},ze={key:0,class:"mb-6"},je=["src"],Fe={class:"mb-3 text-2xl font-semibold"},Le={class:"mb-8 text-base text-secondary-base","data-test":"crash-message"},Re={key:2,"data-test":"crash-details",class:"mt-6 text-xs text-secondary-content"},Me=e.defineComponent({__name:"OneCrashScreen",props:{logoSrc:{type:String,default:void 0},accountUrl:{type:String,default:void 0},autoReloadSeconds:{type:Number,default:10},persistent:{type:Boolean,default:!1},showDetails:{type:Boolean,default:!1},t:{type:Function,default:void 0}},setup(t){const n=t,m=b.useOnebI18n(),o=e.computed(()=>n.t??m),{show:u,error:c}=$(),r=e.ref(n.autoReloadSeconds);let d=null;const p=e.computed(()=>{const i=c.value;return i instanceof Error?`${i.name}: ${i.message}`:String(i??"Unknown error")}),y=e.computed(()=>n.persistent?o.value("ui.crash.persistent"):r.value>0?o.value("ui.crash.countdown",{n:r.value}):o.value("ui.crash.reloading")),v=()=>{d!=null&&(clearInterval(d),d=null)},g=()=>{v(),window.location.reload()},f=()=>{n.accountUrl&&(v(),window.location.href=n.accountUrl)};return e.watch(u,i=>{v(),i&&(r.value=n.autoReloadSeconds,!n.persistent&&(d=setInterval(()=>{r.value-=1,r.value<=0&&(v(),window.location.reload())},1e3)))},{immediate:!0}),e.onBeforeUnmount(()=>{v()}),(i,_)=>e.unref(u)?(e.openBlock(),e.createElementBlock("div",qe,[e.createElementVNode("div",Ie,[t.logoSrc||i.$slots.logo?(e.openBlock(),e.createElementBlock("div",ze,[e.renderSlot(i.$slots,"logo",{},()=>[e.createElementVNode("img",{src:t.logoSrc,alt:"",class:"h-20 w-20"},null,8,je)])])):e.createCommentVNode("",!0),e.createElementVNode("h1",Fe,e.toDisplayString(o.value("ui.crash.title")),1),e.createElementVNode("p",Le,e.toDisplayString(y.value),1),e.createVNode(e.unref(N.OneButton),{class:"w-full mb-3",variant:"primary",label:o.value("ui.crash.reload_now"),"data-test":"crash-reload",onClick:g},null,8,["label"]),t.accountUrl?(e.openBlock(),e.createBlock(e.unref(N.OneButton),{key:1,class:"w-full",variant:"secondary",label:o.value("ui.crash.open_account"),"data-test":"crash-account",onClick:f},null,8,["label"])):e.createCommentVNode("",!0),t.showDetails?(e.openBlock(),e.createElementBlock("p",Re,e.toDisplayString(p.value),1)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)}});function He(t={}){const n=t.criticalInfos??["setup function","render function"];return(m,o,u)=>{var c;try{(c=t.onError)==null||c.call(t,m,u)}catch{}console.error("[Vue Error]",m,u),n.includes(u)&&(t.onCritical??$().trigger)(m)}}exports.OneCrashScreen=Me;exports.OneErrorPage=ee;exports.OneNotFoundPage=we;exports.OneServerErrorPage=Te;exports.OneSnakeGame=R;exports.createAppErrorHandler=He;exports.useCrashState=$;
|
|
@@ -1,2 +1,10 @@
|
|
|
1
1
|
export { default as OneErrorPage } from './OneErrorPage.vue';
|
|
2
|
+
export { default as OneNotFoundPage } from './OneNotFoundPage.vue';
|
|
3
|
+
export { default as OneServerErrorPage } from './OneServerErrorPage.vue';
|
|
4
|
+
export { default as OneSnakeGame } from './OneSnakeGame.vue';
|
|
5
|
+
export { default as OneCrashScreen } from './OneCrashScreen.vue';
|
|
6
|
+
export { useCrashState } from './useCrashState';
|
|
7
|
+
export { createAppErrorHandler } from './createAppErrorHandler';
|
|
2
8
|
export type { ErrorsProps } from './errorsType';
|
|
9
|
+
export type { CrashState } from './useCrashState';
|
|
10
|
+
export type { AppErrorHandlerOptions } from './createAppErrorHandler';
|