| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 | var __create = Object.create;var __defProp = Object.defineProperty;var __getOwnPropDesc = Object.getOwnPropertyDescriptor;var __getOwnPropNames = Object.getOwnPropertyNames;var __getProtoOf = Object.getPrototypeOf;var __hasOwnProp = Object.prototype.hasOwnProperty;var __export = (target, all) => {  for (var name2 in all)    __defProp(target, name2, { get: all[name2], enumerable: true });};var __copyProps = (to, from, except, desc) => {  if (from && typeof from === "object" || typeof from === "function") {    for (let key of __getOwnPropNames(from))      if (!__hasOwnProp.call(to, key) && key !== except)        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });  }  return to;};var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,  mod));var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);var stdin_exports = {};__export(stdin_exports, {  default: () => stdin_default});module.exports = __toCommonJS(stdin_exports);var import_vue = require("vue");var import_vue2 = require("vue");var import_utils = require("../utils");var import_use = require("@vant/use");var import_NumberKeyboardKey = __toESM(require("./NumberKeyboardKey"));const [name, bem] = (0, import_utils.createNamespace)("number-keyboard");const numberKeyboardProps = {  show: Boolean,  title: String,  theme: (0, import_utils.makeStringProp)("default"),  zIndex: import_utils.numericProp,  teleport: [String, Object],  maxlength: (0, import_utils.makeNumericProp)(Infinity),  modelValue: (0, import_utils.makeStringProp)(""),  transition: import_utils.truthProp,  blurOnClose: import_utils.truthProp,  showDeleteKey: import_utils.truthProp,  randomKeyOrder: Boolean,  closeButtonText: String,  deleteButtonText: String,  closeButtonLoading: Boolean,  hideOnClickOutside: import_utils.truthProp,  safeAreaInsetBottom: import_utils.truthProp,  extraKey: {    type: [String, Array],    default: ""  }};function shuffle(array) {  for (let i = array.length - 1; i > 0; i--) {    const j = Math.floor(Math.random() * (i + 1));    const temp = array[i];    array[i] = array[j];    array[j] = temp;  }  return array;}var stdin_default = (0, import_vue2.defineComponent)({  name,  inheritAttrs: false,  props: numberKeyboardProps,  emits: ["show", "hide", "blur", "input", "close", "delete", "update:modelValue"],  setup(props, {    emit,    slots,    attrs  }) {    const root = (0, import_vue2.ref)();    const genBasicKeys = () => {      const keys2 = Array(9).fill("").map((_, i) => ({        text: i + 1      }));      if (props.randomKeyOrder) {        shuffle(keys2);      }      return keys2;    };    const genDefaultKeys = () => [...genBasicKeys(), {      text: props.extraKey,      type: "extra"    }, {      text: 0    }, {      text: props.showDeleteKey ? props.deleteButtonText : "",      type: props.showDeleteKey ? "delete" : ""    }];    const genCustomKeys = () => {      const keys2 = genBasicKeys();      const {        extraKey      } = props;      const extraKeys = Array.isArray(extraKey) ? extraKey : [extraKey];      if (extraKeys.length === 1) {        keys2.push({          text: 0,          wider: true        }, {          text: extraKeys[0],          type: "extra"        });      } else if (extraKeys.length === 2) {        keys2.push({          text: extraKeys[0],          type: "extra"        }, {          text: 0        }, {          text: extraKeys[1],          type: "extra"        });      }      return keys2;    };    const keys = (0, import_vue2.computed)(() => props.theme === "custom" ? genCustomKeys() : genDefaultKeys());    const onBlur = () => {      if (props.show) {        emit("blur");      }    };    const onClose = () => {      emit("close");      if (props.blurOnClose) {        onBlur();      }    };    const onAnimationEnd = () => emit(props.show ? "show" : "hide");    const onPress = (text, type) => {      if (text === "") {        if (type === "extra") {          onBlur();        }        return;      }      const value = props.modelValue;      if (type === "delete") {        emit("delete");        emit("update:modelValue", value.slice(0, value.length - 1));      } else if (type === "close") {        onClose();      } else if (value.length < props.maxlength) {        emit("input", text);        emit("update:modelValue", value + text);      }    };    const renderTitle = () => {      const {        title,        theme,        closeButtonText      } = props;      const leftSlot = slots["title-left"];      const showClose = closeButtonText && theme === "default";      const showTitle = title || showClose || leftSlot;      if (!showTitle) {        return;      }      return (0, import_vue.createVNode)("div", {        "class": bem("header")      }, [leftSlot && (0, import_vue.createVNode)("span", {        "class": bem("title-left")      }, [leftSlot()]), title && (0, import_vue.createVNode)("h2", {        "class": bem("title")      }, [title]), showClose && (0, import_vue.createVNode)("button", {        "type": "button",        "class": [bem("close"), import_utils.HAPTICS_FEEDBACK],        "onClick": onClose      }, [closeButtonText])]);    };    const renderKeys = () => keys.value.map((key) => {      const keySlots = {};      if (key.type === "delete") {        keySlots.default = slots.delete;      }      if (key.type === "extra") {        keySlots.default = slots["extra-key"];      }      return (0, import_vue.createVNode)(import_NumberKeyboardKey.default, {        "key": key.text,        "text": key.text,        "type": key.type,        "wider": key.wider,        "color": key.color,        "onPress": onPress      }, keySlots);    });    const renderSidebar = () => {      if (props.theme === "custom") {        return (0, import_vue.createVNode)("div", {          "class": bem("sidebar")        }, [props.showDeleteKey && (0, import_vue.createVNode)(import_NumberKeyboardKey.default, {          "large": true,          "text": props.deleteButtonText,          "type": "delete",          "onPress": onPress        }, {          delete: slots.delete        }), (0, import_vue.createVNode)(import_NumberKeyboardKey.default, {          "large": true,          "text": props.closeButtonText,          "type": "close",          "color": "blue",          "loading": props.closeButtonLoading,          "onPress": onPress        }, null)]);      }    };    (0, import_vue2.watch)(() => props.show, (value) => {      if (!props.transition) {        emit(value ? "show" : "hide");      }    });    if (props.hideOnClickOutside) {      (0, import_use.useClickAway)(root, onBlur, {        eventName: "touchstart"      });    }    return () => {      const Title = renderTitle();      const Content = (0, import_vue.createVNode)(import_vue2.Transition, {        "name": props.transition ? "van-slide-up" : ""      }, {        default: () => [(0, import_vue.withDirectives)((0, import_vue.createVNode)("div", (0, import_vue.mergeProps)({          "ref": root,          "style": (0, import_utils.getZIndexStyle)(props.zIndex),          "class": bem({            unfit: !props.safeAreaInsetBottom,            "with-title": !!Title          }),          "onAnimationend": onAnimationEnd,          "onTouchstartPassive": import_utils.stopPropagation        }, attrs), [Title, (0, import_vue.createVNode)("div", {          "class": bem("body")        }, [(0, import_vue.createVNode)("div", {          "class": bem("keys")        }, [renderKeys()]), renderSidebar()])]), [[import_vue.vShow, props.show]])]      });      if (props.teleport) {        return (0, import_vue.createVNode)(import_vue2.Teleport, {          "to": props.teleport        }, {          default: () => [Content]        });      }      return Content;    };  }});
 |