woby-tooltip 1.0.4 → 1.0.5
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/index.es.js +15 -12
- package/dist/index.es.js.map +1 -1
- package/dist/output.css +23 -4
- package/dist/style.css +23 -4
- package/dist/types/Arrow.d.ts +1 -0
- package/dist/types/Arrow.d.ts.map +1 -0
- package/dist/types/AutoTooltip.d.ts +7 -0
- package/dist/types/AutoTooltip.d.ts.map +1 -0
- package/dist/types/TextBox.d.ts +1 -0
- package/dist/types/TextBox.d.ts.map +1 -0
- package/dist/types/Tooltip.d.ts +2 -0
- package/dist/types/Tooltip.d.ts.map +1 -0
- package/dist/types/assets/arrow-down.d.ts +4 -0
- package/dist/types/assets/arrow-down.d.ts.map +1 -0
- package/dist/types/assets/arrow-up.d.ts +4 -0
- package/dist/types/assets/arrow-up.d.ts.map +1 -0
- package/dist/types/assets/logo.d.ts +4 -0
- package/dist/types/assets/logo.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -0
- package/package.json +19 -12
- package/tailwind.config.js +11 -11
- package/tsconfig.json +61 -59
- package/tsconfig.web.json +61 -0
- package/{vite.config.ts → vite.config.mts} +40 -40
- package/{vite.config.web.ts → vite.config.web.mts} +7 -5
- package/dist/index.cjs.js +0 -406
- package/dist/index.cjs.js.map +0 -1
- package/dist/index.umd.js +0 -408
- package/dist/index.umd.js.map +0 -1
package/dist/index.umd.js
DELETED
@@ -1,408 +0,0 @@
|
|
1
|
-
(function(global, factory) {
|
2
|
-
typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("woby/jsx-runtime"), require("woby")) : typeof define === "function" && define.amd ? define(["exports", "woby/jsx-runtime", "woby"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global.woby = {}, global["woby/jsx-runtime"], global.woby));
|
3
|
-
})(this, function(exports2, jsxRuntime, woby) {
|
4
|
-
"use strict";
|
5
|
-
const isSide = (side, str) => woby.$$(side) === str;
|
6
|
-
const isAlign = (align, str) => woby.$$(align) === str;
|
7
|
-
const isAlignA = (position, str) => woby.$$(position) === str;
|
8
|
-
const TextBox = (props) => {
|
9
|
-
const hoverIndex = woby.$(null);
|
10
|
-
const firstH = woby.$(null);
|
11
|
-
const lastH = woby.$(null);
|
12
|
-
const totH = woby.$(null);
|
13
|
-
const spanHeightsRef = woby.store({});
|
14
|
-
woby.store.on(spanHeightsRef, () => {
|
15
|
-
const heights = Object.keys(spanHeightsRef).map((key) => spanHeightsRef[key].clientHeight);
|
16
|
-
const firsth = heights[0];
|
17
|
-
const lasth = heights[heights.length - 1];
|
18
|
-
const toth = heights.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
|
19
|
-
totH(toth);
|
20
|
-
firstH(firsth);
|
21
|
-
lastH(lasth);
|
22
|
-
});
|
23
|
-
const unsetHover = () => {
|
24
|
-
hoverIndex(null);
|
25
|
-
props.hoverArrow(false);
|
26
|
-
};
|
27
|
-
const onSpanHover = (index, lastIndex2, numChildren) => {
|
28
|
-
hoverIndex(index);
|
29
|
-
const { static: rctStatic, arw: arrow2, pos: position2, hoverArrow } = props;
|
30
|
-
if (!rctStatic && (index === 0 && (isSide(position2.side, "bottom") || isAlignA(arrow2, "v-start")) || index === lastIndex2 && (isSide(position2.side, "top") || isAlignA(arrow2, "v-end")) || numChildren === 1)) {
|
31
|
-
return hoverArrow(true);
|
32
|
-
}
|
33
|
-
return hoverArrow(false);
|
34
|
-
};
|
35
|
-
const {
|
36
|
-
arw: arrow,
|
37
|
-
pos: position,
|
38
|
-
lines: lineSeparated,
|
39
|
-
static: tpStatic,
|
40
|
-
textboxWidth: width,
|
41
|
-
shadowColor: shCol,
|
42
|
-
shadowShape: shShape,
|
43
|
-
move,
|
44
|
-
backgroundColor,
|
45
|
-
padding,
|
46
|
-
borderRadius,
|
47
|
-
hoverBackground,
|
48
|
-
hoverColor,
|
49
|
-
color,
|
50
|
-
alert,
|
51
|
-
flat,
|
52
|
-
children,
|
53
|
-
class: cls,
|
54
|
-
className
|
55
|
-
} = props;
|
56
|
-
const numberChildren = Array.isArray(children) ? children.length : 1;
|
57
|
-
const lastIndex = numberChildren - 1;
|
58
|
-
const adjChildren = [children].flat().map((child, index) => {
|
59
|
-
const hover = woby.useMemo(() => !tpStatic && woby.$$(hoverIndex) === index);
|
60
|
-
const nhover = woby.useMemo(() => !woby.$$(hover));
|
61
|
-
const childProps = {
|
62
|
-
// ...child.props,
|
63
|
-
ref: (span) => spanHeightsRef[`span${index + 1}`] = span,
|
64
|
-
class: [padding, {
|
65
|
-
"whitespace-nowrap": () => woby.$$(width) === "auto",
|
66
|
-
[woby.$$(hoverColor)]: hover,
|
67
|
-
[woby.$$(hoverBackground)]: hover,
|
68
|
-
[woby.$$(color)]: nhover,
|
69
|
-
[woby.$$(backgroundColor)]: nhover,
|
70
|
-
[woby.$$(lineSeparated)]: () => woby.$$(lineSeparated) && lastIndex !== index
|
71
|
-
}],
|
72
|
-
// style,
|
73
|
-
onMouseOver: () => onSpanHover(index, lastIndex, numberChildren)
|
74
|
-
};
|
75
|
-
return woby.cloneElement(child, childProps);
|
76
|
-
});
|
77
|
-
const calcHPos = (align, left2, center, right2) => {
|
78
|
-
return isAlign(align, "center") ? center : isAlign(align, "left") ? left2 : right2;
|
79
|
-
};
|
80
|
-
const calcVPos = (perc, elHeight, divider, adjMove, totHeight) => {
|
81
|
-
return `calc(${perc}% - ${totHeight || 0}px - ${elHeight}px/${divider} + ${adjMove || 0}px)`;
|
82
|
-
};
|
83
|
-
const calcTopPos = (align, elHeight, totHeight) => {
|
84
|
-
if (woby.$$(align) === "center") {
|
85
|
-
return calcVPos(50, elHeight, 2, null, totHeight);
|
86
|
-
}
|
87
|
-
if (woby.$$(align) === "bottom") {
|
88
|
-
return calcVPos(100, elHeight, 2, -12, totHeight);
|
89
|
-
}
|
90
|
-
return calcVPos(0, elHeight, 2, 12, totHeight);
|
91
|
-
};
|
92
|
-
let left = woby.$("");
|
93
|
-
let right = woby.$("");
|
94
|
-
let top = woby.$("8px");
|
95
|
-
const hLeftPos = woby.useMemo(() => calcHPos(position.align, "100% - 50px", "50% - 40px", "0% - 30px"));
|
96
|
-
const hRightPos = woby.useMemo(() => calcHPos(position.align, "0% - 30px", "50% - 40px", "100% - 50px"));
|
97
|
-
woby.useEffect(() => {
|
98
|
-
const { align } = position;
|
99
|
-
switch (woby.$$(arrow)) {
|
100
|
-
case "h-start":
|
101
|
-
left(`calc(${woby.$$(hRightPos)})`);
|
102
|
-
break;
|
103
|
-
case "h-end":
|
104
|
-
right(`calc(${woby.$$(hLeftPos)})`);
|
105
|
-
break;
|
106
|
-
case "v-start":
|
107
|
-
top(calcTopPos(align, woby.$$(firstH), null));
|
108
|
-
break;
|
109
|
-
case "v-end":
|
110
|
-
top(calcTopPos(align, woby.$$(lineSeparated) ? -woby.$$(lastH) + 1 : -woby.$$(lastH), woby.$$(totH)));
|
111
|
-
break;
|
112
|
-
case "v-center":
|
113
|
-
top(`calc(0% - ${woby.$$(totH)}px/2 + 11px)`);
|
114
|
-
if (isAlign(align, "center")) {
|
115
|
-
top(`calc(50% - ${woby.$$(totH)}px/2)`);
|
116
|
-
}
|
117
|
-
if (isAlign(align, "bottom")) {
|
118
|
-
top(`calc(100% - ${woby.$$(totH)}px/2 - 11px)`);
|
119
|
-
}
|
120
|
-
break;
|
121
|
-
}
|
122
|
-
switch (woby.$$(position.side)) {
|
123
|
-
case "top":
|
124
|
-
top(calcVPos(0, woby.$$(totH), 1, 13));
|
125
|
-
break;
|
126
|
-
case "left":
|
127
|
-
right("8px");
|
128
|
-
break;
|
129
|
-
case "right":
|
130
|
-
left("8px");
|
131
|
-
break;
|
132
|
-
}
|
133
|
-
});
|
134
|
-
const textBoxWidthValue = woby.useMemo(() => {
|
135
|
-
let textBoxWidthValue2 = woby.$$(width);
|
136
|
-
if (textBoxWidthValue2 !== "auto") {
|
137
|
-
textBoxWidthValue2 = Number(woby.$$(width).slice(0, -2));
|
138
|
-
if (move.left > 0)
|
139
|
-
textBoxWidthValue2 += move.left;
|
140
|
-
if (move.right > 0)
|
141
|
-
textBoxWidthValue2 += move.right;
|
142
|
-
}
|
143
|
-
return textBoxWidthValue2;
|
144
|
-
});
|
145
|
-
const boxStyle = {
|
146
|
-
left,
|
147
|
-
right,
|
148
|
-
top,
|
149
|
-
width: textBoxWidthValue,
|
150
|
-
borderRadius
|
151
|
-
};
|
152
|
-
const shColAdj = woby.useMemo(() => woby.$$(shCol).substr(0, woby.$$(shCol).lastIndexOf(",")).replace(/[)]/g, ","));
|
153
|
-
const shadow = woby.useMemo(() => `${woby.$$(shShape)} ${woby.$$(shCol)}, 0 0 3px ${woby.$$(shColAdj)}, 0.1), 0 0 0 1px ${woby.$$(shColAdj)}, 0.15)`);
|
154
|
-
const boxShadow = woby.useMemo(() => woby.$$(flat) ? null : woby.$$(shadow));
|
155
|
-
const alertStyle = woby.useMemo(() => woby.$$(alert) ? "rpt-alert" : "");
|
156
|
-
const rgb = woby.useMemo(() => woby.$$(alert) || "rgb(248, 109, 109)");
|
157
|
-
const alertShadow = woby.useMemo(() => woby.$$(alert) ? `0 0 0 ${woby.$$(rgb).slice(0, woby.$$(rgb).length - 1)}, 0.4)` : null);
|
158
|
-
const noNeg = (number) => number > 0 ? number : 0;
|
159
|
-
return /* @__PURE__ */ jsxRuntime.jsxs(
|
160
|
-
"div",
|
161
|
-
{
|
162
|
-
class: [`absolute animation-none`, alertStyle, cls ?? className],
|
163
|
-
style: {
|
164
|
-
...boxStyle,
|
165
|
-
boxShadow: alertShadow,
|
166
|
-
padding: `${move.down}px ${move.left}px ${move.up}px ${move.right}px`
|
167
|
-
},
|
168
|
-
children: [
|
169
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
170
|
-
"div",
|
171
|
-
{
|
172
|
-
class: [`absolute animation-none w-full h-full z-0`, borderRadius],
|
173
|
-
style: {
|
174
|
-
boxShadow,
|
175
|
-
height: () => `calc(100% - ${noNeg(move.down) + noNeg(move.up)}px)`,
|
176
|
-
width: () => `calc(100% - ${noNeg(move.left) + noNeg(move.right)}px)`
|
177
|
-
}
|
178
|
-
}
|
179
|
-
),
|
180
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
181
|
-
"div",
|
182
|
-
{
|
183
|
-
class: [`relative z-[2] w-full`, backgroundColor, borderRadius],
|
184
|
-
onMouseLeave: unsetHover,
|
185
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
186
|
-
"div",
|
187
|
-
{
|
188
|
-
class: [!tpStatic ? "[&_span]:cursor-pointer w-full" : null, borderRadius, "overflow-hidden"],
|
189
|
-
children: adjChildren
|
190
|
-
}
|
191
|
-
)
|
192
|
-
}
|
193
|
-
)
|
194
|
-
]
|
195
|
-
}
|
196
|
-
);
|
197
|
-
};
|
198
|
-
const Arrow = ({ isHovered, hovBkg, bkgCol, flat }) => {
|
199
|
-
const backgroundColor = woby.useMemo(() => woby.$$(isHovered) ? woby.$$(hovBkg) : woby.$$(bkgCol));
|
200
|
-
const boxShadow = woby.useMemo(() => woby.$$(flat) ? null : "[box-shadow:rgba(0,0,0,0.18)0px_0px_0px_1px]");
|
201
|
-
return /* @__PURE__ */ jsxRuntime.jsx("div", { class: [`rotate-45 w-[14px] h-[14px] m-[3px] z-[1]`, backgroundColor, boxShadow] });
|
202
|
-
};
|
203
|
-
const output = "";
|
204
|
-
const Tooltip = (properties = {}) => {
|
205
|
-
const props = {
|
206
|
-
/** tailwind */
|
207
|
-
hoverBackground: "bg-[#ececec]",
|
208
|
-
/** tailwind */
|
209
|
-
hoverColor: "text-[black]",
|
210
|
-
/** tailwind */
|
211
|
-
backgroundColor: "bg-[white]",
|
212
|
-
/** not tailwind */
|
213
|
-
textboxWidth: "150px",
|
214
|
-
/** tailwind */
|
215
|
-
fontSize: "[font-size:inherit]",
|
216
|
-
/** tailwind */
|
217
|
-
color: "text-inherit",
|
218
|
-
borderRadius: "rounded-[5px]",
|
219
|
-
shadowColor: "rgba(0,0,0,0.251)",
|
220
|
-
shadowShape: "0 8px 15px",
|
221
|
-
moveDown: "0px",
|
222
|
-
moveRight: "0px",
|
223
|
-
moveLeft: "0px",
|
224
|
-
moveUp: "0px",
|
225
|
-
position: "bottom center",
|
226
|
-
arrowAlign: woby.$("start"),
|
227
|
-
textAlign: "left",
|
228
|
-
fontFamily: "inherit",
|
229
|
-
fontWeight: "bold",
|
230
|
-
zIndex: "100",
|
231
|
-
animation: "",
|
232
|
-
show: false,
|
233
|
-
...properties
|
234
|
-
};
|
235
|
-
const {
|
236
|
-
position: pos,
|
237
|
-
lineSeparated: lines,
|
238
|
-
arrowAlign: arwAlign,
|
239
|
-
hoverBackground,
|
240
|
-
backgroundColor,
|
241
|
-
moveDown,
|
242
|
-
moveRight,
|
243
|
-
moveLeft,
|
244
|
-
moveUp,
|
245
|
-
textAlign,
|
246
|
-
fontFamily,
|
247
|
-
fontWeight,
|
248
|
-
fontSize,
|
249
|
-
color,
|
250
|
-
zIndex,
|
251
|
-
animation,
|
252
|
-
flat,
|
253
|
-
parentRef: pf,
|
254
|
-
parent: Parent,
|
255
|
-
// shadowColor, shadowShape, textboxWidth, padding, borderRadius, hoverColor,
|
256
|
-
containerClass
|
257
|
-
} = props;
|
258
|
-
const show = (
|
259
|
-
/* $$(parent) ? props.show : */
|
260
|
-
woby.isObservable(props.show) ? props.show : woby.$(props.show)
|
261
|
-
);
|
262
|
-
const parentRef = woby.isObservable(pf) ? pf : woby.$(pf);
|
263
|
-
woby.useEffect(() => {
|
264
|
-
const p = woby.$$(parentRef);
|
265
|
-
if (!p)
|
266
|
-
return;
|
267
|
-
const on = () => show(true);
|
268
|
-
const off = () => show(false);
|
269
|
-
p.addEventListener("mouseenter", on);
|
270
|
-
p.addEventListener("mouseleave", off);
|
271
|
-
return () => {
|
272
|
-
p.removeEventListener("mouseenter", on);
|
273
|
-
p.removeEventListener("mouseleave", off);
|
274
|
-
};
|
275
|
-
});
|
276
|
-
const hoverArrow = woby.$(false);
|
277
|
-
const mount = woby.$(true);
|
278
|
-
woby.useEffect(() => {
|
279
|
-
if (woby.$$(show))
|
280
|
-
mount(true);
|
281
|
-
if (!woby.$$(animation))
|
282
|
-
mount(false);
|
283
|
-
});
|
284
|
-
const lineSeparated = typeof woby.$$(lines) === "boolean" ? woby.$("border-b border-b-[#ececec]") : woby.isObservable(lines) ? lines : woby.$(lines);
|
285
|
-
const position = {
|
286
|
-
side: woby.$$(pos).split(" ")[0],
|
287
|
-
align: woby.$$(pos).split(" ")[1]
|
288
|
-
};
|
289
|
-
const arrow = woby.$(woby.$$(arwAlign));
|
290
|
-
const { side, align } = position;
|
291
|
-
const classes = ["absolute flex"];
|
292
|
-
let tooltipStyle = {};
|
293
|
-
let bottom;
|
294
|
-
switch (side) {
|
295
|
-
case "bottom":
|
296
|
-
classes.push("top-full left-0 w-full justify-center");
|
297
|
-
break;
|
298
|
-
case "top":
|
299
|
-
classes.push("left-0 w-full justify-center");
|
300
|
-
bottom = "100%";
|
301
|
-
break;
|
302
|
-
case "right":
|
303
|
-
classes.push("top-0 left-full h-full justify-start");
|
304
|
-
break;
|
305
|
-
default:
|
306
|
-
classes.push("top-0 right-full h-full justify-end");
|
307
|
-
break;
|
308
|
-
}
|
309
|
-
const onAxis = {
|
310
|
-
y: isSide(position.side, "top") || isSide(position.side, "bottom"),
|
311
|
-
x: isSide(position.side, "left") || isSide(position.side, "right")
|
312
|
-
};
|
313
|
-
arrow(onAxis.y ? `h-${woby.$$(arrow)}` : `v-${woby.$$(arrow)}`);
|
314
|
-
const num = (str) => Number(str.slice(0, -2));
|
315
|
-
const move = {
|
316
|
-
down: num(moveDown),
|
317
|
-
up: num(moveUp),
|
318
|
-
left: num(moveLeft),
|
319
|
-
right: num(moveRight)
|
320
|
-
};
|
321
|
-
const oneMovePropIsNeg = move.down < 0 || move.up < 0 || move.left < 0 || move.right < 0;
|
322
|
-
switch (align) {
|
323
|
-
case "left":
|
324
|
-
if (onAxis.y)
|
325
|
-
classes.push("!justify-start");
|
326
|
-
break;
|
327
|
-
case "right":
|
328
|
-
if (onAxis.y)
|
329
|
-
classes.push("!justify-end");
|
330
|
-
break;
|
331
|
-
case "bottom":
|
332
|
-
if (onAxis.x)
|
333
|
-
classes.push("items-end");
|
334
|
-
break;
|
335
|
-
case "top":
|
336
|
-
break;
|
337
|
-
default:
|
338
|
-
if (onAxis.x) {
|
339
|
-
classes.push("items-center");
|
340
|
-
if (!oneMovePropIsNeg) {
|
341
|
-
move.down *= 2;
|
342
|
-
move.up *= 2;
|
343
|
-
}
|
344
|
-
}
|
345
|
-
if (onAxis.y && !oneMovePropIsNeg) {
|
346
|
-
move.right *= 2;
|
347
|
-
move.left *= 2;
|
348
|
-
}
|
349
|
-
break;
|
350
|
-
}
|
351
|
-
const adjustment = `${move.down}px ${move.left}px ${move.up}px ${move.right}px`;
|
352
|
-
tooltipStyle = {
|
353
|
-
...tooltipStyle,
|
354
|
-
zIndex,
|
355
|
-
color,
|
356
|
-
bottom,
|
357
|
-
fontSize,
|
358
|
-
textAlign,
|
359
|
-
fontFamily,
|
360
|
-
fontWeight,
|
361
|
-
padding: oneMovePropIsNeg ? null : adjustment,
|
362
|
-
margin: oneMovePropIsNeg ? adjustment : null,
|
363
|
-
animation: () => woby.$$(show) ? `rpt-${woby.$$(animation)} 0.2s` : `rpt-${woby.$$(animation)}-out 0.15s`
|
364
|
-
};
|
365
|
-
const e = woby.useMemo(
|
366
|
-
() => !woby.$$(animation) && woby.$$(show) && woby.$$(props.children) || woby.$$(show) && woby.$$(mount) && woby.$$(props.children) ? /* @__PURE__ */ jsxRuntime.jsx(
|
367
|
-
"div",
|
368
|
-
{
|
369
|
-
className: classes,
|
370
|
-
style: tooltipStyle,
|
371
|
-
onAnimationEnd: () => {
|
372
|
-
if (!woby.$$(show) && woby.$$(animation))
|
373
|
-
mount(false);
|
374
|
-
},
|
375
|
-
children: /* @__PURE__ */ jsxRuntime.jsxs("div", { class: "flex justify-center", children: [
|
376
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
377
|
-
Arrow,
|
378
|
-
{
|
379
|
-
isHovered: hoverArrow,
|
380
|
-
hovBkg: hoverBackground,
|
381
|
-
bkgCol: backgroundColor,
|
382
|
-
flat
|
383
|
-
}
|
384
|
-
),
|
385
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
386
|
-
TextBox,
|
387
|
-
{
|
388
|
-
...props,
|
389
|
-
hoverArrow,
|
390
|
-
lines: lineSeparated,
|
391
|
-
pos: position,
|
392
|
-
arw: arrow,
|
393
|
-
move
|
394
|
-
}
|
395
|
-
)
|
396
|
-
] })
|
397
|
-
}
|
398
|
-
) : null
|
399
|
-
);
|
400
|
-
return woby.useMemo(() => woby.$$(Parent) ? /* @__PURE__ */ jsxRuntime.jsxs("div", { class: [containerClass ?? "relative"], ref: parentRef, children: [
|
401
|
-
Parent,
|
402
|
-
e
|
403
|
-
] }) : e);
|
404
|
-
};
|
405
|
-
exports2.Tooltip = Tooltip;
|
406
|
-
Object.defineProperty(exports2, Symbol.toStringTag, { value: "Module" });
|
407
|
-
});
|
408
|
-
//# sourceMappingURL=index.umd.js.map
|
package/dist/index.umd.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"index.umd.js","sources":["../src/lib/TextBox.tsx","../src/lib/Arrow.tsx","../src/lib/Tooltip.tsx"],"sourcesContent":["import { $, $$, useEffect, cloneElement, Child, useMemo, Observable, ObservableMaybe, jsx, getMeta, store, type JSX } from 'woby'\r\n\r\n\r\ntype _Align = 'start' | 'end' | 'center' | 'bottom' | 'top' | 'right' | 'left'\r\nexport type Align = _Align | `v-${_Align}` | `h-${_Align}`\r\nexport type Side = 'bottom' | 'top' | 'left' | 'right'\r\n\r\nexport const isSide = (side: ObservableMaybe<Side>, str: Side) => $$(side) === str\r\nexport const isAlign = (align: ObservableMaybe<Align>, str: Align) => $$(align) === str\r\nexport const isAlignA = (position, str: string) => $$(position) === str\r\n\r\ntype TextboxType = {\r\n // lineSeparated?: boolean | string, position?: string,\r\n // /** tailwind */\r\n hoverBackground?: ObservableMaybe<string>, backgroundColor?: ObservableMaybe<string>, arrowAlign?: ObservableMaybe<Align>,\r\n moveDown?: ObservableMaybe<string>, moveRight?: ObservableMaybe<string>, moveLeft?: ObservableMaybe<string>,\r\n // moveUp?: string, textAlign?: string, fontFamily?: string, fontWeight?: string, fontSize?: string,\r\n // /** tailwind */\r\n color?: ObservableMaybe<string>, animation?: ObservableMaybe<string>, zIndex?: ObservableMaybe<string>, flat?: ObservableMaybe<boolean>, show?: ObservableMaybe<boolean>,\r\n hoverColor?: ObservableMaybe<string>,\r\n /** no tailwind */\r\n textboxWidth?: ObservableMaybe<string>,\r\n /** no tailwind */\r\n padding?: ObservableMaybe<string>,\r\n /** tailwind */\r\n borderRadius?: ObservableMaybe<string>, shadowColor?: ObservableMaybe<string>, shadowShape?: ObservableMaybe<string>,\r\n static?: ObservableMaybe<boolean>, alert?: ObservableMaybe<string>,\r\n\r\n hoverArrow: Observable<boolean>\r\n\r\n arw: ObservableMaybe<Align>,\r\n pos: {\r\n side: ObservableMaybe<Side>\r\n align: ObservableMaybe<Align>\r\n },\r\n /** tailwind border-b-*/\r\n lines: ObservableMaybe<string>,\r\n move: {\r\n down: number\r\n up: number\r\n left: number\r\n right: number\r\n },\r\n children?: Child\r\n}\r\n\r\n\r\nexport const TextBox = (props: TextboxType & JSX.HTMLAttributes<HTMLDivElement>): JSX.Element => {\r\n const hoverIndex = $<number>(null)\r\n const firstH = $<number>(null)\r\n const lastH = $<number>(null)\r\n const totH = $<number>(null)\r\n\r\n const spanHeightsRef = store({})\r\n\r\n store.on(spanHeightsRef, () => {\r\n const heights = Object.keys(spanHeightsRef)\r\n .map(key => spanHeightsRef[key].clientHeight)\r\n const firsth = heights[0]\r\n const lasth = heights[heights.length - 1]\r\n const toth = heights.reduce((accumulator, currentValue) => accumulator + currentValue, 0)\r\n totH(toth)\r\n firstH(firsth)\r\n lastH(lasth)\r\n })\r\n\r\n const unsetHover = () => {\r\n hoverIndex(null)\r\n props.hoverArrow(false)\r\n }\r\n\r\n // Set & unset hover state\r\n const onSpanHover = (index: number, lastIndex: number, numChildren: number) => {\r\n hoverIndex(index)\r\n const { static: rctStatic, arw: arrow, pos: position, hoverArrow } = props\r\n if (!rctStatic &&\r\n ((index === 0 && (isSide(position.side, 'bottom') || isAlignA(arrow, 'v-start'))) ||\r\n (index === lastIndex && (isSide(position.side, 'top') || isAlignA(arrow, 'v-end'))) ||\r\n numChildren === 1)) {\r\n return hoverArrow(true)\r\n }\r\n return hoverArrow(false)\r\n }\r\n\r\n const {\r\n arw: arrow,\r\n pos: position,\r\n lines: lineSeparated,\r\n static: tpStatic,\r\n textboxWidth: width,\r\n shadowColor: shCol,\r\n shadowShape: shShape,\r\n move,\r\n backgroundColor,\r\n padding,\r\n borderRadius,\r\n hoverBackground,\r\n hoverColor,\r\n color,\r\n alert,\r\n flat,\r\n children,\r\n class: cls, className\r\n } = props\r\n\r\n const numberChildren = Array.isArray(children) ? children.length : 1\r\n const lastIndex = numberChildren - 1\r\n\r\n const adjChildren = [children].flat().map((child, index) => {\r\n const hover = useMemo(() => !tpStatic && $$(hoverIndex) === index)\r\n const nhover = useMemo(() => !$$(hover))\r\n\r\n // whiteSpace: undefined,\r\n // color: undefined,\r\n // borderBottom: undefined,\r\n // }\r\n\r\n\r\n // if (!tpStatic && $$(hoverIndex) === index) {\r\n // class.push(hoverColor)\r\n // class.push(hoverBackground)\r\n // } else {\r\n // class.push(color)\r\n // class.push(backgroundColor)\r\n // }\r\n\r\n const style = { borderBottom: () => ($$(lineSeparated) && lastIndex !== index) ? $$(lineSeparated) : undefined }\r\n\r\n const childProps = {\r\n // ...child.props,\r\n ref: span => spanHeightsRef[`span${index + 1}`] = span,\r\n class: [padding, {\r\n 'whitespace-nowrap': () => $$(width) === 'auto', [$$(hoverColor)]: hover, [$$(hoverBackground)]: hover, [$$(color)]: nhover,\r\n [$$(backgroundColor)]: nhover,\r\n [$$(lineSeparated)]: () => ($$(lineSeparated) && lastIndex !== index)\r\n },],\r\n // style,\r\n onMouseOver: () => onSpanHover(index, lastIndex, numberChildren)\r\n }\r\n return cloneElement(child, childProps)\r\n })\r\n const calcHPos = (align: ObservableMaybe<Align>, left: string, center: string, right: string) => {\r\n return isAlign(align, 'center')\r\n ? center : isAlign(align, 'left') ? left : right\r\n }\r\n const calcVPos = (perc: number, elHeight: number, divider: number, adjMove: number, totHeight?: number) => {\r\n return `calc(${perc}% - ${totHeight || 0}px - ${elHeight}px/${divider} + ${adjMove || 0}px)`\r\n }\r\n // TODO: REfactor\r\n const calcTopPos = (align: ObservableMaybe<Align>, elHeight: number, totHeight: number) => {\r\n if ($$(align) === 'center') {\r\n return calcVPos(50, elHeight, 2, null, totHeight)\r\n }\r\n if ($$(align) === 'bottom') {\r\n return calcVPos(100, elHeight, 2, -12, totHeight)\r\n }\r\n return calcVPos(0, elHeight, 2, 12, totHeight)\r\n }\r\n\r\n let left = $('')\r\n let right = $('')\r\n let top = $('8px')\r\n // Align: left, center, right\r\n const hLeftPos = useMemo(() => calcHPos(position.align, '100% - 50px', '50% - 40px', '0% - 30px'))\r\n const hRightPos = useMemo(() => calcHPos(position.align, '0% - 30px', '50% - 40px', '100% - 50px'))\r\n\r\n useEffect(() => {\r\n const { align } = position\r\n switch ($$(arrow)) {\r\n case 'h-start':\r\n left(`calc(${$$(hRightPos)})`)\r\n break\r\n case 'h-end':\r\n right(`calc(${$$(hLeftPos)})`)\r\n break\r\n case 'v-start':\r\n top(calcTopPos(align, $$(firstH), null))\r\n break\r\n case 'v-end':\r\n top(calcTopPos(align, $$(lineSeparated) ? -$$(lastH) + 1 : -$$(lastH), $$(totH)))\r\n break\r\n case 'v-center':\r\n top(`calc(0% - ${$$(totH)}px/2 + 11px)`)\r\n if (isAlign(align, 'center')) {\r\n top(`calc(50% - ${$$(totH)}px/2)`)\r\n }\r\n if (isAlign(align, 'bottom')) {\r\n top(`calc(100% - ${$$(totH)}px/2 - 11px)`)\r\n }\r\n break\r\n default:\r\n break\r\n }\r\n\r\n switch ($$(position.side)) {\r\n case 'top':\r\n top(calcVPos(0, $$(totH), 1, 13))\r\n break\r\n case 'left':\r\n right('8px')\r\n break\r\n case 'right':\r\n left('8px')\r\n break\r\n default:\r\n break\r\n }\r\n })\r\n\r\n const textBoxWidthValue = useMemo(() => {\r\n let textBoxWidthValue: number | string = $$(width)\r\n\r\n if (textBoxWidthValue !== 'auto') {\r\n textBoxWidthValue = Number($$(width).slice(0, -2))\r\n if (move.left > 0) textBoxWidthValue += move.left\r\n if (move.right > 0) textBoxWidthValue += move.right\r\n }\r\n\r\n return textBoxWidthValue\r\n })\r\n\r\n const boxStyle = {\r\n left,\r\n right,\r\n top,\r\n width: textBoxWidthValue,\r\n borderRadius\r\n }\r\n\r\n const shColAdj = useMemo(() => $$(shCol).substr(0, $$(shCol).lastIndexOf(',')).replace(/[)]/g, ','))\r\n const shadow = useMemo(() => `${$$(shShape)} ${$$(shCol)}, 0 0 3px ${$$(shColAdj)}, 0.1), 0 0 0 1px ${$$(shColAdj)}, 0.15)`)\r\n const boxShadow = useMemo(() => $$(flat) ? null : $$(shadow))\r\n const alertStyle = useMemo(() => $$(alert) ? 'rpt-alert' : '')\r\n const rgb = useMemo(() => $$(alert) || 'rgb(248, 109, 109)')\r\n const alertShadow = useMemo(() => $$(alert) ? `0 0 0 ${$$(rgb).slice(0, $$(rgb).length - 1)}, 0.4)` : null)\r\n const noNeg = (number: number) => number > 0 ? number : 0\r\n\r\n return (\r\n <div\r\n class={[`absolute animation-none`, alertStyle, cls ?? className]}\r\n style={{\r\n ...boxStyle,\r\n boxShadow: alertShadow,\r\n padding: `${move.down}px ${move.left}px ${move.up}px ${move.right}px`\r\n }}\r\n >\r\n <div\r\n class={[`absolute animation-none w-full h-full z-0`, borderRadius]}\r\n style={{\r\n boxShadow,\r\n height: () => `calc(100% - ${noNeg(move.down) + noNeg(move.up)}px)`,\r\n width: () => `calc(100% - ${noNeg(move.left) + noNeg(move.right)}px)`\r\n }}\r\n />\r\n <div\r\n class={[`relative z-[2] w-full`, backgroundColor, borderRadius]}\r\n onMouseLeave={unsetHover}\r\n >\r\n <div\r\n class={[!tpStatic ? '[&_span]:cursor-pointer w-full' : null, borderRadius, 'overflow-hidden']}>\r\n {adjChildren}\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n\r\n","import { $$, ObservableMaybe, useMemo, type JSX } from 'woby'\r\n//\r\n\r\nexport const Arrow = ({ isHovered, hovBkg, bkgCol, flat }: { isHovered: ObservableMaybe<boolean>, hovBkg: ObservableMaybe<string>, bkgCol: ObservableMaybe<string>, flat?: ObservableMaybe<boolean> }): JSX.Element => {\r\n const backgroundColor = useMemo(() => $$(isHovered) ? $$(hovBkg) : $$(bkgCol))\r\n // const boxShadow = flat ? null : 'shadow-[rgba(0,0,0,.18)0_0_0_1px]'\r\n const boxShadow = useMemo(() => $$(flat) ? null : '[box-shadow:rgba(0,0,0,0.18)0px_0px_0px_1px]')\r\n\r\n return <div class={[`rotate-45 w-[14px] h-[14px] m-[3px] z-[1]`, backgroundColor, boxShadow]} />\r\n}\r\n","import { $$, $, useEffect, ObservableMaybe, Observable, isObservable, useMemo, getMeta, type JSX } from 'woby'\r\n\r\nimport { Align, Side, TextBox, isSide } from './TextBox'\r\nimport { Arrow } from './Arrow'\r\n\r\n//import cssRules from './Tooltip/styles'\r\nimport '../../dist/output.css'\r\n\r\nexport type TooltipType = {\r\n /** tailwind\r\n * border-b border-b-[#ececec]\r\n */\r\n lineSeparated?: ObservableMaybe<boolean | string>, position?: ObservableMaybe<string>,\r\n /** tailwind */\r\n hoverBackground?: ObservableMaybe<string>,\r\n /** tailwind */\r\n backgroundColor?: ObservableMaybe<string>,\r\n arrowAlign?: ObservableMaybe<Align>, moveDown?: ObservableMaybe<string>,\r\n moveRight?: ObservableMaybe<string>, moveLeft?: ObservableMaybe<string>,\r\n moveUp?: ObservableMaybe<string>, textAlign?: ObservableMaybe<string>, fontFamily?: ObservableMaybe<string>, fontWeight?: ObservableMaybe<string>,\r\n /** tailwind */\r\n fontSize?: ObservableMaybe<string>,\r\n /** tailwind */\r\n color?: ObservableMaybe<string>, animation?: ObservableMaybe<string>, zIndex?: ObservableMaybe<string>, flat?: ObservableMaybe<boolean>, show?: ObservableMaybe<boolean>,\r\n /** tailwind */\r\n hoverColor?: ObservableMaybe<string>,\r\n /** no tailwind */\r\n textboxWidth?: ObservableMaybe<string>,\r\n /** tailwind */\r\n padding?: ObservableMaybe<string>,\r\n /** tailwind */\r\n borderRadius?: ObservableMaybe<string>, shadowColor?: ObservableMaybe<string>, shadowShape?: ObservableMaybe<string>,\r\n static?: ObservableMaybe<boolean>, alert?: ObservableMaybe<string>,\r\n children?: JSX.Element\r\n}\r\n\r\nexport const Tooltip = <T extends HTMLElement>(properties: TooltipType & JSX.HTMLAttributes<HTMLDivElement> & { parentRef?: Observable<HTMLElement>, parent?: JSX.Child, containerClass?: JSX.Class /* | ((props: { ref: Refs }) => Child), */ } = {}): JSX.Element => {\r\n const props = {\r\n /** tailwind */\r\n hoverBackground: 'bg-[#ececec]',\r\n /** tailwind */\r\n hoverColor: 'text-[black]',\r\n /** tailwind */\r\n backgroundColor: 'bg-[white]',\r\n /** not tailwind */\r\n textboxWidth: '150px',\r\n /** tailwind */\r\n fontSize: '[font-size:inherit]',\r\n /** tailwind */\r\n color: 'text-inherit',\r\n borderRadius: 'rounded-[5px]',\r\n shadowColor: 'rgba(0,0,0,0.251)', shadowShape: '0 8px 15px', moveDown: '0px', moveRight: '0px', moveLeft: '0px', moveUp: '0px',\r\n position: 'bottom center', arrowAlign: $<Align>('start'), textAlign: 'left', fontFamily: 'inherit', fontWeight: 'bold',\r\n\r\n zIndex: '100', animation: '', show: false, ...properties\r\n }\r\n\r\n const { position: pos, lineSeparated: lines, arrowAlign: arwAlign,\r\n hoverBackground, backgroundColor,\r\n moveDown, moveRight, moveLeft, moveUp,\r\n textAlign, fontFamily, fontWeight, fontSize, color, zIndex, animation, flat, parentRef: pf, parent: Parent,\r\n // shadowColor, shadowShape, textboxWidth, padding, borderRadius, hoverColor,\r\n containerClass,\r\n } = props\r\n\r\n const show = /* $$(parent) ? props.show : */ (isObservable(props.show) ? props.show : $(props.show))\r\n const parentRef: Observable<HTMLElement> = isObservable(pf) ? pf : $(pf)\r\n\r\n useEffect(() => {\r\n const p = $$(parentRef)\r\n if (!p) return\r\n\r\n const on = () => show(true)\r\n const off = () => show(false)\r\n p.addEventListener('mouseenter', on)\r\n p.addEventListener('mouseleave', off)\r\n\r\n return () => {\r\n p.removeEventListener('mouseenter', on)\r\n p.removeEventListener('mouseleave', off)\r\n }\r\n })\r\n\r\n const hoverArrow = $(false)\r\n const mount = $(true)\r\n // const tooltipRef = useRef(null)\r\n // const {\r\n // lineSeparated = '1px solid #ececec', position = 'right center', hoverBackground = '#ececec', backgroundColor = 'white', arrowAlign = 'start', moveDown = '0px',\r\n // moveRight = '0px', moveLeft = '0px', moveUp = '0px', textAlign = 'left', fontFamily = 'inherit', fontWeight = 'bold', fontSize = 'inherit', color = 'inherit',\r\n // animation = '', zIndex = '100', flat,\r\n // show\r\n // } = props\r\n\r\n // useEffect(() => {\r\n // // // Injecting styles directly into header\r\n // // // if (!document.getElementById('rpt-css')) {\r\n // // // const $style = document.createElement('style')\r\n // // // $style.type = 'text/css'\r\n // // // $style.id = 'rpt-css'\r\n // // // document.head.appendChild($style)\r\n // // // $style.innerHTML = cssRules\r\n // // // }\r\n\r\n // // // Basic prop type checking\r\n // // Object.keys(props).forEach((propName) => {\r\n // // const type = typeof $$(props[propName])\r\n // // const text = `React-power-tooltip: [${propName}] prop should be a`\r\n // // if (propName !== 'children' && type !== 'boolean' && type !== 'string') {\r\n // // // eslint-disable-next-line\r\n // // console.error(`${text} string (check also units)`)\r\n // // }\r\n // // })\r\n // // })\r\n\r\n // useEffect(() => {\r\n // show(props.show())\r\n // })\r\n\r\n useEffect(() => {\r\n if ($$(show)) mount(true)\r\n if (!$$(animation)) mount(false)\r\n })\r\n\r\n // const hoverArrowHandler = (bool) => {\r\n // setHoverArrow(bool)\r\n // }\r\n\r\n // const {\r\n // hoverBackground = '#ececec', hoverColor = 'black', backgroundColor = 'white', textboxWidth = '150px', padding = '15px 20px', borderRadius = '5px',\r\n // shadowColor = 'rgba(0,0,0,0.251)', shadowShape = '0 8px 15px', moveDown = '0px', moveRight = '0px', moveLeft = '0px', moveUp = '0px',\r\n // position: pos = 'right center', arrowAlign: arwAlign = 'start', textAlign = 'left', fontFamily = 'inherit', fontWeight = 'bold', fontSize = 'inherit', color = 'inherit',\r\n // zIndex = '100', animation = '', lineSeparated: lines,\r\n // flat,\r\n // } = props\r\n\r\n\r\n // const { lineSeparated: lines, position: pos, hoverBackground, backgroundColor, arrowAlign: arwAlign, moveDown, moveRight, moveLeft, moveUp, textAlign, fontFamily, fontWeight, fontSize, color, animation, zIndex, flat } = props\r\n\r\n // Sets if false no line; if true default line; if string custom line;\r\n const lineSeparated: Observable<string> = typeof ($$(lines)) === 'boolean'\r\n ? $('border-b border-b-[#ececec]') : (isObservable(lines) ? lines : $(lines)) as Observable<string>\r\n\r\n const position = {\r\n side: $$(pos).split(' ')[0] as Side,\r\n align: $$(pos).split(' ')[1] as Align,\r\n }\r\n\r\n const arrow = $($$(arwAlign))//isObservable(arwAlign) ? arwAlign : $(arwAlign)\r\n\r\n const { side, align } = position\r\n const classes = ['absolute flex']\r\n let tooltipStyle = {}\r\n let bottom\r\n\r\n // const arrange = (top, left, right, height, width, cssSel) => {\r\n // tooltipStyle = { top, left, right, height, width }\r\n // classes.push(cssSel)\r\n // }\r\n\r\n switch (side) {\r\n case 'bottom':\r\n classes.push('top-full left-0 w-full justify-center')\r\n break\r\n case 'top':\r\n classes.push('left-0 w-full justify-center')\r\n bottom = '100%'\r\n break\r\n case 'right':\r\n classes.push('top-0 left-full h-full justify-start')\r\n break\r\n default:\r\n classes.push('top-0 right-full h-full justify-end')\r\n break\r\n }\r\n\r\n const onAxis = {\r\n y: isSide(position.side, 'top') || isSide(position.side, 'bottom'),\r\n x: isSide(position.side, 'left') || isSide(position.side, 'right')\r\n }\r\n\r\n arrow((onAxis.y ? `h-${$$(arrow)}` : `v-${$$(arrow)}`) as Align)\r\n\r\n const num = str => Number(str.slice(0, -2))\r\n const move = {\r\n down: num(moveDown),\r\n up: num(moveUp),\r\n left: num(moveLeft),\r\n right: num(moveRight)\r\n }\r\n\r\n const oneMovePropIsNeg = move.down < 0 || move.up < 0\r\n || move.left < 0 || move.right < 0\r\n\r\n switch (align) {\r\n case 'left':\r\n if (onAxis.y) classes.push('!justify-start')\r\n break\r\n case 'right':\r\n if (onAxis.y) classes.push('!justify-end')\r\n break\r\n case 'bottom':\r\n if (onAxis.x) classes.push('items-end')\r\n break\r\n case 'top':\r\n break\r\n default:\r\n if (onAxis.x) {\r\n classes.push('items-center')\r\n if (!oneMovePropIsNeg) {\r\n move.down *= 2\r\n move.up *= 2\r\n }\r\n }\r\n if (onAxis.y && !oneMovePropIsNeg) {\r\n move.right *= 2\r\n move.left *= 2\r\n }\r\n break\r\n }\r\n\r\n const adjustment = `${move.down}px ${move.left}px ${move.up}px ${move.right}px`\r\n\r\n tooltipStyle = {\r\n ...tooltipStyle,\r\n zIndex,\r\n color,\r\n bottom,\r\n fontSize,\r\n textAlign,\r\n fontFamily,\r\n fontWeight,\r\n padding: oneMovePropIsNeg ? null : adjustment,\r\n margin: oneMovePropIsNeg ? adjustment : null,\r\n animation: () => $$(show) ? `rpt-${$$(animation)} 0.2s` : `rpt-${$$(animation)}-out 0.15s`\r\n }\r\n\r\n const e = useMemo(() => ((!$$(animation) && $$(show) && $$(props.children)) || ($$(show) && $$(mount)) && $$(props.children)) ? (\r\n <div\r\n className={classes}\r\n style={tooltipStyle}\r\n onAnimationEnd={() => { if (!$$(show) && $$(animation)) mount(false) }}\r\n >\r\n <div class='flex justify-center' >\r\n <Arrow\r\n isHovered={hoverArrow}\r\n hovBkg={hoverBackground}\r\n bkgCol={backgroundColor}\r\n flat={flat}\r\n />\r\n <TextBox\r\n {...props}\r\n hoverArrow={hoverArrow}\r\n lines={lineSeparated}\r\n pos={position}\r\n arw={arrow}\r\n move={move}\r\n />\r\n </div>\r\n </div>\r\n ) : null\r\n )\r\n\r\n return useMemo(() => $$(Parent) ? <div class={[containerClass ?? 'relative']} ref={parentRef}>{Parent}{e}</div> : e)\r\n}\r\n\r\n\r\n\r\n"],"names":["$$","$","store","lastIndex","arrow","position","useMemo","cloneElement","left","right","useEffect","textBoxWidthValue","jsxs","jsx","isObservable"],"mappings":"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"}
|