diff --git a/src/_utils/composition/index.js b/src/_utils/composition/index.js
index 51d5b5cb9..8337c1cf0 100644
--- a/src/_utils/composition/index.js
+++ b/src/_utils/composition/index.js
@@ -2,7 +2,11 @@ import {
ref,
computed,
watch,
- onMounted, inject, toRef
+ onMounted,
+ inject,
+ toRef,
+ getCurrentInstance,
+ onBeforeUnmount
} from 'vue'
export function useFalseUntilTruthy (valueRef) {
@@ -62,4 +66,59 @@ export function useInjectionRef (injectionName, key, fallback) {
return toRef(injection, key)
}
+export function onFontReady (callback) {
+ onMounted(() => {
+ const fontsReady = document.fonts.ready
+ const currentInstance = getCurrentInstance().proxy
+ fontsReady.then(() => {
+ callback(currentInstance)
+ })
+ })
+}
+
+export function useInjectionCollection (injectionName, collectionKey, valueRef) {
+ const injection = inject(injectionName)
+ if (!(collectionKey in injection)) {
+ injection[collectionKey] = []
+ }
+ injection[collectionKey].push(valueRef.value)
+ watch(valueRef, (value, prevValue) => {
+ const collectionArray = injection[collectionKey]
+ const index = collectionArray.findIndex(
+ collectionValue => collectionValue === prevValue
+ )
+ if (~index) collectionArray.splice(index, 1)
+ collectionArray.push(value)
+ })
+ onBeforeUnmount(() => {
+ const collectionArray = injection[collectionKey]
+ const index = collectionArray.findIndex(
+ collectionValue => collectionValue === valueRef.value
+ )
+ if (~index) collectionArray.splice(index, 1)
+ })
+}
+
+export function useInjectionElementCollection (injectionName, collectionKey, getElement) {
+ const injection = inject(injectionName)
+ if (!(collectionKey in injection)) {
+ injection[collectionKey] = []
+ }
+ onMounted(() => {
+ const currentInstance = getCurrentInstance().proxy
+ injection[collectionKey].push(
+ getElement(currentInstance)
+ )
+ })
+ onBeforeUnmount(() => {
+ const collectionArray = injection[collectionKey]
+ const currentInstance = getCurrentInstance().proxy
+ const element = getElement(currentInstance)
+ const index = collectionArray.findIndex(
+ collectionElement => collectionElement === element
+ )
+ if (~index) collectionArray.splice(index, 1)
+ })
+}
+
export { default as useLastClickPosition } from './use-last-click-position'
diff --git a/src/anchor/src/AnchorAdapter.vue b/src/anchor/src/AnchorAdapter.vue
index 48d65b69f..406bf7fdc 100644
--- a/src/anchor/src/AnchorAdapter.vue
+++ b/src/anchor/src/AnchorAdapter.vue
@@ -1,6 +1,5 @@
-
-
+