blessing-ui 0.1.0 → 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.
- package/CHANGELOG.md +38 -0
- package/README.md +65 -43
- package/dist/blessing-ui.css +60 -0
- package/dist/components/BlessCodeBlock.css +1 -0
- package/dist/components/BlessCodeBlock.js +6 -0
- package/dist/components/BlessCodeBlock.vue.d.ts +62 -0
- package/dist/components/BlessCodeBlock.vue_vue_type_script_setup_true_lang.js +134 -0
- package/dist/components/BlessCountUp.css +1 -0
- package/dist/components/BlessCountUp.js +6 -0
- package/dist/components/BlessCountUp.vue.d.ts +18 -0
- package/dist/components/BlessCountUp.vue_vue_type_script_setup_true_lang.js +49 -0
- package/dist/components/BlessCropper.css +1 -0
- package/dist/components/BlessCropper.js +6 -0
- package/dist/components/BlessCropper.vue.d.ts +54 -0
- package/dist/components/BlessCropper.vue_vue_type_script_setup_true_lang.js +212 -0
- package/dist/components/BlessDiff.css +1 -0
- package/dist/components/BlessDiff.js +6 -0
- package/dist/components/BlessDiff.vue.d.ts +22 -0
- package/dist/components/BlessDiff.vue_vue_type_script_setup_true_lang.js +148 -0
- package/dist/components/BlessGantt.css +1 -0
- package/dist/components/BlessGantt.js +6 -0
- package/dist/components/BlessGantt.vue.d.ts +69 -0
- package/dist/components/BlessGantt.vue_vue_type_script_setup_true_lang.js +270 -0
- package/dist/components/BlessGauge.css +1 -0
- package/dist/components/BlessGauge.js +6 -0
- package/dist/components/BlessGauge.vue.d.ts +36 -0
- package/dist/components/BlessGauge.vue_vue_type_script_setup_true_lang.js +100 -0
- package/dist/components/BlessHeatmapCalendar.css +1 -0
- package/dist/components/BlessHeatmapCalendar.js +6 -0
- package/dist/components/BlessHeatmapCalendar.vue.d.ts +38 -0
- package/dist/components/BlessHeatmapCalendar.vue_vue_type_script_setup_true_lang.js +146 -0
- package/dist/components/BlessHotspots.css +1 -0
- package/dist/components/BlessHotspots.js +6 -0
- package/dist/components/BlessHotspots.vue.d.ts +49 -0
- package/dist/components/BlessHotspots.vue_vue_type_script_setup_true_lang.js +127 -0
- package/dist/components/BlessKanban.css +1 -0
- package/dist/components/BlessKanban.js +6 -0
- package/dist/components/BlessKanban.vue.d.ts +55 -0
- package/dist/components/BlessKanban.vue_vue_type_script_setup_true_lang.js +165 -0
- package/dist/components/BlessLoupe.css +1 -0
- package/dist/components/BlessLoupe.js +6 -0
- package/dist/components/BlessLoupe.vue.d.ts +16 -0
- package/dist/components/BlessLoupe.vue_vue_type_script_setup_true_lang.js +93 -0
- package/dist/components/BlessMarquee.css +1 -0
- package/dist/components/BlessMarquee.js +6 -0
- package/dist/components/BlessMarquee.vue.d.ts +40 -0
- package/dist/components/BlessMarquee.vue_vue_type_script_setup_true_lang.js +64 -0
- package/dist/components/BlessMasonry.css +1 -0
- package/dist/components/BlessMasonry.js +6 -0
- package/dist/components/BlessMasonry.vue.d.ts +33 -0
- package/dist/components/BlessMasonry.vue_vue_type_script_setup_true_lang.js +79 -0
- package/dist/components/BlessMention.css +1 -0
- package/dist/components/BlessMention.js +6 -0
- package/dist/components/BlessMention.vue.d.ts +32 -0
- package/dist/components/BlessMention.vue_vue_type_script_setup_true_lang.js +116 -0
- package/dist/components/BlessRadialMenu.css +1 -0
- package/dist/components/BlessRadialMenu.js +6 -0
- package/dist/components/BlessRadialMenu.vue.d.ts +45 -0
- package/dist/components/BlessRadialMenu.vue_vue_type_script_setup_true_lang.js +146 -0
- package/dist/components/BlessShortcutRecorder.css +1 -0
- package/dist/components/BlessShortcutRecorder.js +6 -0
- package/dist/components/BlessShortcutRecorder.vue.d.ts +29 -0
- package/dist/components/BlessShortcutRecorder.vue_vue_type_script_setup_true_lang.js +116 -0
- package/dist/components/BlessSliderCaptcha.css +1 -0
- package/dist/components/BlessSliderCaptcha.js +6 -0
- package/dist/components/BlessSliderCaptcha.vue.d.ts +33 -0
- package/dist/components/BlessSliderCaptcha.vue_vue_type_script_setup_true_lang.js +141 -0
- package/dist/components/BlessSortable.css +1 -0
- package/dist/components/BlessSortable.js +6 -0
- package/dist/components/BlessSortable.vue.d.ts +33 -0
- package/dist/components/BlessSortable.vue_vue_type_script_setup_true_lang.js +87 -0
- package/dist/components/BlessSplitView.css +1 -0
- package/dist/components/BlessSplitView.js +6 -0
- package/dist/components/BlessSplitView.vue.d.ts +61 -0
- package/dist/components/BlessSplitView.vue_vue_type_script_setup_true_lang.js +92 -0
- package/dist/components/BlessSwipeDeck.css +1 -0
- package/dist/components/BlessSwipeDeck.js +6 -0
- package/dist/components/BlessSwipeDeck.vue.d.ts +46 -0
- package/dist/components/BlessSwipeDeck.vue_vue_type_script_setup_true_lang.js +199 -0
- package/dist/components/BlessTimer.css +1 -0
- package/dist/components/BlessTimer.js +6 -0
- package/dist/components/BlessTimer.vue.d.ts +56 -0
- package/dist/components/BlessTimer.vue_vue_type_script_setup_true_lang.js +130 -0
- package/dist/composables/cropBox.d.ts +22 -0
- package/dist/composables/cropBox.js +39 -0
- package/dist/composables/diffLines.d.ts +10 -0
- package/dist/composables/diffLines.js +55 -0
- package/dist/composables/radial.d.ts +15 -0
- package/dist/composables/radial.js +22 -0
- package/dist/composables/shortcut.d.ts +12 -0
- package/dist/composables/shortcut.js +35 -0
- package/dist/composables/useSortable.d.ts +18 -0
- package/dist/composables/useSortable.js +34 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.js +78 -53
- package/package.json +20 -18
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface DiffRow {
|
|
2
|
+
type: "same" | "add" | "del";
|
|
3
|
+
/** 1-based line number in the old text (not on `add`) */
|
|
4
|
+
a?: number;
|
|
5
|
+
/** 1-based line number in the new text (not on `del`) */
|
|
6
|
+
b?: number;
|
|
7
|
+
text: string;
|
|
8
|
+
}
|
|
9
|
+
/** Line diff of two texts: common prefix and suffix are peeled off, the middle is an LCS. */
|
|
10
|
+
export declare function diffLines(oldText: string, newText: string): DiffRow[];
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
//#region src/composables/diffLines.ts
|
|
2
|
+
var e = (e) => e === "" ? [] : e.replace(/\n$/, "").split("\n"), t = 4e6;
|
|
3
|
+
function n(n, r) {
|
|
4
|
+
let i = e(n), a = e(r), o = 0;
|
|
5
|
+
for (; o < i.length && o < a.length && i[o] === a[o];) o++;
|
|
6
|
+
let s = i.length, c = a.length;
|
|
7
|
+
for (; s > o && c > o && i[s - 1] === a[c - 1];) s--, c--;
|
|
8
|
+
let l = [];
|
|
9
|
+
for (let e = 0; e < o; e++) l.push({
|
|
10
|
+
type: "same",
|
|
11
|
+
a: e + 1,
|
|
12
|
+
b: e + 1,
|
|
13
|
+
text: i[e]
|
|
14
|
+
});
|
|
15
|
+
let u = s - o, d = c - o;
|
|
16
|
+
if (u * d > t || !u || !d) {
|
|
17
|
+
for (let e = o; e < s; e++) l.push({
|
|
18
|
+
type: "del",
|
|
19
|
+
a: e + 1,
|
|
20
|
+
text: i[e]
|
|
21
|
+
});
|
|
22
|
+
for (let e = o; e < c; e++) l.push({
|
|
23
|
+
type: "add",
|
|
24
|
+
b: e + 1,
|
|
25
|
+
text: a[e]
|
|
26
|
+
});
|
|
27
|
+
} else {
|
|
28
|
+
let e = d + 1, t = new Uint32Array((u + 1) * e);
|
|
29
|
+
for (let n = u - 1; n >= 0; n--) for (let r = d - 1; r >= 0; r--) t[n * e + r] = i[o + n] === a[o + r] ? t[(n + 1) * e + r + 1] + 1 : Math.max(t[(n + 1) * e + r], t[n * e + r + 1]);
|
|
30
|
+
let n = 0, r = 0;
|
|
31
|
+
for (; n < u || r < d;) n < u && r < d && i[o + n] === a[o + r] ? (l.push({
|
|
32
|
+
type: "same",
|
|
33
|
+
a: o + n + 1,
|
|
34
|
+
b: o + r + 1,
|
|
35
|
+
text: i[o + n]
|
|
36
|
+
}), n++, r++) : r < d && (n === u || t[n * e + r + 1] > t[(n + 1) * e + r]) ? (l.push({
|
|
37
|
+
type: "add",
|
|
38
|
+
b: o + r + 1,
|
|
39
|
+
text: a[o + r]
|
|
40
|
+
}), r++) : (l.push({
|
|
41
|
+
type: "del",
|
|
42
|
+
a: o + n + 1,
|
|
43
|
+
text: i[o + n]
|
|
44
|
+
}), n++);
|
|
45
|
+
}
|
|
46
|
+
for (let e = 0; e < i.length - s; e++) l.push({
|
|
47
|
+
type: "same",
|
|
48
|
+
a: s + e + 1,
|
|
49
|
+
b: c + e + 1,
|
|
50
|
+
text: i[s + e]
|
|
51
|
+
});
|
|
52
|
+
return l;
|
|
53
|
+
}
|
|
54
|
+
//#endregion
|
|
55
|
+
export { n as diffLines };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Offset of item `i` of `n` from the centre, laid out clockwise from the top. */
|
|
2
|
+
export declare function polar(i: number, n: number, radius: number): {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Which of `n` sectors a point (dx, dy from the centre) lies in, sector 0 centred on the top;
|
|
8
|
+
* `null` inside the `dead` radius, where nothing is aimed at yet.
|
|
9
|
+
*/
|
|
10
|
+
export declare function sectorAt(dx: number, dy: number, n: number, dead?: number): number | null;
|
|
11
|
+
/** Centre moved so a circle of `half` px stays `pad` inside a `w` x `h` box. */
|
|
12
|
+
export declare function keepInside(x: number, y: number, half: number, w: number, h: number, pad?: number): {
|
|
13
|
+
x: number;
|
|
14
|
+
y: number;
|
|
15
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//#region src/composables/radial.ts
|
|
2
|
+
function e(e, t, n) {
|
|
3
|
+
let r = e / t * 2 * Math.PI - Math.PI / 2;
|
|
4
|
+
return {
|
|
5
|
+
x: Math.round(Math.cos(r) * n * 100) / 100,
|
|
6
|
+
y: Math.round(Math.sin(r) * n * 100) / 100
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
function t(e, t, n, r = 24) {
|
|
10
|
+
if (!n || Math.hypot(e, t) < r) return null;
|
|
11
|
+
let i = (Math.atan2(t, e) + Math.PI / 2 + 2 * Math.PI) % (2 * Math.PI);
|
|
12
|
+
return Math.round(i / (2 * Math.PI) * n) % n;
|
|
13
|
+
}
|
|
14
|
+
function n(e, t, n, r, i, a = 8) {
|
|
15
|
+
let o = n + a;
|
|
16
|
+
return {
|
|
17
|
+
x: Math.min(Math.max(e, o), Math.max(o, r - o)),
|
|
18
|
+
y: Math.min(Math.max(t, o), Math.max(o, i - o))
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
export { n as keepInside, e as polar, t as sectorAt };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** is this key just a modifier being held? */
|
|
2
|
+
export declare const isModifierKey: (e: Pick<KeyboardEvent, "key">) => boolean;
|
|
3
|
+
/**
|
|
4
|
+
* The combo a key event stands for, e.g. `Ctrl+Shift+K`, modifiers in a fixed order. Letters and
|
|
5
|
+
* digits come from the physical key (`code`), so Shift+1 is `Shift+1`, not `Shift+!`.
|
|
6
|
+
* Returns `null` while only modifiers are down.
|
|
7
|
+
*/
|
|
8
|
+
export declare function shortcutFromEvent(e: Pick<KeyboardEvent, "key" | "code" | "ctrlKey" | "altKey" | "shiftKey" | "metaKey">): string | null;
|
|
9
|
+
/** does `e` press exactly the combo `combo`? */
|
|
10
|
+
export declare const matchShortcut: (combo: string, e: KeyboardEvent) => boolean;
|
|
11
|
+
/** the parts of a combo, for display: `"Ctrl+K"` → `["Ctrl", "K"]` (a literal "+" key survives) */
|
|
12
|
+
export declare const splitShortcut: (combo: string) => string[];
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
//#region src/composables/shortcut.ts
|
|
2
|
+
var e = [
|
|
3
|
+
"Ctrl",
|
|
4
|
+
"Alt",
|
|
5
|
+
"Shift",
|
|
6
|
+
"Meta"
|
|
7
|
+
], t = {
|
|
8
|
+
" ": "Space",
|
|
9
|
+
ArrowUp: "↑",
|
|
10
|
+
ArrowDown: "↓",
|
|
11
|
+
ArrowLeft: "←",
|
|
12
|
+
ArrowRight: "→",
|
|
13
|
+
Escape: "Esc",
|
|
14
|
+
Delete: "Del"
|
|
15
|
+
}, n = (e) => [
|
|
16
|
+
"Control",
|
|
17
|
+
"Alt",
|
|
18
|
+
"Shift",
|
|
19
|
+
"Meta",
|
|
20
|
+
"AltGraph",
|
|
21
|
+
"OS"
|
|
22
|
+
].includes(e.key);
|
|
23
|
+
function r(r) {
|
|
24
|
+
if (n(r)) return null;
|
|
25
|
+
let i = /^(?:Key|Digit)(.)$/.exec(r.code), a = i ? i[1] : t[r.key] ?? (r.key.length === 1 ? r.key.toUpperCase() : r.key), o = [
|
|
26
|
+
r.ctrlKey && "Ctrl",
|
|
27
|
+
r.altKey && "Alt",
|
|
28
|
+
r.shiftKey && "Shift",
|
|
29
|
+
r.metaKey && "Meta"
|
|
30
|
+
];
|
|
31
|
+
return [...e.filter((e, t) => o[t]), a].join("+");
|
|
32
|
+
}
|
|
33
|
+
var i = (e, t) => r(t) === e, a = (e) => e.endsWith("++") ? [...e.slice(0, -2).split("+").filter(Boolean), "+"] : e.split("+");
|
|
34
|
+
//#endregion
|
|
35
|
+
export { n as isModifierKey, i as matchShortcut, r as shortcutFromEvent, a as splitShortcut };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
/** `arr` with the item at `from` moved to `to` (a copy). */
|
|
3
|
+
export declare function moveItem<T>(arr: readonly T[], from: number, to: number): T[];
|
|
4
|
+
/** Index of the rect whose centre is closest to the point; works for lists and grids alike. */
|
|
5
|
+
export declare function nearestIndex(rects: readonly DOMRect[], x: number, y: number): number;
|
|
6
|
+
/**
|
|
7
|
+
* Pointer-drag reorder over the children of `root` that match `selector`. Bind `grab` /
|
|
8
|
+
* `track` / `drop` / `cancel` to the drag handle's pointer events and set `touch-action: none`
|
|
9
|
+
* on it; `onMove(from, to)` fires once, on release.
|
|
10
|
+
*/
|
|
11
|
+
export declare function useSortable(root: Ref<HTMLElement | null | undefined>, onMove: (from: number, to: number) => void, selector?: string): {
|
|
12
|
+
drag: Ref<number | null, number | null>;
|
|
13
|
+
over: Ref<number | null, number | null>;
|
|
14
|
+
grab(i: number, e: PointerEvent): void;
|
|
15
|
+
track(e: PointerEvent): void;
|
|
16
|
+
drop(): void;
|
|
17
|
+
cancel: () => null;
|
|
18
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ref as e } from "vue";
|
|
2
|
+
//#region src/composables/useSortable.ts
|
|
3
|
+
function t(e, t, n) {
|
|
4
|
+
let r = e.slice();
|
|
5
|
+
return r.splice(n, 0, ...r.splice(t, 1)), r;
|
|
6
|
+
}
|
|
7
|
+
function n(e, t, n) {
|
|
8
|
+
let r = 0, i = Infinity;
|
|
9
|
+
return e.forEach((e, a) => {
|
|
10
|
+
let o = (e.left + e.width / 2 - t) ** 2 + (e.top + e.height / 2 - n) ** 2;
|
|
11
|
+
o < i && (i = o, r = a);
|
|
12
|
+
}), r;
|
|
13
|
+
}
|
|
14
|
+
function r(t, r, i = "[data-sortable-item]") {
|
|
15
|
+
let a = e(null), o = e(null), s = () => a.value = o.value = null;
|
|
16
|
+
return {
|
|
17
|
+
drag: a,
|
|
18
|
+
over: o,
|
|
19
|
+
grab(e, t) {
|
|
20
|
+
t.button || (t.currentTarget.setPointerCapture?.(t.pointerId), a.value = o.value = e);
|
|
21
|
+
},
|
|
22
|
+
track(e) {
|
|
23
|
+
if (a.value == null) return;
|
|
24
|
+
let r = t.value?.querySelectorAll(i) ?? [];
|
|
25
|
+
o.value = n(Array.from(r, (e) => e.getBoundingClientRect()), e.clientX, e.clientY);
|
|
26
|
+
},
|
|
27
|
+
drop() {
|
|
28
|
+
a.value != null && o.value != null && o.value !== a.value && r(a.value, o.value), s();
|
|
29
|
+
},
|
|
30
|
+
cancel: s
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
//#endregion
|
|
34
|
+
export { t as moveItem, n as nearestIndex, r as useSortable };
|
package/dist/index.d.ts
CHANGED
|
@@ -130,6 +130,43 @@ export { default as BlessSpeedDial } from './components/BlessSpeedDial.vue';
|
|
|
130
130
|
export type { BlessSpeedDialAction } from './components/BlessSpeedDial.vue';
|
|
131
131
|
export { default as BlessVirtualScroller } from './components/BlessVirtualScroller.vue';
|
|
132
132
|
export { default as BlessOrderList } from './components/BlessOrderList.vue';
|
|
133
|
+
export { default as BlessCountUp } from './components/BlessCountUp.vue';
|
|
134
|
+
export { default as BlessTimer } from './components/BlessTimer.vue';
|
|
135
|
+
export type { BlessTimerPhase } from './components/BlessTimer.vue';
|
|
136
|
+
export { default as BlessGauge } from './components/BlessGauge.vue';
|
|
137
|
+
export type { BlessGaugeZone } from './components/BlessGauge.vue';
|
|
138
|
+
export { default as BlessGantt } from './components/BlessGantt.vue';
|
|
139
|
+
export type { BlessGanttTask } from './components/BlessGantt.vue';
|
|
140
|
+
export { default as BlessShortcutRecorder } from './components/BlessShortcutRecorder.vue';
|
|
141
|
+
export { shortcutFromEvent, matchShortcut, splitShortcut, isModifierKey, } from './composables/shortcut';
|
|
142
|
+
export { default as BlessDiff } from './components/BlessDiff.vue';
|
|
143
|
+
export { diffLines } from './composables/diffLines';
|
|
144
|
+
export type { DiffRow } from './composables/diffLines';
|
|
145
|
+
export { default as BlessCodeBlock } from './components/BlessCodeBlock.vue';
|
|
146
|
+
export type { BlessCodeFile } from './components/BlessCodeBlock.vue';
|
|
147
|
+
export { default as BlessMarquee } from './components/BlessMarquee.vue';
|
|
148
|
+
export { default as BlessMasonry } from './components/BlessMasonry.vue';
|
|
149
|
+
export { default as BlessSplitView } from './components/BlessSplitView.vue';
|
|
150
|
+
export { default as BlessRadialMenu } from './components/BlessRadialMenu.vue';
|
|
151
|
+
export { polar, sectorAt, keepInside } from './composables/radial';
|
|
152
|
+
export type { BlessRadialItem } from './components/BlessRadialMenu.vue';
|
|
153
|
+
export { default as BlessLoupe } from './components/BlessLoupe.vue';
|
|
154
|
+
export { default as BlessSliderCaptcha } from './components/BlessSliderCaptcha.vue';
|
|
155
|
+
export { default as BlessSwipeDeck } from './components/BlessSwipeDeck.vue';
|
|
156
|
+
export type { BlessSwipeDecision } from './components/BlessSwipeDeck.vue';
|
|
157
|
+
export { default as BlessHotspots } from './components/BlessHotspots.vue';
|
|
158
|
+
export type { BlessHotspot } from './components/BlessHotspots.vue';
|
|
159
|
+
export { default as BlessCropper } from './components/BlessCropper.vue';
|
|
160
|
+
export type { BlessCropRect } from './components/BlessCropper.vue';
|
|
161
|
+
export { initialBox, moveBox, resizeBox, scaleBox } from './composables/cropBox';
|
|
162
|
+
export type { CropBox } from './composables/cropBox';
|
|
163
|
+
export { default as BlessKanban } from './components/BlessKanban.vue';
|
|
164
|
+
export type { BlessKanbanColumn } from './components/BlessKanban.vue';
|
|
165
|
+
export { default as BlessMention } from './components/BlessMention.vue';
|
|
166
|
+
export type { BlessMentionOption } from './components/BlessMention.vue';
|
|
167
|
+
export { default as BlessHeatmapCalendar } from './components/BlessHeatmapCalendar.vue';
|
|
168
|
+
export { default as BlessSortable } from './components/BlessSortable.vue';
|
|
169
|
+
export { useSortable, moveItem, nearestIndex } from './composables/useSortable';
|
|
133
170
|
export { default as BlessPickList } from './components/BlessPickList.vue';
|
|
134
171
|
export { default as BlessMockup } from './components/BlessMockup.vue';
|
|
135
172
|
export { default as BlessTour } from './components/BlessTour.vue';
|
package/dist/index.js
CHANGED
|
@@ -107,56 +107,81 @@ import ot from "./components/BlessBottomTabs.js";
|
|
|
107
107
|
import st from "./components/BlessSpeedDial.js";
|
|
108
108
|
import ct from "./components/BlessVirtualScroller.js";
|
|
109
109
|
import lt from "./components/BlessOrderList.js";
|
|
110
|
-
import ut from "./components/
|
|
111
|
-
import dt from "./components/
|
|
112
|
-
import ft from "./components/
|
|
113
|
-
import pt from "./components/
|
|
114
|
-
import mt from "./
|
|
115
|
-
import
|
|
116
|
-
import
|
|
117
|
-
import
|
|
118
|
-
import
|
|
119
|
-
import
|
|
120
|
-
import
|
|
121
|
-
import
|
|
122
|
-
import
|
|
123
|
-
import
|
|
124
|
-
import
|
|
125
|
-
import
|
|
126
|
-
import
|
|
127
|
-
import
|
|
128
|
-
import
|
|
129
|
-
import
|
|
130
|
-
import
|
|
131
|
-
import
|
|
132
|
-
import
|
|
133
|
-
import
|
|
134
|
-
import
|
|
135
|
-
import
|
|
136
|
-
import
|
|
137
|
-
import
|
|
138
|
-
import
|
|
139
|
-
import
|
|
140
|
-
import
|
|
141
|
-
import
|
|
142
|
-
import
|
|
143
|
-
import
|
|
144
|
-
import
|
|
145
|
-
import
|
|
146
|
-
import
|
|
147
|
-
import
|
|
148
|
-
import
|
|
149
|
-
import
|
|
150
|
-
import
|
|
151
|
-
import
|
|
152
|
-
import
|
|
153
|
-
import
|
|
154
|
-
import
|
|
155
|
-
import
|
|
156
|
-
import
|
|
157
|
-
import
|
|
158
|
-
import
|
|
159
|
-
import
|
|
160
|
-
import
|
|
161
|
-
import
|
|
162
|
-
|
|
110
|
+
import ut from "./components/BlessCountUp.js";
|
|
111
|
+
import dt from "./components/BlessTimer.js";
|
|
112
|
+
import ft from "./components/BlessGauge.js";
|
|
113
|
+
import pt from "./components/BlessGantt.js";
|
|
114
|
+
import { isModifierKey as mt, matchShortcut as ht, shortcutFromEvent as gt, splitShortcut as _t } from "./composables/shortcut.js";
|
|
115
|
+
import vt from "./components/BlessShortcutRecorder.js";
|
|
116
|
+
import { diffLines as yt } from "./composables/diffLines.js";
|
|
117
|
+
import bt from "./components/BlessDiff.js";
|
|
118
|
+
import xt from "./components/BlessCodeBlock.js";
|
|
119
|
+
import St from "./components/BlessMarquee.js";
|
|
120
|
+
import Ct from "./components/BlessMasonry.js";
|
|
121
|
+
import wt from "./components/BlessSplitView.js";
|
|
122
|
+
import { keepInside as Tt, polar as Et, sectorAt as Dt } from "./composables/radial.js";
|
|
123
|
+
import Ot from "./components/BlessRadialMenu.js";
|
|
124
|
+
import kt from "./components/BlessLoupe.js";
|
|
125
|
+
import At from "./components/BlessSliderCaptcha.js";
|
|
126
|
+
import jt from "./components/BlessSwipeDeck.js";
|
|
127
|
+
import Mt from "./components/BlessHotspots.js";
|
|
128
|
+
import { initialBox as Nt, moveBox as Pt, resizeBox as Ft, scaleBox as It } from "./composables/cropBox.js";
|
|
129
|
+
import Lt from "./components/BlessCropper.js";
|
|
130
|
+
import Rt from "./components/BlessKanban.js";
|
|
131
|
+
import zt from "./components/BlessMention.js";
|
|
132
|
+
import Bt from "./components/BlessHeatmapCalendar.js";
|
|
133
|
+
import { moveItem as Vt, nearestIndex as Ht, useSortable as Ut } from "./composables/useSortable.js";
|
|
134
|
+
import Wt from "./components/BlessSortable.js";
|
|
135
|
+
import Gt from "./components/BlessPickList.js";
|
|
136
|
+
import Kt from "./components/BlessMockup.js";
|
|
137
|
+
import qt from "./components/BlessTour.js";
|
|
138
|
+
import Jt from "./components/BlessKnob.js";
|
|
139
|
+
import Yt from "./components/BlessWatermarkOverlay.js";
|
|
140
|
+
import Xt from "./components/BlessSignaturePad.js";
|
|
141
|
+
import Zt from "./components/BlessQrCode.js";
|
|
142
|
+
import Qt from "./components/BlessEditor.js";
|
|
143
|
+
import $t from "./components/BlessChip.js";
|
|
144
|
+
import en from "./components/BlessInputNumber.js";
|
|
145
|
+
import tn from "./components/BlessPasswordInput.js";
|
|
146
|
+
import nn from "./components/BlessStepper.js";
|
|
147
|
+
import rn from "./components/BlessInputTags.js";
|
|
148
|
+
import an from "./components/BlessToolbar.js";
|
|
149
|
+
import on from "./components/BlessFloatLabel.js";
|
|
150
|
+
import sn from "./components/BlessFieldset.js";
|
|
151
|
+
import cn from "./components/BlessPanel.js";
|
|
152
|
+
import ln from "./components/BlessMeterGroup.js";
|
|
153
|
+
import un from "./components/BlessSplitButton.js";
|
|
154
|
+
import dn from "./components/BlessBlockUI.js";
|
|
155
|
+
import fn from "./components/BlessInplace.js";
|
|
156
|
+
import pn from "./components/BlessDeferredContent.js";
|
|
157
|
+
import mn from "./components/BlessConfirmPopup.js";
|
|
158
|
+
import hn from "./components/BlessCompare.js";
|
|
159
|
+
import gn from "./components/BlessDataView.js";
|
|
160
|
+
import { useAnimateOnScroll as _n } from "./composables/useAnimateOnScroll.js";
|
|
161
|
+
import vn from "./components/BlessPaletteToggle.js";
|
|
162
|
+
import yn from "./components/BlessCascadeSelect.js";
|
|
163
|
+
import bn from "./components/BlessTreeSelect.js";
|
|
164
|
+
import xn from "./components/BlessTreeTable.js";
|
|
165
|
+
import Sn from "./components/BlessOrgChart.js";
|
|
166
|
+
import { useDialog as Cn } from "./composables/useDialog.js";
|
|
167
|
+
import wn from "./components/BlessDialogHost.js";
|
|
168
|
+
import { useLongPress as Tn, usePan as En, useSwipe as Dn, useTouchRepeat as On } from "./composables/useGesture.js";
|
|
169
|
+
import kn from "./components/BlessPullToRefresh.js";
|
|
170
|
+
import An from "./components/BlessSlideItem.js";
|
|
171
|
+
import jn from "./components/BlessActionSheet.js";
|
|
172
|
+
import Mn from "./components/BlessTabPanels.js";
|
|
173
|
+
import Nn from "./components/BlessInfiniteScroll.js";
|
|
174
|
+
import Pn from "./components/BlessLayout.js";
|
|
175
|
+
import Fn from "./components/BlessCircularProgress.js";
|
|
176
|
+
import In from "./components/BlessRange.js";
|
|
177
|
+
import Ln from "./components/BlessTimePicker.js";
|
|
178
|
+
import Rn from "./components/BlessImg.js";
|
|
179
|
+
import zn from "./components/BlessVideo.js";
|
|
180
|
+
import { useLoadingBar as Bn } from "./composables/useLoadingBar.js";
|
|
181
|
+
import Vn from "./components/BlessLoadingBar.js";
|
|
182
|
+
import Hn from "./components/BlessUploader.js";
|
|
183
|
+
import Un from "./components/BlessParallax.js";
|
|
184
|
+
import Wn from "./components/BlessSlideTransition.js";
|
|
185
|
+
import Gn from "./components/BlessClientOnly.js";
|
|
186
|
+
import { useFullscreen as Kn, useResizeObserver as qn, useScroll as Jn, useVisibility as Yn } from "./composables/useBrowser.js";
|
|
187
|
+
export { Y as BlessAccordion, X as BlessAccordionItem, jn as BlessActionSheet, H as BlessAlert, me as BlessAlertDialog, V as BlessAspectRatio, Re as BlessAttachment, E as BlessAudioPlayer, B as BlessAvatar, _ as BlessBackground, o as BlessBadge, dn as BlessBlockUI, ot as BlessBottomTabs, $ as BlessBreadcrumb, Ie as BlessBubble, a as BlessButton, G as BlessButtonGroup, we as BlessCalendar, v as BlessCard, ke as BlessCarousel, yn as BlessCascadeSelect, Ve as BlessChart, M as BlessCheckbox, $t as BlessChip, Fn as BlessCircularProgress, Gn as BlessClientOnly, xt as BlessCodeBlock, J as BlessCollapsible, We as BlessColorPicker, ve as BlessCombobox, _e as BlessCommand, hn as BlessCompare, mn as BlessConfirmPopup, Ye as BlessContainer, ue as BlessContextMenu, ut as BlessCountUp, Lt as BlessCropper, s as BlessDash, Oe as BlessDataTable, gn as BlessDataView, Te as BlessDatePicker, pn as BlessDeferredContent, wn as BlessDialogHost, bt as BlessDiff, pe as BlessDrawer, le as BlessDropdownMenu, Qt as BlessEditor, W as BlessEmpty, re as BlessField, sn as BlessFieldset, Ue as BlessFileInput, on as BlessFloatLabel, ne as BlessForm, w as BlessGallery, pt as BlessGantt, ft as BlessGauge, Bt as BlessHeatmapCalendar, Mt as BlessHotspots, se as BlessHoverCard, c as BlessIcon, Rn as BlessImg, Je as BlessIndicator, Nn as BlessInfiniteScroll, fn as BlessInplace, A as BlessInput, K as BlessInputGroup, rt as BlessInputMask, en as BlessInputNumber, Ee as BlessInputOTP, rn as BlessInputTags, q as BlessItem, Rt as BlessKanban, U as BlessKbd, Jt as BlessKnob, k as BlessLabel, Pn as BlessLayout, y as BlessList, b as BlessListItem, Qe as BlessListbox, Vn as BlessLoadingBar, kt as BlessLoupe, Le as BlessMarker, St as BlessMarquee, Ct as BlessMasonry, zt as BlessMention, ce as BlessMenuList, de as BlessMenubar, Fe as BlessMessage, ze as BlessMessageScroller, ln as BlessMeterGroup, Kt as BlessMockup, C as BlessModal, je as BlessNavigationMenu, lt as BlessOrderList, Sn as BlessOrgChart, ee as BlessPagination, vn as BlessPaletteToggle, cn as BlessPanel, Un as BlessParallax, tn as BlessPasswordInput, Ge as BlessPasswordMeter, Gt as BlessPickList, ae as BlessPopover, R as BlessProgress, kn as BlessPullToRefresh, Zt as BlessQrCode, Be as BlessQuestionnaire, Ot as BlessRadialMenu, P as BlessRadio, N as BlessRadioGroup, In as BlessRange, He as BlessRating, Ae as BlessResizable, te as BlessScrollArea, Ze as BlessScrollTop, d as BlessSection, I as BlessSelect, O as BlessSeparator, fe as BlessSheet, vt as BlessShortcutRecorder, g as BlessSidebarNav, Xt as BlessSignaturePad, z as BlessSkeleton, e as BlessSkew, An as BlessSlideItem, Wn as BlessSlideTransition, L as BlessSlider, At as BlessSliderCaptcha, Wt as BlessSortable, st as BlessSpeedDial, i as BlessSpinner, D as BlessSplash, un as BlessSplitButton, wt as BlessSplitView, Xe as BlessStack, h as BlessStage, nn as BlessStepper, Ke as BlessSteps, et as BlessSwap, jt as BlessSwipeDeck, F as BlessSwitch, Mn as BlessTabPanels, T as BlessTable, x as BlessTabs, l as BlessText, j as BlessTextarea, Pe as BlessThemeToggle, Ln as BlessTimePicker, qe as BlessTimeline, dt as BlessTimer, ge as BlessToaster, Z as BlessToggle, Q as BlessToggleGroup, an as BlessToolbar, oe as BlessTooltip, qt as BlessTour, $e as BlessTree, bn as BlessTreeSelect, xn as BlessTreeTable, Hn as BlessUploader, zn as BlessVideo, ct as BlessVirtualScroller, u as BlessWatermark, Yt as BlessWatermarkOverlay, ye as addDays, be as addMonths, tt as applyMask, t as blessLinkKey, Me as blessPalettes, yt as diffLines, xe as fromISO, Nt as initialBox, mt as isModifierKey, n as isRouterHref, Se as isoToday, Tt as keepInside, ht as matchShortcut, Pt as moveBox, Vt as moveItem, Ht as nearestIndex, Et as polar, f as reducedMotion, Ft as resizeBox, It as scaleBox, p as scrollBehavior, Dt as sectorAt, gt as shortcutFromEvent, _t as splitShortcut, Ce as toISO, nt as unmask, _n as useAnimateOnScroll, De as useDataTable, Cn as useDialog, ie as useFloating, Kn as useFullscreen, S as useHash, r as useLink, Bn as useLoadingBar, Tn as useLongPress, m as useMedia, En as usePan, qn as useResizeObserver, at as useRovingFocus, Jn as useScroll, it as useScrollSpy, Ut as useSortable, Dn as useSwipe, Ne as useTheme, he as useToast, On as useTouchRepeat, Yn as useVisibility };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "blessing-ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Blessing UI — Themed Flat Interface. Flat by design, raised with Vue, blessed for everyone.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"components",
|
|
@@ -43,6 +43,23 @@
|
|
|
43
43
|
"import": "./dist/components/*.js"
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
|
+
"scripts": {
|
|
47
|
+
"dev": "vitepress dev docs",
|
|
48
|
+
"build": "vue-tsc --noEmit && vite build && node scripts/postbuild.mjs",
|
|
49
|
+
"test": "vitest run",
|
|
50
|
+
"prepublishOnly": "pnpm test && pnpm build",
|
|
51
|
+
"typecheck": "vue-tsc --noEmit",
|
|
52
|
+
"format": "oxfmt .",
|
|
53
|
+
"docs:dev": "vitepress dev docs",
|
|
54
|
+
"docs:build": "pnpm docs:meta && pnpm docs:blocks && vitepress build docs",
|
|
55
|
+
"docs:preview": "vitepress preview docs",
|
|
56
|
+
"docs:meta": "node docs/scripts/meta.ts",
|
|
57
|
+
"docs:pages": "node docs/scripts/pages.ts",
|
|
58
|
+
"e2e": "node e2e/sweep.mjs chromium,firefox && node e2e/axe.mjs && node e2e/interact.mjs chromium && node e2e/interact.mjs firefox",
|
|
59
|
+
"e2e:consumer": "pnpm build && node e2e/consumer/check.mjs",
|
|
60
|
+
"docs:blocks": "node docs/scripts/blocks.ts",
|
|
61
|
+
"docs:shots": "node docs/scripts/shots.mjs"
|
|
62
|
+
},
|
|
46
63
|
"devDependencies": {
|
|
47
64
|
"@tiptap/pm": "^3.31.3",
|
|
48
65
|
"@tiptap/starter-kit": "^3.31.3",
|
|
@@ -78,20 +95,5 @@
|
|
|
78
95
|
"engines": {
|
|
79
96
|
"node": ">=24"
|
|
80
97
|
},
|
|
81
|
-
"
|
|
82
|
-
|
|
83
|
-
"build": "vue-tsc --noEmit && vite build && node scripts/postbuild.mjs",
|
|
84
|
-
"test": "vitest run",
|
|
85
|
-
"typecheck": "vue-tsc --noEmit",
|
|
86
|
-
"format": "oxfmt .",
|
|
87
|
-
"docs:dev": "vitepress dev docs",
|
|
88
|
-
"docs:build": "pnpm docs:meta && pnpm docs:blocks && vitepress build docs",
|
|
89
|
-
"docs:preview": "vitepress preview docs",
|
|
90
|
-
"docs:meta": "node docs/scripts/meta.ts",
|
|
91
|
-
"docs:pages": "node docs/scripts/pages.ts",
|
|
92
|
-
"e2e": "node e2e/sweep.mjs chromium,firefox && node e2e/axe.mjs && node e2e/interact.mjs chromium && node e2e/interact.mjs firefox",
|
|
93
|
-
"e2e:consumer": "pnpm build && node e2e/consumer/check.mjs",
|
|
94
|
-
"docs:blocks": "node docs/scripts/blocks.ts",
|
|
95
|
-
"docs:shots": "node docs/scripts/shots.mjs"
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
+
"packageManager": "pnpm@12.4.2"
|
|
99
|
+
}
|