@lanrenbang/basecoat-ultra 0.1.7 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,284 +1,282 @@
1
- var d = typeof window < "u" ? window : null, W = d === null, N = W ? void 0 : d.document, m = "addEventListener", z = "removeEventListener", T = "getBoundingClientRect", L = "_a", h = "_b", y = "_c", k = "horizontal", g = function() {
1
+ var m = typeof window < "u" ? window : null, V = m === null, N = V ? void 0 : m.document, z = "addEventListener", h = "removeEventListener", q = "getBoundingClientRect", C = "_a", g = "_b", y = "_c", k = "horizontal", S = function() {
2
2
  return !1;
3
- }, he = W ? "calc" : ["", "-webkit-", "-moz-", "-o-"].filter(function(l) {
3
+ }, ze = V ? "calc" : ["", "-webkit-", "-moz-", "-o-"].filter(function(a) {
4
4
  var i = N.createElement("div");
5
- return i.style.cssText = "width:" + l + "calc(9px)", !!i.style.length;
6
- }).shift() + "calc", ne = function(l) {
7
- return typeof l == "string" || l instanceof String;
8
- }, re = function(l) {
9
- if (ne(l)) {
10
- var i = N.querySelector(l);
5
+ return i.style.cssText = "width:" + a + "calc(9px)", !!i.style.length;
6
+ }).shift() + "calc", te = function(a) {
7
+ return typeof a == "string" || a instanceof String;
8
+ }, ee = function(a) {
9
+ if (te(a)) {
10
+ var i = N.querySelector(a);
11
11
  if (!i)
12
- throw new Error("Selector " + l + " did not match a DOM element");
12
+ throw new Error("Selector " + a + " did not match a DOM element");
13
13
  return i;
14
14
  }
15
- return l;
16
- }, f = function(l, i, a) {
17
- var s = l[i];
18
- return s !== void 0 ? s : a;
19
- }, G = function(l, i, a, s) {
15
+ return a;
16
+ }, f = function(a, i, s) {
17
+ var l = a[i];
18
+ return l !== void 0 ? l : s;
19
+ }, B = function(a, i, s, l) {
20
20
  if (i) {
21
- if (s === "end")
21
+ if (l === "end")
22
22
  return 0;
23
- if (s === "center")
24
- return l / 2;
25
- } else if (a) {
26
- if (s === "start")
23
+ if (l === "center")
24
+ return a / 2;
25
+ } else if (s) {
26
+ if (l === "start")
27
27
  return 0;
28
- if (s === "center")
29
- return l / 2;
28
+ if (l === "center")
29
+ return a / 2;
30
30
  }
31
- return l;
32
- }, ge = function(l, i) {
33
- var a = N.createElement("div");
34
- return a.className = "gutter gutter-" + i, a;
35
- }, Se = function(l, i, a) {
36
- var s = {};
37
- return ne(i) ? s[l] = i : s[l] = he + "(" + i + "% - " + a + "px)", s;
38
- }, ye = function(l, i) {
39
- var a;
40
- return a = {}, a[l] = i + "px", a;
41
- }, pe = function(l, i) {
42
- if (i === void 0 && (i = {}), W)
31
+ return a;
32
+ }, he = function(a, i) {
33
+ var s = N.createElement("div");
34
+ return s.className = "gutter gutter-" + i, s;
35
+ }, ge = function(a, i, s) {
36
+ var l = {};
37
+ return te(i) ? l[a] = i : l[a] = ze + "(" + i + "% - " + s + "px)", l;
38
+ }, Se = function(a, i) {
39
+ var s;
40
+ return s = {}, s[a] = i + "px", s;
41
+ }, ye = function(a, i) {
42
+ if (i === void 0 && (i = {}), V)
43
43
  return {};
44
- var a = l, s, p, E, O, S, u;
45
- Array.from && (a = Array.from(a));
46
- var j = re(a[0]), M = j.parentNode, X = getComputedStyle ? getComputedStyle(M) : null, Y = X ? X.flexDirection : null, B = f(i, "sizes") || a.map(function() {
47
- return 100 / a.length;
48
- }), R = f(i, "minSize", 100), $ = Array.isArray(R) ? R : a.map(function() {
49
- return R;
50
- }), q = f(i, "maxSize", 1 / 0), ie = Array.isArray(q) ? q : a.map(function() {
51
- return q;
52
- }), ae = f(i, "expandToMin", !1), D = f(i, "gutterSize", 10), C = f(i, "gutterAlign", "center"), P = f(i, "snapOffset", 30), se = Array.isArray(P) ? P : a.map(function() {
44
+ var s = a, l, b, v, p, O, o;
45
+ Array.from && (s = Array.from(s));
46
+ var re = ee(s[0]), D = re.parentNode, W = getComputedStyle ? getComputedStyle(D) : null, X = W ? W.flexDirection : null, G = f(i, "sizes") || s.map(function() {
47
+ return 100 / s.length;
48
+ }), j = f(i, "minSize", 100), R = Array.isArray(j) ? j : s.map(function() {
49
+ return j;
50
+ }), P = f(i, "maxSize", 1 / 0), ne = Array.isArray(P) ? P : s.map(function() {
53
51
  return P;
54
- }), _ = f(i, "dragInterval", 1), w = f(i, "direction", k), H = f(
52
+ }), ie = f(i, "expandToMin", !1), M = f(i, "gutterSize", 10), F = f(i, "gutterAlign", "center"), _ = f(i, "snapOffset", 30), ae = Array.isArray(_) ? _ : s.map(function() {
53
+ return _;
54
+ }), $ = f(i, "dragInterval", 1), E = f(i, "direction", k), H = f(
55
55
  i,
56
56
  "cursor",
57
- w === k ? "col-resize" : "row-resize"
58
- ), le = f(i, "gutter", ge), Z = f(
57
+ E === k ? "col-resize" : "row-resize"
58
+ ), se = f(i, "gutter", he), Y = f(
59
59
  i,
60
60
  "elementStyle",
61
- Se
62
- ), ue = f(i, "gutterStyle", ye);
63
- w === k ? (s = "width", p = "clientX", E = "left", O = "right", S = "clientWidth") : w === "vertical" && (s = "height", p = "clientY", E = "top", O = "bottom", S = "clientHeight");
61
+ ge
62
+ ), le = f(i, "gutterStyle", Se);
63
+ E === k ? (l = "width", b = "clientX", v = "left", p = "right", O = "clientWidth") : E === "vertical" && (l = "height", b = "clientY", v = "top", p = "bottom", O = "clientHeight");
64
64
  function A(r, e, t, n) {
65
- var c = Z(s, e, t, n);
66
- Object.keys(c).forEach(function(o) {
67
- r.style[o] = c[o];
65
+ var c = Y(l, e, t, n);
66
+ Object.keys(c).forEach(function(u) {
67
+ r.style[u] = c[u];
68
68
  });
69
69
  }
70
- function oe(r, e, t) {
71
- var n = ue(s, e, t);
70
+ function ue(r, e, t) {
71
+ var n = le(l, e, t);
72
72
  Object.keys(n).forEach(function(c) {
73
73
  r.style[c] = n[c];
74
74
  });
75
75
  }
76
76
  function I() {
77
- return u.map(function(r) {
77
+ return o.map(function(r) {
78
78
  return r.size;
79
79
  });
80
80
  }
81
- function J(r) {
82
- return "touches" in r ? r.touches[0][p] : r[p];
81
+ function Z(r) {
82
+ return "touches" in r ? r.touches[0][b] : r[b];
83
83
  }
84
- function K(r) {
85
- var e = u[this.a], t = u[this.b], n = e.size + t.size;
86
- e.size = r / this.size * n, t.size = n - r / this.size * n, A(e.element, e.size, this[h], e.i), A(t.element, t.size, this[y], t.i);
84
+ function J(r) {
85
+ var e = o[this.a], t = o[this.b], n = e.size + t.size;
86
+ e.size = r / this.size * n, t.size = n - r / this.size * n, A(e.element, e.size, this[g], e.i), A(t.element, t.size, this[y], t.i);
87
87
  }
88
- function ce(r) {
89
- var e, t = u[this.a], n = u[this.b];
90
- this.dragging && (e = J(r) - this.start + (this[h] - this.dragOffset), _ > 1 && (e = Math.round(e / _) * _), e <= t.minSize + t.snapOffset + this[h] ? e = t.minSize + this[h] : e >= this.size - (n.minSize + n.snapOffset + this[y]) && (e = this.size - (n.minSize + this[y])), e >= t.maxSize - t.snapOffset + this[h] ? e = t.maxSize + this[h] : e <= this.size - (n.maxSize - n.snapOffset + this[y]) && (e = this.size - (n.maxSize + this[y])), K.call(this, e), f(i, "onDrag", g)(I()));
88
+ function oe(r) {
89
+ var e, t = o[this.a], n = o[this.b];
90
+ this.dragging && (e = Z(r) - this.start + (this[g] - this.dragOffset), $ > 1 && (e = Math.round(e / $) * $), e <= t.minSize + t.snapOffset + this[g] ? e = t.minSize + this[g] : e >= this.size - (n.minSize + n.snapOffset + this[y]) && (e = this.size - (n.minSize + this[y])), e >= t.maxSize - t.snapOffset + this[g] ? e = t.maxSize + this[g] : e <= this.size - (n.maxSize - n.snapOffset + this[y]) && (e = this.size - (n.maxSize + this[y])), J.call(this, e), f(i, "onDrag", S)(I()));
91
91
  }
92
- function Q() {
93
- var r = u[this.a].element, e = u[this.b].element, t = r[T](), n = e[T]();
94
- this.size = t[s] + n[s] + this[h] + this[y], this.start = t[E], this.end = t[O];
92
+ function K() {
93
+ var r = o[this.a].element, e = o[this.b].element, t = r[q](), n = e[q]();
94
+ this.size = t[l] + n[l] + this[g] + this[y], this.start = t[v], this.end = t[p];
95
95
  }
96
- function fe(r) {
96
+ function ce(r) {
97
97
  if (!getComputedStyle)
98
98
  return null;
99
99
  var e = getComputedStyle(r);
100
100
  if (!e)
101
101
  return null;
102
- var t = r[S];
103
- return t === 0 ? null : (w === k ? t -= parseFloat(e.paddingLeft) + parseFloat(e.paddingRight) : t -= parseFloat(e.paddingTop) + parseFloat(e.paddingBottom), t);
102
+ var t = r[O];
103
+ return t === 0 ? null : (E === k ? t -= parseFloat(e.paddingLeft) + parseFloat(e.paddingRight) : t -= parseFloat(e.paddingTop) + parseFloat(e.paddingBottom), t);
104
104
  }
105
- function ee(r) {
106
- var e = fe(M);
107
- if (e === null || $.reduce(function(o, v) {
108
- return o + v;
105
+ function Q(r) {
106
+ var e = ce(D);
107
+ if (e === null || R.reduce(function(u, d) {
108
+ return u + d;
109
109
  }, 0) > e)
110
110
  return r;
111
- var t = 0, n = [], c = r.map(function(o, v) {
112
- var x = e * o / 100, F = G(
113
- D,
114
- v === 0,
115
- v === r.length - 1,
116
- C
117
- ), U = $[v] + F;
111
+ var t = 0, n = [], c = r.map(function(u, d) {
112
+ var x = e * u / 100, L = B(
113
+ M,
114
+ d === 0,
115
+ d === r.length - 1,
116
+ F
117
+ ), U = R[d] + L;
118
118
  return x < U ? (t += U - x, n.push(0), U) : (n.push(x - U), x);
119
119
  });
120
- return t === 0 ? r : c.map(function(o, v) {
121
- var x = o;
122
- if (t > 0 && n[v] - t > 0) {
123
- var F = Math.min(
120
+ return t === 0 ? r : c.map(function(u, d) {
121
+ var x = u;
122
+ if (t > 0 && n[d] - t > 0) {
123
+ var L = Math.min(
124
124
  t,
125
- n[v] - t
125
+ n[d] - t
126
126
  );
127
- t -= F, x = o - F;
127
+ t -= L, x = u - L;
128
128
  }
129
129
  return x / e * 100;
130
130
  });
131
131
  }
132
- function ve() {
133
- var r = this, e = u[r.a].element, t = u[r.b].element;
134
- r.dragging && f(i, "onDragEnd", g)(I()), r.dragging = !1, d[z]("mouseup", r.stop), d[z]("touchend", r.stop), d[z]("touchcancel", r.stop), d[z]("mousemove", r.move), d[z]("touchmove", r.move), r.stop = null, r.move = null, e[z]("selectstart", g), e[z]("dragstart", g), t[z]("selectstart", g), t[z]("dragstart", g), e.style.userSelect = "", e.style.webkitUserSelect = "", e.style.MozUserSelect = "", e.style.pointerEvents = "", t.style.userSelect = "", t.style.webkitUserSelect = "", t.style.MozUserSelect = "", t.style.pointerEvents = "", r.gutter.style.cursor = "", r.parent.style.cursor = "", N.body.style.cursor = "";
132
+ function fe() {
133
+ var r = this, e = o[r.a].element, t = o[r.b].element;
134
+ r.dragging && f(i, "onDragEnd", S)(I()), r.dragging = !1, m[h]("mouseup", r.stop), m[h]("touchend", r.stop), m[h]("touchcancel", r.stop), m[h]("mousemove", r.move), m[h]("touchmove", r.move), r.stop = null, r.move = null, e[h]("selectstart", S), e[h]("dragstart", S), t[h]("selectstart", S), t[h]("dragstart", S), e.style.userSelect = "", e.style.webkitUserSelect = "", e.style.MozUserSelect = "", e.style.pointerEvents = "", t.style.userSelect = "", t.style.webkitUserSelect = "", t.style.MozUserSelect = "", t.style.pointerEvents = "", r.gutter.style.cursor = "", r.parent.style.cursor = "", N.body.style.cursor = "";
135
135
  }
136
- function de(r) {
136
+ function ve(r) {
137
137
  if (!("button" in r && r.button !== 0)) {
138
- var e = this, t = u[e.a].element, n = u[e.b].element;
139
- e.dragging || f(i, "onDragStart", g)(I()), r.preventDefault(), e.dragging = !0, e.move = ce.bind(e), e.stop = ve.bind(e), d[m]("mouseup", e.stop), d[m]("touchend", e.stop), d[m]("touchcancel", e.stop), d[m]("mousemove", e.move), d[m]("touchmove", e.move), t[m]("selectstart", g), t[m]("dragstart", g), n[m]("selectstart", g), n[m]("dragstart", g), t.style.userSelect = "none", t.style.webkitUserSelect = "none", t.style.MozUserSelect = "none", t.style.pointerEvents = "none", n.style.userSelect = "none", n.style.webkitUserSelect = "none", n.style.MozUserSelect = "none", n.style.pointerEvents = "none", e.gutter.style.cursor = H, e.parent.style.cursor = H, N.body.style.cursor = H, Q.call(e), e.dragOffset = J(r) - e.end;
138
+ var e = this, t = o[e.a].element, n = o[e.b].element;
139
+ e.dragging || f(i, "onDragStart", S)(I()), r.preventDefault(), e.dragging = !0, e.move = oe.bind(e), e.stop = fe.bind(e), m[z]("mouseup", e.stop), m[z]("touchend", e.stop), m[z]("touchcancel", e.stop), m[z]("mousemove", e.move), m[z]("touchmove", e.move), t[z]("selectstart", S), t[z]("dragstart", S), n[z]("selectstart", S), n[z]("dragstart", S), t.style.userSelect = "none", t.style.webkitUserSelect = "none", t.style.MozUserSelect = "none", t.style.pointerEvents = "none", n.style.userSelect = "none", n.style.webkitUserSelect = "none", n.style.MozUserSelect = "none", n.style.pointerEvents = "none", e.gutter.style.cursor = H, e.parent.style.cursor = H, N.body.style.cursor = H, K.call(e), e.dragOffset = Z(r) - e.end;
140
140
  }
141
141
  }
142
- B = ee(B);
143
- var b = [];
144
- u = a.map(function(r, e) {
142
+ G = Q(G);
143
+ var w = [];
144
+ o = s.map(function(r, e) {
145
145
  var t = {
146
- element: re(r),
147
- size: B[e],
148
- minSize: $[e],
149
- maxSize: ie[e],
150
- snapOffset: se[e],
146
+ element: ee(r),
147
+ size: G[e],
148
+ minSize: R[e],
149
+ maxSize: ne[e],
150
+ snapOffset: ae[e],
151
151
  i: e
152
152
  }, n;
153
153
  if (e > 0 && (n = {
154
154
  a: e - 1,
155
155
  b: e,
156
156
  dragging: !1,
157
- direction: w,
158
- parent: M
159
- }, n[h] = G(
160
- D,
157
+ direction: E,
158
+ parent: D
159
+ }, n[g] = B(
160
+ M,
161
161
  e - 1 === 0,
162
162
  !1,
163
- C
164
- ), n[y] = G(
165
- D,
163
+ F
164
+ ), n[y] = B(
165
+ M,
166
166
  !1,
167
- e === a.length - 1,
168
- C
169
- ), Y === "row-reverse" || Y === "column-reverse")) {
167
+ e === s.length - 1,
168
+ F
169
+ ), X === "row-reverse" || X === "column-reverse")) {
170
170
  var c = n.a;
171
171
  n.a = n.b, n.b = c;
172
172
  }
173
173
  if (e > 0) {
174
- var o = le(e, w, t.element);
175
- oe(o, D, e), n[L] = de.bind(n), o[m](
174
+ var u = se(e, E, t.element);
175
+ ue(u, M, e), n[C] = ve.bind(n), u[z](
176
176
  "mousedown",
177
- n[L]
178
- ), o[m](
177
+ n[C]
178
+ ), u[z](
179
179
  "touchstart",
180
- n[L]
181
- ), M.insertBefore(o, t.element), n.gutter = o;
180
+ n[C]
181
+ ), D.insertBefore(u, t.element), n.gutter = u;
182
182
  }
183
183
  return A(
184
184
  t.element,
185
185
  t.size,
186
- G(
187
- D,
186
+ B(
187
+ M,
188
188
  e === 0,
189
- e === a.length - 1,
190
- C
189
+ e === s.length - 1,
190
+ F
191
191
  ),
192
192
  e
193
- ), e > 0 && b.push(n), t;
193
+ ), e > 0 && w.push(n), t;
194
194
  });
195
- function te(r) {
196
- var e = r.i === b.length, t = e ? b[r.i - 1] : b[r.i];
197
- Q.call(t);
198
- var n = e ? t.size - r.minSize - t[y] : r.minSize + t[h];
199
- K.call(t, n);
195
+ function T(r) {
196
+ var e = r.i === w.length, t = e ? w[r.i - 1] : w[r.i];
197
+ K.call(t);
198
+ var n = e ? t.size - r.minSize - t[y] : r.minSize + t[g];
199
+ J.call(t, n);
200
200
  }
201
- u.forEach(function(r) {
202
- var e = r.element[T]()[s];
203
- e < r.minSize && (ae ? te(r) : r.minSize = e);
201
+ o.forEach(function(r) {
202
+ var e = r.element[q]()[l];
203
+ e < r.minSize && (ie ? T(r) : r.minSize = e);
204
204
  });
205
- function me(r) {
206
- var e = ee(r);
205
+ function de(r) {
206
+ var e = Q(r);
207
207
  e.forEach(function(t, n) {
208
208
  if (n > 0) {
209
- var c = b[n - 1], o = u[c.a], v = u[c.b];
210
- o.size = e[n - 1], v.size = t, A(o.element, o.size, c[h], o.i), A(v.element, v.size, c[y], v.i);
209
+ var c = w[n - 1], u = o[c.a], d = o[c.b];
210
+ u.size = e[n - 1], d.size = t, A(u.element, u.size, c[g], u.i), A(d.element, d.size, c[y], d.i);
211
211
  }
212
212
  });
213
213
  }
214
- function ze(r, e) {
215
- b.forEach(function(t) {
216
- if (e !== !0 ? t.parent.removeChild(t.gutter) : (t.gutter[z](
214
+ function me(r, e) {
215
+ w.forEach(function(t) {
216
+ if (e !== !0 ? t.parent.removeChild(t.gutter) : (t.gutter[h](
217
217
  "mousedown",
218
- t[L]
219
- ), t.gutter[z](
218
+ t[C]
219
+ ), t.gutter[h](
220
220
  "touchstart",
221
- t[L]
221
+ t[C]
222
222
  )), r !== !0) {
223
- var n = Z(
224
- s,
223
+ var n = Y(
224
+ l,
225
225
  t.a.size,
226
- t[h]
226
+ t[g]
227
227
  );
228
228
  Object.keys(n).forEach(function(c) {
229
- u[t.a].element.style[c] = "", u[t.b].element.style[c] = "";
229
+ o[t.a].element.style[c] = "", o[t.b].element.style[c] = "";
230
230
  });
231
231
  }
232
232
  });
233
233
  }
234
234
  return {
235
- setSizes: me,
235
+ setSizes: de,
236
236
  getSizes: I,
237
237
  collapse: function(e) {
238
- te(u[e]);
238
+ T(o[e]);
239
239
  },
240
- destroy: ze,
241
- parent: M,
242
- pairs: b
240
+ destroy: me,
241
+ parent: D,
242
+ pairs: w
243
243
  };
244
244
  };
245
- const V = (l = document) => {
246
- l.querySelectorAll(".resizable-group").forEach((a) => {
247
- if (a.dataset.splitInitialized) return;
248
- const s = a.dataset.direction || "horizontal", p = Array.from(a.children).filter((S) => S.tagName === "DIV" || S.tagName === "SECTION" || S.tagName === "ASIDE");
249
- if (p.length < 2) return;
250
- let E;
251
- a.dataset.sizes && (E = a.dataset.sizes.split(",").map(Number));
252
- let O;
253
- a.dataset.minSizes && (O = a.dataset.minSizes.split(",").map(Number)), pe(p, {
254
- sizes: E || void 0,
255
- // Default is equal
256
- minSize: O || 100,
257
- direction: s,
258
- gutterSize: 5,
259
- // 5px gutter
260
- cursor: s === "horizontal" ? "col-resize" : "row-resize",
261
- elementStyle: (S, u, j) => ({
262
- "flex-basis": `calc(${u}% - ${j}px)`
245
+ const be = (a) => {
246
+ const i = a.dataset.direction || "horizontal", s = Array.from(a.children).filter(
247
+ (v) => (v.tagName === "DIV" || v.tagName === "SECTION" || v.tagName === "ASIDE") && !v.classList.contains("gutter")
248
+ );
249
+ if (s.length < 2) return;
250
+ let l;
251
+ a.dataset.sizes && (l = a.dataset.sizes.split(",").map(Number));
252
+ let b;
253
+ a.dataset.minSizes && (b = a.dataset.minSizes.split(",").map(Number));
254
+ try {
255
+ ye(s, {
256
+ sizes: l || void 0,
257
+ minSize: b || 100,
258
+ direction: i,
259
+ gutterSize: 1,
260
+ cursor: i === "horizontal" ? "col-resize" : "row-resize",
261
+ onDragEnd: (v) => {
262
+ a.dispatchEvent(new CustomEvent("change", {
263
+ bubbles: !0,
264
+ detail: { value: v }
265
+ }));
266
+ },
267
+ elementStyle: (v, p, O) => ({
268
+ "flex-basis": `calc(${p}% - ${O}px)`
263
269
  }),
264
- gutterStyle: (S, u) => ({
265
- "flex-basis": `${u}px`
270
+ gutterStyle: (v, p) => ({
271
+ "flex-basis": `${p}px`
266
272
  })
267
- }), a.dataset.splitInitialized = "true";
268
- });
269
- };
270
- if (typeof window < "u") {
271
- const l = new MutationObserver((i) => {
272
- i.forEach((a) => {
273
- a.type === "childList" && a.addedNodes.forEach((s) => {
274
- s.nodeType === 1 && (s.classList?.contains("resizable-group") ? V(s.parentNode) : s.querySelector?.(".resizable-group") && V(s));
275
- });
276
273
  });
277
- });
278
- document.addEventListener("DOMContentLoaded", () => {
279
- V(), l.observe(document.body, { childList: !0, subtree: !0 });
280
- });
281
- }
274
+ } catch (v) {
275
+ console.error("Basecoat: Resizable initialization failed", v);
276
+ }
277
+ a.dataset.resizableInitialized = !0, a.dispatchEvent(new CustomEvent("basecoat:initialized"));
278
+ };
279
+ window.basecoat && window.basecoat.register("resizable", ".resizable-group:not([data-resizable-initialized])", be);
282
280
  export {
283
- V as initResizable
281
+ be as initResizable
284
282
  };
package/dist/js/sheet.js CHANGED
@@ -1,18 +1,6 @@
1
1
  (() => {
2
- const toggleSheet = (trigger) => {
3
- const targetId = trigger.getAttribute("aria-controls") || trigger.dataset.target;
4
- if (!targetId) return;
5
- const sheet = document.getElementById(targetId);
6
- if (!sheet) return;
7
- const isOpen = sheet.getAttribute("aria-hidden") === "false";
8
- sheet.querySelector(".sheet-content, .drawer-content");
9
- if (isOpen) {
10
- closeSheet(sheet);
11
- } else {
12
- openSheet(sheet, trigger);
13
- }
14
- };
15
2
  const openSheet = (sheet, trigger) => {
3
+ document.dispatchEvent(new CustomEvent("basecoat:popover", { detail: { source: sheet } }));
16
4
  sheet.setAttribute("aria-hidden", "false");
17
5
  sheet.offsetHeight;
18
6
  const content = sheet.querySelector(".sheet-content, .drawer-content");
@@ -50,28 +38,30 @@
50
38
  trigger?.setAttribute("aria-expanded", "false");
51
39
  }
52
40
  };
41
+ const initSheet = (sheet) => {
42
+ sheet.dataset.sheetInitialized = true;
43
+ sheet.dispatchEvent(new CustomEvent("basecoat:initialized"));
44
+ };
53
45
  document.addEventListener("click", (e) => {
54
46
  const trigger = e.target.closest('[data-toggle="sheet"], [data-toggle="drawer"]');
55
47
  if (trigger) {
56
48
  e.preventDefault();
49
+ const targetId = trigger.getAttribute("aria-controls") || trigger.dataset.target;
50
+ const sheet = document.getElementById(targetId);
51
+ if (!sheet) return;
57
52
  if (!trigger.id) {
58
53
  trigger.id = "trigger-" + Math.random().toString(36).substr(2, 9);
59
54
  }
60
- toggleSheet(trigger);
55
+ const isOpen = sheet.getAttribute("aria-hidden") === "false";
56
+ if (isOpen) {
57
+ closeSheet(sheet);
58
+ } else {
59
+ openSheet(sheet, trigger);
60
+ }
61
61
  }
62
- });
63
- document.addEventListener("click", (e) => {
64
62
  if (e.target.matches(".sheet, .drawer")) {
65
63
  closeSheet(e.target);
66
64
  }
67
- });
68
- document.addEventListener("keydown", (e) => {
69
- if (e.key === "Escape") {
70
- const openSheets = document.querySelectorAll('.sheet[aria-hidden="false"], .drawer[aria-hidden="false"]');
71
- openSheets.forEach(closeSheet);
72
- }
73
- });
74
- document.addEventListener("click", (e) => {
75
65
  const closeBtn = e.target.closest("[data-close]");
76
66
  if (closeBtn) {
77
67
  const sheet = closeBtn.closest(".sheet, .drawer");
@@ -80,6 +70,18 @@
80
70
  }
81
71
  }
82
72
  });
83
- if (!window.basecoat) window.basecoat = {};
84
- window.basecoat.sheet = { open: openSheet, close: closeSheet };
73
+ document.addEventListener("keydown", (e) => {
74
+ if (e.key === "Escape") {
75
+ const openSheets = document.querySelectorAll('.sheet[aria-hidden="false"], .drawer[aria-hidden="false"]');
76
+ openSheets.forEach(closeSheet);
77
+ }
78
+ });
79
+ document.addEventListener("basecoat:popover", () => {
80
+ const openSheets = document.querySelectorAll('.sheet[aria-hidden="false"], .drawer[aria-hidden="false"]');
81
+ openSheets.forEach(closeSheet);
82
+ });
83
+ if (window.basecoat) {
84
+ window.basecoat.register("sheet", ".sheet:not([data-sheet-initialized]), .drawer:not([data-sheet-initialized])", initSheet);
85
+ window.basecoat.sheet = { open: openSheet, close: closeSheet };
86
+ }
85
87
  })();
@@ -1,40 +1,40 @@
1
1
  (() => {
2
- const d = (t) => {
3
- const e = t.getAttribute("aria-controls") || t.dataset.target;
4
- if (!e) return;
5
- const n = document.getElementById(e);
6
- if (!n) return;
7
- const a = n.getAttribute("aria-hidden") === "false";
8
- n.querySelector(".sheet-content, .drawer-content"), a ? o(n) : r(n, t);
9
- }, r = (t, e) => {
10
- t.setAttribute("aria-hidden", "false"), t.offsetHeight;
11
- const n = t.querySelector(".sheet-content, .drawer-content");
12
- n && (n.dataset.state = "open"), e && (e.setAttribute("aria-expanded", "true"), t.dataset.triggerId = e.id || ""), document.body.style.overflow = "hidden";
13
- }, o = (t) => {
14
- const e = t.querySelector(".sheet-content, .drawer-content");
15
- if (e) {
16
- e.dataset.state = "closed";
17
- const a = parseFloat(window.getComputedStyle(e).transitionDuration) * 1e3 || 300;
2
+ const s = (e, t) => {
3
+ document.dispatchEvent(new CustomEvent("basecoat:popover", { detail: { source: e } })), e.setAttribute("aria-hidden", "false"), e.offsetHeight;
4
+ const a = e.querySelector(".sheet-content, .drawer-content");
5
+ a && (a.dataset.state = "open"), t && (t.setAttribute("aria-expanded", "true"), e.dataset.triggerId = t.id || ""), document.body.style.overflow = "hidden";
6
+ }, n = (e) => {
7
+ const t = e.querySelector(".sheet-content, .drawer-content");
8
+ if (t) {
9
+ t.dataset.state = "closed";
10
+ const o = parseFloat(window.getComputedStyle(t).transitionDuration) * 1e3 || 300;
18
11
  setTimeout(() => {
19
- e.dataset.state === "closed" && (t.setAttribute("aria-hidden", "true"), document.body.style.overflow = "", t.dataset.triggerId && document.getElementById(t.dataset.triggerId)?.focus());
20
- }, a);
12
+ t.dataset.state === "closed" && (e.setAttribute("aria-hidden", "true"), document.body.style.overflow = "", e.dataset.triggerId && document.getElementById(e.dataset.triggerId)?.focus());
13
+ }, o);
21
14
  } else
22
- t.setAttribute("aria-hidden", "true"), document.body.style.overflow = "";
23
- const n = t.dataset.triggerId;
24
- n && document.getElementById(n)?.setAttribute("aria-expanded", "false");
15
+ e.setAttribute("aria-hidden", "true"), document.body.style.overflow = "";
16
+ const a = e.dataset.triggerId;
17
+ a && document.getElementById(a)?.setAttribute("aria-expanded", "false");
18
+ }, i = (e) => {
19
+ e.dataset.sheetInitialized = !0, e.dispatchEvent(new CustomEvent("basecoat:initialized"));
25
20
  };
26
- document.addEventListener("click", (t) => {
27
- const e = t.target.closest('[data-toggle="sheet"], [data-toggle="drawer"]');
28
- e && (t.preventDefault(), e.id || (e.id = "trigger-" + Math.random().toString(36).substr(2, 9)), d(e));
29
- }), document.addEventListener("click", (t) => {
30
- t.target.matches(".sheet, .drawer") && o(t.target);
31
- }), document.addEventListener("keydown", (t) => {
32
- t.key === "Escape" && document.querySelectorAll('.sheet[aria-hidden="false"], .drawer[aria-hidden="false"]').forEach(o);
33
- }), document.addEventListener("click", (t) => {
34
- const e = t.target.closest("[data-close]");
35
- if (e) {
36
- const n = e.closest(".sheet, .drawer");
37
- n && o(n);
21
+ document.addEventListener("click", (e) => {
22
+ const t = e.target.closest('[data-toggle="sheet"], [data-toggle="drawer"]');
23
+ if (t) {
24
+ e.preventDefault();
25
+ const o = t.getAttribute("aria-controls") || t.dataset.target, r = document.getElementById(o);
26
+ if (!r) return;
27
+ t.id || (t.id = "trigger-" + Math.random().toString(36).substr(2, 9)), r.getAttribute("aria-hidden") === "false" ? n(r) : s(r, t);
38
28
  }
39
- }), window.basecoat || (window.basecoat = {}), window.basecoat.sheet = { open: r, close: o };
29
+ e.target.matches(".sheet, .drawer") && n(e.target);
30
+ const a = e.target.closest("[data-close]");
31
+ if (a) {
32
+ const o = a.closest(".sheet, .drawer");
33
+ o && n(o);
34
+ }
35
+ }), document.addEventListener("keydown", (e) => {
36
+ e.key === "Escape" && document.querySelectorAll('.sheet[aria-hidden="false"], .drawer[aria-hidden="false"]').forEach(n);
37
+ }), document.addEventListener("basecoat:popover", () => {
38
+ document.querySelectorAll('.sheet[aria-hidden="false"], .drawer[aria-hidden="false"]').forEach(n);
39
+ }), window.basecoat && (window.basecoat.register("sheet", ".sheet:not([data-sheet-initialized]), .drawer:not([data-sheet-initialized])", i), window.basecoat.sheet = { open: s, close: n });
40
40
  })();