Skip to content

Commit

Permalink
feat: various ID generation utilities
Browse files Browse the repository at this point in the history
  • Loading branch information
Simon Milfred committed Feb 5, 2024
1 parent 6eb0a0c commit dd233b6
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 0 deletions.
4 changes: 4 additions & 0 deletions composables/useComponentKey.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/* Return a GUID that is unique to the component file */
export default () => {
return useGUID(getCurrentInstance()?.vnode?.type?.__file);
};
14 changes: 14 additions & 0 deletions composables/useGUID.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/* Create a GUID */
function useGUID(key = useId()) {
return useState('_guid-' + key, () => {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(
/[xy]/g,
function (c) {
const r = (Math.random() * 16) | 0,
v = c == 'x' ? r : (r & 0x3) | 0x8;
return v.toString(16);
}
);
});
}
export default useGUID;
6 changes: 6 additions & 0 deletions composables/useNumberId.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/* Create a number ID (unlike useId() which generates an id usable by the DOM) */
function useNumberId(key = useId()) {
const counter = useState(() => 0);
return useState('_num-id-' + key, () => counter.value++);
}
export default useNumberId;

0 comments on commit dd233b6

Please sign in to comment.