提交 021d9567 编写于 作者: fxy060608's avatar fxy060608

chore: merge

......@@ -18217,10 +18217,14 @@
updatesScroller();
};
{
var isMounted = false;
useRebuild(() => {
state.length = contentRef.value.children.length;
initIndicatorHeight();
initScroller();
if (!isMounted) {
isMounted = true;
initIndicatorHeight();
initScroller();
}
});
}
return () => {
......@@ -21161,6 +21165,10 @@
queuePostActionJob(this.getRebuildFn(), JOB_PRIORITY_REBUILD);
return super.insertBefore(newChild, refChild);
}
removeUniChild(node) {
queuePostActionJob(this.getRebuildFn(), JOB_PRIORITY_REBUILD);
return super.removeUniChild(node);
}
rebuild() {
var vm = this.$.__vueParentComponent;
if (vm.rebuild) {
......
......@@ -192,6 +192,10 @@ export class UniContainerComponent extends UniComponent {
queuePostActionJob(this.getRebuildFn(), JOB_PRIORITY_REBUILD)
return super.insertBefore(newChild, refChild)
}
removeUniChild(node: UniNode) {
queuePostActionJob(this.getRebuildFn(), JOB_PRIORITY_REBUILD)
return super.removeUniChild(node)
}
rebuild() {
// 刷新容器组件状态
if (__DEV__) {
......
......@@ -251,11 +251,15 @@ export default /*#__PURE__*/ defineBuiltInComponent({
}
if (__PLATFORM__ === 'app') {
let isMounted: boolean = false
useRebuild(() => {
state.length = (contentRef.value as HTMLElement).children.length
// 由于 App 端 onMounted 时机未插入真实位置,需重新执行
initIndicatorHeight()
initScroller()
if (!isMounted) {
isMounted = true
// 由于 App 端 onMounted 时机未插入真实位置,需重新执行
initIndicatorHeight()
initScroller()
}
})
}
......
......@@ -139,6 +139,13 @@ const options = {
filename: 'project.config.json',
config: ['project.qq.json', 'project.config.json'],
source,
normalize(projectJson) {
projectJson.qqappid = projectJson.appid;
projectJson.qqLibVersion = projectJson.libVersion;
delete projectJson.appid;
delete projectJson.libVersion;
return projectJson;
},
},
template: Object.assign(Object.assign({}, miniProgram), { filter: {
extname: '.qs',
......
......@@ -71,6 +71,13 @@ export const options: UniMiniProgramPluginOptions = {
filename: 'project.config.json',
config: ['project.qq.json', 'project.config.json'],
source,
normalize(projectJson) {
projectJson.qqappid = projectJson.appid
projectJson.qqLibVersion = projectJson.libVersion
delete projectJson.appid
delete projectJson.libVersion
return projectJson
},
},
template: {
/* eslint-disable no-restricted-syntax */
......
......@@ -63,6 +63,9 @@ export interface UniMiniProgramPluginOptions {
filename: string
config: string[]
source: Record<string, any>
normalize?: (
projectJson: Record<string, unknown>
) => Record<string, unknown>
}
template: {
extname: string
......
......@@ -86,10 +86,15 @@ export function uniManifestJsonPlugin(
},
generateBundle() {
if (projectJson && options.project) {
const { filename, normalize } = options.project
this.emitFile({
fileName: options.project.filename,
fileName: filename,
type: 'asset',
source: JSON.stringify(projectJson, null, 2),
source: JSON.stringify(
normalize ? normalize(projectJson) : projectJson,
null,
2
),
})
}
},
......
import { extend, isSymbol, isObject, toRawType, def, hasChanged, isArray, isString, isFunction, isPromise, remove, EMPTY_OBJ, toHandlerKey, hasOwn, camelize, hyphenate, isReservedProp, capitalize, normalizeClass, normalizeStyle, isOn, NOOP, toTypeString, isMap, isIntegerKey, isSet, isPlainObject, makeMap, invokeArrayFns, isBuiltInDirective, NO, toNumber, EMPTY_ARR, stringifyStyle as stringifyStyle$1, toDisplayString } from '@vue/shared';
import { extend, isSymbol, isObject, toRawType, def, hasChanged, isArray, isString, isFunction, isPromise, remove, EMPTY_OBJ, toHandlerKey, hasOwn, camelize, hyphenate, isReservedProp, capitalize, normalizeClass, normalizeStyle, isOn, NOOP, toTypeString, isMap, isIntegerKey, isSet, isPlainObject, makeMap, invokeArrayFns, isBuiltInDirective, NO, toNumber, EMPTY_ARR, isModelListener, stringifyStyle as stringifyStyle$1, toDisplayString } from '@vue/shared';
export { EMPTY_OBJ, camelize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';
import { isRootHook, getValueByDataPath, ON_ERROR, UniLifecycleHooks, dynamicSlotName } from '@dcloudio/uni-shared';
......@@ -4857,7 +4857,7 @@ const getFunctionalFallthrough = (attrs) => {
return res;
};
function renderComponentRoot(instance) {
const { type: Component, vnode, proxy, withProxy, props, slots, attrs, emit, render, renderCache, data, setupState, ctx, uid, appContext: { app: { config: { globalProperties: { pruneComponentPropsCache } } } } } = instance;
const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit, render, renderCache, data, setupState, ctx, uid, appContext: { app: { config: { globalProperties: { pruneComponentPropsCache } } } }, inheritAttrs } = instance;
instance.$templateRefs = [];
instance.$ei = 0;
// props
......@@ -4868,20 +4868,20 @@ function renderComponentRoot(instance) {
const prev = setCurrentRenderingInstance(instance);
try {
if (vnode.shapeFlag & 4 /* STATEFUL_COMPONENT */) {
fallthroughAttrs(inheritAttrs, props, propsOptions, attrs);
// withProxy is a proxy with a different `has` trap only for
// runtime-compiled render functions using `with` block.
const proxyToUse = withProxy || proxy;
result = render.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx);
}
else {
fallthroughAttrs(inheritAttrs, props, propsOptions, Component.props ? attrs : getFunctionalFallthrough(attrs));
// functional
const render = Component;
result =
render.length > 1
? render(props, { attrs, slots, emit })
: render(props, null /* we know it doesn't need it */)
? attrs
: getFunctionalFallthrough(attrs);
: render(props, null /* we know it doesn't need it */);
}
}
catch (err) {
......@@ -4892,6 +4892,24 @@ function renderComponentRoot(instance) {
setCurrentRenderingInstance(prev);
return result;
}
function fallthroughAttrs(inheritAttrs, props, propsOptions, fallthroughAttrs) {
if (props && fallthroughAttrs && inheritAttrs !== false) {
const keys = Object.keys(fallthroughAttrs).filter(key => key !== 'class' && key !== 'style');
if (!keys.length) {
return;
}
if (propsOptions && keys.some(isModelListener)) {
keys.forEach(key => {
if (!isModelListener(key) || !(key.slice(9) in propsOptions)) {
props[key] = fallthroughAttrs[key];
}
});
}
else {
keys.forEach(key => (props[key] = fallthroughAttrs[key]));
}
}
}
const updateComponentPreRender = (instance) => {
pauseTracking();
// props update may have triggered pre-flush watchers.
......
import { extend, isArray, isMap, isIntegerKey, isSymbol, hasOwn, isObject, hasChanged, makeMap, capitalize, toRawType, def, isFunction, NOOP, isString, isPromise, isOn, hyphenate, EMPTY_OBJ, toHandlerKey, toNumber, camelize, remove, isSet, isPlainObject, isReservedProp, EMPTY_ARR, isBuiltInDirective, NO, normalizeClass, normalizeStyle, toTypeString, invokeArrayFns } from '@vue/shared';
import { extend, isArray, isMap, isIntegerKey, isSymbol, hasOwn, isObject, hasChanged, makeMap, capitalize, toRawType, def, isFunction, NOOP, isString, isPromise, isOn, hyphenate, EMPTY_OBJ, toHandlerKey, toNumber, camelize, remove, isSet, isPlainObject, isReservedProp, EMPTY_ARR, isBuiltInDirective, NO, normalizeClass, normalizeStyle, toTypeString, invokeArrayFns, isModelListener } from '@vue/shared';
export { EMPTY_OBJ, camelize, normalizeClass, normalizeProps, normalizeStyle, toDisplayString, toHandlerKey } from '@vue/shared';
import { isRootHook, getValueByDataPath } from '@dcloudio/uni-shared';
......@@ -4857,7 +4857,7 @@ const getFunctionalFallthrough = (attrs) => {
return res;
};
function renderComponentRoot(instance) {
const { type: Component, vnode, proxy, withProxy, props, slots, attrs, emit, render, renderCache, data, setupState, ctx, uid, appContext: { app: { config: { globalProperties: { pruneComponentPropsCache } } } } } = instance;
const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit, render, renderCache, data, setupState, ctx, uid, appContext: { app: { config: { globalProperties: { pruneComponentPropsCache } } } }, inheritAttrs } = instance;
instance.$templateRefs = [];
instance.$ei = 0;
// props
......@@ -4868,20 +4868,20 @@ function renderComponentRoot(instance) {
const prev = setCurrentRenderingInstance(instance);
try {
if (vnode.shapeFlag & 4 /* STATEFUL_COMPONENT */) {
fallthroughAttrs(inheritAttrs, props, propsOptions, attrs);
// withProxy is a proxy with a different `has` trap only for
// runtime-compiled render functions using `with` block.
const proxyToUse = withProxy || proxy;
result = render.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx);
}
else {
fallthroughAttrs(inheritAttrs, props, propsOptions, Component.props ? attrs : getFunctionalFallthrough(attrs));
// functional
const render = Component;
result =
render.length > 1
? render(props, { attrs, slots, emit })
: render(props, null /* we know it doesn't need it */)
? attrs
: getFunctionalFallthrough(attrs);
: render(props, null /* we know it doesn't need it */);
}
}
catch (err) {
......@@ -4892,6 +4892,24 @@ function renderComponentRoot(instance) {
setCurrentRenderingInstance(prev);
return result;
}
function fallthroughAttrs(inheritAttrs, props, propsOptions, fallthroughAttrs) {
if (props && fallthroughAttrs && inheritAttrs !== false) {
const keys = Object.keys(fallthroughAttrs).filter(key => key !== 'class' && key !== 'style');
if (!keys.length) {
return;
}
if (propsOptions && keys.some(isModelListener)) {
keys.forEach(key => {
if (!isModelListener(key) || !(key.slice(9) in propsOptions)) {
props[key] = fallthroughAttrs[key];
}
});
}
else {
keys.forEach(key => (props[key] = fallthroughAttrs[key]));
}
}
}
const updateComponentPreRender = (instance) => {
pauseTracking();
// props update may have triggered pre-flush watchers.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册