* Runtime helper for SFC's CSS variable injection feature.
* @private
*/
- export function useCssVars(getter: (ctx: any) => Record<string, string>): void {
+ export function useCssVars(
+ getter: (ctx: any) => Record<string, unknown>,
+ ): void {
if (!__BROWSER__ && !__TEST__) return
- const instance = getCurrentInstance()
- /* v8 ignore start */
- if (!instance) {
- __DEV__ &&
- warn(`useCssVars is called without current active component instance.`)
- return
- }
- /* v8 ignore stop */
-
- const updateTeleports = (instance.ut = (vars = getter(instance.proxy)) => {
- Array.from(
- document.querySelectorAll(`[data-v-owner="${instance.uid}"]`),
- ).forEach(node => setVarsOnNode(node, vars))
- })
-
- if (__DEV__) {
- instance.getCssVars = () => getter(instance.proxy)
- }
-
- const setVars = () => {
- const vars = getter(instance.proxy)
+ const instance = getCurrentInstance()! // to be check in baseUseCssVars
+ const getVars = () => getter(instance.proxy)
+ const setVars = (vars: Record<string, any>) => {
if (instance.ce) {
setVarsOnNode(instance.ce as any, vars)
} else {
setVarsOnVNode(instance.subTree, vars)
}
- updateTeleports(vars)
}
- // handle cases where child component root is affected
- // and triggers reflow in onMounted
- onBeforeUpdate(() => {
- queuePostFlushCb(setVars)
- })
-
- onMounted(() => {
- // run setVars synchronously here, but run as post-effect on changes
- watch(setVars, NOOP, { flush: 'post' })
- const ob = new MutationObserver(setVars)
- ob.observe(instance.subTree.el!.parentNode, { childList: true })
- onUnmounted(() => ob.disconnect())
- })
+ baseUseCssVars(
- instance,
++ instance as GenericComponentInstance,
+ () => instance.subTree.el!.parentNode!,
+ getVars,
+ setVars,
+ )
}
-function setVarsOnVNode(vnode: VNode, vars: Record<string, unknown>) {
+function setVarsOnVNode(vnode: VNode, vars: Record<string, string>) {
if (__FEATURE_SUSPENSE__ && vnode.shapeFlag & ShapeFlags.SUSPENSE) {
const suspense = vnode.suspense!
vnode = suspense.activeBranch!
* @internal
*/
export { shouldSetAsProp } from './patchProp'
+/**
+ * @internal
+ */
+export { baseUseCssVars, setVarsOnNode } from './helpers/useCssVars'
+ /**
+ * @internal
+ */
+ export {
+ vShowOriginalDisplay,
+ vShowHidden,
+ type VShowElement,
+ } from './directives/vShow'
+ /**
+ * @internal
+ */
+ export {
+ vModelTextInit,
+ vModelTextUpdate,
+ vModelCheckboxInit,
+ vModelCheckboxUpdate,
+ getValue as vModelGetValue,
+ vModelSelectInit,
+ vModelSetSelected,
+ } from './directives/vModel'
+ /**
+ * @internal
+ */
+ export { svgNS } from './nodeOps'
+ /**
+ * @internal
+ */
+ export { xlinkNS } from './modules/attrs'
+ /**
+ * @internal
+ */
+ export {
+ resolveTransitionProps,
+ TransitionPropsValidators,
+ forceReflow,
+ type ElementWithTransition,
+ } from './components/Transition'
+ /**
+ * @internal
+ */
+ export {
+ hasCSSTransform,
+ callPendingCbs,
+ handleMovedChildren,
+ baseApplyTranslation,
+ } from './components/TransitionGroup'
+ /**
+ * @internal
+ */
+ export { unsafeToTrustedHTML } from './nodeOps'
setProp,
setDOMProp,
setDynamicProps,
+ setElementText,
} from './dom/prop'
- export { on, delegate, delegateEvents, setDynamicEvents } from './dom/event'
+ export {
+ on,
+ delegate,
+ delegateEvents,
+ setDynamicEvents,
+ createInvoker,
+ } from './dom/event'
export { createIf } from './apiCreateIf'
- export { createFor } from './apiCreateFor'
+ export { createKeyedFragment } from './apiCreateFragment'
+ export {
+ createFor,
+ createForSlots,
+ getRestElement,
+ getDefaultValue,
+ } from './apiCreateFor'
export { createTemplateRefSetter } from './apiTemplateRef'
+export { vaporUseCssVars } from './helpers/useCssVars'
+ export { createDynamicComponent } from './apiCreateDynamicComponent'
+ export { applyVShow } from './directives/vShow'
+ export {
+ applyTextModel,
+ applyRadioModel,
+ applyCheckboxModel,
+ applySelectModel,
+ applyDynamicModel,
+ } from './directives/vModel'
+ export { withVaporDirectives } from './directives/custom'
+ export { isFragment, VaporFragment } from './fragment'
+ export { VaporTransition } from './components/Transition'
+ export { VaporTransitionGroup } from './components/TransitionGroup'