vue-dialog-view 1.8.2 → 1.8.3

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.
@@ -1,11 +1,11 @@
1
- import { defineComponent as b, ref as g, computed as w, watch as y, nextTick as d, onMounted as B, onBeforeUnmount as k, openBlock as s, createElementBlock as n, mergeProps as C, createElementVNode as f, renderSlot as i, withModifiers as _, createCommentVNode as c } from "vue";
2
- const D = ["closedBy"], M = {
1
+ import { defineComponent as y, ref as v, computed as B, watch as C, nextTick as s, onMounted as k, onBeforeUnmount as _, onDeactivated as D, onActivated as M, openBlock as n, createElementBlock as u, mergeProps as $, createElementVNode as p, renderSlot as c, withModifiers as E, createCommentVNode as f } from "vue";
2
+ const T = ["closedBy"], N = {
3
3
  key: 0,
4
4
  class: "_4d394b1507fdc584"
5
- }, $ = { class: "_088d860d2fd75292" }, T = { class: "_da3b3b2a4aeed1ee" }, E = {
5
+ }, O = { class: "_088d860d2fd75292" }, P = { class: "_da3b3b2a4aeed1ee" }, R = {
6
6
  key: 1,
7
7
  class: "_61879ba330d9a71c"
8
- }, N = /* @__PURE__ */ b({
8
+ }, q = /* @__PURE__ */ y({
9
9
  __name: "DialogView.obf",
10
10
  props: {
11
11
  modelValue: { type: Boolean },
@@ -15,71 +15,81 @@ const D = ["closedBy"], M = {
15
15
  closeOnClickMask: { type: Boolean, default: !1 }
16
16
  },
17
17
  emits: ["update:modelValue", "closed"],
18
- setup(a, { expose: r, emit: p }) {
19
- const o = a, t = p, e = g(), m = () => {
18
+ setup(a, { expose: m, emit: h }) {
19
+ const o = a, t = h, e = v(), g = () => {
20
20
  t("update:modelValue", !0);
21
- }, u = () => {
21
+ }, i = () => {
22
22
  t("update:modelValue", !1);
23
- }, v = (l) => {
24
- l.preventDefault(), o.closable && u();
25
- }, h = () => {
26
- if (!o.closable && o.modelValue) {
27
- d(() => {
28
- e.value && !e.value.open && e.value.showModal();
29
- });
30
- return;
23
+ }, V = (l) => {
24
+ l.preventDefault(), o.closable && i();
25
+ }, d = v(!1), b = () => {
26
+ if (!d.value) {
27
+ if (!o.closable && o.modelValue) {
28
+ s(() => {
29
+ e.value && !e.value.open && e.value.showModal();
30
+ });
31
+ return;
32
+ }
33
+ o.modelValue && t("update:modelValue", !1), s(() => {
34
+ o.modelValue && e.value && !e.value.open && e.value.showModal();
35
+ }), t("closed");
31
36
  }
32
- o.modelValue && t("update:modelValue", !1), d(() => {
33
- o.modelValue && e.value && !e.value.open && e.value.showModal();
34
- }), t("closed");
35
- }, V = w(() => o.closable ? o.closeOnClickMask ? "any" : "closerequest" : "none");
36
- return y(() => o.modelValue, async (l) => {
37
- await d(), l ? e.value && !e.value.open && e.value.showModal() : e.value && e.value.open && e.value.close();
38
- }), B(() => {
37
+ }, w = B(() => o.closable ? o.closeOnClickMask ? "any" : "closerequest" : "none");
38
+ C(() => o.modelValue, async (l) => {
39
+ await s(), l ? e.value && !e.value.open && e.value.showModal() : e.value && e.value.open && e.value.close();
40
+ });
41
+ const r = () => {
39
42
  o.modelValue && e.value && !e.value.open && e.value.showModal();
40
- }), k(() => {
43
+ };
44
+ return k(() => {
45
+ r();
46
+ }), _(() => {
41
47
  e.value && e.value.open && e.value.close();
42
- }), r({
48
+ }), D(() => {
49
+ e.value && e.value.open && (d.value = !0, e.value.close(), s(() => d.value = !1));
50
+ }), M(() => {
51
+ r();
52
+ }), m({
43
53
  get: () => e.value,
44
- open: m,
45
- close: u
46
- }), (l, O) => (s(), n("dialog", C({
54
+ open: g,
55
+ close: i
56
+ }), (l, A) => (n(), u("dialog", $({
47
57
  ref_key: "dialogRef",
48
58
  ref: e,
49
59
  class: "_b4102a3b79656a37"
50
60
  }, l.$attrs, {
51
- onClose: h,
52
- onCancel: v,
53
- closedBy: V.value
61
+ onClose: b,
62
+ onCancel: V,
63
+ closedBy: w.value
54
64
  }), [
55
- a.showTitleBar ? (s(), n("div", M, [
56
- f("span", $, [
57
- i(l.$slots, "title")
65
+ a.showTitleBar ? (n(), u("div", N, [
66
+ p("span", O, [
67
+ c(l.$slots, "title")
58
68
  ]),
59
- a.showCloseButton && a.closable ? (s(), n("button", {
69
+ a.showCloseButton && a.closable ? (n(), u("button", {
60
70
  key: 0,
61
71
  type: "button",
62
72
  "aria-label": "Close the dialog",
63
73
  class: "_468ff1da37ead40a",
64
- onClick: _(u, ["prevent"])
65
- }, "×")) : c("", !0)
66
- ])) : c("", !0),
67
- f("div", T, [
68
- i(l.$slots, "default")
74
+ onClick: E(i, ["prevent"])
75
+ }, "×")) : f("", !0)
76
+ ])) : f("", !0),
77
+ p("div", P, [
78
+ c(l.$slots, "default")
69
79
  ]),
70
- l.$slots.footer ? (s(), n("div", E, [
71
- i(l.$slots, "footer")
72
- ])) : c("", !0)
73
- ], 16, D));
80
+ l.$slots.footer ? (n(), u("div", R, [
81
+ c(l.$slots, "footer")
82
+ ])) : f("", !0)
83
+ ], 16, T));
74
84
  }
75
- }), R = {
85
+ }), U = {
76
86
  install: (a) => {
77
- a.component("DialogView", N);
87
+ a.component("DialogView", q);
78
88
  }
79
89
  };
80
90
  export {
81
- N as DialogView,
82
- R as DialogViewPlugin,
83
- R as default
91
+ q as DialogView,
92
+ U as DialogViewPlugin,
93
+ U as default
84
94
  };
85
95
  //# sourceMappingURL=cssless-obfuscated.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cssless-obfuscated.es.js","sources":["../src/DialogView.obf.vue","../src/index.ts"],"sourcesContent":["<template>\n <dialog\n ref=\"dialogRef\"\n class=\"_b4102a3b79656a37\"\n v-bind=\"$attrs\"\n @close=\"handleDialogClose\"\n @cancel=\"handleDialogCancel\"\n :closedBy=\"closedBy\"\n >\n <div v-if=\"showTitleBar\" class=\"_4d394b1507fdc584\">\n <span class=\"_088d860d2fd75292\">\n <slot name=\"title\"></slot>\n </span>\n <button\n v-if=\"showCloseButton && closable\"\n type=\"button\"\n aria-label=\"Close the dialog\"\n class=\"_468ff1da37ead40a\"\n @click.prevent=\"closeDialog\"\n >&times;</button>\n </div>\n \n <div class=\"_da3b3b2a4aeed1ee\">\n <slot></slot>\n </div>\n\n <div v-if=\"$slots.footer\" class=\"_61879ba330d9a71c\">\n <slot name=\"footer\"></slot>\n </div>\n </dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, computed, nextTick, onMounted, onBeforeUnmount } from 'vue'\n\ninterface Props {\n modelValue: boolean\n showTitleBar?: boolean\n showCloseButton?: boolean\n closable?: boolean\n closeOnClickMask?: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n showTitleBar: true,\n showCloseButton: true,\n closable: true,\n closeOnClickMask: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'closed'): void\n}>()\n\nconst dialogRef = ref<HTMLDialogElement>();\n\nconst openDialog = (): void => {\n emit('update:modelValue', true)\n}\n\nconst closeDialog = (): void => {\n emit('update:modelValue', false)\n}\n\nconst handleDialogCancel = (e: Event) => {\n e.preventDefault();\n if (props.closable) closeDialog();\n}\n\nconst handleDialogClose = (): void => {\n if (!props.closable) {\n if (props.modelValue) {\n // not programmatically close\n // re-open the dialog\n nextTick(() => {\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }) // Avoid using 'cancel' event because some browsers handle it incorrectly, see https://issues.chromium.org/issues/41491338\n return;\n }\n }\n if (props.modelValue) {\n emit('update:modelValue', false)\n }\n nextTick(() => {\n if (props.modelValue) {\n // model value keep unchanged\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }\n })\n emit('closed')\n}\n\nconst closedBy = computed(() => props.closable ? (props.closeOnClickMask ? 'any' : 'closerequest') : 'none') // see https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/closedBy\n\nwatch(() => props.modelValue, async (newValue: boolean) => {\n await nextTick()\n \n if (newValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n } else {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n }\n})\n\nonMounted(() => {\n if (props.modelValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n }\n});\n\nonBeforeUnmount(() => {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n});\n\ndefineExpose({\n get: () => dialogRef.value,\n open: openDialog,\n close: closeDialog,\n});\n</script>\n\n<style>\n._b4102a3b79656a37 {\n padding: var(--dialog-padding, 20px);\n border-radius: 5px;\n border: 1px solid gray;\n outline: 0 !important;\n max-width: calc(100% - 2em);\n max-height: calc(100% - 2em);\n box-sizing: border-box;\n overflow: hidden;\n}\n\n._b4102a3b79656a37[open] {\n display: flex;\n flex-direction: column;\n}\n\n._b4102a3b79656a37::backdrop {\n background: rgba(0, 0, 0, 0.5);\n}\n\n._4d394b1507fdc584 {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 0.5em;\n min-height: var(--dialog-title-height, 24px);\n white-space: pre;\n overflow: hidden;\n user-select: none;\n}\n\n._088d860d2fd75292 {\n flex: 1;\n text-align: center;\n font-weight: bold;\n font-size: large;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n._468ff1da37ead40a {\n margin-left: 0.5em;\n text-decoration: none;\n color: #666;\n font-size: 1.5em;\n line-height: 1;\n width: 24px;\n height: 24px;\n padding: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: none;\n background: none;\n}\n\n._468ff1da37ead40a:hover {\n color: #333;\n background-color: #f0f0f0;\n border-radius: 3px;\n}\n\n._468ff1da37ead40a:focus-visible {\n outline: 2px solid rgb(160, 207, 255);\n outline-offset: -2px;\n}\n\n._da3b3b2a4aeed1ee {\n flex: 1;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n._61879ba330d9a71c {\n margin-top: 0.5em;\n}\n</style>\n","import { App, Plugin } from 'vue'\nimport DialogViewComponent from './DialogView.obf.vue'\n\nexport { default as DialogView } from './DialogView.obf.vue'\n\nexport const DialogViewPlugin: Plugin = {\n install: (app: App) => {\n app.component('DialogView', DialogViewComponent)\n }\n}\n\nexport default DialogViewPlugin\n"],"names":["props","__props","emit","__emit","dialogRef","ref","openDialog","closeDialog","handleDialogCancel","e","handleDialogClose","nextTick","closedBy","computed","watch","newValue","onMounted","onBeforeUnmount","__expose","_openBlock","_createElementBlock","_mergeProps","$attrs","_hoisted_2","_createElementVNode","_hoisted_3","_renderSlot","_ctx","_hoisted_4","$slots","_hoisted_5","DialogViewPlugin","app","DialogViewComponent"],"mappings":";;;;;;;;;;;;;;;;;;AA2CA,UAAMA,IAAQC,GAORC,IAAOC,GAKPC,IAAYC,EAAA,GAEZC,IAAa,MAAY;AAC7B,MAAAJ,EAAK,qBAAqB,EAAI;AAAA,IAChC,GAEMK,IAAc,MAAY;AAC9B,MAAAL,EAAK,qBAAqB,EAAK;AAAA,IACjC,GAEMM,IAAqB,CAACC,MAAa;AACvC,MAAAA,EAAE,eAAA,GACET,EAAM,YAAUO,EAAA;AAAA,IACtB,GAEMG,IAAoB,MAAY;AACpC,UAAI,CAACV,EAAM,YACLA,EAAM,YAAY;AAGpB,QAAAW,EAAS,MAAM;AACb,UAAIP,EAAU,SAAS,CAACA,EAAU,MAAM,QAAMA,EAAU,MAAM,UAAA;AAAA,QAChE,CAAC;AACD;AAAA,MACF;AAEF,MAAIJ,EAAM,cACRE,EAAK,qBAAqB,EAAK,GAEjCS,EAAS,MAAM;AACb,QAAIX,EAAM,cAEJI,EAAU,SAAS,CAACA,EAAU,MAAM,QAAMA,EAAU,MAAM,UAAA;AAAA,MAElE,CAAC,GACDF,EAAK,QAAQ;AAAA,IACf,GAEMU,IAAWC,EAAS,MAAMb,EAAM,WAAYA,EAAM,mBAAmB,QAAQ,iBAAkB,MAAM;AAE3G,WAAAc,EAAM,MAAMd,EAAM,YAAY,OAAOe,MAAsB;AACzD,YAAMJ,EAAA,GAEFI,IACEX,EAAU,SAAS,CAACA,EAAU,MAAM,QACtCA,EAAU,MAAM,UAAA,IAGdA,EAAU,SAASA,EAAU,MAAM,QACrCA,EAAU,MAAM,MAAA;AAAA,IAGtB,CAAC,GAEDY,EAAU,MAAM;AACd,MAAIhB,EAAM,cACJI,EAAU,SAAS,CAACA,EAAU,MAAM,QACtCA,EAAU,MAAM,UAAA;AAAA,IAGtB,CAAC,GAEDa,EAAgB,MAAM;AACpB,MAAIb,EAAU,SAASA,EAAU,MAAM,QACrCA,EAAU,MAAM,MAAA;AAAA,IAEpB,CAAC,GAEDc,EAAa;AAAA,MACX,KAAK,MAAMd,EAAU;AAAA,MACrB,MAAME;AAAA,MACN,OAAOC;AAAA,IAAA,CACR,cA9HCY,EAAA,GAAAC,EA4BS,UA5BTC,EA4BS;AAAA,eA3BH;AAAA,MAAJ,KAAIjB;AAAA,MACJ,OAAM;AAAA,IAAA,GACEkB,EAAAA,QAAM;AAAA,MACb,SAAOZ;AAAA,MACP,UAAQF;AAAA,MACR,UAAUI,EAAA;AAAA,IAAA;MAEAX,EAAA,gBAAXkB,EAAA,GAAAC,EAWM,OAXNG,GAWM;AAAA,QAVJC,EAEO,QAFPC,GAEO;AAAA,UADLC,EAA0BC,EAAA,QAAA,OAAA;AAAA,QAAA;QAGpB1B,EAAA,mBAAmBA,EAAA,iBAD3BmB,EAMiB,UAAA;AAAA;UAJf,MAAK;AAAA,UACL,cAAW;AAAA,UACX,OAAM;AAAA,UACL,WAAeb,GAAW,CAAA,SAAA,CAAA;AAAA,QAAA,GAC5B,GAAO;;MAGViB,EAEM,OAFNI,GAEM;AAAA,QADJF,EAAaC,EAAA,QAAA,SAAA;AAAA,MAAA;MAGJE,EAAAA,OAAO,UAAlBV,KAAAC,EAEM,OAFNU,GAEM;AAAA,QADJJ,EAA2BC,EAAA,QAAA,QAAA;AAAA,MAAA;;;ICtBpBI,IAA2B;AAAA,EACtC,SAAS,CAACC,MAAa;AACrB,IAAAA,EAAI,UAAU,cAAcC,CAAmB;AAAA,EACjD;AACF;"}
1
+ {"version":3,"file":"cssless-obfuscated.es.js","sources":["../src/DialogView.obf.vue","../src/index.ts"],"sourcesContent":["<template>\n <dialog\n ref=\"dialogRef\"\n class=\"_b4102a3b79656a37\"\n v-bind=\"$attrs\"\n @close=\"handleDialogClose\"\n @cancel=\"handleDialogCancel\"\n :closedBy=\"closedBy\"\n >\n <div v-if=\"showTitleBar\" class=\"_4d394b1507fdc584\">\n <span class=\"_088d860d2fd75292\">\n <slot name=\"title\"></slot>\n </span>\n <button\n v-if=\"showCloseButton && closable\"\n type=\"button\"\n aria-label=\"Close the dialog\"\n class=\"_468ff1da37ead40a\"\n @click.prevent=\"closeDialog\"\n >&times;</button>\n </div>\n \n <div class=\"_da3b3b2a4aeed1ee\">\n <slot></slot>\n </div>\n\n <div v-if=\"$slots.footer\" class=\"_61879ba330d9a71c\">\n <slot name=\"footer\"></slot>\n </div>\n </dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, computed, nextTick, onMounted, onBeforeUnmount, onDeactivated, onActivated } from 'vue'\n\ninterface Props {\n modelValue: boolean\n showTitleBar?: boolean\n showCloseButton?: boolean\n closable?: boolean\n closeOnClickMask?: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n showTitleBar: true,\n showCloseButton: true,\n closable: true,\n closeOnClickMask: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'closed'): void\n}>()\n\nconst dialogRef = ref<HTMLDialogElement>();\n\nconst openDialog = (): void => {\n emit('update:modelValue', true)\n}\n\nconst closeDialog = (): void => {\n emit('update:modelValue', false)\n}\n\nconst handleDialogCancel = (e: Event) => {\n e.preventDefault();\n if (props.closable) closeDialog();\n}\n\nconst ignoreCloseEvent = ref(false);\n\nconst handleDialogClose = (): void => {\n if (ignoreCloseEvent.value) return;\n if (!props.closable) {\n if (props.modelValue) {\n // not programmatically close\n // re-open the dialog\n nextTick(() => {\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }) // Avoid using 'cancel' event because some browsers handle it incorrectly, see https://issues.chromium.org/issues/41491338\n return;\n }\n }\n if (props.modelValue) {\n emit('update:modelValue', false)\n }\n nextTick(() => {\n if (props.modelValue) {\n // model value keep unchanged\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }\n })\n emit('closed')\n}\n\nconst closedBy = computed(() => props.closable ? (props.closeOnClickMask ? 'any' : 'closerequest') : 'none') // see https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/closedBy\n\nwatch(() => props.modelValue, async (newValue: boolean) => {\n await nextTick()\n \n if (newValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n } else {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n }\n})\n\nconst initDialog = () => {\n if (props.modelValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n }\n};\n\nonMounted(() => {\n initDialog();\n});\n\nonBeforeUnmount(() => {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n});\n\nonDeactivated(() => {\n if (dialogRef.value && dialogRef.value.open) {\n ignoreCloseEvent.value = true;\n dialogRef.value.close();\n nextTick(() => ignoreCloseEvent.value = false);\n }\n});\n\nonActivated(() => {\n initDialog();\n});\n\ndefineExpose({\n get: () => dialogRef.value,\n open: openDialog,\n close: closeDialog,\n});\n</script>\n\n<style>\n._b4102a3b79656a37 {\n padding: var(--dialog-padding, 20px);\n border-radius: 5px;\n border: 1px solid gray;\n outline: 0 !important;\n max-width: calc(100% - 2em);\n max-height: calc(100% - 2em);\n box-sizing: border-box;\n overflow: hidden;\n}\n\n._b4102a3b79656a37[open] {\n display: flex;\n flex-direction: column;\n}\n\n._b4102a3b79656a37::backdrop {\n background: rgba(0, 0, 0, 0.5);\n}\n\n._4d394b1507fdc584 {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 0.5em;\n min-height: var(--dialog-title-height, 24px);\n white-space: pre;\n overflow: hidden;\n user-select: none;\n}\n\n._088d860d2fd75292 {\n flex: 1;\n text-align: center;\n font-weight: bold;\n font-size: large;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n._468ff1da37ead40a {\n margin-left: 0.5em;\n text-decoration: none;\n color: #666;\n font-size: 1.5em;\n line-height: 1;\n width: 24px;\n height: 24px;\n padding: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: none;\n background: none;\n}\n\n._468ff1da37ead40a:hover {\n color: #333;\n background-color: #f0f0f0;\n border-radius: 3px;\n}\n\n._468ff1da37ead40a:focus-visible {\n outline: 2px solid rgb(160, 207, 255);\n outline-offset: -2px;\n}\n\n._da3b3b2a4aeed1ee {\n flex: 1;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n._61879ba330d9a71c {\n margin-top: 0.5em;\n}\n</style>\n","import { App, Plugin } from 'vue'\nimport DialogViewComponent from './DialogView.obf.vue'\n\nexport { default as DialogView } from './DialogView.obf.vue'\n\nexport const DialogViewPlugin: Plugin = {\n install: (app: App) => {\n app.component('DialogView', DialogViewComponent)\n }\n}\n\nexport default DialogViewPlugin\n"],"names":["props","__props","emit","__emit","dialogRef","ref","openDialog","closeDialog","handleDialogCancel","e","ignoreCloseEvent","handleDialogClose","nextTick","closedBy","computed","watch","newValue","initDialog","onMounted","onBeforeUnmount","onDeactivated","onActivated","__expose","_openBlock","_createElementBlock","_mergeProps","$attrs","_hoisted_2","_createElementVNode","_hoisted_3","_renderSlot","_ctx","_hoisted_4","$slots","_hoisted_5","DialogViewPlugin","app","DialogViewComponent"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- (function(l,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(l=typeof globalThis<"u"?globalThis:l||self,e(l.DialogView={},l.Vue))})(this,(function(l,e){"use strict";const u=["closedBy"],f={key:0,class:"_4d394b1507fdc584"},r={class:"_088d860d2fd75292"},m={class:"_da3b3b2a4aeed1ee"},p={key:1,class:"_61879ba330d9a71c"},d=e.defineComponent({__name:"DialogView.obf",props:{modelValue:{type:Boolean},showTitleBar:{type:Boolean,default:!0},showCloseButton:{type:Boolean,default:!0},closable:{type:Boolean,default:!0},closeOnClickMask:{type:Boolean,default:!1}},emits:["update:modelValue","closed"],setup(n,{expose:h,emit:V}){const a=n,s=V,o=e.ref(),B=()=>{s("update:modelValue",!0)},i=()=>{s("update:modelValue",!1)},k=t=>{t.preventDefault(),a.closable&&i()},g=()=>{if(!a.closable&&a.modelValue){e.nextTick(()=>{o.value&&!o.value.open&&o.value.showModal()});return}a.modelValue&&s("update:modelValue",!1),e.nextTick(()=>{a.modelValue&&o.value&&!o.value.open&&o.value.showModal()}),s("closed")},y=e.computed(()=>a.closable?a.closeOnClickMask?"any":"closerequest":"none");return e.watch(()=>a.modelValue,async t=>{await e.nextTick(),t?o.value&&!o.value.open&&o.value.showModal():o.value&&o.value.open&&o.value.close()}),e.onMounted(()=>{a.modelValue&&o.value&&!o.value.open&&o.value.showModal()}),e.onBeforeUnmount(()=>{o.value&&o.value.open&&o.value.close()}),h({get:()=>o.value,open:B,close:i}),(t,b)=>(e.openBlock(),e.createElementBlock("dialog",e.mergeProps({ref_key:"dialogRef",ref:o,class:"_b4102a3b79656a37"},t.$attrs,{onClose:g,onCancel:k,closedBy:y.value}),[n.showTitleBar?(e.openBlock(),e.createElementBlock("div",f,[e.createElementVNode("span",r,[e.renderSlot(t.$slots,"title")]),n.showCloseButton&&n.closable?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","aria-label":"Close the dialog",class:"_468ff1da37ead40a",onClick:e.withModifiers(i,["prevent"])},"×")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",m,[e.renderSlot(t.$slots,"default")]),t.$slots.footer?(e.openBlock(),e.createElementBlock("div",p,[e.renderSlot(t.$slots,"footer")])):e.createCommentVNode("",!0)],16,u))}}),c={install:n=>{n.component("DialogView",d)}};l.DialogView=d,l.DialogViewPlugin=c,l.default=c,Object.defineProperties(l,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
1
+ (function(l,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(l=typeof globalThis<"u"?globalThis:l||self,e(l.DialogView={},l.Vue))})(this,(function(l,e){"use strict";const r=["closedBy"],m={key:0,class:"_4d394b1507fdc584"},p={class:"_088d860d2fd75292"},h={class:"_da3b3b2a4aeed1ee"},V={key:1,class:"_61879ba330d9a71c"},c=e.defineComponent({__name:"DialogView.obf",props:{modelValue:{type:Boolean},showTitleBar:{type:Boolean,default:!0},showCloseButton:{type:Boolean,default:!0},closable:{type:Boolean,default:!0},closeOnClickMask:{type:Boolean,default:!1}},emits:["update:modelValue","closed"],setup(n,{expose:g,emit:k}){const a=n,s=k,o=e.ref(),B=()=>{s("update:modelValue",!0)},i=()=>{s("update:modelValue",!1)},y=t=>{t.preventDefault(),a.closable&&i()},d=e.ref(!1),b=()=>{if(!d.value){if(!a.closable&&a.modelValue){e.nextTick(()=>{o.value&&!o.value.open&&o.value.showModal()});return}a.modelValue&&s("update:modelValue",!1),e.nextTick(()=>{a.modelValue&&o.value&&!o.value.open&&o.value.showModal()}),s("closed")}},w=e.computed(()=>a.closable?a.closeOnClickMask?"any":"closerequest":"none");e.watch(()=>a.modelValue,async t=>{await e.nextTick(),t?o.value&&!o.value.open&&o.value.showModal():o.value&&o.value.open&&o.value.close()});const u=()=>{a.modelValue&&o.value&&!o.value.open&&o.value.showModal()};return e.onMounted(()=>{u()}),e.onBeforeUnmount(()=>{o.value&&o.value.open&&o.value.close()}),e.onDeactivated(()=>{o.value&&o.value.open&&(d.value=!0,o.value.close(),e.nextTick(()=>d.value=!1))}),e.onActivated(()=>{u()}),g({get:()=>o.value,open:B,close:i}),(t,C)=>(e.openBlock(),e.createElementBlock("dialog",e.mergeProps({ref_key:"dialogRef",ref:o,class:"_b4102a3b79656a37"},t.$attrs,{onClose:b,onCancel:y,closedBy:w.value}),[n.showTitleBar?(e.openBlock(),e.createElementBlock("div",m,[e.createElementVNode("span",p,[e.renderSlot(t.$slots,"title")]),n.showCloseButton&&n.closable?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","aria-label":"Close the dialog",class:"_468ff1da37ead40a",onClick:e.withModifiers(i,["prevent"])},"×")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",h,[e.renderSlot(t.$slots,"default")]),t.$slots.footer?(e.openBlock(),e.createElementBlock("div",V,[e.renderSlot(t.$slots,"footer")])):e.createCommentVNode("",!0)],16,r))}}),f={install:n=>{n.component("DialogView",c)}};l.DialogView=c,l.DialogViewPlugin=f,l.default=f,Object.defineProperties(l,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
2
2
  //# sourceMappingURL=cssless-obfuscated.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cssless-obfuscated.umd.js","sources":["../src/DialogView.obf.vue","../src/index.ts"],"sourcesContent":["<template>\n <dialog\n ref=\"dialogRef\"\n class=\"_b4102a3b79656a37\"\n v-bind=\"$attrs\"\n @close=\"handleDialogClose\"\n @cancel=\"handleDialogCancel\"\n :closedBy=\"closedBy\"\n >\n <div v-if=\"showTitleBar\" class=\"_4d394b1507fdc584\">\n <span class=\"_088d860d2fd75292\">\n <slot name=\"title\"></slot>\n </span>\n <button\n v-if=\"showCloseButton && closable\"\n type=\"button\"\n aria-label=\"Close the dialog\"\n class=\"_468ff1da37ead40a\"\n @click.prevent=\"closeDialog\"\n >&times;</button>\n </div>\n \n <div class=\"_da3b3b2a4aeed1ee\">\n <slot></slot>\n </div>\n\n <div v-if=\"$slots.footer\" class=\"_61879ba330d9a71c\">\n <slot name=\"footer\"></slot>\n </div>\n </dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, computed, nextTick, onMounted, onBeforeUnmount } from 'vue'\n\ninterface Props {\n modelValue: boolean\n showTitleBar?: boolean\n showCloseButton?: boolean\n closable?: boolean\n closeOnClickMask?: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n showTitleBar: true,\n showCloseButton: true,\n closable: true,\n closeOnClickMask: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'closed'): void\n}>()\n\nconst dialogRef = ref<HTMLDialogElement>();\n\nconst openDialog = (): void => {\n emit('update:modelValue', true)\n}\n\nconst closeDialog = (): void => {\n emit('update:modelValue', false)\n}\n\nconst handleDialogCancel = (e: Event) => {\n e.preventDefault();\n if (props.closable) closeDialog();\n}\n\nconst handleDialogClose = (): void => {\n if (!props.closable) {\n if (props.modelValue) {\n // not programmatically close\n // re-open the dialog\n nextTick(() => {\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }) // Avoid using 'cancel' event because some browsers handle it incorrectly, see https://issues.chromium.org/issues/41491338\n return;\n }\n }\n if (props.modelValue) {\n emit('update:modelValue', false)\n }\n nextTick(() => {\n if (props.modelValue) {\n // model value keep unchanged\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }\n })\n emit('closed')\n}\n\nconst closedBy = computed(() => props.closable ? (props.closeOnClickMask ? 'any' : 'closerequest') : 'none') // see https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/closedBy\n\nwatch(() => props.modelValue, async (newValue: boolean) => {\n await nextTick()\n \n if (newValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n } else {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n }\n})\n\nonMounted(() => {\n if (props.modelValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n }\n});\n\nonBeforeUnmount(() => {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n});\n\ndefineExpose({\n get: () => dialogRef.value,\n open: openDialog,\n close: closeDialog,\n});\n</script>\n\n<style>\n._b4102a3b79656a37 {\n padding: var(--dialog-padding, 20px);\n border-radius: 5px;\n border: 1px solid gray;\n outline: 0 !important;\n max-width: calc(100% - 2em);\n max-height: calc(100% - 2em);\n box-sizing: border-box;\n overflow: hidden;\n}\n\n._b4102a3b79656a37[open] {\n display: flex;\n flex-direction: column;\n}\n\n._b4102a3b79656a37::backdrop {\n background: rgba(0, 0, 0, 0.5);\n}\n\n._4d394b1507fdc584 {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 0.5em;\n min-height: var(--dialog-title-height, 24px);\n white-space: pre;\n overflow: hidden;\n user-select: none;\n}\n\n._088d860d2fd75292 {\n flex: 1;\n text-align: center;\n font-weight: bold;\n font-size: large;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n._468ff1da37ead40a {\n margin-left: 0.5em;\n text-decoration: none;\n color: #666;\n font-size: 1.5em;\n line-height: 1;\n width: 24px;\n height: 24px;\n padding: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: none;\n background: none;\n}\n\n._468ff1da37ead40a:hover {\n color: #333;\n background-color: #f0f0f0;\n border-radius: 3px;\n}\n\n._468ff1da37ead40a:focus-visible {\n outline: 2px solid rgb(160, 207, 255);\n outline-offset: -2px;\n}\n\n._da3b3b2a4aeed1ee {\n flex: 1;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n._61879ba330d9a71c {\n margin-top: 0.5em;\n}\n</style>\n","import { App, Plugin } from 'vue'\nimport DialogViewComponent from './DialogView.obf.vue'\n\nexport { default as DialogView } from './DialogView.obf.vue'\n\nexport const DialogViewPlugin: Plugin = {\n install: (app: App) => {\n app.component('DialogView', DialogViewComponent)\n }\n}\n\nexport default DialogViewPlugin\n"],"names":["props","__props","emit","__emit","dialogRef","ref","openDialog","closeDialog","handleDialogCancel","e","handleDialogClose","nextTick","closedBy","computed","watch","newValue","onMounted","onBeforeUnmount","__expose","_openBlock","_createElementBlock","_mergeProps","$attrs","_hoisted_2","_createElementVNode","_hoisted_3","_renderSlot","_ctx","_hoisted_4","$slots","_hoisted_5","DialogViewPlugin","app","DialogViewComponent"],"mappings":"usBA2CA,MAAMA,EAAQC,EAORC,EAAOC,EAKPC,EAAYC,EAAAA,IAAA,EAEZC,EAAa,IAAY,CAC7BJ,EAAK,oBAAqB,EAAI,CAChC,EAEMK,EAAc,IAAY,CAC9BL,EAAK,oBAAqB,EAAK,CACjC,EAEMM,EAAsBC,GAAa,CACvCA,EAAE,eAAA,EACET,EAAM,UAAUO,EAAA,CACtB,EAEMG,EAAoB,IAAY,CACpC,GAAI,CAACV,EAAM,UACLA,EAAM,WAAY,CAGpBW,EAAAA,SAAS,IAAM,CACTP,EAAU,OAAS,CAACA,EAAU,MAAM,MAAMA,EAAU,MAAM,UAAA,CAChE,CAAC,EACD,MACF,CAEEJ,EAAM,YACRE,EAAK,oBAAqB,EAAK,EAEjCS,EAAAA,SAAS,IAAM,CACTX,EAAM,YAEJI,EAAU,OAAS,CAACA,EAAU,MAAM,MAAMA,EAAU,MAAM,UAAA,CAElE,CAAC,EACDF,EAAK,QAAQ,CACf,EAEMU,EAAWC,WAAS,IAAMb,EAAM,SAAYA,EAAM,iBAAmB,MAAQ,eAAkB,MAAM,EAE3Gc,OAAAA,EAAAA,MAAM,IAAMd,EAAM,WAAY,MAAOe,GAAsB,CACzD,MAAMJ,WAAA,EAEFI,EACEX,EAAU,OAAS,CAACA,EAAU,MAAM,MACtCA,EAAU,MAAM,UAAA,EAGdA,EAAU,OAASA,EAAU,MAAM,MACrCA,EAAU,MAAM,MAAA,CAGtB,CAAC,EAEDY,EAAAA,UAAU,IAAM,CACVhB,EAAM,YACJI,EAAU,OAAS,CAACA,EAAU,MAAM,MACtCA,EAAU,MAAM,UAAA,CAGtB,CAAC,EAEDa,EAAAA,gBAAgB,IAAM,CAChBb,EAAU,OAASA,EAAU,MAAM,MACrCA,EAAU,MAAM,MAAA,CAEpB,CAAC,EAEDc,EAAa,CACX,IAAK,IAAMd,EAAU,MACrB,KAAME,EACN,MAAOC,CAAA,CACR,UA9HCY,YAAA,EAAAC,qBA4BS,SA5BTC,EAAAA,WA4BS,SA3BH,YAAJ,IAAIjB,EACJ,MAAM,mBAAA,EACEkB,EAAAA,OAAM,CACb,QAAOZ,EACP,SAAQF,EACR,SAAUI,EAAA,KAAA,IAEAX,EAAA,cAAXkB,EAAAA,UAAA,EAAAC,EAAAA,mBAWM,MAXNG,EAWM,CAVJC,EAAAA,mBAEO,OAFPC,EAEO,CADLC,aAA0BC,EAAA,OAAA,OAAA,CAAA,GAGpB1B,EAAA,iBAAmBA,EAAA,wBAD3BmB,EAAAA,mBAMiB,SAAA,OAJf,KAAK,SACL,aAAW,mBACX,MAAM,oBACL,wBAAeb,EAAW,CAAA,SAAA,CAAA,CAAA,EAC5B,GAAO,8DAGViB,EAAAA,mBAEM,MAFNI,EAEM,CADJF,aAAaC,EAAA,OAAA,SAAA,CAAA,GAGJE,EAAAA,OAAO,QAAlBV,EAAAA,YAAAC,EAAAA,mBAEM,MAFNU,EAEM,CADJJ,aAA2BC,EAAA,OAAA,QAAA,CAAA,2CCtBpBI,EAA2B,CACtC,QAAUC,GAAa,CACrBA,EAAI,UAAU,aAAcC,CAAmB,CACjD,CACF"}
1
+ {"version":3,"file":"cssless-obfuscated.umd.js","sources":["../src/DialogView.obf.vue","../src/index.ts"],"sourcesContent":["<template>\n <dialog\n ref=\"dialogRef\"\n class=\"_b4102a3b79656a37\"\n v-bind=\"$attrs\"\n @close=\"handleDialogClose\"\n @cancel=\"handleDialogCancel\"\n :closedBy=\"closedBy\"\n >\n <div v-if=\"showTitleBar\" class=\"_4d394b1507fdc584\">\n <span class=\"_088d860d2fd75292\">\n <slot name=\"title\"></slot>\n </span>\n <button\n v-if=\"showCloseButton && closable\"\n type=\"button\"\n aria-label=\"Close the dialog\"\n class=\"_468ff1da37ead40a\"\n @click.prevent=\"closeDialog\"\n >&times;</button>\n </div>\n \n <div class=\"_da3b3b2a4aeed1ee\">\n <slot></slot>\n </div>\n\n <div v-if=\"$slots.footer\" class=\"_61879ba330d9a71c\">\n <slot name=\"footer\"></slot>\n </div>\n </dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, computed, nextTick, onMounted, onBeforeUnmount, onDeactivated, onActivated } from 'vue'\n\ninterface Props {\n modelValue: boolean\n showTitleBar?: boolean\n showCloseButton?: boolean\n closable?: boolean\n closeOnClickMask?: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n showTitleBar: true,\n showCloseButton: true,\n closable: true,\n closeOnClickMask: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'closed'): void\n}>()\n\nconst dialogRef = ref<HTMLDialogElement>();\n\nconst openDialog = (): void => {\n emit('update:modelValue', true)\n}\n\nconst closeDialog = (): void => {\n emit('update:modelValue', false)\n}\n\nconst handleDialogCancel = (e: Event) => {\n e.preventDefault();\n if (props.closable) closeDialog();\n}\n\nconst ignoreCloseEvent = ref(false);\n\nconst handleDialogClose = (): void => {\n if (ignoreCloseEvent.value) return;\n if (!props.closable) {\n if (props.modelValue) {\n // not programmatically close\n // re-open the dialog\n nextTick(() => {\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }) // Avoid using 'cancel' event because some browsers handle it incorrectly, see https://issues.chromium.org/issues/41491338\n return;\n }\n }\n if (props.modelValue) {\n emit('update:modelValue', false)\n }\n nextTick(() => {\n if (props.modelValue) {\n // model value keep unchanged\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }\n })\n emit('closed')\n}\n\nconst closedBy = computed(() => props.closable ? (props.closeOnClickMask ? 'any' : 'closerequest') : 'none') // see https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/closedBy\n\nwatch(() => props.modelValue, async (newValue: boolean) => {\n await nextTick()\n \n if (newValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n } else {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n }\n})\n\nconst initDialog = () => {\n if (props.modelValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n }\n};\n\nonMounted(() => {\n initDialog();\n});\n\nonBeforeUnmount(() => {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n});\n\nonDeactivated(() => {\n if (dialogRef.value && dialogRef.value.open) {\n ignoreCloseEvent.value = true;\n dialogRef.value.close();\n nextTick(() => ignoreCloseEvent.value = false);\n }\n});\n\nonActivated(() => {\n initDialog();\n});\n\ndefineExpose({\n get: () => dialogRef.value,\n open: openDialog,\n close: closeDialog,\n});\n</script>\n\n<style>\n._b4102a3b79656a37 {\n padding: var(--dialog-padding, 20px);\n border-radius: 5px;\n border: 1px solid gray;\n outline: 0 !important;\n max-width: calc(100% - 2em);\n max-height: calc(100% - 2em);\n box-sizing: border-box;\n overflow: hidden;\n}\n\n._b4102a3b79656a37[open] {\n display: flex;\n flex-direction: column;\n}\n\n._b4102a3b79656a37::backdrop {\n background: rgba(0, 0, 0, 0.5);\n}\n\n._4d394b1507fdc584 {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 0.5em;\n min-height: var(--dialog-title-height, 24px);\n white-space: pre;\n overflow: hidden;\n user-select: none;\n}\n\n._088d860d2fd75292 {\n flex: 1;\n text-align: center;\n font-weight: bold;\n font-size: large;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n._468ff1da37ead40a {\n margin-left: 0.5em;\n text-decoration: none;\n color: #666;\n font-size: 1.5em;\n line-height: 1;\n width: 24px;\n height: 24px;\n padding: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: none;\n background: none;\n}\n\n._468ff1da37ead40a:hover {\n color: #333;\n background-color: #f0f0f0;\n border-radius: 3px;\n}\n\n._468ff1da37ead40a:focus-visible {\n outline: 2px solid rgb(160, 207, 255);\n outline-offset: -2px;\n}\n\n._da3b3b2a4aeed1ee {\n flex: 1;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n._61879ba330d9a71c {\n margin-top: 0.5em;\n}\n</style>\n","import { App, Plugin } from 'vue'\nimport DialogViewComponent from './DialogView.obf.vue'\n\nexport { default as DialogView } from './DialogView.obf.vue'\n\nexport const DialogViewPlugin: Plugin = {\n install: (app: App) => {\n app.component('DialogView', DialogViewComponent)\n }\n}\n\nexport default DialogViewPlugin\n"],"names":["props","__props","emit","__emit","dialogRef","ref","openDialog","closeDialog","handleDialogCancel","e","ignoreCloseEvent","handleDialogClose","nextTick","closedBy","computed","watch","newValue","initDialog","onMounted","onBeforeUnmount","onDeactivated","onActivated","__expose","_openBlock","_createElementBlock","_mergeProps","$attrs","_hoisted_2","_createElementVNode","_hoisted_3","_renderSlot","_ctx","_hoisted_4","$slots","_hoisted_5","DialogViewPlugin","app","DialogViewComponent"],"mappings":"usBA2CA,MAAMA,EAAQC,EAORC,EAAOC,EAKPC,EAAYC,EAAAA,IAAA,EAEZC,EAAa,IAAY,CAC7BJ,EAAK,oBAAqB,EAAI,CAChC,EAEMK,EAAc,IAAY,CAC9BL,EAAK,oBAAqB,EAAK,CACjC,EAEMM,EAAsBC,GAAa,CACvCA,EAAE,eAAA,EACET,EAAM,UAAUO,EAAA,CACtB,EAEMG,EAAmBL,EAAAA,IAAI,EAAK,EAE5BM,EAAoB,IAAY,CACpC,GAAI,CAAAD,EAAiB,MACrB,IAAI,CAACV,EAAM,UACLA,EAAM,WAAY,CAGpBY,EAAAA,SAAS,IAAM,CACTR,EAAU,OAAS,CAACA,EAAU,MAAM,MAAMA,EAAU,MAAM,UAAA,CAChE,CAAC,EACD,MACF,CAEEJ,EAAM,YACRE,EAAK,oBAAqB,EAAK,EAEjCU,EAAAA,SAAS,IAAM,CACTZ,EAAM,YAEJI,EAAU,OAAS,CAACA,EAAU,MAAM,MAAMA,EAAU,MAAM,UAAA,CAElE,CAAC,EACDF,EAAK,QAAQ,EACf,EAEMW,EAAWC,WAAS,IAAMd,EAAM,SAAYA,EAAM,iBAAmB,MAAQ,eAAkB,MAAM,EAE3Ge,EAAAA,MAAM,IAAMf,EAAM,WAAY,MAAOgB,GAAsB,CACzD,MAAMJ,WAAA,EAEFI,EACEZ,EAAU,OAAS,CAACA,EAAU,MAAM,MACtCA,EAAU,MAAM,UAAA,EAGdA,EAAU,OAASA,EAAU,MAAM,MACrCA,EAAU,MAAM,MAAA,CAGtB,CAAC,EAED,MAAMa,EAAa,IAAM,CACnBjB,EAAM,YACJI,EAAU,OAAS,CAACA,EAAU,MAAM,MACtCA,EAAU,MAAM,UAAA,CAGtB,EAEAc,OAAAA,EAAAA,UAAU,IAAM,CACdD,EAAA,CACF,CAAC,EAEDE,EAAAA,gBAAgB,IAAM,CAChBf,EAAU,OAASA,EAAU,MAAM,MACrCA,EAAU,MAAM,MAAA,CAEpB,CAAC,EAEDgB,EAAAA,cAAc,IAAM,CACdhB,EAAU,OAASA,EAAU,MAAM,OACrCM,EAAiB,MAAQ,GACzBN,EAAU,MAAM,MAAA,EAChBQ,EAAAA,SAAS,IAAMF,EAAiB,MAAQ,EAAK,EAEjD,CAAC,EAEDW,EAAAA,YAAY,IAAM,CAChBJ,EAAA,CACF,CAAC,EAEDK,EAAa,CACX,IAAK,IAAMlB,EAAU,MACrB,KAAME,EACN,MAAOC,CAAA,CACR,UAjJCgB,YAAA,EAAAC,qBA4BS,SA5BTC,EAAAA,WA4BS,SA3BH,YAAJ,IAAIrB,EACJ,MAAM,mBAAA,EACEsB,EAAAA,OAAM,CACb,QAAOf,EACP,SAAQH,EACR,SAAUK,EAAA,KAAA,IAEAZ,EAAA,cAAXsB,EAAAA,UAAA,EAAAC,EAAAA,mBAWM,MAXNG,EAWM,CAVJC,EAAAA,mBAEO,OAFPC,EAEO,CADLC,aAA0BC,EAAA,OAAA,OAAA,CAAA,GAGpB9B,EAAA,iBAAmBA,EAAA,wBAD3BuB,EAAAA,mBAMiB,SAAA,OAJf,KAAK,SACL,aAAW,mBACX,MAAM,oBACL,wBAAejB,EAAW,CAAA,SAAA,CAAA,CAAA,EAC5B,GAAO,8DAGVqB,EAAAA,mBAEM,MAFNI,EAEM,CADJF,aAAaC,EAAA,OAAA,SAAA,CAAA,GAGJE,EAAAA,OAAO,QAAlBV,EAAAA,YAAAC,EAAAA,mBAEM,MAFNU,EAEM,CADJJ,aAA2BC,EAAA,OAAA,QAAA,CAAA,2CCtBpBI,EAA2B,CACtC,QAAUC,GAAa,CACrBA,EAAI,UAAU,aAAcC,CAAmB,CACjD,CACF"}
@@ -1,11 +1,11 @@
1
- import { defineComponent as w, ref as V, computed as y, watch as B, nextTick as c, onMounted as k, onBeforeUnmount as C, openBlock as n, createElementBlock as i, mergeProps as _, createElementVNode as p, renderSlot as r, withModifiers as b, createCommentVNode as f } from "vue";
2
- const D = ["closedBy"], M = {
1
+ import { defineComponent as B, ref as m, computed as C, watch as k, nextTick as n, onMounted as D, onBeforeUnmount as _, onDeactivated as b, onActivated as M, openBlock as i, createElementBlock as u, mergeProps as $, createElementVNode as g, renderSlot as f, withModifiers as E, createCommentVNode as v } from "vue";
2
+ const O = ["closedBy"], T = {
3
3
  key: 0,
4
4
  class: "dialog-title-bar"
5
- }, $ = { class: "dialog-title" }, O = { class: "dialog-content" }, T = {
5
+ }, N = { class: "dialog-title" }, P = { class: "dialog-content" }, R = {
6
6
  key: 1,
7
7
  class: "dialog-footer"
8
- }, E = /* @__PURE__ */ w({
8
+ }, q = /* @__PURE__ */ B({
9
9
  __name: "DialogView",
10
10
  props: {
11
11
  modelValue: { type: Boolean },
@@ -15,76 +15,86 @@ const D = ["closedBy"], M = {
15
15
  closeOnClickMask: { type: Boolean, default: !1 }
16
16
  },
17
17
  emits: ["update:modelValue", "closed"],
18
- setup(l, { expose: u, emit: s }) {
19
- const o = l, t = s, e = V(), v = () => {
18
+ setup(l, { expose: c, emit: s }) {
19
+ const o = l, t = s, e = m(), h = () => {
20
20
  t("update:modelValue", !0);
21
21
  }, d = () => {
22
22
  t("update:modelValue", !1);
23
- }, m = (a) => {
23
+ }, w = (a) => {
24
24
  a.preventDefault(), o.closable && d();
25
- }, g = () => {
26
- if (!o.closable && o.modelValue) {
27
- c(() => {
28
- e.value && !e.value.open && e.value.showModal();
29
- });
30
- return;
25
+ }, r = m(!1), V = () => {
26
+ if (!r.value) {
27
+ if (!o.closable && o.modelValue) {
28
+ n(() => {
29
+ e.value && !e.value.open && e.value.showModal();
30
+ });
31
+ return;
32
+ }
33
+ o.modelValue && t("update:modelValue", !1), n(() => {
34
+ o.modelValue && e.value && !e.value.open && e.value.showModal();
35
+ }), t("closed");
31
36
  }
32
- o.modelValue && t("update:modelValue", !1), c(() => {
33
- o.modelValue && e.value && !e.value.open && e.value.showModal();
34
- }), t("closed");
35
- }, h = y(() => o.closable ? o.closeOnClickMask ? "any" : "closerequest" : "none");
36
- return B(() => o.modelValue, async (a) => {
37
- await c(), a ? e.value && !e.value.open && e.value.showModal() : e.value && e.value.open && e.value.close();
38
- }), k(() => {
37
+ }, y = C(() => o.closable ? o.closeOnClickMask ? "any" : "closerequest" : "none");
38
+ k(() => o.modelValue, async (a) => {
39
+ await n(), a ? e.value && !e.value.open && e.value.showModal() : e.value && e.value.open && e.value.close();
40
+ });
41
+ const p = () => {
39
42
  o.modelValue && e.value && !e.value.open && e.value.showModal();
40
- }), C(() => {
43
+ };
44
+ return D(() => {
45
+ p();
46
+ }), _(() => {
41
47
  e.value && e.value.open && e.value.close();
42
- }), u({
48
+ }), b(() => {
49
+ e.value && e.value.open && (r.value = !0, e.value.close(), n(() => r.value = !1));
50
+ }), M(() => {
51
+ p();
52
+ }), c({
43
53
  get: () => e.value,
44
- open: v,
54
+ open: h,
45
55
  close: d
46
- }), (a, R) => (n(), i("dialog", _({
56
+ }), (a, S) => (i(), u("dialog", $({
47
57
  ref_key: "dialogRef",
48
58
  ref: e,
49
59
  class: "dialog-view"
50
60
  }, a.$attrs, {
51
- onClose: g,
52
- onCancel: m,
53
- closedBy: h.value
61
+ onClose: V,
62
+ onCancel: w,
63
+ closedBy: y.value
54
64
  }), [
55
- l.showTitleBar ? (n(), i("div", M, [
56
- p("span", $, [
57
- r(a.$slots, "title", {}, void 0, !0)
65
+ l.showTitleBar ? (i(), u("div", T, [
66
+ g("span", N, [
67
+ f(a.$slots, "title", {}, void 0, !0)
58
68
  ]),
59
- l.showCloseButton && l.closable ? (n(), i("button", {
69
+ l.showCloseButton && l.closable ? (i(), u("button", {
60
70
  key: 0,
61
71
  type: "button",
62
72
  "aria-label": "Close the dialog",
63
73
  class: "dialog-close-button",
64
- onClick: b(d, ["prevent"])
65
- }, "×")) : f("", !0)
66
- ])) : f("", !0),
67
- p("div", O, [
68
- r(a.$slots, "default", {}, void 0, !0)
74
+ onClick: E(d, ["prevent"])
75
+ }, "×")) : v("", !0)
76
+ ])) : v("", !0),
77
+ g("div", P, [
78
+ f(a.$slots, "default", {}, void 0, !0)
69
79
  ]),
70
- a.$slots.footer ? (n(), i("div", T, [
71
- r(a.$slots, "footer", {}, void 0, !0)
72
- ])) : f("", !0)
73
- ], 16, D));
80
+ a.$slots.footer ? (i(), u("div", R, [
81
+ f(a.$slots, "footer", {}, void 0, !0)
82
+ ])) : v("", !0)
83
+ ], 16, O));
74
84
  }
75
- }), N = (l, u) => {
85
+ }), A = (l, c) => {
76
86
  const s = l.__vccOpts || l;
77
- for (const [o, t] of u)
87
+ for (const [o, t] of c)
78
88
  s[o] = t;
79
89
  return s;
80
- }, P = /* @__PURE__ */ N(E, [["__scopeId", "data-v-da4085e6"]]), I = {
90
+ }, I = /* @__PURE__ */ A(q, [["__scopeId", "data-v-7641dcfa"]]), j = {
81
91
  install: (l) => {
82
- l.component("DialogView", P);
92
+ l.component("DialogView", I);
83
93
  }
84
94
  };
85
95
  export {
86
- P as DialogView,
87
- I as DialogViewPlugin,
88
- I as default
96
+ I as DialogView,
97
+ j as DialogViewPlugin,
98
+ j as default
89
99
  };
90
100
  //# sourceMappingURL=cssless.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cssless.es.js","sources":["../src/DialogView.vue","../src/unobfuscated.ts"],"sourcesContent":["<template>\n <dialog\n ref=\"dialogRef\"\n class=\"dialog-view\"\n v-bind=\"$attrs\"\n @close=\"handleDialogClose\"\n @cancel=\"handleDialogCancel\"\n :closedBy=\"closedBy\"\n >\n <div v-if=\"showTitleBar\" class=\"dialog-title-bar\">\n <span class=\"dialog-title\">\n <slot name=\"title\"></slot>\n </span>\n <button\n v-if=\"showCloseButton && closable\"\n type=\"button\"\n aria-label=\"Close the dialog\"\n class=\"dialog-close-button\"\n @click.prevent=\"closeDialog\"\n >&times;</button>\n </div>\n \n <div class=\"dialog-content\">\n <slot></slot>\n </div>\n\n <div v-if=\"$slots.footer\" class=\"dialog-footer\">\n <slot name=\"footer\"></slot>\n </div>\n </dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, computed, nextTick, onMounted, onBeforeUnmount } from 'vue'\n\ninterface Props {\n modelValue: boolean\n showTitleBar?: boolean\n showCloseButton?: boolean\n closable?: boolean\n closeOnClickMask?: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n showTitleBar: true,\n showCloseButton: true,\n closable: true,\n closeOnClickMask: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'closed'): void\n}>()\n\nconst dialogRef = ref<HTMLDialogElement>();\n\nconst openDialog = (): void => {\n emit('update:modelValue', true)\n}\n\nconst closeDialog = (): void => {\n emit('update:modelValue', false)\n}\n\nconst handleDialogCancel = (e: Event) => {\n e.preventDefault();\n if (props.closable) closeDialog();\n}\n\nconst handleDialogClose = (): void => {\n if (!props.closable) {\n if (props.modelValue) {\n // not programmatically close\n // re-open the dialog\n nextTick(() => {\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }) // Avoid using 'cancel' event because some browsers handle it incorrectly, see https://issues.chromium.org/issues/41491338\n return;\n }\n }\n if (props.modelValue) {\n emit('update:modelValue', false)\n }\n nextTick(() => {\n if (props.modelValue) {\n // model value keep unchanged\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }\n })\n emit('closed')\n}\n\nconst closedBy = computed(() => props.closable ? (props.closeOnClickMask ? 'any' : 'closerequest') : 'none') // see https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/closedBy\n\nwatch(() => props.modelValue, async (newValue: boolean) => {\n await nextTick()\n \n if (newValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n } else {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n }\n})\n\nonMounted(() => {\n if (props.modelValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n }\n});\n\nonBeforeUnmount(() => {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n});\n\ndefineExpose({\n get: () => dialogRef.value,\n open: openDialog,\n close: closeDialog,\n});\n</script>\n\n<style scoped>\n.dialog-view {\n padding: var(--dialog-padding, 20px);\n border-radius: 5px;\n border: 1px solid gray;\n outline: 0 !important;\n max-width: calc(100% - 2em);\n max-height: calc(100% - 2em);\n box-sizing: border-box;\n overflow: hidden;\n}\n\n.dialog-view[open] {\n display: flex;\n flex-direction: column;\n}\n\n.dialog-view::backdrop {\n background: rgba(0, 0, 0, 0.5);\n}\n\n.dialog-title-bar {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 0.5em;\n min-height: var(--dialog-title-height, 24px);\n white-space: pre;\n overflow: hidden;\n user-select: none;\n}\n\n.dialog-title {\n flex: 1;\n text-align: center;\n font-weight: bold;\n font-size: large;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.dialog-close-button {\n margin-left: 0.5em;\n text-decoration: none;\n color: #666;\n font-size: 1.5em;\n line-height: 1;\n width: 24px;\n height: 24px;\n padding: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: none;\n background: none;\n}\n\n.dialog-close-button:hover {\n color: #333;\n background-color: #f0f0f0;\n border-radius: 3px;\n}\n\n.dialog-close-button:focus-visible {\n outline: 2px solid rgb(160, 207, 255);\n outline-offset: -2px;\n}\n\n.dialog-content {\n flex: 1;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.dialog-footer {\n margin-top: 0.5em;\n}\n</style>\n","import { App, Plugin } from 'vue'\nimport DialogViewComponent from './DialogView.vue'\n\nexport { default as DialogView } from './DialogView.vue'\n\nexport const DialogViewPlugin: Plugin = {\n install: (app: App) => {\n app.component('DialogView', DialogViewComponent)\n }\n}\n\nexport default DialogViewPlugin\n"],"names":["props","__props","emit","__emit","dialogRef","ref","openDialog","closeDialog","handleDialogCancel","e","handleDialogClose","nextTick","closedBy","computed","watch","newValue","onMounted","onBeforeUnmount","__expose","_openBlock","_createElementBlock","_mergeProps","$attrs","_hoisted_2","_createElementVNode","_hoisted_3","_renderSlot","_ctx","_hoisted_4","$slots","_hoisted_5","DialogViewPlugin","app","DialogViewComponent"],"mappings":";;;;;;;;;;;;;;;;;;AA2CA,UAAMA,IAAQC,GAORC,IAAOC,GAKPC,IAAYC,EAAA,GAEZC,IAAa,MAAY;AAC7B,MAAAJ,EAAK,qBAAqB,EAAI;AAAA,IAChC,GAEMK,IAAc,MAAY;AAC9B,MAAAL,EAAK,qBAAqB,EAAK;AAAA,IACjC,GAEMM,IAAqB,CAACC,MAAa;AACvC,MAAAA,EAAE,eAAA,GACET,EAAM,YAAUO,EAAA;AAAA,IACtB,GAEMG,IAAoB,MAAY;AACpC,UAAI,CAACV,EAAM,YACLA,EAAM,YAAY;AAGpB,QAAAW,EAAS,MAAM;AACb,UAAIP,EAAU,SAAS,CAACA,EAAU,MAAM,QAAMA,EAAU,MAAM,UAAA;AAAA,QAChE,CAAC;AACD;AAAA,MACF;AAEF,MAAIJ,EAAM,cACRE,EAAK,qBAAqB,EAAK,GAEjCS,EAAS,MAAM;AACb,QAAIX,EAAM,cAEJI,EAAU,SAAS,CAACA,EAAU,MAAM,QAAMA,EAAU,MAAM,UAAA;AAAA,MAElE,CAAC,GACDF,EAAK,QAAQ;AAAA,IACf,GAEMU,IAAWC,EAAS,MAAMb,EAAM,WAAYA,EAAM,mBAAmB,QAAQ,iBAAkB,MAAM;AAE3G,WAAAc,EAAM,MAAMd,EAAM,YAAY,OAAOe,MAAsB;AACzD,YAAMJ,EAAA,GAEFI,IACEX,EAAU,SAAS,CAACA,EAAU,MAAM,QACtCA,EAAU,MAAM,UAAA,IAGdA,EAAU,SAASA,EAAU,MAAM,QACrCA,EAAU,MAAM,MAAA;AAAA,IAGtB,CAAC,GAEDY,EAAU,MAAM;AACd,MAAIhB,EAAM,cACJI,EAAU,SAAS,CAACA,EAAU,MAAM,QACtCA,EAAU,MAAM,UAAA;AAAA,IAGtB,CAAC,GAEDa,EAAgB,MAAM;AACpB,MAAIb,EAAU,SAASA,EAAU,MAAM,QACrCA,EAAU,MAAM,MAAA;AAAA,IAEpB,CAAC,GAEDc,EAAa;AAAA,MACX,KAAK,MAAMd,EAAU;AAAA,MACrB,MAAME;AAAA,MACN,OAAOC;AAAA,IAAA,CACR,cA9HCY,EAAA,GAAAC,EA4BS,UA5BTC,EA4BS;AAAA,eA3BH;AAAA,MAAJ,KAAIjB;AAAA,MACJ,OAAM;AAAA,IAAA,GACEkB,EAAAA,QAAM;AAAA,MACb,SAAOZ;AAAA,MACP,UAAQF;AAAA,MACR,UAAUI,EAAA;AAAA,IAAA;MAEAX,EAAA,gBAAXkB,EAAA,GAAAC,EAWM,OAXNG,GAWM;AAAA,QAVJC,EAEO,QAFPC,GAEO;AAAA,UADLC,EAA0BC,EAAA,QAAA,SAAA,CAAA,GAAA,QAAA,EAAA;AAAA,QAAA;QAGpB1B,EAAA,mBAAmBA,EAAA,iBAD3BmB,EAMiB,UAAA;AAAA;UAJf,MAAK;AAAA,UACL,cAAW;AAAA,UACX,OAAM;AAAA,UACL,WAAeb,GAAW,CAAA,SAAA,CAAA;AAAA,QAAA,GAC5B,GAAO;;MAGViB,EAEM,OAFNI,GAEM;AAAA,QADJF,EAAaC,EAAA,QAAA,WAAA,CAAA,GAAA,QAAA,EAAA;AAAA,MAAA;MAGJE,EAAAA,OAAO,UAAlBV,KAAAC,EAEM,OAFNU,GAEM;AAAA,QADJJ,EAA2BC,EAAA,QAAA,UAAA,CAAA,GAAA,QAAA,EAAA;AAAA,MAAA;;;;;;;;iECtBpBI,IAA2B;AAAA,EACtC,SAAS,CAACC,MAAa;AACrB,IAAAA,EAAI,UAAU,cAAcC,CAAmB;AAAA,EACjD;AACF;"}
1
+ {"version":3,"file":"cssless.es.js","sources":["../src/DialogView.vue","../src/unobfuscated.ts"],"sourcesContent":["<template>\n <dialog\n ref=\"dialogRef\"\n class=\"dialog-view\"\n v-bind=\"$attrs\"\n @close=\"handleDialogClose\"\n @cancel=\"handleDialogCancel\"\n :closedBy=\"closedBy\"\n >\n <div v-if=\"showTitleBar\" class=\"dialog-title-bar\">\n <span class=\"dialog-title\">\n <slot name=\"title\"></slot>\n </span>\n <button\n v-if=\"showCloseButton && closable\"\n type=\"button\"\n aria-label=\"Close the dialog\"\n class=\"dialog-close-button\"\n @click.prevent=\"closeDialog\"\n >&times;</button>\n </div>\n \n <div class=\"dialog-content\">\n <slot></slot>\n </div>\n\n <div v-if=\"$slots.footer\" class=\"dialog-footer\">\n <slot name=\"footer\"></slot>\n </div>\n </dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, computed, nextTick, onMounted, onBeforeUnmount, onDeactivated, onActivated } from 'vue'\n\ninterface Props {\n modelValue: boolean\n showTitleBar?: boolean\n showCloseButton?: boolean\n closable?: boolean\n closeOnClickMask?: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n showTitleBar: true,\n showCloseButton: true,\n closable: true,\n closeOnClickMask: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'closed'): void\n}>()\n\nconst dialogRef = ref<HTMLDialogElement>();\n\nconst openDialog = (): void => {\n emit('update:modelValue', true)\n}\n\nconst closeDialog = (): void => {\n emit('update:modelValue', false)\n}\n\nconst handleDialogCancel = (e: Event) => {\n e.preventDefault();\n if (props.closable) closeDialog();\n}\n\nconst ignoreCloseEvent = ref(false);\n\nconst handleDialogClose = (): void => {\n if (ignoreCloseEvent.value) return;\n if (!props.closable) {\n if (props.modelValue) {\n // not programmatically close\n // re-open the dialog\n nextTick(() => {\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }) // Avoid using 'cancel' event because some browsers handle it incorrectly, see https://issues.chromium.org/issues/41491338\n return;\n }\n }\n if (props.modelValue) {\n emit('update:modelValue', false)\n }\n nextTick(() => {\n if (props.modelValue) {\n // model value keep unchanged\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }\n })\n emit('closed')\n}\n\nconst closedBy = computed(() => props.closable ? (props.closeOnClickMask ? 'any' : 'closerequest') : 'none') // see https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/closedBy\n\nwatch(() => props.modelValue, async (newValue: boolean) => {\n await nextTick()\n \n if (newValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n } else {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n }\n})\n\nconst initDialog = () => {\n if (props.modelValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n }\n};\n\nonMounted(() => {\n initDialog();\n});\n\nonBeforeUnmount(() => {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n});\n\nonDeactivated(() => {\n if (dialogRef.value && dialogRef.value.open) {\n ignoreCloseEvent.value = true;\n dialogRef.value.close();\n nextTick(() => ignoreCloseEvent.value = false);\n }\n});\n\nonActivated(() => {\n initDialog();\n});\n\ndefineExpose({\n get: () => dialogRef.value,\n open: openDialog,\n close: closeDialog,\n});\n</script>\n\n<style scoped>\n.dialog-view {\n padding: var(--dialog-padding, 20px);\n border-radius: 5px;\n border: 1px solid gray;\n outline: 0 !important;\n max-width: calc(100% - 2em);\n max-height: calc(100% - 2em);\n box-sizing: border-box;\n overflow: hidden;\n}\n\n.dialog-view[open] {\n display: flex;\n flex-direction: column;\n}\n\n.dialog-view::backdrop {\n background: rgba(0, 0, 0, 0.5);\n}\n\n.dialog-title-bar {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 0.5em;\n min-height: var(--dialog-title-height, 24px);\n white-space: pre;\n overflow: hidden;\n user-select: none;\n}\n\n.dialog-title {\n flex: 1;\n text-align: center;\n font-weight: bold;\n font-size: large;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.dialog-close-button {\n margin-left: 0.5em;\n text-decoration: none;\n color: #666;\n font-size: 1.5em;\n line-height: 1;\n width: 24px;\n height: 24px;\n padding: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: none;\n background: none;\n}\n\n.dialog-close-button:hover {\n color: #333;\n background-color: #f0f0f0;\n border-radius: 3px;\n}\n\n.dialog-close-button:focus-visible {\n outline: 2px solid rgb(160, 207, 255);\n outline-offset: -2px;\n}\n\n.dialog-content {\n flex: 1;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.dialog-footer {\n margin-top: 0.5em;\n}\n</style>\n","import { App, Plugin } from 'vue'\nimport DialogViewComponent from './DialogView.vue'\n\nexport { default as DialogView } from './DialogView.vue'\n\nexport const DialogViewPlugin: Plugin = {\n install: (app: App) => {\n app.component('DialogView', DialogViewComponent)\n }\n}\n\nexport default DialogViewPlugin\n"],"names":["props","__props","emit","__emit","dialogRef","ref","openDialog","closeDialog","handleDialogCancel","e","ignoreCloseEvent","handleDialogClose","nextTick","closedBy","computed","watch","newValue","initDialog","onMounted","onBeforeUnmount","onDeactivated","onActivated","__expose","_openBlock","_createElementBlock","_mergeProps","$attrs","_hoisted_2","_createElementVNode","_hoisted_3","_renderSlot","_ctx","_hoisted_4","$slots","_hoisted_5","DialogViewPlugin","app","DialogViewComponent"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- (function(t,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(t=typeof globalThis<"u"?globalThis:t||self,e(t.DialogView={},t.Vue))})(this,(function(t,e){"use strict";const f=["closedBy"],p={key:0,class:"dialog-title-bar"},m={class:"dialog-title"},g={class:"dialog-content"},V={key:1,class:"dialog-footer"},r=((a,c)=>{const i=a.__vccOpts||a;for(const[l,s]of c)i[l]=s;return i})(e.defineComponent({__name:"DialogView",props:{modelValue:{type:Boolean},showTitleBar:{type:Boolean,default:!0},showCloseButton:{type:Boolean,default:!0},closable:{type:Boolean,default:!0},closeOnClickMask:{type:Boolean,default:!1}},emits:["update:modelValue","closed"],setup(a,{expose:c,emit:i}){const l=a,s=i,o=e.ref(),h=()=>{s("update:modelValue",!0)},d=()=>{s("update:modelValue",!1)},k=n=>{n.preventDefault(),l.closable&&d()},B=()=>{if(!l.closable&&l.modelValue){e.nextTick(()=>{o.value&&!o.value.open&&o.value.showModal()});return}l.modelValue&&s("update:modelValue",!1),e.nextTick(()=>{l.modelValue&&o.value&&!o.value.open&&o.value.showModal()}),s("closed")},w=e.computed(()=>l.closable?l.closeOnClickMask?"any":"closerequest":"none");return e.watch(()=>l.modelValue,async n=>{await e.nextTick(),n?o.value&&!o.value.open&&o.value.showModal():o.value&&o.value.open&&o.value.close()}),e.onMounted(()=>{l.modelValue&&o.value&&!o.value.open&&o.value.showModal()}),e.onBeforeUnmount(()=>{o.value&&o.value.open&&o.value.close()}),c({get:()=>o.value,open:h,close:d}),(n,C)=>(e.openBlock(),e.createElementBlock("dialog",e.mergeProps({ref_key:"dialogRef",ref:o,class:"dialog-view"},n.$attrs,{onClose:B,onCancel:k,closedBy:w.value}),[a.showTitleBar?(e.openBlock(),e.createElementBlock("div",p,[e.createElementVNode("span",m,[e.renderSlot(n.$slots,"title",{},void 0,!0)]),a.showCloseButton&&a.closable?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","aria-label":"Close the dialog",class:"dialog-close-button",onClick:e.withModifiers(d,["prevent"])},"×")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",g,[e.renderSlot(n.$slots,"default",{},void 0,!0)]),n.$slots.footer?(e.openBlock(),e.createElementBlock("div",V,[e.renderSlot(n.$slots,"footer",{},void 0,!0)])):e.createCommentVNode("",!0)],16,f))}}),[["__scopeId","data-v-da4085e6"]]),u={install:a=>{a.component("DialogView",r)}};t.DialogView=r,t.DialogViewPlugin=u,t.default=u,Object.defineProperties(t,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
1
+ (function(t,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(t=typeof globalThis<"u"?globalThis:t||self,e(t.DialogView={},t.Vue))})(this,(function(t,e){"use strict";const m=["closedBy"],g={key:0,class:"dialog-title-bar"},V={class:"dialog-title"},h={class:"dialog-content"},k={key:1,class:"dialog-footer"},u=((a,c)=>{const i=a.__vccOpts||a;for(const[l,s]of c)i[l]=s;return i})(e.defineComponent({__name:"DialogView",props:{modelValue:{type:Boolean},showTitleBar:{type:Boolean,default:!0},showCloseButton:{type:Boolean,default:!0},closable:{type:Boolean,default:!0},closeOnClickMask:{type:Boolean,default:!1}},emits:["update:modelValue","closed"],setup(a,{expose:c,emit:i}){const l=a,s=i,o=e.ref(),B=()=>{s("update:modelValue",!0)},d=()=>{s("update:modelValue",!1)},w=n=>{n.preventDefault(),l.closable&&d()},r=e.ref(!1),y=()=>{if(!r.value){if(!l.closable&&l.modelValue){e.nextTick(()=>{o.value&&!o.value.open&&o.value.showModal()});return}l.modelValue&&s("update:modelValue",!1),e.nextTick(()=>{l.modelValue&&o.value&&!o.value.open&&o.value.showModal()}),s("closed")}},_=e.computed(()=>l.closable?l.closeOnClickMask?"any":"closerequest":"none");e.watch(()=>l.modelValue,async n=>{await e.nextTick(),n?o.value&&!o.value.open&&o.value.showModal():o.value&&o.value.open&&o.value.close()});const p=()=>{l.modelValue&&o.value&&!o.value.open&&o.value.showModal()};return e.onMounted(()=>{p()}),e.onBeforeUnmount(()=>{o.value&&o.value.open&&o.value.close()}),e.onDeactivated(()=>{o.value&&o.value.open&&(r.value=!0,o.value.close(),e.nextTick(()=>r.value=!1))}),e.onActivated(()=>{p()}),c({get:()=>o.value,open:B,close:d}),(n,D)=>(e.openBlock(),e.createElementBlock("dialog",e.mergeProps({ref_key:"dialogRef",ref:o,class:"dialog-view"},n.$attrs,{onClose:y,onCancel:w,closedBy:_.value}),[a.showTitleBar?(e.openBlock(),e.createElementBlock("div",g,[e.createElementVNode("span",V,[e.renderSlot(n.$slots,"title",{},void 0,!0)]),a.showCloseButton&&a.closable?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","aria-label":"Close the dialog",class:"dialog-close-button",onClick:e.withModifiers(d,["prevent"])},"×")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",h,[e.renderSlot(n.$slots,"default",{},void 0,!0)]),n.$slots.footer?(e.openBlock(),e.createElementBlock("div",k,[e.renderSlot(n.$slots,"footer",{},void 0,!0)])):e.createCommentVNode("",!0)],16,m))}}),[["__scopeId","data-v-7641dcfa"]]),f={install:a=>{a.component("DialogView",u)}};t.DialogView=u,t.DialogViewPlugin=f,t.default=f,Object.defineProperties(t,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
2
2
  //# sourceMappingURL=cssless.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cssless.umd.js","sources":["../src/DialogView.vue","../src/unobfuscated.ts"],"sourcesContent":["<template>\n <dialog\n ref=\"dialogRef\"\n class=\"dialog-view\"\n v-bind=\"$attrs\"\n @close=\"handleDialogClose\"\n @cancel=\"handleDialogCancel\"\n :closedBy=\"closedBy\"\n >\n <div v-if=\"showTitleBar\" class=\"dialog-title-bar\">\n <span class=\"dialog-title\">\n <slot name=\"title\"></slot>\n </span>\n <button\n v-if=\"showCloseButton && closable\"\n type=\"button\"\n aria-label=\"Close the dialog\"\n class=\"dialog-close-button\"\n @click.prevent=\"closeDialog\"\n >&times;</button>\n </div>\n \n <div class=\"dialog-content\">\n <slot></slot>\n </div>\n\n <div v-if=\"$slots.footer\" class=\"dialog-footer\">\n <slot name=\"footer\"></slot>\n </div>\n </dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, computed, nextTick, onMounted, onBeforeUnmount } from 'vue'\n\ninterface Props {\n modelValue: boolean\n showTitleBar?: boolean\n showCloseButton?: boolean\n closable?: boolean\n closeOnClickMask?: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n showTitleBar: true,\n showCloseButton: true,\n closable: true,\n closeOnClickMask: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'closed'): void\n}>()\n\nconst dialogRef = ref<HTMLDialogElement>();\n\nconst openDialog = (): void => {\n emit('update:modelValue', true)\n}\n\nconst closeDialog = (): void => {\n emit('update:modelValue', false)\n}\n\nconst handleDialogCancel = (e: Event) => {\n e.preventDefault();\n if (props.closable) closeDialog();\n}\n\nconst handleDialogClose = (): void => {\n if (!props.closable) {\n if (props.modelValue) {\n // not programmatically close\n // re-open the dialog\n nextTick(() => {\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }) // Avoid using 'cancel' event because some browsers handle it incorrectly, see https://issues.chromium.org/issues/41491338\n return;\n }\n }\n if (props.modelValue) {\n emit('update:modelValue', false)\n }\n nextTick(() => {\n if (props.modelValue) {\n // model value keep unchanged\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }\n })\n emit('closed')\n}\n\nconst closedBy = computed(() => props.closable ? (props.closeOnClickMask ? 'any' : 'closerequest') : 'none') // see https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/closedBy\n\nwatch(() => props.modelValue, async (newValue: boolean) => {\n await nextTick()\n \n if (newValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n } else {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n }\n})\n\nonMounted(() => {\n if (props.modelValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n }\n});\n\nonBeforeUnmount(() => {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n});\n\ndefineExpose({\n get: () => dialogRef.value,\n open: openDialog,\n close: closeDialog,\n});\n</script>\n\n<style scoped>\n.dialog-view {\n padding: var(--dialog-padding, 20px);\n border-radius: 5px;\n border: 1px solid gray;\n outline: 0 !important;\n max-width: calc(100% - 2em);\n max-height: calc(100% - 2em);\n box-sizing: border-box;\n overflow: hidden;\n}\n\n.dialog-view[open] {\n display: flex;\n flex-direction: column;\n}\n\n.dialog-view::backdrop {\n background: rgba(0, 0, 0, 0.5);\n}\n\n.dialog-title-bar {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 0.5em;\n min-height: var(--dialog-title-height, 24px);\n white-space: pre;\n overflow: hidden;\n user-select: none;\n}\n\n.dialog-title {\n flex: 1;\n text-align: center;\n font-weight: bold;\n font-size: large;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.dialog-close-button {\n margin-left: 0.5em;\n text-decoration: none;\n color: #666;\n font-size: 1.5em;\n line-height: 1;\n width: 24px;\n height: 24px;\n padding: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: none;\n background: none;\n}\n\n.dialog-close-button:hover {\n color: #333;\n background-color: #f0f0f0;\n border-radius: 3px;\n}\n\n.dialog-close-button:focus-visible {\n outline: 2px solid rgb(160, 207, 255);\n outline-offset: -2px;\n}\n\n.dialog-content {\n flex: 1;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.dialog-footer {\n margin-top: 0.5em;\n}\n</style>\n","import { App, Plugin } from 'vue'\nimport DialogViewComponent from './DialogView.vue'\n\nexport { default as DialogView } from './DialogView.vue'\n\nexport const DialogViewPlugin: Plugin = {\n install: (app: App) => {\n app.component('DialogView', DialogViewComponent)\n }\n}\n\nexport default DialogViewPlugin\n"],"names":["props","__props","emit","__emit","dialogRef","ref","openDialog","closeDialog","handleDialogCancel","e","handleDialogClose","nextTick","closedBy","computed","watch","newValue","onMounted","onBeforeUnmount","__expose","_openBlock","_createElementBlock","_mergeProps","$attrs","_hoisted_2","_createElementVNode","_hoisted_3","_renderSlot","_ctx","_hoisted_4","$slots","_hoisted_5","DialogViewPlugin","app","DialogViewComponent"],"mappings":"2vBA2CA,MAAMA,EAAQC,EAORC,EAAOC,EAKPC,EAAYC,EAAAA,IAAA,EAEZC,EAAa,IAAY,CAC7BJ,EAAK,oBAAqB,EAAI,CAChC,EAEMK,EAAc,IAAY,CAC9BL,EAAK,oBAAqB,EAAK,CACjC,EAEMM,EAAsBC,GAAa,CACvCA,EAAE,eAAA,EACET,EAAM,UAAUO,EAAA,CACtB,EAEMG,EAAoB,IAAY,CACpC,GAAI,CAACV,EAAM,UACLA,EAAM,WAAY,CAGpBW,EAAAA,SAAS,IAAM,CACTP,EAAU,OAAS,CAACA,EAAU,MAAM,MAAMA,EAAU,MAAM,UAAA,CAChE,CAAC,EACD,MACF,CAEEJ,EAAM,YACRE,EAAK,oBAAqB,EAAK,EAEjCS,EAAAA,SAAS,IAAM,CACTX,EAAM,YAEJI,EAAU,OAAS,CAACA,EAAU,MAAM,MAAMA,EAAU,MAAM,UAAA,CAElE,CAAC,EACDF,EAAK,QAAQ,CACf,EAEMU,EAAWC,WAAS,IAAMb,EAAM,SAAYA,EAAM,iBAAmB,MAAQ,eAAkB,MAAM,EAE3Gc,OAAAA,EAAAA,MAAM,IAAMd,EAAM,WAAY,MAAOe,GAAsB,CACzD,MAAMJ,WAAA,EAEFI,EACEX,EAAU,OAAS,CAACA,EAAU,MAAM,MACtCA,EAAU,MAAM,UAAA,EAGdA,EAAU,OAASA,EAAU,MAAM,MACrCA,EAAU,MAAM,MAAA,CAGtB,CAAC,EAEDY,EAAAA,UAAU,IAAM,CACVhB,EAAM,YACJI,EAAU,OAAS,CAACA,EAAU,MAAM,MACtCA,EAAU,MAAM,UAAA,CAGtB,CAAC,EAEDa,EAAAA,gBAAgB,IAAM,CAChBb,EAAU,OAASA,EAAU,MAAM,MACrCA,EAAU,MAAM,MAAA,CAEpB,CAAC,EAEDc,EAAa,CACX,IAAK,IAAMd,EAAU,MACrB,KAAME,EACN,MAAOC,CAAA,CACR,UA9HCY,YAAA,EAAAC,qBA4BS,SA5BTC,EAAAA,WA4BS,SA3BH,YAAJ,IAAIjB,EACJ,MAAM,aAAA,EACEkB,EAAAA,OAAM,CACb,QAAOZ,EACP,SAAQF,EACR,SAAUI,EAAA,KAAA,IAEAX,EAAA,cAAXkB,EAAAA,UAAA,EAAAC,EAAAA,mBAWM,MAXNG,EAWM,CAVJC,EAAAA,mBAEO,OAFPC,EAEO,CADLC,EAAAA,WAA0BC,EAAA,OAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,GAGpB1B,EAAA,iBAAmBA,EAAA,wBAD3BmB,EAAAA,mBAMiB,SAAA,OAJf,KAAK,SACL,aAAW,mBACX,MAAM,sBACL,wBAAeb,EAAW,CAAA,SAAA,CAAA,CAAA,EAC5B,GAAO,8DAGViB,EAAAA,mBAEM,MAFNI,EAEM,CADJF,EAAAA,WAAaC,EAAA,OAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,GAGJE,EAAAA,OAAO,QAAlBV,EAAAA,YAAAC,EAAAA,mBAEM,MAFNU,EAEM,CADJJ,EAAAA,WAA2BC,EAAA,OAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,8ECtBpBI,EAA2B,CACtC,QAAUC,GAAa,CACrBA,EAAI,UAAU,aAAcC,CAAmB,CACjD,CACF"}
1
+ {"version":3,"file":"cssless.umd.js","sources":["../src/DialogView.vue","../src/unobfuscated.ts"],"sourcesContent":["<template>\n <dialog\n ref=\"dialogRef\"\n class=\"dialog-view\"\n v-bind=\"$attrs\"\n @close=\"handleDialogClose\"\n @cancel=\"handleDialogCancel\"\n :closedBy=\"closedBy\"\n >\n <div v-if=\"showTitleBar\" class=\"dialog-title-bar\">\n <span class=\"dialog-title\">\n <slot name=\"title\"></slot>\n </span>\n <button\n v-if=\"showCloseButton && closable\"\n type=\"button\"\n aria-label=\"Close the dialog\"\n class=\"dialog-close-button\"\n @click.prevent=\"closeDialog\"\n >&times;</button>\n </div>\n \n <div class=\"dialog-content\">\n <slot></slot>\n </div>\n\n <div v-if=\"$slots.footer\" class=\"dialog-footer\">\n <slot name=\"footer\"></slot>\n </div>\n </dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, computed, nextTick, onMounted, onBeforeUnmount, onDeactivated, onActivated } from 'vue'\n\ninterface Props {\n modelValue: boolean\n showTitleBar?: boolean\n showCloseButton?: boolean\n closable?: boolean\n closeOnClickMask?: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n showTitleBar: true,\n showCloseButton: true,\n closable: true,\n closeOnClickMask: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'closed'): void\n}>()\n\nconst dialogRef = ref<HTMLDialogElement>();\n\nconst openDialog = (): void => {\n emit('update:modelValue', true)\n}\n\nconst closeDialog = (): void => {\n emit('update:modelValue', false)\n}\n\nconst handleDialogCancel = (e: Event) => {\n e.preventDefault();\n if (props.closable) closeDialog();\n}\n\nconst ignoreCloseEvent = ref(false);\n\nconst handleDialogClose = (): void => {\n if (ignoreCloseEvent.value) return;\n if (!props.closable) {\n if (props.modelValue) {\n // not programmatically close\n // re-open the dialog\n nextTick(() => {\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }) // Avoid using 'cancel' event because some browsers handle it incorrectly, see https://issues.chromium.org/issues/41491338\n return;\n }\n }\n if (props.modelValue) {\n emit('update:modelValue', false)\n }\n nextTick(() => {\n if (props.modelValue) {\n // model value keep unchanged\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }\n })\n emit('closed')\n}\n\nconst closedBy = computed(() => props.closable ? (props.closeOnClickMask ? 'any' : 'closerequest') : 'none') // see https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/closedBy\n\nwatch(() => props.modelValue, async (newValue: boolean) => {\n await nextTick()\n \n if (newValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n } else {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n }\n})\n\nconst initDialog = () => {\n if (props.modelValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n }\n};\n\nonMounted(() => {\n initDialog();\n});\n\nonBeforeUnmount(() => {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n});\n\nonDeactivated(() => {\n if (dialogRef.value && dialogRef.value.open) {\n ignoreCloseEvent.value = true;\n dialogRef.value.close();\n nextTick(() => ignoreCloseEvent.value = false);\n }\n});\n\nonActivated(() => {\n initDialog();\n});\n\ndefineExpose({\n get: () => dialogRef.value,\n open: openDialog,\n close: closeDialog,\n});\n</script>\n\n<style scoped>\n.dialog-view {\n padding: var(--dialog-padding, 20px);\n border-radius: 5px;\n border: 1px solid gray;\n outline: 0 !important;\n max-width: calc(100% - 2em);\n max-height: calc(100% - 2em);\n box-sizing: border-box;\n overflow: hidden;\n}\n\n.dialog-view[open] {\n display: flex;\n flex-direction: column;\n}\n\n.dialog-view::backdrop {\n background: rgba(0, 0, 0, 0.5);\n}\n\n.dialog-title-bar {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 0.5em;\n min-height: var(--dialog-title-height, 24px);\n white-space: pre;\n overflow: hidden;\n user-select: none;\n}\n\n.dialog-title {\n flex: 1;\n text-align: center;\n font-weight: bold;\n font-size: large;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.dialog-close-button {\n margin-left: 0.5em;\n text-decoration: none;\n color: #666;\n font-size: 1.5em;\n line-height: 1;\n width: 24px;\n height: 24px;\n padding: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: none;\n background: none;\n}\n\n.dialog-close-button:hover {\n color: #333;\n background-color: #f0f0f0;\n border-radius: 3px;\n}\n\n.dialog-close-button:focus-visible {\n outline: 2px solid rgb(160, 207, 255);\n outline-offset: -2px;\n}\n\n.dialog-content {\n flex: 1;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.dialog-footer {\n margin-top: 0.5em;\n}\n</style>\n","import { App, Plugin } from 'vue'\nimport DialogViewComponent from './DialogView.vue'\n\nexport { default as DialogView } from './DialogView.vue'\n\nexport const DialogViewPlugin: Plugin = {\n install: (app: App) => {\n app.component('DialogView', DialogViewComponent)\n }\n}\n\nexport default DialogViewPlugin\n"],"names":["props","__props","emit","__emit","dialogRef","ref","openDialog","closeDialog","handleDialogCancel","e","ignoreCloseEvent","handleDialogClose","nextTick","closedBy","computed","watch","newValue","initDialog","onMounted","onBeforeUnmount","onDeactivated","onActivated","__expose","_openBlock","_createElementBlock","_mergeProps","$attrs","_hoisted_2","_createElementVNode","_hoisted_3","_renderSlot","_ctx","_hoisted_4","$slots","_hoisted_5","DialogViewPlugin","app","DialogViewComponent"],"mappings":"2vBA2CA,MAAMA,EAAQC,EAORC,EAAOC,EAKPC,EAAYC,EAAAA,IAAA,EAEZC,EAAa,IAAY,CAC7BJ,EAAK,oBAAqB,EAAI,CAChC,EAEMK,EAAc,IAAY,CAC9BL,EAAK,oBAAqB,EAAK,CACjC,EAEMM,EAAsBC,GAAa,CACvCA,EAAE,eAAA,EACET,EAAM,UAAUO,EAAA,CACtB,EAEMG,EAAmBL,EAAAA,IAAI,EAAK,EAE5BM,EAAoB,IAAY,CACpC,GAAI,CAAAD,EAAiB,MACrB,IAAI,CAACV,EAAM,UACLA,EAAM,WAAY,CAGpBY,EAAAA,SAAS,IAAM,CACTR,EAAU,OAAS,CAACA,EAAU,MAAM,MAAMA,EAAU,MAAM,UAAA,CAChE,CAAC,EACD,MACF,CAEEJ,EAAM,YACRE,EAAK,oBAAqB,EAAK,EAEjCU,EAAAA,SAAS,IAAM,CACTZ,EAAM,YAEJI,EAAU,OAAS,CAACA,EAAU,MAAM,MAAMA,EAAU,MAAM,UAAA,CAElE,CAAC,EACDF,EAAK,QAAQ,EACf,EAEMW,EAAWC,WAAS,IAAMd,EAAM,SAAYA,EAAM,iBAAmB,MAAQ,eAAkB,MAAM,EAE3Ge,EAAAA,MAAM,IAAMf,EAAM,WAAY,MAAOgB,GAAsB,CACzD,MAAMJ,WAAA,EAEFI,EACEZ,EAAU,OAAS,CAACA,EAAU,MAAM,MACtCA,EAAU,MAAM,UAAA,EAGdA,EAAU,OAASA,EAAU,MAAM,MACrCA,EAAU,MAAM,MAAA,CAGtB,CAAC,EAED,MAAMa,EAAa,IAAM,CACnBjB,EAAM,YACJI,EAAU,OAAS,CAACA,EAAU,MAAM,MACtCA,EAAU,MAAM,UAAA,CAGtB,EAEAc,OAAAA,EAAAA,UAAU,IAAM,CACdD,EAAA,CACF,CAAC,EAEDE,EAAAA,gBAAgB,IAAM,CAChBf,EAAU,OAASA,EAAU,MAAM,MACrCA,EAAU,MAAM,MAAA,CAEpB,CAAC,EAEDgB,EAAAA,cAAc,IAAM,CACdhB,EAAU,OAASA,EAAU,MAAM,OACrCM,EAAiB,MAAQ,GACzBN,EAAU,MAAM,MAAA,EAChBQ,EAAAA,SAAS,IAAMF,EAAiB,MAAQ,EAAK,EAEjD,CAAC,EAEDW,EAAAA,YAAY,IAAM,CAChBJ,EAAA,CACF,CAAC,EAEDK,EAAa,CACX,IAAK,IAAMlB,EAAU,MACrB,KAAME,EACN,MAAOC,CAAA,CACR,UAjJCgB,YAAA,EAAAC,qBA4BS,SA5BTC,EAAAA,WA4BS,SA3BH,YAAJ,IAAIrB,EACJ,MAAM,aAAA,EACEsB,EAAAA,OAAM,CACb,QAAOf,EACP,SAAQH,EACR,SAAUK,EAAA,KAAA,IAEAZ,EAAA,cAAXsB,EAAAA,UAAA,EAAAC,EAAAA,mBAWM,MAXNG,EAWM,CAVJC,EAAAA,mBAEO,OAFPC,EAEO,CADLC,EAAAA,WAA0BC,EAAA,OAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,GAGpB9B,EAAA,iBAAmBA,EAAA,wBAD3BuB,EAAAA,mBAMiB,SAAA,OAJf,KAAK,SACL,aAAW,mBACX,MAAM,sBACL,wBAAejB,EAAW,CAAA,SAAA,CAAA,CAAA,EAC5B,GAAO,8DAGVqB,EAAAA,mBAEM,MAFNI,EAEM,CADJF,EAAAA,WAAaC,EAAA,OAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,GAGJE,EAAAA,OAAO,QAAlBV,EAAAA,YAAAC,EAAAA,mBAEM,MAFNU,EAEM,CADJJ,EAAAA,WAA2BC,EAAA,OAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,8ECtBpBI,EAA2B,CACtC,QAAUC,GAAa,CACrBA,EAAI,UAAU,aAAcC,CAAmB,CACjD,CACF"}
@@ -1,12 +1,12 @@
1
1
  (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._b4102a3b79656a37{padding:var(--dialog-padding, 20px);border-radius:5px;border:1px solid gray;outline:0!important;max-width:calc(100% - 2em);max-height:calc(100% - 2em);box-sizing:border-box;overflow:hidden}._b4102a3b79656a37[open]{display:flex;flex-direction:column}._b4102a3b79656a37::backdrop{background:#00000080}._4d394b1507fdc584{display:flex;flex-direction:row;align-items:center;margin-bottom:.5em;min-height:var(--dialog-title-height, 24px);white-space:pre;overflow:hidden;-webkit-user-select:none;user-select:none}._088d860d2fd75292{flex:1;text-align:center;font-weight:700;font-size:large;overflow:hidden;text-overflow:ellipsis}._468ff1da37ead40a{margin-left:.5em;text-decoration:none;color:#666;font-size:1.5em;line-height:1;width:24px;height:24px;padding:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;background:none}._468ff1da37ead40a:hover{color:#333;background-color:#f0f0f0;border-radius:3px}._468ff1da37ead40a:focus-visible{outline:2px solid rgb(160,207,255);outline-offset:-2px}._da3b3b2a4aeed1ee{flex:1;overflow:auto;display:flex;flex-direction:column}._61879ba330d9a71c{margin-top:.5em}")),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
2
- import { defineComponent as b, ref as g, computed as w, watch as y, nextTick as d, onMounted as B, onBeforeUnmount as k, openBlock as s, createElementBlock as n, mergeProps as C, createElementVNode as f, renderSlot as i, withModifiers as _, createCommentVNode as c } from "vue";
3
- const D = ["closedBy"], M = {
2
+ import { defineComponent as y, ref as v, computed as B, watch as C, nextTick as s, onMounted as k, onBeforeUnmount as _, onDeactivated as D, onActivated as M, openBlock as n, createElementBlock as u, mergeProps as $, createElementVNode as p, renderSlot as c, withModifiers as E, createCommentVNode as f } from "vue";
3
+ const T = ["closedBy"], N = {
4
4
  key: 0,
5
5
  class: "_4d394b1507fdc584"
6
- }, $ = { class: "_088d860d2fd75292" }, T = { class: "_da3b3b2a4aeed1ee" }, E = {
6
+ }, O = { class: "_088d860d2fd75292" }, P = { class: "_da3b3b2a4aeed1ee" }, R = {
7
7
  key: 1,
8
8
  class: "_61879ba330d9a71c"
9
- }, N = /* @__PURE__ */ b({
9
+ }, q = /* @__PURE__ */ y({
10
10
  __name: "DialogView.obf",
11
11
  props: {
12
12
  modelValue: { type: Boolean },
@@ -16,71 +16,81 @@ const D = ["closedBy"], M = {
16
16
  closeOnClickMask: { type: Boolean, default: !1 }
17
17
  },
18
18
  emits: ["update:modelValue", "closed"],
19
- setup(a, { expose: r, emit: p }) {
20
- const o = a, t = p, e = g(), m = () => {
19
+ setup(a, { expose: m, emit: h }) {
20
+ const o = a, t = h, e = v(), g = () => {
21
21
  t("update:modelValue", !0);
22
- }, u = () => {
22
+ }, i = () => {
23
23
  t("update:modelValue", !1);
24
- }, v = (l) => {
25
- l.preventDefault(), o.closable && u();
26
- }, h = () => {
27
- if (!o.closable && o.modelValue) {
28
- d(() => {
29
- e.value && !e.value.open && e.value.showModal();
30
- });
31
- return;
24
+ }, V = (l) => {
25
+ l.preventDefault(), o.closable && i();
26
+ }, d = v(!1), b = () => {
27
+ if (!d.value) {
28
+ if (!o.closable && o.modelValue) {
29
+ s(() => {
30
+ e.value && !e.value.open && e.value.showModal();
31
+ });
32
+ return;
33
+ }
34
+ o.modelValue && t("update:modelValue", !1), s(() => {
35
+ o.modelValue && e.value && !e.value.open && e.value.showModal();
36
+ }), t("closed");
32
37
  }
33
- o.modelValue && t("update:modelValue", !1), d(() => {
34
- o.modelValue && e.value && !e.value.open && e.value.showModal();
35
- }), t("closed");
36
- }, V = w(() => o.closable ? o.closeOnClickMask ? "any" : "closerequest" : "none");
37
- return y(() => o.modelValue, async (l) => {
38
- await d(), l ? e.value && !e.value.open && e.value.showModal() : e.value && e.value.open && e.value.close();
39
- }), B(() => {
38
+ }, w = B(() => o.closable ? o.closeOnClickMask ? "any" : "closerequest" : "none");
39
+ C(() => o.modelValue, async (l) => {
40
+ await s(), l ? e.value && !e.value.open && e.value.showModal() : e.value && e.value.open && e.value.close();
41
+ });
42
+ const r = () => {
40
43
  o.modelValue && e.value && !e.value.open && e.value.showModal();
41
- }), k(() => {
44
+ };
45
+ return k(() => {
46
+ r();
47
+ }), _(() => {
42
48
  e.value && e.value.open && e.value.close();
43
- }), r({
49
+ }), D(() => {
50
+ e.value && e.value.open && (d.value = !0, e.value.close(), s(() => d.value = !1));
51
+ }), M(() => {
52
+ r();
53
+ }), m({
44
54
  get: () => e.value,
45
- open: m,
46
- close: u
47
- }), (l, O) => (s(), n("dialog", C({
55
+ open: g,
56
+ close: i
57
+ }), (l, A) => (n(), u("dialog", $({
48
58
  ref_key: "dialogRef",
49
59
  ref: e,
50
60
  class: "_b4102a3b79656a37"
51
61
  }, l.$attrs, {
52
- onClose: h,
53
- onCancel: v,
54
- closedBy: V.value
62
+ onClose: b,
63
+ onCancel: V,
64
+ closedBy: w.value
55
65
  }), [
56
- a.showTitleBar ? (s(), n("div", M, [
57
- f("span", $, [
58
- i(l.$slots, "title")
66
+ a.showTitleBar ? (n(), u("div", N, [
67
+ p("span", O, [
68
+ c(l.$slots, "title")
59
69
  ]),
60
- a.showCloseButton && a.closable ? (s(), n("button", {
70
+ a.showCloseButton && a.closable ? (n(), u("button", {
61
71
  key: 0,
62
72
  type: "button",
63
73
  "aria-label": "Close the dialog",
64
74
  class: "_468ff1da37ead40a",
65
- onClick: _(u, ["prevent"])
66
- }, "×")) : c("", !0)
67
- ])) : c("", !0),
68
- f("div", T, [
69
- i(l.$slots, "default")
75
+ onClick: E(i, ["prevent"])
76
+ }, "×")) : f("", !0)
77
+ ])) : f("", !0),
78
+ p("div", P, [
79
+ c(l.$slots, "default")
70
80
  ]),
71
- l.$slots.footer ? (s(), n("div", E, [
72
- i(l.$slots, "footer")
73
- ])) : c("", !0)
74
- ], 16, D));
81
+ l.$slots.footer ? (n(), u("div", R, [
82
+ c(l.$slots, "footer")
83
+ ])) : f("", !0)
84
+ ], 16, T));
75
85
  }
76
- }), R = {
86
+ }), U = {
77
87
  install: (a) => {
78
- a.component("DialogView", N);
88
+ a.component("DialogView", q);
79
89
  }
80
90
  };
81
91
  export {
82
- N as DialogView,
83
- R as DialogViewPlugin,
84
- R as default
92
+ q as DialogView,
93
+ U as DialogViewPlugin,
94
+ U as default
85
95
  };
86
96
  //# sourceMappingURL=dialog-view.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog-view.es.js","sources":["../src/DialogView.obf.vue","../src/index.ts"],"sourcesContent":["<template>\n <dialog\n ref=\"dialogRef\"\n class=\"_b4102a3b79656a37\"\n v-bind=\"$attrs\"\n @close=\"handleDialogClose\"\n @cancel=\"handleDialogCancel\"\n :closedBy=\"closedBy\"\n >\n <div v-if=\"showTitleBar\" class=\"_4d394b1507fdc584\">\n <span class=\"_088d860d2fd75292\">\n <slot name=\"title\"></slot>\n </span>\n <button\n v-if=\"showCloseButton && closable\"\n type=\"button\"\n aria-label=\"Close the dialog\"\n class=\"_468ff1da37ead40a\"\n @click.prevent=\"closeDialog\"\n >&times;</button>\n </div>\n \n <div class=\"_da3b3b2a4aeed1ee\">\n <slot></slot>\n </div>\n\n <div v-if=\"$slots.footer\" class=\"_61879ba330d9a71c\">\n <slot name=\"footer\"></slot>\n </div>\n </dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, computed, nextTick, onMounted, onBeforeUnmount } from 'vue'\n\ninterface Props {\n modelValue: boolean\n showTitleBar?: boolean\n showCloseButton?: boolean\n closable?: boolean\n closeOnClickMask?: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n showTitleBar: true,\n showCloseButton: true,\n closable: true,\n closeOnClickMask: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'closed'): void\n}>()\n\nconst dialogRef = ref<HTMLDialogElement>();\n\nconst openDialog = (): void => {\n emit('update:modelValue', true)\n}\n\nconst closeDialog = (): void => {\n emit('update:modelValue', false)\n}\n\nconst handleDialogCancel = (e: Event) => {\n e.preventDefault();\n if (props.closable) closeDialog();\n}\n\nconst handleDialogClose = (): void => {\n if (!props.closable) {\n if (props.modelValue) {\n // not programmatically close\n // re-open the dialog\n nextTick(() => {\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }) // Avoid using 'cancel' event because some browsers handle it incorrectly, see https://issues.chromium.org/issues/41491338\n return;\n }\n }\n if (props.modelValue) {\n emit('update:modelValue', false)\n }\n nextTick(() => {\n if (props.modelValue) {\n // model value keep unchanged\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }\n })\n emit('closed')\n}\n\nconst closedBy = computed(() => props.closable ? (props.closeOnClickMask ? 'any' : 'closerequest') : 'none') // see https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/closedBy\n\nwatch(() => props.modelValue, async (newValue: boolean) => {\n await nextTick()\n \n if (newValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n } else {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n }\n})\n\nonMounted(() => {\n if (props.modelValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n }\n});\n\nonBeforeUnmount(() => {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n});\n\ndefineExpose({\n get: () => dialogRef.value,\n open: openDialog,\n close: closeDialog,\n});\n</script>\n\n<style>\n._b4102a3b79656a37 {\n padding: var(--dialog-padding, 20px);\n border-radius: 5px;\n border: 1px solid gray;\n outline: 0 !important;\n max-width: calc(100% - 2em);\n max-height: calc(100% - 2em);\n box-sizing: border-box;\n overflow: hidden;\n}\n\n._b4102a3b79656a37[open] {\n display: flex;\n flex-direction: column;\n}\n\n._b4102a3b79656a37::backdrop {\n background: rgba(0, 0, 0, 0.5);\n}\n\n._4d394b1507fdc584 {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 0.5em;\n min-height: var(--dialog-title-height, 24px);\n white-space: pre;\n overflow: hidden;\n user-select: none;\n}\n\n._088d860d2fd75292 {\n flex: 1;\n text-align: center;\n font-weight: bold;\n font-size: large;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n._468ff1da37ead40a {\n margin-left: 0.5em;\n text-decoration: none;\n color: #666;\n font-size: 1.5em;\n line-height: 1;\n width: 24px;\n height: 24px;\n padding: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: none;\n background: none;\n}\n\n._468ff1da37ead40a:hover {\n color: #333;\n background-color: #f0f0f0;\n border-radius: 3px;\n}\n\n._468ff1da37ead40a:focus-visible {\n outline: 2px solid rgb(160, 207, 255);\n outline-offset: -2px;\n}\n\n._da3b3b2a4aeed1ee {\n flex: 1;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n._61879ba330d9a71c {\n margin-top: 0.5em;\n}\n</style>\n","import { App, Plugin } from 'vue'\nimport DialogViewComponent from './DialogView.obf.vue'\n\nexport { default as DialogView } from './DialogView.obf.vue'\n\nexport const DialogViewPlugin: Plugin = {\n install: (app: App) => {\n app.component('DialogView', DialogViewComponent)\n }\n}\n\nexport default DialogViewPlugin\n"],"names":["props","__props","emit","__emit","dialogRef","ref","openDialog","closeDialog","handleDialogCancel","e","handleDialogClose","nextTick","closedBy","computed","watch","newValue","onMounted","onBeforeUnmount","__expose","_openBlock","_createElementBlock","_mergeProps","$attrs","_hoisted_2","_createElementVNode","_hoisted_3","_renderSlot","_ctx","_hoisted_4","$slots","_hoisted_5","DialogViewPlugin","app","DialogViewComponent"],"mappings":";;;;;;;;;;;;;;;;;;AA2CA,UAAMA,IAAQC,GAORC,IAAOC,GAKPC,IAAYC,EAAA,GAEZC,IAAa,MAAY;AAC7B,MAAAJ,EAAK,qBAAqB,EAAI;AAAA,IAChC,GAEMK,IAAc,MAAY;AAC9B,MAAAL,EAAK,qBAAqB,EAAK;AAAA,IACjC,GAEMM,IAAqB,CAACC,MAAa;AACvC,MAAAA,EAAE,eAAA,GACET,EAAM,YAAUO,EAAA;AAAA,IACtB,GAEMG,IAAoB,MAAY;AACpC,UAAI,CAACV,EAAM,YACLA,EAAM,YAAY;AAGpB,QAAAW,EAAS,MAAM;AACb,UAAIP,EAAU,SAAS,CAACA,EAAU,MAAM,QAAMA,EAAU,MAAM,UAAA;AAAA,QAChE,CAAC;AACD;AAAA,MACF;AAEF,MAAIJ,EAAM,cACRE,EAAK,qBAAqB,EAAK,GAEjCS,EAAS,MAAM;AACb,QAAIX,EAAM,cAEJI,EAAU,SAAS,CAACA,EAAU,MAAM,QAAMA,EAAU,MAAM,UAAA;AAAA,MAElE,CAAC,GACDF,EAAK,QAAQ;AAAA,IACf,GAEMU,IAAWC,EAAS,MAAMb,EAAM,WAAYA,EAAM,mBAAmB,QAAQ,iBAAkB,MAAM;AAE3G,WAAAc,EAAM,MAAMd,EAAM,YAAY,OAAOe,MAAsB;AACzD,YAAMJ,EAAA,GAEFI,IACEX,EAAU,SAAS,CAACA,EAAU,MAAM,QACtCA,EAAU,MAAM,UAAA,IAGdA,EAAU,SAASA,EAAU,MAAM,QACrCA,EAAU,MAAM,MAAA;AAAA,IAGtB,CAAC,GAEDY,EAAU,MAAM;AACd,MAAIhB,EAAM,cACJI,EAAU,SAAS,CAACA,EAAU,MAAM,QACtCA,EAAU,MAAM,UAAA;AAAA,IAGtB,CAAC,GAEDa,EAAgB,MAAM;AACpB,MAAIb,EAAU,SAASA,EAAU,MAAM,QACrCA,EAAU,MAAM,MAAA;AAAA,IAEpB,CAAC,GAEDc,EAAa;AAAA,MACX,KAAK,MAAMd,EAAU;AAAA,MACrB,MAAME;AAAA,MACN,OAAOC;AAAA,IAAA,CACR,cA9HCY,EAAA,GAAAC,EA4BS,UA5BTC,EA4BS;AAAA,eA3BH;AAAA,MAAJ,KAAIjB;AAAA,MACJ,OAAM;AAAA,IAAA,GACEkB,EAAAA,QAAM;AAAA,MACb,SAAOZ;AAAA,MACP,UAAQF;AAAA,MACR,UAAUI,EAAA;AAAA,IAAA;MAEAX,EAAA,gBAAXkB,EAAA,GAAAC,EAWM,OAXNG,GAWM;AAAA,QAVJC,EAEO,QAFPC,GAEO;AAAA,UADLC,EAA0BC,EAAA,QAAA,OAAA;AAAA,QAAA;QAGpB1B,EAAA,mBAAmBA,EAAA,iBAD3BmB,EAMiB,UAAA;AAAA;UAJf,MAAK;AAAA,UACL,cAAW;AAAA,UACX,OAAM;AAAA,UACL,WAAeb,GAAW,CAAA,SAAA,CAAA;AAAA,QAAA,GAC5B,GAAO;;MAGViB,EAEM,OAFNI,GAEM;AAAA,QADJF,EAAaC,EAAA,QAAA,SAAA;AAAA,MAAA;MAGJE,EAAAA,OAAO,UAAlBV,KAAAC,EAEM,OAFNU,GAEM;AAAA,QADJJ,EAA2BC,EAAA,QAAA,QAAA;AAAA,MAAA;;;ICtBpBI,IAA2B;AAAA,EACtC,SAAS,CAACC,MAAa;AACrB,IAAAA,EAAI,UAAU,cAAcC,CAAmB;AAAA,EACjD;AACF;"}
1
+ {"version":3,"file":"dialog-view.es.js","sources":["../src/DialogView.obf.vue","../src/index.ts"],"sourcesContent":["<template>\n <dialog\n ref=\"dialogRef\"\n class=\"_b4102a3b79656a37\"\n v-bind=\"$attrs\"\n @close=\"handleDialogClose\"\n @cancel=\"handleDialogCancel\"\n :closedBy=\"closedBy\"\n >\n <div v-if=\"showTitleBar\" class=\"_4d394b1507fdc584\">\n <span class=\"_088d860d2fd75292\">\n <slot name=\"title\"></slot>\n </span>\n <button\n v-if=\"showCloseButton && closable\"\n type=\"button\"\n aria-label=\"Close the dialog\"\n class=\"_468ff1da37ead40a\"\n @click.prevent=\"closeDialog\"\n >&times;</button>\n </div>\n \n <div class=\"_da3b3b2a4aeed1ee\">\n <slot></slot>\n </div>\n\n <div v-if=\"$slots.footer\" class=\"_61879ba330d9a71c\">\n <slot name=\"footer\"></slot>\n </div>\n </dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, computed, nextTick, onMounted, onBeforeUnmount, onDeactivated, onActivated } from 'vue'\n\ninterface Props {\n modelValue: boolean\n showTitleBar?: boolean\n showCloseButton?: boolean\n closable?: boolean\n closeOnClickMask?: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n showTitleBar: true,\n showCloseButton: true,\n closable: true,\n closeOnClickMask: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'closed'): void\n}>()\n\nconst dialogRef = ref<HTMLDialogElement>();\n\nconst openDialog = (): void => {\n emit('update:modelValue', true)\n}\n\nconst closeDialog = (): void => {\n emit('update:modelValue', false)\n}\n\nconst handleDialogCancel = (e: Event) => {\n e.preventDefault();\n if (props.closable) closeDialog();\n}\n\nconst ignoreCloseEvent = ref(false);\n\nconst handleDialogClose = (): void => {\n if (ignoreCloseEvent.value) return;\n if (!props.closable) {\n if (props.modelValue) {\n // not programmatically close\n // re-open the dialog\n nextTick(() => {\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }) // Avoid using 'cancel' event because some browsers handle it incorrectly, see https://issues.chromium.org/issues/41491338\n return;\n }\n }\n if (props.modelValue) {\n emit('update:modelValue', false)\n }\n nextTick(() => {\n if (props.modelValue) {\n // model value keep unchanged\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }\n })\n emit('closed')\n}\n\nconst closedBy = computed(() => props.closable ? (props.closeOnClickMask ? 'any' : 'closerequest') : 'none') // see https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/closedBy\n\nwatch(() => props.modelValue, async (newValue: boolean) => {\n await nextTick()\n \n if (newValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n } else {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n }\n})\n\nconst initDialog = () => {\n if (props.modelValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n }\n};\n\nonMounted(() => {\n initDialog();\n});\n\nonBeforeUnmount(() => {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n});\n\nonDeactivated(() => {\n if (dialogRef.value && dialogRef.value.open) {\n ignoreCloseEvent.value = true;\n dialogRef.value.close();\n nextTick(() => ignoreCloseEvent.value = false);\n }\n});\n\nonActivated(() => {\n initDialog();\n});\n\ndefineExpose({\n get: () => dialogRef.value,\n open: openDialog,\n close: closeDialog,\n});\n</script>\n\n<style>\n._b4102a3b79656a37 {\n padding: var(--dialog-padding, 20px);\n border-radius: 5px;\n border: 1px solid gray;\n outline: 0 !important;\n max-width: calc(100% - 2em);\n max-height: calc(100% - 2em);\n box-sizing: border-box;\n overflow: hidden;\n}\n\n._b4102a3b79656a37[open] {\n display: flex;\n flex-direction: column;\n}\n\n._b4102a3b79656a37::backdrop {\n background: rgba(0, 0, 0, 0.5);\n}\n\n._4d394b1507fdc584 {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 0.5em;\n min-height: var(--dialog-title-height, 24px);\n white-space: pre;\n overflow: hidden;\n user-select: none;\n}\n\n._088d860d2fd75292 {\n flex: 1;\n text-align: center;\n font-weight: bold;\n font-size: large;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n._468ff1da37ead40a {\n margin-left: 0.5em;\n text-decoration: none;\n color: #666;\n font-size: 1.5em;\n line-height: 1;\n width: 24px;\n height: 24px;\n padding: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: none;\n background: none;\n}\n\n._468ff1da37ead40a:hover {\n color: #333;\n background-color: #f0f0f0;\n border-radius: 3px;\n}\n\n._468ff1da37ead40a:focus-visible {\n outline: 2px solid rgb(160, 207, 255);\n outline-offset: -2px;\n}\n\n._da3b3b2a4aeed1ee {\n flex: 1;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n._61879ba330d9a71c {\n margin-top: 0.5em;\n}\n</style>\n","import { App, Plugin } from 'vue'\nimport DialogViewComponent from './DialogView.obf.vue'\n\nexport { default as DialogView } from './DialogView.obf.vue'\n\nexport const DialogViewPlugin: Plugin = {\n install: (app: App) => {\n app.component('DialogView', DialogViewComponent)\n }\n}\n\nexport default DialogViewPlugin\n"],"names":["props","__props","emit","__emit","dialogRef","ref","openDialog","closeDialog","handleDialogCancel","e","ignoreCloseEvent","handleDialogClose","nextTick","closedBy","computed","watch","newValue","initDialog","onMounted","onBeforeUnmount","onDeactivated","onActivated","__expose","_openBlock","_createElementBlock","_mergeProps","$attrs","_hoisted_2","_createElementVNode","_hoisted_3","_renderSlot","_ctx","_hoisted_4","$slots","_hoisted_5","DialogViewPlugin","app","DialogViewComponent"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode("._b4102a3b79656a37{padding:var(--dialog-padding, 20px);border-radius:5px;border:1px solid gray;outline:0!important;max-width:calc(100% - 2em);max-height:calc(100% - 2em);box-sizing:border-box;overflow:hidden}._b4102a3b79656a37[open]{display:flex;flex-direction:column}._b4102a3b79656a37::backdrop{background:#00000080}._4d394b1507fdc584{display:flex;flex-direction:row;align-items:center;margin-bottom:.5em;min-height:var(--dialog-title-height, 24px);white-space:pre;overflow:hidden;-webkit-user-select:none;user-select:none}._088d860d2fd75292{flex:1;text-align:center;font-weight:700;font-size:large;overflow:hidden;text-overflow:ellipsis}._468ff1da37ead40a{margin-left:.5em;text-decoration:none;color:#666;font-size:1.5em;line-height:1;width:24px;height:24px;padding:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;background:none}._468ff1da37ead40a:hover{color:#333;background-color:#f0f0f0;border-radius:3px}._468ff1da37ead40a:focus-visible{outline:2px solid rgb(160,207,255);outline-offset:-2px}._da3b3b2a4aeed1ee{flex:1;overflow:auto;display:flex;flex-direction:column}._61879ba330d9a71c{margin-top:.5em}")),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
2
- (function(l,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(l=typeof globalThis<"u"?globalThis:l||self,e(l.DialogView={},l.Vue))})(this,(function(l,e){"use strict";const u=["closedBy"],f={key:0,class:"_4d394b1507fdc584"},r={class:"_088d860d2fd75292"},m={class:"_da3b3b2a4aeed1ee"},p={key:1,class:"_61879ba330d9a71c"},d=e.defineComponent({__name:"DialogView.obf",props:{modelValue:{type:Boolean},showTitleBar:{type:Boolean,default:!0},showCloseButton:{type:Boolean,default:!0},closable:{type:Boolean,default:!0},closeOnClickMask:{type:Boolean,default:!1}},emits:["update:modelValue","closed"],setup(n,{expose:h,emit:V}){const a=n,s=V,o=e.ref(),B=()=>{s("update:modelValue",!0)},i=()=>{s("update:modelValue",!1)},k=t=>{t.preventDefault(),a.closable&&i()},g=()=>{if(!a.closable&&a.modelValue){e.nextTick(()=>{o.value&&!o.value.open&&o.value.showModal()});return}a.modelValue&&s("update:modelValue",!1),e.nextTick(()=>{a.modelValue&&o.value&&!o.value.open&&o.value.showModal()}),s("closed")},y=e.computed(()=>a.closable?a.closeOnClickMask?"any":"closerequest":"none");return e.watch(()=>a.modelValue,async t=>{await e.nextTick(),t?o.value&&!o.value.open&&o.value.showModal():o.value&&o.value.open&&o.value.close()}),e.onMounted(()=>{a.modelValue&&o.value&&!o.value.open&&o.value.showModal()}),e.onBeforeUnmount(()=>{o.value&&o.value.open&&o.value.close()}),h({get:()=>o.value,open:B,close:i}),(t,b)=>(e.openBlock(),e.createElementBlock("dialog",e.mergeProps({ref_key:"dialogRef",ref:o,class:"_b4102a3b79656a37"},t.$attrs,{onClose:g,onCancel:k,closedBy:y.value}),[n.showTitleBar?(e.openBlock(),e.createElementBlock("div",f,[e.createElementVNode("span",r,[e.renderSlot(t.$slots,"title")]),n.showCloseButton&&n.closable?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","aria-label":"Close the dialog",class:"_468ff1da37ead40a",onClick:e.withModifiers(i,["prevent"])},"×")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",m,[e.renderSlot(t.$slots,"default")]),t.$slots.footer?(e.openBlock(),e.createElementBlock("div",p,[e.renderSlot(t.$slots,"footer")])):e.createCommentVNode("",!0)],16,u))}}),c={install:n=>{n.component("DialogView",d)}};l.DialogView=d,l.DialogViewPlugin=c,l.default=c,Object.defineProperties(l,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
2
+ (function(l,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(l=typeof globalThis<"u"?globalThis:l||self,e(l.DialogView={},l.Vue))})(this,(function(l,e){"use strict";const r=["closedBy"],m={key:0,class:"_4d394b1507fdc584"},p={class:"_088d860d2fd75292"},h={class:"_da3b3b2a4aeed1ee"},V={key:1,class:"_61879ba330d9a71c"},c=e.defineComponent({__name:"DialogView.obf",props:{modelValue:{type:Boolean},showTitleBar:{type:Boolean,default:!0},showCloseButton:{type:Boolean,default:!0},closable:{type:Boolean,default:!0},closeOnClickMask:{type:Boolean,default:!1}},emits:["update:modelValue","closed"],setup(n,{expose:g,emit:k}){const a=n,s=k,o=e.ref(),B=()=>{s("update:modelValue",!0)},i=()=>{s("update:modelValue",!1)},y=t=>{t.preventDefault(),a.closable&&i()},d=e.ref(!1),b=()=>{if(!d.value){if(!a.closable&&a.modelValue){e.nextTick(()=>{o.value&&!o.value.open&&o.value.showModal()});return}a.modelValue&&s("update:modelValue",!1),e.nextTick(()=>{a.modelValue&&o.value&&!o.value.open&&o.value.showModal()}),s("closed")}},w=e.computed(()=>a.closable?a.closeOnClickMask?"any":"closerequest":"none");e.watch(()=>a.modelValue,async t=>{await e.nextTick(),t?o.value&&!o.value.open&&o.value.showModal():o.value&&o.value.open&&o.value.close()});const u=()=>{a.modelValue&&o.value&&!o.value.open&&o.value.showModal()};return e.onMounted(()=>{u()}),e.onBeforeUnmount(()=>{o.value&&o.value.open&&o.value.close()}),e.onDeactivated(()=>{o.value&&o.value.open&&(d.value=!0,o.value.close(),e.nextTick(()=>d.value=!1))}),e.onActivated(()=>{u()}),g({get:()=>o.value,open:B,close:i}),(t,C)=>(e.openBlock(),e.createElementBlock("dialog",e.mergeProps({ref_key:"dialogRef",ref:o,class:"_b4102a3b79656a37"},t.$attrs,{onClose:b,onCancel:y,closedBy:w.value}),[n.showTitleBar?(e.openBlock(),e.createElementBlock("div",m,[e.createElementVNode("span",p,[e.renderSlot(t.$slots,"title")]),n.showCloseButton&&n.closable?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","aria-label":"Close the dialog",class:"_468ff1da37ead40a",onClick:e.withModifiers(i,["prevent"])},"×")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",h,[e.renderSlot(t.$slots,"default")]),t.$slots.footer?(e.openBlock(),e.createElementBlock("div",V,[e.renderSlot(t.$slots,"footer")])):e.createCommentVNode("",!0)],16,r))}}),f={install:n=>{n.component("DialogView",c)}};l.DialogView=c,l.DialogViewPlugin=f,l.default=f,Object.defineProperties(l,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
3
3
  //# sourceMappingURL=dialog-view.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dialog-view.umd.js","sources":["../src/DialogView.obf.vue","../src/index.ts"],"sourcesContent":["<template>\n <dialog\n ref=\"dialogRef\"\n class=\"_b4102a3b79656a37\"\n v-bind=\"$attrs\"\n @close=\"handleDialogClose\"\n @cancel=\"handleDialogCancel\"\n :closedBy=\"closedBy\"\n >\n <div v-if=\"showTitleBar\" class=\"_4d394b1507fdc584\">\n <span class=\"_088d860d2fd75292\">\n <slot name=\"title\"></slot>\n </span>\n <button\n v-if=\"showCloseButton && closable\"\n type=\"button\"\n aria-label=\"Close the dialog\"\n class=\"_468ff1da37ead40a\"\n @click.prevent=\"closeDialog\"\n >&times;</button>\n </div>\n \n <div class=\"_da3b3b2a4aeed1ee\">\n <slot></slot>\n </div>\n\n <div v-if=\"$slots.footer\" class=\"_61879ba330d9a71c\">\n <slot name=\"footer\"></slot>\n </div>\n </dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, computed, nextTick, onMounted, onBeforeUnmount } from 'vue'\n\ninterface Props {\n modelValue: boolean\n showTitleBar?: boolean\n showCloseButton?: boolean\n closable?: boolean\n closeOnClickMask?: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n showTitleBar: true,\n showCloseButton: true,\n closable: true,\n closeOnClickMask: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'closed'): void\n}>()\n\nconst dialogRef = ref<HTMLDialogElement>();\n\nconst openDialog = (): void => {\n emit('update:modelValue', true)\n}\n\nconst closeDialog = (): void => {\n emit('update:modelValue', false)\n}\n\nconst handleDialogCancel = (e: Event) => {\n e.preventDefault();\n if (props.closable) closeDialog();\n}\n\nconst handleDialogClose = (): void => {\n if (!props.closable) {\n if (props.modelValue) {\n // not programmatically close\n // re-open the dialog\n nextTick(() => {\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }) // Avoid using 'cancel' event because some browsers handle it incorrectly, see https://issues.chromium.org/issues/41491338\n return;\n }\n }\n if (props.modelValue) {\n emit('update:modelValue', false)\n }\n nextTick(() => {\n if (props.modelValue) {\n // model value keep unchanged\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }\n })\n emit('closed')\n}\n\nconst closedBy = computed(() => props.closable ? (props.closeOnClickMask ? 'any' : 'closerequest') : 'none') // see https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/closedBy\n\nwatch(() => props.modelValue, async (newValue: boolean) => {\n await nextTick()\n \n if (newValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n } else {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n }\n})\n\nonMounted(() => {\n if (props.modelValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n }\n});\n\nonBeforeUnmount(() => {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n});\n\ndefineExpose({\n get: () => dialogRef.value,\n open: openDialog,\n close: closeDialog,\n});\n</script>\n\n<style>\n._b4102a3b79656a37 {\n padding: var(--dialog-padding, 20px);\n border-radius: 5px;\n border: 1px solid gray;\n outline: 0 !important;\n max-width: calc(100% - 2em);\n max-height: calc(100% - 2em);\n box-sizing: border-box;\n overflow: hidden;\n}\n\n._b4102a3b79656a37[open] {\n display: flex;\n flex-direction: column;\n}\n\n._b4102a3b79656a37::backdrop {\n background: rgba(0, 0, 0, 0.5);\n}\n\n._4d394b1507fdc584 {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 0.5em;\n min-height: var(--dialog-title-height, 24px);\n white-space: pre;\n overflow: hidden;\n user-select: none;\n}\n\n._088d860d2fd75292 {\n flex: 1;\n text-align: center;\n font-weight: bold;\n font-size: large;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n._468ff1da37ead40a {\n margin-left: 0.5em;\n text-decoration: none;\n color: #666;\n font-size: 1.5em;\n line-height: 1;\n width: 24px;\n height: 24px;\n padding: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: none;\n background: none;\n}\n\n._468ff1da37ead40a:hover {\n color: #333;\n background-color: #f0f0f0;\n border-radius: 3px;\n}\n\n._468ff1da37ead40a:focus-visible {\n outline: 2px solid rgb(160, 207, 255);\n outline-offset: -2px;\n}\n\n._da3b3b2a4aeed1ee {\n flex: 1;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n._61879ba330d9a71c {\n margin-top: 0.5em;\n}\n</style>\n","import { App, Plugin } from 'vue'\nimport DialogViewComponent from './DialogView.obf.vue'\n\nexport { default as DialogView } from './DialogView.obf.vue'\n\nexport const DialogViewPlugin: Plugin = {\n install: (app: App) => {\n app.component('DialogView', DialogViewComponent)\n }\n}\n\nexport default DialogViewPlugin\n"],"names":["props","__props","emit","__emit","dialogRef","ref","openDialog","closeDialog","handleDialogCancel","e","handleDialogClose","nextTick","closedBy","computed","watch","newValue","onMounted","onBeforeUnmount","__expose","_openBlock","_createElementBlock","_mergeProps","$attrs","_hoisted_2","_createElementVNode","_hoisted_3","_renderSlot","_ctx","_hoisted_4","$slots","_hoisted_5","DialogViewPlugin","app","DialogViewComponent"],"mappings":"usBA2CA,MAAMA,EAAQC,EAORC,EAAOC,EAKPC,EAAYC,EAAAA,IAAA,EAEZC,EAAa,IAAY,CAC7BJ,EAAK,oBAAqB,EAAI,CAChC,EAEMK,EAAc,IAAY,CAC9BL,EAAK,oBAAqB,EAAK,CACjC,EAEMM,EAAsBC,GAAa,CACvCA,EAAE,eAAA,EACET,EAAM,UAAUO,EAAA,CACtB,EAEMG,EAAoB,IAAY,CACpC,GAAI,CAACV,EAAM,UACLA,EAAM,WAAY,CAGpBW,EAAAA,SAAS,IAAM,CACTP,EAAU,OAAS,CAACA,EAAU,MAAM,MAAMA,EAAU,MAAM,UAAA,CAChE,CAAC,EACD,MACF,CAEEJ,EAAM,YACRE,EAAK,oBAAqB,EAAK,EAEjCS,EAAAA,SAAS,IAAM,CACTX,EAAM,YAEJI,EAAU,OAAS,CAACA,EAAU,MAAM,MAAMA,EAAU,MAAM,UAAA,CAElE,CAAC,EACDF,EAAK,QAAQ,CACf,EAEMU,EAAWC,WAAS,IAAMb,EAAM,SAAYA,EAAM,iBAAmB,MAAQ,eAAkB,MAAM,EAE3Gc,OAAAA,EAAAA,MAAM,IAAMd,EAAM,WAAY,MAAOe,GAAsB,CACzD,MAAMJ,WAAA,EAEFI,EACEX,EAAU,OAAS,CAACA,EAAU,MAAM,MACtCA,EAAU,MAAM,UAAA,EAGdA,EAAU,OAASA,EAAU,MAAM,MACrCA,EAAU,MAAM,MAAA,CAGtB,CAAC,EAEDY,EAAAA,UAAU,IAAM,CACVhB,EAAM,YACJI,EAAU,OAAS,CAACA,EAAU,MAAM,MACtCA,EAAU,MAAM,UAAA,CAGtB,CAAC,EAEDa,EAAAA,gBAAgB,IAAM,CAChBb,EAAU,OAASA,EAAU,MAAM,MACrCA,EAAU,MAAM,MAAA,CAEpB,CAAC,EAEDc,EAAa,CACX,IAAK,IAAMd,EAAU,MACrB,KAAME,EACN,MAAOC,CAAA,CACR,UA9HCY,YAAA,EAAAC,qBA4BS,SA5BTC,EAAAA,WA4BS,SA3BH,YAAJ,IAAIjB,EACJ,MAAM,mBAAA,EACEkB,EAAAA,OAAM,CACb,QAAOZ,EACP,SAAQF,EACR,SAAUI,EAAA,KAAA,IAEAX,EAAA,cAAXkB,EAAAA,UAAA,EAAAC,EAAAA,mBAWM,MAXNG,EAWM,CAVJC,EAAAA,mBAEO,OAFPC,EAEO,CADLC,aAA0BC,EAAA,OAAA,OAAA,CAAA,GAGpB1B,EAAA,iBAAmBA,EAAA,wBAD3BmB,EAAAA,mBAMiB,SAAA,OAJf,KAAK,SACL,aAAW,mBACX,MAAM,oBACL,wBAAeb,EAAW,CAAA,SAAA,CAAA,CAAA,EAC5B,GAAO,8DAGViB,EAAAA,mBAEM,MAFNI,EAEM,CADJF,aAAaC,EAAA,OAAA,SAAA,CAAA,GAGJE,EAAAA,OAAO,QAAlBV,EAAAA,YAAAC,EAAAA,mBAEM,MAFNU,EAEM,CADJJ,aAA2BC,EAAA,OAAA,QAAA,CAAA,2CCtBpBI,EAA2B,CACtC,QAAUC,GAAa,CACrBA,EAAI,UAAU,aAAcC,CAAmB,CACjD,CACF"}
1
+ {"version":3,"file":"dialog-view.umd.js","sources":["../src/DialogView.obf.vue","../src/index.ts"],"sourcesContent":["<template>\n <dialog\n ref=\"dialogRef\"\n class=\"_b4102a3b79656a37\"\n v-bind=\"$attrs\"\n @close=\"handleDialogClose\"\n @cancel=\"handleDialogCancel\"\n :closedBy=\"closedBy\"\n >\n <div v-if=\"showTitleBar\" class=\"_4d394b1507fdc584\">\n <span class=\"_088d860d2fd75292\">\n <slot name=\"title\"></slot>\n </span>\n <button\n v-if=\"showCloseButton && closable\"\n type=\"button\"\n aria-label=\"Close the dialog\"\n class=\"_468ff1da37ead40a\"\n @click.prevent=\"closeDialog\"\n >&times;</button>\n </div>\n \n <div class=\"_da3b3b2a4aeed1ee\">\n <slot></slot>\n </div>\n\n <div v-if=\"$slots.footer\" class=\"_61879ba330d9a71c\">\n <slot name=\"footer\"></slot>\n </div>\n </dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, computed, nextTick, onMounted, onBeforeUnmount, onDeactivated, onActivated } from 'vue'\n\ninterface Props {\n modelValue: boolean\n showTitleBar?: boolean\n showCloseButton?: boolean\n closable?: boolean\n closeOnClickMask?: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n showTitleBar: true,\n showCloseButton: true,\n closable: true,\n closeOnClickMask: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'closed'): void\n}>()\n\nconst dialogRef = ref<HTMLDialogElement>();\n\nconst openDialog = (): void => {\n emit('update:modelValue', true)\n}\n\nconst closeDialog = (): void => {\n emit('update:modelValue', false)\n}\n\nconst handleDialogCancel = (e: Event) => {\n e.preventDefault();\n if (props.closable) closeDialog();\n}\n\nconst ignoreCloseEvent = ref(false);\n\nconst handleDialogClose = (): void => {\n if (ignoreCloseEvent.value) return;\n if (!props.closable) {\n if (props.modelValue) {\n // not programmatically close\n // re-open the dialog\n nextTick(() => {\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }) // Avoid using 'cancel' event because some browsers handle it incorrectly, see https://issues.chromium.org/issues/41491338\n return;\n }\n }\n if (props.modelValue) {\n emit('update:modelValue', false)\n }\n nextTick(() => {\n if (props.modelValue) {\n // model value keep unchanged\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }\n })\n emit('closed')\n}\n\nconst closedBy = computed(() => props.closable ? (props.closeOnClickMask ? 'any' : 'closerequest') : 'none') // see https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/closedBy\n\nwatch(() => props.modelValue, async (newValue: boolean) => {\n await nextTick()\n \n if (newValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n } else {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n }\n})\n\nconst initDialog = () => {\n if (props.modelValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n }\n};\n\nonMounted(() => {\n initDialog();\n});\n\nonBeforeUnmount(() => {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n});\n\nonDeactivated(() => {\n if (dialogRef.value && dialogRef.value.open) {\n ignoreCloseEvent.value = true;\n dialogRef.value.close();\n nextTick(() => ignoreCloseEvent.value = false);\n }\n});\n\nonActivated(() => {\n initDialog();\n});\n\ndefineExpose({\n get: () => dialogRef.value,\n open: openDialog,\n close: closeDialog,\n});\n</script>\n\n<style>\n._b4102a3b79656a37 {\n padding: var(--dialog-padding, 20px);\n border-radius: 5px;\n border: 1px solid gray;\n outline: 0 !important;\n max-width: calc(100% - 2em);\n max-height: calc(100% - 2em);\n box-sizing: border-box;\n overflow: hidden;\n}\n\n._b4102a3b79656a37[open] {\n display: flex;\n flex-direction: column;\n}\n\n._b4102a3b79656a37::backdrop {\n background: rgba(0, 0, 0, 0.5);\n}\n\n._4d394b1507fdc584 {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 0.5em;\n min-height: var(--dialog-title-height, 24px);\n white-space: pre;\n overflow: hidden;\n user-select: none;\n}\n\n._088d860d2fd75292 {\n flex: 1;\n text-align: center;\n font-weight: bold;\n font-size: large;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n._468ff1da37ead40a {\n margin-left: 0.5em;\n text-decoration: none;\n color: #666;\n font-size: 1.5em;\n line-height: 1;\n width: 24px;\n height: 24px;\n padding: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: none;\n background: none;\n}\n\n._468ff1da37ead40a:hover {\n color: #333;\n background-color: #f0f0f0;\n border-radius: 3px;\n}\n\n._468ff1da37ead40a:focus-visible {\n outline: 2px solid rgb(160, 207, 255);\n outline-offset: -2px;\n}\n\n._da3b3b2a4aeed1ee {\n flex: 1;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n._61879ba330d9a71c {\n margin-top: 0.5em;\n}\n</style>\n","import { App, Plugin } from 'vue'\nimport DialogViewComponent from './DialogView.obf.vue'\n\nexport { default as DialogView } from './DialogView.obf.vue'\n\nexport const DialogViewPlugin: Plugin = {\n install: (app: App) => {\n app.component('DialogView', DialogViewComponent)\n }\n}\n\nexport default DialogViewPlugin\n"],"names":["props","__props","emit","__emit","dialogRef","ref","openDialog","closeDialog","handleDialogCancel","e","ignoreCloseEvent","handleDialogClose","nextTick","closedBy","computed","watch","newValue","initDialog","onMounted","onBeforeUnmount","onDeactivated","onActivated","__expose","_openBlock","_createElementBlock","_mergeProps","$attrs","_hoisted_2","_createElementVNode","_hoisted_3","_renderSlot","_ctx","_hoisted_4","$slots","_hoisted_5","DialogViewPlugin","app","DialogViewComponent"],"mappings":"usBA2CA,MAAMA,EAAQC,EAORC,EAAOC,EAKPC,EAAYC,EAAAA,IAAA,EAEZC,EAAa,IAAY,CAC7BJ,EAAK,oBAAqB,EAAI,CAChC,EAEMK,EAAc,IAAY,CAC9BL,EAAK,oBAAqB,EAAK,CACjC,EAEMM,EAAsBC,GAAa,CACvCA,EAAE,eAAA,EACET,EAAM,UAAUO,EAAA,CACtB,EAEMG,EAAmBL,EAAAA,IAAI,EAAK,EAE5BM,EAAoB,IAAY,CACpC,GAAI,CAAAD,EAAiB,MACrB,IAAI,CAACV,EAAM,UACLA,EAAM,WAAY,CAGpBY,EAAAA,SAAS,IAAM,CACTR,EAAU,OAAS,CAACA,EAAU,MAAM,MAAMA,EAAU,MAAM,UAAA,CAChE,CAAC,EACD,MACF,CAEEJ,EAAM,YACRE,EAAK,oBAAqB,EAAK,EAEjCU,EAAAA,SAAS,IAAM,CACTZ,EAAM,YAEJI,EAAU,OAAS,CAACA,EAAU,MAAM,MAAMA,EAAU,MAAM,UAAA,CAElE,CAAC,EACDF,EAAK,QAAQ,EACf,EAEMW,EAAWC,WAAS,IAAMd,EAAM,SAAYA,EAAM,iBAAmB,MAAQ,eAAkB,MAAM,EAE3Ge,EAAAA,MAAM,IAAMf,EAAM,WAAY,MAAOgB,GAAsB,CACzD,MAAMJ,WAAA,EAEFI,EACEZ,EAAU,OAAS,CAACA,EAAU,MAAM,MACtCA,EAAU,MAAM,UAAA,EAGdA,EAAU,OAASA,EAAU,MAAM,MACrCA,EAAU,MAAM,MAAA,CAGtB,CAAC,EAED,MAAMa,EAAa,IAAM,CACnBjB,EAAM,YACJI,EAAU,OAAS,CAACA,EAAU,MAAM,MACtCA,EAAU,MAAM,UAAA,CAGtB,EAEAc,OAAAA,EAAAA,UAAU,IAAM,CACdD,EAAA,CACF,CAAC,EAEDE,EAAAA,gBAAgB,IAAM,CAChBf,EAAU,OAASA,EAAU,MAAM,MACrCA,EAAU,MAAM,MAAA,CAEpB,CAAC,EAEDgB,EAAAA,cAAc,IAAM,CACdhB,EAAU,OAASA,EAAU,MAAM,OACrCM,EAAiB,MAAQ,GACzBN,EAAU,MAAM,MAAA,EAChBQ,EAAAA,SAAS,IAAMF,EAAiB,MAAQ,EAAK,EAEjD,CAAC,EAEDW,EAAAA,YAAY,IAAM,CAChBJ,EAAA,CACF,CAAC,EAEDK,EAAa,CACX,IAAK,IAAMlB,EAAU,MACrB,KAAME,EACN,MAAOC,CAAA,CACR,UAjJCgB,YAAA,EAAAC,qBA4BS,SA5BTC,EAAAA,WA4BS,SA3BH,YAAJ,IAAIrB,EACJ,MAAM,mBAAA,EACEsB,EAAAA,OAAM,CACb,QAAOf,EACP,SAAQH,EACR,SAAUK,EAAA,KAAA,IAEAZ,EAAA,cAAXsB,EAAAA,UAAA,EAAAC,EAAAA,mBAWM,MAXNG,EAWM,CAVJC,EAAAA,mBAEO,OAFPC,EAEO,CADLC,aAA0BC,EAAA,OAAA,OAAA,CAAA,GAGpB9B,EAAA,iBAAmBA,EAAA,wBAD3BuB,EAAAA,mBAMiB,SAAA,OAJf,KAAK,SACL,aAAW,mBACX,MAAM,oBACL,wBAAejB,EAAW,CAAA,SAAA,CAAA,CAAA,EAC5B,GAAO,8DAGVqB,EAAAA,mBAEM,MAFNI,EAEM,CADJF,aAAaC,EAAA,OAAA,SAAA,CAAA,GAGJE,EAAAA,OAAO,QAAlBV,EAAAA,YAAAC,EAAAA,mBAEM,MAFNU,EAEM,CADJJ,aAA2BC,EAAA,OAAA,QAAA,CAAA,2CCtBpBI,EAA2B,CACtC,QAAUC,GAAa,CACrBA,EAAI,UAAU,aAAcC,CAAmB,CACjD,CACF"}
@@ -1,12 +1,12 @@
1
- (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".dialog-view[data-v-da4085e6]{padding:var(--dialog-padding, 20px);border-radius:5px;border:1px solid gray;outline:0!important;max-width:calc(100% - 2em);max-height:calc(100% - 2em);box-sizing:border-box;overflow:hidden}.dialog-view[open][data-v-da4085e6]{display:flex;flex-direction:column}.dialog-view[data-v-da4085e6]::backdrop{background:#00000080}.dialog-title-bar[data-v-da4085e6]{display:flex;flex-direction:row;align-items:center;margin-bottom:.5em;min-height:var(--dialog-title-height, 24px);white-space:pre;overflow:hidden;-webkit-user-select:none;user-select:none}.dialog-title[data-v-da4085e6]{flex:1;text-align:center;font-weight:700;font-size:large;overflow:hidden;text-overflow:ellipsis}.dialog-close-button[data-v-da4085e6]{margin-left:.5em;text-decoration:none;color:#666;font-size:1.5em;line-height:1;width:24px;height:24px;padding:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;background:none}.dialog-close-button[data-v-da4085e6]:hover{color:#333;background-color:#f0f0f0;border-radius:3px}.dialog-close-button[data-v-da4085e6]:focus-visible{outline:2px solid rgb(160,207,255);outline-offset:-2px}.dialog-content[data-v-da4085e6]{flex:1;overflow:auto;display:flex;flex-direction:column}.dialog-footer[data-v-da4085e6]{margin-top:.5em}")),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
2
- import { defineComponent as w, ref as V, computed as y, watch as B, nextTick as c, onMounted as k, onBeforeUnmount as C, openBlock as n, createElementBlock as i, mergeProps as _, createElementVNode as p, renderSlot as r, withModifiers as b, createCommentVNode as f } from "vue";
3
- const D = ["closedBy"], M = {
1
+ (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".dialog-view[data-v-7641dcfa]{padding:var(--dialog-padding, 20px);border-radius:5px;border:1px solid gray;outline:0!important;max-width:calc(100% - 2em);max-height:calc(100% - 2em);box-sizing:border-box;overflow:hidden}.dialog-view[open][data-v-7641dcfa]{display:flex;flex-direction:column}.dialog-view[data-v-7641dcfa]::backdrop{background:#00000080}.dialog-title-bar[data-v-7641dcfa]{display:flex;flex-direction:row;align-items:center;margin-bottom:.5em;min-height:var(--dialog-title-height, 24px);white-space:pre;overflow:hidden;-webkit-user-select:none;user-select:none}.dialog-title[data-v-7641dcfa]{flex:1;text-align:center;font-weight:700;font-size:large;overflow:hidden;text-overflow:ellipsis}.dialog-close-button[data-v-7641dcfa]{margin-left:.5em;text-decoration:none;color:#666;font-size:1.5em;line-height:1;width:24px;height:24px;padding:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;background:none}.dialog-close-button[data-v-7641dcfa]:hover{color:#333;background-color:#f0f0f0;border-radius:3px}.dialog-close-button[data-v-7641dcfa]:focus-visible{outline:2px solid rgb(160,207,255);outline-offset:-2px}.dialog-content[data-v-7641dcfa]{flex:1;overflow:auto;display:flex;flex-direction:column}.dialog-footer[data-v-7641dcfa]{margin-top:.5em}")),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
2
+ import { defineComponent as B, ref as m, computed as C, watch as k, nextTick as n, onMounted as D, onBeforeUnmount as _, onDeactivated as b, onActivated as M, openBlock as i, createElementBlock as u, mergeProps as $, createElementVNode as g, renderSlot as f, withModifiers as E, createCommentVNode as v } from "vue";
3
+ const O = ["closedBy"], T = {
4
4
  key: 0,
5
5
  class: "dialog-title-bar"
6
- }, $ = { class: "dialog-title" }, O = { class: "dialog-content" }, T = {
6
+ }, N = { class: "dialog-title" }, P = { class: "dialog-content" }, R = {
7
7
  key: 1,
8
8
  class: "dialog-footer"
9
- }, E = /* @__PURE__ */ w({
9
+ }, q = /* @__PURE__ */ B({
10
10
  __name: "DialogView",
11
11
  props: {
12
12
  modelValue: { type: Boolean },
@@ -16,76 +16,86 @@ const D = ["closedBy"], M = {
16
16
  closeOnClickMask: { type: Boolean, default: !1 }
17
17
  },
18
18
  emits: ["update:modelValue", "closed"],
19
- setup(l, { expose: u, emit: s }) {
20
- const o = l, t = s, e = V(), v = () => {
19
+ setup(l, { expose: c, emit: s }) {
20
+ const o = l, t = s, e = m(), h = () => {
21
21
  t("update:modelValue", !0);
22
22
  }, d = () => {
23
23
  t("update:modelValue", !1);
24
- }, m = (a) => {
24
+ }, w = (a) => {
25
25
  a.preventDefault(), o.closable && d();
26
- }, g = () => {
27
- if (!o.closable && o.modelValue) {
28
- c(() => {
29
- e.value && !e.value.open && e.value.showModal();
30
- });
31
- return;
26
+ }, r = m(!1), V = () => {
27
+ if (!r.value) {
28
+ if (!o.closable && o.modelValue) {
29
+ n(() => {
30
+ e.value && !e.value.open && e.value.showModal();
31
+ });
32
+ return;
33
+ }
34
+ o.modelValue && t("update:modelValue", !1), n(() => {
35
+ o.modelValue && e.value && !e.value.open && e.value.showModal();
36
+ }), t("closed");
32
37
  }
33
- o.modelValue && t("update:modelValue", !1), c(() => {
34
- o.modelValue && e.value && !e.value.open && e.value.showModal();
35
- }), t("closed");
36
- }, h = y(() => o.closable ? o.closeOnClickMask ? "any" : "closerequest" : "none");
37
- return B(() => o.modelValue, async (a) => {
38
- await c(), a ? e.value && !e.value.open && e.value.showModal() : e.value && e.value.open && e.value.close();
39
- }), k(() => {
38
+ }, y = C(() => o.closable ? o.closeOnClickMask ? "any" : "closerequest" : "none");
39
+ k(() => o.modelValue, async (a) => {
40
+ await n(), a ? e.value && !e.value.open && e.value.showModal() : e.value && e.value.open && e.value.close();
41
+ });
42
+ const p = () => {
40
43
  o.modelValue && e.value && !e.value.open && e.value.showModal();
41
- }), C(() => {
44
+ };
45
+ return D(() => {
46
+ p();
47
+ }), _(() => {
42
48
  e.value && e.value.open && e.value.close();
43
- }), u({
49
+ }), b(() => {
50
+ e.value && e.value.open && (r.value = !0, e.value.close(), n(() => r.value = !1));
51
+ }), M(() => {
52
+ p();
53
+ }), c({
44
54
  get: () => e.value,
45
- open: v,
55
+ open: h,
46
56
  close: d
47
- }), (a, R) => (n(), i("dialog", _({
57
+ }), (a, S) => (i(), u("dialog", $({
48
58
  ref_key: "dialogRef",
49
59
  ref: e,
50
60
  class: "dialog-view"
51
61
  }, a.$attrs, {
52
- onClose: g,
53
- onCancel: m,
54
- closedBy: h.value
62
+ onClose: V,
63
+ onCancel: w,
64
+ closedBy: y.value
55
65
  }), [
56
- l.showTitleBar ? (n(), i("div", M, [
57
- p("span", $, [
58
- r(a.$slots, "title", {}, void 0, !0)
66
+ l.showTitleBar ? (i(), u("div", T, [
67
+ g("span", N, [
68
+ f(a.$slots, "title", {}, void 0, !0)
59
69
  ]),
60
- l.showCloseButton && l.closable ? (n(), i("button", {
70
+ l.showCloseButton && l.closable ? (i(), u("button", {
61
71
  key: 0,
62
72
  type: "button",
63
73
  "aria-label": "Close the dialog",
64
74
  class: "dialog-close-button",
65
- onClick: b(d, ["prevent"])
66
- }, "×")) : f("", !0)
67
- ])) : f("", !0),
68
- p("div", O, [
69
- r(a.$slots, "default", {}, void 0, !0)
75
+ onClick: E(d, ["prevent"])
76
+ }, "×")) : v("", !0)
77
+ ])) : v("", !0),
78
+ g("div", P, [
79
+ f(a.$slots, "default", {}, void 0, !0)
70
80
  ]),
71
- a.$slots.footer ? (n(), i("div", T, [
72
- r(a.$slots, "footer", {}, void 0, !0)
73
- ])) : f("", !0)
74
- ], 16, D));
81
+ a.$slots.footer ? (i(), u("div", R, [
82
+ f(a.$slots, "footer", {}, void 0, !0)
83
+ ])) : v("", !0)
84
+ ], 16, O));
75
85
  }
76
- }), N = (l, u) => {
86
+ }), A = (l, c) => {
77
87
  const s = l.__vccOpts || l;
78
- for (const [o, t] of u)
88
+ for (const [o, t] of c)
79
89
  s[o] = t;
80
90
  return s;
81
- }, P = /* @__PURE__ */ N(E, [["__scopeId", "data-v-da4085e6"]]), I = {
91
+ }, I = /* @__PURE__ */ A(q, [["__scopeId", "data-v-7641dcfa"]]), j = {
82
92
  install: (l) => {
83
- l.component("DialogView", P);
93
+ l.component("DialogView", I);
84
94
  }
85
95
  };
86
96
  export {
87
- P as DialogView,
88
- I as DialogViewPlugin,
89
- I as default
97
+ I as DialogView,
98
+ j as DialogViewPlugin,
99
+ j as default
90
100
  };
91
101
  //# sourceMappingURL=unobfuscated.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"unobfuscated.es.js","sources":["../src/DialogView.vue","../src/unobfuscated.ts"],"sourcesContent":["<template>\n <dialog\n ref=\"dialogRef\"\n class=\"dialog-view\"\n v-bind=\"$attrs\"\n @close=\"handleDialogClose\"\n @cancel=\"handleDialogCancel\"\n :closedBy=\"closedBy\"\n >\n <div v-if=\"showTitleBar\" class=\"dialog-title-bar\">\n <span class=\"dialog-title\">\n <slot name=\"title\"></slot>\n </span>\n <button\n v-if=\"showCloseButton && closable\"\n type=\"button\"\n aria-label=\"Close the dialog\"\n class=\"dialog-close-button\"\n @click.prevent=\"closeDialog\"\n >&times;</button>\n </div>\n \n <div class=\"dialog-content\">\n <slot></slot>\n </div>\n\n <div v-if=\"$slots.footer\" class=\"dialog-footer\">\n <slot name=\"footer\"></slot>\n </div>\n </dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, computed, nextTick, onMounted, onBeforeUnmount } from 'vue'\n\ninterface Props {\n modelValue: boolean\n showTitleBar?: boolean\n showCloseButton?: boolean\n closable?: boolean\n closeOnClickMask?: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n showTitleBar: true,\n showCloseButton: true,\n closable: true,\n closeOnClickMask: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'closed'): void\n}>()\n\nconst dialogRef = ref<HTMLDialogElement>();\n\nconst openDialog = (): void => {\n emit('update:modelValue', true)\n}\n\nconst closeDialog = (): void => {\n emit('update:modelValue', false)\n}\n\nconst handleDialogCancel = (e: Event) => {\n e.preventDefault();\n if (props.closable) closeDialog();\n}\n\nconst handleDialogClose = (): void => {\n if (!props.closable) {\n if (props.modelValue) {\n // not programmatically close\n // re-open the dialog\n nextTick(() => {\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }) // Avoid using 'cancel' event because some browsers handle it incorrectly, see https://issues.chromium.org/issues/41491338\n return;\n }\n }\n if (props.modelValue) {\n emit('update:modelValue', false)\n }\n nextTick(() => {\n if (props.modelValue) {\n // model value keep unchanged\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }\n })\n emit('closed')\n}\n\nconst closedBy = computed(() => props.closable ? (props.closeOnClickMask ? 'any' : 'closerequest') : 'none') // see https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/closedBy\n\nwatch(() => props.modelValue, async (newValue: boolean) => {\n await nextTick()\n \n if (newValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n } else {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n }\n})\n\nonMounted(() => {\n if (props.modelValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n }\n});\n\nonBeforeUnmount(() => {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n});\n\ndefineExpose({\n get: () => dialogRef.value,\n open: openDialog,\n close: closeDialog,\n});\n</script>\n\n<style scoped>\n.dialog-view {\n padding: var(--dialog-padding, 20px);\n border-radius: 5px;\n border: 1px solid gray;\n outline: 0 !important;\n max-width: calc(100% - 2em);\n max-height: calc(100% - 2em);\n box-sizing: border-box;\n overflow: hidden;\n}\n\n.dialog-view[open] {\n display: flex;\n flex-direction: column;\n}\n\n.dialog-view::backdrop {\n background: rgba(0, 0, 0, 0.5);\n}\n\n.dialog-title-bar {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 0.5em;\n min-height: var(--dialog-title-height, 24px);\n white-space: pre;\n overflow: hidden;\n user-select: none;\n}\n\n.dialog-title {\n flex: 1;\n text-align: center;\n font-weight: bold;\n font-size: large;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.dialog-close-button {\n margin-left: 0.5em;\n text-decoration: none;\n color: #666;\n font-size: 1.5em;\n line-height: 1;\n width: 24px;\n height: 24px;\n padding: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: none;\n background: none;\n}\n\n.dialog-close-button:hover {\n color: #333;\n background-color: #f0f0f0;\n border-radius: 3px;\n}\n\n.dialog-close-button:focus-visible {\n outline: 2px solid rgb(160, 207, 255);\n outline-offset: -2px;\n}\n\n.dialog-content {\n flex: 1;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.dialog-footer {\n margin-top: 0.5em;\n}\n</style>\n","import { App, Plugin } from 'vue'\nimport DialogViewComponent from './DialogView.vue'\n\nexport { default as DialogView } from './DialogView.vue'\n\nexport const DialogViewPlugin: Plugin = {\n install: (app: App) => {\n app.component('DialogView', DialogViewComponent)\n }\n}\n\nexport default DialogViewPlugin\n"],"names":["props","__props","emit","__emit","dialogRef","ref","openDialog","closeDialog","handleDialogCancel","e","handleDialogClose","nextTick","closedBy","computed","watch","newValue","onMounted","onBeforeUnmount","__expose","_openBlock","_createElementBlock","_mergeProps","$attrs","_hoisted_2","_createElementVNode","_hoisted_3","_renderSlot","_ctx","_hoisted_4","$slots","_hoisted_5","DialogViewPlugin","app","DialogViewComponent"],"mappings":";;;;;;;;;;;;;;;;;;AA2CA,UAAMA,IAAQC,GAORC,IAAOC,GAKPC,IAAYC,EAAA,GAEZC,IAAa,MAAY;AAC7B,MAAAJ,EAAK,qBAAqB,EAAI;AAAA,IAChC,GAEMK,IAAc,MAAY;AAC9B,MAAAL,EAAK,qBAAqB,EAAK;AAAA,IACjC,GAEMM,IAAqB,CAACC,MAAa;AACvC,MAAAA,EAAE,eAAA,GACET,EAAM,YAAUO,EAAA;AAAA,IACtB,GAEMG,IAAoB,MAAY;AACpC,UAAI,CAACV,EAAM,YACLA,EAAM,YAAY;AAGpB,QAAAW,EAAS,MAAM;AACb,UAAIP,EAAU,SAAS,CAACA,EAAU,MAAM,QAAMA,EAAU,MAAM,UAAA;AAAA,QAChE,CAAC;AACD;AAAA,MACF;AAEF,MAAIJ,EAAM,cACRE,EAAK,qBAAqB,EAAK,GAEjCS,EAAS,MAAM;AACb,QAAIX,EAAM,cAEJI,EAAU,SAAS,CAACA,EAAU,MAAM,QAAMA,EAAU,MAAM,UAAA;AAAA,MAElE,CAAC,GACDF,EAAK,QAAQ;AAAA,IACf,GAEMU,IAAWC,EAAS,MAAMb,EAAM,WAAYA,EAAM,mBAAmB,QAAQ,iBAAkB,MAAM;AAE3G,WAAAc,EAAM,MAAMd,EAAM,YAAY,OAAOe,MAAsB;AACzD,YAAMJ,EAAA,GAEFI,IACEX,EAAU,SAAS,CAACA,EAAU,MAAM,QACtCA,EAAU,MAAM,UAAA,IAGdA,EAAU,SAASA,EAAU,MAAM,QACrCA,EAAU,MAAM,MAAA;AAAA,IAGtB,CAAC,GAEDY,EAAU,MAAM;AACd,MAAIhB,EAAM,cACJI,EAAU,SAAS,CAACA,EAAU,MAAM,QACtCA,EAAU,MAAM,UAAA;AAAA,IAGtB,CAAC,GAEDa,EAAgB,MAAM;AACpB,MAAIb,EAAU,SAASA,EAAU,MAAM,QACrCA,EAAU,MAAM,MAAA;AAAA,IAEpB,CAAC,GAEDc,EAAa;AAAA,MACX,KAAK,MAAMd,EAAU;AAAA,MACrB,MAAME;AAAA,MACN,OAAOC;AAAA,IAAA,CACR,cA9HCY,EAAA,GAAAC,EA4BS,UA5BTC,EA4BS;AAAA,eA3BH;AAAA,MAAJ,KAAIjB;AAAA,MACJ,OAAM;AAAA,IAAA,GACEkB,EAAAA,QAAM;AAAA,MACb,SAAOZ;AAAA,MACP,UAAQF;AAAA,MACR,UAAUI,EAAA;AAAA,IAAA;MAEAX,EAAA,gBAAXkB,EAAA,GAAAC,EAWM,OAXNG,GAWM;AAAA,QAVJC,EAEO,QAFPC,GAEO;AAAA,UADLC,EAA0BC,EAAA,QAAA,SAAA,CAAA,GAAA,QAAA,EAAA;AAAA,QAAA;QAGpB1B,EAAA,mBAAmBA,EAAA,iBAD3BmB,EAMiB,UAAA;AAAA;UAJf,MAAK;AAAA,UACL,cAAW;AAAA,UACX,OAAM;AAAA,UACL,WAAeb,GAAW,CAAA,SAAA,CAAA;AAAA,QAAA,GAC5B,GAAO;;MAGViB,EAEM,OAFNI,GAEM;AAAA,QADJF,EAAaC,EAAA,QAAA,WAAA,CAAA,GAAA,QAAA,EAAA;AAAA,MAAA;MAGJE,EAAAA,OAAO,UAAlBV,KAAAC,EAEM,OAFNU,GAEM;AAAA,QADJJ,EAA2BC,EAAA,QAAA,UAAA,CAAA,GAAA,QAAA,EAAA;AAAA,MAAA;;;;;;;;iECtBpBI,IAA2B;AAAA,EACtC,SAAS,CAACC,MAAa;AACrB,IAAAA,EAAI,UAAU,cAAcC,CAAmB;AAAA,EACjD;AACF;"}
1
+ {"version":3,"file":"unobfuscated.es.js","sources":["../src/DialogView.vue","../src/unobfuscated.ts"],"sourcesContent":["<template>\n <dialog\n ref=\"dialogRef\"\n class=\"dialog-view\"\n v-bind=\"$attrs\"\n @close=\"handleDialogClose\"\n @cancel=\"handleDialogCancel\"\n :closedBy=\"closedBy\"\n >\n <div v-if=\"showTitleBar\" class=\"dialog-title-bar\">\n <span class=\"dialog-title\">\n <slot name=\"title\"></slot>\n </span>\n <button\n v-if=\"showCloseButton && closable\"\n type=\"button\"\n aria-label=\"Close the dialog\"\n class=\"dialog-close-button\"\n @click.prevent=\"closeDialog\"\n >&times;</button>\n </div>\n \n <div class=\"dialog-content\">\n <slot></slot>\n </div>\n\n <div v-if=\"$slots.footer\" class=\"dialog-footer\">\n <slot name=\"footer\"></slot>\n </div>\n </dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, computed, nextTick, onMounted, onBeforeUnmount, onDeactivated, onActivated } from 'vue'\n\ninterface Props {\n modelValue: boolean\n showTitleBar?: boolean\n showCloseButton?: boolean\n closable?: boolean\n closeOnClickMask?: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n showTitleBar: true,\n showCloseButton: true,\n closable: true,\n closeOnClickMask: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'closed'): void\n}>()\n\nconst dialogRef = ref<HTMLDialogElement>();\n\nconst openDialog = (): void => {\n emit('update:modelValue', true)\n}\n\nconst closeDialog = (): void => {\n emit('update:modelValue', false)\n}\n\nconst handleDialogCancel = (e: Event) => {\n e.preventDefault();\n if (props.closable) closeDialog();\n}\n\nconst ignoreCloseEvent = ref(false);\n\nconst handleDialogClose = (): void => {\n if (ignoreCloseEvent.value) return;\n if (!props.closable) {\n if (props.modelValue) {\n // not programmatically close\n // re-open the dialog\n nextTick(() => {\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }) // Avoid using 'cancel' event because some browsers handle it incorrectly, see https://issues.chromium.org/issues/41491338\n return;\n }\n }\n if (props.modelValue) {\n emit('update:modelValue', false)\n }\n nextTick(() => {\n if (props.modelValue) {\n // model value keep unchanged\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }\n })\n emit('closed')\n}\n\nconst closedBy = computed(() => props.closable ? (props.closeOnClickMask ? 'any' : 'closerequest') : 'none') // see https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/closedBy\n\nwatch(() => props.modelValue, async (newValue: boolean) => {\n await nextTick()\n \n if (newValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n } else {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n }\n})\n\nconst initDialog = () => {\n if (props.modelValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n }\n};\n\nonMounted(() => {\n initDialog();\n});\n\nonBeforeUnmount(() => {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n});\n\nonDeactivated(() => {\n if (dialogRef.value && dialogRef.value.open) {\n ignoreCloseEvent.value = true;\n dialogRef.value.close();\n nextTick(() => ignoreCloseEvent.value = false);\n }\n});\n\nonActivated(() => {\n initDialog();\n});\n\ndefineExpose({\n get: () => dialogRef.value,\n open: openDialog,\n close: closeDialog,\n});\n</script>\n\n<style scoped>\n.dialog-view {\n padding: var(--dialog-padding, 20px);\n border-radius: 5px;\n border: 1px solid gray;\n outline: 0 !important;\n max-width: calc(100% - 2em);\n max-height: calc(100% - 2em);\n box-sizing: border-box;\n overflow: hidden;\n}\n\n.dialog-view[open] {\n display: flex;\n flex-direction: column;\n}\n\n.dialog-view::backdrop {\n background: rgba(0, 0, 0, 0.5);\n}\n\n.dialog-title-bar {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 0.5em;\n min-height: var(--dialog-title-height, 24px);\n white-space: pre;\n overflow: hidden;\n user-select: none;\n}\n\n.dialog-title {\n flex: 1;\n text-align: center;\n font-weight: bold;\n font-size: large;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.dialog-close-button {\n margin-left: 0.5em;\n text-decoration: none;\n color: #666;\n font-size: 1.5em;\n line-height: 1;\n width: 24px;\n height: 24px;\n padding: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: none;\n background: none;\n}\n\n.dialog-close-button:hover {\n color: #333;\n background-color: #f0f0f0;\n border-radius: 3px;\n}\n\n.dialog-close-button:focus-visible {\n outline: 2px solid rgb(160, 207, 255);\n outline-offset: -2px;\n}\n\n.dialog-content {\n flex: 1;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.dialog-footer {\n margin-top: 0.5em;\n}\n</style>\n","import { App, Plugin } from 'vue'\nimport DialogViewComponent from './DialogView.vue'\n\nexport { default as DialogView } from './DialogView.vue'\n\nexport const DialogViewPlugin: Plugin = {\n install: (app: App) => {\n app.component('DialogView', DialogViewComponent)\n }\n}\n\nexport default DialogViewPlugin\n"],"names":["props","__props","emit","__emit","dialogRef","ref","openDialog","closeDialog","handleDialogCancel","e","ignoreCloseEvent","handleDialogClose","nextTick","closedBy","computed","watch","newValue","initDialog","onMounted","onBeforeUnmount","onDeactivated","onActivated","__expose","_openBlock","_createElementBlock","_mergeProps","$attrs","_hoisted_2","_createElementVNode","_hoisted_3","_renderSlot","_ctx","_hoisted_4","$slots","_hoisted_5","DialogViewPlugin","app","DialogViewComponent"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".dialog-view[data-v-da4085e6]{padding:var(--dialog-padding, 20px);border-radius:5px;border:1px solid gray;outline:0!important;max-width:calc(100% - 2em);max-height:calc(100% - 2em);box-sizing:border-box;overflow:hidden}.dialog-view[open][data-v-da4085e6]{display:flex;flex-direction:column}.dialog-view[data-v-da4085e6]::backdrop{background:#00000080}.dialog-title-bar[data-v-da4085e6]{display:flex;flex-direction:row;align-items:center;margin-bottom:.5em;min-height:var(--dialog-title-height, 24px);white-space:pre;overflow:hidden;-webkit-user-select:none;user-select:none}.dialog-title[data-v-da4085e6]{flex:1;text-align:center;font-weight:700;font-size:large;overflow:hidden;text-overflow:ellipsis}.dialog-close-button[data-v-da4085e6]{margin-left:.5em;text-decoration:none;color:#666;font-size:1.5em;line-height:1;width:24px;height:24px;padding:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;background:none}.dialog-close-button[data-v-da4085e6]:hover{color:#333;background-color:#f0f0f0;border-radius:3px}.dialog-close-button[data-v-da4085e6]:focus-visible{outline:2px solid rgb(160,207,255);outline-offset:-2px}.dialog-content[data-v-da4085e6]{flex:1;overflow:auto;display:flex;flex-direction:column}.dialog-footer[data-v-da4085e6]{margin-top:.5em}")),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
2
- (function(t,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(t=typeof globalThis<"u"?globalThis:t||self,e(t.DialogView={},t.Vue))})(this,(function(t,e){"use strict";const f=["closedBy"],p={key:0,class:"dialog-title-bar"},m={class:"dialog-title"},g={class:"dialog-content"},V={key:1,class:"dialog-footer"},r=((a,c)=>{const i=a.__vccOpts||a;for(const[l,s]of c)i[l]=s;return i})(e.defineComponent({__name:"DialogView",props:{modelValue:{type:Boolean},showTitleBar:{type:Boolean,default:!0},showCloseButton:{type:Boolean,default:!0},closable:{type:Boolean,default:!0},closeOnClickMask:{type:Boolean,default:!1}},emits:["update:modelValue","closed"],setup(a,{expose:c,emit:i}){const l=a,s=i,o=e.ref(),h=()=>{s("update:modelValue",!0)},d=()=>{s("update:modelValue",!1)},k=n=>{n.preventDefault(),l.closable&&d()},B=()=>{if(!l.closable&&l.modelValue){e.nextTick(()=>{o.value&&!o.value.open&&o.value.showModal()});return}l.modelValue&&s("update:modelValue",!1),e.nextTick(()=>{l.modelValue&&o.value&&!o.value.open&&o.value.showModal()}),s("closed")},w=e.computed(()=>l.closable?l.closeOnClickMask?"any":"closerequest":"none");return e.watch(()=>l.modelValue,async n=>{await e.nextTick(),n?o.value&&!o.value.open&&o.value.showModal():o.value&&o.value.open&&o.value.close()}),e.onMounted(()=>{l.modelValue&&o.value&&!o.value.open&&o.value.showModal()}),e.onBeforeUnmount(()=>{o.value&&o.value.open&&o.value.close()}),c({get:()=>o.value,open:h,close:d}),(n,C)=>(e.openBlock(),e.createElementBlock("dialog",e.mergeProps({ref_key:"dialogRef",ref:o,class:"dialog-view"},n.$attrs,{onClose:B,onCancel:k,closedBy:w.value}),[a.showTitleBar?(e.openBlock(),e.createElementBlock("div",p,[e.createElementVNode("span",m,[e.renderSlot(n.$slots,"title",{},void 0,!0)]),a.showCloseButton&&a.closable?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","aria-label":"Close the dialog",class:"dialog-close-button",onClick:e.withModifiers(d,["prevent"])},"×")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",g,[e.renderSlot(n.$slots,"default",{},void 0,!0)]),n.$slots.footer?(e.openBlock(),e.createElementBlock("div",V,[e.renderSlot(n.$slots,"footer",{},void 0,!0)])):e.createCommentVNode("",!0)],16,f))}}),[["__scopeId","data-v-da4085e6"]]),u={install:a=>{a.component("DialogView",r)}};t.DialogView=r,t.DialogViewPlugin=u,t.default=u,Object.defineProperties(t,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
1
+ (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".dialog-view[data-v-7641dcfa]{padding:var(--dialog-padding, 20px);border-radius:5px;border:1px solid gray;outline:0!important;max-width:calc(100% - 2em);max-height:calc(100% - 2em);box-sizing:border-box;overflow:hidden}.dialog-view[open][data-v-7641dcfa]{display:flex;flex-direction:column}.dialog-view[data-v-7641dcfa]::backdrop{background:#00000080}.dialog-title-bar[data-v-7641dcfa]{display:flex;flex-direction:row;align-items:center;margin-bottom:.5em;min-height:var(--dialog-title-height, 24px);white-space:pre;overflow:hidden;-webkit-user-select:none;user-select:none}.dialog-title[data-v-7641dcfa]{flex:1;text-align:center;font-weight:700;font-size:large;overflow:hidden;text-overflow:ellipsis}.dialog-close-button[data-v-7641dcfa]{margin-left:.5em;text-decoration:none;color:#666;font-size:1.5em;line-height:1;width:24px;height:24px;padding:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;background:none}.dialog-close-button[data-v-7641dcfa]:hover{color:#333;background-color:#f0f0f0;border-radius:3px}.dialog-close-button[data-v-7641dcfa]:focus-visible{outline:2px solid rgb(160,207,255);outline-offset:-2px}.dialog-content[data-v-7641dcfa]{flex:1;overflow:auto;display:flex;flex-direction:column}.dialog-footer[data-v-7641dcfa]{margin-top:.5em}")),document.head.appendChild(e)}}catch(o){console.error("vite-plugin-css-injected-by-js",o)}})();
2
+ (function(t,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(t=typeof globalThis<"u"?globalThis:t||self,e(t.DialogView={},t.Vue))})(this,(function(t,e){"use strict";const m=["closedBy"],g={key:0,class:"dialog-title-bar"},V={class:"dialog-title"},h={class:"dialog-content"},k={key:1,class:"dialog-footer"},u=((a,c)=>{const i=a.__vccOpts||a;for(const[l,s]of c)i[l]=s;return i})(e.defineComponent({__name:"DialogView",props:{modelValue:{type:Boolean},showTitleBar:{type:Boolean,default:!0},showCloseButton:{type:Boolean,default:!0},closable:{type:Boolean,default:!0},closeOnClickMask:{type:Boolean,default:!1}},emits:["update:modelValue","closed"],setup(a,{expose:c,emit:i}){const l=a,s=i,o=e.ref(),B=()=>{s("update:modelValue",!0)},d=()=>{s("update:modelValue",!1)},w=n=>{n.preventDefault(),l.closable&&d()},r=e.ref(!1),y=()=>{if(!r.value){if(!l.closable&&l.modelValue){e.nextTick(()=>{o.value&&!o.value.open&&o.value.showModal()});return}l.modelValue&&s("update:modelValue",!1),e.nextTick(()=>{l.modelValue&&o.value&&!o.value.open&&o.value.showModal()}),s("closed")}},_=e.computed(()=>l.closable?l.closeOnClickMask?"any":"closerequest":"none");e.watch(()=>l.modelValue,async n=>{await e.nextTick(),n?o.value&&!o.value.open&&o.value.showModal():o.value&&o.value.open&&o.value.close()});const p=()=>{l.modelValue&&o.value&&!o.value.open&&o.value.showModal()};return e.onMounted(()=>{p()}),e.onBeforeUnmount(()=>{o.value&&o.value.open&&o.value.close()}),e.onDeactivated(()=>{o.value&&o.value.open&&(r.value=!0,o.value.close(),e.nextTick(()=>r.value=!1))}),e.onActivated(()=>{p()}),c({get:()=>o.value,open:B,close:d}),(n,D)=>(e.openBlock(),e.createElementBlock("dialog",e.mergeProps({ref_key:"dialogRef",ref:o,class:"dialog-view"},n.$attrs,{onClose:y,onCancel:w,closedBy:_.value}),[a.showTitleBar?(e.openBlock(),e.createElementBlock("div",g,[e.createElementVNode("span",V,[e.renderSlot(n.$slots,"title",{},void 0,!0)]),a.showCloseButton&&a.closable?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","aria-label":"Close the dialog",class:"dialog-close-button",onClick:e.withModifiers(d,["prevent"])},"×")):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",h,[e.renderSlot(n.$slots,"default",{},void 0,!0)]),n.$slots.footer?(e.openBlock(),e.createElementBlock("div",k,[e.renderSlot(n.$slots,"footer",{},void 0,!0)])):e.createCommentVNode("",!0)],16,m))}}),[["__scopeId","data-v-7641dcfa"]]),f={install:a=>{a.component("DialogView",u)}};t.DialogView=u,t.DialogViewPlugin=f,t.default=f,Object.defineProperties(t,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
3
3
  //# sourceMappingURL=unobfuscated.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"unobfuscated.umd.js","sources":["../src/DialogView.vue","../src/unobfuscated.ts"],"sourcesContent":["<template>\n <dialog\n ref=\"dialogRef\"\n class=\"dialog-view\"\n v-bind=\"$attrs\"\n @close=\"handleDialogClose\"\n @cancel=\"handleDialogCancel\"\n :closedBy=\"closedBy\"\n >\n <div v-if=\"showTitleBar\" class=\"dialog-title-bar\">\n <span class=\"dialog-title\">\n <slot name=\"title\"></slot>\n </span>\n <button\n v-if=\"showCloseButton && closable\"\n type=\"button\"\n aria-label=\"Close the dialog\"\n class=\"dialog-close-button\"\n @click.prevent=\"closeDialog\"\n >&times;</button>\n </div>\n \n <div class=\"dialog-content\">\n <slot></slot>\n </div>\n\n <div v-if=\"$slots.footer\" class=\"dialog-footer\">\n <slot name=\"footer\"></slot>\n </div>\n </dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, computed, nextTick, onMounted, onBeforeUnmount } from 'vue'\n\ninterface Props {\n modelValue: boolean\n showTitleBar?: boolean\n showCloseButton?: boolean\n closable?: boolean\n closeOnClickMask?: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n showTitleBar: true,\n showCloseButton: true,\n closable: true,\n closeOnClickMask: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'closed'): void\n}>()\n\nconst dialogRef = ref<HTMLDialogElement>();\n\nconst openDialog = (): void => {\n emit('update:modelValue', true)\n}\n\nconst closeDialog = (): void => {\n emit('update:modelValue', false)\n}\n\nconst handleDialogCancel = (e: Event) => {\n e.preventDefault();\n if (props.closable) closeDialog();\n}\n\nconst handleDialogClose = (): void => {\n if (!props.closable) {\n if (props.modelValue) {\n // not programmatically close\n // re-open the dialog\n nextTick(() => {\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }) // Avoid using 'cancel' event because some browsers handle it incorrectly, see https://issues.chromium.org/issues/41491338\n return;\n }\n }\n if (props.modelValue) {\n emit('update:modelValue', false)\n }\n nextTick(() => {\n if (props.modelValue) {\n // model value keep unchanged\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }\n })\n emit('closed')\n}\n\nconst closedBy = computed(() => props.closable ? (props.closeOnClickMask ? 'any' : 'closerequest') : 'none') // see https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/closedBy\n\nwatch(() => props.modelValue, async (newValue: boolean) => {\n await nextTick()\n \n if (newValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n } else {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n }\n})\n\nonMounted(() => {\n if (props.modelValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n }\n});\n\nonBeforeUnmount(() => {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n});\n\ndefineExpose({\n get: () => dialogRef.value,\n open: openDialog,\n close: closeDialog,\n});\n</script>\n\n<style scoped>\n.dialog-view {\n padding: var(--dialog-padding, 20px);\n border-radius: 5px;\n border: 1px solid gray;\n outline: 0 !important;\n max-width: calc(100% - 2em);\n max-height: calc(100% - 2em);\n box-sizing: border-box;\n overflow: hidden;\n}\n\n.dialog-view[open] {\n display: flex;\n flex-direction: column;\n}\n\n.dialog-view::backdrop {\n background: rgba(0, 0, 0, 0.5);\n}\n\n.dialog-title-bar {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 0.5em;\n min-height: var(--dialog-title-height, 24px);\n white-space: pre;\n overflow: hidden;\n user-select: none;\n}\n\n.dialog-title {\n flex: 1;\n text-align: center;\n font-weight: bold;\n font-size: large;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.dialog-close-button {\n margin-left: 0.5em;\n text-decoration: none;\n color: #666;\n font-size: 1.5em;\n line-height: 1;\n width: 24px;\n height: 24px;\n padding: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: none;\n background: none;\n}\n\n.dialog-close-button:hover {\n color: #333;\n background-color: #f0f0f0;\n border-radius: 3px;\n}\n\n.dialog-close-button:focus-visible {\n outline: 2px solid rgb(160, 207, 255);\n outline-offset: -2px;\n}\n\n.dialog-content {\n flex: 1;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.dialog-footer {\n margin-top: 0.5em;\n}\n</style>\n","import { App, Plugin } from 'vue'\nimport DialogViewComponent from './DialogView.vue'\n\nexport { default as DialogView } from './DialogView.vue'\n\nexport const DialogViewPlugin: Plugin = {\n install: (app: App) => {\n app.component('DialogView', DialogViewComponent)\n }\n}\n\nexport default DialogViewPlugin\n"],"names":["props","__props","emit","__emit","dialogRef","ref","openDialog","closeDialog","handleDialogCancel","e","handleDialogClose","nextTick","closedBy","computed","watch","newValue","onMounted","onBeforeUnmount","__expose","_openBlock","_createElementBlock","_mergeProps","$attrs","_hoisted_2","_createElementVNode","_hoisted_3","_renderSlot","_ctx","_hoisted_4","$slots","_hoisted_5","DialogViewPlugin","app","DialogViewComponent"],"mappings":"2vBA2CA,MAAMA,EAAQC,EAORC,EAAOC,EAKPC,EAAYC,EAAAA,IAAA,EAEZC,EAAa,IAAY,CAC7BJ,EAAK,oBAAqB,EAAI,CAChC,EAEMK,EAAc,IAAY,CAC9BL,EAAK,oBAAqB,EAAK,CACjC,EAEMM,EAAsBC,GAAa,CACvCA,EAAE,eAAA,EACET,EAAM,UAAUO,EAAA,CACtB,EAEMG,EAAoB,IAAY,CACpC,GAAI,CAACV,EAAM,UACLA,EAAM,WAAY,CAGpBW,EAAAA,SAAS,IAAM,CACTP,EAAU,OAAS,CAACA,EAAU,MAAM,MAAMA,EAAU,MAAM,UAAA,CAChE,CAAC,EACD,MACF,CAEEJ,EAAM,YACRE,EAAK,oBAAqB,EAAK,EAEjCS,EAAAA,SAAS,IAAM,CACTX,EAAM,YAEJI,EAAU,OAAS,CAACA,EAAU,MAAM,MAAMA,EAAU,MAAM,UAAA,CAElE,CAAC,EACDF,EAAK,QAAQ,CACf,EAEMU,EAAWC,WAAS,IAAMb,EAAM,SAAYA,EAAM,iBAAmB,MAAQ,eAAkB,MAAM,EAE3Gc,OAAAA,EAAAA,MAAM,IAAMd,EAAM,WAAY,MAAOe,GAAsB,CACzD,MAAMJ,WAAA,EAEFI,EACEX,EAAU,OAAS,CAACA,EAAU,MAAM,MACtCA,EAAU,MAAM,UAAA,EAGdA,EAAU,OAASA,EAAU,MAAM,MACrCA,EAAU,MAAM,MAAA,CAGtB,CAAC,EAEDY,EAAAA,UAAU,IAAM,CACVhB,EAAM,YACJI,EAAU,OAAS,CAACA,EAAU,MAAM,MACtCA,EAAU,MAAM,UAAA,CAGtB,CAAC,EAEDa,EAAAA,gBAAgB,IAAM,CAChBb,EAAU,OAASA,EAAU,MAAM,MACrCA,EAAU,MAAM,MAAA,CAEpB,CAAC,EAEDc,EAAa,CACX,IAAK,IAAMd,EAAU,MACrB,KAAME,EACN,MAAOC,CAAA,CACR,UA9HCY,YAAA,EAAAC,qBA4BS,SA5BTC,EAAAA,WA4BS,SA3BH,YAAJ,IAAIjB,EACJ,MAAM,aAAA,EACEkB,EAAAA,OAAM,CACb,QAAOZ,EACP,SAAQF,EACR,SAAUI,EAAA,KAAA,IAEAX,EAAA,cAAXkB,EAAAA,UAAA,EAAAC,EAAAA,mBAWM,MAXNG,EAWM,CAVJC,EAAAA,mBAEO,OAFPC,EAEO,CADLC,EAAAA,WAA0BC,EAAA,OAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,GAGpB1B,EAAA,iBAAmBA,EAAA,wBAD3BmB,EAAAA,mBAMiB,SAAA,OAJf,KAAK,SACL,aAAW,mBACX,MAAM,sBACL,wBAAeb,EAAW,CAAA,SAAA,CAAA,CAAA,EAC5B,GAAO,8DAGViB,EAAAA,mBAEM,MAFNI,EAEM,CADJF,EAAAA,WAAaC,EAAA,OAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,GAGJE,EAAAA,OAAO,QAAlBV,EAAAA,YAAAC,EAAAA,mBAEM,MAFNU,EAEM,CADJJ,EAAAA,WAA2BC,EAAA,OAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,8ECtBpBI,EAA2B,CACtC,QAAUC,GAAa,CACrBA,EAAI,UAAU,aAAcC,CAAmB,CACjD,CACF"}
1
+ {"version":3,"file":"unobfuscated.umd.js","sources":["../src/DialogView.vue","../src/unobfuscated.ts"],"sourcesContent":["<template>\n <dialog\n ref=\"dialogRef\"\n class=\"dialog-view\"\n v-bind=\"$attrs\"\n @close=\"handleDialogClose\"\n @cancel=\"handleDialogCancel\"\n :closedBy=\"closedBy\"\n >\n <div v-if=\"showTitleBar\" class=\"dialog-title-bar\">\n <span class=\"dialog-title\">\n <slot name=\"title\"></slot>\n </span>\n <button\n v-if=\"showCloseButton && closable\"\n type=\"button\"\n aria-label=\"Close the dialog\"\n class=\"dialog-close-button\"\n @click.prevent=\"closeDialog\"\n >&times;</button>\n </div>\n \n <div class=\"dialog-content\">\n <slot></slot>\n </div>\n\n <div v-if=\"$slots.footer\" class=\"dialog-footer\">\n <slot name=\"footer\"></slot>\n </div>\n </dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, watch, computed, nextTick, onMounted, onBeforeUnmount, onDeactivated, onActivated } from 'vue'\n\ninterface Props {\n modelValue: boolean\n showTitleBar?: boolean\n showCloseButton?: boolean\n closable?: boolean\n closeOnClickMask?: boolean\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n showTitleBar: true,\n showCloseButton: true,\n closable: true,\n closeOnClickMask: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: boolean): void\n (e: 'closed'): void\n}>()\n\nconst dialogRef = ref<HTMLDialogElement>();\n\nconst openDialog = (): void => {\n emit('update:modelValue', true)\n}\n\nconst closeDialog = (): void => {\n emit('update:modelValue', false)\n}\n\nconst handleDialogCancel = (e: Event) => {\n e.preventDefault();\n if (props.closable) closeDialog();\n}\n\nconst ignoreCloseEvent = ref(false);\n\nconst handleDialogClose = (): void => {\n if (ignoreCloseEvent.value) return;\n if (!props.closable) {\n if (props.modelValue) {\n // not programmatically close\n // re-open the dialog\n nextTick(() => {\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }) // Avoid using 'cancel' event because some browsers handle it incorrectly, see https://issues.chromium.org/issues/41491338\n return;\n }\n }\n if (props.modelValue) {\n emit('update:modelValue', false)\n }\n nextTick(() => {\n if (props.modelValue) {\n // model value keep unchanged\n if (dialogRef.value && !dialogRef.value.open) dialogRef.value.showModal()\n }\n })\n emit('closed')\n}\n\nconst closedBy = computed(() => props.closable ? (props.closeOnClickMask ? 'any' : 'closerequest') : 'none') // see https://developer.mozilla.org/en-US/docs/Web/API/HTMLDialogElement/closedBy\n\nwatch(() => props.modelValue, async (newValue: boolean) => {\n await nextTick()\n \n if (newValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n } else {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n }\n})\n\nconst initDialog = () => {\n if (props.modelValue) {\n if (dialogRef.value && !dialogRef.value.open) {\n dialogRef.value.showModal()\n }\n }\n};\n\nonMounted(() => {\n initDialog();\n});\n\nonBeforeUnmount(() => {\n if (dialogRef.value && dialogRef.value.open) {\n dialogRef.value.close()\n }\n});\n\nonDeactivated(() => {\n if (dialogRef.value && dialogRef.value.open) {\n ignoreCloseEvent.value = true;\n dialogRef.value.close();\n nextTick(() => ignoreCloseEvent.value = false);\n }\n});\n\nonActivated(() => {\n initDialog();\n});\n\ndefineExpose({\n get: () => dialogRef.value,\n open: openDialog,\n close: closeDialog,\n});\n</script>\n\n<style scoped>\n.dialog-view {\n padding: var(--dialog-padding, 20px);\n border-radius: 5px;\n border: 1px solid gray;\n outline: 0 !important;\n max-width: calc(100% - 2em);\n max-height: calc(100% - 2em);\n box-sizing: border-box;\n overflow: hidden;\n}\n\n.dialog-view[open] {\n display: flex;\n flex-direction: column;\n}\n\n.dialog-view::backdrop {\n background: rgba(0, 0, 0, 0.5);\n}\n\n.dialog-title-bar {\n display: flex;\n flex-direction: row;\n align-items: center;\n margin-bottom: 0.5em;\n min-height: var(--dialog-title-height, 24px);\n white-space: pre;\n overflow: hidden;\n user-select: none;\n}\n\n.dialog-title {\n flex: 1;\n text-align: center;\n font-weight: bold;\n font-size: large;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.dialog-close-button {\n margin-left: 0.5em;\n text-decoration: none;\n color: #666;\n font-size: 1.5em;\n line-height: 1;\n width: 24px;\n height: 24px;\n padding: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n border: none;\n background: none;\n}\n\n.dialog-close-button:hover {\n color: #333;\n background-color: #f0f0f0;\n border-radius: 3px;\n}\n\n.dialog-close-button:focus-visible {\n outline: 2px solid rgb(160, 207, 255);\n outline-offset: -2px;\n}\n\n.dialog-content {\n flex: 1;\n overflow: auto;\n display: flex;\n flex-direction: column;\n}\n\n.dialog-footer {\n margin-top: 0.5em;\n}\n</style>\n","import { App, Plugin } from 'vue'\nimport DialogViewComponent from './DialogView.vue'\n\nexport { default as DialogView } from './DialogView.vue'\n\nexport const DialogViewPlugin: Plugin = {\n install: (app: App) => {\n app.component('DialogView', DialogViewComponent)\n }\n}\n\nexport default DialogViewPlugin\n"],"names":["props","__props","emit","__emit","dialogRef","ref","openDialog","closeDialog","handleDialogCancel","e","ignoreCloseEvent","handleDialogClose","nextTick","closedBy","computed","watch","newValue","initDialog","onMounted","onBeforeUnmount","onDeactivated","onActivated","__expose","_openBlock","_createElementBlock","_mergeProps","$attrs","_hoisted_2","_createElementVNode","_hoisted_3","_renderSlot","_ctx","_hoisted_4","$slots","_hoisted_5","DialogViewPlugin","app","DialogViewComponent"],"mappings":"2vBA2CA,MAAMA,EAAQC,EAORC,EAAOC,EAKPC,EAAYC,EAAAA,IAAA,EAEZC,EAAa,IAAY,CAC7BJ,EAAK,oBAAqB,EAAI,CAChC,EAEMK,EAAc,IAAY,CAC9BL,EAAK,oBAAqB,EAAK,CACjC,EAEMM,EAAsBC,GAAa,CACvCA,EAAE,eAAA,EACET,EAAM,UAAUO,EAAA,CACtB,EAEMG,EAAmBL,EAAAA,IAAI,EAAK,EAE5BM,EAAoB,IAAY,CACpC,GAAI,CAAAD,EAAiB,MACrB,IAAI,CAACV,EAAM,UACLA,EAAM,WAAY,CAGpBY,EAAAA,SAAS,IAAM,CACTR,EAAU,OAAS,CAACA,EAAU,MAAM,MAAMA,EAAU,MAAM,UAAA,CAChE,CAAC,EACD,MACF,CAEEJ,EAAM,YACRE,EAAK,oBAAqB,EAAK,EAEjCU,EAAAA,SAAS,IAAM,CACTZ,EAAM,YAEJI,EAAU,OAAS,CAACA,EAAU,MAAM,MAAMA,EAAU,MAAM,UAAA,CAElE,CAAC,EACDF,EAAK,QAAQ,EACf,EAEMW,EAAWC,WAAS,IAAMd,EAAM,SAAYA,EAAM,iBAAmB,MAAQ,eAAkB,MAAM,EAE3Ge,EAAAA,MAAM,IAAMf,EAAM,WAAY,MAAOgB,GAAsB,CACzD,MAAMJ,WAAA,EAEFI,EACEZ,EAAU,OAAS,CAACA,EAAU,MAAM,MACtCA,EAAU,MAAM,UAAA,EAGdA,EAAU,OAASA,EAAU,MAAM,MACrCA,EAAU,MAAM,MAAA,CAGtB,CAAC,EAED,MAAMa,EAAa,IAAM,CACnBjB,EAAM,YACJI,EAAU,OAAS,CAACA,EAAU,MAAM,MACtCA,EAAU,MAAM,UAAA,CAGtB,EAEAc,OAAAA,EAAAA,UAAU,IAAM,CACdD,EAAA,CACF,CAAC,EAEDE,EAAAA,gBAAgB,IAAM,CAChBf,EAAU,OAASA,EAAU,MAAM,MACrCA,EAAU,MAAM,MAAA,CAEpB,CAAC,EAEDgB,EAAAA,cAAc,IAAM,CACdhB,EAAU,OAASA,EAAU,MAAM,OACrCM,EAAiB,MAAQ,GACzBN,EAAU,MAAM,MAAA,EAChBQ,EAAAA,SAAS,IAAMF,EAAiB,MAAQ,EAAK,EAEjD,CAAC,EAEDW,EAAAA,YAAY,IAAM,CAChBJ,EAAA,CACF,CAAC,EAEDK,EAAa,CACX,IAAK,IAAMlB,EAAU,MACrB,KAAME,EACN,MAAOC,CAAA,CACR,UAjJCgB,YAAA,EAAAC,qBA4BS,SA5BTC,EAAAA,WA4BS,SA3BH,YAAJ,IAAIrB,EACJ,MAAM,aAAA,EACEsB,EAAAA,OAAM,CACb,QAAOf,EACP,SAAQH,EACR,SAAUK,EAAA,KAAA,IAEAZ,EAAA,cAAXsB,EAAAA,UAAA,EAAAC,EAAAA,mBAWM,MAXNG,EAWM,CAVJC,EAAAA,mBAEO,OAFPC,EAEO,CADLC,EAAAA,WAA0BC,EAAA,OAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,GAGpB9B,EAAA,iBAAmBA,EAAA,wBAD3BuB,EAAAA,mBAMiB,SAAA,OAJf,KAAK,SACL,aAAW,mBACX,MAAM,sBACL,wBAAejB,EAAW,CAAA,SAAA,CAAA,CAAA,EAC5B,GAAO,8DAGVqB,EAAAA,mBAEM,MAFNI,EAEM,CADJF,EAAAA,WAAaC,EAAA,OAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,GAGJE,EAAAA,OAAO,QAAlBV,EAAAA,YAAAC,EAAAA,mBAEM,MAFNU,EAEM,CADJJ,EAAAA,WAA2BC,EAAA,OAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,8ECtBpBI,EAA2B,CACtC,QAAUC,GAAa,CACrBA,EAAI,UAAU,aAAcC,CAAmB,CACjD,CACF"}
@@ -1 +1 @@
1
- .dialog-view[data-v-da4085e6]{padding:var(--dialog-padding, 20px);border-radius:5px;border:1px solid gray;outline:0!important;max-width:calc(100% - 2em);max-height:calc(100% - 2em);box-sizing:border-box;overflow:hidden}.dialog-view[open][data-v-da4085e6]{display:flex;flex-direction:column}.dialog-view[data-v-da4085e6]::backdrop{background:#00000080}.dialog-title-bar[data-v-da4085e6]{display:flex;flex-direction:row;align-items:center;margin-bottom:.5em;min-height:var(--dialog-title-height, 24px);white-space:pre;overflow:hidden;-webkit-user-select:none;user-select:none}.dialog-title[data-v-da4085e6]{flex:1;text-align:center;font-weight:700;font-size:large;overflow:hidden;text-overflow:ellipsis}.dialog-close-button[data-v-da4085e6]{margin-left:.5em;text-decoration:none;color:#666;font-size:1.5em;line-height:1;width:24px;height:24px;padding:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;background:none}.dialog-close-button[data-v-da4085e6]:hover{color:#333;background-color:#f0f0f0;border-radius:3px}.dialog-close-button[data-v-da4085e6]:focus-visible{outline:2px solid rgb(160,207,255);outline-offset:-2px}.dialog-content[data-v-da4085e6]{flex:1;overflow:auto;display:flex;flex-direction:column}.dialog-footer[data-v-da4085e6]{margin-top:.5em}
1
+ .dialog-view[data-v-7641dcfa]{padding:var(--dialog-padding, 20px);border-radius:5px;border:1px solid gray;outline:0!important;max-width:calc(100% - 2em);max-height:calc(100% - 2em);box-sizing:border-box;overflow:hidden}.dialog-view[open][data-v-7641dcfa]{display:flex;flex-direction:column}.dialog-view[data-v-7641dcfa]::backdrop{background:#00000080}.dialog-title-bar[data-v-7641dcfa]{display:flex;flex-direction:row;align-items:center;margin-bottom:.5em;min-height:var(--dialog-title-height, 24px);white-space:pre;overflow:hidden;-webkit-user-select:none;user-select:none}.dialog-title[data-v-7641dcfa]{flex:1;text-align:center;font-weight:700;font-size:large;overflow:hidden;text-overflow:ellipsis}.dialog-close-button[data-v-7641dcfa]{margin-left:.5em;text-decoration:none;color:#666;font-size:1.5em;line-height:1;width:24px;height:24px;padding:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;border:none;background:none}.dialog-close-button[data-v-7641dcfa]:hover{color:#333;background-color:#f0f0f0;border-radius:3px}.dialog-close-button[data-v-7641dcfa]:focus-visible{outline:2px solid rgb(160,207,255);outline-offset:-2px}.dialog-content[data-v-7641dcfa]{flex:1;overflow:auto;display:flex;flex-direction:column}.dialog-footer[data-v-7641dcfa]{margin-top:.5em}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue-dialog-view",
3
- "version": "1.8.2",
3
+ "version": "1.8.3",
4
4
  "description": "A modern Vue 3 dialog component using native dialog element",
5
5
  "type": "module",
6
6
  "main": "./dist/dialog-view.umd.js",
@@ -31,7 +31,7 @@
31
31
  </template>
32
32
 
33
33
  <script setup lang="ts">
34
- import { ref, watch, computed, nextTick, onMounted, onBeforeUnmount } from 'vue'
34
+ import { ref, watch, computed, nextTick, onMounted, onBeforeUnmount, onDeactivated, onActivated } from 'vue'
35
35
 
36
36
  interface Props {
37
37
  modelValue: boolean
@@ -68,7 +68,10 @@ const handleDialogCancel = (e: Event) => {
68
68
  if (props.closable) closeDialog();
69
69
  }
70
70
 
71
+ const ignoreCloseEvent = ref(false);
72
+
71
73
  const handleDialogClose = (): void => {
74
+ if (ignoreCloseEvent.value) return;
72
75
  if (!props.closable) {
73
76
  if (props.modelValue) {
74
77
  // not programmatically close
@@ -107,12 +110,16 @@ watch(() => props.modelValue, async (newValue: boolean) => {
107
110
  }
108
111
  })
109
112
 
110
- onMounted(() => {
113
+ const initDialog = () => {
111
114
  if (props.modelValue) {
112
115
  if (dialogRef.value && !dialogRef.value.open) {
113
116
  dialogRef.value.showModal()
114
117
  }
115
118
  }
119
+ };
120
+
121
+ onMounted(() => {
122
+ initDialog();
116
123
  });
117
124
 
118
125
  onBeforeUnmount(() => {
@@ -121,6 +128,18 @@ onBeforeUnmount(() => {
121
128
  }
122
129
  });
123
130
 
131
+ onDeactivated(() => {
132
+ if (dialogRef.value && dialogRef.value.open) {
133
+ ignoreCloseEvent.value = true;
134
+ dialogRef.value.close();
135
+ nextTick(() => ignoreCloseEvent.value = false);
136
+ }
137
+ });
138
+
139
+ onActivated(() => {
140
+ initDialog();
141
+ });
142
+
124
143
  defineExpose({
125
144
  get: () => dialogRef.value,
126
145
  open: openDialog,
@@ -31,7 +31,7 @@
31
31
  </template>
32
32
 
33
33
  <script setup lang="ts">
34
- import { ref, watch, computed, nextTick, onMounted, onBeforeUnmount } from 'vue'
34
+ import { ref, watch, computed, nextTick, onMounted, onBeforeUnmount, onDeactivated, onActivated } from 'vue'
35
35
 
36
36
  interface Props {
37
37
  modelValue: boolean
@@ -68,7 +68,10 @@ const handleDialogCancel = (e: Event) => {
68
68
  if (props.closable) closeDialog();
69
69
  }
70
70
 
71
+ const ignoreCloseEvent = ref(false);
72
+
71
73
  const handleDialogClose = (): void => {
74
+ if (ignoreCloseEvent.value) return;
72
75
  if (!props.closable) {
73
76
  if (props.modelValue) {
74
77
  // not programmatically close
@@ -107,12 +110,16 @@ watch(() => props.modelValue, async (newValue: boolean) => {
107
110
  }
108
111
  })
109
112
 
110
- onMounted(() => {
113
+ const initDialog = () => {
111
114
  if (props.modelValue) {
112
115
  if (dialogRef.value && !dialogRef.value.open) {
113
116
  dialogRef.value.showModal()
114
117
  }
115
118
  }
119
+ };
120
+
121
+ onMounted(() => {
122
+ initDialog();
116
123
  });
117
124
 
118
125
  onBeforeUnmount(() => {
@@ -121,6 +128,18 @@ onBeforeUnmount(() => {
121
128
  }
122
129
  });
123
130
 
131
+ onDeactivated(() => {
132
+ if (dialogRef.value && dialogRef.value.open) {
133
+ ignoreCloseEvent.value = true;
134
+ dialogRef.value.close();
135
+ nextTick(() => ignoreCloseEvent.value = false);
136
+ }
137
+ });
138
+
139
+ onActivated(() => {
140
+ initDialog();
141
+ });
142
+
124
143
  defineExpose({
125
144
  get: () => dialogRef.value,
126
145
  open: openDialog,