@composy/keyboard-vue 0.0.1 → 0.0.2

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.
Files changed (172) hide show
  1. package/README.md +48 -24
  2. package/dist/index.css +552 -560
  3. package/dist/index.js +228 -192
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.min.css +1 -1
  6. package/dist/index.min.js +954 -1
  7. package/dist/index.min.js.map +1 -0
  8. package/es/.dts-output-manifest.json +1 -0
  9. package/es/.dts.tsbuildinfo +1 -0
  10. package/es/components/KeyboardKey.js +1 -1
  11. package/es/components/KeyboardKey.js.map +1 -1
  12. package/es/components/KeyboardKey.vue_vue_type_script_setup_true_lang.js +16 -7
  13. package/es/components/KeyboardKey.vue_vue_type_script_setup_true_lang.js.map +1 -1
  14. package/es/components/KeyboardPopup.js +1 -1
  15. package/es/components/KeyboardPopup.js.map +1 -1
  16. package/es/components/KeyboardPopup.vue_vue_type_script_setup_true_lang.js +8 -5
  17. package/es/components/KeyboardPopup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  18. package/es/components/LicensePlateKeyboard.js +1 -1
  19. package/es/components/LicensePlateKeyboard.js.map +1 -1
  20. package/es/components/LicensePlateKeyboard.vue_vue_type_script_setup_true_lang.js +2 -2
  21. package/es/components/LicensePlateKeyboard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  22. package/es/components/VirtualKeyboard.js +1 -1
  23. package/es/components/VirtualKeyboard.js.map +1 -1
  24. package/es/components/VirtualKeyboard.vue_vue_type_script_setup_true_lang.js +4 -4
  25. package/es/components/VirtualKeyboard.vue_vue_type_script_setup_true_lang.js.map +1 -1
  26. package/es/components/index.d.ts +1 -2
  27. package/es/components/index.d.ts.map +1 -1
  28. package/es/components/index.js +1 -1
  29. package/es/composables/index.d.ts +0 -1
  30. package/es/composables/index.js +1 -1
  31. package/es/composables/useKeyboard.d.ts +1 -2
  32. package/es/composables/useKeyboard.d.ts.map +1 -1
  33. package/es/composables/useKeyboard.js +8 -15
  34. package/es/composables/useKeyboard.js.map +1 -1
  35. package/es/composables/useKeyboardPopup.d.ts +2 -51
  36. package/es/composables/useKeyboardPopup.d.ts.map +1 -1
  37. package/es/composables/useKeyboardPopup.js +66 -49
  38. package/es/composables/useKeyboardPopup.js.map +1 -1
  39. package/es/directives/index.d.ts +0 -1
  40. package/es/directives/index.js +1 -1
  41. package/es/directives/v-keyboard.d.ts +0 -1
  42. package/es/directives/v-keyboard.d.ts.map +1 -1
  43. package/es/directives/v-keyboard.js +10 -11
  44. package/es/directives/v-keyboard.js.map +1 -1
  45. package/es/index.d.ts +3 -4
  46. package/es/index.d.ts.map +1 -1
  47. package/es/index.js +2 -5
  48. package/es/index.js.map +1 -1
  49. package/es/plugins/engine-plugin.d.ts +0 -1
  50. package/es/plugins/engine-plugin.d.ts.map +1 -1
  51. package/es/plugins/engine-plugin.js +19 -4
  52. package/es/plugins/engine-plugin.js.map +1 -1
  53. package/es/plugins/index.d.ts +0 -1
  54. package/es/plugins/index.js +1 -1
  55. package/es/style/css.js +1 -1
  56. package/es/style/index.css +2 -0
  57. package/es/style/index.js +1 -1
  58. package/es/styles/index.css +391 -0
  59. package/es/styles/keyboard.css +252 -0
  60. package/es/styles/themes.css +137 -0
  61. package/esm/components/KeyboardKey.js +17 -0
  62. package/esm/components/KeyboardKey.js.map +1 -0
  63. package/esm/components/KeyboardKey.vue_vue_type_script_setup_true_lang.js +140 -0
  64. package/esm/components/KeyboardKey.vue_vue_type_script_setup_true_lang.js.map +1 -0
  65. package/esm/components/KeyboardPopup.js +17 -0
  66. package/esm/components/KeyboardPopup.js.map +1 -0
  67. package/esm/components/KeyboardPopup.vue_vue_type_script_setup_true_lang.js +167 -0
  68. package/esm/components/KeyboardPopup.vue_vue_type_script_setup_true_lang.js.map +1 -0
  69. package/esm/components/LicensePlateKeyboard.js +17 -0
  70. package/esm/components/LicensePlateKeyboard.js.map +1 -0
  71. package/esm/components/LicensePlateKeyboard.vue_vue_type_script_setup_true_lang.js +97 -0
  72. package/esm/components/LicensePlateKeyboard.vue_vue_type_script_setup_true_lang.js.map +1 -0
  73. package/esm/components/VirtualKeyboard.js +17 -0
  74. package/esm/components/VirtualKeyboard.js.map +1 -0
  75. package/esm/components/VirtualKeyboard.vue_vue_type_script_setup_true_lang.js +127 -0
  76. package/esm/components/VirtualKeyboard.vue_vue_type_script_setup_true_lang.js.map +1 -0
  77. package/{lib → esm}/components/index.d.ts +1 -1
  78. package/esm/components/index.d.ts.map +1 -0
  79. package/esm/components/index.js +15 -0
  80. package/esm/composables/index.d.ts.map +1 -0
  81. package/esm/composables/index.js +13 -0
  82. package/{lib → esm}/composables/useKeyboard.d.ts +1 -1
  83. package/esm/composables/useKeyboard.d.ts.map +1 -0
  84. package/esm/composables/useKeyboard.js +68 -0
  85. package/esm/composables/useKeyboard.js.map +1 -0
  86. package/esm/composables/useKeyboardPopup.d.ts +25 -0
  87. package/esm/composables/useKeyboardPopup.d.ts.map +1 -0
  88. package/esm/composables/useKeyboardPopup.js +136 -0
  89. package/esm/composables/useKeyboardPopup.js.map +1 -0
  90. package/esm/directives/index.d.ts.map +1 -0
  91. package/esm/directives/index.js +12 -0
  92. package/esm/directives/v-keyboard.d.ts.map +1 -0
  93. package/esm/directives/v-keyboard.js +64 -0
  94. package/esm/directives/v-keyboard.js.map +1 -0
  95. package/esm/index.d.ts +42 -0
  96. package/esm/index.d.ts.map +1 -0
  97. package/esm/index.js +34 -0
  98. package/esm/index.js.map +1 -0
  99. package/esm/plugins/engine-plugin.d.ts.map +1 -0
  100. package/esm/plugins/engine-plugin.js +53 -0
  101. package/esm/plugins/engine-plugin.js.map +1 -0
  102. package/esm/plugins/index.d.ts.map +1 -0
  103. package/esm/plugins/index.js +12 -0
  104. package/esm/style/css.js +1 -0
  105. package/esm/style/index.js +1 -0
  106. package/{es → esm}/style/index.less +1 -1
  107. package/esm/styles/index.less +5 -0
  108. package/esm/styles/keyboard.less +286 -0
  109. package/esm/styles/themes.less +164 -0
  110. package/lib/components/KeyboardKey.cjs +1 -1
  111. package/lib/components/KeyboardKey.cjs.map +1 -1
  112. package/lib/components/KeyboardKey.vue_vue_type_script_setup_true_lang.cjs +16 -7
  113. package/lib/components/KeyboardKey.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
  114. package/lib/components/KeyboardPopup.cjs +1 -1
  115. package/lib/components/KeyboardPopup.cjs.map +1 -1
  116. package/lib/components/KeyboardPopup.vue_vue_type_script_setup_true_lang.cjs +8 -5
  117. package/lib/components/KeyboardPopup.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
  118. package/lib/components/LicensePlateKeyboard.cjs +1 -1
  119. package/lib/components/LicensePlateKeyboard.cjs.map +1 -1
  120. package/lib/components/LicensePlateKeyboard.vue_vue_type_script_setup_true_lang.cjs +2 -2
  121. package/lib/components/LicensePlateKeyboard.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
  122. package/lib/components/VirtualKeyboard.cjs +1 -1
  123. package/lib/components/VirtualKeyboard.cjs.map +1 -1
  124. package/lib/components/VirtualKeyboard.vue_vue_type_script_setup_true_lang.cjs +4 -4
  125. package/lib/components/VirtualKeyboard.vue_vue_type_script_setup_true_lang.cjs.map +1 -1
  126. package/lib/components/index.cjs +1 -1
  127. package/lib/components/index.d.cts +8 -0
  128. package/lib/components/index.d.cts.map +1 -0
  129. package/lib/composables/index.cjs +1 -1
  130. package/lib/composables/index.d.cts +6 -0
  131. package/lib/composables/index.d.cts.map +1 -0
  132. package/lib/composables/useKeyboard.cjs +8 -15
  133. package/lib/composables/useKeyboard.cjs.map +1 -1
  134. package/lib/composables/useKeyboard.d.cts +112 -0
  135. package/lib/composables/useKeyboard.d.cts.map +1 -0
  136. package/lib/composables/useKeyboardPopup.cjs +66 -49
  137. package/lib/composables/useKeyboardPopup.cjs.map +1 -1
  138. package/lib/composables/useKeyboardPopup.d.cts +24 -0
  139. package/lib/composables/useKeyboardPopup.d.cts.map +1 -0
  140. package/lib/directives/index.cjs +1 -1
  141. package/lib/directives/index.d.cts +5 -0
  142. package/lib/directives/index.d.cts.map +1 -0
  143. package/lib/directives/v-keyboard.cjs +10 -11
  144. package/lib/directives/v-keyboard.cjs.map +1 -1
  145. package/lib/directives/v-keyboard.d.cts +35 -0
  146. package/lib/directives/v-keyboard.d.cts.map +1 -0
  147. package/lib/index.cjs +2 -2
  148. package/lib/index.cjs.map +1 -1
  149. package/lib/index.d.cts +41 -0
  150. package/lib/index.d.cts.map +1 -0
  151. package/lib/plugins/engine-plugin.cjs +19 -3
  152. package/lib/plugins/engine-plugin.cjs.map +1 -1
  153. package/lib/plugins/engine-plugin.d.cts +36 -0
  154. package/lib/plugins/engine-plugin.d.cts.map +1 -0
  155. package/lib/plugins/index.cjs +1 -1
  156. package/lib/plugins/index.d.cts +5 -0
  157. package/lib/plugins/index.d.cts.map +1 -0
  158. package/lib/style/index.css +1 -1
  159. package/lib/styles/index.css +357 -195
  160. package/lib/styles/keyboard.css +92 -186
  161. package/lib/styles/themes.css +102 -178
  162. package/package.json +43 -34
  163. package/es/styles/index.less +0 -267
  164. package/es/styles/keyboard.less +0 -399
  165. package/es/styles/themes.less +0 -233
  166. package/lib/composables/useKeyboardPopup.d.ts +0 -73
  167. package/lib/index.d.ts +0 -42
  168. /package/{lib → esm}/composables/index.d.ts +0 -0
  169. /package/{lib → esm}/directives/index.d.ts +0 -0
  170. /package/{lib → esm}/directives/v-keyboard.d.ts +0 -0
  171. /package/{lib → esm}/plugins/engine-plugin.d.ts +0 -0
  172. /package/{lib → esm}/plugins/index.d.ts +0 -0
package/dist/index.min.js CHANGED
@@ -1 +1,954 @@
1
- (function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?factory(exports,require("vue"),require("@composy/keyboard-core")):typeof define==="function"&&define.amd?define(["exports","vue","@composy/keyboard-core"],factory):(global=typeof globalThis!=="undefined"?globalThis:global||self,factory(global.LDesignPackagesVue3={},global.Vue,global.ComposyKeyboardCore));})(this,function(exports,vue,_composy_keyboard_core){Object.defineProperties(exports,{__esModule:{value:true},[Symbol.toStringTag]:{value:"Module"}});const _hoisted_1$2=["disabled"];const _hoisted_2$2=["innerHTML"];const _hoisted_3$2={key:1,class:"keyboard-key__label"};const _hoisted_4$2={key:2,class:"keyboard-key__arrow-inline"};var KeyboardKey_vue_vue_type_script_setup_true_lang_default=(0,vue.defineComponent)({__name:"KeyboardKey",props:{keyDef:{type:Object,required:true},isUpperCase:{type:Boolean,required:false},baseWidth:{type:Number,required:false},useFlex:{type:Boolean,required:false}},emits:["press","showOptions"],setup(__props,{emit:__emit}){const props=__props;const emit=__emit;const label=(0,vue.computed)(()=>{const keyLabel=props.keyDef.label;if(typeof keyLabel==="string")return keyLabel;return props.isUpperCase?keyLabel.upper:keyLabel.lower;});const keyWidth=(0,vue.computed)(()=>{if(props.useFlex)return;const base=props.baseWidth??36;const width=props.keyDef.width??1;return `${base*width+(width-1)*6}px`;});const keyFlex=(0,vue.computed)(()=>{if(!props.useFlex)return;return props.keyDef.width??1;});const keyClass=(0,vue.computed)(()=>{const classes=["keyboard-key",`keyboard-key--${props.keyDef.type}`];if(props.keyDef.className)classes.push(props.keyDef.className);if(props.keyDef.disabled)classes.push("keyboard-key--disabled");if(props.keyDef.type==="shift"&&props.isUpperCase)classes.push("keyboard-key--active");return classes;});const hasOptions=(0,vue.computed)(()=>{return props.keyDef.options&&props.keyDef.options.length>0;});const isOptionsOnly=(0,vue.computed)(()=>{return hasOptions.value&&!props.keyDef.value;});const handlePress=(event)=>{event.preventDefault();event.stopPropagation();if(props.keyDef.disabled)return;if(isOptionsOnly.value){emit("showOptions",props.keyDef.options);return;}emit("press",props.keyDef);};const handleArrowClick=(event)=>{event.preventDefault();event.stopPropagation();if(props.keyDef.disabled)return;if(hasOptions.value)emit("showOptions",props.keyDef.options);};return(_ctx,_cache)=>{return(0,vue.openBlock)(),(0,vue.createElementBlock)("div",{class:"keyboard-key-wrapper",style:(0,vue.normalizeStyle)({width:keyWidth.value,flex:keyFlex.value})},[(0,vue.createElementVNode)("button",{class:(0,vue.normalizeClass)([keyClass.value,{"has-options":hasOptions.value&&!isOptionsOnly.value,"is-options-only":isOptionsOnly.value}]),disabled:__props.keyDef.disabled,type:"button",onMousedown:(0,vue.withModifiers)(handlePress,["prevent"]),onTouchstart:(0,vue.withModifiers)(handlePress,["prevent"])},[(0,vue.createCommentVNode)(" SVG 图标支持 "),__props.keyDef.icon?((0,vue.openBlock)(),(0,vue.createElementBlock)("span",{key:0,class:"keyboard-key__icon",innerHTML:__props.keyDef.icon},null,8,_hoisted_2$2)):((0,vue.openBlock)(),(0,vue.createElementBlock)("span",_hoisted_3$2,(0,vue.toDisplayString)(label.value),1)),(0,vue.createCommentVNode)(" 纯选项按钮内嵌下拉箭头 "),isOptionsOnly.value?((0,vue.openBlock)(),(0,vue.createElementBlock)("span",_hoisted_4$2,"▼")):(0,vue.createCommentVNode)("v-if",true)],42,_hoisted_1$2),(0,vue.createCommentVNode)(" 有value又有options的按钮:单独可点击的下拉箭头 "),hasOptions.value&&!isOptionsOnly.value?((0,vue.openBlock)(),(0,vue.createElementBlock)("span",{key:0,class:"keyboard-key__arrow",onMousedown:(0,vue.withModifiers)(handleArrowClick,["prevent"]),onTouchstart:(0,vue.withModifiers)(handleArrowClick,["prevent"])},"▼",32)):(0,vue.createCommentVNode)("v-if",true)],4);};}});KeyboardKey_vue_vue_type_script_setup_true_lang_default.__file="src/components/KeyboardKey.vue";var KeyboardKey_default=KeyboardKey_vue_vue_type_script_setup_true_lang_default;const _hoisted_1$1={class:"virtual-keyboard"};const _hoisted_2$1={key:1,class:"virtual-keyboard__empty"};const _hoisted_3$1={key:0,class:"keyboard-options-panel"};const _hoisted_4$1={class:"keyboard-options-panel__header"};const _hoisted_5={class:"keyboard-options-panel__grid"};const _hoisted_6=["onMousedown","onTouchstart"];var VirtualKeyboard_vue_vue_type_script_setup_true_lang_default=(0,vue.defineComponent)({__name:"VirtualKeyboard",props:{type:{type:String,required:false,default:"qwerty"},isUpperCase:{type:Boolean,required:false,default:false},layout:{type:Object,required:false},keyWidth:{type:Number,required:false,default:36}},emits:["keypress","selectOption"],setup(__props,{emit:__emit}){const props=__props;const emit=__emit;const showOptionsPanel=(0,vue.ref)(false);const currentOptions=(0,vue.ref)([]);const currentLayout=(0,vue.computed)(()=>{if(props.layout)return props.layout;return(0,_composy_keyboard_core.getLayout)(props.type)??null;});const handleKeyPress=(key)=>{emit("keypress",key);};const handleShowOptions=(options)=>{currentOptions.value=options;showOptionsPanel.value=true;};const handleSelectOption=(option,event)=>{event.preventDefault();event.stopPropagation();showOptionsPanel.value=false;emit("selectOption",option);};const closeOptionsPanel=()=>{showOptionsPanel.value=false;};const getRowStyle=(rowIndex)=>{return{};};return(_ctx,_cache)=>{return(0,vue.openBlock)(),(0,vue.createElementBlock)("div",_hoisted_1$1,[currentLayout.value?((0,vue.openBlock)(true),(0,vue.createElementBlock)(vue.Fragment,{key:0},(0,vue.renderList)(currentLayout.value.rows,(row,rowIndex)=>{return(0,vue.openBlock)(),(0,vue.createElementBlock)("div",{key:rowIndex,class:(0,vue.normalizeClass)(["virtual-keyboard__row",row.className]),style:(0,vue.normalizeStyle)(getRowStyle(rowIndex))},[((0,vue.openBlock)(true),(0,vue.createElementBlock)(vue.Fragment,null,(0,vue.renderList)(row.keys,(key)=>{return(0,vue.openBlock)(),(0,vue.createBlock)(KeyboardKey_default,{key:key.id,"key-def":key,"is-upper-case":__props.isUpperCase,"base-width":__props.keyWidth,"use-flex":row.className==="numpad-row",onPress:handleKeyPress,onShowOptions:handleShowOptions},null,8,["key-def","is-upper-case","base-width","use-flex"]);}),128))],6);}),128)):((0,vue.openBlock)(),(0,vue.createElementBlock)("div",_hoisted_2$1," 键盘布局未找到 ")),(0,vue.createCommentVNode)(" 选项面板 "),(0,vue.createVNode)(vue.Transition,{name:"options-panel"},{default:(0,vue.withCtx)(()=>[showOptionsPanel.value?((0,vue.openBlock)(),(0,vue.createElementBlock)("div",_hoisted_3$1,[(0,vue.createElementVNode)("div",_hoisted_4$1,[_cache[0]||(_cache[0]=(0,vue.createElementVNode)("span",{class:"keyboard-options-panel__title"},"选择邮箱后缀",-1)),(0,vue.createElementVNode)("button",{class:"keyboard-options-panel__close",type:"button",onClick:closeOptionsPanel,onTouchstart:(0,vue.withModifiers)(closeOptionsPanel,["prevent"])}," × ",32)]),(0,vue.createElementVNode)("div",_hoisted_5,[((0,vue.openBlock)(true),(0,vue.createElementBlock)(vue.Fragment,null,(0,vue.renderList)(currentOptions.value,(option)=>{return(0,vue.openBlock)(),(0,vue.createElementBlock)("button",{key:option,class:"keyboard-options-panel__item",type:"button",onMousedown:(0,vue.withModifiers)((e)=>handleSelectOption(option,e),["prevent"]),onTouchstart:(0,vue.withModifiers)((e)=>handleSelectOption(option,e),["prevent"])},(0,vue.toDisplayString)(option),41,_hoisted_6);}),128))])])):(0,vue.createCommentVNode)("v-if",true)]),_:1})]);};}});VirtualKeyboard_vue_vue_type_script_setup_true_lang_default.__file="src/components/VirtualKeyboard.vue";var VirtualKeyboard_default=VirtualKeyboard_vue_vue_type_script_setup_true_lang_default;function useKeyboard(options={}){const{immediate=false,...keyboardOptions}=options;const manager=(0,_composy_keyboard_core.createKeyboardManager)(keyboardOptions);const visible=(0,vue.ref)(false);const type=(0,vue.ref)(keyboardOptions.type??"qwerty");const isUpperCase=(0,vue.ref)(keyboardOptions.defaultUpperCase??false);const value=(0,vue.ref)(keyboardOptions.value??"");const cursorPosition=(0,vue.ref)(keyboardOptions.value?.length??0);const layout=(0,vue.shallowRef)(manager.getLayout());const state=(0,vue.reactive)({visible:false,type:keyboardOptions.type??"qwerty",isUpperCase:keyboardOptions.defaultUpperCase??false,value:keyboardOptions.value??"",cursorPosition:keyboardOptions.value?.length??0,maxLength:keyboardOptions.maxLength,inputElement:null});const syncState=(newState)=>{visible.value=newState.visible;type.value=newState.type;isUpperCase.value=newState.isUpperCase;value.value=newState.value;cursorPosition.value=newState.cursorPosition;Object.assign(state,newState);};manager.on("stateChange",syncState);manager.on("switch",()=>{layout.value=manager.getLayout();});if(immediate)manager.show();(0,vue.onBeforeUnmount)(()=>{manager.destroy();});return{visible,type,isUpperCase,value,cursorPosition,layout,state,show:(input)=>manager.show(input),hide:()=>manager.hide(),toggle:(input)=>manager.toggle(input),switchType:(t)=>manager.switchType(t),toggleShift:()=>manager.toggleShift(),handleKey:(key)=>manager.handleKey(key),getKeyLabel:(key)=>manager.getKeyLabel(key),setValue:(v)=>manager.setValue(v),appendValue:(text)=>manager.appendValue(text),setMaxLength:(maxLength)=>manager.setMaxLength(maxLength),bindInput:(input)=>manager.bindInput(input),unbindInput:()=>manager.unbindInput(),on:(event,handler)=>manager.on(event,handler),once:(event,handler)=>manager.once(event,handler),destroy:()=>manager.destroy()};}function useKeyboardPopup(options={}){const{visible=(0,vue.ref)(false),target=(0,vue.ref)(null),popup=(0,vue.ref)(null),closeOnClickOutside=true,onClose,...positionConfig}=options;const positionManager=(0,_composy_keyboard_core.createPositionManager)(positionConfig);const popupStyles=(0,vue.ref)({});const maskStyles=(0,vue.ref)({});const placement=(0,vue.ref)("bottom");const isMobileDevice=(0,vue.ref)((0,_composy_keyboard_core.isMobile)());const showMask=(0,vue.ref)(false);const isAnimating=(0,vue.ref)(false);let cleanupClickOutside=null;let cleanupViewportChange=null;let cleanupScroll=null;const updatePosition=()=>{if(!popup.value)return;const popupRect=popup.value.getBoundingClientRect();const result=positionManager.calculate(target.value,{width:popupRect.width||300,height:popupRect.height||260});placement.value=result.placement;showMask.value=positionManager.shouldShowMask();if(result.placement==="bottom-sheet")popupStyles.value={position:"fixed",left:"0",right:"0",bottom:"0",maxHeight:`${result.maxHeight}px`,zIndex:1e3};else popupStyles.value={position:"fixed",left:`${result.position.x}px`,top:`${result.position.y}px`,maxHeight:result.maxHeight?`${result.maxHeight}px`:void 0,maxWidth:result.maxWidth?`${result.maxWidth}px`:void 0,zIndex:1e3};if(showMask.value)maskStyles.value={position:"fixed",top:"0",left:"0",right:"0",bottom:"0",backgroundColor:"rgba(0,0,0,0.5)",zIndex:999};};const close=()=>{onClose?.();};(0,vue.watch)(visible,(newVisible)=>{if(newVisible){isMobileDevice.value=(0,_composy_keyboard_core.isMobile)();requestAnimationFrame(()=>{updatePosition();if(closeOnClickOutside&&popup.value)cleanupClickOutside=(0,_composy_keyboard_core.onClickOutside)(popup.value,(event)=>{if(target.value&&target.value.contains(event.target))return;close();});});cleanupViewportChange=(0,_composy_keyboard_core.onViewportChange)(()=>{isMobileDevice.value=(0,_composy_keyboard_core.isMobile)();updatePosition();});if(!isMobileDevice.value){const handleScroll=()=>{requestAnimationFrame(()=>{updatePosition();});};window.addEventListener("scroll",handleScroll,true);cleanupScroll=()=>{window.removeEventListener("scroll",handleScroll,true);};}}else{cleanupClickOutside?.();cleanupClickOutside=null;cleanupViewportChange?.();cleanupViewportChange=null;cleanupScroll?.();cleanupScroll=null;}},{immediate:true});(0,vue.watch)(target,()=>{if(visible.value)updatePosition();});(0,vue.onBeforeUnmount)(()=>{cleanupClickOutside?.();cleanupViewportChange?.();cleanupScroll?.();});return{popupStyles,maskStyles,placement,isMobileDevice,showMask,isAnimating,updatePosition,close};}var KeyboardPopup_vue_vue_type_script_setup_true_lang_default=(0,vue.defineComponent)({__name:"KeyboardPopup",props:{modelValue:{type:Boolean,required:false,default:false},type:{type:String,required:false,default:"qwerty"},value:{type:String,required:false,default:""},target:{type:null,required:false,default:null},maxLength:{type:Number,required:false},closeOnClickOutside:{type:Boolean,required:false,default:true},enableVibrate:{type:Boolean,required:false,default:true},teleportTo:{type:null,required:false,default:"body"}},emits:["update:modelValue","update:value","confirm","keypress"],setup(__props,{emit:__emit}){const props=__props;const emit=__emit;const popupRef=(0,vue.ref)(null);const targetRef=(0,vue.computed)(()=>props.target);const isMobileDevice=(0,vue.ref)((0,_composy_keyboard_core.isMobile)());const keyboard=useKeyboard({type:props.type,value:props.value,maxLength:props.maxLength||(props.type.startsWith("license-plate")?7:void 0),enableVibrate:props.enableVibrate});const{popupStyles,maskStyles,placement,showMask,updatePosition,close:closePopup}=useKeyboardPopup({visible:(0,vue.computed)(()=>props.modelValue),target:targetRef,popup:popupRef,closeOnClickOutside:props.closeOnClickOutside,onClose:()=>{emit("update:modelValue",false);}});(0,vue.watch)(()=>props.type,(newType)=>{keyboard.switchType(newType);if(newType.startsWith("license-plate")&&!props.maxLength)keyboard.setMaxLength(7);});(0,vue.watch)(()=>props.value,(newValue)=>{if(newValue!==keyboard.value.value)keyboard.setValue(newValue);});(0,vue.watch)(keyboard.value,(newValue)=>{emit("update:value",newValue);});(0,vue.watch)(()=>props.modelValue,(visible)=>{if(visible){isMobileDevice.value=(0,_composy_keyboard_core.isMobile)();if(props.target)keyboard.bindInput(props.target);keyboard.show(props.target??void 0);(0,vue.nextTick)(()=>{updatePosition();});}else keyboard.hide();});keyboard.on("confirm",({value})=>{emit("confirm",value);emit("update:modelValue",false);});const handleKeyPress=(key)=>{keyboard.handleKey(key);emit("keypress",key);};const handleSelectOption=(option)=>{let valueToAppend=option;if(option.startsWith("@")&&keyboard.value.value.endsWith("@"))valueToAppend=option.slice(1);keyboard.appendValue(valueToAppend);};const handleMaskClick=()=>{if(props.closeOnClickOutside)emit("update:modelValue",false);};const popupClass=(0,vue.computed)(()=>{return["keyboard-popup",`keyboard-popup--${placement.value}`,{"keyboard-popup--mobile":isMobileDevice.value,"keyboard-popup--desktop":!isMobileDevice.value}];});return(_ctx,_cache)=>{return(0,vue.openBlock)(),(0,vue.createBlock)(vue.Teleport,{to:__props.teleportTo},[(0,vue.createVNode)(vue.Transition,{name:"keyboard-mask"},{default:(0,vue.withCtx)(()=>[__props.modelValue&&(0,vue.unref)(showMask)?((0,vue.openBlock)(),(0,vue.createElementBlock)("div",{key:0,class:"keyboard-mask",style:(0,vue.normalizeStyle)((0,vue.unref)(maskStyles)),onClick:handleMaskClick},null,4)):(0,vue.createCommentVNode)("v-if",true)]),_:1}),(0,vue.createVNode)(vue.Transition,{name:isMobileDevice.value?"keyboard-slide":"keyboard-fade"},{default:(0,vue.withCtx)(()=>[__props.modelValue?((0,vue.openBlock)(),(0,vue.createElementBlock)("div",{key:0,ref_key:"popupRef",ref:popupRef,class:(0,vue.normalizeClass)(popupClass.value),style:(0,vue.normalizeStyle)((0,vue.unref)(popupStyles)),onMousedown:_cache[0]||(_cache[0]=(0,vue.withModifiers)(()=>{},["prevent"])),onTouchstart:_cache[1]||(_cache[1]=(0,vue.withModifiers)(()=>{},["prevent"]))},[(0,vue.createVNode)(VirtualKeyboard_default,{type:(0,vue.unref)(keyboard).type.value,"is-upper-case":(0,vue.unref)(keyboard).isUpperCase.value,onKeypress:handleKeyPress,onSelectOption:handleSelectOption},null,8,["type","is-upper-case"])],38)):(0,vue.createCommentVNode)("v-if",true)]),_:1},8,["name"])],8,["to"]);};}});KeyboardPopup_vue_vue_type_script_setup_true_lang_default.__file="src/components/KeyboardPopup.vue";var KeyboardPopup_default=KeyboardPopup_vue_vue_type_script_setup_true_lang_default;const _hoisted_1={class:"license-plate-keyboard"};const _hoisted_2={class:"license-plate-keyboard__display"};const _hoisted_3={class:"license-plate-keyboard__value"};const _hoisted_4={class:"license-plate-keyboard__hint"};var LicensePlateKeyboard_vue_vue_type_script_setup_true_lang_default=(0,vue.defineComponent)({__name:"LicensePlateKeyboard",props:{modelValue:{type:String,required:false,default:""},newEnergy:{type:Boolean,required:false,default:false}},emits:["update:modelValue","done"],setup(__props,{emit:__emit}){const props=__props;const emit=__emit;const maxLength=(0,vue.computed)(()=>props.newEnergy?8:7);const keyboard=useKeyboard({type:"license-plate-province",value:props.modelValue,maxLength:maxLength.value,enableVibrate:true});(0,vue.watch)(()=>props.modelValue,(newValue)=>{if(newValue!==keyboard.value.value)keyboard.setValue(newValue);});(0,vue.watch)(keyboard.value,(newValue)=>{emit("update:modelValue",newValue);});(0,vue.watch)(maxLength,(newMaxLength)=>{keyboard.setMaxLength(newMaxLength);if(props.modelValue.length>newMaxLength){const truncated=props.modelValue.slice(0,newMaxLength);keyboard.setValue(truncated);emit("update:modelValue",truncated);}});keyboard.on("confirm",({value})=>{emit("done",value);});const handleKeyPress=(key)=>{keyboard.handleKey(key);};const positionHint=(0,vue.computed)(()=>{const len=props.modelValue.length;if(len===0)return "请选择省份";if(len===1)return "请输入字母";if(len<maxLength.value)return `\u7B2C${len+1}\u4F4D`;return "已完成";});return(_ctx,_cache)=>{return(0,vue.openBlock)(),(0,vue.createElementBlock)("div",_hoisted_1,[(0,vue.createCommentVNode)(" 输入显示区 "),(0,vue.createElementVNode)("div",_hoisted_2,[(0,vue.createElementVNode)("div",_hoisted_3,[((0,vue.openBlock)(true),(0,vue.createElementBlock)(vue.Fragment,null,(0,vue.renderList)(__props.modelValue.padEnd(maxLength.value," ").split(""),(char,index)=>{return(0,vue.openBlock)(),(0,vue.createElementBlock)("span",{key:index,class:(0,vue.normalizeClass)(["license-plate-keyboard__char",{"license-plate-keyboard__char--filled":char!==" ","license-plate-keyboard__char--current":index===__props.modelValue.length,"license-plate-keyboard__char--province":index===0,"license-plate-keyboard__char--new-energy":__props.newEnergy&&index===7}])},(0,vue.toDisplayString)(char===" "?"":char),3);}),128))]),(0,vue.createElementVNode)("div",_hoisted_4,(0,vue.toDisplayString)(positionHint.value),1)]),(0,vue.createCommentVNode)(" 键盘区-由 core 的 KeyboardManager 自动切换布局 "),(0,vue.createVNode)(VirtualKeyboard_default,{type:(0,vue.unref)(keyboard).type.value,"is-upper-case":(0,vue.unref)(keyboard).isUpperCase.value,onKeypress:handleKeyPress},null,8,["type","is-upper-case"])]);};}});LicensePlateKeyboard_vue_vue_type_script_setup_true_lang_default.__file="src/components/LicensePlateKeyboard.vue";var LicensePlateKeyboard_default=LicensePlateKeyboard_vue_vue_type_script_setup_true_lang_default;const KEYBOARD_ATTR="__v_keyboard__";const vKeyboard={mounted(el,binding){const options=parseBinding(binding);if(!options.enabled)return;const handleFocus=()=>{el.blur();options.onOpen?.(el);};el.addEventListener("focus",handleFocus);el.setAttribute("inputmode","none");el[KEYBOARD_ATTR]={cleanup:()=>{el.removeEventListener("focus",handleFocus);el.removeAttribute("inputmode");}};},updated(el,binding){const oldCleanup=el[KEYBOARD_ATTR]?.cleanup;if(oldCleanup)oldCleanup();const options=parseBinding(binding);if(!options.enabled)return;const handleFocus=()=>{el.blur();options.onOpen?.(el);};el.addEventListener("focus",handleFocus);el.setAttribute("inputmode","none");el[KEYBOARD_ATTR]={cleanup:()=>{el.removeEventListener("focus",handleFocus);el.removeAttribute("inputmode");}};},unmounted(el){const data=el[KEYBOARD_ATTR];if(data?.cleanup)data.cleanup();delete el[KEYBOARD_ATTR];}};function parseBinding(binding){const value=binding.value;if(value===false)return{enabled:false};if(value===true||value===void 0)return{enabled:true};if(typeof value==="string")return{enabled:true,type:value};return{enabled:value.enabled!==false,...value};}const KeyboardEnginePlugin={name:"keyboard",version:"0.1.0",async install(context,options){const prefix=options?.prefix??"L";const app=context?.framework?.app;if(app){app.component(`${prefix}Keyboard`,VirtualKeyboard_default);app.component(`${prefix}KeyboardPopup`,KeyboardPopup_default);app.component(`${prefix}LicensePlateKeyboard`,LicensePlateKeyboard_default);app.directive("keyboard",vKeyboard);}if(context?.container?.singleton)context.container.singleton("keyboard",{name:"keyboard",version:"0.1.0"});}};const KeyboardVuePlugin={install(app,options={}){const prefix=options.prefix??"L";app.component(`${prefix}Keyboard`,VirtualKeyboard_default);app.component(`${prefix}KeyboardPopup`,KeyboardPopup_default);app.component(`${prefix}LicensePlateKeyboard`,LicensePlateKeyboard_default);app.directive("keyboard",vKeyboard);}};const KeyboardPlugin=KeyboardVuePlugin;Object.defineProperty(exports,"EMAIL_SUFFIXES",{enumerable:true,get:function(){return _composy_keyboard_core.EMAIL_SUFFIXES;}});Object.defineProperty(exports,"EventEmitter",{enumerable:true,get:function(){return _composy_keyboard_core.EventEmitter;}});exports.KeyboardEnginePlugin=KeyboardEnginePlugin;exports.KeyboardKey=KeyboardKey_default;Object.defineProperty(exports,"KeyboardManager",{enumerable:true,get:function(){return _composy_keyboard_core.KeyboardManager;}});exports.KeyboardPlugin=KeyboardPlugin;exports.KeyboardPopup=KeyboardPopup_default;Object.defineProperty(exports,"KeyboardRenderer",{enumerable:true,get:function(){return _composy_keyboard_core.KeyboardRenderer;}});exports.KeyboardVuePlugin=KeyboardVuePlugin;exports.default=KeyboardVuePlugin;exports.LicensePlateKeyboard=LicensePlateKeyboard_default;Object.defineProperty(exports,"PLATE_LETTERS",{enumerable:true,get:function(){return _composy_keyboard_core.PLATE_LETTERS;}});Object.defineProperty(exports,"PROVINCES",{enumerable:true,get:function(){return _composy_keyboard_core.PROVINCES;}});Object.defineProperty(exports,"PositionManager",{enumerable:true,get:function(){return _composy_keyboard_core.PositionManager;}});exports.VirtualKeyboard=VirtualKeyboard_default;Object.defineProperty(exports,"amountLayout",{enumerable:true,get:function(){return _composy_keyboard_core.amountLayout;}});Object.defineProperty(exports,"amountSimpleLayout",{enumerable:true,get:function(){return _composy_keyboard_core.amountSimpleLayout;}});Object.defineProperty(exports,"applyFormatter",{enumerable:true,get:function(){return _composy_keyboard_core.applyFormatter;}});Object.defineProperty(exports,"applyTheme",{enumerable:true,get:function(){return _composy_keyboard_core.applyTheme;}});Object.defineProperty(exports,"bankcardLayout",{enumerable:true,get:function(){return _composy_keyboard_core.bankcardLayout;}});Object.defineProperty(exports,"createKeyboardManager",{enumerable:true,get:function(){return _composy_keyboard_core.createKeyboardManager;}});Object.defineProperty(exports,"createKeyboardRenderer",{enumerable:true,get:function(){return _composy_keyboard_core.createKeyboardRenderer;}});Object.defineProperty(exports,"createPositionManager",{enumerable:true,get:function(){return _composy_keyboard_core.createPositionManager;}});Object.defineProperty(exports,"createRandomLetterLayout",{enumerable:true,get:function(){return _composy_keyboard_core.createRandomLetterLayout;}});Object.defineProperty(exports,"createRandomMixedLayout",{enumerable:true,get:function(){return _composy_keyboard_core.createRandomMixedLayout;}});Object.defineProperty(exports,"createRandomNumberLayout",{enumerable:true,get:function(){return _composy_keyboard_core.createRandomNumberLayout;}});Object.defineProperty(exports,"createRandomPinLayout",{enumerable:true,get:function(){return _composy_keyboard_core.createRandomPinLayout;}});Object.defineProperty(exports,"createTheme",{enumerable:true,get:function(){return _composy_keyboard_core.createTheme;}});Object.defineProperty(exports,"darkTheme",{enumerable:true,get:function(){return _composy_keyboard_core.darkTheme;}});Object.defineProperty(exports,"defaultTheme",{enumerable:true,get:function(){return _composy_keyboard_core.defaultTheme;}});Object.defineProperty(exports,"deleteCharBeforeCursor",{enumerable:true,get:function(){return _composy_keyboard_core.deleteCharBeforeCursor;}});Object.defineProperty(exports,"emailLayout",{enumerable:true,get:function(){return _composy_keyboard_core.emailLayout;}});Object.defineProperty(exports,"formatAmount",{enumerable:true,get:function(){return _composy_keyboard_core.formatAmount;}});Object.defineProperty(exports,"formatBankCard",{enumerable:true,get:function(){return _composy_keyboard_core.formatBankCard;}});Object.defineProperty(exports,"formatIdCard",{enumerable:true,get:function(){return _composy_keyboard_core.formatIdCard;}});Object.defineProperty(exports,"formatLicensePlate",{enumerable:true,get:function(){return _composy_keyboard_core.formatLicensePlate;}});Object.defineProperty(exports,"formatPhone",{enumerable:true,get:function(){return _composy_keyboard_core.formatPhone;}});Object.defineProperty(exports,"formatVerifyCode",{enumerable:true,get:function(){return _composy_keyboard_core.formatVerifyCode;}});Object.defineProperty(exports,"generateThemeStyle",{enumerable:true,get:function(){return _composy_keyboard_core.generateThemeStyle;}});Object.defineProperty(exports,"getAllThemes",{enumerable:true,get:function(){return _composy_keyboard_core.getAllThemes;}});Object.defineProperty(exports,"getAvailableLayouts",{enumerable:true,get:function(){return _composy_keyboard_core.getAvailableLayouts;}});Object.defineProperty(exports,"getAvailableThemes",{enumerable:true,get:function(){return _composy_keyboard_core.getAvailableThemes;}});Object.defineProperty(exports,"getBoundingRect",{enumerable:true,get:function(){return _composy_keyboard_core.getBoundingRect;}});Object.defineProperty(exports,"getCurrentTheme",{enumerable:true,get:function(){return _composy_keyboard_core.getCurrentTheme;}});Object.defineProperty(exports,"getDeviceType",{enumerable:true,get:function(){return _composy_keyboard_core.getDeviceType;}});Object.defineProperty(exports,"getFormatter",{enumerable:true,get:function(){return _composy_keyboard_core.getFormatter;}});Object.defineProperty(exports,"getLayout",{enumerable:true,get:function(){return _composy_keyboard_core.getLayout;}});Object.defineProperty(exports,"getRandomAlphanumeric",{enumerable:true,get:function(){return _composy_keyboard_core.getRandomAlphanumeric;}});Object.defineProperty(exports,"getRandomLetters",{enumerable:true,get:function(){return _composy_keyboard_core.getRandomLetters;}});Object.defineProperty(exports,"getRandomNumbers",{enumerable:true,get:function(){return _composy_keyboard_core.getRandomNumbers;}});Object.defineProperty(exports,"getTheme",{enumerable:true,get:function(){return _composy_keyboard_core.getTheme;}});Object.defineProperty(exports,"getViewportInfo",{enumerable:true,get:function(){return _composy_keyboard_core.getViewportInfo;}});Object.defineProperty(exports,"hasLayout",{enumerable:true,get:function(){return _composy_keyboard_core.hasLayout;}});Object.defineProperty(exports,"idcardLayout",{enumerable:true,get:function(){return _composy_keyboard_core.idcardLayout;}});Object.defineProperty(exports,"insertTextAtCursor",{enumerable:true,get:function(){return _composy_keyboard_core.insertTextAtCursor;}});Object.defineProperty(exports,"integerLayout",{enumerable:true,get:function(){return _composy_keyboard_core.integerLayout;}});Object.defineProperty(exports,"iosTheme",{enumerable:true,get:function(){return _composy_keyboard_core.iosTheme;}});Object.defineProperty(exports,"isMobile",{enumerable:true,get:function(){return _composy_keyboard_core.isMobile;}});Object.defineProperty(exports,"isTouchDevice",{enumerable:true,get:function(){return _composy_keyboard_core.isTouchDevice;}});Object.defineProperty(exports,"licensePlateAlphanumericLayout",{enumerable:true,get:function(){return _composy_keyboard_core.licensePlateAlphanumericLayout;}});Object.defineProperty(exports,"licensePlateLayout",{enumerable:true,get:function(){return _composy_keyboard_core.licensePlateLayout;}});Object.defineProperty(exports,"licensePlateLetterLayout",{enumerable:true,get:function(){return _composy_keyboard_core.licensePlateLetterLayout;}});Object.defineProperty(exports,"licensePlateProvinceLayout",{enumerable:true,get:function(){return _composy_keyboard_core.licensePlateProvinceLayout;}});Object.defineProperty(exports,"materialTheme",{enumerable:true,get:function(){return _composy_keyboard_core.materialTheme;}});Object.defineProperty(exports,"mergeTheme",{enumerable:true,get:function(){return _composy_keyboard_core.mergeTheme;}});Object.defineProperty(exports,"minimalTheme",{enumerable:true,get:function(){return _composy_keyboard_core.minimalTheme;}});Object.defineProperty(exports,"miuiTheme",{enumerable:true,get:function(){return _composy_keyboard_core.miuiTheme;}});Object.defineProperty(exports,"numberLayout",{enumerable:true,get:function(){return _composy_keyboard_core.numberLayout;}});Object.defineProperty(exports,"onClickOutside",{enumerable:true,get:function(){return _composy_keyboard_core.onClickOutside;}});Object.defineProperty(exports,"onViewportChange",{enumerable:true,get:function(){return _composy_keyboard_core.onViewportChange;}});Object.defineProperty(exports,"phoneLayout",{enumerable:true,get:function(){return _composy_keyboard_core.phoneLayout;}});Object.defineProperty(exports,"phoneSimpleLayout",{enumerable:true,get:function(){return _composy_keyboard_core.phoneSimpleLayout;}});Object.defineProperty(exports,"presetThemes",{enumerable:true,get:function(){return _composy_keyboard_core.presetThemes;}});Object.defineProperty(exports,"punctLayout",{enumerable:true,get:function(){return _composy_keyboard_core.punctLayout;}});Object.defineProperty(exports,"qwertyLayout",{enumerable:true,get:function(){return _composy_keyboard_core.qwertyLayout;}});Object.defineProperty(exports,"refreshRandomLayout",{enumerable:true,get:function(){return _composy_keyboard_core.refreshRandomLayout;}});Object.defineProperty(exports,"registerFormatter",{enumerable:true,get:function(){return _composy_keyboard_core.registerFormatter;}});Object.defineProperty(exports,"registerLayout",{enumerable:true,get:function(){return _composy_keyboard_core.registerLayout;}});Object.defineProperty(exports,"registerLayouts",{enumerable:true,get:function(){return _composy_keyboard_core.registerLayouts;}});Object.defineProperty(exports,"registerTheme",{enumerable:true,get:function(){return _composy_keyboard_core.registerTheme;}});Object.defineProperty(exports,"searchLayout",{enumerable:true,get:function(){return _composy_keyboard_core.searchLayout;}});Object.defineProperty(exports,"setCurrentTheme",{enumerable:true,get:function(){return _composy_keyboard_core.setCurrentTheme;}});Object.defineProperty(exports,"shuffleArray",{enumerable:true,get:function(){return _composy_keyboard_core.shuffleArray;}});Object.defineProperty(exports,"symbolLayout",{enumerable:true,get:function(){return _composy_keyboard_core.symbolLayout;}});Object.defineProperty(exports,"symbolLayout2",{enumerable:true,get:function(){return _composy_keyboard_core.symbolLayout2;}});Object.defineProperty(exports,"themeToCSS",{enumerable:true,get:function(){return _composy_keyboard_core.themeToCSS;}});Object.defineProperty(exports,"unregisterLayout",{enumerable:true,get:function(){return _composy_keyboard_core.unregisterLayout;}});Object.defineProperty(exports,"urlLayout",{enumerable:true,get:function(){return _composy_keyboard_core.urlLayout;}});exports.useKeyboard=useKeyboard;exports.useKeyboardPopup=useKeyboardPopup;exports.vKeyboard=vKeyboard;Object.defineProperty(exports,"verifycodeLayout",{enumerable:true,get:function(){return _composy_keyboard_core.verifycodeLayout;}});Object.defineProperty(exports,"vibrate",{enumerable:true,get:function(){return _composy_keyboard_core.vibrate;}});});
1
+ /*!
2
+ * ***********************************
3
+ * @composy/keyboard-vue v0.0.1 *
4
+ * Built with rollup *
5
+ * Build time: 2024-10-12 17:44:16 *
6
+ * Build mode: production *
7
+ * Minified: No *
8
+ * ***********************************
9
+ */
10
+ (function(e, t) {
11
+ "object" == typeof exports && "undefined" != typeof module ? t(exports, require("vue"), require("@composy/keyboard-core")) : "function" == typeof define && define.amd ? define([
12
+ "exports",
13
+ "vue",
14
+ "@composy/keyboard-core"
15
+ ], t) : t((e = "undefined" != typeof globalThis ? globalThis : e || self).LDesignKeyboardVue = {}, e.Vue, e.ComposyKeyboardCore);
16
+ })(this, function(exports, e, t) {
17
+ Object.defineProperties(exports, {
18
+ __esModule: { value: !0 },
19
+ [Symbol.toStringTag]: { value: "Module" }
20
+ });
21
+ const n = ["disabled"], r = ["innerHTML"], o = {
22
+ key: 1,
23
+ class: "keyboard-key__label"
24
+ }, a = {
25
+ key: 2,
26
+ class: "keyboard-key__label"
27
+ }, u = {
28
+ key: 3,
29
+ class: "keyboard-key__arrow-inline"
30
+ };
31
+ var i = (0, e.defineComponent)({
32
+ __name: "KeyboardKey",
33
+ props: {
34
+ keyDef: {
35
+ type: Object,
36
+ required: !0
37
+ },
38
+ isUpperCase: {
39
+ type: Boolean,
40
+ required: !1
41
+ },
42
+ baseWidth: {
43
+ type: Number,
44
+ required: !1
45
+ },
46
+ useFlex: {
47
+ type: Boolean,
48
+ required: !1
49
+ }
50
+ },
51
+ emits: ["press", "showOptions"],
52
+ setup(i, { emit: l }) {
53
+ const c = i, d = l, s = (0, e.computed)(() => {
54
+ const e = c.keyDef.label;
55
+ return "string" == typeof e ? e : c.isUpperCase ? e.upper : e.lower;
56
+ }), p = (0, e.computed)(() => {
57
+ const e = c.keyDef.icon;
58
+ return e ? (0, t.sanitizeSvgIcon)(e) : "";
59
+ }), y = (0, e.computed)(() => {
60
+ if (c.useFlex) return;
61
+ const e = c.baseWidth ?? 36, t = c.keyDef.width ?? 1;
62
+ return e * t + 6 * (t - 1) + "px";
63
+ }), m = (0, e.computed)(() => {
64
+ if (c.useFlex) return c.keyDef.width ?? 1;
65
+ }), f = (0, e.computed)(() => {
66
+ const e = ["keyboard-key", `keyboard-key--${c.keyDef.type}`];
67
+ return c.keyDef.className && e.push(c.keyDef.className), c.keyDef.disabled && e.push("keyboard-key--disabled"), "shift" === c.keyDef.type && c.isUpperCase && e.push("keyboard-key--active"), e;
68
+ }), b = (0, e.computed)(() => c.keyDef.options && c.keyDef.options.length > 0), g = (0, e.computed)(() => b.value && !c.keyDef.value), v = (e) => {
69
+ e.preventDefault(), e.stopPropagation(), c.keyDef.disabled || (g.value ? d("showOptions", c.keyDef.options ?? []) : d("press", c.keyDef));
70
+ }, h = (e) => {
71
+ e.preventDefault(), e.stopPropagation(), c.keyDef.disabled || b.value && d("showOptions", c.keyDef.options ?? []);
72
+ };
73
+ return (t, l) => ((0, e.openBlock)(), (0, e.createElementBlock)("div", {
74
+ class: "keyboard-key-wrapper",
75
+ style: (0, e.normalizeStyle)({
76
+ width: y.value,
77
+ flex: m.value
78
+ })
79
+ }, [
80
+ (0, e.createElementVNode)("button", {
81
+ class: (0, e.normalizeClass)([f.value, {
82
+ "has-options": b.value && !g.value,
83
+ "is-options-only": g.value
84
+ }]),
85
+ disabled: i.keyDef.disabled,
86
+ type: "button",
87
+ onMousedown: (0, e.withModifiers)(v, ["prevent"]),
88
+ onTouchstart: (0, e.withModifiers)(v, ["prevent"])
89
+ }, [
90
+ (0, e.createCommentVNode)(" SVG 图标支持 "),
91
+ p.value ? ((0, e.openBlock)(), (0, e.createElementBlock)("span", {
92
+ key: 0,
93
+ class: "keyboard-key__icon",
94
+ innerHTML: p.value
95
+ }, null, 8, r)) : i.keyDef.icon ? ((0, e.openBlock)(), (0, e.createElementBlock)("span", o, (0, e.toDisplayString)(i.keyDef.icon), 1)) : ((0, e.openBlock)(), (0, e.createElementBlock)("span", a, (0, e.toDisplayString)(s.value), 1)),
96
+ (0, e.createCommentVNode)(" 纯选项按钮内嵌下拉箭头 "),
97
+ g.value ? ((0, e.openBlock)(), (0, e.createElementBlock)("span", u, "▼")) : (0, e.createCommentVNode)("v-if", !0)
98
+ ], 42, n),
99
+ (0, e.createCommentVNode)(" 有value又有options的按钮:单独可点击的下拉箭头 "),
100
+ b.value && !g.value ? ((0, e.openBlock)(), (0, e.createElementBlock)("span", {
101
+ key: 0,
102
+ class: "keyboard-key__arrow",
103
+ onMousedown: (0, e.withModifiers)(h, ["prevent"]),
104
+ onTouchstart: (0, e.withModifiers)(h, ["prevent"])
105
+ }, "▼", 32)) : (0, e.createCommentVNode)("v-if", !0)
106
+ ], 4));
107
+ }
108
+ });
109
+ i.__file = "src/components/KeyboardKey.vue";
110
+ var l = i;
111
+ function c(n = {}) {
112
+ const { immediate: r = !1, ...o } = n, a = (0, t.createKeyboardManager)(o), u = a.getState(), i = (0, e.ref)(u.visible), l = (0, e.ref)(u.type), c = (0, e.ref)(u.isUpperCase), d = (0, e.ref)(u.value), s = (0, e.ref)(u.cursorPosition), p = (0, e.shallowRef)(a.getLayout()), y = (0, e.reactive)({ ...u });
113
+ return a.on("stateChange", (e) => {
114
+ i.value = e.visible, l.value = e.type, c.value = e.isUpperCase, d.value = e.value, s.value = e.cursorPosition, Object.assign(y, e);
115
+ }), a.on("switch", () => {
116
+ p.value = a.getLayout();
117
+ }), r && a.show(), (0, e.onBeforeUnmount)(() => {
118
+ a.destroy();
119
+ }), {
120
+ visible: i,
121
+ type: l,
122
+ isUpperCase: c,
123
+ value: d,
124
+ cursorPosition: s,
125
+ layout: p,
126
+ state: y,
127
+ show: (e) => a.show(e),
128
+ hide: () => a.hide(),
129
+ toggle: (e) => a.toggle(e),
130
+ switchType: (e) => a.switchType(e),
131
+ toggleShift: () => a.toggleShift(),
132
+ handleKey: (e) => a.handleKey(e),
133
+ getKeyLabel: (e) => a.getKeyLabel(e),
134
+ setValue: (e) => a.setValue(e),
135
+ appendValue: (e) => a.appendValue(e),
136
+ setMaxLength: (e) => a.setMaxLength(e),
137
+ bindInput: (e) => a.bindInput(e),
138
+ unbindInput: () => a.unbindInput(),
139
+ on: (e, t) => a.on(e, t),
140
+ once: (e, t) => a.once(e, t),
141
+ destroy: () => a.destroy()
142
+ };
143
+ }
144
+ function d(n = {}) {
145
+ const { visible: r = (0, e.ref)(!1), target: o = (0, e.ref)(null), popup: a = (0, e.ref)(null), closeOnClickOutside: u = !0, onClose: i, ...l } = n, c = (0, t.createPositionManager)(l), d = (0, e.ref)({}), s = (0, e.ref)({}), p = (0, e.ref)("bottom"), y = (0, e.ref)((0, t.isMobile)()), m = (0, e.ref)(!1), f = (0, e.ref)(!1);
146
+ let b = null, g = null, v = null, h = null, k = 0;
147
+ const P = () => {
148
+ b?.(), b = null, g?.(), g = null, v?.(), v = null;
149
+ }, L = () => {
150
+ null !== h && "undefined" != typeof window && (window.cancelAnimationFrame(h), h = null);
151
+ }, O = () => {
152
+ const e = a.value;
153
+ if (!e) return;
154
+ const t = e.getBoundingClientRect(), n = c.calculate(o.value, {
155
+ width: Math.max(0, t.width),
156
+ height: Math.max(0, t.height)
157
+ });
158
+ p.value = n.placement, m.value = c.shouldShowMask(), "bottom-sheet" === n.placement ? d.value = {
159
+ position: "fixed",
160
+ left: "0",
161
+ right: "0",
162
+ bottom: "0",
163
+ maxHeight: void 0 === n.maxHeight ? void 0 : `${n.maxHeight}px`,
164
+ zIndex: 1e3
165
+ } : d.value = {
166
+ position: "fixed",
167
+ left: `${n.position.x}px`,
168
+ top: `${n.position.y}px`,
169
+ maxHeight: void 0 === n.maxHeight ? void 0 : `${n.maxHeight}px`,
170
+ maxWidth: void 0 === n.maxWidth ? void 0 : `${n.maxWidth}px`,
171
+ zIndex: 1e3
172
+ }, s.value = m.value ? {
173
+ position: "fixed",
174
+ inset: "0",
175
+ backgroundColor: "var(--keyboard-mask-bg)",
176
+ zIndex: 999
177
+ } : {};
178
+ }, w = () => {
179
+ r.value && i?.();
180
+ };
181
+ return (0, e.watch)(r, (e) => {
182
+ k += 1;
183
+ const n = k;
184
+ if (L(), P(), !e) return f.value = !1, m.value = !1, d.value = {}, void (s.value = {});
185
+ if (y.value = (0, t.isMobile)(), f.value = !0, "undefined" != typeof window && (h = window.requestAnimationFrame(() => {
186
+ h = null, r.value && n === k && (O(), f.value = !1, u && a.value && (b = (0, t.onClickOutside)(a.value, (e) => {
187
+ o.value && e.target instanceof Node && o.value.contains(e.target) || w();
188
+ })));
189
+ })), g = (0, t.onViewportChange)(() => {
190
+ r.value && (y.value = (0, t.isMobile)(), O());
191
+ }), !y.value && "undefined" != typeof window) {
192
+ const e = () => {
193
+ r.value && window.requestAnimationFrame(O);
194
+ };
195
+ window.addEventListener("scroll", e, !0), v = () => window.removeEventListener("scroll", e, !0);
196
+ }
197
+ }, { immediate: !0 }), (0, e.watch)(o, () => {
198
+ r.value && O();
199
+ }), (0, e.onBeforeUnmount)(() => {
200
+ k += 1, L(), P();
201
+ }), {
202
+ popupStyles: d,
203
+ maskStyles: s,
204
+ placement: p,
205
+ isMobileDevice: y,
206
+ showMask: m,
207
+ isAnimating: f,
208
+ updatePosition: O,
209
+ close: w
210
+ };
211
+ }
212
+ const s = { class: "virtual-keyboard" }, p = {
213
+ key: 1,
214
+ class: "virtual-keyboard__empty"
215
+ }, y = {
216
+ key: 0,
217
+ class: "keyboard-options-panel"
218
+ }, m = { class: "keyboard-options-panel__header" }, f = { class: "keyboard-options-panel__grid" }, b = ["onMousedown", "onTouchstart"];
219
+ var g = (0, e.defineComponent)({
220
+ __name: "VirtualKeyboard",
221
+ props: {
222
+ type: {
223
+ type: String,
224
+ required: !1,
225
+ default: "qwerty"
226
+ },
227
+ isUpperCase: {
228
+ type: Boolean,
229
+ required: !1,
230
+ default: !1
231
+ },
232
+ layout: {
233
+ type: Object,
234
+ required: !1
235
+ },
236
+ keyWidth: {
237
+ type: Number,
238
+ required: !1,
239
+ default: 36
240
+ }
241
+ },
242
+ emits: ["keypress", "selectOption"],
243
+ setup(n, { emit: r }) {
244
+ const o = n, a = r, u = (0, e.ref)(!1), i = (0, e.ref)([]), c = (0, e.computed)(() => o.layout ? o.layout : (0, t.getLayout)(o.type) ?? null), d = (e) => {
245
+ a("keypress", e);
246
+ }, g = (e) => {
247
+ i.value = e, u.value = !0;
248
+ }, v = (e, t) => {
249
+ t.preventDefault(), t.stopPropagation(), u.value = !1, a("selectOption", e);
250
+ }, h = () => {
251
+ u.value = !1;
252
+ };
253
+ return (t, r) => ((0, e.openBlock)(), (0, e.createElementBlock)("div", s, [
254
+ c.value ? ((0, e.openBlock)(!0), (0, e.createElementBlock)(e.Fragment, { key: 0 }, (0, e.renderList)(c.value.rows, (t, r) => ((0, e.openBlock)(), (0, e.createElementBlock)("div", {
255
+ key: r,
256
+ class: (0, e.normalizeClass)(["virtual-keyboard__row", t.className]),
257
+ style: (0, e.normalizeStyle)({})
258
+ }, [((0, e.openBlock)(!0), (0, e.createElementBlock)(e.Fragment, null, (0, e.renderList)(t.keys, (r) => ((0, e.openBlock)(), (0, e.createBlock)(l, {
259
+ key: r.id,
260
+ "key-def": r,
261
+ "is-upper-case": n.isUpperCase,
262
+ "base-width": n.keyWidth,
263
+ "use-flex": "numpad-row" === t.className,
264
+ onPress: d,
265
+ onShowOptions: g
266
+ }, null, 8, [
267
+ "key-def",
268
+ "is-upper-case",
269
+ "base-width",
270
+ "use-flex"
271
+ ]))), 128))], 6))), 128)) : ((0, e.openBlock)(), (0, e.createElementBlock)("div", p, "键盘布局未找到")),
272
+ (0, e.createCommentVNode)(" 选项面板 "),
273
+ (0, e.createVNode)(e.Transition, { name: "options-panel" }, {
274
+ default: (0, e.withCtx)(() => [u.value ? ((0, e.openBlock)(), (0, e.createElementBlock)("div", y, [(0, e.createElementVNode)("div", m, [r[0] || (r[0] = (0, e.createElementVNode)("span", { class: "keyboard-options-panel__title" }, "选择邮箱后缀", -1)), (0, e.createElementVNode)("button", {
275
+ class: "keyboard-options-panel__close",
276
+ type: "button",
277
+ onClick: h,
278
+ onTouchstart: (0, e.withModifiers)(h, ["prevent"])
279
+ }, " × ", 32)]), (0, e.createElementVNode)("div", f, [((0, e.openBlock)(!0), (0, e.createElementBlock)(e.Fragment, null, (0, e.renderList)(i.value, (t) => ((0, e.openBlock)(), (0, e.createElementBlock)("button", {
280
+ key: t,
281
+ class: "keyboard-options-panel__item",
282
+ type: "button",
283
+ onMousedown: (0, e.withModifiers)((e) => v(t, e), ["prevent"]),
284
+ onTouchstart: (0, e.withModifiers)((e) => v(t, e), ["prevent"])
285
+ }, (0, e.toDisplayString)(t), 41, b))), 128))])])) : (0, e.createCommentVNode)("v-if", !0)]),
286
+ _: 1
287
+ })
288
+ ]));
289
+ }
290
+ });
291
+ g.__file = "src/components/VirtualKeyboard.vue";
292
+ var v = g, h = (0, e.defineComponent)({
293
+ __name: "KeyboardPopup",
294
+ props: {
295
+ modelValue: {
296
+ type: Boolean,
297
+ required: !1,
298
+ default: !1
299
+ },
300
+ type: {
301
+ type: String,
302
+ required: !1,
303
+ default: "qwerty"
304
+ },
305
+ value: {
306
+ type: String,
307
+ required: !1,
308
+ default: ""
309
+ },
310
+ target: {
311
+ type: null,
312
+ required: !1,
313
+ default: null
314
+ },
315
+ maxLength: {
316
+ type: Number,
317
+ required: !1
318
+ },
319
+ closeOnClickOutside: {
320
+ type: Boolean,
321
+ required: !1,
322
+ default: !0
323
+ },
324
+ enableVibrate: {
325
+ type: Boolean,
326
+ required: !1,
327
+ default: !0
328
+ },
329
+ teleportTo: {
330
+ type: null,
331
+ required: !1,
332
+ default: "body"
333
+ }
334
+ },
335
+ emits: [
336
+ "update:modelValue",
337
+ "update:value",
338
+ "confirm",
339
+ "keypress"
340
+ ],
341
+ setup(n, { emit: r }) {
342
+ const o = n, a = r, u = (0, e.ref)(null), i = (0, e.computed)(() => o.target), l = (0, e.ref)((0, t.isMobile)()), s = c({
343
+ type: o.type,
344
+ value: o.value,
345
+ maxLength: o.maxLength ?? (o.type.startsWith("license-plate") ? 7 : void 0),
346
+ enableVibrate: o.enableVibrate
347
+ }), { popupStyles: p, maskStyles: y, placement: m, showMask: f, updatePosition: b, close: g } = d({
348
+ visible: (0, e.computed)(() => o.modelValue),
349
+ target: i,
350
+ popup: u,
351
+ closeOnClickOutside: o.closeOnClickOutside,
352
+ onClose: () => {
353
+ a("update:modelValue", !1);
354
+ }
355
+ });
356
+ (0, e.watch)(() => o.type, (e) => {
357
+ s.switchType(e), e.startsWith("license-plate") && !o.maxLength && s.setMaxLength(7);
358
+ }), (0, e.watch)(() => o.maxLength, (e) => {
359
+ void 0 !== e && s.setMaxLength(e);
360
+ }), (0, e.watch)(() => o.value, (e) => {
361
+ e !== s.value.value && s.setValue(e);
362
+ }), (0, e.watch)(s.value, (e) => {
363
+ a("update:value", e);
364
+ }), (0, e.watch)(() => o.modelValue, (n) => {
365
+ n ? (l.value = (0, t.isMobile)(), o.target && s.bindInput(o.target), s.show(o.target ?? void 0), (0, e.nextTick)(() => {
366
+ b();
367
+ })) : s.hide();
368
+ }, { immediate: !0 }), s.on("confirm", ({ value: e }) => {
369
+ a("confirm", e), a("update:modelValue", !1);
370
+ });
371
+ const h = (e) => {
372
+ s.handleKey(e), a("keypress", e);
373
+ }, k = (e) => {
374
+ let t = e;
375
+ e.startsWith("@") && s.value.value.endsWith("@") && (t = e.slice(1)), s.appendValue(t);
376
+ }, P = () => {
377
+ o.closeOnClickOutside && g();
378
+ }, L = (0, e.computed)(() => [
379
+ "keyboard-popup",
380
+ `keyboard-popup--${m.value}`,
381
+ {
382
+ "keyboard-popup--mobile": l.value,
383
+ "keyboard-popup--desktop": !l.value
384
+ }
385
+ ]);
386
+ return (t, r) => ((0, e.openBlock)(), (0, e.createBlock)(e.Teleport, { to: n.teleportTo }, [(0, e.createVNode)(e.Transition, { name: "keyboard-mask" }, {
387
+ default: (0, e.withCtx)(() => [n.modelValue && (0, e.unref)(f) ? ((0, e.openBlock)(), (0, e.createElementBlock)("div", {
388
+ key: 0,
389
+ class: "keyboard-mask",
390
+ style: (0, e.normalizeStyle)((0, e.unref)(y)),
391
+ onClick: P
392
+ }, null, 4)) : (0, e.createCommentVNode)("v-if", !0)]),
393
+ _: 1
394
+ }), (0, e.createVNode)(e.Transition, { name: l.value ? "keyboard-slide" : "keyboard-fade" }, {
395
+ default: (0, e.withCtx)(() => [n.modelValue ? ((0, e.openBlock)(), (0, e.createElementBlock)("div", {
396
+ key: 0,
397
+ ref_key: "popupRef",
398
+ ref: u,
399
+ class: (0, e.normalizeClass)(L.value),
400
+ style: (0, e.normalizeStyle)((0, e.unref)(p)),
401
+ onMousedown: r[0] || (r[0] = (0, e.withModifiers)(() => {}, ["prevent"])),
402
+ onTouchstart: r[1] || (r[1] = (0, e.withModifiers)(() => {}, ["prevent"]))
403
+ }, [(0, e.createVNode)(v, {
404
+ type: (0, e.unref)(s).type.value,
405
+ "is-upper-case": (0, e.unref)(s).isUpperCase.value,
406
+ onKeypress: h,
407
+ onSelectOption: k
408
+ }, null, 8, ["type", "is-upper-case"])], 38)) : (0, e.createCommentVNode)("v-if", !0)]),
409
+ _: 1
410
+ }, 8, ["name"])], 8, ["to"]));
411
+ }
412
+ });
413
+ h.__file = "src/components/KeyboardPopup.vue";
414
+ var k = h;
415
+ const P = { class: "license-plate-keyboard" }, L = { class: "license-plate-keyboard__display" }, O = { class: "license-plate-keyboard__value" }, w = { class: "license-plate-keyboard__hint" };
416
+ var j = (0, e.defineComponent)({
417
+ __name: "LicensePlateKeyboard",
418
+ props: {
419
+ modelValue: {
420
+ type: String,
421
+ required: !1,
422
+ default: ""
423
+ },
424
+ newEnergy: {
425
+ type: Boolean,
426
+ required: !1,
427
+ default: !1
428
+ }
429
+ },
430
+ emits: ["update:modelValue", "done"],
431
+ setup(t, { emit: n }) {
432
+ const r = t, o = n, a = (0, e.computed)(() => r.newEnergy ? 8 : 7), u = c({
433
+ type: "license-plate-province",
434
+ value: r.modelValue,
435
+ maxLength: a.value,
436
+ enableVibrate: !0
437
+ });
438
+ (0, e.watch)(() => r.modelValue, (e) => {
439
+ e !== u.value.value && u.setValue(e);
440
+ }), (0, e.watch)(u.value, (e) => {
441
+ o("update:modelValue", e);
442
+ }), (0, e.watch)(a, (e) => {
443
+ if (u.setMaxLength(e), r.modelValue.length > e) {
444
+ const t = r.modelValue.slice(0, e);
445
+ u.setValue(t), o("update:modelValue", t);
446
+ }
447
+ }), u.on("confirm", ({ value: e }) => {
448
+ o("done", e);
449
+ });
450
+ const i = (e) => {
451
+ u.handleKey(e);
452
+ }, l = (0, e.computed)(() => {
453
+ const e = r.modelValue.length;
454
+ return 0 === e ? "请选择省份" : 1 === e ? "请输入字母" : e < a.value ? `第${e + 1}位` : "已完成";
455
+ });
456
+ return (n, r) => ((0, e.openBlock)(), (0, e.createElementBlock)("div", P, [
457
+ (0, e.createCommentVNode)(" 输入显示区 "),
458
+ (0, e.createElementVNode)("div", L, [(0, e.createElementVNode)("div", O, [((0, e.openBlock)(!0), (0, e.createElementBlock)(e.Fragment, null, (0, e.renderList)(t.modelValue.padEnd(a.value, " ").split(""), (n, r) => ((0, e.openBlock)(), (0, e.createElementBlock)("span", {
459
+ key: r,
460
+ class: (0, e.normalizeClass)(["license-plate-keyboard__char", {
461
+ "license-plate-keyboard__char--filled": " " !== n,
462
+ "license-plate-keyboard__char--current": r === t.modelValue.length,
463
+ "license-plate-keyboard__char--province": 0 === r,
464
+ "license-plate-keyboard__char--new-energy": t.newEnergy && 7 === r
465
+ }])
466
+ }, (0, e.toDisplayString)(" " === n ? "" : n), 3))), 128))]), (0, e.createElementVNode)("div", w, (0, e.toDisplayString)(l.value), 1)]),
467
+ (0, e.createCommentVNode)(" 键盘区 - 由 core 的 KeyboardManager 自动切换布局 "),
468
+ (0, e.createVNode)(v, {
469
+ type: (0, e.unref)(u).type.value,
470
+ "is-upper-case": (0, e.unref)(u).isUpperCase.value,
471
+ onKeypress: i
472
+ }, null, 8, ["type", "is-upper-case"])
473
+ ]));
474
+ }
475
+ });
476
+ j.__file = "src/components/LicensePlateKeyboard.vue";
477
+ var C = j;
478
+ const V = /* @__PURE__ */ new WeakMap(), T = {
479
+ mounted(e, t) {
480
+ const n = _(t);
481
+ if (!n.enabled) return;
482
+ const r = () => {
483
+ e.blur(), n.onOpen?.(e);
484
+ };
485
+ e.addEventListener("focus", r), e.setAttribute("inputmode", "none"), V.set(e, { cleanup: () => {
486
+ e.removeEventListener("focus", r), e.removeAttribute("inputmode");
487
+ } });
488
+ },
489
+ updated(e, t) {
490
+ V.get(e)?.cleanup(), V.delete(e);
491
+ const n = _(t);
492
+ if (!n.enabled) return;
493
+ const r = () => {
494
+ e.blur(), n.onOpen?.(e);
495
+ };
496
+ e.addEventListener("focus", r), e.setAttribute("inputmode", "none"), V.set(e, { cleanup: () => {
497
+ e.removeEventListener("focus", r), e.removeAttribute("inputmode");
498
+ } });
499
+ },
500
+ unmounted(e) {
501
+ V.get(e)?.cleanup(), V.delete(e);
502
+ }
503
+ };
504
+ function _(e) {
505
+ const t = e.value;
506
+ return !1 === t ? { enabled: !1 } : !0 === t || void 0 === t ? { enabled: !0 } : "string" == typeof t ? {
507
+ enabled: !0,
508
+ type: t
509
+ } : {
510
+ enabled: !1 !== t.enabled,
511
+ ...t
512
+ };
513
+ }
514
+ function B(e) {
515
+ return "object" == typeof e && null !== e;
516
+ }
517
+ function x(e) {
518
+ return B(e) && "function" == typeof e.component && "function" == typeof e.directive;
519
+ }
520
+ const E = {
521
+ name: "keyboard",
522
+ version: "0.1.0",
523
+ async install(e, t) {
524
+ const n = t?.prefix ?? "L", r = function(e) {
525
+ if (!B(e)) return {};
526
+ const t = B(e.framework) ? e.framework : void 0, n = B(e.container) ? e.container : void 0;
527
+ return {
528
+ framework: x(t?.app) ? { app: t.app } : void 0,
529
+ container: "function" == typeof n?.singleton ? { singleton: n.singleton } : void 0
530
+ };
531
+ }(e), o = r.framework?.app;
532
+ o && (o.component(`${n}Keyboard`, v), o.component(`${n}KeyboardPopup`, k), o.component(`${n}LicensePlateKeyboard`, C), o.directive("keyboard", T)), r.container?.singleton && r.container.singleton("keyboard", {
533
+ name: "keyboard",
534
+ version: "0.1.0"
535
+ });
536
+ }
537
+ }, M = { install(e, t = {}) {
538
+ const n = t.prefix ?? "L";
539
+ e.component(`${n}Keyboard`, v), e.component(`${n}KeyboardPopup`, k), e.component(`${n}LicensePlateKeyboard`, C), e.directive("keyboard", T);
540
+ } }, K = M;
541
+ Object.defineProperty(exports, "EMAIL_SUFFIXES", {
542
+ enumerable: !0,
543
+ get: function() {
544
+ return t.EMAIL_SUFFIXES;
545
+ }
546
+ }), Object.defineProperty(exports, "EventEmitter", {
547
+ enumerable: !0,
548
+ get: function() {
549
+ return t.EventEmitter;
550
+ }
551
+ }), exports.KeyboardEnginePlugin = E, exports.KeyboardKey = l, Object.defineProperty(exports, "KeyboardManager", {
552
+ enumerable: !0,
553
+ get: function() {
554
+ return t.KeyboardManager;
555
+ }
556
+ }), exports.KeyboardPlugin = K, exports.KeyboardPopup = k, Object.defineProperty(exports, "KeyboardRenderer", {
557
+ enumerable: !0,
558
+ get: function() {
559
+ return t.KeyboardRenderer;
560
+ }
561
+ }), exports.KeyboardVuePlugin = M, exports.default = M, exports.LicensePlateKeyboard = C, Object.defineProperty(exports, "PLATE_LETTERS", {
562
+ enumerable: !0,
563
+ get: function() {
564
+ return t.PLATE_LETTERS;
565
+ }
566
+ }), Object.defineProperty(exports, "PROVINCES", {
567
+ enumerable: !0,
568
+ get: function() {
569
+ return t.PROVINCES;
570
+ }
571
+ }), Object.defineProperty(exports, "PositionManager", {
572
+ enumerable: !0,
573
+ get: function() {
574
+ return t.PositionManager;
575
+ }
576
+ }), exports.VirtualKeyboard = v, Object.defineProperty(exports, "amountLayout", {
577
+ enumerable: !0,
578
+ get: function() {
579
+ return t.amountLayout;
580
+ }
581
+ }), Object.defineProperty(exports, "amountSimpleLayout", {
582
+ enumerable: !0,
583
+ get: function() {
584
+ return t.amountSimpleLayout;
585
+ }
586
+ }), Object.defineProperty(exports, "applyFormatter", {
587
+ enumerable: !0,
588
+ get: function() {
589
+ return t.applyFormatter;
590
+ }
591
+ }), Object.defineProperty(exports, "applyTheme", {
592
+ enumerable: !0,
593
+ get: function() {
594
+ return t.applyTheme;
595
+ }
596
+ }), Object.defineProperty(exports, "bankcardLayout", {
597
+ enumerable: !0,
598
+ get: function() {
599
+ return t.bankcardLayout;
600
+ }
601
+ }), Object.defineProperty(exports, "createKeyboardManager", {
602
+ enumerable: !0,
603
+ get: function() {
604
+ return t.createKeyboardManager;
605
+ }
606
+ }), Object.defineProperty(exports, "createKeyboardRenderer", {
607
+ enumerable: !0,
608
+ get: function() {
609
+ return t.createKeyboardRenderer;
610
+ }
611
+ }), Object.defineProperty(exports, "createPositionManager", {
612
+ enumerable: !0,
613
+ get: function() {
614
+ return t.createPositionManager;
615
+ }
616
+ }), Object.defineProperty(exports, "createRandomLetterLayout", {
617
+ enumerable: !0,
618
+ get: function() {
619
+ return t.createRandomLetterLayout;
620
+ }
621
+ }), Object.defineProperty(exports, "createRandomMixedLayout", {
622
+ enumerable: !0,
623
+ get: function() {
624
+ return t.createRandomMixedLayout;
625
+ }
626
+ }), Object.defineProperty(exports, "createRandomNumberLayout", {
627
+ enumerable: !0,
628
+ get: function() {
629
+ return t.createRandomNumberLayout;
630
+ }
631
+ }), Object.defineProperty(exports, "createRandomPinLayout", {
632
+ enumerable: !0,
633
+ get: function() {
634
+ return t.createRandomPinLayout;
635
+ }
636
+ }), Object.defineProperty(exports, "createTheme", {
637
+ enumerable: !0,
638
+ get: function() {
639
+ return t.createTheme;
640
+ }
641
+ }), Object.defineProperty(exports, "darkTheme", {
642
+ enumerable: !0,
643
+ get: function() {
644
+ return t.darkTheme;
645
+ }
646
+ }), Object.defineProperty(exports, "defaultTheme", {
647
+ enumerable: !0,
648
+ get: function() {
649
+ return t.defaultTheme;
650
+ }
651
+ }), Object.defineProperty(exports, "deleteCharBeforeCursor", {
652
+ enumerable: !0,
653
+ get: function() {
654
+ return t.deleteCharBeforeCursor;
655
+ }
656
+ }), Object.defineProperty(exports, "emailLayout", {
657
+ enumerable: !0,
658
+ get: function() {
659
+ return t.emailLayout;
660
+ }
661
+ }), Object.defineProperty(exports, "formatAmount", {
662
+ enumerable: !0,
663
+ get: function() {
664
+ return t.formatAmount;
665
+ }
666
+ }), Object.defineProperty(exports, "formatBankCard", {
667
+ enumerable: !0,
668
+ get: function() {
669
+ return t.formatBankCard;
670
+ }
671
+ }), Object.defineProperty(exports, "formatIdCard", {
672
+ enumerable: !0,
673
+ get: function() {
674
+ return t.formatIdCard;
675
+ }
676
+ }), Object.defineProperty(exports, "formatLicensePlate", {
677
+ enumerable: !0,
678
+ get: function() {
679
+ return t.formatLicensePlate;
680
+ }
681
+ }), Object.defineProperty(exports, "formatPhone", {
682
+ enumerable: !0,
683
+ get: function() {
684
+ return t.formatPhone;
685
+ }
686
+ }), Object.defineProperty(exports, "formatVerifyCode", {
687
+ enumerable: !0,
688
+ get: function() {
689
+ return t.formatVerifyCode;
690
+ }
691
+ }), Object.defineProperty(exports, "generateThemeStyle", {
692
+ enumerable: !0,
693
+ get: function() {
694
+ return t.generateThemeStyle;
695
+ }
696
+ }), Object.defineProperty(exports, "getAllThemes", {
697
+ enumerable: !0,
698
+ get: function() {
699
+ return t.getAllThemes;
700
+ }
701
+ }), Object.defineProperty(exports, "getAvailableLayouts", {
702
+ enumerable: !0,
703
+ get: function() {
704
+ return t.getAvailableLayouts;
705
+ }
706
+ }), Object.defineProperty(exports, "getAvailableThemes", {
707
+ enumerable: !0,
708
+ get: function() {
709
+ return t.getAvailableThemes;
710
+ }
711
+ }), Object.defineProperty(exports, "getBoundingRect", {
712
+ enumerable: !0,
713
+ get: function() {
714
+ return t.getBoundingRect;
715
+ }
716
+ }), Object.defineProperty(exports, "getCurrentTheme", {
717
+ enumerable: !0,
718
+ get: function() {
719
+ return t.getCurrentTheme;
720
+ }
721
+ }), Object.defineProperty(exports, "getDeviceType", {
722
+ enumerable: !0,
723
+ get: function() {
724
+ return t.getDeviceType;
725
+ }
726
+ }), Object.defineProperty(exports, "getFormatter", {
727
+ enumerable: !0,
728
+ get: function() {
729
+ return t.getFormatter;
730
+ }
731
+ }), Object.defineProperty(exports, "getLayout", {
732
+ enumerable: !0,
733
+ get: function() {
734
+ return t.getLayout;
735
+ }
736
+ }), Object.defineProperty(exports, "getRandomAlphanumeric", {
737
+ enumerable: !0,
738
+ get: function() {
739
+ return t.getRandomAlphanumeric;
740
+ }
741
+ }), Object.defineProperty(exports, "getRandomLetters", {
742
+ enumerable: !0,
743
+ get: function() {
744
+ return t.getRandomLetters;
745
+ }
746
+ }), Object.defineProperty(exports, "getRandomNumbers", {
747
+ enumerable: !0,
748
+ get: function() {
749
+ return t.getRandomNumbers;
750
+ }
751
+ }), Object.defineProperty(exports, "getTheme", {
752
+ enumerable: !0,
753
+ get: function() {
754
+ return t.getTheme;
755
+ }
756
+ }), Object.defineProperty(exports, "getViewportInfo", {
757
+ enumerable: !0,
758
+ get: function() {
759
+ return t.getViewportInfo;
760
+ }
761
+ }), Object.defineProperty(exports, "hasLayout", {
762
+ enumerable: !0,
763
+ get: function() {
764
+ return t.hasLayout;
765
+ }
766
+ }), Object.defineProperty(exports, "idcardLayout", {
767
+ enumerable: !0,
768
+ get: function() {
769
+ return t.idcardLayout;
770
+ }
771
+ }), Object.defineProperty(exports, "insertTextAtCursor", {
772
+ enumerable: !0,
773
+ get: function() {
774
+ return t.insertTextAtCursor;
775
+ }
776
+ }), Object.defineProperty(exports, "integerLayout", {
777
+ enumerable: !0,
778
+ get: function() {
779
+ return t.integerLayout;
780
+ }
781
+ }), Object.defineProperty(exports, "iosTheme", {
782
+ enumerable: !0,
783
+ get: function() {
784
+ return t.iosTheme;
785
+ }
786
+ }), Object.defineProperty(exports, "isMobile", {
787
+ enumerable: !0,
788
+ get: function() {
789
+ return t.isMobile;
790
+ }
791
+ }), Object.defineProperty(exports, "isTouchDevice", {
792
+ enumerable: !0,
793
+ get: function() {
794
+ return t.isTouchDevice;
795
+ }
796
+ }), Object.defineProperty(exports, "licensePlateAlphanumericLayout", {
797
+ enumerable: !0,
798
+ get: function() {
799
+ return t.licensePlateAlphanumericLayout;
800
+ }
801
+ }), Object.defineProperty(exports, "licensePlateLayout", {
802
+ enumerable: !0,
803
+ get: function() {
804
+ return t.licensePlateLayout;
805
+ }
806
+ }), Object.defineProperty(exports, "licensePlateLetterLayout", {
807
+ enumerable: !0,
808
+ get: function() {
809
+ return t.licensePlateLetterLayout;
810
+ }
811
+ }), Object.defineProperty(exports, "licensePlateProvinceLayout", {
812
+ enumerable: !0,
813
+ get: function() {
814
+ return t.licensePlateProvinceLayout;
815
+ }
816
+ }), Object.defineProperty(exports, "materialTheme", {
817
+ enumerable: !0,
818
+ get: function() {
819
+ return t.materialTheme;
820
+ }
821
+ }), Object.defineProperty(exports, "mergeTheme", {
822
+ enumerable: !0,
823
+ get: function() {
824
+ return t.mergeTheme;
825
+ }
826
+ }), Object.defineProperty(exports, "minimalTheme", {
827
+ enumerable: !0,
828
+ get: function() {
829
+ return t.minimalTheme;
830
+ }
831
+ }), Object.defineProperty(exports, "miuiTheme", {
832
+ enumerable: !0,
833
+ get: function() {
834
+ return t.miuiTheme;
835
+ }
836
+ }), Object.defineProperty(exports, "numberLayout", {
837
+ enumerable: !0,
838
+ get: function() {
839
+ return t.numberLayout;
840
+ }
841
+ }), Object.defineProperty(exports, "onClickOutside", {
842
+ enumerable: !0,
843
+ get: function() {
844
+ return t.onClickOutside;
845
+ }
846
+ }), Object.defineProperty(exports, "onViewportChange", {
847
+ enumerable: !0,
848
+ get: function() {
849
+ return t.onViewportChange;
850
+ }
851
+ }), Object.defineProperty(exports, "phoneLayout", {
852
+ enumerable: !0,
853
+ get: function() {
854
+ return t.phoneLayout;
855
+ }
856
+ }), Object.defineProperty(exports, "phoneSimpleLayout", {
857
+ enumerable: !0,
858
+ get: function() {
859
+ return t.phoneSimpleLayout;
860
+ }
861
+ }), Object.defineProperty(exports, "presetThemes", {
862
+ enumerable: !0,
863
+ get: function() {
864
+ return t.presetThemes;
865
+ }
866
+ }), Object.defineProperty(exports, "punctLayout", {
867
+ enumerable: !0,
868
+ get: function() {
869
+ return t.punctLayout;
870
+ }
871
+ }), Object.defineProperty(exports, "qwertyLayout", {
872
+ enumerable: !0,
873
+ get: function() {
874
+ return t.qwertyLayout;
875
+ }
876
+ }), Object.defineProperty(exports, "refreshRandomLayout", {
877
+ enumerable: !0,
878
+ get: function() {
879
+ return t.refreshRandomLayout;
880
+ }
881
+ }), Object.defineProperty(exports, "registerFormatter", {
882
+ enumerable: !0,
883
+ get: function() {
884
+ return t.registerFormatter;
885
+ }
886
+ }), Object.defineProperty(exports, "registerLayout", {
887
+ enumerable: !0,
888
+ get: function() {
889
+ return t.registerLayout;
890
+ }
891
+ }), Object.defineProperty(exports, "registerLayouts", {
892
+ enumerable: !0,
893
+ get: function() {
894
+ return t.registerLayouts;
895
+ }
896
+ }), Object.defineProperty(exports, "registerTheme", {
897
+ enumerable: !0,
898
+ get: function() {
899
+ return t.registerTheme;
900
+ }
901
+ }), Object.defineProperty(exports, "searchLayout", {
902
+ enumerable: !0,
903
+ get: function() {
904
+ return t.searchLayout;
905
+ }
906
+ }), Object.defineProperty(exports, "setCurrentTheme", {
907
+ enumerable: !0,
908
+ get: function() {
909
+ return t.setCurrentTheme;
910
+ }
911
+ }), Object.defineProperty(exports, "shuffleArray", {
912
+ enumerable: !0,
913
+ get: function() {
914
+ return t.shuffleArray;
915
+ }
916
+ }), Object.defineProperty(exports, "symbolLayout", {
917
+ enumerable: !0,
918
+ get: function() {
919
+ return t.symbolLayout;
920
+ }
921
+ }), Object.defineProperty(exports, "symbolLayout2", {
922
+ enumerable: !0,
923
+ get: function() {
924
+ return t.symbolLayout2;
925
+ }
926
+ }), Object.defineProperty(exports, "themeToCSS", {
927
+ enumerable: !0,
928
+ get: function() {
929
+ return t.themeToCSS;
930
+ }
931
+ }), Object.defineProperty(exports, "unregisterLayout", {
932
+ enumerable: !0,
933
+ get: function() {
934
+ return t.unregisterLayout;
935
+ }
936
+ }), Object.defineProperty(exports, "urlLayout", {
937
+ enumerable: !0,
938
+ get: function() {
939
+ return t.urlLayout;
940
+ }
941
+ }), exports.useKeyboard = c, exports.useKeyboardPopup = d, exports.vKeyboard = T, Object.defineProperty(exports, "verifycodeLayout", {
942
+ enumerable: !0,
943
+ get: function() {
944
+ return t.verifycodeLayout;
945
+ }
946
+ }), Object.defineProperty(exports, "vibrate", {
947
+ enumerable: !0,
948
+ get: function() {
949
+ return t.vibrate;
950
+ }
951
+ });
952
+ });
953
+ /*! End of @composy/keyboard-vue | Powered by @composy/builder */
954
+ //# sourceMappingURL=index.min.js.map