@stonecrop/beam 0.2.49 → 0.2.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/beam.d.ts +15 -0
- package/dist/beam.js +27 -22
- package/dist/beam.js.map +1 -1
- package/dist/beam.umd.cjs +1 -1
- package/dist/beam.umd.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/src/index.d.ts +6 -1
- package/dist/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +5 -0
package/dist/beam.d.ts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import ActionFooter from '@/components/ActionFooter.vue';
|
|
2
2
|
import { App } from 'vue';
|
|
3
|
+
import BeamArrow from './components/BeamArrow.vue';
|
|
4
|
+
import BeamBtn from './components/BeamBtn.vue';
|
|
5
|
+
import BeamHeading from './components/BeamHeading.vue';
|
|
3
6
|
import BeamMetadata from './components/BeamMetadata.vue';
|
|
4
7
|
import BeamModal from '@/components/BeamModal.vue';
|
|
5
8
|
import BeamModalOutlet from '@/components/BeamModalOutlet.vue';
|
|
9
|
+
import BeamProgress from './components/BeamProgress.vue';
|
|
6
10
|
import Confirm from '@/components/Confirm.vue';
|
|
7
11
|
import ItemCheck from '@/components/ItemCheck.vue';
|
|
8
12
|
import ItemCount from '@/components/ItemCount.vue';
|
|
@@ -11,15 +15,24 @@ import ListItem from '@/components/ListItem.vue';
|
|
|
11
15
|
import ListView from '@/components/ListView.vue';
|
|
12
16
|
import Navbar from '@/components/Navbar.vue';
|
|
13
17
|
import ScanInput from '@/components/ScanInput.vue';
|
|
18
|
+
import SplitColumn from './components/SplitColumn.vue';
|
|
14
19
|
|
|
15
20
|
export { ActionFooter }
|
|
16
21
|
|
|
22
|
+
export { BeamArrow }
|
|
23
|
+
|
|
24
|
+
export { BeamBtn }
|
|
25
|
+
|
|
26
|
+
export { BeamHeading }
|
|
27
|
+
|
|
17
28
|
export { BeamMetadata }
|
|
18
29
|
|
|
19
30
|
export { BeamModal }
|
|
20
31
|
|
|
21
32
|
export { BeamModalOutlet }
|
|
22
33
|
|
|
34
|
+
export { BeamProgress }
|
|
35
|
+
|
|
23
36
|
export { Confirm }
|
|
24
37
|
|
|
25
38
|
/**
|
|
@@ -43,4 +56,6 @@ export { Navbar }
|
|
|
43
56
|
|
|
44
57
|
export { ScanInput }
|
|
45
58
|
|
|
59
|
+
export { SplitColumn }
|
|
60
|
+
|
|
46
61
|
export { }
|
package/dist/beam.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent as u, openBlock as c, createElementBlock as l, createElementVNode as i, renderSlot as m, createTextVNode as
|
|
1
|
+
import { defineComponent as u, openBlock as c, createElementBlock as l, createElementVNode as i, renderSlot as m, createTextVNode as g, normalizeClass as k, toDisplayString as _, createStaticVNode as N, resolveComponent as $, createBlock as h, withCtx as T, withDirectives as S, vShow as A, useModel as D, vModelCheckbox as x, mergeModels as z, computed as I, createCommentVNode as y, ref as O, onMounted as K, onUnmounted as L, Fragment as j, renderList as H, resolveDynamicComponent as U, createVNode as M, normalizeStyle as C } from "vue";
|
|
2
2
|
import './assets/index.css';const Q = { class: "beam_action-footer" }, R = { class: "footer-action-wrapper" }, q = /* @__PURE__ */ u({
|
|
3
3
|
__name: "ActionFooter",
|
|
4
4
|
emits: ["click"],
|
|
@@ -29,7 +29,7 @@ import './assets/index.css';const Q = { class: "beam_action-footer" }, R = { cla
|
|
|
29
29
|
r[1] || (r[1] = i("div", { class: "beam_metadata_header beam_metadata--two-column" }, null, -1)),
|
|
30
30
|
i("div", Y, [
|
|
31
31
|
i("p", J, [
|
|
32
|
-
r[0] || (r[0] =
|
|
32
|
+
r[0] || (r[0] = g(" Status: ")),
|
|
33
33
|
i("span", {
|
|
34
34
|
class: k([{ alert: !n.order.complete }, "beam_metadata--normal"])
|
|
35
35
|
}, _(n.order.complete ? "Complete" : "In Progress"), 3)
|
|
@@ -50,7 +50,7 @@ import './assets/index.css';const Q = { class: "beam_action-footer" }, R = { cla
|
|
|
50
50
|
const e = $("portal");
|
|
51
51
|
return c(), h(e, { to: "beam_modal_outlet" }, {
|
|
52
52
|
default: T(() => [
|
|
53
|
-
|
|
53
|
+
S(i("div", Z, [
|
|
54
54
|
i("button", {
|
|
55
55
|
class: "beam_btn",
|
|
56
56
|
onClick: r[0] || (r[0] = (t) => n.$emit("closemodal"))
|
|
@@ -105,7 +105,7 @@ const se = /* @__PURE__ */ v(ne, [["render", oe]]), re = { class: "container" },
|
|
|
105
105
|
setup(a) {
|
|
106
106
|
const n = D(a, "modelValue");
|
|
107
107
|
return (r, e) => (c(), l("label", re, [
|
|
108
|
-
|
|
108
|
+
S(i("input", {
|
|
109
109
|
type: "checkbox",
|
|
110
110
|
"onUpdate:modelValue": e[0] || (e[0] = (t) => n.value = t),
|
|
111
111
|
tabindex: "-1"
|
|
@@ -226,7 +226,7 @@ const se = /* @__PURE__ */ v(ne, [["render", oe]]), re = { class: "container" },
|
|
|
226
226
|
]))), 128))
|
|
227
227
|
]));
|
|
228
228
|
}
|
|
229
|
-
}),
|
|
229
|
+
}), ge = { class: "beam_navbar" }, be = /* @__PURE__ */ u({
|
|
230
230
|
__name: "Navbar",
|
|
231
231
|
emits: ["click"],
|
|
232
232
|
setup(a, { emit: n }) {
|
|
@@ -235,11 +235,11 @@ const se = /* @__PURE__ */ v(ne, [["render", oe]]), re = { class: "container" },
|
|
|
235
235
|
};
|
|
236
236
|
return (t, s) => {
|
|
237
237
|
const o = $("BeamHeading");
|
|
238
|
-
return c(), l("nav",
|
|
238
|
+
return c(), l("nav", ge, [
|
|
239
239
|
m(t.$slots, "title", {}, () => [
|
|
240
240
|
M(o, null, {
|
|
241
241
|
default: T(() => s[0] || (s[0] = [
|
|
242
|
-
|
|
242
|
+
g("TITLE")
|
|
243
243
|
])),
|
|
244
244
|
_: 1
|
|
245
245
|
})
|
|
@@ -249,7 +249,7 @@ const se = /* @__PURE__ */ v(ne, [["render", oe]]), re = { class: "container" },
|
|
|
249
249
|
onClick: e
|
|
250
250
|
}, [
|
|
251
251
|
m(t.$slots, "navbaraction", {}, () => [
|
|
252
|
-
s[1] || (s[1] =
|
|
252
|
+
s[1] || (s[1] = g("Action"))
|
|
253
253
|
])
|
|
254
254
|
])
|
|
255
255
|
]);
|
|
@@ -479,7 +479,7 @@ var F = { exports: {} };
|
|
|
479
479
|
* @return boolean
|
|
480
480
|
*/
|
|
481
481
|
_validateScanCode: function(e, t) {
|
|
482
|
-
var s = e.scannerDetectionData, o = s.options, d = s.options.singleScanQty, p = s.vars.firstCharTime, B = s.vars.lastCharTime, f = {},
|
|
482
|
+
var s = e.scannerDetectionData, o = s.options, d = s.options.singleScanQty, p = s.vars.firstCharTime, B = s.vars.lastCharTime, f = {}, b;
|
|
483
483
|
switch (!0) {
|
|
484
484
|
case t.length < o.minLength:
|
|
485
485
|
f = {
|
|
@@ -492,7 +492,7 @@ var F = { exports: {} };
|
|
|
492
492
|
};
|
|
493
493
|
break;
|
|
494
494
|
default:
|
|
495
|
-
return o.onScan.call(e, t, d),
|
|
495
|
+
return o.onScan.call(e, t, d), b = new CustomEvent(
|
|
496
496
|
"scan",
|
|
497
497
|
{
|
|
498
498
|
detail: {
|
|
@@ -500,12 +500,12 @@ var F = { exports: {} };
|
|
|
500
500
|
qty: d
|
|
501
501
|
}
|
|
502
502
|
}
|
|
503
|
-
), e.dispatchEvent(
|
|
503
|
+
), e.dispatchEvent(b), r._reinitialize(e), !0;
|
|
504
504
|
}
|
|
505
|
-
return f.scanCode = t, f.scanDuration = B - p, f.avgTimeByChar = o.avgTimeByChar, f.minLength = o.minLength, o.onScanError.call(e, f),
|
|
505
|
+
return f.scanCode = t, f.scanDuration = B - p, f.avgTimeByChar = o.avgTimeByChar, f.minLength = o.minLength, o.onScanError.call(e, f), b = new CustomEvent(
|
|
506
506
|
"scanError",
|
|
507
507
|
{ detail: f }
|
|
508
|
-
), e.dispatchEvent(
|
|
508
|
+
), e.dispatchEvent(b), r._reinitialize(e), !1;
|
|
509
509
|
},
|
|
510
510
|
/**
|
|
511
511
|
* @private
|
|
@@ -602,7 +602,7 @@ var F = { exports: {} };
|
|
|
602
602
|
});
|
|
603
603
|
})(F);
|
|
604
604
|
var we = F.exports;
|
|
605
|
-
const
|
|
605
|
+
const P = /* @__PURE__ */ Ce(we), ke = { id: "scan_input" }, $e = /* @__PURE__ */ u({
|
|
606
606
|
__name: "ScanInput",
|
|
607
607
|
props: {
|
|
608
608
|
scanHandler: { type: Function }
|
|
@@ -611,13 +611,13 @@ const S = /* @__PURE__ */ Ce(we), ke = { id: "scan_input" }, $e = /* @__PURE__ *
|
|
|
611
611
|
setup(a, { emit: n }) {
|
|
612
612
|
const r = n, e = a;
|
|
613
613
|
return K(() => {
|
|
614
|
-
const t =
|
|
614
|
+
const t = P.attachTo(window, { onScan: e.scanHandler });
|
|
615
615
|
r("scanInstance", t);
|
|
616
616
|
}), L(() => {
|
|
617
|
-
|
|
617
|
+
P.detachFrom(window);
|
|
618
618
|
}), (t, s) => (c(), l("div", ke));
|
|
619
619
|
}
|
|
620
|
-
}), Te = { class: "column column-left" }, Be = { class: "column column-right" },
|
|
620
|
+
}), Te = { class: "column column-left" }, Be = { class: "column column-right" }, Pe = /* @__PURE__ */ u({
|
|
621
621
|
__name: "SplitColumn",
|
|
622
622
|
props: {
|
|
623
623
|
justifyContent: {},
|
|
@@ -636,7 +636,7 @@ const S = /* @__PURE__ */ Ce(we), ke = { id: "scan_input" }, $e = /* @__PURE__ *
|
|
|
636
636
|
])
|
|
637
637
|
], 4));
|
|
638
638
|
}
|
|
639
|
-
}),
|
|
639
|
+
}), Se = /* @__PURE__ */ v(Pe, [["__scopeId", "data-v-5d4573e9"]]), De = {}, Ie = { class: "beam_header" };
|
|
640
640
|
function Ke(a, n) {
|
|
641
641
|
return c(), l("h1", Ie, [
|
|
642
642
|
m(a.$slots, "default")
|
|
@@ -671,7 +671,7 @@ const Le = /* @__PURE__ */ v(De, [["render", Ke]]), Me = { class: "beam_metadata
|
|
|
671
671
|
function ze(a, n) {
|
|
672
672
|
return c(), l("button", xe, [
|
|
673
673
|
m(a.$slots, "default", {}, () => [
|
|
674
|
-
n[0] || (n[0] =
|
|
674
|
+
n[0] || (n[0] = g("Action"))
|
|
675
675
|
])
|
|
676
676
|
]);
|
|
677
677
|
}
|
|
@@ -695,7 +695,7 @@ const Oe = /* @__PURE__ */ v(Ae, [["render", ze]]), je = { class: "beam_metadata
|
|
|
695
695
|
setup(a) {
|
|
696
696
|
const n = a, r = I(() => n.complete ? n.completeMessage : n.progressMessage);
|
|
697
697
|
return (e, t) => (c(), l("p", je, [
|
|
698
|
-
|
|
698
|
+
g(_(a.label) + ": ", 1),
|
|
699
699
|
i("span", {
|
|
700
700
|
class: k([{ "beam--alert": !a.complete }, "beam--normal"])
|
|
701
701
|
}, _(r.value), 3)
|
|
@@ -703,21 +703,26 @@ const Oe = /* @__PURE__ */ v(Ae, [["render", ze]]), je = { class: "beam_metadata
|
|
|
703
703
|
}
|
|
704
704
|
});
|
|
705
705
|
function Qe(a) {
|
|
706
|
-
a.component("ActionFooter", q), a.component("BeamMetadata", X), a.component("BeamModal", ee), a.component("BeamModalOutlet", te), a.component("Confirm", se), a.component("ItemCheck", V), a.component("ItemCount", E), a.component("ListAnchor", me), a.component("ListItem", w), a.component("ListView", ve), a.component("Navbar",
|
|
706
|
+
a.component("ActionFooter", q), a.component("BeamMetadata", X), a.component("BeamModal", ee), a.component("BeamModalOutlet", te), a.component("Confirm", se), a.component("ItemCheck", V), a.component("ItemCount", E), a.component("ListAnchor", me), a.component("ListItem", w), a.component("ListView", ve), a.component("Navbar", be), a.component("ScanInput", $e), a.component("SplitColumn", Se), a.component("BeamHeading", Le), a.component("BeamArrow", Ne), a.component("BeamBtn", Oe), a.component("BeamProgress", He);
|
|
707
707
|
}
|
|
708
708
|
export {
|
|
709
709
|
q as ActionFooter,
|
|
710
|
+
Ne as BeamArrow,
|
|
711
|
+
Oe as BeamBtn,
|
|
712
|
+
Le as BeamHeading,
|
|
710
713
|
X as BeamMetadata,
|
|
711
714
|
ee as BeamModal,
|
|
712
715
|
te as BeamModalOutlet,
|
|
716
|
+
He as BeamProgress,
|
|
713
717
|
se as Confirm,
|
|
714
718
|
V as ItemCheck,
|
|
715
719
|
E as ItemCount,
|
|
716
720
|
me as ListAnchor,
|
|
717
721
|
w as ListItem,
|
|
718
722
|
ve as ListView,
|
|
719
|
-
|
|
723
|
+
be as Navbar,
|
|
720
724
|
$e as ScanInput,
|
|
725
|
+
Se as SplitColumn,
|
|
721
726
|
Qe as install
|
|
722
727
|
};
|
|
723
728
|
//# sourceMappingURL=beam.js.map
|
package/dist/beam.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beam.js","sources":["../src/components/ActionFooter.vue","../src/components/Confirm.vue","../src/components/ItemCheck.vue","../src/components/ItemCount.vue","../src/components/ListItem.vue","../src/components/ListView.vue","../src/components/Navbar.vue","../../common/temp/node_modules/.pnpm/onscan.js@1.5.2/node_modules/onscan.js/onscan.js","../src/components/ScanInput.vue","../src/components/BeamHeading.vue","../src/components/BeamBtn.vue","../src/components/BeamProgress.vue","../src/index.ts"],"sourcesContent":["<template>\n\t<footer class=\"beam_action-footer\">\n\t\t<span class=\"footer-action-wrapper\">\n\t\t\t<button class=\"beam_btn\" @click=\"handleFooterAction\">\n\t\t\t\t<slot />\n\t\t\t</button>\n\t\t</span>\n\t</footer>\n</template>\n\n<script setup lang=\"ts\">\nconst emit = defineEmits<{ click: [] }>()\n\nconst handleFooterAction = () => {\n\temit('click')\n}\n</script>\n","<template>\n\t<div class=\"beam_modal-confirm\">\n\t\t<h2>Would you like to continue?</h2>\n\t\t<button class=\"beam_btn\" @click=\"$emit('confirmmodal')\">Yes</button>\n\t\t<button class=\"beam_btn\" @click=\"$emit('closemodal')\">No</button>\n\t</div>\n</template>\n","<template>\n\t<label class=\"container\">\n\t\t<input type=\"checkbox\" v-model=\"value\" tabindex=\"-1\" />\n\t\t<div class=\"checkmark\" tabindex=\"0\"></div>\n\t</label>\n</template>\n\n<script setup lang=\"ts\">\nconst value = defineModel<boolean>({ default: false })\n</script>\n\n<style scoped>\n.container {\n\tdisplay: block;\n\tposition: relative;\n\tpadding-left: 2.5ch;\n\tmargin: 0;\n\tmargin-top: 0.5rem;\n\tcursor: pointer;\n\tfont-size: 2rem;\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\n/* hide default checkbox */\n.container input {\n\tposition: absolute;\n\topacity: 0;\n\tcursor: pointer;\n\theight: 0;\n\twidth: 0;\n}\n\n.checkmark {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\theight: 2rem;\n\twidth: 2rem;\n\tbackground-color: #eee;\n\toutline: 2px solid transparent;\n\tborder: 1px solid var(--highlight);\n}\n\n.container:hover input ~ .checkmark {\n\tbackground-color: white;\n}\n\n.container input:checked ~ .checkmark {\n\tbackground-color: var(--brand-secondary);\n}\n\n.checkmark:after {\n\tcontent: '';\n\tposition: absolute;\n\tdisplay: none;\n}\n\n.container input:checked ~ .checkmark:after {\n\tdisplay: block;\n}\n\n.container .checkmark:after {\n\tleft: 25%;\n\ttop: 50%;\n\twidth: 0.5rem;\n\theight: 1rem;\n\tborder: solid var(--text-color);\n\tborder-width: 0 3px 3px 0;\n\t-webkit-transform: rotate(45deg);\n\t-ms-transform: rotate(45deg);\n\ttransform: rotate(45deg) translate(-50%, -50%);\n}\n</style>\n","<template>\n\t<div class=\"beam_item-count\">\n\t\t<span\n\t\t\t:contenteditable=\"editable\"\n\t\t\t:class=\"{ 'beam--alert': !isCountComplete }\"\n\t\t\t@input=\"handleInput\"\n\t\t\t@click=\"handleInput\">\n\t\t\t{{ count }}\n\t\t</span>\n\t\t<span>/{{ denominator }}</span>\n\t\t<span v-if=\"uom\"> {{ uom }}</span>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nconst count = defineModel<number>({ required: true })\nconst {\n\tdenominator,\n\tuom = '',\n\teditable = true,\n} = defineProps<{\n\tdenominator: number\n\tuom?: string\n\teditable?: boolean\n}>()\n\nconst isCountComplete = computed(() => count.value === denominator)\n\nconst handleInput = (event: InputEvent | MouseEvent) => {\n\tevent.preventDefault()\n\tevent.stopPropagation()\n\tconst newValue = Number((event.target as HTMLElement).innerHTML) || 0\n\tcount.value = Math.min(newValue, denominator)\n}\n</script>\n","<template>\n\t<li tabindex=\"0\" class=\"beam_list-item\">\n\t\t<div class=\"beam_list-text\">\n\t\t\t<label class=\"beam--bold\">{{ listItem.label }}</label>\n\t\t\t<p>{{ listItem.description }}</p>\n\t\t</div>\n\n\t\t<ItemCount\n\t\t\tv-if=\"listItem.count\"\n\t\t\tv-model=\"listItem.count.count\"\n\t\t\t:denominator=\"listItem.count.of\"\n\t\t\t:uom=\"listItem.count.uom\"\n\t\t\t:editable=\"true\" />\n\t\t<ItemCheck v-if=\"listItem.hasOwnProperty('checked')\" v-model=\"listItem.checked\" />\n\t</li>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\n\nimport ItemCount from '@/components/ItemCount.vue'\nimport ItemCheck from '@/components/ItemCheck.vue'\n\nconst { item } = defineProps<{\n\titem: {\n\t\tlabel: string\n\t\tdescription: string\n\t\tcount?: {\n\t\t\tcount: number\n\t\t\tof: number\n\t\t\tuom: string\n\t\t}\n\t\tchecked?: boolean\n\t}\n}>()\n\nconst listItem = ref(item)\n</script>\n","<template>\n\t<ul class=\"beam_list-view\">\n\t\t<li v-for=\"item in items\" :key=\"item.label\">\n\t\t\t<template v-if=\"item.linkComponent\">\n\t\t\t\t<component :is=\"item.linkComponent\" :to=\"item.route\" tabindex=\"-1\">\n\t\t\t\t\t<ListItem :item=\"item\"></ListItem>\n\t\t\t\t</component>\n\t\t\t</template>\n\t\t\t<template v-else>\n\t\t\t\t<ListItem :item=\"item\"></ListItem>\n\t\t\t</template>\n\t\t</li>\n\t</ul>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, onUnmounted } from 'vue'\n\nimport ListItem from '@/components/ListItem.vue'\n\ndefineProps<{\n\titems: {\n\t\tlabel: string\n\t\tdescription: string\n\t\tcount?: {\n\t\t\tcount: number\n\t\t\tof: number\n\t\t\tuom: string\n\t\t}\n\t\tchecked?: boolean\n\t\tlinkComponent?: string\n\t\troute?: string\n\t}[]\n}>()\n\nconst emit = defineEmits<{ scrollbottom: [] }>()\n\nonMounted(() => {\n\twindow.addEventListener('scroll', handleScroll)\n})\n\nonUnmounted(() => {\n\twindow.removeEventListener('scroll', handleScroll)\n})\n\nconst handleScroll = () => {\n\tconst scrollHeightDifference = document.documentElement.scrollHeight - window.innerHeight\n\tconst scrollposition = document.documentElement.scrollTop\n\tif (scrollHeightDifference - scrollposition <= 2) {\n\t\temit('scrollbottom')\n\t}\n}\n</script>\n","<template>\n\t<nav class=\"beam_navbar\">\n\t\t<slot name=\"title\">\n\t\t\t<BeamHeading>TITLE</BeamHeading>\n\t\t</slot>\n\t\t<button class=\"navbar-action beam_btn\" @click=\"handlePrimaryAction\">\n\t\t\t<slot name=\"navbaraction\">Action</slot>\n\t\t</button>\n\t</nav>\n</template>\n\n<script setup lang=\"ts\">\nconst emit = defineEmits<{ click: [] }>()\n\nconst handlePrimaryAction = () => {\n\temit('click')\n}\n</script>\n","/*\n * onScan.js - scan-events for hardware barcodes scanners in javascript\n */\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory()) :\n global.onScan = factory()\n}(this, (function () {\n\tvar onScan = {\t\n\t\t\n\t\t/**\n\t\t * \n\t\t * @param DomElement oDomElement\n\t\t * @param Object oOptions\n\t\t * @return self\n\t\t */\n\t\tattachTo: function(oDomElement, oOptions) {\n\t\n\t\t\tif(oDomElement.scannerDetectionData !== undefined){\n\t\t\t\tthrow new Error(\"onScan.js is already initialized for DOM element \" + oDomElement);\n\t\t\t}\n\t\n\t\t\tvar oDefaults = {\n\t\t\t\tonScan: function(sScanned, iQty){}, // Callback after detection of a successfull scanning: function(){sScancode, iCount)}()\n\t\t\t\tonScanError: function(oDebug){}, // Callback after detection of a unsuccessfull scanning (scanned string in parameter)\n\t\t\t\tonKeyProcess: function(sChar, oEvent){}, // Callback after receiving and processing a char (scanned char in parameter)\n\t\t\t\tonKeyDetect: function(iKeyCode, oEvent){}, // Callback after detecting a keyDown (key char in parameter) - in contrast to onKeyProcess, this fires for non-character keys like tab, arrows, etc. too!\n\t\t\t\tonPaste: function(sPasted, oEvent){}, // Callback after receiving a value on paste, no matter if it is a valid code or not\n\t\t\t\tkeyCodeMapper: function(oEvent) {return onScan.decodeKeyEvent(oEvent)}, // Custom function to decode a keydown event into a character. Must return decoded character or NULL if the given event should not be processed.\n\t\t\t\tonScanButtonLongPress: function(){}, // Callback after detection of a successfull scan while the scan button was pressed and held down\n\t\t\t\tscanButtonKeyCode:false, // Key code of the scanner hardware button (if the scanner button a acts as a key itself) \n\t\t\t\tscanButtonLongPressTime:500, // How long (ms) the hardware button should be pressed, until a callback gets executed\n\t\t\t\ttimeBeforeScanTest:100, // Wait duration (ms) after keypress event to check if scanning is finished\n\t\t\t\tavgTimeByChar:30, // Average time (ms) between 2 chars. Used to do difference between keyboard typing and scanning\n\t\t\t\tminLength:6, // Minimum length for a scanning\n\t\t\t\tsuffixKeyCodes:[9,13], // Chars to remove and means end of scanning\n\t\t\t\tprefixKeyCodes:[], // Chars to remove and means start of scanning\n\t\t\t\tignoreIfFocusOn:false, // do not handle scans if the currently focused element matches this selector or object\n\t\t\t\tstopPropagation:false, // Stop immediate propagation on keypress event\n\t\t\t\tpreventDefault:false, // Prevent default action on keypress event\n\t\t\t\tcaptureEvents:false, // Get the events before any listeners deeper in the DOM\n\t\t\t\treactToKeydown:true, // look for scan input in keyboard events\n\t\t\t\treactToPaste:false, // look for scan input in paste events\n\t\t\t\tsingleScanQty: 1, // Quantity of Items put out to onScan in a single scan\n\t\t\t}\n\t\t\t\t\t\t\t\t\t\n\t\t\toOptions = this._mergeOptions(oDefaults, oOptions);\n\t\n\t\t\t// initializing options and variables on DomElement\n\t\t\toDomElement.scannerDetectionData = {\n\t\t\t\t\toptions: oOptions,\n\t\t\t\t\tvars:{\n\t\t\t\t\t\tfirstCharTime: 0,\n\t\t\t\t\t\tlastCharTime: 0,\n\t\t\t\t\t\taccumulatedString: '',\n\t\t\t\t\t\ttestTimer: false,\n\t\t\t\t\t\tlongPressTimeStart: 0,\n\t\t\t\t\t\tlongPressed: false\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t};\n\t\t\t\n\t\t\t// initializing handlers (based on settings)\n\t\t\tif (oOptions.reactToPaste === true){\n\t\t\t\toDomElement.addEventListener(\"paste\", this._handlePaste, oOptions.captureEvents);\n\t\t\t}\n\t\t\tif (oOptions.scanButtonKeyCode !== false){\n\t\t\t\toDomElement.addEventListener(\"keyup\", this._handleKeyUp, oOptions.captureEvents);\n\t\t\t}\n\t\t\tif (oOptions.reactToKeydown === true || oOptions.scanButtonKeyCode !== false){\t\n\t\t\t\toDomElement.addEventListener(\"keydown\", this._handleKeyDown, oOptions.captureEvents);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * \n\t\t * @param DomElement oDomElement\n\t\t * @return void\n\t\t */\n\t\tdetachFrom: function(oDomElement) {\n\t\t\t// detaching all used events\n\t\t\tif (oDomElement.scannerDetectionData.options.reactToPaste){\n\t\t\t\toDomElement.removeEventListener(\"paste\", this._handlePaste);\n\t\t\t}\n\t\t\tif (oDomElement.scannerDetectionData.options.scanButtonKeyCode !== false){\n\t\t\t\toDomElement.removeEventListener(\"keyup\", this._handleKeyUp);\n\t\t\t}\n\t\t\toDomElement.removeEventListener(\"keydown\", this._handleKeyDown);\n\t\t\t\n\t\t\t// clearing data off DomElement\n\t\t\toDomElement.scannerDetectionData = undefined; \n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * \n\t\t * @param DomElement oDomElement\n\t\t * @return Object\n\t\t */\n\t\tgetOptions: function(oDomElement){\n\t\t\treturn oDomElement.scannerDetectionData.options;\t\t\t\n\t\t},\n\t\n\t\t/**\n\t\t * \n\t\t * @param DomElement oDomElement\n\t\t * @param Object oOptions\n\t\t * @return self\n\t\t */\n\t\tsetOptions: function(oDomElement, oOptions){\n\t\t\t// check if some handlers need to be changed based on possible option changes\n\t\t\tswitch (oDomElement.scannerDetectionData.options.reactToPaste){\n\t\t\t\tcase true: \n\t\t\t\t\tif (oOptions.reactToPaste === false){\n\t\t\t\t\t\toDomElement.removeEventListener(\"paste\", this._handlePaste);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase false:\n\t\t\t\t\tif (oOptions.reactToPaste === true){\n\t\t\t\t\t\toDomElement.addEventListener(\"paste\", this._handlePaste);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tswitch (oDomElement.scannerDetectionData.options.scanButtonKeyCode){\n\t\t\t\tcase false:\n\t\t\t\t\tif (oOptions.scanButtonKeyCode !== false){\n\t\t\t\t\t\toDomElement.addEventListener(\"keyup\", this._handleKeyUp);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: \n\t\t\t\t\tif (oOptions.scanButtonKeyCode === false){\n\t\t\t\t\t\toDomElement.removeEventListener(\"keyup\", this._handleKeyUp);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\t// merge old and new options\n\t\t\toDomElement.scannerDetectionData.options = this._mergeOptions(oDomElement.scannerDetectionData.options, oOptions);\n\t\t\n\t\t\t// reinitiallize\n\t\t\tthis._reinitialize(oDomElement);\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Transforms key codes into characters.\n\t\t * \n\t\t * By default, only the follwing key codes are taken into account\n\t\t * - 48-90 (letters and regular numbers)\n\t\t * - 96-105 (numeric keypad numbers)\n\t\t * - 106-111 (numeric keypad operations)\n\t\t * \n\t\t * All other keys will yield empty strings!\n\t\t * \n\t\t * The above keycodes will be decoded using the KeyboardEvent.key property on modern\n\t\t * browsers. On older browsers the method will fall back to String.fromCharCode()\n\t\t * putting the result to upper/lower case depending on KeyboardEvent.shiftKey if\n\t\t * it is set.\n\t\t * \n\t\t * @param KeyboardEvent oEvent\n\t\t * @return string\n\t\t */\n\t\tdecodeKeyEvent : function (oEvent) {\n\t\t\tvar iCode = this._getNormalizedKeyNum(oEvent);\n\t\t\tswitch (true) {\n\t\t\t\tcase iCode >= 48 && iCode <= 90: // numbers and letters\n\t\t\t\tcase iCode >= 106 && iCode <= 111: // operations on numeric keypad (+, -, etc.)\n\t\t\t\t\tif (oEvent.key !== undefined && oEvent.key !== '') {\n\t\t\t\t\t\treturn oEvent.key;\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\tvar sDecoded = String.fromCharCode(iCode);\n\t\t\t\t\tswitch (oEvent.shiftKey) {\n\t\t\t\t\t\tcase false: sDecoded = sDecoded.toLowerCase(); break;\n\t\t\t\t\t\tcase true: sDecoded = sDecoded.toUpperCase(); break;\n\t\t\t\t\t}\n\t\t\t\t\treturn sDecoded;\n\t\t\t\tcase iCode >= 96 && iCode <= 105: // numbers on numeric keypad\n\t\t\t\t\treturn 0+(iCode-96);\n\t\t\t}\n\t\t\treturn '';\n\t\t},\n\t\t\n\t\t/**\n\t\t * Simulates a scan of the provided code.\n\t *\n\t\t * The scan code can be defined as\n\t\t * - a string - in this case no keyCode decoding is done and the code is merely validated\n\t\t * against constraints like minLenght, etc.\n\t\t * - an array of keyCodes (e.g. `[70,71,80]`) - will produce `keydown` events with corresponding\n\t\t * `keyCode` properties. NOTE: these events will have empty `key` properties, so decoding may\n\t\t * yield different results than with native events.\n\t\t * - an array of objects (e.g. `[{keyCode: 70, key: \"F\", shiftKey: true}, {keyCode: 71, key: \"g\"}]`) -\n\t\t * this way almost any event can be simulated, but it's a lot of work to do.\n\t\t *\n\t\t * @param DomElement oDomElement\n\t\t * @param string|array mStringOrArray\n\t\t * @return self\n\t\t */\n\t\tsimulate: function(oDomElement, mStringOrArray){\n\t\t\tthis._reinitialize(oDomElement);\n\t\t\tif (Array.isArray(mStringOrArray)){\n\t\t\t\tmStringOrArray.forEach(function(mKey){\n\t\t\t\t\tvar oEventProps = {};\n\t\t\t\t\tif( (typeof mKey === \"object\" || typeof mKey === 'function') && (mKey !== null) ) {\n\t\t\t\t\t\toEventProps = mKey;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toEventProps.keyCode = parseInt(mKey);\n\t\t\t\t\t}\n\t\t\t\t\tvar oEvent = new KeyboardEvent('keydown', oEventProps);\n\t\t\t\t\tdocument.dispatchEvent(oEvent);\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tthis._validateScanCode(oDomElement, mStringOrArray);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * @private\n\t\t * @param DomElement oDomElement\n\t\t * @return void\n\t\t */\n\t\t_reinitialize: function(oDomElement){\n\t\t\tvar oVars = oDomElement.scannerDetectionData.vars;\n\t\t\toVars.firstCharTime = 0;\n\t\t\toVars.lastCharTime = 0;\n\t\t\toVars.accumulatedString = '';\n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * @private\n\t\t * @param DomElement oDomElement\n\t * @return boolean\n\t\t */\n\t\t_isFocusOnIgnoredElement: function(oDomElement){\n\t\t\t\n\t\t\tvar ignoreSelectors = oDomElement.scannerDetectionData.options.ignoreIfFocusOn;\n\t\n\t if(!ignoreSelectors){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\n\t\t\tvar oFocused = document.activeElement;\n\t\t\t\n\t\t\t// checks if ignored element is an array, and if so it checks if one of the elements of it is an active one\n\t\t\tif (Array.isArray(ignoreSelectors)){\n\t\t\t\tfor(var i=0; i<ignoreSelectors.length; i++){\n\t\t\t\t\tif(oFocused.matches(ignoreSelectors[i]) === true){\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// if the option consists of an single element, it only checks this one\n\t\t\t} else if (oFocused.matches(ignoreSelectors)){\n\t\t\t\treturn true;\t\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t// if the active element is not listed in the ignoreIfFocusOn option, return false\n\t\t return false;\n\t },\n\t\t\n\t /**\n\t * Validates the scan code accumulated by the given DOM element and fires the respective events.\n\t * \n\t * @private\n\t * @param DomElement oDomElement\n\t * @return boolean\n\t */\n\t\t_validateScanCode: function(oDomElement, sScanCode){\n\t\t\tvar oScannerData = oDomElement.scannerDetectionData;\t\t\t\n\t\t\tvar oOptions = oScannerData.options;\n\t\t\tvar iSingleScanQty = oScannerData.options.singleScanQty;\n\t\t\tvar iFirstCharTime = oScannerData.vars.firstCharTime;\n\t\t\tvar iLastCharTime = oScannerData.vars.lastCharTime;\n\t\t\tvar oScanError = {};\n\t var oEvent;\n\t \n\t\t\tswitch(true){\n\t\t\t\t\n\t\t\t\t// detect codes that are too short\n\t\t\t\tcase (sScanCode.length < oOptions.minLength):\n\t\t\t\t\toScanError = {\n\t\t\t\t\t\tmessage: \"Receieved code is shorter then minimal length\"\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t// detect codes that were entered too slow\t\n\t\t\t\tcase ((iLastCharTime - iFirstCharTime) > (sScanCode.length * oOptions.avgTimeByChar)):\n\t\t\t\t\toScanError = {\n\t\t\t\t\t\tmessage: \"Receieved code was not entered in time\"\n\t\t\t\t\t};\t\t\t\t\n\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t// if a code was not filtered out earlier it is valid\t\n\t\t\t\tdefault:\n\t\t\t\t\toOptions.onScan.call(oDomElement, sScanCode, iSingleScanQty);\n\t\t\t\t\toEvent = new CustomEvent(\n\t\t\t\t\t\t'scan',\n\t\t\t\t\t\t{\t\n\t\t\t\t\t\t\tdetail: { \n\t\t\t\t\t\t\t\tscanCode: sScanCode,\n\t\t\t\t\t\t\t\tqty: iSingleScanQty\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\toDomElement.dispatchEvent(oEvent);\n\t\t\t\t\tonScan._reinitialize(oDomElement);\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\t// If an error occurred (otherwise the method would return earlier) create an object for errordetection\n\t\t\toScanError.scanCode = sScanCode;\n\t\t\toScanError.scanDuration = iLastCharTime - iFirstCharTime;\n\t\t\toScanError.avgTimeByChar = oOptions.avgTimeByChar;\n\t\t\toScanError.minLength = oOptions.minLength;\n\t\t\t\n\t\t\toOptions.onScanError.call(oDomElement, oScanError);\n\t\t\t\n\t\t\toEvent = new CustomEvent(\n\t\t\t\t'scanError', \n\t\t\t\t{detail: oScanError}\n\t\t\t);\n\t\t\toDomElement.dispatchEvent(oEvent);\n\t\t\t\n\t\t\tonScan._reinitialize(oDomElement);\n\t\t\treturn false;\n\t },\n\t\n\t /**\n\t * @private\n\t * @param Object oDefaults\n\t * @param Object oOptions\n\t * @return Object\n\t */\n\t\t_mergeOptions: function(oDefaults, oOptions){\n\t\t\tvar oExtended = {};\n\t\t\tvar prop;\n\t\t\tfor (prop in oDefaults){\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(oDefaults, prop)){\n\t\t\t\t\toExtended[prop] = oDefaults[prop];\n\t\t\t\t}\n\t\t\t}\t\t\t\n\t\t\tfor (prop in oOptions){\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(oOptions, prop)){\n\t\t\t\t\toExtended[prop] = oOptions[prop];\n\t\t\t\t}\n\t\t\t}\t\t\t\n\t\t\treturn oExtended;\n\t\t},\n\t\n\t\t/**\n\t\t * @private\n\t\t * @param KeyboardEvent e\n\t\t * @return int\n\t\t * @see https://www.w3schools.com/jsref/event_key_keycode.asp\n\t\t */\n\t\t_getNormalizedKeyNum: function(e){\n\t\t\treturn e.which || e.keyCode;\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * @private\n\t\t * @param KeyboardEvent e\n\t\t * @return void\n\t\t */\n\t\t_handleKeyDown: function(e){\n\t\t\tvar iKeyCode = onScan._getNormalizedKeyNum(e);\n\t\t\tvar oOptions = this.scannerDetectionData.options;\n\t\t\tvar oVars = this.scannerDetectionData.vars;\n\t\t\tvar bScanFinished = false;\n\t\t\t\n\t\t\tif (oOptions.onKeyDetect.call(this, iKeyCode, e) === false) {\n\t\t\t\treturn;\n\t\t\t}\t\t\n\t\t\t\n\t\t\tif (onScan._isFocusOnIgnoredElement(this)){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\t\t\t\n\t // If it's just the button of the scanner, ignore it and wait for the real input\n\t\t if(oOptions.scanButtonKeyCode !== false && iKeyCode==oOptions.scanButtonKeyCode) {\n\t\t\t\t\n\t\t\t\t// if the button was first pressed, start a timeout for the callback, which gets interrupted if the scanbutton gets released\n\t\t\t\tif (!oVars.longPressed){\n\t\t\t\t\toVars.longPressTimer = setTimeout( oOptions.onScanButtonLongPress, oOptions.scanButtonLongPressTime, this);\n\t\t\t\t\toVars.longPressed = true;\n\t\t\t\t}\n\t\n\t\t\t\treturn;\n\t }\n\t\t\t\n\t\t\tswitch(true){\n\t\t\t\t// If it's not the first character and we encounter a terminating character, trigger scan process\n\t\t\t\tcase (oVars.firstCharTime && oOptions.suffixKeyCodes.indexOf(iKeyCode)!==-1):\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\tbScanFinished=true;\n\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t// If it's the first character and we encountered one of the starting characters, don't process the scan\t\n\t\t\t\tcase (!oVars.firstCharTime && oOptions.prefixKeyCodes.indexOf(iKeyCode)!==-1):\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\tbScanFinished=false;\n\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t// Otherwise, just add the character to the scan string we're building\t\n\t\t\t\tdefault:\n\t\t\t\t\tvar character = oOptions.keyCodeMapper.call(this, e);\n\t\t\t\t\tif (character === null){\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\toVars.accumulatedString += character;\n\t\t\t\t\t\n\t\t\t\t\tif (oOptions.preventDefault) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tif (oOptions.stopPropagation) {\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tbScanFinished=false;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t \n\t\t\tif(!oVars.firstCharTime){\n\t\t\t\toVars.firstCharTime=Date.now();\n\t\t\t}\n\t\t\t\n\t\t\toVars.lastCharTime=Date.now();\n\t\n\t\t\tif(oVars.testTimer){ \n\t\t\t\tclearTimeout(oVars.testTimer);\n\t\t\t}\n\t\t\t\n\t\t\tif(bScanFinished){\n\t\t\t\tonScan._validateScanCode(this, oVars.accumulatedString);\n\t\t\t\toVars.testTimer=false;\n\t\t\t} else {\n\t\t\t\toVars.testTimer=setTimeout(onScan._validateScanCode, oOptions.timeBeforeScanTest, this, oVars.accumulatedString);\n\t\t\t}\n\t\n\t\t\toOptions.onKeyProcess.call(this, character, e);\n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * @private\n\t\t * @param Event e\n\t\t * @return void\n\t\t */\n\t\t_handlePaste: function(e){\n\t\n\t\t\tvar oOptions = this.scannerDetectionData.options;\n\t\t\tvar oVars = this.scannerDetectionData.vars;\n\t\t\tvar sPasteString = (event.clipboardData || window.clipboardData).getData('text');\n\t\t\t\n\t\t\t// if the focus is on an ignored element, abort\n\t\t\tif (onScan._isFocusOnIgnoredElement(this)){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\te.preventDefault();\n\n\t\t\tif (oOptions.stopPropagation) {\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t\toOptions.onPaste.call(this, sPasteString, event);\n\t\t\t\n\t\t\toVars.firstCharTime = 0;\n\t\t\toVars.lastCharTime = 0;\n\t\t\t\n\t\t\t// validate the string\n\t\t\tonScan._validateScanCode(this, sPasteString);\n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * @private\n\t\t * @param KeyboardEvent e\n\t\t * @return void\n\t\t */\n\t\t_handleKeyUp: function(e){\n\t\t\t// if the focus is on an ignored element, abort\n\t\t\tif (onScan._isFocusOnIgnoredElement(this)){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar iKeyCode = onScan._getNormalizedKeyNum(e);\n\t\t\t\n\t\t\t// if hardware key is not being pressed anymore stop the timeout and reset\n\t\t\tif (iKeyCode == this.scannerDetectionData.options.scanButtonKeyCode){\n\t\t\t\tclearTimeout(this.scannerDetectionData.vars.longPressTimer);\n\t\t\t\tthis.scannerDetectionData.vars.longPressed = false;\n\t\t\t}\n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Returns TRUE the scanner is currently in the middle of a scan sequence.\n\t\t * \n\t\t * @param DomElement\n\t\t * @return boolean\n\t\t */\n\t\tisScanInProgressFor: function(oDomElement) {\n\t\t\treturn oDomElement.scannerDetectionData.vars.firstCharTime > 0;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Returns TRUE if onScan is attached to the given DOM element and FALSE otherwise.\n\t\t * \n\t\t * @param DomElement\n\t\t * @return boolean\n\t\t */\n\t\tisAttachedTo: function(oDomElement) {\n\t\t\treturn (oDomElement.scannerDetectionData !== undefined);\n\t\t}\n\t};\n\t\n\treturn onScan;\n})));","<template>\n\t<div id=\"scan_input\"></div>\n</template>\n\n<script setup lang=\"ts\">\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\nimport onScan from 'onscan.js'\nimport { onMounted, onUnmounted } from 'vue'\n\nconst emit = defineEmits<{ scanInstance: [instance: onScan] }>()\nconst props = defineProps<{\n\tscanHandler: (barcode: string, qty: number) => void\n}>()\n\nonMounted(() => {\n\tconst instance = onScan.attachTo(window, { onScan: props.scanHandler })\n\temit('scanInstance', instance)\n})\n\nonUnmounted(() => {\n\tonScan.detachFrom(window)\n})\n</script>\n","<template>\n\t<h1 class=\"beam_header\">\n\t\t<slot></slot>\n\t</h1>\n</template>\n","<template>\n\t<button class=\"beam_btn\">\n\t\t<slot>Action</slot>\n\t</button>\n</template>\n<script setup lang=\"ts\"></script>\n","<template>\n\t<p class=\"beam_metadata_heading\">\n\t\t{{ label }}: <span :class=\"{ 'beam--alert': !complete }\" class=\"beam--normal\">{{ statusMessage }}</span>\n\t</p>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nconst props = defineProps({\n\tlabel: {\n\t\ttype: String,\n\t\tdefault: 'Status',\n\t},\n\tprogressMessage: {\n\t\ttype: String,\n\t\tdefault: 'In Progress',\n\t},\n\tcompleteMessage: {\n\t\ttype: String,\n\t\tdefault: 'Complete',\n\t},\n\tcomplete: Boolean,\n})\n\nconst statusMessage = computed(() => {\n\treturn props.complete ? props.completeMessage : props.progressMessage\n})\n</script>\n","import { App } from 'vue'\n\nimport ActionFooter from '@/components/ActionFooter.vue'\nimport BeamMetadata from './components/BeamMetadata.vue'\nimport BeamModal from '@/components/BeamModal.vue'\nimport BeamModalOutlet from '@/components/BeamModalOutlet.vue'\nimport Confirm from '@/components/Confirm.vue'\nimport ItemCheck from '@/components/ItemCheck.vue'\nimport ItemCount from '@/components/ItemCount.vue'\nimport ListAnchor from '@/components/ListAnchor.vue'\nimport ListItem from '@/components/ListItem.vue'\nimport ListView from '@/components/ListView.vue'\nimport Navbar from '@/components/Navbar.vue'\nimport ScanInput from '@/components/ScanInput.vue'\nimport SplitColumn from './components/SplitColumn.vue'\nimport BeamHeading from './components/BeamHeading.vue'\nimport BeamArrow from './components/BeamArrow.vue'\nimport BeamBtn from './components/BeamBtn.vue'\nimport BeamProgress from './components/BeamProgress.vue'\nimport 'themes/beam.css'\n\n/**\n * Install all Beam components\n * @param app - Vue app instance\n * @public\n */\nfunction install(app: App /* options */) {\n\tapp.component('ActionFooter', ActionFooter)\n\tapp.component('BeamMetadata', BeamMetadata)\n\tapp.component('BeamModal', BeamModal)\n\tapp.component('BeamModalOutlet', BeamModalOutlet)\n\tapp.component('Confirm', Confirm)\n\tapp.component('ItemCheck', ItemCheck)\n\tapp.component('ItemCount', ItemCount)\n\tapp.component('ListAnchor', ListAnchor)\n\tapp.component('ListItem', ListItem)\n\tapp.component('ListView', ListView)\n\tapp.component('Navbar', Navbar)\n\tapp.component('ScanInput', ScanInput)\n\tapp.component('SplitColumn', SplitColumn)\n\tapp.component('BeamHeading', BeamHeading)\n\tapp.component('BeamArrow', BeamArrow)\n\tapp.component('BeamBtn', BeamBtn)\n\tapp.component('BeamProgress', BeamProgress)\n}\n\nexport {\n\tActionFooter,\n\tBeamMetadata,\n\tBeamModal,\n\tBeamModalOutlet,\n\tConfirm,\n\tItemCheck,\n\tItemCount,\n\tListAnchor,\n\tListItem,\n\tListView,\n\tNavbar,\n\tScanInput,\n\tinstall,\n}\n"],"names":["emit","__emit","handleFooterAction","_sfc_render","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","$event","value","_useModel","__props","count","isCountComplete","computed","handleInput","event","newValue","listItem","ref","onMounted","handleScroll","onUnmounted","scrollHeightDifference","scrollposition","handlePrimaryAction","global","factory","module","this","onScan","oDomElement","oOptions","oDefaults","sScanned","iQty","oDebug","sChar","oEvent","iKeyCode","sPasted","iCode","sDecoded","mStringOrArray","mKey","oEventProps","oVars","ignoreSelectors","oFocused","i","sScanCode","oScannerData","iSingleScanQty","iFirstCharTime","iLastCharTime","oScanError","oExtended","prop","bScanFinished","character","sPasteString","props","instance","_hoisted_1","_renderSlot","statusMessage","install","app","ActionFooter","BeamMetadata","BeamModal","BeamModalOutlet","Confirm","ItemCheck","ItemCount","ListAnchor","ListItem","ListView","Navbar","ScanInput","SplitColumn","BeamHeading","BeamArrow","BeamBtn","BeamProgress"],"mappings":"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","x_google_ignoreList":[7]}
|
|
1
|
+
{"version":3,"file":"beam.js","sources":["../src/components/ActionFooter.vue","../src/components/Confirm.vue","../src/components/ItemCheck.vue","../src/components/ItemCount.vue","../src/components/ListItem.vue","../src/components/ListView.vue","../src/components/Navbar.vue","../../common/temp/node_modules/.pnpm/onscan.js@1.5.2/node_modules/onscan.js/onscan.js","../src/components/ScanInput.vue","../src/components/BeamHeading.vue","../src/components/BeamBtn.vue","../src/components/BeamProgress.vue","../src/index.ts"],"sourcesContent":["<template>\n\t<footer class=\"beam_action-footer\">\n\t\t<span class=\"footer-action-wrapper\">\n\t\t\t<button class=\"beam_btn\" @click=\"handleFooterAction\">\n\t\t\t\t<slot />\n\t\t\t</button>\n\t\t</span>\n\t</footer>\n</template>\n\n<script setup lang=\"ts\">\nconst emit = defineEmits<{ click: [] }>()\n\nconst handleFooterAction = () => {\n\temit('click')\n}\n</script>\n","<template>\n\t<div class=\"beam_modal-confirm\">\n\t\t<h2>Would you like to continue?</h2>\n\t\t<button class=\"beam_btn\" @click=\"$emit('confirmmodal')\">Yes</button>\n\t\t<button class=\"beam_btn\" @click=\"$emit('closemodal')\">No</button>\n\t</div>\n</template>\n","<template>\n\t<label class=\"container\">\n\t\t<input type=\"checkbox\" v-model=\"value\" tabindex=\"-1\" />\n\t\t<div class=\"checkmark\" tabindex=\"0\"></div>\n\t</label>\n</template>\n\n<script setup lang=\"ts\">\nconst value = defineModel<boolean>({ default: false })\n</script>\n\n<style scoped>\n.container {\n\tdisplay: block;\n\tposition: relative;\n\tpadding-left: 2.5ch;\n\tmargin: 0;\n\tmargin-top: 0.5rem;\n\tcursor: pointer;\n\tfont-size: 2rem;\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\n/* hide default checkbox */\n.container input {\n\tposition: absolute;\n\topacity: 0;\n\tcursor: pointer;\n\theight: 0;\n\twidth: 0;\n}\n\n.checkmark {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\theight: 2rem;\n\twidth: 2rem;\n\tbackground-color: #eee;\n\toutline: 2px solid transparent;\n\tborder: 1px solid var(--highlight);\n}\n\n.container:hover input ~ .checkmark {\n\tbackground-color: white;\n}\n\n.container input:checked ~ .checkmark {\n\tbackground-color: var(--brand-secondary);\n}\n\n.checkmark:after {\n\tcontent: '';\n\tposition: absolute;\n\tdisplay: none;\n}\n\n.container input:checked ~ .checkmark:after {\n\tdisplay: block;\n}\n\n.container .checkmark:after {\n\tleft: 25%;\n\ttop: 50%;\n\twidth: 0.5rem;\n\theight: 1rem;\n\tborder: solid var(--text-color);\n\tborder-width: 0 3px 3px 0;\n\t-webkit-transform: rotate(45deg);\n\t-ms-transform: rotate(45deg);\n\ttransform: rotate(45deg) translate(-50%, -50%);\n}\n</style>\n","<template>\n\t<div class=\"beam_item-count\">\n\t\t<span\n\t\t\t:contenteditable=\"editable\"\n\t\t\t:class=\"{ 'beam--alert': !isCountComplete }\"\n\t\t\t@input=\"handleInput\"\n\t\t\t@click=\"handleInput\">\n\t\t\t{{ count }}\n\t\t</span>\n\t\t<span>/{{ denominator }}</span>\n\t\t<span v-if=\"uom\"> {{ uom }}</span>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nconst count = defineModel<number>({ required: true })\nconst {\n\tdenominator,\n\tuom = '',\n\teditable = true,\n} = defineProps<{\n\tdenominator: number\n\tuom?: string\n\teditable?: boolean\n}>()\n\nconst isCountComplete = computed(() => count.value === denominator)\n\nconst handleInput = (event: InputEvent | MouseEvent) => {\n\tevent.preventDefault()\n\tevent.stopPropagation()\n\tconst newValue = Number((event.target as HTMLElement).innerHTML) || 0\n\tcount.value = Math.min(newValue, denominator)\n}\n</script>\n","<template>\n\t<li tabindex=\"0\" class=\"beam_list-item\">\n\t\t<div class=\"beam_list-text\">\n\t\t\t<label class=\"beam--bold\">{{ listItem.label }}</label>\n\t\t\t<p>{{ listItem.description }}</p>\n\t\t</div>\n\n\t\t<ItemCount\n\t\t\tv-if=\"listItem.count\"\n\t\t\tv-model=\"listItem.count.count\"\n\t\t\t:denominator=\"listItem.count.of\"\n\t\t\t:uom=\"listItem.count.uom\"\n\t\t\t:editable=\"true\" />\n\t\t<ItemCheck v-if=\"listItem.hasOwnProperty('checked')\" v-model=\"listItem.checked\" />\n\t</li>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\n\nimport ItemCount from '@/components/ItemCount.vue'\nimport ItemCheck from '@/components/ItemCheck.vue'\n\nconst { item } = defineProps<{\n\titem: {\n\t\tlabel: string\n\t\tdescription: string\n\t\tcount?: {\n\t\t\tcount: number\n\t\t\tof: number\n\t\t\tuom: string\n\t\t}\n\t\tchecked?: boolean\n\t}\n}>()\n\nconst listItem = ref(item)\n</script>\n","<template>\n\t<ul class=\"beam_list-view\">\n\t\t<li v-for=\"item in items\" :key=\"item.label\">\n\t\t\t<template v-if=\"item.linkComponent\">\n\t\t\t\t<component :is=\"item.linkComponent\" :to=\"item.route\" tabindex=\"-1\">\n\t\t\t\t\t<ListItem :item=\"item\"></ListItem>\n\t\t\t\t</component>\n\t\t\t</template>\n\t\t\t<template v-else>\n\t\t\t\t<ListItem :item=\"item\"></ListItem>\n\t\t\t</template>\n\t\t</li>\n\t</ul>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, onUnmounted } from 'vue'\n\nimport ListItem from '@/components/ListItem.vue'\n\ndefineProps<{\n\titems: {\n\t\tlabel: string\n\t\tdescription: string\n\t\tcount?: {\n\t\t\tcount: number\n\t\t\tof: number\n\t\t\tuom: string\n\t\t}\n\t\tchecked?: boolean\n\t\tlinkComponent?: string\n\t\troute?: string\n\t}[]\n}>()\n\nconst emit = defineEmits<{ scrollbottom: [] }>()\n\nonMounted(() => {\n\twindow.addEventListener('scroll', handleScroll)\n})\n\nonUnmounted(() => {\n\twindow.removeEventListener('scroll', handleScroll)\n})\n\nconst handleScroll = () => {\n\tconst scrollHeightDifference = document.documentElement.scrollHeight - window.innerHeight\n\tconst scrollposition = document.documentElement.scrollTop\n\tif (scrollHeightDifference - scrollposition <= 2) {\n\t\temit('scrollbottom')\n\t}\n}\n</script>\n","<template>\n\t<nav class=\"beam_navbar\">\n\t\t<slot name=\"title\">\n\t\t\t<BeamHeading>TITLE</BeamHeading>\n\t\t</slot>\n\t\t<button class=\"navbar-action beam_btn\" @click=\"handlePrimaryAction\">\n\t\t\t<slot name=\"navbaraction\">Action</slot>\n\t\t</button>\n\t</nav>\n</template>\n\n<script setup lang=\"ts\">\nconst emit = defineEmits<{ click: [] }>()\n\nconst handlePrimaryAction = () => {\n\temit('click')\n}\n</script>\n","/*\n * onScan.js - scan-events for hardware barcodes scanners in javascript\n */\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory()) :\n global.onScan = factory()\n}(this, (function () {\n\tvar onScan = {\t\n\t\t\n\t\t/**\n\t\t * \n\t\t * @param DomElement oDomElement\n\t\t * @param Object oOptions\n\t\t * @return self\n\t\t */\n\t\tattachTo: function(oDomElement, oOptions) {\n\t\n\t\t\tif(oDomElement.scannerDetectionData !== undefined){\n\t\t\t\tthrow new Error(\"onScan.js is already initialized for DOM element \" + oDomElement);\n\t\t\t}\n\t\n\t\t\tvar oDefaults = {\n\t\t\t\tonScan: function(sScanned, iQty){}, // Callback after detection of a successfull scanning: function(){sScancode, iCount)}()\n\t\t\t\tonScanError: function(oDebug){}, // Callback after detection of a unsuccessfull scanning (scanned string in parameter)\n\t\t\t\tonKeyProcess: function(sChar, oEvent){}, // Callback after receiving and processing a char (scanned char in parameter)\n\t\t\t\tonKeyDetect: function(iKeyCode, oEvent){}, // Callback after detecting a keyDown (key char in parameter) - in contrast to onKeyProcess, this fires for non-character keys like tab, arrows, etc. too!\n\t\t\t\tonPaste: function(sPasted, oEvent){}, // Callback after receiving a value on paste, no matter if it is a valid code or not\n\t\t\t\tkeyCodeMapper: function(oEvent) {return onScan.decodeKeyEvent(oEvent)}, // Custom function to decode a keydown event into a character. Must return decoded character or NULL if the given event should not be processed.\n\t\t\t\tonScanButtonLongPress: function(){}, // Callback after detection of a successfull scan while the scan button was pressed and held down\n\t\t\t\tscanButtonKeyCode:false, // Key code of the scanner hardware button (if the scanner button a acts as a key itself) \n\t\t\t\tscanButtonLongPressTime:500, // How long (ms) the hardware button should be pressed, until a callback gets executed\n\t\t\t\ttimeBeforeScanTest:100, // Wait duration (ms) after keypress event to check if scanning is finished\n\t\t\t\tavgTimeByChar:30, // Average time (ms) between 2 chars. Used to do difference between keyboard typing and scanning\n\t\t\t\tminLength:6, // Minimum length for a scanning\n\t\t\t\tsuffixKeyCodes:[9,13], // Chars to remove and means end of scanning\n\t\t\t\tprefixKeyCodes:[], // Chars to remove and means start of scanning\n\t\t\t\tignoreIfFocusOn:false, // do not handle scans if the currently focused element matches this selector or object\n\t\t\t\tstopPropagation:false, // Stop immediate propagation on keypress event\n\t\t\t\tpreventDefault:false, // Prevent default action on keypress event\n\t\t\t\tcaptureEvents:false, // Get the events before any listeners deeper in the DOM\n\t\t\t\treactToKeydown:true, // look for scan input in keyboard events\n\t\t\t\treactToPaste:false, // look for scan input in paste events\n\t\t\t\tsingleScanQty: 1, // Quantity of Items put out to onScan in a single scan\n\t\t\t}\n\t\t\t\t\t\t\t\t\t\n\t\t\toOptions = this._mergeOptions(oDefaults, oOptions);\n\t\n\t\t\t// initializing options and variables on DomElement\n\t\t\toDomElement.scannerDetectionData = {\n\t\t\t\t\toptions: oOptions,\n\t\t\t\t\tvars:{\n\t\t\t\t\t\tfirstCharTime: 0,\n\t\t\t\t\t\tlastCharTime: 0,\n\t\t\t\t\t\taccumulatedString: '',\n\t\t\t\t\t\ttestTimer: false,\n\t\t\t\t\t\tlongPressTimeStart: 0,\n\t\t\t\t\t\tlongPressed: false\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t};\n\t\t\t\n\t\t\t// initializing handlers (based on settings)\n\t\t\tif (oOptions.reactToPaste === true){\n\t\t\t\toDomElement.addEventListener(\"paste\", this._handlePaste, oOptions.captureEvents);\n\t\t\t}\n\t\t\tif (oOptions.scanButtonKeyCode !== false){\n\t\t\t\toDomElement.addEventListener(\"keyup\", this._handleKeyUp, oOptions.captureEvents);\n\t\t\t}\n\t\t\tif (oOptions.reactToKeydown === true || oOptions.scanButtonKeyCode !== false){\t\n\t\t\t\toDomElement.addEventListener(\"keydown\", this._handleKeyDown, oOptions.captureEvents);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * \n\t\t * @param DomElement oDomElement\n\t\t * @return void\n\t\t */\n\t\tdetachFrom: function(oDomElement) {\n\t\t\t// detaching all used events\n\t\t\tif (oDomElement.scannerDetectionData.options.reactToPaste){\n\t\t\t\toDomElement.removeEventListener(\"paste\", this._handlePaste);\n\t\t\t}\n\t\t\tif (oDomElement.scannerDetectionData.options.scanButtonKeyCode !== false){\n\t\t\t\toDomElement.removeEventListener(\"keyup\", this._handleKeyUp);\n\t\t\t}\n\t\t\toDomElement.removeEventListener(\"keydown\", this._handleKeyDown);\n\t\t\t\n\t\t\t// clearing data off DomElement\n\t\t\toDomElement.scannerDetectionData = undefined; \n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * \n\t\t * @param DomElement oDomElement\n\t\t * @return Object\n\t\t */\n\t\tgetOptions: function(oDomElement){\n\t\t\treturn oDomElement.scannerDetectionData.options;\t\t\t\n\t\t},\n\t\n\t\t/**\n\t\t * \n\t\t * @param DomElement oDomElement\n\t\t * @param Object oOptions\n\t\t * @return self\n\t\t */\n\t\tsetOptions: function(oDomElement, oOptions){\n\t\t\t// check if some handlers need to be changed based on possible option changes\n\t\t\tswitch (oDomElement.scannerDetectionData.options.reactToPaste){\n\t\t\t\tcase true: \n\t\t\t\t\tif (oOptions.reactToPaste === false){\n\t\t\t\t\t\toDomElement.removeEventListener(\"paste\", this._handlePaste);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase false:\n\t\t\t\t\tif (oOptions.reactToPaste === true){\n\t\t\t\t\t\toDomElement.addEventListener(\"paste\", this._handlePaste);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tswitch (oDomElement.scannerDetectionData.options.scanButtonKeyCode){\n\t\t\t\tcase false:\n\t\t\t\t\tif (oOptions.scanButtonKeyCode !== false){\n\t\t\t\t\t\toDomElement.addEventListener(\"keyup\", this._handleKeyUp);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: \n\t\t\t\t\tif (oOptions.scanButtonKeyCode === false){\n\t\t\t\t\t\toDomElement.removeEventListener(\"keyup\", this._handleKeyUp);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\t// merge old and new options\n\t\t\toDomElement.scannerDetectionData.options = this._mergeOptions(oDomElement.scannerDetectionData.options, oOptions);\n\t\t\n\t\t\t// reinitiallize\n\t\t\tthis._reinitialize(oDomElement);\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Transforms key codes into characters.\n\t\t * \n\t\t * By default, only the follwing key codes are taken into account\n\t\t * - 48-90 (letters and regular numbers)\n\t\t * - 96-105 (numeric keypad numbers)\n\t\t * - 106-111 (numeric keypad operations)\n\t\t * \n\t\t * All other keys will yield empty strings!\n\t\t * \n\t\t * The above keycodes will be decoded using the KeyboardEvent.key property on modern\n\t\t * browsers. On older browsers the method will fall back to String.fromCharCode()\n\t\t * putting the result to upper/lower case depending on KeyboardEvent.shiftKey if\n\t\t * it is set.\n\t\t * \n\t\t * @param KeyboardEvent oEvent\n\t\t * @return string\n\t\t */\n\t\tdecodeKeyEvent : function (oEvent) {\n\t\t\tvar iCode = this._getNormalizedKeyNum(oEvent);\n\t\t\tswitch (true) {\n\t\t\t\tcase iCode >= 48 && iCode <= 90: // numbers and letters\n\t\t\t\tcase iCode >= 106 && iCode <= 111: // operations on numeric keypad (+, -, etc.)\n\t\t\t\t\tif (oEvent.key !== undefined && oEvent.key !== '') {\n\t\t\t\t\t\treturn oEvent.key;\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\tvar sDecoded = String.fromCharCode(iCode);\n\t\t\t\t\tswitch (oEvent.shiftKey) {\n\t\t\t\t\t\tcase false: sDecoded = sDecoded.toLowerCase(); break;\n\t\t\t\t\t\tcase true: sDecoded = sDecoded.toUpperCase(); break;\n\t\t\t\t\t}\n\t\t\t\t\treturn sDecoded;\n\t\t\t\tcase iCode >= 96 && iCode <= 105: // numbers on numeric keypad\n\t\t\t\t\treturn 0+(iCode-96);\n\t\t\t}\n\t\t\treturn '';\n\t\t},\n\t\t\n\t\t/**\n\t\t * Simulates a scan of the provided code.\n\t *\n\t\t * The scan code can be defined as\n\t\t * - a string - in this case no keyCode decoding is done and the code is merely validated\n\t\t * against constraints like minLenght, etc.\n\t\t * - an array of keyCodes (e.g. `[70,71,80]`) - will produce `keydown` events with corresponding\n\t\t * `keyCode` properties. NOTE: these events will have empty `key` properties, so decoding may\n\t\t * yield different results than with native events.\n\t\t * - an array of objects (e.g. `[{keyCode: 70, key: \"F\", shiftKey: true}, {keyCode: 71, key: \"g\"}]`) -\n\t\t * this way almost any event can be simulated, but it's a lot of work to do.\n\t\t *\n\t\t * @param DomElement oDomElement\n\t\t * @param string|array mStringOrArray\n\t\t * @return self\n\t\t */\n\t\tsimulate: function(oDomElement, mStringOrArray){\n\t\t\tthis._reinitialize(oDomElement);\n\t\t\tif (Array.isArray(mStringOrArray)){\n\t\t\t\tmStringOrArray.forEach(function(mKey){\n\t\t\t\t\tvar oEventProps = {};\n\t\t\t\t\tif( (typeof mKey === \"object\" || typeof mKey === 'function') && (mKey !== null) ) {\n\t\t\t\t\t\toEventProps = mKey;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toEventProps.keyCode = parseInt(mKey);\n\t\t\t\t\t}\n\t\t\t\t\tvar oEvent = new KeyboardEvent('keydown', oEventProps);\n\t\t\t\t\tdocument.dispatchEvent(oEvent);\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tthis._validateScanCode(oDomElement, mStringOrArray);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * @private\n\t\t * @param DomElement oDomElement\n\t\t * @return void\n\t\t */\n\t\t_reinitialize: function(oDomElement){\n\t\t\tvar oVars = oDomElement.scannerDetectionData.vars;\n\t\t\toVars.firstCharTime = 0;\n\t\t\toVars.lastCharTime = 0;\n\t\t\toVars.accumulatedString = '';\n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * @private\n\t\t * @param DomElement oDomElement\n\t * @return boolean\n\t\t */\n\t\t_isFocusOnIgnoredElement: function(oDomElement){\n\t\t\t\n\t\t\tvar ignoreSelectors = oDomElement.scannerDetectionData.options.ignoreIfFocusOn;\n\t\n\t if(!ignoreSelectors){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\n\t\t\tvar oFocused = document.activeElement;\n\t\t\t\n\t\t\t// checks if ignored element is an array, and if so it checks if one of the elements of it is an active one\n\t\t\tif (Array.isArray(ignoreSelectors)){\n\t\t\t\tfor(var i=0; i<ignoreSelectors.length; i++){\n\t\t\t\t\tif(oFocused.matches(ignoreSelectors[i]) === true){\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// if the option consists of an single element, it only checks this one\n\t\t\t} else if (oFocused.matches(ignoreSelectors)){\n\t\t\t\treturn true;\t\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t// if the active element is not listed in the ignoreIfFocusOn option, return false\n\t\t return false;\n\t },\n\t\t\n\t /**\n\t * Validates the scan code accumulated by the given DOM element and fires the respective events.\n\t * \n\t * @private\n\t * @param DomElement oDomElement\n\t * @return boolean\n\t */\n\t\t_validateScanCode: function(oDomElement, sScanCode){\n\t\t\tvar oScannerData = oDomElement.scannerDetectionData;\t\t\t\n\t\t\tvar oOptions = oScannerData.options;\n\t\t\tvar iSingleScanQty = oScannerData.options.singleScanQty;\n\t\t\tvar iFirstCharTime = oScannerData.vars.firstCharTime;\n\t\t\tvar iLastCharTime = oScannerData.vars.lastCharTime;\n\t\t\tvar oScanError = {};\n\t var oEvent;\n\t \n\t\t\tswitch(true){\n\t\t\t\t\n\t\t\t\t// detect codes that are too short\n\t\t\t\tcase (sScanCode.length < oOptions.minLength):\n\t\t\t\t\toScanError = {\n\t\t\t\t\t\tmessage: \"Receieved code is shorter then minimal length\"\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t// detect codes that were entered too slow\t\n\t\t\t\tcase ((iLastCharTime - iFirstCharTime) > (sScanCode.length * oOptions.avgTimeByChar)):\n\t\t\t\t\toScanError = {\n\t\t\t\t\t\tmessage: \"Receieved code was not entered in time\"\n\t\t\t\t\t};\t\t\t\t\n\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t// if a code was not filtered out earlier it is valid\t\n\t\t\t\tdefault:\n\t\t\t\t\toOptions.onScan.call(oDomElement, sScanCode, iSingleScanQty);\n\t\t\t\t\toEvent = new CustomEvent(\n\t\t\t\t\t\t'scan',\n\t\t\t\t\t\t{\t\n\t\t\t\t\t\t\tdetail: { \n\t\t\t\t\t\t\t\tscanCode: sScanCode,\n\t\t\t\t\t\t\t\tqty: iSingleScanQty\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\toDomElement.dispatchEvent(oEvent);\n\t\t\t\t\tonScan._reinitialize(oDomElement);\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\t// If an error occurred (otherwise the method would return earlier) create an object for errordetection\n\t\t\toScanError.scanCode = sScanCode;\n\t\t\toScanError.scanDuration = iLastCharTime - iFirstCharTime;\n\t\t\toScanError.avgTimeByChar = oOptions.avgTimeByChar;\n\t\t\toScanError.minLength = oOptions.minLength;\n\t\t\t\n\t\t\toOptions.onScanError.call(oDomElement, oScanError);\n\t\t\t\n\t\t\toEvent = new CustomEvent(\n\t\t\t\t'scanError', \n\t\t\t\t{detail: oScanError}\n\t\t\t);\n\t\t\toDomElement.dispatchEvent(oEvent);\n\t\t\t\n\t\t\tonScan._reinitialize(oDomElement);\n\t\t\treturn false;\n\t },\n\t\n\t /**\n\t * @private\n\t * @param Object oDefaults\n\t * @param Object oOptions\n\t * @return Object\n\t */\n\t\t_mergeOptions: function(oDefaults, oOptions){\n\t\t\tvar oExtended = {};\n\t\t\tvar prop;\n\t\t\tfor (prop in oDefaults){\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(oDefaults, prop)){\n\t\t\t\t\toExtended[prop] = oDefaults[prop];\n\t\t\t\t}\n\t\t\t}\t\t\t\n\t\t\tfor (prop in oOptions){\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(oOptions, prop)){\n\t\t\t\t\toExtended[prop] = oOptions[prop];\n\t\t\t\t}\n\t\t\t}\t\t\t\n\t\t\treturn oExtended;\n\t\t},\n\t\n\t\t/**\n\t\t * @private\n\t\t * @param KeyboardEvent e\n\t\t * @return int\n\t\t * @see https://www.w3schools.com/jsref/event_key_keycode.asp\n\t\t */\n\t\t_getNormalizedKeyNum: function(e){\n\t\t\treturn e.which || e.keyCode;\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * @private\n\t\t * @param KeyboardEvent e\n\t\t * @return void\n\t\t */\n\t\t_handleKeyDown: function(e){\n\t\t\tvar iKeyCode = onScan._getNormalizedKeyNum(e);\n\t\t\tvar oOptions = this.scannerDetectionData.options;\n\t\t\tvar oVars = this.scannerDetectionData.vars;\n\t\t\tvar bScanFinished = false;\n\t\t\t\n\t\t\tif (oOptions.onKeyDetect.call(this, iKeyCode, e) === false) {\n\t\t\t\treturn;\n\t\t\t}\t\t\n\t\t\t\n\t\t\tif (onScan._isFocusOnIgnoredElement(this)){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\t\t\t\n\t // If it's just the button of the scanner, ignore it and wait for the real input\n\t\t if(oOptions.scanButtonKeyCode !== false && iKeyCode==oOptions.scanButtonKeyCode) {\n\t\t\t\t\n\t\t\t\t// if the button was first pressed, start a timeout for the callback, which gets interrupted if the scanbutton gets released\n\t\t\t\tif (!oVars.longPressed){\n\t\t\t\t\toVars.longPressTimer = setTimeout( oOptions.onScanButtonLongPress, oOptions.scanButtonLongPressTime, this);\n\t\t\t\t\toVars.longPressed = true;\n\t\t\t\t}\n\t\n\t\t\t\treturn;\n\t }\n\t\t\t\n\t\t\tswitch(true){\n\t\t\t\t// If it's not the first character and we encounter a terminating character, trigger scan process\n\t\t\t\tcase (oVars.firstCharTime && oOptions.suffixKeyCodes.indexOf(iKeyCode)!==-1):\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\tbScanFinished=true;\n\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t// If it's the first character and we encountered one of the starting characters, don't process the scan\t\n\t\t\t\tcase (!oVars.firstCharTime && oOptions.prefixKeyCodes.indexOf(iKeyCode)!==-1):\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\tbScanFinished=false;\n\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t// Otherwise, just add the character to the scan string we're building\t\n\t\t\t\tdefault:\n\t\t\t\t\tvar character = oOptions.keyCodeMapper.call(this, e);\n\t\t\t\t\tif (character === null){\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\toVars.accumulatedString += character;\n\t\t\t\t\t\n\t\t\t\t\tif (oOptions.preventDefault) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tif (oOptions.stopPropagation) {\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tbScanFinished=false;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t \n\t\t\tif(!oVars.firstCharTime){\n\t\t\t\toVars.firstCharTime=Date.now();\n\t\t\t}\n\t\t\t\n\t\t\toVars.lastCharTime=Date.now();\n\t\n\t\t\tif(oVars.testTimer){ \n\t\t\t\tclearTimeout(oVars.testTimer);\n\t\t\t}\n\t\t\t\n\t\t\tif(bScanFinished){\n\t\t\t\tonScan._validateScanCode(this, oVars.accumulatedString);\n\t\t\t\toVars.testTimer=false;\n\t\t\t} else {\n\t\t\t\toVars.testTimer=setTimeout(onScan._validateScanCode, oOptions.timeBeforeScanTest, this, oVars.accumulatedString);\n\t\t\t}\n\t\n\t\t\toOptions.onKeyProcess.call(this, character, e);\n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * @private\n\t\t * @param Event e\n\t\t * @return void\n\t\t */\n\t\t_handlePaste: function(e){\n\t\n\t\t\tvar oOptions = this.scannerDetectionData.options;\n\t\t\tvar oVars = this.scannerDetectionData.vars;\n\t\t\tvar sPasteString = (event.clipboardData || window.clipboardData).getData('text');\n\t\t\t\n\t\t\t// if the focus is on an ignored element, abort\n\t\t\tif (onScan._isFocusOnIgnoredElement(this)){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\te.preventDefault();\n\n\t\t\tif (oOptions.stopPropagation) {\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t\toOptions.onPaste.call(this, sPasteString, event);\n\t\t\t\n\t\t\toVars.firstCharTime = 0;\n\t\t\toVars.lastCharTime = 0;\n\t\t\t\n\t\t\t// validate the string\n\t\t\tonScan._validateScanCode(this, sPasteString);\n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * @private\n\t\t * @param KeyboardEvent e\n\t\t * @return void\n\t\t */\n\t\t_handleKeyUp: function(e){\n\t\t\t// if the focus is on an ignored element, abort\n\t\t\tif (onScan._isFocusOnIgnoredElement(this)){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar iKeyCode = onScan._getNormalizedKeyNum(e);\n\t\t\t\n\t\t\t// if hardware key is not being pressed anymore stop the timeout and reset\n\t\t\tif (iKeyCode == this.scannerDetectionData.options.scanButtonKeyCode){\n\t\t\t\tclearTimeout(this.scannerDetectionData.vars.longPressTimer);\n\t\t\t\tthis.scannerDetectionData.vars.longPressed = false;\n\t\t\t}\n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Returns TRUE the scanner is currently in the middle of a scan sequence.\n\t\t * \n\t\t * @param DomElement\n\t\t * @return boolean\n\t\t */\n\t\tisScanInProgressFor: function(oDomElement) {\n\t\t\treturn oDomElement.scannerDetectionData.vars.firstCharTime > 0;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Returns TRUE if onScan is attached to the given DOM element and FALSE otherwise.\n\t\t * \n\t\t * @param DomElement\n\t\t * @return boolean\n\t\t */\n\t\tisAttachedTo: function(oDomElement) {\n\t\t\treturn (oDomElement.scannerDetectionData !== undefined);\n\t\t}\n\t};\n\t\n\treturn onScan;\n})));","<template>\n\t<div id=\"scan_input\"></div>\n</template>\n\n<script setup lang=\"ts\">\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\nimport onScan from 'onscan.js'\nimport { onMounted, onUnmounted } from 'vue'\n\nconst emit = defineEmits<{ scanInstance: [instance: onScan] }>()\nconst props = defineProps<{\n\tscanHandler: (barcode: string, qty: number) => void\n}>()\n\nonMounted(() => {\n\tconst instance = onScan.attachTo(window, { onScan: props.scanHandler })\n\temit('scanInstance', instance)\n})\n\nonUnmounted(() => {\n\tonScan.detachFrom(window)\n})\n</script>\n","<template>\n\t<h1 class=\"beam_header\">\n\t\t<slot></slot>\n\t</h1>\n</template>\n","<template>\n\t<button class=\"beam_btn\">\n\t\t<slot>Action</slot>\n\t</button>\n</template>\n<script setup lang=\"ts\"></script>\n","<template>\n\t<p class=\"beam_metadata_heading\">\n\t\t{{ label }}: <span :class=\"{ 'beam--alert': !complete }\" class=\"beam--normal\">{{ statusMessage }}</span>\n\t</p>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nconst props = defineProps({\n\tlabel: {\n\t\ttype: String,\n\t\tdefault: 'Status',\n\t},\n\tprogressMessage: {\n\t\ttype: String,\n\t\tdefault: 'In Progress',\n\t},\n\tcompleteMessage: {\n\t\ttype: String,\n\t\tdefault: 'Complete',\n\t},\n\tcomplete: Boolean,\n})\n\nconst statusMessage = computed(() => {\n\treturn props.complete ? props.completeMessage : props.progressMessage\n})\n</script>\n","import { App } from 'vue'\n\nimport ActionFooter from '@/components/ActionFooter.vue'\nimport BeamMetadata from './components/BeamMetadata.vue'\nimport BeamModal from '@/components/BeamModal.vue'\nimport BeamModalOutlet from '@/components/BeamModalOutlet.vue'\nimport Confirm from '@/components/Confirm.vue'\nimport ItemCheck from '@/components/ItemCheck.vue'\nimport ItemCount from '@/components/ItemCount.vue'\nimport ListAnchor from '@/components/ListAnchor.vue'\nimport ListItem from '@/components/ListItem.vue'\nimport ListView from '@/components/ListView.vue'\nimport Navbar from '@/components/Navbar.vue'\nimport ScanInput from '@/components/ScanInput.vue'\nimport SplitColumn from './components/SplitColumn.vue'\nimport BeamHeading from './components/BeamHeading.vue'\nimport BeamArrow from './components/BeamArrow.vue'\nimport BeamBtn from './components/BeamBtn.vue'\nimport BeamProgress from './components/BeamProgress.vue'\nimport 'themes/beam.css'\n\n/**\n * Install all Beam components\n * @param app - Vue app instance\n * @public\n */\nfunction install(app: App /* options */) {\n\tapp.component('ActionFooter', ActionFooter)\n\tapp.component('BeamMetadata', BeamMetadata)\n\tapp.component('BeamModal', BeamModal)\n\tapp.component('BeamModalOutlet', BeamModalOutlet)\n\tapp.component('Confirm', Confirm)\n\tapp.component('ItemCheck', ItemCheck)\n\tapp.component('ItemCount', ItemCount)\n\tapp.component('ListAnchor', ListAnchor)\n\tapp.component('ListItem', ListItem)\n\tapp.component('ListView', ListView)\n\tapp.component('Navbar', Navbar)\n\tapp.component('ScanInput', ScanInput)\n\tapp.component('SplitColumn', SplitColumn)\n\tapp.component('BeamHeading', BeamHeading)\n\tapp.component('BeamArrow', BeamArrow)\n\tapp.component('BeamBtn', BeamBtn)\n\tapp.component('BeamProgress', BeamProgress)\n}\n\nexport {\n\tActionFooter,\n\tBeamMetadata,\n\tBeamModal,\n\tBeamModalOutlet,\n\tConfirm,\n\tItemCheck,\n\tItemCount,\n\tListAnchor,\n\tListItem,\n\tListView,\n\tNavbar,\n\tScanInput,\n\tSplitColumn,\n\tBeamHeading,\n\tBeamArrow,\n\tBeamBtn,\n\tBeamProgress,\n\tinstall,\n}\n"],"names":["emit","__emit","handleFooterAction","_sfc_render","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","$event","value","_useModel","__props","count","isCountComplete","computed","handleInput","event","newValue","listItem","ref","onMounted","handleScroll","onUnmounted","scrollHeightDifference","scrollposition","handlePrimaryAction","global","factory","module","this","onScan","oDomElement","oOptions","oDefaults","sScanned","iQty","oDebug","sChar","oEvent","iKeyCode","sPasted","iCode","sDecoded","mStringOrArray","mKey","oEventProps","oVars","ignoreSelectors","oFocused","i","sScanCode","oScannerData","iSingleScanQty","iFirstCharTime","iLastCharTime","oScanError","oExtended","prop","bScanFinished","character","sPasteString","props","instance","_hoisted_1","_renderSlot","statusMessage","install","app","ActionFooter","BeamMetadata","BeamModal","BeamModalOutlet","Confirm","ItemCheck","ItemCount","ListAnchor","ListItem","ListView","Navbar","ScanInput","SplitColumn","BeamHeading","BeamArrow","BeamBtn","BeamProgress"],"mappings":"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","x_google_ignoreList":[7]}
|
package/dist/beam.umd.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
(function(c,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(c=typeof globalThis<"u"?globalThis:c||self,e(c["@stonecrop/beam"]={},c.Vue))})(this,function(c,e){"use strict";var h=document.createElement("style");h.textContent=`@import"https://fonts.googleapis.com/css2?family=Arimo:ital,wght@0,400;0,500;0,600;0,700;1,400;1,500;1,600;1,700&display=swap";.container[data-v-f44a510e]{display:block;position:relative;padding-left:2.5ch;margin:0;margin-top:.5rem;cursor:pointer;font-size:2rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.container input[data-v-f44a510e]{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.checkmark[data-v-f44a510e]{position:absolute;top:0;left:0;height:2rem;width:2rem;background-color:#eee;outline:2px solid transparent;border:1px solid var(--highlight)}.container:hover input~.checkmark[data-v-f44a510e]{background-color:#fff}.container input:checked~.checkmark[data-v-f44a510e]{background-color:var(--brand-secondary)}.checkmark[data-v-f44a510e]:after{content:"";position:absolute;display:none}.container input:checked~.checkmark[data-v-f44a510e]:after{display:block}.container .checkmark[data-v-f44a510e]:after{left:25%;top:50%;width:.5rem;height:1rem;border:solid var(--text-color);border-width:0 3px 3px 0;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg) translate(-50%,-50%)}.two-column[data-v-5d4573e9]{display:flex;flex-direction:row;justify-content:space-between;align-items:baseline;gap:1rem}@media screen and (max-width: 400px){.two-column[data-v-5d4573e9]{flex-direction:column;gap:0}}.column[data-v-5d4573e9]{flex-grow:1;width:50%}@media screen and (max-width: 400px){.column[data-v-5d4573e9]{width:100%}}.column-right[data-v-5d4573e9]{text-align:right}@media screen and (max-width: 400px){.column-right[data-v-5d4573e9]{text-align:left}}.beam_metadata_arrow[data-v-e3223427]{align-self:center;flex-grow:1;position:relative;display:flex;align-items:center}.beam_metadata_arrow-body[data-v-e3223427]{width:100%;height:10px;background:#c4c4c4}.beam_metadata_arrow-head svg[data-v-e3223427]{width:20px;display:block}:root{--sc-primary-color: #f2f2f2;--sc-primary-text-color: #666666;--sc-alert: #e63c28;--sc-success: #155724;--sc-font-family: Arimo, Arial, sans-serif;--sc-row-border-color: #ccc;--sc-btn-color: white;--sc-btn-border: #ccc;--sc-btn-label-color: black;--sc-list-margin: 0rem .625rem}body{font-family:var(--sc-font-family);background-color:#fff;margin:0;padding:0;display:flex;flex-direction:column;flex:1 0 auto;height:100%;box-sizing:border-box}.beam_header{border:1px solid transparent;text-align:left;font-size:1.125rem;color:var(--sc-primary-text-color);margin:0;padding:0}.beam_copy{color:var(--sc-primary-text-color);font-size:1rem;line-height:1.5rem}.beam--bold{font-weight:700}.beam--normal{font-weight:400}.beam--alert{color:var(--sc-alert)}.beam--success{color:var(--sc-success)}.beam_navbar{padding:.625rem;background-color:var(--sc-primary-color);margin-left:0;min-height:2em;max-height:2em;color:var(--sc-primary-text-color);display:flex;flex-flow:row nowrap;align-content:center;justify-content:space-between;align-items:center;position:sticky;top:0;border-bottom:1px solid var(--sc-row-border-color)}.beam_navbar h1{margin-left:.625rem}.beam_list-view{list-style-type:none;margin:var(--sc-list-margin);padding:0 0 2.5em;margin-top:1px}.beam_list-item{padding:.625rem;border-bottom:1px solid var(--sc-row-border-color);max-width:100%;box-sizing:border-box;display:flex;flex-flow:row nowrap;justify-content:space-between;gap:1.25rem;cursor:pointer;outline:2px solid transparent;outline-offset:-1px}.beam_list-item:focus{outline:2px solid var(--sc-focus-cell-outline);background-color:var(--sc-focus-cell-background)}.beam_list-text{width:80%;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;flex-grow:1;font-size:.875rem;color:var(--sc-primary-text-color)}.beam_list-text label,.beam_list-text p{overflow:hidden;text-overflow:ellipsis;width:100%;display:block}.beam_list-item label{display:block}.beam_list-item p{margin:0}.beam_list-anchor{text-decoration:none;outline:none;color:var(--sc-primary-text-color)}.beam_item-count{font-size:1.3125rem;color:var(--sc-primary-text-color)}.beam_item-count span{margin:0;padding:0;outline:none}.beam_btn{font-size:.875rem;text-align:center;padding:.3125rem .75rem;border:1px solid var(--sc-btn-border);color:var(--sc-btn-label-color);background-color:var(--sc-btn-color);cursor:pointer}.beam_btn:hover,.beam_btn:active{background-color:var(--sc-btn-hover)}.beam_action-footer{margin-left:0;background:linear-gradient(180deg,transparent 0%,white 100%);color:var(--sc-primary-text-color);position:fixed;bottom:0;left:0;width:100%;padding:.625rem;text-align:center}.beam_modal{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#00000080;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:1000;text-align:center;padding:1.25rem}.beam_modal-confirm{background:#fff;padding:1.25rem;width:80%;max-width:400px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.beam_modal-confirm button{margin:.625rem}.beam_modal-confirm h2{border-bottom:1px solid var(--sc-row-border-color);padding-bottom:.625rem;color:var(--sc-primary-text-color)}.beam_metadata{box-sizing:border-box;border:1px solid black;display:flex;flex-direction:column;max-height:100vh;color:var(--sc-primary-text-color)}.beam_metadata_content{padding-top:10px}.beam_metadata_header{display:flex;flex-direction:row;align-items:baseline;padding:0 30px;justify-content:space-between}.beam_metadata_count{font-size:1.5rem}.beam_metadata_count p{margin:0}.beam_metadata_header-order-num{font-weight:700;font-size:1.5rem}.beam_metadata_block{padding:0 30px;margin:10px 0}.beam_metadata_shipping{display:flex;flex-direction:row;align-items:baseline;justify-content:space-between}.beam_metadata_shipping p{line-height:1.5rem}@media screen and (max-width: 600px){.beam_metadata_shipping{flex-direction:column}}.beam_metadata_component_header{display:flex;flex-direction:row;justify-content:space-between;align-items:baseline}.beam_metadata_components{overflow:scroll}.beam_metadata_heading{font-size:1.125rem;font-weight:700;margin:.625rem 0}
|
|
2
|
-
`,document.head.appendChild(h);const V={class:"beam_action-footer"},N={class:"footer-action-wrapper"},g=e.defineComponent({__name:"ActionFooter",emits:["click"],setup(o,{emit:a}){const s=a,t=()=>{s("click")};return(n,i)=>(e.openBlock(),e.createElementBlock("footer",V,[e.createElementVNode("span",N,[e.createElementVNode("button",{class:"beam_btn",onClick:t},[e.renderSlot(n.$slots,"default")])])]))}}),D={class:"beam_metadata"},P={class:"beam_metadata_content"},I={class:"beam_metadata_block"},K={class:"beam_metadata_heading"},y=e.defineComponent({__name:"BeamMetadata",props:{order:{}},setup(o){return(a,s)=>(e.openBlock(),e.createElementBlock("div",D,[e.createElementVNode("div",P,[e.renderSlot(a.$slots,"default",{},()=>[s[1]||(s[1]=e.createElementVNode("div",{class:"beam_metadata_header beam_metadata--two-column"},null,-1)),e.createElementVNode("div",I,[e.createElementVNode("p",K,[s[0]||(s[0]=e.createTextVNode(" Status: ")),e.createElementVNode("span",{class:e.normalizeClass([{alert:!a.order.complete},"beam_metadata--normal"])},e.toDisplayString(a.order.complete?"Complete":"In Progress"),3)])]),s[2]||(s[2]=e.createStaticVNode('<div class="beam_metadata_shipping beam_metadata_block"><div class="beam_metadata_source"><p class="beam_metadata_heading">Source</p></div><div class="beam_metadata_source"><p class="beam_metadata_heading">Receiving</p></div></div>',1))])])]))}}),L={class:"beam_modal"},k=e.defineComponent({__name:"BeamModal",props:{showModal:{type:Boolean}},setup(o){return(a,s)=>{const t=e.resolveComponent("portal");return e.openBlock(),e.createBlock(t,{to:"beam_modal_outlet"},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",L,[e.createElementVNode("button",{class:"beam_btn",onClick:s[0]||(s[0]=n=>a.$emit("closemodal"))},"Close Modal"),e.renderSlot(a.$slots,"default",{onClosemodal:s[1]||(s[1]=n=>a.$emit("closemodal")),onConfirmmodal:s[2]||(s[2]=n=>a.$emit("confirmmodal"))})],512),[[e.vShow,a.showModal]])]),_:3})}}}),w=e.defineComponent({__name:"BeamModalOutlet",emits:["confirmmodal","closemodal"],setup(o){return(a,s)=>{const t=e.resolveComponent("portal-target");return e.openBlock(),e.createBlock(t,{name:"beam_modal_outlet"})}}}),m=(o,a)=>{const s=o.__vccOpts||o;for(const[t,n]of a)s[t]=n;return s},M={},z={class:"beam_modal-confirm"};function A(o,a){return e.openBlock(),e.createElementBlock("div",z,[a[2]||(a[2]=e.createElementVNode("h2",null,"Would you like to continue?",-1)),e.createElementVNode("button",{class:"beam_btn",onClick:a[0]||(a[0]=s=>o.$emit("confirmmodal"))},"Yes"),e.createElementVNode("button",{class:"beam_btn",onClick:a[1]||(a[1]=s=>o.$emit("closemodal"))},"No")])}const C=m(M,[["render",A]]),F={class:"container"},_=m(e.defineComponent({__name:"ItemCheck",props:{modelValue:{type:Boolean,default:!1},modelModifiers:{}},emits:["update:modelValue"],setup(o){const a=e.useModel(o,"modelValue");return(s,t)=>(e.openBlock(),e.createElementBlock("label",F,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":t[0]||(t[0]=n=>a.value=n),tabindex:"-1"},null,512),[[e.vModelCheckbox,a.value]]),t[1]||(t[1]=e.createElementVNode("div",{class:"checkmark",tabindex:"0"},null,-1))]))}}),[["__scopeId","data-v-f44a510e"]]),j={class:"beam_item-count"},O=["contenteditable"],U={key:0},b=e.defineComponent({__name:"ItemCount",props:e.mergeModels({denominator:{},uom:{default:""},editable:{type:Boolean,default:!0}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const a=e.useModel(o,"modelValue"),s=e.computed(()=>a.value===o.denominator),t=n=>{n.preventDefault(),n.stopPropagation();const i=Number(n.target.innerHTML)||0;a.value=Math.min(i,o.denominator)};return(n,i)=>(e.openBlock(),e.createElementBlock("div",j,[e.createElementVNode("span",{contenteditable:n.editable,class:e.normalizeClass({"beam--alert":!s.value}),onInput:t,onClick:t},e.toDisplayString(a.value),43,O),e.createElementVNode("span",null,"/"+e.toDisplayString(n.denominator),1),n.uom?(e.openBlock(),e.createElementBlock("span",U," "+e.toDisplayString(n.uom),1)):e.createCommentVNode("",!0)]))}}),H=["href"],x=e.defineComponent({__name:"ListAnchor",props:{to:{default:""}},setup(o){return(a,s)=>(e.openBlock(),e.createElementBlock("a",{href:a.to,class:"beam_list-anchor"},[e.renderSlot(a.$slots,"default")],8,H))}}),Q={tabindex:"0",class:"beam_list-item"},q={class:"beam_list-text"},R={class:"beam--bold"},f=e.defineComponent({__name:"ListItem",props:{item:{}},setup(o){const a=e.ref(o.item);return(s,t)=>(e.openBlock(),e.createElementBlock("li",Q,[e.createElementVNode("div",q,[e.createElementVNode("label",R,e.toDisplayString(a.value.label),1),e.createElementVNode("p",null,e.toDisplayString(a.value.description),1)]),a.value.count?(e.openBlock(),e.createBlock(b,{key:0,modelValue:a.value.count.count,"onUpdate:modelValue":t[0]||(t[0]=n=>a.value.count.count=n),denominator:a.value.count.of,uom:a.value.count.uom,editable:!0},null,8,["modelValue","denominator","uom"])):e.createCommentVNode("",!0),a.value.hasOwnProperty("checked")?(e.openBlock(),e.createBlock(_,{key:1,modelValue:a.value.checked,"onUpdate:modelValue":t[1]||(t[1]=n=>a.value.checked=n)},null,8,["modelValue"])):e.createCommentVNode("",!0)]))}}),G={class:"beam_list-view"},B=e.defineComponent({__name:"ListView",props:{items:{}},emits:["scrollbottom"],setup(o,{emit:a}){const s=a;e.onMounted(()=>{window.addEventListener("scroll",t)}),e.onUnmounted(()=>{window.removeEventListener("scroll",t)});const t=()=>{const n=document.documentElement.scrollHeight-window.innerHeight,i=document.documentElement.scrollTop;n-i<=2&&s("scrollbottom")};return(n,i)=>(e.openBlock(),e.createElementBlock("ul",G,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.items,r=>(e.openBlock(),e.createElementBlock("li",{key:r.label},[r.linkComponent?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.linkComponent),{key:0,to:r.route,tabindex:"-1"},{default:e.withCtx(()=>[e.createVNode(f,{item:r},null,8,["item"])]),_:2},1032,["to"])):(e.openBlock(),e.createBlock(f,{key:1,item:r},null,8,["item"]))]))),128))]))}}),W={class:"beam_navbar"},v=e.defineComponent({__name:"Navbar",emits:["click"],setup(o,{emit:a}){const s=a,t=()=>{s("click")};return(n,i)=>{const r=e.resolveComponent("BeamHeading");return e.openBlock(),e.createElementBlock("nav",W,[e.renderSlot(n.$slots,"title",{},()=>[e.createVNode(r,null,{default:e.withCtx(()=>i[0]||(i[0]=[e.createTextVNode("TITLE")])),_:1})]),e.createElementVNode("button",{class:"navbar-action beam_btn",onClick:t},[e.renderSlot(n.$slots,"navbaraction",{},()=>[i[1]||(i[1]=e.createTextVNode("Action"))])])])}}});var Y=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function J(o){return o&&o.__esModule&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o}var S={exports:{}};(function(o,a){(function(s,t){o.exports=t()})(Y,function(){var s={attachTo:function(t,n){if(t.scannerDetectionData!==void 0)throw new Error("onScan.js is already initialized for DOM element "+t);var i={onScan:function(r,l){},onScanError:function(r){},onKeyProcess:function(r,l){},onKeyDetect:function(r,l){},onPaste:function(r,l){},keyCodeMapper:function(r){return s.decodeKeyEvent(r)},onScanButtonLongPress:function(){},scanButtonKeyCode:!1,scanButtonLongPressTime:500,timeBeforeScanTest:100,avgTimeByChar:30,minLength:6,suffixKeyCodes:[9,13],prefixKeyCodes:[],ignoreIfFocusOn:!1,stopPropagation:!1,preventDefault:!1,captureEvents:!1,reactToKeydown:!0,reactToPaste:!1,singleScanQty:1};return n=this._mergeOptions(i,n),t.scannerDetectionData={options:n,vars:{firstCharTime:0,lastCharTime:0,accumulatedString:"",testTimer:!1,longPressTimeStart:0,longPressed:!1}},n.reactToPaste===!0&&t.addEventListener("paste",this._handlePaste,n.captureEvents),n.scanButtonKeyCode!==!1&&t.addEventListener("keyup",this._handleKeyUp,n.captureEvents),(n.reactToKeydown===!0||n.scanButtonKeyCode!==!1)&&t.addEventListener("keydown",this._handleKeyDown,n.captureEvents),this},detachFrom:function(t){t.scannerDetectionData.options.reactToPaste&&t.removeEventListener("paste",this._handlePaste),t.scannerDetectionData.options.scanButtonKeyCode!==!1&&t.removeEventListener("keyup",this._handleKeyUp),t.removeEventListener("keydown",this._handleKeyDown),t.scannerDetectionData=void 0},getOptions:function(t){return t.scannerDetectionData.options},setOptions:function(t,n){switch(t.scannerDetectionData.options.reactToPaste){case!0:n.reactToPaste===!1&&t.removeEventListener("paste",this._handlePaste);break;case!1:n.reactToPaste===!0&&t.addEventListener("paste",this._handlePaste);break}switch(t.scannerDetectionData.options.scanButtonKeyCode){case!1:n.scanButtonKeyCode!==!1&&t.addEventListener("keyup",this._handleKeyUp);break;default:n.scanButtonKeyCode===!1&&t.removeEventListener("keyup",this._handleKeyUp);break}return t.scannerDetectionData.options=this._mergeOptions(t.scannerDetectionData.options,n),this._reinitialize(t),this},decodeKeyEvent:function(t){var n=this._getNormalizedKeyNum(t);switch(!0){case(n>=48&&n<=90):case(n>=106&&n<=111):if(t.key!==void 0&&t.key!=="")return t.key;var i=String.fromCharCode(n);switch(t.shiftKey){case!1:i=i.toLowerCase();break;case!0:i=i.toUpperCase();break}return i;case(n>=96&&n<=105):return 0+(n-96)}return""},simulate:function(t,n){return this._reinitialize(t),Array.isArray(n)?n.forEach(function(i){var r={};(typeof i=="object"||typeof i=="function")&&i!==null?r=i:r.keyCode=parseInt(i);var l=new KeyboardEvent("keydown",r);document.dispatchEvent(l)}):this._validateScanCode(t,n),this},_reinitialize:function(t){var n=t.scannerDetectionData.vars;n.firstCharTime=0,n.lastCharTime=0,n.accumulatedString=""},_isFocusOnIgnoredElement:function(t){var n=t.scannerDetectionData.options.ignoreIfFocusOn;if(!n)return!1;var i=document.activeElement;if(Array.isArray(n)){for(var r=0;r<n.length;r++)if(i.matches(n[r])===!0)return!0}else if(i.matches(n))return!0;return!1},_validateScanCode:function(t,n){var i=t.scannerDetectionData,r=i.options,l=i.options.singleScanQty,p=i.vars.firstCharTime,T=i.vars.lastCharTime,d={},u;switch(!0){case n.length<r.minLength:d={message:"Receieved code is shorter then minimal length"};break;case T-p>n.length*r.avgTimeByChar:d={message:"Receieved code was not entered in time"};break;default:return r.onScan.call(t,n,l),u=new CustomEvent("scan",{detail:{scanCode:n,qty:l}}),t.dispatchEvent(u),s._reinitialize(t),!0}return d.scanCode=n,d.scanDuration=T-p,d.avgTimeByChar=r.avgTimeByChar,d.minLength=r.minLength,r.onScanError.call(t,d),u=new CustomEvent("scanError",{detail:d}),t.dispatchEvent(u),s._reinitialize(t),!1},_mergeOptions:function(t,n){var i={},r;for(r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r]);for(r in n)Object.prototype.hasOwnProperty.call(n,r)&&(i[r]=n[r]);return i},_getNormalizedKeyNum:function(t){return t.which||t.keyCode},_handleKeyDown:function(t){var n=s._getNormalizedKeyNum(t),i=this.scannerDetectionData.options,r=this.scannerDetectionData.vars,l=!1;if(i.onKeyDetect.call(this,n,t)!==!1&&!s._isFocusOnIgnoredElement(this)){if(i.scanButtonKeyCode!==!1&&n==i.scanButtonKeyCode){r.longPressed||(r.longPressTimer=setTimeout(i.onScanButtonLongPress,i.scanButtonLongPressTime,this),r.longPressed=!0);return}switch(!0){case(r.firstCharTime&&i.suffixKeyCodes.indexOf(n)!==-1):t.preventDefault(),t.stopImmediatePropagation(),l=!0;break;case(!r.firstCharTime&&i.prefixKeyCodes.indexOf(n)!==-1):t.preventDefault(),t.stopImmediatePropagation(),l=!1;break;default:var p=i.keyCodeMapper.call(this,t);if(p===null)return;r.accumulatedString+=p,i.preventDefault&&t.preventDefault(),i.stopPropagation&&t.stopImmediatePropagation(),l=!1;break}r.firstCharTime||(r.firstCharTime=Date.now()),r.lastCharTime=Date.now(),r.testTimer&&clearTimeout(r.testTimer),l?(s._validateScanCode(this,r.accumulatedString),r.testTimer=!1):r.testTimer=setTimeout(s._validateScanCode,i.timeBeforeScanTest,this,r.accumulatedString),i.onKeyProcess.call(this,p,t)}},_handlePaste:function(t){var n=this.scannerDetectionData.options,i=this.scannerDetectionData.vars,r=(event.clipboardData||window.clipboardData).getData("text");s._isFocusOnIgnoredElement(this)||(t.preventDefault(),n.stopPropagation&&t.stopImmediatePropagation(),n.onPaste.call(this,r,event),i.firstCharTime=0,i.lastCharTime=0,s._validateScanCode(this,r))},_handleKeyUp:function(t){if(!s._isFocusOnIgnoredElement(this)){var n=s._getNormalizedKeyNum(t);n==this.scannerDetectionData.options.scanButtonKeyCode&&(clearTimeout(this.scannerDetectionData.vars.longPressTimer),this.scannerDetectionData.vars.longPressed=!1)}},isScanInProgressFor:function(t){return t.scannerDetectionData.vars.firstCharTime>0},isAttachedTo:function(t){return t.scannerDetectionData!==void 0}};return s})})(S);var X=S.exports;const E=J(X),Z={id:"scan_input"},$=e.defineComponent({__name:"ScanInput",props:{scanHandler:{type:Function}},emits:["scanInstance"],setup(o,{emit:a}){const s=a,t=o;return e.onMounted(()=>{const n=E.attachTo(window,{onScan:t.scanHandler});s("scanInstance",n)}),e.onUnmounted(()=>{E.detachFrom(window)}),(n,i)=>(e.openBlock(),e.createElementBlock("div",Z))}}),ee={class:"column column-left"},te={class:"column column-right"},ne=m(e.defineComponent({__name:"SplitColumn",props:{justifyContent:{},alignItems:{}},setup(o){return(a,s)=>(e.openBlock(),e.createElementBlock("div",{class:"two-column",style:e.normalizeStyle({justifyContent:a.justifyContent||"space-between",alignItems:a.alignItems||"flex-start"})},[e.createElementVNode("div",ee,[e.renderSlot(a.$slots,"left",{},void 0,!0)]),e.createElementVNode("div",te,[e.renderSlot(a.$slots,"right",{},void 0,!0)])],4))}}),[["__scopeId","data-v-5d4573e9"]]),ae={},oe={class:"beam_header"};function re(o,a){return e.openBlock(),e.createElementBlock("h1",oe,[e.renderSlot(o.$slots,"default")])}const ie=m(ae,[["render",re]]),se={class:"beam_metadata_arrow"},ce={class:"beam_metadata_arrow-head"},le={id:"Layer_1",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 6.74 7.78"},de=m(e.defineComponent({__name:"BeamArrow",props:{color:String},setup(o){return(a,s)=>(e.openBlock(),e.createElementBlock("div",se,[e.createElementVNode("div",{class:"beam_metadata_arrow-body",style:e.normalizeStyle({background:o.color||"#c4c4c4"})},null,4),e.createElementVNode("div",ce,[(e.openBlock(),e.createElementBlock("svg",le,[e.createElementVNode("polygon",{points:"6.74 3.89 0 0 0 7.78 6.74 3.89",style:e.normalizeStyle([{fill:"#c4c4c4"},{fill:o.color||"#c4c4c4"}])},null,4)]))])]))}}),[["__scopeId","data-v-e3223427"]]),me={},pe={class:"beam_btn"};function fe(o,a){return e.openBlock(),e.createElementBlock("button",pe,[e.renderSlot(o.$slots,"default",{},()=>[a[0]||(a[0]=e.createTextVNode("Action"))])])}const ue=m(me,[["render",fe]]),_e={class:"beam_metadata_heading"},be=e.defineComponent({__name:"BeamProgress",props:{label:{type:String,default:"Status"},progressMessage:{type:String,default:"In Progress"},completeMessage:{type:String,default:"Complete"},complete:Boolean},setup(o){const a=o,s=e.computed(()=>a.complete?a.completeMessage:a.progressMessage);return(t,n)=>(e.openBlock(),e.createElementBlock("p",_e,[e.createTextVNode(e.toDisplayString(o.label)+": ",1),e.createElementVNode("span",{class:e.normalizeClass([{"beam--alert":!o.complete},"beam--normal"])},e.toDisplayString(s.value),3)]))}});function he(o){o.component("ActionFooter",g),o.component("BeamMetadata",y),o.component("BeamModal",k),o.component("BeamModalOutlet",w),o.component("Confirm",C),o.component("ItemCheck",_),o.component("ItemCount",b),o.component("ListAnchor",x),o.component("ListItem",f),o.component("ListView",B),o.component("Navbar",v),o.component("ScanInput",$),o.component("SplitColumn",ne),o.component("BeamHeading",ie),o.component("BeamArrow",de),o.component("BeamBtn",ue),o.component("BeamProgress",be)}c.ActionFooter=g,c.BeamMetadata=y,c.BeamModal=k,c.BeamModalOutlet=w,c.Confirm=C,c.ItemCheck=_,c.ItemCount=b,c.ListAnchor=x,c.ListItem=f,c.ListView=B,c.Navbar=v,c.ScanInput=$,c.install=he,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});
|
|
2
|
+
`,document.head.appendChild(h);const K={class:"beam_action-footer"},L={class:"footer-action-wrapper"},g=e.defineComponent({__name:"ActionFooter",emits:["click"],setup(o,{emit:a}){const s=a,t=()=>{s("click")};return(n,i)=>(e.openBlock(),e.createElementBlock("footer",K,[e.createElementVNode("span",L,[e.createElementVNode("button",{class:"beam_btn",onClick:t},[e.renderSlot(n.$slots,"default")])])]))}}),M={class:"beam_metadata"},z={class:"beam_metadata_content"},A={class:"beam_metadata_block"},F={class:"beam_metadata_heading"},y=e.defineComponent({__name:"BeamMetadata",props:{order:{}},setup(o){return(a,s)=>(e.openBlock(),e.createElementBlock("div",M,[e.createElementVNode("div",z,[e.renderSlot(a.$slots,"default",{},()=>[s[1]||(s[1]=e.createElementVNode("div",{class:"beam_metadata_header beam_metadata--two-column"},null,-1)),e.createElementVNode("div",A,[e.createElementVNode("p",F,[s[0]||(s[0]=e.createTextVNode(" Status: ")),e.createElementVNode("span",{class:e.normalizeClass([{alert:!a.order.complete},"beam_metadata--normal"])},e.toDisplayString(a.order.complete?"Complete":"In Progress"),3)])]),s[2]||(s[2]=e.createStaticVNode('<div class="beam_metadata_shipping beam_metadata_block"><div class="beam_metadata_source"><p class="beam_metadata_heading">Source</p></div><div class="beam_metadata_source"><p class="beam_metadata_heading">Receiving</p></div></div>',1))])])]))}}),j={class:"beam_modal"},k=e.defineComponent({__name:"BeamModal",props:{showModal:{type:Boolean}},setup(o){return(a,s)=>{const t=e.resolveComponent("portal");return e.openBlock(),e.createBlock(t,{to:"beam_modal_outlet"},{default:e.withCtx(()=>[e.withDirectives(e.createElementVNode("div",j,[e.createElementVNode("button",{class:"beam_btn",onClick:s[0]||(s[0]=n=>a.$emit("closemodal"))},"Close Modal"),e.renderSlot(a.$slots,"default",{onClosemodal:s[1]||(s[1]=n=>a.$emit("closemodal")),onConfirmmodal:s[2]||(s[2]=n=>a.$emit("confirmmodal"))})],512),[[e.vShow,a.showModal]])]),_:3})}}}),w=e.defineComponent({__name:"BeamModalOutlet",emits:["confirmmodal","closemodal"],setup(o){return(a,s)=>{const t=e.resolveComponent("portal-target");return e.openBlock(),e.createBlock(t,{name:"beam_modal_outlet"})}}}),m=(o,a)=>{const s=o.__vccOpts||o;for(const[t,n]of a)s[t]=n;return s},O={},H={class:"beam_modal-confirm"};function U(o,a){return e.openBlock(),e.createElementBlock("div",H,[a[2]||(a[2]=e.createElementVNode("h2",null,"Would you like to continue?",-1)),e.createElementVNode("button",{class:"beam_btn",onClick:a[0]||(a[0]=s=>o.$emit("confirmmodal"))},"Yes"),e.createElementVNode("button",{class:"beam_btn",onClick:a[1]||(a[1]=s=>o.$emit("closemodal"))},"No")])}const C=m(O,[["render",U]]),Q={class:"container"},_=m(e.defineComponent({__name:"ItemCheck",props:{modelValue:{type:Boolean,default:!1},modelModifiers:{}},emits:["update:modelValue"],setup(o){const a=e.useModel(o,"modelValue");return(s,t)=>(e.openBlock(),e.createElementBlock("label",Q,[e.withDirectives(e.createElementVNode("input",{type:"checkbox","onUpdate:modelValue":t[0]||(t[0]=n=>a.value=n),tabindex:"-1"},null,512),[[e.vModelCheckbox,a.value]]),t[1]||(t[1]=e.createElementVNode("div",{class:"checkmark",tabindex:"0"},null,-1))]))}}),[["__scopeId","data-v-f44a510e"]]),q={class:"beam_item-count"},R=["contenteditable"],G={key:0},b=e.defineComponent({__name:"ItemCount",props:e.mergeModels({denominator:{},uom:{default:""},editable:{type:Boolean,default:!0}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(o){const a=e.useModel(o,"modelValue"),s=e.computed(()=>a.value===o.denominator),t=n=>{n.preventDefault(),n.stopPropagation();const i=Number(n.target.innerHTML)||0;a.value=Math.min(i,o.denominator)};return(n,i)=>(e.openBlock(),e.createElementBlock("div",q,[e.createElementVNode("span",{contenteditable:n.editable,class:e.normalizeClass({"beam--alert":!s.value}),onInput:t,onClick:t},e.toDisplayString(a.value),43,R),e.createElementVNode("span",null,"/"+e.toDisplayString(n.denominator),1),n.uom?(e.openBlock(),e.createElementBlock("span",G," "+e.toDisplayString(n.uom),1)):e.createCommentVNode("",!0)]))}}),W=["href"],B=e.defineComponent({__name:"ListAnchor",props:{to:{default:""}},setup(o){return(a,s)=>(e.openBlock(),e.createElementBlock("a",{href:a.to,class:"beam_list-anchor"},[e.renderSlot(a.$slots,"default")],8,W))}}),Y={tabindex:"0",class:"beam_list-item"},J={class:"beam_list-text"},X={class:"beam--bold"},f=e.defineComponent({__name:"ListItem",props:{item:{}},setup(o){const a=e.ref(o.item);return(s,t)=>(e.openBlock(),e.createElementBlock("li",Y,[e.createElementVNode("div",J,[e.createElementVNode("label",X,e.toDisplayString(a.value.label),1),e.createElementVNode("p",null,e.toDisplayString(a.value.description),1)]),a.value.count?(e.openBlock(),e.createBlock(b,{key:0,modelValue:a.value.count.count,"onUpdate:modelValue":t[0]||(t[0]=n=>a.value.count.count=n),denominator:a.value.count.of,uom:a.value.count.uom,editable:!0},null,8,["modelValue","denominator","uom"])):e.createCommentVNode("",!0),a.value.hasOwnProperty("checked")?(e.openBlock(),e.createBlock(_,{key:1,modelValue:a.value.checked,"onUpdate:modelValue":t[1]||(t[1]=n=>a.value.checked=n)},null,8,["modelValue"])):e.createCommentVNode("",!0)]))}}),Z={class:"beam_list-view"},x=e.defineComponent({__name:"ListView",props:{items:{}},emits:["scrollbottom"],setup(o,{emit:a}){const s=a;e.onMounted(()=>{window.addEventListener("scroll",t)}),e.onUnmounted(()=>{window.removeEventListener("scroll",t)});const t=()=>{const n=document.documentElement.scrollHeight-window.innerHeight,i=document.documentElement.scrollTop;n-i<=2&&s("scrollbottom")};return(n,i)=>(e.openBlock(),e.createElementBlock("ul",Z,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.items,r=>(e.openBlock(),e.createElementBlock("li",{key:r.label},[r.linkComponent?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(r.linkComponent),{key:0,to:r.route,tabindex:"-1"},{default:e.withCtx(()=>[e.createVNode(f,{item:r},null,8,["item"])]),_:2},1032,["to"])):(e.openBlock(),e.createBlock(f,{key:1,item:r},null,8,["item"]))]))),128))]))}}),ee={class:"beam_navbar"},v=e.defineComponent({__name:"Navbar",emits:["click"],setup(o,{emit:a}){const s=a,t=()=>{s("click")};return(n,i)=>{const r=e.resolveComponent("BeamHeading");return e.openBlock(),e.createElementBlock("nav",ee,[e.renderSlot(n.$slots,"title",{},()=>[e.createVNode(r,null,{default:e.withCtx(()=>i[0]||(i[0]=[e.createTextVNode("TITLE")])),_:1})]),e.createElementVNode("button",{class:"navbar-action beam_btn",onClick:t},[e.renderSlot(n.$slots,"navbaraction",{},()=>[i[1]||(i[1]=e.createTextVNode("Action"))])])])}}});var te=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ne(o){return o&&o.__esModule&&Object.prototype.hasOwnProperty.call(o,"default")?o.default:o}var S={exports:{}};(function(o,a){(function(s,t){o.exports=t()})(te,function(){var s={attachTo:function(t,n){if(t.scannerDetectionData!==void 0)throw new Error("onScan.js is already initialized for DOM element "+t);var i={onScan:function(r,l){},onScanError:function(r){},onKeyProcess:function(r,l){},onKeyDetect:function(r,l){},onPaste:function(r,l){},keyCodeMapper:function(r){return s.decodeKeyEvent(r)},onScanButtonLongPress:function(){},scanButtonKeyCode:!1,scanButtonLongPressTime:500,timeBeforeScanTest:100,avgTimeByChar:30,minLength:6,suffixKeyCodes:[9,13],prefixKeyCodes:[],ignoreIfFocusOn:!1,stopPropagation:!1,preventDefault:!1,captureEvents:!1,reactToKeydown:!0,reactToPaste:!1,singleScanQty:1};return n=this._mergeOptions(i,n),t.scannerDetectionData={options:n,vars:{firstCharTime:0,lastCharTime:0,accumulatedString:"",testTimer:!1,longPressTimeStart:0,longPressed:!1}},n.reactToPaste===!0&&t.addEventListener("paste",this._handlePaste,n.captureEvents),n.scanButtonKeyCode!==!1&&t.addEventListener("keyup",this._handleKeyUp,n.captureEvents),(n.reactToKeydown===!0||n.scanButtonKeyCode!==!1)&&t.addEventListener("keydown",this._handleKeyDown,n.captureEvents),this},detachFrom:function(t){t.scannerDetectionData.options.reactToPaste&&t.removeEventListener("paste",this._handlePaste),t.scannerDetectionData.options.scanButtonKeyCode!==!1&&t.removeEventListener("keyup",this._handleKeyUp),t.removeEventListener("keydown",this._handleKeyDown),t.scannerDetectionData=void 0},getOptions:function(t){return t.scannerDetectionData.options},setOptions:function(t,n){switch(t.scannerDetectionData.options.reactToPaste){case!0:n.reactToPaste===!1&&t.removeEventListener("paste",this._handlePaste);break;case!1:n.reactToPaste===!0&&t.addEventListener("paste",this._handlePaste);break}switch(t.scannerDetectionData.options.scanButtonKeyCode){case!1:n.scanButtonKeyCode!==!1&&t.addEventListener("keyup",this._handleKeyUp);break;default:n.scanButtonKeyCode===!1&&t.removeEventListener("keyup",this._handleKeyUp);break}return t.scannerDetectionData.options=this._mergeOptions(t.scannerDetectionData.options,n),this._reinitialize(t),this},decodeKeyEvent:function(t){var n=this._getNormalizedKeyNum(t);switch(!0){case(n>=48&&n<=90):case(n>=106&&n<=111):if(t.key!==void 0&&t.key!=="")return t.key;var i=String.fromCharCode(n);switch(t.shiftKey){case!1:i=i.toLowerCase();break;case!0:i=i.toUpperCase();break}return i;case(n>=96&&n<=105):return 0+(n-96)}return""},simulate:function(t,n){return this._reinitialize(t),Array.isArray(n)?n.forEach(function(i){var r={};(typeof i=="object"||typeof i=="function")&&i!==null?r=i:r.keyCode=parseInt(i);var l=new KeyboardEvent("keydown",r);document.dispatchEvent(l)}):this._validateScanCode(t,n),this},_reinitialize:function(t){var n=t.scannerDetectionData.vars;n.firstCharTime=0,n.lastCharTime=0,n.accumulatedString=""},_isFocusOnIgnoredElement:function(t){var n=t.scannerDetectionData.options.ignoreIfFocusOn;if(!n)return!1;var i=document.activeElement;if(Array.isArray(n)){for(var r=0;r<n.length;r++)if(i.matches(n[r])===!0)return!0}else if(i.matches(n))return!0;return!1},_validateScanCode:function(t,n){var i=t.scannerDetectionData,r=i.options,l=i.options.singleScanQty,p=i.vars.firstCharTime,I=i.vars.lastCharTime,d={},u;switch(!0){case n.length<r.minLength:d={message:"Receieved code is shorter then minimal length"};break;case I-p>n.length*r.avgTimeByChar:d={message:"Receieved code was not entered in time"};break;default:return r.onScan.call(t,n,l),u=new CustomEvent("scan",{detail:{scanCode:n,qty:l}}),t.dispatchEvent(u),s._reinitialize(t),!0}return d.scanCode=n,d.scanDuration=I-p,d.avgTimeByChar=r.avgTimeByChar,d.minLength=r.minLength,r.onScanError.call(t,d),u=new CustomEvent("scanError",{detail:d}),t.dispatchEvent(u),s._reinitialize(t),!1},_mergeOptions:function(t,n){var i={},r;for(r in t)Object.prototype.hasOwnProperty.call(t,r)&&(i[r]=t[r]);for(r in n)Object.prototype.hasOwnProperty.call(n,r)&&(i[r]=n[r]);return i},_getNormalizedKeyNum:function(t){return t.which||t.keyCode},_handleKeyDown:function(t){var n=s._getNormalizedKeyNum(t),i=this.scannerDetectionData.options,r=this.scannerDetectionData.vars,l=!1;if(i.onKeyDetect.call(this,n,t)!==!1&&!s._isFocusOnIgnoredElement(this)){if(i.scanButtonKeyCode!==!1&&n==i.scanButtonKeyCode){r.longPressed||(r.longPressTimer=setTimeout(i.onScanButtonLongPress,i.scanButtonLongPressTime,this),r.longPressed=!0);return}switch(!0){case(r.firstCharTime&&i.suffixKeyCodes.indexOf(n)!==-1):t.preventDefault(),t.stopImmediatePropagation(),l=!0;break;case(!r.firstCharTime&&i.prefixKeyCodes.indexOf(n)!==-1):t.preventDefault(),t.stopImmediatePropagation(),l=!1;break;default:var p=i.keyCodeMapper.call(this,t);if(p===null)return;r.accumulatedString+=p,i.preventDefault&&t.preventDefault(),i.stopPropagation&&t.stopImmediatePropagation(),l=!1;break}r.firstCharTime||(r.firstCharTime=Date.now()),r.lastCharTime=Date.now(),r.testTimer&&clearTimeout(r.testTimer),l?(s._validateScanCode(this,r.accumulatedString),r.testTimer=!1):r.testTimer=setTimeout(s._validateScanCode,i.timeBeforeScanTest,this,r.accumulatedString),i.onKeyProcess.call(this,p,t)}},_handlePaste:function(t){var n=this.scannerDetectionData.options,i=this.scannerDetectionData.vars,r=(event.clipboardData||window.clipboardData).getData("text");s._isFocusOnIgnoredElement(this)||(t.preventDefault(),n.stopPropagation&&t.stopImmediatePropagation(),n.onPaste.call(this,r,event),i.firstCharTime=0,i.lastCharTime=0,s._validateScanCode(this,r))},_handleKeyUp:function(t){if(!s._isFocusOnIgnoredElement(this)){var n=s._getNormalizedKeyNum(t);n==this.scannerDetectionData.options.scanButtonKeyCode&&(clearTimeout(this.scannerDetectionData.vars.longPressTimer),this.scannerDetectionData.vars.longPressed=!1)}},isScanInProgressFor:function(t){return t.scannerDetectionData.vars.firstCharTime>0},isAttachedTo:function(t){return t.scannerDetectionData!==void 0}};return s})})(S);var ae=S.exports;const E=ne(ae),oe={id:"scan_input"},$=e.defineComponent({__name:"ScanInput",props:{scanHandler:{type:Function}},emits:["scanInstance"],setup(o,{emit:a}){const s=a,t=o;return e.onMounted(()=>{const n=E.attachTo(window,{onScan:t.scanHandler});s("scanInstance",n)}),e.onUnmounted(()=>{E.detachFrom(window)}),(n,i)=>(e.openBlock(),e.createElementBlock("div",oe))}}),re={class:"column column-left"},ie={class:"column column-right"},T=m(e.defineComponent({__name:"SplitColumn",props:{justifyContent:{},alignItems:{}},setup(o){return(a,s)=>(e.openBlock(),e.createElementBlock("div",{class:"two-column",style:e.normalizeStyle({justifyContent:a.justifyContent||"space-between",alignItems:a.alignItems||"flex-start"})},[e.createElementVNode("div",re,[e.renderSlot(a.$slots,"left",{},void 0,!0)]),e.createElementVNode("div",ie,[e.renderSlot(a.$slots,"right",{},void 0,!0)])],4))}}),[["__scopeId","data-v-5d4573e9"]]),se={},ce={class:"beam_header"};function le(o,a){return e.openBlock(),e.createElementBlock("h1",ce,[e.renderSlot(o.$slots,"default")])}const V=m(se,[["render",le]]),de={class:"beam_metadata_arrow"},me={class:"beam_metadata_arrow-head"},pe={id:"Layer_1",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 6.74 7.78"},N=m(e.defineComponent({__name:"BeamArrow",props:{color:String},setup(o){return(a,s)=>(e.openBlock(),e.createElementBlock("div",de,[e.createElementVNode("div",{class:"beam_metadata_arrow-body",style:e.normalizeStyle({background:o.color||"#c4c4c4"})},null,4),e.createElementVNode("div",me,[(e.openBlock(),e.createElementBlock("svg",pe,[e.createElementVNode("polygon",{points:"6.74 3.89 0 0 0 7.78 6.74 3.89",style:e.normalizeStyle([{fill:"#c4c4c4"},{fill:o.color||"#c4c4c4"}])},null,4)]))])]))}}),[["__scopeId","data-v-e3223427"]]),fe={},ue={class:"beam_btn"};function _e(o,a){return e.openBlock(),e.createElementBlock("button",ue,[e.renderSlot(o.$slots,"default",{},()=>[a[0]||(a[0]=e.createTextVNode("Action"))])])}const P=m(fe,[["render",_e]]),be={class:"beam_metadata_heading"},D=e.defineComponent({__name:"BeamProgress",props:{label:{type:String,default:"Status"},progressMessage:{type:String,default:"In Progress"},completeMessage:{type:String,default:"Complete"},complete:Boolean},setup(o){const a=o,s=e.computed(()=>a.complete?a.completeMessage:a.progressMessage);return(t,n)=>(e.openBlock(),e.createElementBlock("p",be,[e.createTextVNode(e.toDisplayString(o.label)+": ",1),e.createElementVNode("span",{class:e.normalizeClass([{"beam--alert":!o.complete},"beam--normal"])},e.toDisplayString(s.value),3)]))}});function he(o){o.component("ActionFooter",g),o.component("BeamMetadata",y),o.component("BeamModal",k),o.component("BeamModalOutlet",w),o.component("Confirm",C),o.component("ItemCheck",_),o.component("ItemCount",b),o.component("ListAnchor",B),o.component("ListItem",f),o.component("ListView",x),o.component("Navbar",v),o.component("ScanInput",$),o.component("SplitColumn",T),o.component("BeamHeading",V),o.component("BeamArrow",N),o.component("BeamBtn",P),o.component("BeamProgress",D)}c.ActionFooter=g,c.BeamArrow=N,c.BeamBtn=P,c.BeamHeading=V,c.BeamMetadata=y,c.BeamModal=k,c.BeamModalOutlet=w,c.BeamProgress=D,c.Confirm=C,c.ItemCheck=_,c.ItemCount=b,c.ListAnchor=B,c.ListItem=f,c.ListView=x,c.Navbar=v,c.ScanInput=$,c.SplitColumn=T,c.install=he,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})});
|
|
3
3
|
//# sourceMappingURL=beam.umd.cjs.map
|
package/dist/beam.umd.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beam.umd.cjs","sources":["../src/components/ActionFooter.vue","../src/components/Confirm.vue","../src/components/ItemCheck.vue","../src/components/ItemCount.vue","../src/components/ListItem.vue","../src/components/ListView.vue","../src/components/Navbar.vue","../../common/temp/node_modules/.pnpm/onscan.js@1.5.2/node_modules/onscan.js/onscan.js","../src/components/ScanInput.vue","../src/components/BeamHeading.vue","../src/components/BeamBtn.vue","../src/components/BeamProgress.vue","../src/index.ts"],"sourcesContent":["<template>\n\t<footer class=\"beam_action-footer\">\n\t\t<span class=\"footer-action-wrapper\">\n\t\t\t<button class=\"beam_btn\" @click=\"handleFooterAction\">\n\t\t\t\t<slot />\n\t\t\t</button>\n\t\t</span>\n\t</footer>\n</template>\n\n<script setup lang=\"ts\">\nconst emit = defineEmits<{ click: [] }>()\n\nconst handleFooterAction = () => {\n\temit('click')\n}\n</script>\n","<template>\n\t<div class=\"beam_modal-confirm\">\n\t\t<h2>Would you like to continue?</h2>\n\t\t<button class=\"beam_btn\" @click=\"$emit('confirmmodal')\">Yes</button>\n\t\t<button class=\"beam_btn\" @click=\"$emit('closemodal')\">No</button>\n\t</div>\n</template>\n","<template>\n\t<label class=\"container\">\n\t\t<input type=\"checkbox\" v-model=\"value\" tabindex=\"-1\" />\n\t\t<div class=\"checkmark\" tabindex=\"0\"></div>\n\t</label>\n</template>\n\n<script setup lang=\"ts\">\nconst value = defineModel<boolean>({ default: false })\n</script>\n\n<style scoped>\n.container {\n\tdisplay: block;\n\tposition: relative;\n\tpadding-left: 2.5ch;\n\tmargin: 0;\n\tmargin-top: 0.5rem;\n\tcursor: pointer;\n\tfont-size: 2rem;\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\n/* hide default checkbox */\n.container input {\n\tposition: absolute;\n\topacity: 0;\n\tcursor: pointer;\n\theight: 0;\n\twidth: 0;\n}\n\n.checkmark {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\theight: 2rem;\n\twidth: 2rem;\n\tbackground-color: #eee;\n\toutline: 2px solid transparent;\n\tborder: 1px solid var(--highlight);\n}\n\n.container:hover input ~ .checkmark {\n\tbackground-color: white;\n}\n\n.container input:checked ~ .checkmark {\n\tbackground-color: var(--brand-secondary);\n}\n\n.checkmark:after {\n\tcontent: '';\n\tposition: absolute;\n\tdisplay: none;\n}\n\n.container input:checked ~ .checkmark:after {\n\tdisplay: block;\n}\n\n.container .checkmark:after {\n\tleft: 25%;\n\ttop: 50%;\n\twidth: 0.5rem;\n\theight: 1rem;\n\tborder: solid var(--text-color);\n\tborder-width: 0 3px 3px 0;\n\t-webkit-transform: rotate(45deg);\n\t-ms-transform: rotate(45deg);\n\ttransform: rotate(45deg) translate(-50%, -50%);\n}\n</style>\n","<template>\n\t<div class=\"beam_item-count\">\n\t\t<span\n\t\t\t:contenteditable=\"editable\"\n\t\t\t:class=\"{ 'beam--alert': !isCountComplete }\"\n\t\t\t@input=\"handleInput\"\n\t\t\t@click=\"handleInput\">\n\t\t\t{{ count }}\n\t\t</span>\n\t\t<span>/{{ denominator }}</span>\n\t\t<span v-if=\"uom\"> {{ uom }}</span>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nconst count = defineModel<number>({ required: true })\nconst {\n\tdenominator,\n\tuom = '',\n\teditable = true,\n} = defineProps<{\n\tdenominator: number\n\tuom?: string\n\teditable?: boolean\n}>()\n\nconst isCountComplete = computed(() => count.value === denominator)\n\nconst handleInput = (event: InputEvent | MouseEvent) => {\n\tevent.preventDefault()\n\tevent.stopPropagation()\n\tconst newValue = Number((event.target as HTMLElement).innerHTML) || 0\n\tcount.value = Math.min(newValue, denominator)\n}\n</script>\n","<template>\n\t<li tabindex=\"0\" class=\"beam_list-item\">\n\t\t<div class=\"beam_list-text\">\n\t\t\t<label class=\"beam--bold\">{{ listItem.label }}</label>\n\t\t\t<p>{{ listItem.description }}</p>\n\t\t</div>\n\n\t\t<ItemCount\n\t\t\tv-if=\"listItem.count\"\n\t\t\tv-model=\"listItem.count.count\"\n\t\t\t:denominator=\"listItem.count.of\"\n\t\t\t:uom=\"listItem.count.uom\"\n\t\t\t:editable=\"true\" />\n\t\t<ItemCheck v-if=\"listItem.hasOwnProperty('checked')\" v-model=\"listItem.checked\" />\n\t</li>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\n\nimport ItemCount from '@/components/ItemCount.vue'\nimport ItemCheck from '@/components/ItemCheck.vue'\n\nconst { item } = defineProps<{\n\titem: {\n\t\tlabel: string\n\t\tdescription: string\n\t\tcount?: {\n\t\t\tcount: number\n\t\t\tof: number\n\t\t\tuom: string\n\t\t}\n\t\tchecked?: boolean\n\t}\n}>()\n\nconst listItem = ref(item)\n</script>\n","<template>\n\t<ul class=\"beam_list-view\">\n\t\t<li v-for=\"item in items\" :key=\"item.label\">\n\t\t\t<template v-if=\"item.linkComponent\">\n\t\t\t\t<component :is=\"item.linkComponent\" :to=\"item.route\" tabindex=\"-1\">\n\t\t\t\t\t<ListItem :item=\"item\"></ListItem>\n\t\t\t\t</component>\n\t\t\t</template>\n\t\t\t<template v-else>\n\t\t\t\t<ListItem :item=\"item\"></ListItem>\n\t\t\t</template>\n\t\t</li>\n\t</ul>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, onUnmounted } from 'vue'\n\nimport ListItem from '@/components/ListItem.vue'\n\ndefineProps<{\n\titems: {\n\t\tlabel: string\n\t\tdescription: string\n\t\tcount?: {\n\t\t\tcount: number\n\t\t\tof: number\n\t\t\tuom: string\n\t\t}\n\t\tchecked?: boolean\n\t\tlinkComponent?: string\n\t\troute?: string\n\t}[]\n}>()\n\nconst emit = defineEmits<{ scrollbottom: [] }>()\n\nonMounted(() => {\n\twindow.addEventListener('scroll', handleScroll)\n})\n\nonUnmounted(() => {\n\twindow.removeEventListener('scroll', handleScroll)\n})\n\nconst handleScroll = () => {\n\tconst scrollHeightDifference = document.documentElement.scrollHeight - window.innerHeight\n\tconst scrollposition = document.documentElement.scrollTop\n\tif (scrollHeightDifference - scrollposition <= 2) {\n\t\temit('scrollbottom')\n\t}\n}\n</script>\n","<template>\n\t<nav class=\"beam_navbar\">\n\t\t<slot name=\"title\">\n\t\t\t<BeamHeading>TITLE</BeamHeading>\n\t\t</slot>\n\t\t<button class=\"navbar-action beam_btn\" @click=\"handlePrimaryAction\">\n\t\t\t<slot name=\"navbaraction\">Action</slot>\n\t\t</button>\n\t</nav>\n</template>\n\n<script setup lang=\"ts\">\nconst emit = defineEmits<{ click: [] }>()\n\nconst handlePrimaryAction = () => {\n\temit('click')\n}\n</script>\n","/*\n * onScan.js - scan-events for hardware barcodes scanners in javascript\n */\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory()) :\n global.onScan = factory()\n}(this, (function () {\n\tvar onScan = {\t\n\t\t\n\t\t/**\n\t\t * \n\t\t * @param DomElement oDomElement\n\t\t * @param Object oOptions\n\t\t * @return self\n\t\t */\n\t\tattachTo: function(oDomElement, oOptions) {\n\t\n\t\t\tif(oDomElement.scannerDetectionData !== undefined){\n\t\t\t\tthrow new Error(\"onScan.js is already initialized for DOM element \" + oDomElement);\n\t\t\t}\n\t\n\t\t\tvar oDefaults = {\n\t\t\t\tonScan: function(sScanned, iQty){}, // Callback after detection of a successfull scanning: function(){sScancode, iCount)}()\n\t\t\t\tonScanError: function(oDebug){}, // Callback after detection of a unsuccessfull scanning (scanned string in parameter)\n\t\t\t\tonKeyProcess: function(sChar, oEvent){}, // Callback after receiving and processing a char (scanned char in parameter)\n\t\t\t\tonKeyDetect: function(iKeyCode, oEvent){}, // Callback after detecting a keyDown (key char in parameter) - in contrast to onKeyProcess, this fires for non-character keys like tab, arrows, etc. too!\n\t\t\t\tonPaste: function(sPasted, oEvent){}, // Callback after receiving a value on paste, no matter if it is a valid code or not\n\t\t\t\tkeyCodeMapper: function(oEvent) {return onScan.decodeKeyEvent(oEvent)}, // Custom function to decode a keydown event into a character. Must return decoded character or NULL if the given event should not be processed.\n\t\t\t\tonScanButtonLongPress: function(){}, // Callback after detection of a successfull scan while the scan button was pressed and held down\n\t\t\t\tscanButtonKeyCode:false, // Key code of the scanner hardware button (if the scanner button a acts as a key itself) \n\t\t\t\tscanButtonLongPressTime:500, // How long (ms) the hardware button should be pressed, until a callback gets executed\n\t\t\t\ttimeBeforeScanTest:100, // Wait duration (ms) after keypress event to check if scanning is finished\n\t\t\t\tavgTimeByChar:30, // Average time (ms) between 2 chars. Used to do difference between keyboard typing and scanning\n\t\t\t\tminLength:6, // Minimum length for a scanning\n\t\t\t\tsuffixKeyCodes:[9,13], // Chars to remove and means end of scanning\n\t\t\t\tprefixKeyCodes:[], // Chars to remove and means start of scanning\n\t\t\t\tignoreIfFocusOn:false, // do not handle scans if the currently focused element matches this selector or object\n\t\t\t\tstopPropagation:false, // Stop immediate propagation on keypress event\n\t\t\t\tpreventDefault:false, // Prevent default action on keypress event\n\t\t\t\tcaptureEvents:false, // Get the events before any listeners deeper in the DOM\n\t\t\t\treactToKeydown:true, // look for scan input in keyboard events\n\t\t\t\treactToPaste:false, // look for scan input in paste events\n\t\t\t\tsingleScanQty: 1, // Quantity of Items put out to onScan in a single scan\n\t\t\t}\n\t\t\t\t\t\t\t\t\t\n\t\t\toOptions = this._mergeOptions(oDefaults, oOptions);\n\t\n\t\t\t// initializing options and variables on DomElement\n\t\t\toDomElement.scannerDetectionData = {\n\t\t\t\t\toptions: oOptions,\n\t\t\t\t\tvars:{\n\t\t\t\t\t\tfirstCharTime: 0,\n\t\t\t\t\t\tlastCharTime: 0,\n\t\t\t\t\t\taccumulatedString: '',\n\t\t\t\t\t\ttestTimer: false,\n\t\t\t\t\t\tlongPressTimeStart: 0,\n\t\t\t\t\t\tlongPressed: false\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t};\n\t\t\t\n\t\t\t// initializing handlers (based on settings)\n\t\t\tif (oOptions.reactToPaste === true){\n\t\t\t\toDomElement.addEventListener(\"paste\", this._handlePaste, oOptions.captureEvents);\n\t\t\t}\n\t\t\tif (oOptions.scanButtonKeyCode !== false){\n\t\t\t\toDomElement.addEventListener(\"keyup\", this._handleKeyUp, oOptions.captureEvents);\n\t\t\t}\n\t\t\tif (oOptions.reactToKeydown === true || oOptions.scanButtonKeyCode !== false){\t\n\t\t\t\toDomElement.addEventListener(\"keydown\", this._handleKeyDown, oOptions.captureEvents);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * \n\t\t * @param DomElement oDomElement\n\t\t * @return void\n\t\t */\n\t\tdetachFrom: function(oDomElement) {\n\t\t\t// detaching all used events\n\t\t\tif (oDomElement.scannerDetectionData.options.reactToPaste){\n\t\t\t\toDomElement.removeEventListener(\"paste\", this._handlePaste);\n\t\t\t}\n\t\t\tif (oDomElement.scannerDetectionData.options.scanButtonKeyCode !== false){\n\t\t\t\toDomElement.removeEventListener(\"keyup\", this._handleKeyUp);\n\t\t\t}\n\t\t\toDomElement.removeEventListener(\"keydown\", this._handleKeyDown);\n\t\t\t\n\t\t\t// clearing data off DomElement\n\t\t\toDomElement.scannerDetectionData = undefined; \n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * \n\t\t * @param DomElement oDomElement\n\t\t * @return Object\n\t\t */\n\t\tgetOptions: function(oDomElement){\n\t\t\treturn oDomElement.scannerDetectionData.options;\t\t\t\n\t\t},\n\t\n\t\t/**\n\t\t * \n\t\t * @param DomElement oDomElement\n\t\t * @param Object oOptions\n\t\t * @return self\n\t\t */\n\t\tsetOptions: function(oDomElement, oOptions){\n\t\t\t// check if some handlers need to be changed based on possible option changes\n\t\t\tswitch (oDomElement.scannerDetectionData.options.reactToPaste){\n\t\t\t\tcase true: \n\t\t\t\t\tif (oOptions.reactToPaste === false){\n\t\t\t\t\t\toDomElement.removeEventListener(\"paste\", this._handlePaste);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase false:\n\t\t\t\t\tif (oOptions.reactToPaste === true){\n\t\t\t\t\t\toDomElement.addEventListener(\"paste\", this._handlePaste);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tswitch (oDomElement.scannerDetectionData.options.scanButtonKeyCode){\n\t\t\t\tcase false:\n\t\t\t\t\tif (oOptions.scanButtonKeyCode !== false){\n\t\t\t\t\t\toDomElement.addEventListener(\"keyup\", this._handleKeyUp);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: \n\t\t\t\t\tif (oOptions.scanButtonKeyCode === false){\n\t\t\t\t\t\toDomElement.removeEventListener(\"keyup\", this._handleKeyUp);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\t// merge old and new options\n\t\t\toDomElement.scannerDetectionData.options = this._mergeOptions(oDomElement.scannerDetectionData.options, oOptions);\n\t\t\n\t\t\t// reinitiallize\n\t\t\tthis._reinitialize(oDomElement);\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Transforms key codes into characters.\n\t\t * \n\t\t * By default, only the follwing key codes are taken into account\n\t\t * - 48-90 (letters and regular numbers)\n\t\t * - 96-105 (numeric keypad numbers)\n\t\t * - 106-111 (numeric keypad operations)\n\t\t * \n\t\t * All other keys will yield empty strings!\n\t\t * \n\t\t * The above keycodes will be decoded using the KeyboardEvent.key property on modern\n\t\t * browsers. On older browsers the method will fall back to String.fromCharCode()\n\t\t * putting the result to upper/lower case depending on KeyboardEvent.shiftKey if\n\t\t * it is set.\n\t\t * \n\t\t * @param KeyboardEvent oEvent\n\t\t * @return string\n\t\t */\n\t\tdecodeKeyEvent : function (oEvent) {\n\t\t\tvar iCode = this._getNormalizedKeyNum(oEvent);\n\t\t\tswitch (true) {\n\t\t\t\tcase iCode >= 48 && iCode <= 90: // numbers and letters\n\t\t\t\tcase iCode >= 106 && iCode <= 111: // operations on numeric keypad (+, -, etc.)\n\t\t\t\t\tif (oEvent.key !== undefined && oEvent.key !== '') {\n\t\t\t\t\t\treturn oEvent.key;\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\tvar sDecoded = String.fromCharCode(iCode);\n\t\t\t\t\tswitch (oEvent.shiftKey) {\n\t\t\t\t\t\tcase false: sDecoded = sDecoded.toLowerCase(); break;\n\t\t\t\t\t\tcase true: sDecoded = sDecoded.toUpperCase(); break;\n\t\t\t\t\t}\n\t\t\t\t\treturn sDecoded;\n\t\t\t\tcase iCode >= 96 && iCode <= 105: // numbers on numeric keypad\n\t\t\t\t\treturn 0+(iCode-96);\n\t\t\t}\n\t\t\treturn '';\n\t\t},\n\t\t\n\t\t/**\n\t\t * Simulates a scan of the provided code.\n\t *\n\t\t * The scan code can be defined as\n\t\t * - a string - in this case no keyCode decoding is done and the code is merely validated\n\t\t * against constraints like minLenght, etc.\n\t\t * - an array of keyCodes (e.g. `[70,71,80]`) - will produce `keydown` events with corresponding\n\t\t * `keyCode` properties. NOTE: these events will have empty `key` properties, so decoding may\n\t\t * yield different results than with native events.\n\t\t * - an array of objects (e.g. `[{keyCode: 70, key: \"F\", shiftKey: true}, {keyCode: 71, key: \"g\"}]`) -\n\t\t * this way almost any event can be simulated, but it's a lot of work to do.\n\t\t *\n\t\t * @param DomElement oDomElement\n\t\t * @param string|array mStringOrArray\n\t\t * @return self\n\t\t */\n\t\tsimulate: function(oDomElement, mStringOrArray){\n\t\t\tthis._reinitialize(oDomElement);\n\t\t\tif (Array.isArray(mStringOrArray)){\n\t\t\t\tmStringOrArray.forEach(function(mKey){\n\t\t\t\t\tvar oEventProps = {};\n\t\t\t\t\tif( (typeof mKey === \"object\" || typeof mKey === 'function') && (mKey !== null) ) {\n\t\t\t\t\t\toEventProps = mKey;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toEventProps.keyCode = parseInt(mKey);\n\t\t\t\t\t}\n\t\t\t\t\tvar oEvent = new KeyboardEvent('keydown', oEventProps);\n\t\t\t\t\tdocument.dispatchEvent(oEvent);\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tthis._validateScanCode(oDomElement, mStringOrArray);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * @private\n\t\t * @param DomElement oDomElement\n\t\t * @return void\n\t\t */\n\t\t_reinitialize: function(oDomElement){\n\t\t\tvar oVars = oDomElement.scannerDetectionData.vars;\n\t\t\toVars.firstCharTime = 0;\n\t\t\toVars.lastCharTime = 0;\n\t\t\toVars.accumulatedString = '';\n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * @private\n\t\t * @param DomElement oDomElement\n\t * @return boolean\n\t\t */\n\t\t_isFocusOnIgnoredElement: function(oDomElement){\n\t\t\t\n\t\t\tvar ignoreSelectors = oDomElement.scannerDetectionData.options.ignoreIfFocusOn;\n\t\n\t if(!ignoreSelectors){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\n\t\t\tvar oFocused = document.activeElement;\n\t\t\t\n\t\t\t// checks if ignored element is an array, and if so it checks if one of the elements of it is an active one\n\t\t\tif (Array.isArray(ignoreSelectors)){\n\t\t\t\tfor(var i=0; i<ignoreSelectors.length; i++){\n\t\t\t\t\tif(oFocused.matches(ignoreSelectors[i]) === true){\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// if the option consists of an single element, it only checks this one\n\t\t\t} else if (oFocused.matches(ignoreSelectors)){\n\t\t\t\treturn true;\t\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t// if the active element is not listed in the ignoreIfFocusOn option, return false\n\t\t return false;\n\t },\n\t\t\n\t /**\n\t * Validates the scan code accumulated by the given DOM element and fires the respective events.\n\t * \n\t * @private\n\t * @param DomElement oDomElement\n\t * @return boolean\n\t */\n\t\t_validateScanCode: function(oDomElement, sScanCode){\n\t\t\tvar oScannerData = oDomElement.scannerDetectionData;\t\t\t\n\t\t\tvar oOptions = oScannerData.options;\n\t\t\tvar iSingleScanQty = oScannerData.options.singleScanQty;\n\t\t\tvar iFirstCharTime = oScannerData.vars.firstCharTime;\n\t\t\tvar iLastCharTime = oScannerData.vars.lastCharTime;\n\t\t\tvar oScanError = {};\n\t var oEvent;\n\t \n\t\t\tswitch(true){\n\t\t\t\t\n\t\t\t\t// detect codes that are too short\n\t\t\t\tcase (sScanCode.length < oOptions.minLength):\n\t\t\t\t\toScanError = {\n\t\t\t\t\t\tmessage: \"Receieved code is shorter then minimal length\"\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t// detect codes that were entered too slow\t\n\t\t\t\tcase ((iLastCharTime - iFirstCharTime) > (sScanCode.length * oOptions.avgTimeByChar)):\n\t\t\t\t\toScanError = {\n\t\t\t\t\t\tmessage: \"Receieved code was not entered in time\"\n\t\t\t\t\t};\t\t\t\t\n\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t// if a code was not filtered out earlier it is valid\t\n\t\t\t\tdefault:\n\t\t\t\t\toOptions.onScan.call(oDomElement, sScanCode, iSingleScanQty);\n\t\t\t\t\toEvent = new CustomEvent(\n\t\t\t\t\t\t'scan',\n\t\t\t\t\t\t{\t\n\t\t\t\t\t\t\tdetail: { \n\t\t\t\t\t\t\t\tscanCode: sScanCode,\n\t\t\t\t\t\t\t\tqty: iSingleScanQty\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\toDomElement.dispatchEvent(oEvent);\n\t\t\t\t\tonScan._reinitialize(oDomElement);\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\t// If an error occurred (otherwise the method would return earlier) create an object for errordetection\n\t\t\toScanError.scanCode = sScanCode;\n\t\t\toScanError.scanDuration = iLastCharTime - iFirstCharTime;\n\t\t\toScanError.avgTimeByChar = oOptions.avgTimeByChar;\n\t\t\toScanError.minLength = oOptions.minLength;\n\t\t\t\n\t\t\toOptions.onScanError.call(oDomElement, oScanError);\n\t\t\t\n\t\t\toEvent = new CustomEvent(\n\t\t\t\t'scanError', \n\t\t\t\t{detail: oScanError}\n\t\t\t);\n\t\t\toDomElement.dispatchEvent(oEvent);\n\t\t\t\n\t\t\tonScan._reinitialize(oDomElement);\n\t\t\treturn false;\n\t },\n\t\n\t /**\n\t * @private\n\t * @param Object oDefaults\n\t * @param Object oOptions\n\t * @return Object\n\t */\n\t\t_mergeOptions: function(oDefaults, oOptions){\n\t\t\tvar oExtended = {};\n\t\t\tvar prop;\n\t\t\tfor (prop in oDefaults){\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(oDefaults, prop)){\n\t\t\t\t\toExtended[prop] = oDefaults[prop];\n\t\t\t\t}\n\t\t\t}\t\t\t\n\t\t\tfor (prop in oOptions){\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(oOptions, prop)){\n\t\t\t\t\toExtended[prop] = oOptions[prop];\n\t\t\t\t}\n\t\t\t}\t\t\t\n\t\t\treturn oExtended;\n\t\t},\n\t\n\t\t/**\n\t\t * @private\n\t\t * @param KeyboardEvent e\n\t\t * @return int\n\t\t * @see https://www.w3schools.com/jsref/event_key_keycode.asp\n\t\t */\n\t\t_getNormalizedKeyNum: function(e){\n\t\t\treturn e.which || e.keyCode;\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * @private\n\t\t * @param KeyboardEvent e\n\t\t * @return void\n\t\t */\n\t\t_handleKeyDown: function(e){\n\t\t\tvar iKeyCode = onScan._getNormalizedKeyNum(e);\n\t\t\tvar oOptions = this.scannerDetectionData.options;\n\t\t\tvar oVars = this.scannerDetectionData.vars;\n\t\t\tvar bScanFinished = false;\n\t\t\t\n\t\t\tif (oOptions.onKeyDetect.call(this, iKeyCode, e) === false) {\n\t\t\t\treturn;\n\t\t\t}\t\t\n\t\t\t\n\t\t\tif (onScan._isFocusOnIgnoredElement(this)){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\t\t\t\n\t // If it's just the button of the scanner, ignore it and wait for the real input\n\t\t if(oOptions.scanButtonKeyCode !== false && iKeyCode==oOptions.scanButtonKeyCode) {\n\t\t\t\t\n\t\t\t\t// if the button was first pressed, start a timeout for the callback, which gets interrupted if the scanbutton gets released\n\t\t\t\tif (!oVars.longPressed){\n\t\t\t\t\toVars.longPressTimer = setTimeout( oOptions.onScanButtonLongPress, oOptions.scanButtonLongPressTime, this);\n\t\t\t\t\toVars.longPressed = true;\n\t\t\t\t}\n\t\n\t\t\t\treturn;\n\t }\n\t\t\t\n\t\t\tswitch(true){\n\t\t\t\t// If it's not the first character and we encounter a terminating character, trigger scan process\n\t\t\t\tcase (oVars.firstCharTime && oOptions.suffixKeyCodes.indexOf(iKeyCode)!==-1):\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\tbScanFinished=true;\n\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t// If it's the first character and we encountered one of the starting characters, don't process the scan\t\n\t\t\t\tcase (!oVars.firstCharTime && oOptions.prefixKeyCodes.indexOf(iKeyCode)!==-1):\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\tbScanFinished=false;\n\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t// Otherwise, just add the character to the scan string we're building\t\n\t\t\t\tdefault:\n\t\t\t\t\tvar character = oOptions.keyCodeMapper.call(this, e);\n\t\t\t\t\tif (character === null){\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\toVars.accumulatedString += character;\n\t\t\t\t\t\n\t\t\t\t\tif (oOptions.preventDefault) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tif (oOptions.stopPropagation) {\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tbScanFinished=false;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t \n\t\t\tif(!oVars.firstCharTime){\n\t\t\t\toVars.firstCharTime=Date.now();\n\t\t\t}\n\t\t\t\n\t\t\toVars.lastCharTime=Date.now();\n\t\n\t\t\tif(oVars.testTimer){ \n\t\t\t\tclearTimeout(oVars.testTimer);\n\t\t\t}\n\t\t\t\n\t\t\tif(bScanFinished){\n\t\t\t\tonScan._validateScanCode(this, oVars.accumulatedString);\n\t\t\t\toVars.testTimer=false;\n\t\t\t} else {\n\t\t\t\toVars.testTimer=setTimeout(onScan._validateScanCode, oOptions.timeBeforeScanTest, this, oVars.accumulatedString);\n\t\t\t}\n\t\n\t\t\toOptions.onKeyProcess.call(this, character, e);\n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * @private\n\t\t * @param Event e\n\t\t * @return void\n\t\t */\n\t\t_handlePaste: function(e){\n\t\n\t\t\tvar oOptions = this.scannerDetectionData.options;\n\t\t\tvar oVars = this.scannerDetectionData.vars;\n\t\t\tvar sPasteString = (event.clipboardData || window.clipboardData).getData('text');\n\t\t\t\n\t\t\t// if the focus is on an ignored element, abort\n\t\t\tif (onScan._isFocusOnIgnoredElement(this)){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\te.preventDefault();\n\n\t\t\tif (oOptions.stopPropagation) {\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t\toOptions.onPaste.call(this, sPasteString, event);\n\t\t\t\n\t\t\toVars.firstCharTime = 0;\n\t\t\toVars.lastCharTime = 0;\n\t\t\t\n\t\t\t// validate the string\n\t\t\tonScan._validateScanCode(this, sPasteString);\n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * @private\n\t\t * @param KeyboardEvent e\n\t\t * @return void\n\t\t */\n\t\t_handleKeyUp: function(e){\n\t\t\t// if the focus is on an ignored element, abort\n\t\t\tif (onScan._isFocusOnIgnoredElement(this)){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar iKeyCode = onScan._getNormalizedKeyNum(e);\n\t\t\t\n\t\t\t// if hardware key is not being pressed anymore stop the timeout and reset\n\t\t\tif (iKeyCode == this.scannerDetectionData.options.scanButtonKeyCode){\n\t\t\t\tclearTimeout(this.scannerDetectionData.vars.longPressTimer);\n\t\t\t\tthis.scannerDetectionData.vars.longPressed = false;\n\t\t\t}\n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Returns TRUE the scanner is currently in the middle of a scan sequence.\n\t\t * \n\t\t * @param DomElement\n\t\t * @return boolean\n\t\t */\n\t\tisScanInProgressFor: function(oDomElement) {\n\t\t\treturn oDomElement.scannerDetectionData.vars.firstCharTime > 0;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Returns TRUE if onScan is attached to the given DOM element and FALSE otherwise.\n\t\t * \n\t\t * @param DomElement\n\t\t * @return boolean\n\t\t */\n\t\tisAttachedTo: function(oDomElement) {\n\t\t\treturn (oDomElement.scannerDetectionData !== undefined);\n\t\t}\n\t};\n\t\n\treturn onScan;\n})));","<template>\n\t<div id=\"scan_input\"></div>\n</template>\n\n<script setup lang=\"ts\">\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\nimport onScan from 'onscan.js'\nimport { onMounted, onUnmounted } from 'vue'\n\nconst emit = defineEmits<{ scanInstance: [instance: onScan] }>()\nconst props = defineProps<{\n\tscanHandler: (barcode: string, qty: number) => void\n}>()\n\nonMounted(() => {\n\tconst instance = onScan.attachTo(window, { onScan: props.scanHandler })\n\temit('scanInstance', instance)\n})\n\nonUnmounted(() => {\n\tonScan.detachFrom(window)\n})\n</script>\n","<template>\n\t<h1 class=\"beam_header\">\n\t\t<slot></slot>\n\t</h1>\n</template>\n","<template>\n\t<button class=\"beam_btn\">\n\t\t<slot>Action</slot>\n\t</button>\n</template>\n<script setup lang=\"ts\"></script>\n","<template>\n\t<p class=\"beam_metadata_heading\">\n\t\t{{ label }}: <span :class=\"{ 'beam--alert': !complete }\" class=\"beam--normal\">{{ statusMessage }}</span>\n\t</p>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nconst props = defineProps({\n\tlabel: {\n\t\ttype: String,\n\t\tdefault: 'Status',\n\t},\n\tprogressMessage: {\n\t\ttype: String,\n\t\tdefault: 'In Progress',\n\t},\n\tcompleteMessage: {\n\t\ttype: String,\n\t\tdefault: 'Complete',\n\t},\n\tcomplete: Boolean,\n})\n\nconst statusMessage = computed(() => {\n\treturn props.complete ? props.completeMessage : props.progressMessage\n})\n</script>\n","import { App } from 'vue'\n\nimport ActionFooter from '@/components/ActionFooter.vue'\nimport BeamMetadata from './components/BeamMetadata.vue'\nimport BeamModal from '@/components/BeamModal.vue'\nimport BeamModalOutlet from '@/components/BeamModalOutlet.vue'\nimport Confirm from '@/components/Confirm.vue'\nimport ItemCheck from '@/components/ItemCheck.vue'\nimport ItemCount from '@/components/ItemCount.vue'\nimport ListAnchor from '@/components/ListAnchor.vue'\nimport ListItem from '@/components/ListItem.vue'\nimport ListView from '@/components/ListView.vue'\nimport Navbar from '@/components/Navbar.vue'\nimport ScanInput from '@/components/ScanInput.vue'\nimport SplitColumn from './components/SplitColumn.vue'\nimport BeamHeading from './components/BeamHeading.vue'\nimport BeamArrow from './components/BeamArrow.vue'\nimport BeamBtn from './components/BeamBtn.vue'\nimport BeamProgress from './components/BeamProgress.vue'\nimport 'themes/beam.css'\n\n/**\n * Install all Beam components\n * @param app - Vue app instance\n * @public\n */\nfunction install(app: App /* options */) {\n\tapp.component('ActionFooter', ActionFooter)\n\tapp.component('BeamMetadata', BeamMetadata)\n\tapp.component('BeamModal', BeamModal)\n\tapp.component('BeamModalOutlet', BeamModalOutlet)\n\tapp.component('Confirm', Confirm)\n\tapp.component('ItemCheck', ItemCheck)\n\tapp.component('ItemCount', ItemCount)\n\tapp.component('ListAnchor', ListAnchor)\n\tapp.component('ListItem', ListItem)\n\tapp.component('ListView', ListView)\n\tapp.component('Navbar', Navbar)\n\tapp.component('ScanInput', ScanInput)\n\tapp.component('SplitColumn', SplitColumn)\n\tapp.component('BeamHeading', BeamHeading)\n\tapp.component('BeamArrow', BeamArrow)\n\tapp.component('BeamBtn', BeamBtn)\n\tapp.component('BeamProgress', BeamProgress)\n}\n\nexport {\n\tActionFooter,\n\tBeamMetadata,\n\tBeamModal,\n\tBeamModalOutlet,\n\tConfirm,\n\tItemCheck,\n\tItemCount,\n\tListAnchor,\n\tListItem,\n\tListView,\n\tNavbar,\n\tScanInput,\n\tinstall,\n}\n"],"names":["emit","__emit","handleFooterAction","_sfc_render","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","$event","value","_useModel","__props","count","isCountComplete","computed","handleInput","event","newValue","listItem","ref","onMounted","handleScroll","onUnmounted","scrollHeightDifference","scrollposition","handlePrimaryAction","global","factory","module","this","onScan","oDomElement","oOptions","oDefaults","sScanned","iQty","oDebug","sChar","oEvent","iKeyCode","sPasted","iCode","sDecoded","mStringOrArray","mKey","oEventProps","oVars","ignoreSelectors","oFocused","i","sScanCode","oScannerData","iSingleScanQty","iFirstCharTime","iLastCharTime","oScanError","oExtended","prop","e","bScanFinished","character","sPasteString","props","instance","_hoisted_1","_renderSlot","statusMessage","install","app","ActionFooter","BeamMetadata","BeamModal","BeamModalOutlet","Confirm","ItemCheck","ItemCount","ListAnchor","ListItem","ListView","Navbar","ScanInput","SplitColumn","BeamHeading","BeamArrow","BeamBtn","BeamProgress"],"mappings":"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","x_google_ignoreList":[7]}
|
|
1
|
+
{"version":3,"file":"beam.umd.cjs","sources":["../src/components/ActionFooter.vue","../src/components/Confirm.vue","../src/components/ItemCheck.vue","../src/components/ItemCount.vue","../src/components/ListItem.vue","../src/components/ListView.vue","../src/components/Navbar.vue","../../common/temp/node_modules/.pnpm/onscan.js@1.5.2/node_modules/onscan.js/onscan.js","../src/components/ScanInput.vue","../src/components/BeamHeading.vue","../src/components/BeamBtn.vue","../src/components/BeamProgress.vue","../src/index.ts"],"sourcesContent":["<template>\n\t<footer class=\"beam_action-footer\">\n\t\t<span class=\"footer-action-wrapper\">\n\t\t\t<button class=\"beam_btn\" @click=\"handleFooterAction\">\n\t\t\t\t<slot />\n\t\t\t</button>\n\t\t</span>\n\t</footer>\n</template>\n\n<script setup lang=\"ts\">\nconst emit = defineEmits<{ click: [] }>()\n\nconst handleFooterAction = () => {\n\temit('click')\n}\n</script>\n","<template>\n\t<div class=\"beam_modal-confirm\">\n\t\t<h2>Would you like to continue?</h2>\n\t\t<button class=\"beam_btn\" @click=\"$emit('confirmmodal')\">Yes</button>\n\t\t<button class=\"beam_btn\" @click=\"$emit('closemodal')\">No</button>\n\t</div>\n</template>\n","<template>\n\t<label class=\"container\">\n\t\t<input type=\"checkbox\" v-model=\"value\" tabindex=\"-1\" />\n\t\t<div class=\"checkmark\" tabindex=\"0\"></div>\n\t</label>\n</template>\n\n<script setup lang=\"ts\">\nconst value = defineModel<boolean>({ default: false })\n</script>\n\n<style scoped>\n.container {\n\tdisplay: block;\n\tposition: relative;\n\tpadding-left: 2.5ch;\n\tmargin: 0;\n\tmargin-top: 0.5rem;\n\tcursor: pointer;\n\tfont-size: 2rem;\n\t-webkit-user-select: none;\n\t-moz-user-select: none;\n\t-ms-user-select: none;\n\tuser-select: none;\n}\n\n/* hide default checkbox */\n.container input {\n\tposition: absolute;\n\topacity: 0;\n\tcursor: pointer;\n\theight: 0;\n\twidth: 0;\n}\n\n.checkmark {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\theight: 2rem;\n\twidth: 2rem;\n\tbackground-color: #eee;\n\toutline: 2px solid transparent;\n\tborder: 1px solid var(--highlight);\n}\n\n.container:hover input ~ .checkmark {\n\tbackground-color: white;\n}\n\n.container input:checked ~ .checkmark {\n\tbackground-color: var(--brand-secondary);\n}\n\n.checkmark:after {\n\tcontent: '';\n\tposition: absolute;\n\tdisplay: none;\n}\n\n.container input:checked ~ .checkmark:after {\n\tdisplay: block;\n}\n\n.container .checkmark:after {\n\tleft: 25%;\n\ttop: 50%;\n\twidth: 0.5rem;\n\theight: 1rem;\n\tborder: solid var(--text-color);\n\tborder-width: 0 3px 3px 0;\n\t-webkit-transform: rotate(45deg);\n\t-ms-transform: rotate(45deg);\n\ttransform: rotate(45deg) translate(-50%, -50%);\n}\n</style>\n","<template>\n\t<div class=\"beam_item-count\">\n\t\t<span\n\t\t\t:contenteditable=\"editable\"\n\t\t\t:class=\"{ 'beam--alert': !isCountComplete }\"\n\t\t\t@input=\"handleInput\"\n\t\t\t@click=\"handleInput\">\n\t\t\t{{ count }}\n\t\t</span>\n\t\t<span>/{{ denominator }}</span>\n\t\t<span v-if=\"uom\"> {{ uom }}</span>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nconst count = defineModel<number>({ required: true })\nconst {\n\tdenominator,\n\tuom = '',\n\teditable = true,\n} = defineProps<{\n\tdenominator: number\n\tuom?: string\n\teditable?: boolean\n}>()\n\nconst isCountComplete = computed(() => count.value === denominator)\n\nconst handleInput = (event: InputEvent | MouseEvent) => {\n\tevent.preventDefault()\n\tevent.stopPropagation()\n\tconst newValue = Number((event.target as HTMLElement).innerHTML) || 0\n\tcount.value = Math.min(newValue, denominator)\n}\n</script>\n","<template>\n\t<li tabindex=\"0\" class=\"beam_list-item\">\n\t\t<div class=\"beam_list-text\">\n\t\t\t<label class=\"beam--bold\">{{ listItem.label }}</label>\n\t\t\t<p>{{ listItem.description }}</p>\n\t\t</div>\n\n\t\t<ItemCount\n\t\t\tv-if=\"listItem.count\"\n\t\t\tv-model=\"listItem.count.count\"\n\t\t\t:denominator=\"listItem.count.of\"\n\t\t\t:uom=\"listItem.count.uom\"\n\t\t\t:editable=\"true\" />\n\t\t<ItemCheck v-if=\"listItem.hasOwnProperty('checked')\" v-model=\"listItem.checked\" />\n\t</li>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\n\nimport ItemCount from '@/components/ItemCount.vue'\nimport ItemCheck from '@/components/ItemCheck.vue'\n\nconst { item } = defineProps<{\n\titem: {\n\t\tlabel: string\n\t\tdescription: string\n\t\tcount?: {\n\t\t\tcount: number\n\t\t\tof: number\n\t\t\tuom: string\n\t\t}\n\t\tchecked?: boolean\n\t}\n}>()\n\nconst listItem = ref(item)\n</script>\n","<template>\n\t<ul class=\"beam_list-view\">\n\t\t<li v-for=\"item in items\" :key=\"item.label\">\n\t\t\t<template v-if=\"item.linkComponent\">\n\t\t\t\t<component :is=\"item.linkComponent\" :to=\"item.route\" tabindex=\"-1\">\n\t\t\t\t\t<ListItem :item=\"item\"></ListItem>\n\t\t\t\t</component>\n\t\t\t</template>\n\t\t\t<template v-else>\n\t\t\t\t<ListItem :item=\"item\"></ListItem>\n\t\t\t</template>\n\t\t</li>\n\t</ul>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, onUnmounted } from 'vue'\n\nimport ListItem from '@/components/ListItem.vue'\n\ndefineProps<{\n\titems: {\n\t\tlabel: string\n\t\tdescription: string\n\t\tcount?: {\n\t\t\tcount: number\n\t\t\tof: number\n\t\t\tuom: string\n\t\t}\n\t\tchecked?: boolean\n\t\tlinkComponent?: string\n\t\troute?: string\n\t}[]\n}>()\n\nconst emit = defineEmits<{ scrollbottom: [] }>()\n\nonMounted(() => {\n\twindow.addEventListener('scroll', handleScroll)\n})\n\nonUnmounted(() => {\n\twindow.removeEventListener('scroll', handleScroll)\n})\n\nconst handleScroll = () => {\n\tconst scrollHeightDifference = document.documentElement.scrollHeight - window.innerHeight\n\tconst scrollposition = document.documentElement.scrollTop\n\tif (scrollHeightDifference - scrollposition <= 2) {\n\t\temit('scrollbottom')\n\t}\n}\n</script>\n","<template>\n\t<nav class=\"beam_navbar\">\n\t\t<slot name=\"title\">\n\t\t\t<BeamHeading>TITLE</BeamHeading>\n\t\t</slot>\n\t\t<button class=\"navbar-action beam_btn\" @click=\"handlePrimaryAction\">\n\t\t\t<slot name=\"navbaraction\">Action</slot>\n\t\t</button>\n\t</nav>\n</template>\n\n<script setup lang=\"ts\">\nconst emit = defineEmits<{ click: [] }>()\n\nconst handlePrimaryAction = () => {\n\temit('click')\n}\n</script>\n","/*\n * onScan.js - scan-events for hardware barcodes scanners in javascript\n */\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory()) :\n global.onScan = factory()\n}(this, (function () {\n\tvar onScan = {\t\n\t\t\n\t\t/**\n\t\t * \n\t\t * @param DomElement oDomElement\n\t\t * @param Object oOptions\n\t\t * @return self\n\t\t */\n\t\tattachTo: function(oDomElement, oOptions) {\n\t\n\t\t\tif(oDomElement.scannerDetectionData !== undefined){\n\t\t\t\tthrow new Error(\"onScan.js is already initialized for DOM element \" + oDomElement);\n\t\t\t}\n\t\n\t\t\tvar oDefaults = {\n\t\t\t\tonScan: function(sScanned, iQty){}, // Callback after detection of a successfull scanning: function(){sScancode, iCount)}()\n\t\t\t\tonScanError: function(oDebug){}, // Callback after detection of a unsuccessfull scanning (scanned string in parameter)\n\t\t\t\tonKeyProcess: function(sChar, oEvent){}, // Callback after receiving and processing a char (scanned char in parameter)\n\t\t\t\tonKeyDetect: function(iKeyCode, oEvent){}, // Callback after detecting a keyDown (key char in parameter) - in contrast to onKeyProcess, this fires for non-character keys like tab, arrows, etc. too!\n\t\t\t\tonPaste: function(sPasted, oEvent){}, // Callback after receiving a value on paste, no matter if it is a valid code or not\n\t\t\t\tkeyCodeMapper: function(oEvent) {return onScan.decodeKeyEvent(oEvent)}, // Custom function to decode a keydown event into a character. Must return decoded character or NULL if the given event should not be processed.\n\t\t\t\tonScanButtonLongPress: function(){}, // Callback after detection of a successfull scan while the scan button was pressed and held down\n\t\t\t\tscanButtonKeyCode:false, // Key code of the scanner hardware button (if the scanner button a acts as a key itself) \n\t\t\t\tscanButtonLongPressTime:500, // How long (ms) the hardware button should be pressed, until a callback gets executed\n\t\t\t\ttimeBeforeScanTest:100, // Wait duration (ms) after keypress event to check if scanning is finished\n\t\t\t\tavgTimeByChar:30, // Average time (ms) between 2 chars. Used to do difference between keyboard typing and scanning\n\t\t\t\tminLength:6, // Minimum length for a scanning\n\t\t\t\tsuffixKeyCodes:[9,13], // Chars to remove and means end of scanning\n\t\t\t\tprefixKeyCodes:[], // Chars to remove and means start of scanning\n\t\t\t\tignoreIfFocusOn:false, // do not handle scans if the currently focused element matches this selector or object\n\t\t\t\tstopPropagation:false, // Stop immediate propagation on keypress event\n\t\t\t\tpreventDefault:false, // Prevent default action on keypress event\n\t\t\t\tcaptureEvents:false, // Get the events before any listeners deeper in the DOM\n\t\t\t\treactToKeydown:true, // look for scan input in keyboard events\n\t\t\t\treactToPaste:false, // look for scan input in paste events\n\t\t\t\tsingleScanQty: 1, // Quantity of Items put out to onScan in a single scan\n\t\t\t}\n\t\t\t\t\t\t\t\t\t\n\t\t\toOptions = this._mergeOptions(oDefaults, oOptions);\n\t\n\t\t\t// initializing options and variables on DomElement\n\t\t\toDomElement.scannerDetectionData = {\n\t\t\t\t\toptions: oOptions,\n\t\t\t\t\tvars:{\n\t\t\t\t\t\tfirstCharTime: 0,\n\t\t\t\t\t\tlastCharTime: 0,\n\t\t\t\t\t\taccumulatedString: '',\n\t\t\t\t\t\ttestTimer: false,\n\t\t\t\t\t\tlongPressTimeStart: 0,\n\t\t\t\t\t\tlongPressed: false\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t};\n\t\t\t\n\t\t\t// initializing handlers (based on settings)\n\t\t\tif (oOptions.reactToPaste === true){\n\t\t\t\toDomElement.addEventListener(\"paste\", this._handlePaste, oOptions.captureEvents);\n\t\t\t}\n\t\t\tif (oOptions.scanButtonKeyCode !== false){\n\t\t\t\toDomElement.addEventListener(\"keyup\", this._handleKeyUp, oOptions.captureEvents);\n\t\t\t}\n\t\t\tif (oOptions.reactToKeydown === true || oOptions.scanButtonKeyCode !== false){\t\n\t\t\t\toDomElement.addEventListener(\"keydown\", this._handleKeyDown, oOptions.captureEvents);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * \n\t\t * @param DomElement oDomElement\n\t\t * @return void\n\t\t */\n\t\tdetachFrom: function(oDomElement) {\n\t\t\t// detaching all used events\n\t\t\tif (oDomElement.scannerDetectionData.options.reactToPaste){\n\t\t\t\toDomElement.removeEventListener(\"paste\", this._handlePaste);\n\t\t\t}\n\t\t\tif (oDomElement.scannerDetectionData.options.scanButtonKeyCode !== false){\n\t\t\t\toDomElement.removeEventListener(\"keyup\", this._handleKeyUp);\n\t\t\t}\n\t\t\toDomElement.removeEventListener(\"keydown\", this._handleKeyDown);\n\t\t\t\n\t\t\t// clearing data off DomElement\n\t\t\toDomElement.scannerDetectionData = undefined; \n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * \n\t\t * @param DomElement oDomElement\n\t\t * @return Object\n\t\t */\n\t\tgetOptions: function(oDomElement){\n\t\t\treturn oDomElement.scannerDetectionData.options;\t\t\t\n\t\t},\n\t\n\t\t/**\n\t\t * \n\t\t * @param DomElement oDomElement\n\t\t * @param Object oOptions\n\t\t * @return self\n\t\t */\n\t\tsetOptions: function(oDomElement, oOptions){\n\t\t\t// check if some handlers need to be changed based on possible option changes\n\t\t\tswitch (oDomElement.scannerDetectionData.options.reactToPaste){\n\t\t\t\tcase true: \n\t\t\t\t\tif (oOptions.reactToPaste === false){\n\t\t\t\t\t\toDomElement.removeEventListener(\"paste\", this._handlePaste);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase false:\n\t\t\t\t\tif (oOptions.reactToPaste === true){\n\t\t\t\t\t\toDomElement.addEventListener(\"paste\", this._handlePaste);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\tswitch (oDomElement.scannerDetectionData.options.scanButtonKeyCode){\n\t\t\t\tcase false:\n\t\t\t\t\tif (oOptions.scanButtonKeyCode !== false){\n\t\t\t\t\t\toDomElement.addEventListener(\"keyup\", this._handleKeyUp);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault: \n\t\t\t\t\tif (oOptions.scanButtonKeyCode === false){\n\t\t\t\t\t\toDomElement.removeEventListener(\"keyup\", this._handleKeyUp);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\t\n\t\t\t// merge old and new options\n\t\t\toDomElement.scannerDetectionData.options = this._mergeOptions(oDomElement.scannerDetectionData.options, oOptions);\n\t\t\n\t\t\t// reinitiallize\n\t\t\tthis._reinitialize(oDomElement);\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Transforms key codes into characters.\n\t\t * \n\t\t * By default, only the follwing key codes are taken into account\n\t\t * - 48-90 (letters and regular numbers)\n\t\t * - 96-105 (numeric keypad numbers)\n\t\t * - 106-111 (numeric keypad operations)\n\t\t * \n\t\t * All other keys will yield empty strings!\n\t\t * \n\t\t * The above keycodes will be decoded using the KeyboardEvent.key property on modern\n\t\t * browsers. On older browsers the method will fall back to String.fromCharCode()\n\t\t * putting the result to upper/lower case depending on KeyboardEvent.shiftKey if\n\t\t * it is set.\n\t\t * \n\t\t * @param KeyboardEvent oEvent\n\t\t * @return string\n\t\t */\n\t\tdecodeKeyEvent : function (oEvent) {\n\t\t\tvar iCode = this._getNormalizedKeyNum(oEvent);\n\t\t\tswitch (true) {\n\t\t\t\tcase iCode >= 48 && iCode <= 90: // numbers and letters\n\t\t\t\tcase iCode >= 106 && iCode <= 111: // operations on numeric keypad (+, -, etc.)\n\t\t\t\t\tif (oEvent.key !== undefined && oEvent.key !== '') {\n\t\t\t\t\t\treturn oEvent.key;\n\t\t\t\t\t}\n\t\t\t\t\n\t\t\t\t\tvar sDecoded = String.fromCharCode(iCode);\n\t\t\t\t\tswitch (oEvent.shiftKey) {\n\t\t\t\t\t\tcase false: sDecoded = sDecoded.toLowerCase(); break;\n\t\t\t\t\t\tcase true: sDecoded = sDecoded.toUpperCase(); break;\n\t\t\t\t\t}\n\t\t\t\t\treturn sDecoded;\n\t\t\t\tcase iCode >= 96 && iCode <= 105: // numbers on numeric keypad\n\t\t\t\t\treturn 0+(iCode-96);\n\t\t\t}\n\t\t\treturn '';\n\t\t},\n\t\t\n\t\t/**\n\t\t * Simulates a scan of the provided code.\n\t *\n\t\t * The scan code can be defined as\n\t\t * - a string - in this case no keyCode decoding is done and the code is merely validated\n\t\t * against constraints like minLenght, etc.\n\t\t * - an array of keyCodes (e.g. `[70,71,80]`) - will produce `keydown` events with corresponding\n\t\t * `keyCode` properties. NOTE: these events will have empty `key` properties, so decoding may\n\t\t * yield different results than with native events.\n\t\t * - an array of objects (e.g. `[{keyCode: 70, key: \"F\", shiftKey: true}, {keyCode: 71, key: \"g\"}]`) -\n\t\t * this way almost any event can be simulated, but it's a lot of work to do.\n\t\t *\n\t\t * @param DomElement oDomElement\n\t\t * @param string|array mStringOrArray\n\t\t * @return self\n\t\t */\n\t\tsimulate: function(oDomElement, mStringOrArray){\n\t\t\tthis._reinitialize(oDomElement);\n\t\t\tif (Array.isArray(mStringOrArray)){\n\t\t\t\tmStringOrArray.forEach(function(mKey){\n\t\t\t\t\tvar oEventProps = {};\n\t\t\t\t\tif( (typeof mKey === \"object\" || typeof mKey === 'function') && (mKey !== null) ) {\n\t\t\t\t\t\toEventProps = mKey;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toEventProps.keyCode = parseInt(mKey);\n\t\t\t\t\t}\n\t\t\t\t\tvar oEvent = new KeyboardEvent('keydown', oEventProps);\n\t\t\t\t\tdocument.dispatchEvent(oEvent);\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tthis._validateScanCode(oDomElement, mStringOrArray);\n\t\t\t}\n\t\t\treturn this;\n\t\t},\n\t\t\n\t\t/**\n\t\t * @private\n\t\t * @param DomElement oDomElement\n\t\t * @return void\n\t\t */\n\t\t_reinitialize: function(oDomElement){\n\t\t\tvar oVars = oDomElement.scannerDetectionData.vars;\n\t\t\toVars.firstCharTime = 0;\n\t\t\toVars.lastCharTime = 0;\n\t\t\toVars.accumulatedString = '';\n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * @private\n\t\t * @param DomElement oDomElement\n\t * @return boolean\n\t\t */\n\t\t_isFocusOnIgnoredElement: function(oDomElement){\n\t\t\t\n\t\t\tvar ignoreSelectors = oDomElement.scannerDetectionData.options.ignoreIfFocusOn;\n\t\n\t if(!ignoreSelectors){\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\n\t\t\tvar oFocused = document.activeElement;\n\t\t\t\n\t\t\t// checks if ignored element is an array, and if so it checks if one of the elements of it is an active one\n\t\t\tif (Array.isArray(ignoreSelectors)){\n\t\t\t\tfor(var i=0; i<ignoreSelectors.length; i++){\n\t\t\t\t\tif(oFocused.matches(ignoreSelectors[i]) === true){\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t// if the option consists of an single element, it only checks this one\n\t\t\t} else if (oFocused.matches(ignoreSelectors)){\n\t\t\t\treturn true;\t\t\t\t\t\n\t\t\t}\n\t\t\t\n\t\t\t// if the active element is not listed in the ignoreIfFocusOn option, return false\n\t\t return false;\n\t },\n\t\t\n\t /**\n\t * Validates the scan code accumulated by the given DOM element and fires the respective events.\n\t * \n\t * @private\n\t * @param DomElement oDomElement\n\t * @return boolean\n\t */\n\t\t_validateScanCode: function(oDomElement, sScanCode){\n\t\t\tvar oScannerData = oDomElement.scannerDetectionData;\t\t\t\n\t\t\tvar oOptions = oScannerData.options;\n\t\t\tvar iSingleScanQty = oScannerData.options.singleScanQty;\n\t\t\tvar iFirstCharTime = oScannerData.vars.firstCharTime;\n\t\t\tvar iLastCharTime = oScannerData.vars.lastCharTime;\n\t\t\tvar oScanError = {};\n\t var oEvent;\n\t \n\t\t\tswitch(true){\n\t\t\t\t\n\t\t\t\t// detect codes that are too short\n\t\t\t\tcase (sScanCode.length < oOptions.minLength):\n\t\t\t\t\toScanError = {\n\t\t\t\t\t\tmessage: \"Receieved code is shorter then minimal length\"\n\t\t\t\t\t};\n\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t// detect codes that were entered too slow\t\n\t\t\t\tcase ((iLastCharTime - iFirstCharTime) > (sScanCode.length * oOptions.avgTimeByChar)):\n\t\t\t\t\toScanError = {\n\t\t\t\t\t\tmessage: \"Receieved code was not entered in time\"\n\t\t\t\t\t};\t\t\t\t\n\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t// if a code was not filtered out earlier it is valid\t\n\t\t\t\tdefault:\n\t\t\t\t\toOptions.onScan.call(oDomElement, sScanCode, iSingleScanQty);\n\t\t\t\t\toEvent = new CustomEvent(\n\t\t\t\t\t\t'scan',\n\t\t\t\t\t\t{\t\n\t\t\t\t\t\t\tdetail: { \n\t\t\t\t\t\t\t\tscanCode: sScanCode,\n\t\t\t\t\t\t\t\tqty: iSingleScanQty\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\toDomElement.dispatchEvent(oEvent);\n\t\t\t\t\tonScan._reinitialize(oDomElement);\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t\t\n\t\t\t// If an error occurred (otherwise the method would return earlier) create an object for errordetection\n\t\t\toScanError.scanCode = sScanCode;\n\t\t\toScanError.scanDuration = iLastCharTime - iFirstCharTime;\n\t\t\toScanError.avgTimeByChar = oOptions.avgTimeByChar;\n\t\t\toScanError.minLength = oOptions.minLength;\n\t\t\t\n\t\t\toOptions.onScanError.call(oDomElement, oScanError);\n\t\t\t\n\t\t\toEvent = new CustomEvent(\n\t\t\t\t'scanError', \n\t\t\t\t{detail: oScanError}\n\t\t\t);\n\t\t\toDomElement.dispatchEvent(oEvent);\n\t\t\t\n\t\t\tonScan._reinitialize(oDomElement);\n\t\t\treturn false;\n\t },\n\t\n\t /**\n\t * @private\n\t * @param Object oDefaults\n\t * @param Object oOptions\n\t * @return Object\n\t */\n\t\t_mergeOptions: function(oDefaults, oOptions){\n\t\t\tvar oExtended = {};\n\t\t\tvar prop;\n\t\t\tfor (prop in oDefaults){\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(oDefaults, prop)){\n\t\t\t\t\toExtended[prop] = oDefaults[prop];\n\t\t\t\t}\n\t\t\t}\t\t\t\n\t\t\tfor (prop in oOptions){\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(oOptions, prop)){\n\t\t\t\t\toExtended[prop] = oOptions[prop];\n\t\t\t\t}\n\t\t\t}\t\t\t\n\t\t\treturn oExtended;\n\t\t},\n\t\n\t\t/**\n\t\t * @private\n\t\t * @param KeyboardEvent e\n\t\t * @return int\n\t\t * @see https://www.w3schools.com/jsref/event_key_keycode.asp\n\t\t */\n\t\t_getNormalizedKeyNum: function(e){\n\t\t\treturn e.which || e.keyCode;\n\t\t},\n\t\n\t\n\t\t/**\n\t\t * @private\n\t\t * @param KeyboardEvent e\n\t\t * @return void\n\t\t */\n\t\t_handleKeyDown: function(e){\n\t\t\tvar iKeyCode = onScan._getNormalizedKeyNum(e);\n\t\t\tvar oOptions = this.scannerDetectionData.options;\n\t\t\tvar oVars = this.scannerDetectionData.vars;\n\t\t\tvar bScanFinished = false;\n\t\t\t\n\t\t\tif (oOptions.onKeyDetect.call(this, iKeyCode, e) === false) {\n\t\t\t\treturn;\n\t\t\t}\t\t\n\t\t\t\n\t\t\tif (onScan._isFocusOnIgnoredElement(this)){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\t\t\t\n\t // If it's just the button of the scanner, ignore it and wait for the real input\n\t\t if(oOptions.scanButtonKeyCode !== false && iKeyCode==oOptions.scanButtonKeyCode) {\n\t\t\t\t\n\t\t\t\t// if the button was first pressed, start a timeout for the callback, which gets interrupted if the scanbutton gets released\n\t\t\t\tif (!oVars.longPressed){\n\t\t\t\t\toVars.longPressTimer = setTimeout( oOptions.onScanButtonLongPress, oOptions.scanButtonLongPressTime, this);\n\t\t\t\t\toVars.longPressed = true;\n\t\t\t\t}\n\t\n\t\t\t\treturn;\n\t }\n\t\t\t\n\t\t\tswitch(true){\n\t\t\t\t// If it's not the first character and we encounter a terminating character, trigger scan process\n\t\t\t\tcase (oVars.firstCharTime && oOptions.suffixKeyCodes.indexOf(iKeyCode)!==-1):\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\tbScanFinished=true;\n\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t// If it's the first character and we encountered one of the starting characters, don't process the scan\t\n\t\t\t\tcase (!oVars.firstCharTime && oOptions.prefixKeyCodes.indexOf(iKeyCode)!==-1):\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\tbScanFinished=false;\n\t\t\t\t\tbreak;\n\t\t\t\t\t\n\t\t\t\t// Otherwise, just add the character to the scan string we're building\t\n\t\t\t\tdefault:\n\t\t\t\t\tvar character = oOptions.keyCodeMapper.call(this, e);\n\t\t\t\t\tif (character === null){\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\toVars.accumulatedString += character;\n\t\t\t\t\t\n\t\t\t\t\tif (oOptions.preventDefault) {\n\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tif (oOptions.stopPropagation) {\n\t\t\t\t\t\te.stopImmediatePropagation();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tbScanFinished=false;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t \n\t\t\tif(!oVars.firstCharTime){\n\t\t\t\toVars.firstCharTime=Date.now();\n\t\t\t}\n\t\t\t\n\t\t\toVars.lastCharTime=Date.now();\n\t\n\t\t\tif(oVars.testTimer){ \n\t\t\t\tclearTimeout(oVars.testTimer);\n\t\t\t}\n\t\t\t\n\t\t\tif(bScanFinished){\n\t\t\t\tonScan._validateScanCode(this, oVars.accumulatedString);\n\t\t\t\toVars.testTimer=false;\n\t\t\t} else {\n\t\t\t\toVars.testTimer=setTimeout(onScan._validateScanCode, oOptions.timeBeforeScanTest, this, oVars.accumulatedString);\n\t\t\t}\n\t\n\t\t\toOptions.onKeyProcess.call(this, character, e);\n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * @private\n\t\t * @param Event e\n\t\t * @return void\n\t\t */\n\t\t_handlePaste: function(e){\n\t\n\t\t\tvar oOptions = this.scannerDetectionData.options;\n\t\t\tvar oVars = this.scannerDetectionData.vars;\n\t\t\tvar sPasteString = (event.clipboardData || window.clipboardData).getData('text');\n\t\t\t\n\t\t\t// if the focus is on an ignored element, abort\n\t\t\tif (onScan._isFocusOnIgnoredElement(this)){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\te.preventDefault();\n\n\t\t\tif (oOptions.stopPropagation) {\n\t\t\t\te.stopImmediatePropagation();\n\t\t\t}\n\t\t\t\t\t\t\n\t\t\toOptions.onPaste.call(this, sPasteString, event);\n\t\t\t\n\t\t\toVars.firstCharTime = 0;\n\t\t\toVars.lastCharTime = 0;\n\t\t\t\n\t\t\t// validate the string\n\t\t\tonScan._validateScanCode(this, sPasteString);\n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * @private\n\t\t * @param KeyboardEvent e\n\t\t * @return void\n\t\t */\n\t\t_handleKeyUp: function(e){\n\t\t\t// if the focus is on an ignored element, abort\n\t\t\tif (onScan._isFocusOnIgnoredElement(this)){\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tvar iKeyCode = onScan._getNormalizedKeyNum(e);\n\t\t\t\n\t\t\t// if hardware key is not being pressed anymore stop the timeout and reset\n\t\t\tif (iKeyCode == this.scannerDetectionData.options.scanButtonKeyCode){\n\t\t\t\tclearTimeout(this.scannerDetectionData.vars.longPressTimer);\n\t\t\t\tthis.scannerDetectionData.vars.longPressed = false;\n\t\t\t}\n\t\t\treturn;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Returns TRUE the scanner is currently in the middle of a scan sequence.\n\t\t * \n\t\t * @param DomElement\n\t\t * @return boolean\n\t\t */\n\t\tisScanInProgressFor: function(oDomElement) {\n\t\t\treturn oDomElement.scannerDetectionData.vars.firstCharTime > 0;\n\t\t},\n\t\t\n\t\t/**\n\t\t * Returns TRUE if onScan is attached to the given DOM element and FALSE otherwise.\n\t\t * \n\t\t * @param DomElement\n\t\t * @return boolean\n\t\t */\n\t\tisAttachedTo: function(oDomElement) {\n\t\t\treturn (oDomElement.scannerDetectionData !== undefined);\n\t\t}\n\t};\n\t\n\treturn onScan;\n})));","<template>\n\t<div id=\"scan_input\"></div>\n</template>\n\n<script setup lang=\"ts\">\n/* eslint-disable @typescript-eslint/no-unsafe-call */\n/* eslint-disable @typescript-eslint/no-unsafe-member-access */\n\nimport onScan from 'onscan.js'\nimport { onMounted, onUnmounted } from 'vue'\n\nconst emit = defineEmits<{ scanInstance: [instance: onScan] }>()\nconst props = defineProps<{\n\tscanHandler: (barcode: string, qty: number) => void\n}>()\n\nonMounted(() => {\n\tconst instance = onScan.attachTo(window, { onScan: props.scanHandler })\n\temit('scanInstance', instance)\n})\n\nonUnmounted(() => {\n\tonScan.detachFrom(window)\n})\n</script>\n","<template>\n\t<h1 class=\"beam_header\">\n\t\t<slot></slot>\n\t</h1>\n</template>\n","<template>\n\t<button class=\"beam_btn\">\n\t\t<slot>Action</slot>\n\t</button>\n</template>\n<script setup lang=\"ts\"></script>\n","<template>\n\t<p class=\"beam_metadata_heading\">\n\t\t{{ label }}: <span :class=\"{ 'beam--alert': !complete }\" class=\"beam--normal\">{{ statusMessage }}</span>\n\t</p>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\n\nconst props = defineProps({\n\tlabel: {\n\t\ttype: String,\n\t\tdefault: 'Status',\n\t},\n\tprogressMessage: {\n\t\ttype: String,\n\t\tdefault: 'In Progress',\n\t},\n\tcompleteMessage: {\n\t\ttype: String,\n\t\tdefault: 'Complete',\n\t},\n\tcomplete: Boolean,\n})\n\nconst statusMessage = computed(() => {\n\treturn props.complete ? props.completeMessage : props.progressMessage\n})\n</script>\n","import { App } from 'vue'\n\nimport ActionFooter from '@/components/ActionFooter.vue'\nimport BeamMetadata from './components/BeamMetadata.vue'\nimport BeamModal from '@/components/BeamModal.vue'\nimport BeamModalOutlet from '@/components/BeamModalOutlet.vue'\nimport Confirm from '@/components/Confirm.vue'\nimport ItemCheck from '@/components/ItemCheck.vue'\nimport ItemCount from '@/components/ItemCount.vue'\nimport ListAnchor from '@/components/ListAnchor.vue'\nimport ListItem from '@/components/ListItem.vue'\nimport ListView from '@/components/ListView.vue'\nimport Navbar from '@/components/Navbar.vue'\nimport ScanInput from '@/components/ScanInput.vue'\nimport SplitColumn from './components/SplitColumn.vue'\nimport BeamHeading from './components/BeamHeading.vue'\nimport BeamArrow from './components/BeamArrow.vue'\nimport BeamBtn from './components/BeamBtn.vue'\nimport BeamProgress from './components/BeamProgress.vue'\nimport 'themes/beam.css'\n\n/**\n * Install all Beam components\n * @param app - Vue app instance\n * @public\n */\nfunction install(app: App /* options */) {\n\tapp.component('ActionFooter', ActionFooter)\n\tapp.component('BeamMetadata', BeamMetadata)\n\tapp.component('BeamModal', BeamModal)\n\tapp.component('BeamModalOutlet', BeamModalOutlet)\n\tapp.component('Confirm', Confirm)\n\tapp.component('ItemCheck', ItemCheck)\n\tapp.component('ItemCount', ItemCount)\n\tapp.component('ListAnchor', ListAnchor)\n\tapp.component('ListItem', ListItem)\n\tapp.component('ListView', ListView)\n\tapp.component('Navbar', Navbar)\n\tapp.component('ScanInput', ScanInput)\n\tapp.component('SplitColumn', SplitColumn)\n\tapp.component('BeamHeading', BeamHeading)\n\tapp.component('BeamArrow', BeamArrow)\n\tapp.component('BeamBtn', BeamBtn)\n\tapp.component('BeamProgress', BeamProgress)\n}\n\nexport {\n\tActionFooter,\n\tBeamMetadata,\n\tBeamModal,\n\tBeamModalOutlet,\n\tConfirm,\n\tItemCheck,\n\tItemCount,\n\tListAnchor,\n\tListItem,\n\tListView,\n\tNavbar,\n\tScanInput,\n\tSplitColumn,\n\tBeamHeading,\n\tBeamArrow,\n\tBeamBtn,\n\tBeamProgress,\n\tinstall,\n}\n"],"names":["emit","__emit","handleFooterAction","_sfc_render","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","$event","value","_useModel","__props","count","isCountComplete","computed","handleInput","event","newValue","listItem","ref","onMounted","handleScroll","onUnmounted","scrollHeightDifference","scrollposition","handlePrimaryAction","global","factory","module","this","onScan","oDomElement","oOptions","oDefaults","sScanned","iQty","oDebug","sChar","oEvent","iKeyCode","sPasted","iCode","sDecoded","mStringOrArray","mKey","oEventProps","oVars","ignoreSelectors","oFocused","i","sScanCode","oScannerData","iSingleScanQty","iFirstCharTime","iLastCharTime","oScanError","oExtended","prop","e","bScanFinished","character","sPasteString","props","instance","_hoisted_1","_renderSlot","statusMessage","install","app","ActionFooter","BeamMetadata","BeamModal","BeamModalOutlet","Confirm","ItemCheck","ItemCount","ListAnchor","ListItem","ListView","Navbar","ScanInput","SplitColumn","BeamHeading","BeamArrow","BeamBtn","BeamProgress"],"mappings":"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","x_google_ignoreList":[7]}
|
package/dist/index.js
CHANGED
|
@@ -40,4 +40,4 @@ function install(app /* options */) {
|
|
|
40
40
|
app.component('BeamBtn', BeamBtn);
|
|
41
41
|
app.component('BeamProgress', BeamProgress);
|
|
42
42
|
}
|
|
43
|
-
export { ActionFooter, BeamMetadata, BeamModal, BeamModalOutlet, Confirm, ItemCheck, ItemCount, ListAnchor, ListItem, ListView, Navbar, ScanInput, install, };
|
|
43
|
+
export { ActionFooter, BeamMetadata, BeamModal, BeamModalOutlet, Confirm, ItemCheck, ItemCount, ListAnchor, ListItem, ListView, Navbar, ScanInput, SplitColumn, BeamHeading, BeamArrow, BeamBtn, BeamProgress, install, };
|
package/dist/src/index.d.ts
CHANGED
|
@@ -11,6 +11,11 @@ import ListItem from '@/components/ListItem.vue';
|
|
|
11
11
|
import ListView from '@/components/ListView.vue';
|
|
12
12
|
import Navbar from '@/components/Navbar.vue';
|
|
13
13
|
import ScanInput from '@/components/ScanInput.vue';
|
|
14
|
+
import SplitColumn from './components/SplitColumn.vue';
|
|
15
|
+
import BeamHeading from './components/BeamHeading.vue';
|
|
16
|
+
import BeamArrow from './components/BeamArrow.vue';
|
|
17
|
+
import BeamBtn from './components/BeamBtn.vue';
|
|
18
|
+
import BeamProgress from './components/BeamProgress.vue';
|
|
14
19
|
import 'themes/beam.css';
|
|
15
20
|
/**
|
|
16
21
|
* Install all Beam components
|
|
@@ -18,5 +23,5 @@ import 'themes/beam.css';
|
|
|
18
23
|
* @public
|
|
19
24
|
*/
|
|
20
25
|
declare function install(app: App): void;
|
|
21
|
-
export { ActionFooter, BeamMetadata, BeamModal, BeamModalOutlet, Confirm, ItemCheck, ItemCount, ListAnchor, ListItem, ListView, Navbar, ScanInput, install, };
|
|
26
|
+
export { ActionFooter, BeamMetadata, BeamModal, BeamModalOutlet, Confirm, ItemCheck, ItemCount, ListAnchor, ListItem, ListView, Navbar, ScanInput, SplitColumn, BeamHeading, BeamArrow, BeamBtn, BeamProgress, install, };
|
|
22
27
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,OAAO,YAAY,MAAM,+BAA+B,CAAA;AACxD,OAAO,YAAY,MAAM,+BAA+B,CAAA;AACxD,OAAO,SAAS,MAAM,4BAA4B,CAAA;AAClD,OAAO,eAAe,MAAM,kCAAkC,CAAA;AAC9D,OAAO,OAAO,MAAM,0BAA0B,CAAA;AAC9C,OAAO,SAAS,MAAM,4BAA4B,CAAA;AAClD,OAAO,SAAS,MAAM,4BAA4B,CAAA;AAClD,OAAO,UAAU,MAAM,6BAA6B,CAAA;AACpD,OAAO,QAAQ,MAAM,2BAA2B,CAAA;AAChD,OAAO,QAAQ,MAAM,2BAA2B,CAAA;AAChD,OAAO,MAAM,MAAM,yBAAyB,CAAA;AAC5C,OAAO,SAAS,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAEzB,OAAO,YAAY,MAAM,+BAA+B,CAAA;AACxD,OAAO,YAAY,MAAM,+BAA+B,CAAA;AACxD,OAAO,SAAS,MAAM,4BAA4B,CAAA;AAClD,OAAO,eAAe,MAAM,kCAAkC,CAAA;AAC9D,OAAO,OAAO,MAAM,0BAA0B,CAAA;AAC9C,OAAO,SAAS,MAAM,4BAA4B,CAAA;AAClD,OAAO,SAAS,MAAM,4BAA4B,CAAA;AAClD,OAAO,UAAU,MAAM,6BAA6B,CAAA;AACpD,OAAO,QAAQ,MAAM,2BAA2B,CAAA;AAChD,OAAO,QAAQ,MAAM,2BAA2B,CAAA;AAChD,OAAO,MAAM,MAAM,yBAAyB,CAAA;AAC5C,OAAO,SAAS,MAAM,4BAA4B,CAAA;AAClD,OAAO,WAAW,MAAM,8BAA8B,CAAA;AACtD,OAAO,WAAW,MAAM,8BAA8B,CAAA;AACtD,OAAO,SAAS,MAAM,4BAA4B,CAAA;AAClD,OAAO,OAAO,MAAM,0BAA0B,CAAA;AAC9C,OAAO,YAAY,MAAM,+BAA+B,CAAA;AACxD,OAAO,iBAAiB,CAAA;AAExB;;;;GAIG;AACH,iBAAS,OAAO,CAAC,GAAG,EAAE,GAAG,QAkBxB;AAED,OAAO,EACN,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,eAAe,EACf,OAAO,EACP,SAAS,EACT,SAAS,EACT,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,SAAS,EACT,WAAW,EACX,WAAW,EACX,SAAS,EACT,OAAO,EACP,YAAY,EACZ,OAAO,GACP,CAAA"}
|
package/package.json
CHANGED