123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- import CustomPage from '../../../base/CustomPage'
- import {compareVersion} from '../../../../util/util'
- CustomPage({
- onShareAppMessage() {
- return {
- title: 'emoji',
- path: 'packageExtend/pages/extend/emoji/emoji'
- }
- },
- data: {
- lineHeight: 24,
- functionShow: false,
- emojiShow: false,
- comment: '',
- focus: false,
- cursor: 0,
- _keyboardShow: false,
- emojiSource: 'https://res.wx.qq.com/op_res/eROMsLpnNC10dC40vzF8qviz63ic7ATlbGg20lr5pYykOwHRbLZFUhgg23RtVorX',
- // parsedComment: []
- historyList: [],
- layoutHeight: '0px',
- safeHeight: 0,
- keyboardHeight: 0,
- isIOS: false,
- canIUse: true,
- },
- onLoad() {
- const system = wx.getSystemInfoSync()
- const isIOS = system.platform === 'ios'
- this.safeHeight = (system.screenHeight - system.safeArea.bottom)
- const layoutHeight = wx.getSystemInfoSync().windowHeight - (this.safeHeight / 2)
- this.setData({
- isIOS,
- safeHeight: this.safeHeight,
- layoutHeight,
- })
- const emojiInstance = this.selectComponent('.mp-emoji')
- this.emojiNames = emojiInstance.getEmojiNames()
- this.parseEmoji = emojiInstance.parseEmoji
- },
- onReady() {
- // 解决基础库小于 2.9.2 的兼容问题
- const {SDKVersion} = wx.getSystemInfoSync()
- if (compareVersion(SDKVersion, '2.9.1') < 0) {
- this.setData({
- canIUse: false,
- })
- }
- },
- onkeyboardHeightChange(e) {
- const {height} = e.detail
- if (height === 0) {
- this.data._keyboardShow = false
- this.setData({
- safeHeight: this.safeHeight,
- keyboardHeight: height
- })
- } else {
- this.data._keyboardShow = true
- this.setData({
- safeHeight: 0,
- functionShow: false,
- emojiShow: false,
- keyboardHeight: height
- })
- }
- },
- hideAllPanel() {
- this.setData({
- functionShow: false,
- emojiShow: false
- })
- },
- showEmoji() {
- this.setData({
- functionShow: false,
- emojiShow: this.data._keyboardShow || !this.data.emojiShow
- })
- },
- showFunction() {
- this.setData({
- functionShow: this.data._keyboardShow || !this.data.functionShow,
- emojiShow: false
- })
- },
- chooseImage() {},
- onFocus() {
- this.data._keyboardShow = true
- this.hideAllPanel()
- },
- onBlur(e) {
- this.data._keyboardShow = false
- this.data.cursor = e.detail.cursor || 0
- },
- onInput(e) {
- const value = e.detail.value
- this.data.comment = value
- },
- onConfirm() {
- this.onsend()
- },
- insertEmoji(evt) {
- const emotionName = evt.detail.emotionName
- const {cursor, comment} = this.data
- const newComment =
- comment.slice(0, cursor) + emotionName + comment.slice(cursor)
- this.setData({
- comment: newComment,
- cursor: cursor + emotionName.length
- })
- },
- onsend() {
- // const comment = this.data.comment
- const parsedComment = {
- emoji: this.parseEmoji(this.data.comment),
- id: `emoji_${this.data.historyList.length}`
- }
- this.setData({
- historyList: [...this.data.historyList, parsedComment],
- comment: '',
- emojiShow: false,
- })
- },
- deleteEmoji() {
- const pos = this.data.cursor
- const comment = this.data.comment
- let result = ''
- let cursor = 0
- let emojiLen = 6
- let startPos = pos - emojiLen
- if (startPos < 0) {
- startPos = 0
- emojiLen = pos
- }
- const str = comment.slice(startPos, pos)
- const matchs = str.match(/\[([\u4e00-\u9fa5\w]+)\]$/g)
- // 删除表情
- if (matchs) {
- const rawName = matchs[0]
- const left = emojiLen - rawName.length
- if (this.emojiNames.indexOf(rawName) >= 0) {
- const replace = str.replace(rawName, '')
- result = comment.slice(0, startPos) + replace + comment.slice(pos)
- cursor = startPos + left
- }
- // 删除字符
- } else {
- let endPos = pos - 1
- if (endPos < 0) endPos = 0
- const prefix = comment.slice(0, endPos)
- const suffix = comment.slice(pos)
- result = prefix + suffix
- cursor = endPos
- }
- this.setData({
- comment: result,
- cursor
- })
- }
- })
|