@tmagic/utils 1.8.0-manmanyu.26 → 1.8.0-manmanyu.28

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/dist/es/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { DATA_SOURCE_FIELDS_CHANGE_EVENT_PREFIX, DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX, DATA_SOURCE_SET_DATA_METHOD_NAME } from "./const.js";
2
2
  import { addClassName, asyncLoadCss, asyncLoadJs, calcValueByFontsize, createDiv, getDocument, getElById, getIdFromEl, injectStyle, removeClassName, removeClassNameByClassName, setDslDomRelateConfig, setIdToEl } from "./dom.js";
3
- import { cloneDeep, set } from "lodash-es";
3
+ import { cloneDeep, get, set } from "lodash-es";
4
4
  import { NodeType } from "@tmagic/schema";
5
5
  //#region packages/utils/src/index.ts
6
6
  var _globalThis;
@@ -159,6 +159,12 @@ var guid = (digit = 8) => "x".repeat(digit).replace(/[xy]/g, (c) => {
159
159
  return (c === "x" ? r : r & 3 | 8).toString(16);
160
160
  });
161
161
  var getKeysArray = (keys) => `${keys}`.replace(/\[(\d+)\]/g, ".$1").split(".");
162
+ /**
163
+ * 判断某一层 key 是否为数组下标(纯数字)
164
+ * @param key 单层 key
165
+ * @returns 是否为数组下标
166
+ */
167
+ var isArrayIndex = (key) => /^\d+$/.test(`${key}`);
162
168
  var getValueByKeyPath = (keys = "", data = {}) => {
163
169
  return (Array.isArray(keys) ? keys : getKeysArray(keys)).reduce((accumulator, currentValue) => {
164
170
  if (isObject(accumulator)) return accumulator[currentValue];
@@ -166,7 +172,18 @@ var getValueByKeyPath = (keys = "", data = {}) => {
166
172
  throw new Error(`${data}中不存在${keys}`);
167
173
  }, data);
168
174
  };
169
- var setValueByKeyPath = (keys, value, data = {}) => set(data, keys, value);
175
+ var setValueByKeyPath = (keys, value, data = {}) => {
176
+ if (typeof value === "undefined") {
177
+ const keyArray = getKeysArray(keys);
178
+ const lastKey = keyArray[keyArray.length - 1];
179
+ if (keyArray.length > 1 && isArrayIndex(lastKey)) {
180
+ const parentPath = keyArray.slice(0, -1).join(".");
181
+ if (typeof get(data, parentPath) === "undefined") set(data, parentPath, []);
182
+ return data;
183
+ }
184
+ }
185
+ return set(data, keys, value);
186
+ };
170
187
  var getNodes = (ids, data = []) => {
171
188
  const nodes = [];
172
189
  const get = function(ids, data) {
@@ -357,4 +374,4 @@ var isValueIncludeDataSource = (value) => {
357
374
  };
358
375
  var removeDataSourceFieldPrefix = (id) => id?.replace("ds-field::", "") || "";
359
376
  //#endregion
360
- export { DATA_SOURCE_FIELDS_CHANGE_EVENT_PREFIX, DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX, DATA_SOURCE_SET_DATA_METHOD_NAME, DSL_NODE_KEY_COPY_PREFIX, IS_DSL_NODE_KEY, PAGE_FRAGMENT_CONTAINER_ID_KEY, addClassName, addParamToUrl, asyncLoadCss, asyncLoadJs, calcValueByFontsize, calculatePercentage, compiledCond, compiledNode, convertToNumber, createDiv, dataSourceTemplateRegExp, delQueStr, emptyFn, filterXSS, getDefaultValueFromFields, getDepKeys, getDepNodeIds, getDocument, getElById, getGlobalThis, getHost, getIdFromEl, getKeys, getKeysArray, getNodeInfo, getNodePath, getNodes, getSearchObj, getUrlParam, getValueByKeyPath, guid, injectStyle, isDslNode, isNumber, isObject, isPage, isPageFragment, isPercentage, isPop, isSameDomain, isValueIncludeDataSource, removeClassName, removeClassNameByClassName, removeDataSourceFieldPrefix, replaceChildNode, setDslDomRelateConfig, setIdToEl, setUrlParam, setValueByKeyPath, sleep, toHump, toLine, traverseNode };
377
+ export { DATA_SOURCE_FIELDS_CHANGE_EVENT_PREFIX, DATA_SOURCE_FIELDS_SELECT_VALUE_PREFIX, DATA_SOURCE_SET_DATA_METHOD_NAME, DSL_NODE_KEY_COPY_PREFIX, IS_DSL_NODE_KEY, PAGE_FRAGMENT_CONTAINER_ID_KEY, addClassName, addParamToUrl, asyncLoadCss, asyncLoadJs, calcValueByFontsize, calculatePercentage, compiledCond, compiledNode, convertToNumber, createDiv, dataSourceTemplateRegExp, delQueStr, emptyFn, filterXSS, getDefaultValueFromFields, getDepKeys, getDepNodeIds, getDocument, getElById, getGlobalThis, getHost, getIdFromEl, getKeys, getKeysArray, getNodeInfo, getNodePath, getNodes, getSearchObj, getUrlParam, getValueByKeyPath, guid, injectStyle, isArrayIndex, isDslNode, isNumber, isObject, isPage, isPageFragment, isPercentage, isPop, isSameDomain, isValueIncludeDataSource, removeClassName, removeClassNameByClassName, removeDataSourceFieldPrefix, replaceChildNode, setDslDomRelateConfig, setIdToEl, setUrlParam, setValueByKeyPath, sleep, toHump, toLine, traverseNode };