@nmorph/nmorph-ui-kit 2.2.43 → 2.2.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/assets/icons/burger.svg.js +5 -5
  2. package/dist/assets/icons/download.svg.js +5 -5
  3. package/dist/assets/icons/open.svg.js +2 -2
  4. package/dist/assets/icons/search.svg.js +1 -1
  5. package/dist/assets/icons/smile.svg.js +4 -4
  6. package/dist/components/basic/nmorph-button/NmorphButton.vue.js +16 -16
  7. package/dist/components/basic/nmorph-scroll/NmorphScroll.css +1 -1
  8. package/dist/components/basic/nmorph-scroll/NmorphScroll.vue.js +179 -74
  9. package/dist/components/data/nmorph-audio-preview/NmorphAudioPreview.css +1 -0
  10. package/dist/components/data/nmorph-audio-preview/NmorphAudioPreview.vue.js +207 -0
  11. package/dist/components/data/nmorph-audio-preview/NmorphAudioPreview.vue3.js +6 -0
  12. package/dist/components/data/nmorph-emoji-picker/NmorphEmojiPicker.css +1 -0
  13. package/dist/components/data/nmorph-emoji-picker/NmorphEmojiPicker.vue.js +405 -0
  14. package/dist/components/data/nmorph-emoji-picker/NmorphEmojiPicker.vue3.js +6 -0
  15. package/dist/components/data/nmorph-file-card/NmorphFileCard.css +1 -0
  16. package/dist/components/data/nmorph-file-card/NmorphFileCard.vue.js +124 -0
  17. package/dist/components/data/nmorph-file-card/NmorphFileCard.vue3.js +6 -0
  18. package/dist/components/data/nmorph-media-tile/NmorphMediaTile.vue.js +8 -8
  19. package/dist/components/data/nmorph-video-preview/NmorphVideoPreview.css +1 -0
  20. package/dist/components/data/nmorph-video-preview/NmorphVideoPreview.vue.js +147 -0
  21. package/dist/components/data/nmorph-video-preview/NmorphVideoPreview.vue3.js +6 -0
  22. package/dist/components/form/nmorph-file-upload/NmorphFileUpload.css +1 -1
  23. package/dist/components/form/nmorph-file-upload/NmorphFileUpload.vue.js +154 -125
  24. package/dist/components/form/nmorph-file-upload/types.js +9 -9
  25. package/dist/hooks/use-common-styles.js +92 -12
  26. package/dist/index.es.js +861 -849
  27. package/dist/index.umd.js +108 -28
  28. package/dist/package.json.js +1 -1
  29. package/dist/src/components/basic/nmorph-scroll/NmorphScroll.vue.d.ts +1 -0
  30. package/dist/src/components/data/index.d.ts +8 -0
  31. package/dist/src/components/data/nmorph-audio-preview/NmorphAudioPreview.vue.d.ts +38 -0
  32. package/dist/src/components/data/nmorph-audio-preview/types.d.ts +20 -0
  33. package/dist/src/components/data/nmorph-calendar/NmorphCalendar.vue.d.ts +1 -1
  34. package/dist/src/components/data/nmorph-emoji-picker/NmorphEmojiPicker.vue.d.ts +25 -0
  35. package/dist/src/components/data/nmorph-emoji-picker/types.d.ts +51 -0
  36. package/dist/src/components/data/nmorph-file-card/NmorphFileCard.vue.d.ts +30 -0
  37. package/dist/src/components/data/nmorph-file-card/types.d.ts +18 -0
  38. package/dist/src/components/data/nmorph-media-tile/NmorphMediaTile.vue.d.ts +1 -1
  39. package/dist/src/components/data/nmorph-video-preview/NmorphVideoPreview.vue.d.ts +41 -0
  40. package/dist/src/components/data/nmorph-video-preview/types.d.ts +27 -0
  41. package/dist/src/components/form/nmorph-date-picker/inner-components/nmorph-year-month-picker/NmorphYearMonthPicker.vue.d.ts +1 -1
  42. package/dist/src/components/form/nmorph-file-upload/NmorphFileUpload.vue.d.ts +1 -1
  43. package/dist/src/components/form/nmorph-file-upload/types.d.ts +4 -0
  44. package/dist/src/components/form/nmorph-number-input/NmorphNumberInput.vue.d.ts +1 -1
  45. package/dist/src/components/form/nmorph-slider/NmorphSlider.vue.d.ts +1 -1
  46. package/dist/src/components/form/nmorph-text-input/NmorphTextInput.vue.d.ts +1 -1
  47. package/dist/src/components/form/nmorph-textarea/NmorphTextarea.vue.d.ts +1 -1
  48. package/dist/src/components/navigation/nmorph-backtop/NmorphBacktop.vue.d.ts +1 -1
  49. package/dist/src/utils/file-types.d.ts +8 -1
  50. package/dist/style.css +1 -1
  51. package/dist/utils/file-types.js +28 -21
  52. package/package.json +23 -24
@@ -1,15 +1,15 @@
1
- import { openBlock as t, createElementBlock as r, createElementVNode as o } from "vue";
1
+ import { openBlock as t, createElementBlock as o, createElementVNode as r } from "vue";
2
2
  const n = {
3
3
  xmlns: "http://www.w3.org/2000/svg",
4
4
  viewBox: "0 0 32 32"
5
5
  };
6
6
  function l(m, e) {
7
- return t(), r("svg", n, [...e[0] || (e[0] = [
8
- o("path", { d: "M2 6h28v6H2zm0 8h28v6H2zm0 8h28v6H2z" }, null, -1)
7
+ return t(), o("svg", n, [...e[0] || (e[0] = [
8
+ r("path", { d: "M2 6h28v6H2zm0 8h28v6H2zm0 8h28v6H2z" }, null, -1)
9
9
  ])]);
10
10
  }
11
- const c = { render: l };
11
+ const s = { render: l };
12
12
  export {
13
- c as default,
13
+ s as default,
14
14
  l as render
15
15
  };
@@ -1,15 +1,15 @@
1
- import { openBlock as t, createElementBlock as o, createElementVNode as n } from "vue";
1
+ import { openBlock as o, createElementBlock as t, createElementVNode as n } from "vue";
2
2
  const r = {
3
3
  xmlns: "http://www.w3.org/2000/svg",
4
4
  viewBox: "0 0 1024 1024"
5
5
  };
6
- function l(d, e) {
7
- return t(), o("svg", r, [...e[0] || (e[0] = [
6
+ function l(a, e) {
7
+ return o(), t("svg", r, [...e[0] || (e[0] = [
8
8
  n("path", { d: "M160 832h704a32 32 0 1 1 0 64H160a32 32 0 1 1 0-64m384-253.696 236.288-236.352 45.248 45.248L508.8 704 192 387.2l45.248-45.248L480 584.704V128h64z" }, null, -1)
9
9
  ])]);
10
10
  }
11
- const s = { render: l };
11
+ const d = { render: l };
12
12
  export {
13
- s as default,
13
+ d as default,
14
14
  l as render
15
15
  };
@@ -9,8 +9,8 @@ function a(l, e) {
9
9
  t("path", { d: "M694.044 621.227a109.227 109.227 0 1 0 0-218.454 109.227 109.227 0 0 0 0 218.454m0 72.817a182.044 182.044 0 1 1 0-364.088 182.044 182.044 0 0 1 0 364.088" }, null, -1)
10
10
  ])]);
11
11
  }
12
- const m = { render: a };
12
+ const p = { render: a };
13
13
  export {
14
- m as default,
14
+ p as default,
15
15
  a as render
16
16
  };
@@ -3,7 +3,7 @@ const n = {
3
3
  xmlns: "http://www.w3.org/2000/svg",
4
4
  viewBox: "0 0 32 32"
5
5
  };
6
- function c(s, e) {
6
+ function c(l, e) {
7
7
  return t(), o("svg", n, [...e[0] || (e[0] = [
8
8
  r("path", { d: "m31.008 27.231-7.58-6.447c-.784-.705-1.622-1.029-2.299-.998a11.95 11.95 0 0 0 2.87-7.787c0-6.627-5.373-12-12-12s-12 5.373-12 12 5.373 12 12 12c2.972 0 5.691-1.081 7.787-2.87-.031.677.293 1.515.998 2.299l6.447 7.58c1.104 1.226 2.907 1.33 4.007.23s.997-2.903-.23-4.007M12 20a8 8 0 1 1 0-16 8 8 0 0 1 0 16" }, null, -1)
9
9
  ])]);
@@ -1,16 +1,16 @@
1
- import { openBlock as n, createElementBlock as o, createElementVNode as t } from "vue";
1
+ import { openBlock as o, createElementBlock as n, createElementVNode as t } from "vue";
2
2
  const r = {
3
3
  xmlns: "http://www.w3.org/2000/svg",
4
4
  viewBox: "0 0 1024 1024"
5
5
  };
6
6
  function a(l, e) {
7
- return n(), o("svg", r, [...e[0] || (e[0] = [
7
+ return o(), n("svg", r, [...e[0] || (e[0] = [
8
8
  t("path", { d: "M512 64a448 448 0 1 0 0 896 448 448 0 0 0 0-896m0 64a384 384 0 1 1 0 768 384 384 0 0 1 0-768" }, null, -1),
9
9
  t("path", { d: "M352 384a48 48 0 1 1 0 96 48 48 0 0 1 0-96m320 0a48 48 0 1 1 0 96 48 48 0 0 1 0-96M352.64 585.6a32 32 0 0 1 43.648 11.712C419.84 638.08 462.976 672 512 672s92.16-33.92 115.712-74.688a32 32 0 0 1 55.36 32C649.6 687.296 586.752 736 512 736s-137.6-48.704-171.072-106.688A32 32 0 0 1 352.64 585.6" }, null, -1)
10
10
  ])]);
11
11
  }
12
- const m = { render: a };
12
+ const s = { render: a };
13
13
  export {
14
- m as default,
14
+ s as default,
15
15
  a as render
16
16
  };
@@ -1,10 +1,10 @@
1
1
  import './NmorphButton.css';
2
- import { defineComponent as C, useSlots as z, computed as o, ref as V, openBlock as t, createElementBlock as i, normalizeStyle as $, normalizeClass as N, createElementVNode as O, createBlock as r, unref as a, withCtx as s, createVNode as E, renderSlot as n, Fragment as H, createCommentVNode as f, toDisplayString as M } from "vue";
2
+ import { defineComponent as C, useSlots as z, computed as o, ref as N, openBlock as t, createElementBlock as r, normalizeStyle as V, normalizeClass as $, createElementVNode as O, createBlock as i, unref as a, withCtx as s, createVNode as E, renderSlot as n, Fragment as H, createCommentVNode as f, toDisplayString as M } from "vue";
3
3
  import { useModifiers as D } from "../../../utils/create-modifiers.js";
4
- import { NmorphComponentHeight as w } from "../../../types/common.types.js";
4
+ import { NmorphComponentHeight as I } from "../../../types/common.types.js";
5
5
  import d from "../nmorph-icon/NmorphIcon.vue.js";
6
6
  /* empty css */
7
- import I from "../../../assets/icons/loading.svg.js";
7
+ import w from "../../../assets/icons/loading.svg.js";
8
8
  const T = ["disabled", "loading", "type", "tabindex", "aria-pressed"], F = {
9
9
  key: 1,
10
10
  class: "nmorph-button__label"
@@ -32,10 +32,10 @@ const T = ["disabled", "loading", "type", "tabindex", "aria-pressed"], F = {
32
32
  disabled: { type: Boolean, default: !1 }
33
33
  },
34
34
  emits: ["update:model-value"],
35
- setup(y, { expose: g, emit: h }) {
36
- const e = y, b = h, u = z(), v = o(() => !!u.icon), c = o(() => !!u["icon-only"]), p = o(() => e.active || !!e.modelValue), B = o(
35
+ setup(y, { expose: h, emit: g }) {
36
+ const e = y, b = g, u = z(), v = o(() => !!u.icon), c = o(() => !!u["icon-only"]), p = o(() => e.active || !!e.modelValue), B = o(
37
37
  () => D({
38
- nmorph: [w[e.height], e.fill && "fill"],
38
+ nmorph: [I[e.height], e.fill && "fill"],
39
39
  "nmorph-button": [
40
40
  e.styleType,
41
41
  e.shape,
@@ -48,7 +48,7 @@ const T = ["disabled", "loading", "type", "tabindex", "aria-pressed"], F = {
48
48
  e.danger && "danger"
49
49
  ]
50
50
  })
51
- ), m = V(null), _ = {
51
+ ), m = N(null), _ = {
52
52
  thin: "small",
53
53
  basic: "medium",
54
54
  thick: "large"
@@ -59,9 +59,9 @@ const T = ["disabled", "loading", "type", "tabindex", "aria-pressed"], F = {
59
59
  } : {}), x = () => {
60
60
  !e.toggle || e.disabled || e.loading || b("update:model-value", !e.modelValue);
61
61
  };
62
- return g({ buttonDOMElement: m }), (l, j) => (t(), i("div", {
63
- class: N(B.value),
64
- style: $(S.value)
62
+ return h({ buttonDOMElement: m }), (l, L) => (t(), r("div", {
63
+ class: $(B.value),
64
+ style: V(S.value)
65
65
  }, [
66
66
  O("button", {
67
67
  ref_key: "buttonDOMElement",
@@ -74,28 +74,28 @@ const T = ["disabled", "loading", "type", "tabindex", "aria-pressed"], F = {
74
74
  "aria-pressed": e.toggle ? p.value : void 0,
75
75
  onClick: x
76
76
  }, [
77
- e.loading ? (t(), r(a(d), {
77
+ e.loading ? (t(), i(a(d), {
78
78
  key: 0,
79
79
  size: k.value
80
80
  }, {
81
81
  default: s(() => [
82
- E(a(I))
82
+ E(a(w))
83
83
  ]),
84
84
  _: 1
85
- }, 8, ["size"])) : c.value ? (t(), r(a(d), { key: 1 }, {
85
+ }, 8, ["size"])) : c.value ? (t(), i(a(d), { key: 1 }, {
86
86
  default: s(() => [
87
87
  n(l.$slots, "icon-only")
88
88
  ]),
89
89
  _: 3
90
- })) : (t(), i(H, { key: 2 }, [
91
- v.value ? (t(), r(a(d), { key: 0 }, {
90
+ })) : (t(), r(H, { key: 2 }, [
91
+ v.value ? (t(), i(a(d), { key: 0 }, {
92
92
  default: s(() => [
93
93
  n(l.$slots, "icon")
94
94
  ]),
95
95
  _: 3
96
96
  })) : f("", !0),
97
97
  n(l.$slots, "default"),
98
- e.text !== void 0 ? (t(), i("span", F, M(e.text), 1)) : f("", !0),
98
+ e.text !== void 0 ? (t(), r("span", F, M(e.text), 1)) : f("", !0),
99
99
  n(l.$slots, "append")
100
100
  ], 64))
101
101
  ], 8, T)
@@ -1 +1 @@
1
- .nmorph-scroll{--thumb-color: var(--nmorph-scroll-thumb-color, var(--nmorph-text-color));color-scheme:var(--nmorph-scroll-color-scheme, light);scrollbar-color:var(--thumb-color) transparent;scrollbar-width:thin}.nmorph-scroll::-webkit-scrollbar{width:var(--bar-width);height:var(--bar-height);background-color:transparent;cursor:pointer;transition:width ease-in-out .2s}.nmorph-scroll::-webkit-scrollbar-button,.nmorph-scroll::-webkit-scrollbar-button:single-button,.nmorph-scroll::-webkit-scrollbar-button:double-button,.nmorph-scroll::-webkit-scrollbar-button:vertical:start:decrement,.nmorph-scroll::-webkit-scrollbar-button:vertical:end:increment,.nmorph-scroll::-webkit-scrollbar-button:horizontal:start:decrement,.nmorph-scroll::-webkit-scrollbar-button:horizontal:end:increment{display:none!important;width:0!important;min-width:0!important;max-width:0!important;height:0!important;min-height:0!important;max-height:0!important;background:transparent!important;background-image:none!important;border:0!important;appearance:none}.nmorph-scroll::-webkit-scrollbar-track{background:transparent;border-radius:var(--border-radius-40);box-shadow:var(--nmorph-shadow-inset)}.nmorph-scroll::-webkit-scrollbar-thumb{background-color:var(--thumb-color);border-radius:var(--border-radius-40)}.nmorph-scroll::-webkit-scrollbar-corner{background-color:transparent}
1
+ .nmorph-scroll{--thumb-color: var(--nmorph-scroll-thumb-color, var(--nmorph-text-color));position:relative;overflow:hidden;color-scheme:var(--nmorph-scroll-color-scheme, light)}.nmorph-scroll__viewport{display:inherit;flex-direction:inherit;flex-wrap:inherit;grid-auto-flow:inherit;grid-template-columns:inherit;grid-template-rows:inherit;gap:inherit;justify-content:inherit;align-content:inherit;align-items:inherit;box-sizing:border-box;width:100%;height:100%;color-scheme:inherit;scrollbar-width:none;-ms-overflow-style:none}.nmorph-scroll__viewport::-webkit-scrollbar{display:none;width:0;height:0;background:transparent}.nmorph-scroll__bar{position:absolute;z-index:1;background:transparent;border-radius:var(--border-radius-40);box-shadow:var(--nmorph-shadow-inset);opacity:.78;transition:opacity ease-in-out .16s,background-color ease-in-out .16s;touch-action:none}.nmorph-scroll__bar--vertical{top:0;right:0;width:var(--bar-width)}.nmorph-scroll__bar--horizontal{right:0;bottom:0;left:0;height:var(--bar-height)}.nmorph-scroll__thumb{position:absolute;top:0;left:0;background-color:var(--thumb-color);border-radius:var(--border-radius-40);cursor:pointer;transition:background-color ease-in-out .16s;touch-action:none}.nmorph-scroll__thumb--vertical{width:100%}.nmorph-scroll__thumb--horizontal{height:100%}.nmorph-scroll--show-bars .nmorph-scroll__bar,.nmorph-scroll__bar:hover{opacity:1}.nmorph-scroll--dragging .nmorph-scroll__thumb{cursor:grabbing}.nmorph-scroll::-webkit-scrollbar{width:var(--bar-width);height:var(--bar-height);background-color:transparent;cursor:pointer;transition:width ease-in-out .2s}.nmorph-scroll::-webkit-scrollbar-button,.nmorph-scroll::-webkit-scrollbar-button:single-button,.nmorph-scroll::-webkit-scrollbar-button:double-button,.nmorph-scroll::-webkit-scrollbar-button:vertical:start:decrement,.nmorph-scroll::-webkit-scrollbar-button:vertical:end:increment,.nmorph-scroll::-webkit-scrollbar-button:horizontal:start:decrement,.nmorph-scroll::-webkit-scrollbar-button:horizontal:end:increment{display:none!important;width:0!important;min-width:0!important;max-width:0!important;height:0!important;min-height:0!important;max-height:0!important;background:transparent!important;background-image:none!important;border:0!important;appearance:none}.nmorph-scroll::-webkit-scrollbar-track{background:transparent;border-radius:var(--border-radius-40);box-shadow:var(--nmorph-shadow-inset)}.nmorph-scroll::-webkit-scrollbar-thumb{background-color:var(--thumb-color);border-radius:var(--border-radius-40)}.nmorph-scroll::-webkit-scrollbar-corner{background-color:transparent}
@@ -1,7 +1,7 @@
1
1
  import './NmorphScroll.css';
2
- import { defineComponent as $, ref as r, computed as o, inject as k, onUnmounted as z, onMounted as D, nextTick as f, watch as v, openBlock as G, createElementBlock as R, normalizeStyle as L, normalizeClass as j, renderSlot as N } from "vue";
3
- import { useModifiers as U } from "../../../utils/create-modifiers.js";
4
- const F = /* @__PURE__ */ $({
2
+ import { defineComponent as Pe, ref as c, computed as n, inject as we, onUnmounted as He, onMounted as ze, nextTick as G, watch as N, openBlock as T, createElementBlock as W, normalizeStyle as h, normalizeClass as Be, createElementVNode as M, renderSlot as Te, createCommentVNode as U } from "vue";
3
+ import { useModifiers as We } from "../../../utils/create-modifiers.js";
4
+ const ke = /* @__PURE__ */ Pe({
5
5
  __name: "NmorphScroll",
6
6
  props: {
7
7
  height: { default: "100%" },
@@ -21,95 +21,200 @@ const F = /* @__PURE__ */ $({
21
21
  yGapInPx: { default: 0 }
22
22
  },
23
23
  emits: ["on-scroll", "update:model-value", "on-scroll-end"],
24
- setup(x, { expose: g, emit: y }) {
25
- const e = x, t = r(null), B = o(() => e.scrollYProp), P = o(() => e.scrollXProp), s = r(!1), c = r(!1), h = () => {
26
- const l = t.value;
27
- if (!l) {
28
- s.value = !1, c.value = !1;
24
+ setup(j, { expose: q, emit: A }) {
25
+ const l = j, F = c(null), s = c(null), J = n(() => l.scrollYProp), K = n(() => l.scrollXProp), f = c(!1), g = c(!1), i = c({
26
+ clientWidth: 0,
27
+ clientHeight: 0,
28
+ scrollWidth: 0,
29
+ scrollHeight: 0,
30
+ scrollLeft: 0,
31
+ scrollTop: 0
32
+ }), y = c(!1);
33
+ let b, a, _ = "";
34
+ const m = () => {
35
+ const e = s.value;
36
+ if (!e) {
37
+ f.value = !1, g.value = !1, i.value = {
38
+ clientWidth: 0,
39
+ clientHeight: 0,
40
+ scrollWidth: 0,
41
+ scrollHeight: 0,
42
+ scrollLeft: 0,
43
+ scrollTop: 0
44
+ };
29
45
  return;
30
46
  }
31
- s.value = l.scrollHeight > l.clientHeight, c.value = l.scrollWidth > l.clientWidth;
32
- }, S = o(() => e.yBarWidthInPx + e.yGapInPx), H = o(() => e.xBarWidthInPx + e.xGapInPx), b = o(
33
- () => e.scrollYProp === "hidden" || !s.value ? "0" : `${S.value}px`
34
- ), I = o(
35
- () => e.scrollXProp === "hidden" || !c.value ? "0" : `${H.value}px`
36
- ), W = o(() => `${e.yBarWidthInPx}px`), E = o(() => `${e.xBarWidthInPx}px`), w = k("nmorph");
37
- let a;
38
- const i = y, m = () => {
39
- const l = t.value;
40
- if (!l) return;
41
- const n = Math.trunc(l.scrollLeft), u = Math.trunc(l.scrollTop);
42
- i("update:model-value", { x: n, y: u });
43
- }, M = () => {
44
- i("on-scroll-end");
45
- }, O = (l) => {
46
- i("on-scroll", l), t.value && (e.updateOnlyOnScrollEnd || m(), a !== void 0 && clearTimeout(a), a = setTimeout(() => {
47
- e.updateOnlyOnScrollEnd && m(), M();
48
- }, e.scrollEndDelay));
47
+ const t = {
48
+ clientWidth: e.clientWidth,
49
+ clientHeight: e.clientHeight,
50
+ scrollWidth: e.scrollWidth,
51
+ scrollHeight: e.scrollHeight,
52
+ scrollLeft: e.scrollLeft,
53
+ scrollTop: e.scrollTop
54
+ };
55
+ i.value = t, f.value = t.scrollHeight > t.clientHeight, g.value = t.scrollWidth > t.clientWidth;
56
+ }, Q = n(() => l.yBarWidthInPx + l.yGapInPx), Z = n(() => l.xBarWidthInPx + l.xGapInPx), ee = n(
57
+ () => l.scrollYProp === "hidden" || !f.value ? "0" : `${Q.value}px`
58
+ ), te = n(
59
+ () => l.scrollXProp === "hidden" || !g.value ? "0" : `${Z.value}px`
60
+ ), k = n(() => `${l.yBarWidthInPx}px`), E = n(() => `${l.xBarWidthInPx}px`), oe = n(() => B.value ? E.value : "0px"), le = n(() => z.value ? k.value : "0px"), ne = we("nmorph");
61
+ let v;
62
+ const P = A, I = () => {
63
+ const e = s.value;
64
+ if (!e) return;
65
+ const t = Math.trunc(e.scrollLeft), o = Math.trunc(e.scrollTop);
66
+ P("update:model-value", { x: t, y: o });
67
+ }, re = () => {
68
+ P("on-scroll-end");
69
+ }, ae = (e) => {
70
+ m(), P("on-scroll", e), s.value && (l.updateOnlyOnScrollEnd || I(), v !== void 0 && clearTimeout(v), v = setTimeout(() => {
71
+ l.updateOnlyOnScrollEnd && I(), re();
72
+ }, l.scrollEndDelay));
49
73
  };
50
- z(() => {
51
- a !== void 0 && clearTimeout(a);
74
+ He(() => {
75
+ v !== void 0 && clearTimeout(v), b?.disconnect(), V();
52
76
  });
53
- const p = r(!1), T = o(
54
- () => U({
55
- "nmorph-scroll": []
77
+ const w = c(!1), ie = n(
78
+ () => We({
79
+ "nmorph-scroll": {
80
+ "show-bars": w.value || y.value,
81
+ dragging: y.value
82
+ }
56
83
  })
57
- ), d = (l) => {
58
- const { x: n, y: u } = l;
59
- t.value?.scrollTo({
60
- left: n,
61
- top: u,
84
+ ), H = (e) => {
85
+ const { x: t, y: o } = e;
86
+ s.value?.scrollTo({
87
+ left: t,
88
+ top: o,
62
89
  behavior: "smooth"
63
90
  });
64
91
  };
65
- D(() => {
66
- d(e.modelValue), f(h);
67
- }), v(
68
- () => e.modelValue,
69
- (l) => {
70
- d(l);
92
+ ze(() => {
93
+ H(l.modelValue), G(m), typeof ResizeObserver < "u" && s.value && (b = new ResizeObserver(() => {
94
+ m();
95
+ }), b.observe(s.value));
96
+ }), N(
97
+ () => l.modelValue,
98
+ (e) => {
99
+ H(e);
71
100
  },
72
101
  { deep: !0, immediate: !0 }
73
- ), v(
74
- () => w?.browser.dimensions,
102
+ ), N(
103
+ () => ne?.browser.dimensions,
75
104
  () => {
76
- f(h);
105
+ G(m);
77
106
  },
78
107
  { deep: !0, immediate: !0 }
79
108
  );
80
- const C = o(() => e.cssScrollBehavior), _ = o(() => e.height), V = o(() => e.maxHeight);
81
- g({ scrollDOMContainer: t, moveTo: d });
82
- const X = () => {
83
- p.value = !0;
84
- }, Y = () => {
85
- p.value = !1;
109
+ const se = n(() => l.cssScrollBehavior), ce = n(() => l.height), ue = n(() => l.maxHeight), de = n(() => ({
110
+ "--bar-width": k.value,
111
+ "--bar-height": E.value,
112
+ boxSizing: "border-box",
113
+ minWidth: "0",
114
+ minHeight: "0",
115
+ height: ce.value,
116
+ maxHeight: ue.value
117
+ })), he = n(() => ({
118
+ paddingRight: ee.value,
119
+ paddingBottom: te.value,
120
+ overflowX: K.value,
121
+ overflowY: J.value,
122
+ scrollBehavior: se.value
123
+ })), z = n(() => l.scrollYProp !== "hidden" && f.value), B = n(() => l.scrollXProp !== "hidden" && g.value), me = n(
124
+ () => Math.max(0, i.value.clientHeight - (B.value ? l.xBarWidthInPx : 0))
125
+ ), ve = n(
126
+ () => Math.max(0, i.value.clientWidth - (z.value ? l.yBarWidthInPx : 0))
127
+ ), p = (e) => e === "y" ? me.value : ve.value, L = (e) => e === "y" ? i.value.clientHeight : i.value.clientWidth, O = (e) => e === "y" ? i.value.scrollHeight : i.value.scrollWidth, D = (e) => e === "y" ? i.value.scrollTop : i.value.scrollLeft, pe = (e) => Math.min(p(e), Math.max(18, e === "y" ? l.yBarWidthInPx * 3 : l.xBarWidthInPx * 3)), S = (e) => Math.max(0, O(e) - L(e)), u = (e) => {
128
+ const t = p(e), o = O(e), r = L(e);
129
+ return t <= 0 || o <= r ? 0 : Math.min(t, Math.max(pe(e), r / o * t));
130
+ }, C = (e) => {
131
+ const t = S(e), o = Math.max(0, p(e) - u(e));
132
+ return !t || !o ? 0 : D(e) / t * o;
133
+ }, fe = n(() => ({
134
+ height: `${u("y")}px`,
135
+ transform: `translate3d(0, ${C("y")}px, 0)`
136
+ })), ge = n(() => ({
137
+ width: `${u("x")}px`,
138
+ transform: `translate3d(${C("x")}px, 0, 0)`
139
+ })), R = (e, t) => {
140
+ const o = s.value;
141
+ if (!o) return;
142
+ const r = Math.max(0, Math.min(S(e), t));
143
+ e === "y" ? o.scrollTop = r : o.scrollLeft = r, m();
144
+ }, V = () => {
145
+ a && (window.removeEventListener("pointermove", X), window.removeEventListener("pointerup", x), window.removeEventListener("pointercancel", x), a = void 0, y.value = !1, document.body && (document.body.style.userSelect = _));
146
+ }, X = (e) => {
147
+ if (!a) return;
148
+ const o = (a.axis === "y" ? e.clientY : e.clientX) - a.pointerStart, r = Math.max(1, a.trackSize - a.thumbSize), d = o / r * a.maxScroll;
149
+ R(a.axis, a.scrollStart + d);
150
+ }, x = () => {
151
+ V();
152
+ }, Y = (e, t) => {
153
+ t.preventDefault(), t.stopPropagation();
154
+ const o = p(e), r = u(e), d = S(e);
155
+ !o || !r || !d || (a = {
156
+ axis: e,
157
+ pointerStart: e === "y" ? t.clientY : t.clientX,
158
+ scrollStart: D(e),
159
+ trackSize: o,
160
+ thumbSize: r,
161
+ maxScroll: d
162
+ }, y.value = !0, _ = document.body?.style.userSelect ?? "", document.body && (document.body.style.userSelect = "none"), window.addEventListener("pointermove", X), window.addEventListener("pointerup", x), window.addEventListener("pointercancel", x));
163
+ }, $ = (e, t) => {
164
+ if (t.target.closest(".nmorph-scroll__thumb")) return;
165
+ const r = t.currentTarget.getBoundingClientRect(), d = e === "y" ? t.clientY - r.top : t.clientX - r.left, xe = Math.max(1, p(e) - u(e)), be = (d - u(e) / 2) / xe * S(e);
166
+ R(e, be);
86
167
  };
87
- return (l, n) => (G(), R("div", {
88
- ref_key: "scrollDOMContainer",
89
- ref: t,
90
- class: j(T.value),
91
- style: L({
92
- "--bar-width": W.value,
93
- "--bar-height": E.value,
94
- boxSizing: "border-box",
95
- minWidth: "0",
96
- minHeight: "0",
97
- height: _.value,
98
- maxHeight: V.value,
99
- paddingRight: b.value,
100
- paddingBottom: I.value,
101
- overflowX: P.value,
102
- overflowY: B.value,
103
- scrollBehavior: C.value
104
- }),
105
- onScroll: O,
106
- onMouseenter: X,
107
- onMouseleave: Y
168
+ q({ scrollDOMContainer: s, moveTo: H });
169
+ const ye = () => {
170
+ w.value = !0;
171
+ }, Se = () => {
172
+ w.value = !1;
173
+ };
174
+ return (e, t) => (T(), W("div", {
175
+ ref_key: "scrollRoot",
176
+ ref: F,
177
+ class: Be(ie.value),
178
+ style: h(de.value),
179
+ onMouseenter: ye,
180
+ onMouseleave: Se
108
181
  }, [
109
- N(l.$slots, "default")
182
+ M("div", {
183
+ ref_key: "scrollDOMContainer",
184
+ ref: s,
185
+ class: "nmorph-scroll__viewport",
186
+ style: h(he.value),
187
+ onScroll: ae
188
+ }, [
189
+ Te(e.$slots, "default")
190
+ ], 36),
191
+ z.value ? (T(), W("div", {
192
+ key: 0,
193
+ class: "nmorph-scroll__bar nmorph-scroll__bar--vertical",
194
+ style: h({ bottom: oe.value }),
195
+ onPointerdown: t[1] || (t[1] = (o) => $("y", o))
196
+ }, [
197
+ M("div", {
198
+ class: "nmorph-scroll__thumb nmorph-scroll__thumb--vertical",
199
+ style: h(fe.value),
200
+ onPointerdown: t[0] || (t[0] = (o) => Y("y", o))
201
+ }, null, 36)
202
+ ], 36)) : U("", !0),
203
+ B.value ? (T(), W("div", {
204
+ key: 1,
205
+ class: "nmorph-scroll__bar nmorph-scroll__bar--horizontal",
206
+ style: h({ right: le.value }),
207
+ onPointerdown: t[3] || (t[3] = (o) => $("x", o))
208
+ }, [
209
+ M("div", {
210
+ class: "nmorph-scroll__thumb nmorph-scroll__thumb--horizontal",
211
+ style: h(ge.value),
212
+ onPointerdown: t[2] || (t[2] = (o) => Y("x", o))
213
+ }, null, 36)
214
+ ], 36)) : U("", !0)
110
215
  ], 38));
111
216
  }
112
217
  });
113
218
  export {
114
- F as default
219
+ ke as default
115
220
  };
@@ -0,0 +1 @@
1
+ .nmorph-audio-preview{display:flex;gap:var(--indentation-02);align-items:center;box-sizing:border-box;width:var(--nmorph-audio-preview-width, 360px);min-width:0;max-width:100%;min-height:64px;padding:var(--indentation-03);color:var(--nmorph-text-color);background:var(--nmorph-main-color);border-radius:var(--default-border-radius);box-shadow:var(--nmorph-shadow-inset)}.nmorph-audio-preview audio{display:none}.nmorph-audio-preview .nmorph-audio-preview__icon{display:flex;flex:0 0 auto;justify-content:center;align-items:center;width:36px;height:36px;color:var(--nmorph-accent-color);background:color-mix(in srgb,var(--nmorph-accent-color) 12%,transparent);border-radius:var(--default-border-radius);--color: currentColor}.nmorph-audio-preview .nmorph-audio-preview__play{flex:0 0 auto}.nmorph-audio-preview .nmorph-audio-preview__body{display:flex;flex:1 1 0;flex-direction:column;gap:var(--indentation-02);min-width:0}.nmorph-audio-preview .nmorph-audio-preview__header{display:flex;gap:var(--indentation-02);justify-content:space-between;align-items:center;min-width:0}.nmorph-audio-preview .nmorph-audio-preview__name,.nmorph-audio-preview .nmorph-audio-preview__time,.nmorph-audio-preview .nmorph-audio-preview__error{min-width:0;overflow:hidden;font-size:var(--font-size-extra-small);line-height:var(--line-height-regular);white-space:nowrap;text-overflow:ellipsis}.nmorph-audio-preview .nmorph-audio-preview__name{flex:1 1 auto;font-weight:600}.nmorph-audio-preview .nmorph-audio-preview__time{flex:0 0 auto;color:var(--nmorph-semi-contrast-text-color);font-variant-numeric:tabular-nums}.nmorph-audio-preview .nmorph-audio-preview__error{flex:0 1 auto;color:var(--nmorph-error-text-color)}.nmorph-audio-preview .nmorph-audio-preview__range{width:100%;min-width:0;height:6px;padding:0;background:linear-gradient(to right,var(--nmorph-accent-color) var(--nmorph-audio-preview-progress, 0%),color-mix(in srgb,var(--nmorph-text-color) 16%,transparent) 0);border-radius:var(--border-radius-100);outline:0;cursor:pointer;appearance:none}.nmorph-audio-preview .nmorph-audio-preview__range:disabled{cursor:default;opacity:.6}.nmorph-audio-preview .nmorph-audio-preview__range::-webkit-slider-thumb{width:14px;height:14px;background:var(--nmorph-accent-color);border:2px solid var(--nmorph-main-color);border-radius:var(--border-radius-circular);box-shadow:var(--nmorph-shadow-outset);appearance:none}.nmorph-audio-preview .nmorph-audio-preview__range::-moz-range-thumb{width:14px;height:14px;background:var(--nmorph-accent-color);border:2px solid var(--nmorph-main-color);border-radius:var(--border-radius-circular);box-shadow:var(--nmorph-shadow-outset)}.nmorph-audio-preview .nmorph-audio-preview__actions{display:flex;flex:0 0 auto;gap:var(--indentation-01);align-items:center}.nmorph-audio-preview .nmorph-audio-preview__action-link{display:inline-flex;justify-content:center;align-items:center;width:22px;height:22px;color:inherit;text-decoration:none;border-radius:var(--default-border-radius)}.nmorph-audio-preview .nmorph-audio-preview__action-link:hover{color:var(--nmorph-accent-color);background:color-mix(in srgb,var(--nmorph-accent-color) 10%,transparent)}.nmorph-audio-preview .nmorph-audio-preview__action-link .nmorph-icon{--color: currentColor}.nmorph-audio-preview.nmorph-audio-preview--compact{min-height:52px;padding:var(--indentation-02)}.nmorph-audio-preview.nmorph-audio-preview--compact .nmorph-audio-preview__icon{width:30px;height:30px}.nmorph-audio-preview.nmorph-audio-preview--error{outline:1px solid var(--nmorph-error-color)}