"use strict";
const common_vendor = require("../../../../common/vendor.js");
require("../../../adapter-vue.js");
const TUIKit_components_TUISearch_searchTypeList = require("../search-type-list.js");
const common_assets = require("../../../../common/assets.js");
const TUIKit_components_TUISearch_utils = require("../utils.js");
const TUIKit_utils_enableSampleTaskStatus = require("../../../utils/enableSampleTaskStatus.js");
const TUIKit_utils_env = require("../../../utils/env.js");
if (!Math) {
  (SearchResultLoading + SearchResultDefault + SearchResultItem + Icon)();
}
const SearchResultItem = () => "./search-result-item/index.js";
const SearchResultDefault = () => "./search-result-default/index.js";
const SearchResultLoading = () => "./search-result-loading/index.js";
const Icon = () => "../../common/Icon.js";
const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
  __name: "index",
  props: {
    searchType: {
      type: String,
      default: "global",
      // "global" / "conversation"
      validator(value) {
        return ["global", "conversation"].includes(value);
      }
    }
  },
  setup(__props) {
    var _a, _b;
    const props = __props;
    const keywordList = common_vendor.ref([]);
    const messageTypeList = common_vendor.ref(
      (_a = TUIKit_components_TUISearch_searchTypeList.searchMessageTypeDefault[props.searchType]) == null ? void 0 : _a.value
    );
    const timePosition = common_vendor.ref(0);
    const timePeriod = common_vendor.ref(0);
    const keywordListMatchType = common_vendor.ref("and");
    const currentSearchTabKey = common_vendor.ref(
      (_b = TUIKit_components_TUISearch_searchTypeList.searchMessageTypeDefault[props.searchType]) == null ? void 0 : _b.key
    );
    const searchResult = common_vendor.ref({});
    const searchAllMessageList = common_vendor.ref([]);
    const searchAllMessageTotalCount = common_vendor.ref(0);
    const currentSearchConversationID = common_vendor.ref("");
    const searchConversationResult = common_vendor.ref();
    const searchConversationMessageList = common_vendor.ref([]);
    const searchConversationMessageTotalCount = common_vendor.ref();
    const searchConversationResultGroupByDate = common_vendor.ref([]);
    const isResultDetailShow = common_vendor.ref(false);
    const isLoading = common_vendor.ref(false);
    const isSearchDetailLoading = common_vendor.ref(false);
    const isSearchDefaultShow = common_vendor.computed(() => {
      var _a2, _b2, _c;
      if (isLoading.value) {
        return false;
      }
      if (props.searchType === "global") {
        if (!((_a2 = keywordList == null ? void 0 : keywordList.value) == null ? void 0 : _a2.length) || ((_b2 = Object == null ? void 0 : Object.keys(searchResult.value)) == null ? void 0 : _b2.length)) {
          return false;
        } else {
          return true;
        }
      } else {
        if ((_c = searchConversationMessageList == null ? void 0 : searchConversationMessageList.value) == null ? void 0 : _c.length) {
          return false;
        } else {
          return true;
        }
      }
    });
    function onCurrentConversationIDUpdate(id) {
      props.searchType === "conversation" && (currentSearchConversationID.value = id);
    }
    function onCurrentSearchInputValueUpdate(obj) {
      if ((obj == null ? void 0 : obj.searchType) === (props == null ? void 0 : props.searchType)) {
        keywordList.value = (obj == null ? void 0 : obj.value) ? obj.value.trim().split(/\s+/) : [];
      }
    }
    function onCurrentSearchMessageTypeUpdate(typeObject) {
      var _a2, _b2, _c, _d;
      if ((typeObject == null ? void 0 : typeObject.searchType) === (props == null ? void 0 : props.searchType)) {
        currentSearchTabKey.value = ((_a2 = typeObject == null ? void 0 : typeObject.value) == null ? void 0 : _a2.key) || ((_b2 = TUIKit_components_TUISearch_searchTypeList.searchMessageTypeDefault[props.searchType]) == null ? void 0 : _b2.key);
        messageTypeList.value = ((_c = typeObject == null ? void 0 : typeObject.value) == null ? void 0 : _c.value) || ((_d = TUIKit_components_TUISearch_searchTypeList.searchMessageTypeDefault[props.searchType]) == null ? void 0 : _d.value);
      }
    }
    function onCurrentSearchMessageTimeUpdate(timeObject) {
      var _a2, _b2, _c, _d;
      if ((timeObject == null ? void 0 : timeObject.searchType) === (props == null ? void 0 : props.searchType)) {
        timePosition.value = (_b2 = (_a2 = timeObject == null ? void 0 : timeObject.value) == null ? void 0 : _a2.value) == null ? void 0 : _b2.timePosition;
        timePeriod.value = (_d = (_c = timeObject == null ? void 0 : timeObject.value) == null ? void 0 : _c.value) == null ? void 0 : _d.timePeriod;
      }
    }
    common_vendor.onMounted(() => {
      common_vendor.Jt.watch(common_vendor.o.CONV, {
        currentConversationID: onCurrentConversationIDUpdate
      });
      common_vendor.Jt.watch(common_vendor.o.SEARCH, {
        currentSearchInputValue: onCurrentSearchInputValueUpdate,
        currentSearchMessageType: onCurrentSearchMessageTypeUpdate,
        currentSearchMessageTime: onCurrentSearchMessageTimeUpdate
      });
    });
    common_vendor.onUnmounted(() => {
      common_vendor.Jt.unwatch(common_vendor.o.CONV, {
        currentConversationID: onCurrentConversationIDUpdate
      });
      common_vendor.Jt.unwatch(common_vendor.o.SEARCH, {
        currentSearchInputValue: onCurrentSearchInputValueUpdate,
        currentSearchMessageType: onCurrentSearchMessageTypeUpdate,
        currentSearchMessageTime: onCurrentSearchMessageTimeUpdate
      });
    });
    const setMessageSearchResultList = (option) => {
      var _a2;
      TUIKit_components_TUISearch_utils.searchCloudMessages(
        {
          keywordList: ((_a2 = keywordList == null ? void 0 : keywordList.value) == null ? void 0 : _a2.length) ? keywordList.value : void 0,
          messageTypeList: typeof messageTypeList.value === "string" ? [messageTypeList.value] : messageTypeList.value,
          timePosition: timePosition.value,
          timePeriod: timePeriod.value,
          conversationID: (option == null ? void 0 : option.conversationID) || void 0,
          cursor: (option == null ? void 0 : option.cursor) || void 0,
          keywordListMatchType: keywordListMatchType.value
        }
      ).then((res) => {
        var _a3, _b2, _c, _d, _e, _f, _g, _h, _i, _j;
        TUIKit_utils_enableSampleTaskStatus.enableSampleTaskStatus("searchCloudMessage");
        if (!(option == null ? void 0 : option.conversationID)) {
          (option == null ? void 0 : option.cursor) ? searchAllMessageList.value = [
            ...searchAllMessageList.value,
            ...res.data.searchResultList
          ] : searchAllMessageList.value = (_a3 = res == null ? void 0 : res.data) == null ? void 0 : _a3.searchResultList;
          searchAllMessageTotalCount.value = (_b2 = res == null ? void 0 : res.data) == null ? void 0 : _b2.totalCount;
          const key = currentSearchTabKey.value === "all" ? "allMessage" : currentSearchTabKey.value;
          if (((_c = searchAllMessageList == null ? void 0 : searchAllMessageList.value) == null ? void 0 : _c.length) && currentSearchTabKey.value !== "contact" && currentSearchTabKey.value !== "group") {
            searchResult.value = Object.assign({}, searchResult.value, {
              [key]: {
                key,
                label: TUIKit_components_TUISearch_searchTypeList.searchMessageTypeList[key].label,
                list: currentSearchTabKey.value === "all" ? (_d = searchAllMessageList == null ? void 0 : searchAllMessageList.value) == null ? void 0 : _d.slice(0, 3) : searchAllMessageList == null ? void 0 : searchAllMessageList.value,
                cursor: ((_e = res == null ? void 0 : res.data) == null ? void 0 : _e.cursor) || null
              }
            });
          } else {
            searchResult == null ? true : delete searchResult.value[key];
          }
        } else {
          searchConversationResult.value = res == null ? void 0 : res.data;
          (option == null ? void 0 : option.cursor) ? searchConversationMessageList.value = [
            ...searchConversationMessageList.value,
            ...(_g = (_f = res == null ? void 0 : res.data) == null ? void 0 : _f.searchResultList[0]) == null ? void 0 : _g.messageList
          ] : searchConversationMessageList.value = (_i = (_h = res == null ? void 0 : res.data) == null ? void 0 : _h.searchResultList[0]) == null ? void 0 : _i.messageList;
          searchConversationMessageTotalCount.value = (_j = res == null ? void 0 : res.data) == null ? void 0 : _j.totalCount;
          if ((props == null ? void 0 : props.searchType) === "conversation" && (currentSearchTabKey.value === "fileMessage" || currentSearchTabKey.value === "imageMessage")) {
            searchConversationResultGroupByDate.value = groupResultListByDate(
              searchConversationMessageList.value
            );
          } else {
            searchConversationResultGroupByDate.value = [];
          }
        }
        isLoading.value = false;
        isSearchDetailLoading.value = false;
      });
    };
    const setMessageSearchResultListDebounce = TUIKit_components_TUISearch_utils.debounce(setMessageSearchResultList, 500);
    const resetSearchResult = () => {
      searchResult.value = {};
      searchConversationResult.value = {};
      searchConversationMessageList.value = [];
      searchConversationResultGroupByDate.value = [];
    };
    common_vendor.watch(
      () => [keywordList.value, currentSearchTabKey.value, timePosition.value, timePeriod.value],
      (newValue, oldValue) => {
        var _a2, _b2, _c;
        if (newValue === oldValue) {
          return;
        }
        if (!((_a2 = keywordList == null ? void 0 : keywordList.value) == null ? void 0 : _a2.length) && (props == null ? void 0 : props.searchType) === "global") {
          resetSearchResult();
          return;
        }
        isLoading.value = true;
        if (props.searchType === "conversation") {
          resetSearchResult();
          setMessageSearchResultList({
            conversationID: currentSearchConversationID.value
          });
        } else {
          if (oldValue && oldValue[1] === "all" && newValue && newValue[1] === "allMessage") {
            ((_b2 = searchResult == null ? void 0 : searchResult.value["allMessage"]) == null ? void 0 : _b2.list) && (searchResult.value["allMessage"].list = searchAllMessageList == null ? void 0 : searchAllMessageList.value);
            (_c = Object == null ? void 0 : Object.keys(searchResult == null ? void 0 : searchResult.value)) == null ? void 0 : _c.forEach((key) => {
              if (key !== "allMessage") {
                searchResult == null ? true : delete searchResult.value[key];
              }
            });
            isLoading.value = false;
            return;
          } else {
            isResultDetailShow.value = false;
            resetSearchResult();
          }
          setMessageSearchResultListDebounce();
        }
      },
      { immediate: true }
    );
    const getMoreResult = (result) => {
      if (currentSearchTabKey.value === "all") {
        common_vendor.Jt.update(common_vendor.o.SEARCH, "currentSearchMessageType", {
          value: TUIKit_components_TUISearch_searchTypeList.searchMessageTypeList[result.key],
          searchType: props.searchType
        });
      } else {
        setMessageSearchResultList({ cursor: (result == null ? void 0 : result.cursor) || void 0 });
      }
    };
    const getMoreResultInConversation = () => {
      var _a2;
      setMessageSearchResultList({
        cursor: (_a2 = searchConversationResult == null ? void 0 : searchConversationResult.value) == null ? void 0 : _a2.cursor,
        conversationID: currentSearchConversationID == null ? void 0 : currentSearchConversationID.value
      });
    };
    const showResultDetail = (isShow, targetType, targetResult) => {
      var _a2;
      isResultDetailShow.value = isShow;
      if (targetType) {
        common_vendor.Jt.update(common_vendor.o.SEARCH, "currentSearchMessageType", {
          value: TUIKit_components_TUISearch_searchTypeList.searchMessageTypeList[targetType],
          searchType: props.searchType
        });
      }
      currentSearchConversationID.value = ((_a2 = targetResult == null ? void 0 : targetResult.conversation) == null ? void 0 : _a2.conversationID) || "";
      searchConversationMessageTotalCount.value = targetResult == null ? void 0 : targetResult.messageCount;
      if (targetResult) {
        isSearchDetailLoading.value = true;
        setMessageSearchResultListDebounce({
          conversationID: currentSearchConversationID.value
        });
      }
    };
    const generateListItemClass = (item) => {
      var _a2;
      return currentSearchConversationID.value === ((_a2 = item == null ? void 0 : item.conversation) == null ? void 0 : _a2.conversationID) ? ["list-item", "list-item-selected"] : ["list-item"];
    };
    const generateResultItemDisplayType = () => {
      if (props.searchType === "conversation" && currentSearchTabKey.value === "fileMessage") {
        return "file";
      } else if (props.searchType === "conversation" && currentSearchTabKey.value === "imageMessage") {
        return "image";
      } else if (TUIKit_utils_env.isPC) {
        return "bubble";
      } else {
        return "info";
      }
    };
    const groupResultListByDate = (messageList) => {
      var _a2, _b2, _c, _d;
      const result = [];
      if (!(messageList == null ? void 0 : messageList.length)) {
        return result;
      } else if ((messageList == null ? void 0 : messageList.length) === 1) {
        result.push({ date: TUIKit_components_TUISearch_utils.generateSearchResultYMD((_a2 = messageList[0]) == null ? void 0 : _a2.time), list: messageList });
        return result;
      }
      let prevYMD = "";
      let currYMD = "";
      for (let i = 0; i < (messageList == null ? void 0 : messageList.length); i++) {
        currYMD = TUIKit_components_TUISearch_utils.generateSearchResultYMD((_b2 = messageList[i]) == null ? void 0 : _b2.time);
        if (prevYMD !== currYMD) {
          result.push({ date: currYMD, list: [messageList[i]] });
        } else {
          (_d = (_c = result[(result == null ? void 0 : result.length) - 1]) == null ? void 0 : _c.list) == null ? void 0 : _d.push(messageList[i]);
        }
        prevYMD = currYMD;
      }
      return result;
    };
    const navigateToChatPosition = (message) => {
      var _a2;
      if (props.searchType === "global") {
        common_vendor.Jt.update(common_vendor.o.SEARCH, "currentSearchingStatus", {
          isSearching: false,
          searchType: props.searchType
        });
        common_vendor.Xt.switchConversation(message == null ? void 0 : message.conversationID).then(() => {
          var _a3;
          common_vendor.Jt.update(common_vendor.o.CHAT, "messageSource", message);
          TUIKit_utils_env.isUniFrameWork && ((_a3 = common_vendor.i) == null ? void 0 : _a3.navigateTo({
            url: "/TUIKit/components/TUIChat/index"
          }));
        });
      } else if (props.searchType === "conversation") {
        common_vendor.Jt.update(common_vendor.o.SEARCH, "isShowInConversationSearch", false);
        common_vendor.Jt.update(common_vendor.o.CHAT, "messageSource", message);
        TUIKit_utils_env.isUniFrameWork && ((_a2 = common_vendor.i) == null ? void 0 : _a2.navigateBack());
      }
    };
    const generateVueRenderKey = (value) => {
      return `${currentSearchTabKey}-${value}`;
    };
    return (_ctx, _cache) => {
      return common_vendor.e({
        a: common_vendor.unref(isLoading)
      }, common_vendor.unref(isLoading) ? {
        b: common_vendor.n(!common_vendor.unref(TUIKit_utils_env.isPC) && "search-result-loading-h5")
      } : common_vendor.unref(isSearchDefaultShow) ? {
        d: common_vendor.n(!common_vendor.unref(TUIKit_utils_env.isPC) && "search-result-default-h5")
      } : common_vendor.e({
        e: props.searchType !== "conversation" && (common_vendor.unref(TUIKit_utils_env.isPC) || !common_vendor.unref(isResultDetailShow))
      }, props.searchType !== "conversation" && (common_vendor.unref(TUIKit_utils_env.isPC) || !common_vendor.unref(isResultDetailShow)) ? {
        f: common_vendor.f(common_vendor.unref(searchResult), (result, k0, i0) => {
          return common_vendor.e(props.searchType === "global" ? {
            a: common_vendor.t(common_vendor.unref(common_vendor.Wt).t(`TUISearch.${result.label}`))
          } : {}, {
            b: common_vendor.f(result.list, (item, k1, i1) => {
              return common_vendor.e({
                a: result.key === "contact" || result.key === "group" || item.conversation
              }, result.key === "contact" || result.key === "group" || item.conversation ? {
                b: common_vendor.o$1(showResultDetail, item.conversation.conversationID),
                c: common_vendor.o$1(navigateToChatPosition, item.conversation.conversationID),
                d: "90555b56-2-" + i0 + "-" + i1,
                e: common_vendor.p({
                  listItem: item,
                  type: result.key,
                  displayType: "info",
                  keywordList: common_vendor.unref(keywordList)
                })
              } : {}, {
                f: item.conversation.conversationID,
                g: common_vendor.n(generateListItemClass(item))
              });
            }),
            c: common_vendor.unref(currentSearchTabKey) === "all" || result.cursor
          }, common_vendor.unref(currentSearchTabKey) === "all" || result.cursor ? {
            d: "90555b56-3-" + i0,
            e: common_vendor.p({
              file: common_vendor.unref(common_assets.searchIcon),
              width: "12px",
              height: "12px"
            }),
            f: common_vendor.t(common_vendor.unref(common_vendor.Wt).t("TUISearch.查看更多")),
            g: common_vendor.t(common_vendor.unref(common_vendor.Wt).t(`TUISearch.${result.label}`)),
            h: common_vendor.o$1(($event) => getMoreResult(result), result.key)
          } : {}, {
            i: result.key
          });
        }),
        g: props.searchType === "global"
      } : {}, {
        h: common_vendor.unref(isResultDetailShow) || props.searchType === "conversation"
      }, common_vendor.unref(isResultDetailShow) || props.searchType === "conversation" ? common_vendor.e({
        i: common_vendor.unref(isSearchDetailLoading)
      }, common_vendor.unref(isSearchDetailLoading) ? {
        j: common_vendor.n(!common_vendor.unref(TUIKit_utils_env.isPC) && "search-result-loading-h5")
      } : {}, {
        k: !common_vendor.unref(isSearchDetailLoading) && common_vendor.unref(isResultDetailShow) && props.searchType !== "conversation"
      }, !common_vendor.unref(isSearchDetailLoading) && common_vendor.unref(isResultDetailShow) && props.searchType !== "conversation" ? {
        l: common_vendor.t(common_vendor.unref(searchConversationMessageTotalCount)),
        m: common_vendor.t(common_vendor.unref(common_vendor.Wt).t("TUISearch.条与")),
        n: common_vendor.f(common_vendor.unref(keywordList), (keyword, index, i0) => {
          return {
            a: common_vendor.t(keyword),
            b: index
          };
        }),
        o: common_vendor.t(common_vendor.unref(common_vendor.Wt).t("TUISearch.相关的")),
        p: common_vendor.t(common_vendor.unref(common_vendor.Wt).t(`TUISearch.${common_vendor.unref(currentSearchTabKey) === "allMessage" ? "结果" : common_vendor.unref(TUIKit_components_TUISearch_searchTypeList.searchMessageTypeList)[common_vendor.unref(currentSearchTabKey)].label}`)),
        q: common_vendor.t(common_vendor.unref(common_vendor.Wt).t("TUISearch.进入聊天")),
        r: common_vendor.p({
          file: common_vendor.unref(common_assets.rightIcon),
          width: "14px",
          height: "14px"
        }),
        s: common_vendor.o$1(($event) => common_vendor.unref(TUIKit_components_TUISearch_utils.enterConversation)({
          conversationID: common_vendor.unref(currentSearchConversationID)
        }))
      } : {}, {
        t: !common_vendor.unref(isSearchDetailLoading) && common_vendor.unref(searchConversationMessageList) && common_vendor.unref(searchConversationMessageList)[0]
      }, !common_vendor.unref(isSearchDetailLoading) && common_vendor.unref(searchConversationMessageList) && common_vendor.unref(searchConversationMessageList)[0] ? common_vendor.e({
        v: props.searchType === "global" || common_vendor.unref(currentSearchTabKey) !== "imageMessage" && common_vendor.unref(currentSearchTabKey) !== "fileMessage"
      }, props.searchType === "global" || common_vendor.unref(currentSearchTabKey) !== "imageMessage" && common_vendor.unref(currentSearchTabKey) !== "fileMessage" ? {
        w: common_vendor.f(common_vendor.unref(searchConversationMessageList), (item, k0, i0) => {
          return {
            a: common_vendor.o$1(showResultDetail, generateVueRenderKey(item.ID)),
            b: common_vendor.o$1(navigateToChatPosition, generateVueRenderKey(item.ID)),
            c: "90555b56-6-" + i0,
            d: common_vendor.p({
              listItem: item,
              listItemContent: item.getMessageContent(),
              type: common_vendor.unref(currentSearchTabKey),
              displayType: generateResultItemDisplayType(),
              keywordList: common_vendor.unref(keywordList)
            }),
            e: generateVueRenderKey(item.ID)
          };
        })
      } : {
        x: common_vendor.f(common_vendor.unref(searchConversationResultGroupByDate), (group, k0, i0) => {
          return {
            a: common_vendor.t(group.date),
            b: common_vendor.f(group.list, (item, k1, i1) => {
              return {
                a: common_vendor.o$1(showResultDetail, generateVueRenderKey(item.ID)),
                b: common_vendor.o$1(navigateToChatPosition, generateVueRenderKey(item.ID)),
                c: "90555b56-7-" + i0 + "-" + i1,
                d: common_vendor.p({
                  listItem: item,
                  listItemContent: item.getMessageContent(),
                  type: common_vendor.unref(currentSearchTabKey),
                  displayType: generateResultItemDisplayType(),
                  keywordList: common_vendor.unref(keywordList)
                }),
                e: generateVueRenderKey(item.ID)
              };
            }),
            c: generateVueRenderKey(group.date)
          };
        }),
        y: common_vendor.n(common_vendor.unref(currentSearchTabKey) === "fileMessage" ? "list-group-file" : "list-group-image")
      }, {
        z: common_vendor.unref(searchConversationResult) && common_vendor.unref(searchConversationResult).cursor
      }, common_vendor.unref(searchConversationResult) && common_vendor.unref(searchConversationResult).cursor ? {
        A: common_vendor.p({
          file: common_vendor.unref(common_assets.searchIcon),
          width: "12px",
          height: "12px"
        }),
        B: common_vendor.t(common_vendor.unref(common_vendor.Wt).t("TUISearch.查看更多历史记录")),
        C: common_vendor.o$1(getMoreResultInConversation)
      } : {}) : {}, {
        D: common_vendor.n(props.searchType === "conversation" && "tui-search-result-in-conversation")
      }) : {}, {
        E: common_vendor.n(!common_vendor.unref(TUIKit_utils_env.isPC) && "tui-search-result-h5"),
        F: common_vendor.n(common_vendor.unref(TUIKit_utils_env.isPC) && common_vendor.unref(isResultDetailShow) && "tui-search-result-with-border")
      }), {
        c: common_vendor.unref(isSearchDefaultShow)
      });
    };
  }
});
const Component = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-90555b56"]]);
wx.createComponent(Component);
//# sourceMappingURL=../../../../../.sourcemap/mp-weixin/TUIKit/components/TUISearch/search-result/index.js.map
