@opentiny/tiny-engine-setting-events 2.6.2-alpha.0 → 2.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -149,7 +149,7 @@ function vn(f, o, a, e, r, _) {
149
149
  t("div", fn, [
150
150
  u(c, { onClick: e.closeDialog }, {
151
151
  default: E(() => o[0] || (o[0] = [
152
- J("取 消")
152
+ J("取 消", -1)
153
153
  ])),
154
154
  _: 1,
155
155
  __: [0]
@@ -159,7 +159,7 @@ function vn(f, o, a, e, r, _) {
159
159
  onClick: e.confirm
160
160
  }, {
161
161
  default: E(() => o[1] || (o[1] = [
162
- J("确 定")
162
+ J("确 定", -1)
163
163
  ])),
164
164
  _: 1,
165
165
  __: [1]
@@ -418,7 +418,7 @@ const gn = /* @__PURE__ */ H(mn, [["render", vn], ["__scopeId", "data-v-070f73c9
418
418
  t("div", yn, [
419
419
  u(D(ee), { onClick: m }, {
420
420
  default: E(() => n[2] || (n[2] = [
421
- J(" 取消")
421
+ J(" 取消", -1)
422
422
  ])),
423
423
  _: 1,
424
424
  __: [2]
@@ -428,7 +428,7 @@ const gn = /* @__PURE__ */ H(mn, [["render", vn], ["__scopeId", "data-v-070f73c9
428
428
  onClick: s
429
429
  }, {
430
430
  default: E(() => n[3] || (n[3] = [
431
- J(" 确定")
431
+ J(" 确定", -1)
432
432
  ])),
433
433
  _: 1,
434
434
  __: [3]
@@ -1047,7 +1047,7 @@ function po(f, o, a, e, r, _) {
1047
1047
  name: "tiny-checkbox"
1048
1048
  }, {
1049
1049
  default: E(() => o[3] || (o[3] = [
1050
- J("扩展参数设置")
1050
+ J("扩展参数设置", -1)
1051
1051
  ])),
1052
1052
  _: 1,
1053
1053
  __: [3]
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../meta.js","../src/components/BindEventsDialog.vue","../src/commonjs/events.ts","../src/components/AddEventsDialog.vue","../src/components/BindEvents.vue","../src/components/AdvanceConfig.vue","../src/Main.vue","../src/components/constants.ts","../src/components/BindEventsDialogContent.vue","../src/components/BindEventsDialogSidebar.vue","../index.ts"],"sourcesContent":["export default {\n id: 'engine.setting.event',\n title: '高级',\n type: 'setting',\n align: 'rightTop',\n name: 'event',\n icon: 'target'\n}\n","<template>\n <tiny-dialog-box\n :visible=\"dialogVisible\"\n title=\"事件绑定\"\n width=\"50%\"\n dialog-class=\"bind-event-dialog\"\n draggable\n :append-to-body=\"true\"\n @close=\"closeDialog\"\n @opened=\"openedDialog\"\n >\n <div class=\"bind-event-dialog-tip\">\n <tiny-alert\n type=\"info\"\n description=\"选择已有方法或者添加新方法(点击 确定 之后将在JS面板中创建一个该名称的新方法)。\"\n class=\"header-alert\"\n :closable=\"false\"\n ></tiny-alert>\n </div>\n <div class=\"bind-event-dialog-content\">\n <component :is=\"BindEventsDialogSidebar\" :dialogVisible=\"dialogVisible\" :eventBinding=\"eventBinding\"></component>\n <component :is=\"BindEventsDialogContent\" :dialogVisible=\"dialogVisible\"></component>\n </div>\n <template #footer>\n <div class=\"bind-dialog-footer\">\n <tiny-button @click=\"closeDialog\">取 消</tiny-button>\n <tiny-button type=\"info\" @click=\"confirm\">确 定</tiny-button>\n </div>\n </template>\n </tiny-dialog-box>\n</template>\n\n<script>\nimport { ast2String, string2Ast } from '@opentiny/tiny-engine-common/js/ast'\nimport {\n getMergeMeta,\n useCanvas,\n useHistory,\n useLayout,\n getOptions,\n getMetaApi,\n META_APP\n} from '@opentiny/tiny-engine-meta-register'\nimport { Button, DialogBox, TinyAlert } from '@opentiny/vue'\nimport { nextTick, provide, reactive, ref } from 'vue'\nimport meta from '../../meta'\n\nconst dialogVisible = ref(false)\n\nexport const open = () => {\n dialogVisible.value = true\n}\n\nexport const close = () => {\n dialogVisible.value = false\n}\n\nexport default {\n components: {\n TinyButton: Button,\n TinyDialogBox: DialogBox,\n TinyAlert\n },\n inheritAttrs: false,\n props: {\n eventBinding: {\n type: Object,\n default: () => ({})\n }\n },\n setup(props) {\n const { BindEventsDialogSidebar, BindEventsDialogContent } = getMergeMeta(meta.id).components\n\n const { PLUGIN_NAME, activePlugin } = useLayout()\n const { pageState } = useCanvas()\n const { getMethods, saveMethod, highlightMethod } = getMetaApi(META_APP.Page)\n\n const state = reactive({\n editorContent: '',\n bindMethodInfo: {},\n tip: '',\n tipError: false,\n enableExtraParams: false,\n isValidParams: true\n })\n\n provide('context', state)\n\n const selectMethod = (data) => {\n state.bindMethodInfo = data\n }\n\n const bindMethod = (data) => {\n if (!data) {\n return\n }\n\n const eventName = props.eventBinding?.eventName\n\n if (!eventName) {\n return\n }\n\n const nodeProps = pageState?.currentSchema?.props\n\n if (!nodeProps) {\n return\n }\n\n const { name, extra } = data\n\n if (!props[eventName]) {\n nodeProps[eventName] = {\n type: 'JSExpression',\n value: ''\n }\n }\n\n if (extra && state.enableExtraParams) {\n nodeProps[eventName].params = extra\n }\n\n nodeProps[eventName].value = `this.${name}`\n\n useHistory().addHistory()\n }\n\n const resetTipError = () => {\n state.tipError = false\n state.tip = ''\n state.isValidParams = true\n }\n\n const getExtraParams = () => {\n let extraParams = ''\n if (state.enableExtraParams) {\n try {\n extraParams = JSON.parse(state.editorContent)\n state.isValidParams = Array.isArray(extraParams)\n } catch (error) {\n state.isValidParams = false\n }\n }\n return extraParams\n }\n\n const getFormatParams = (extraParams) => Array.from({ length: extraParams.length }, (v, i) => `args${i}`).join(',')\n\n const getFunctionBody = () => {\n let method = getMethods()?.[state.bindMethodInfo.name]?.value\n let preBody = '{}'\n let isAsync = false\n let isGenerator = false\n\n if (method) {\n let astStr = {}\n try {\n astStr = string2Ast(method)\n } catch (e) {\n method = method.replace('function', `function ${state.bindMethodInfo.name}`)\n astStr = string2Ast(method)\n }\n\n if (astStr?.program?.body[0]?.body) {\n preBody = ast2String(astStr.program.body[0].body)\n }\n\n if (astStr?.program?.body[0]?.async) {\n isAsync = true\n }\n\n if (astStr?.program?.body[0]?.generator) {\n isGenerator = true\n }\n }\n\n return {\n preBody: preBody || '{\\n}',\n isAsync,\n isGenerator\n }\n }\n\n const activePagePlugin = () => {\n activePlugin(PLUGIN_NAME.Page).then(() => {\n // 确认js面板渲染完成之后再对目标函数进行高亮处理\n nextTick(() => {\n if (highlightMethod) {\n highlightMethod(state.bindMethodInfo?.name)\n }\n })\n })\n }\n\n const confirm = async () => {\n if (state.tipError) {\n return\n }\n\n let params = 'event'\n const extraParams = getExtraParams()\n let formatParams = params\n\n if (!state.isValidParams) {\n return\n }\n\n if (extraParams) {\n params = extraParams.join(',')\n formatParams = getFormatParams(extraParams)\n }\n\n bindMethod({ ...state.bindMethodInfo, params, extra: extraParams })\n\n // 需要在bindMethod之后\n const { preBody: functionBody, isAsync, isGenerator } = getFunctionBody()\n const { name } = state.bindMethodInfo\n const functionName = `${isAsync ? 'async' : ''} function${isGenerator ? '*' : ''} ${name}`\n const method = {\n name,\n content: state.enableExtraParams\n ? `${functionName}(eventArgs,${formatParams}) ${functionBody}`\n : `${functionName}(${formatParams}) ${functionBody}`\n }\n const { beforeSaveMethod } = getOptions(meta.id)\n\n if (typeof beforeSaveMethod === 'function') {\n await beforeSaveMethod(method, state.bindMethodInfo)\n }\n\n saveMethod?.(method)\n\n activePagePlugin()\n close()\n }\n\n const openedDialog = () => {\n state.enableExtraParams = Boolean(props.eventBinding?.params?.length)\n state.editorContent = JSON.stringify(props.eventBinding?.params || [], null, 2)\n resetTipError()\n }\n\n const closeDialog = () => {\n resetTipError()\n close()\n }\n\n return {\n BindEventsDialogSidebar,\n BindEventsDialogContent,\n state,\n dialogVisible,\n confirm,\n closeDialog,\n openedDialog,\n selectMethod\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.bind-event-dialog {\n z-index: 99;\n :deep(.tiny-dialog-box) {\n min-width: 760px;\n }\n}\n\n.bind-event-dialog-tip {\n .tiny-alert.tiny-alert--normal {\n margin: 12px 0;\n }\n}\n\n.bind-event-dialog-content {\n display: flex;\n min-width: 700px;\n}\n</style>\n","/**\n * Copyright (c) 2023 - present TinyEngine Authors.\n * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd.\n *\n * Use of this source code is governed by an MIT-style license.\n *\n * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,\n * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR\n * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.\n *\n */\n\nexport const commonEvents = {\n onClick: {\n label: {\n zh_CN: '点击事件'\n },\n description: {\n zh_CN: '鼠标单击时触发的回调函数'\n },\n type: 'event',\n functionInfo: {\n params: [],\n returns: {}\n },\n defaultValue: ''\n },\n onChange: {\n label: {\n zh_CN: '值被改变时触发'\n },\n description: {\n zh_CN: '当用户更改 <input>、<select> 和 <textarea> 元素的值时,被触发的回调函数,'\n },\n type: 'event',\n functionInfo: {\n params: [],\n returns: {}\n },\n defaultValue: ''\n },\n onFocus: {\n label: {\n zh_CN: '元素获得焦点'\n },\n description: {\n zh_CN: '元素获得焦点时触发的回调函数'\n },\n type: 'event',\n functionInfo: {\n params: [],\n returns: {}\n },\n defaultValue: ''\n },\n onMousemove: {\n label: {\n zh_CN: '鼠标移动时触发'\n },\n description: {\n zh_CN: '鼠标移动时触发的回调函数'\n },\n type: 'event',\n functionInfo: {\n params: [],\n returns: {}\n },\n defaultValue: ''\n }\n}\n\nconst allEvents = [\n 'onabort',\n 'onafterprint',\n 'onanimationend',\n 'onanimationiteration',\n 'onanimationstart',\n 'onappinstalled',\n 'onauxclick',\n 'onbeforeinstallprompt',\n 'onbeforeprint',\n 'onbeforeunload',\n 'onbeforexrselect',\n 'onblur',\n 'oncancel',\n 'oncanplay',\n 'oncanplaythrough',\n 'onchange',\n 'onclick',\n 'onclose',\n 'oncontextlost',\n 'oncontextmenu',\n 'oncontextrestored',\n 'oncuechange',\n 'ondblclick',\n 'ondrag',\n 'ondragend',\n 'ondragenter',\n 'ondragleave',\n 'ondragover',\n 'ondragstart',\n 'ondrop',\n 'ondurationchange',\n 'onemptied',\n 'onended',\n 'onerror',\n 'onfocus',\n 'onformdata',\n 'ongotpointercapture',\n 'onhashchange',\n 'oninput',\n 'oninvalid',\n 'onkeydown',\n 'onkeypress',\n 'onkeyup',\n 'onlanguagechange',\n 'onload',\n 'onloadeddata',\n 'onloadedmetadata',\n 'onloadstart',\n 'onlostpointercapture',\n 'onmessage',\n 'onmessageerror',\n 'onmousedown',\n 'onmouseenter',\n 'onmouseleave',\n 'onmousemove',\n 'onmouseout',\n 'onmouseover',\n 'onmouseup',\n 'onmousewheel',\n 'onoffline',\n 'ononline',\n 'onpagehide',\n 'onpageshow',\n 'onpause',\n 'onplay',\n 'onplaying',\n 'onpointercancel',\n 'onpointerdown',\n 'onpointerenter',\n 'onpointerleave',\n 'onpointermove',\n 'onpointerout',\n 'onpointerover',\n 'onpointerrawupdate',\n 'onpointerup',\n 'onpopstate',\n 'onprogress',\n 'onratechange',\n 'onrejectionhandled',\n 'onreset',\n 'onresize',\n 'onscroll',\n 'onsearch',\n 'onsecuritypolicyviolation',\n 'onseeked',\n 'onseeking',\n 'onselect',\n 'onselectionchange',\n 'onselectstart',\n 'onslotchange',\n 'onstalled',\n 'onstorage',\n 'onsubmit',\n 'onsuspend',\n 'ontimeupdate',\n 'ontoggle',\n 'ontransitioncancel',\n 'ontransitionend',\n 'ontransitionrun',\n 'ontransitionstart',\n 'onunhandledrejection',\n 'onunload',\n 'onvolumechange',\n 'onwaiting',\n 'onwebkitanimationend',\n 'onwebkitanimationiteration',\n 'onwebkitanimationstart',\n 'onwebkittransitionend',\n 'onwheel'\n]\n\nexport const checkEvent = (event: string) => {\n const checkEventList = allEvents.map((e) => {\n const three = e[2].toUpperCase()\n return `${e.substring(0, 2)}${three}${e.substring(3)}`\n })\n if (!checkEventList.includes(event)) {\n return false\n }\n return true\n}\n","<template>\n <tiny-dialog-box\n :visible=\"visible\"\n title=\"添加新事件\"\n width=\"400px\"\n :append-to-body=\"true\"\n :close-on-click-modal=\"false\"\n @close=\"closeDialog\"\n >\n <tiny-form\n ref=\"ruleForm\"\n :model=\"formData\"\n :rules=\"rules\"\n label-width=\"80px\"\n :inline-message=\"true\"\n validate-type=\"text\"\n label-position=\"left\"\n class=\"add-custom-event-form\"\n >\n <tiny-form-item label=\"事件函数名\" prop=\"eventName\" required>\n <tiny-input v-model=\"formData.eventName\" placeholder=\"小驼峰格式,如:onDrag\"></tiny-input>\n </tiny-form-item>\n <tiny-form-item label=\"事件描述\" prop=\"eventDescription\" required>\n <tiny-input v-model=\"formData.eventDescription\"></tiny-input>\n </tiny-form-item>\n </tiny-form>\n <template #footer>\n <div class=\"footer\">\n <tiny-button @click=\"closeDialog\"> 取消</tiny-button>\n <tiny-button type=\"primary\" @click=\"addMethod\"> 确定</tiny-button>\n </div>\n </template>\n </tiny-dialog-box>\n</template>\n\n<script setup>\nimport { reactive, ref, defineProps, defineEmits } from 'vue'\nimport {\n Input as TinyInput,\n Form as TinyForm,\n FormItem as TinyFormItem,\n Button as TinyButton,\n DialogBox as TinyDialogBox\n} from '@opentiny/vue'\nimport { checkEvent } from '../commonjs/events'\n\nconst props = defineProps({\n visible: {\n type: Boolean,\n default: false\n },\n componentEvents: {\n type: Object,\n default: () => ({})\n }\n})\n\nconst emits = defineEmits(['closeDialog', 'addEvent'])\n\nconst formData = reactive({\n eventDescription: '',\n eventName: ''\n})\n\nconst ruleForm = ref(null)\n\nconst eventNameValidator = (rule, value, callback) => {\n if (props.componentEvents[formData.eventName]) {\n callback(new Error('事件名已存在'))\n\n return\n }\n\n if (!checkEvent(formData.eventName)) {\n callback(new Error('请输入正确的浏览器事件名'))\n\n return\n }\n\n callback()\n}\n\nconst rules = {\n eventDescription: [\n {\n required: true,\n message: '必填'\n }\n ],\n eventName: [\n { required: true, message: '必填' },\n {\n validator: eventNameValidator\n }\n ]\n}\n\nconst closeDialog = () => {\n emits('closeDialog')\n}\n\nconst addMethod = () => {\n if (!ruleForm.value) {\n return\n }\n\n ruleForm.value.validate((valid) => {\n if (!valid) {\n return\n }\n\n const { eventName, eventDescription } = formData\n\n emits('addEvent', { eventName, eventDescription })\n })\n}\n</script>\n\n<style lang=\"less\" scoped>\n.add-custom-event-form.add-custom-event-form {\n :deep(.tiny-form-item__label) {\n padding-left: 0;\n }\n}\n.footer {\n display: flex;\n justify-content: flex-end;\n}\n</style>\n","<template>\n <div class=\"bind-action-list\">\n <div class=\"popover-head\">\n <tiny-popover\n popperClass=\"option-popper setting-advanced-bind-event-list\"\n placement=\"bottom-start\"\n trigger=\"hover\"\n class=\"bind-action-button-item\"\n width=\"256\"\n :visible-arrow=\"false\"\n >\n <template #reference>\n <tiny-button class=\"bind-event-btn\">\n <span>绑定事件</span>\n <icon-chevron-down class=\"icon-chevron-down bind-event-btn-icon\"></icon-chevron-down>\n </tiny-button>\n </template>\n <ul class=\"bind-event-list\">\n <li\n v-for=\"(event, name) in renderEventList\"\n :key=\"name\"\n :class=\"['bind-event-list-item', { 'bind-event-list-item-notallow': state.bindActions[name] }]\"\n @click=\"openActionDialog({ eventName: name }, true)\"\n >\n <div>{{ name }}&nbsp; | &nbsp;{{ event?.label?.[locale] || name }}</div>\n </li>\n </ul>\n </tiny-popover>\n <tiny-button\n class=\"title add-custom-event-button bind-action-button-item\"\n @click=\"handleToggleAddEventDialog(true)\"\n >\n <svg-icon name=\"add\" class=\"custom-event-button-icon\"></svg-icon>\n <span class=\"custom-event-button-text\">添加新事件</span>\n </tiny-button>\n </div>\n <ul v-show=\"!isEmpty\" class=\"bind-actions\">\n <li v-for=\"action in state.bindActions\" :key=\"action.eventName\">\n <div class=\"action-item bind-action-item\">\n <div class=\"binding-name\" @click=\"openActionDialog(action)\">\n <div>\n {{ action.eventName }}<span>{{ renderEventList[action.eventName]?.label?.[locale] }}</span>\n </div>\n <div :class=\"{ linked: action.linked }\">{{ action.linkedEventName }}</div>\n <span class=\"event-bind\">{{ action.ref }}</span>\n </div>\n <div class=\"action-buttons\">\n <block-link-event v-if=\"isBlock\" :data=\"action\"></block-link-event>\n <svg-button\n name=\"plugin-icon-page-schema\"\n tips=\"定位到代码\"\n placement=\"top\"\n :hoverBgColor=\"false\"\n @click=\"openCodePanel(action)\"\n ></svg-button>\n <svg-button name=\"setting\" :hoverBgColor=\"false\" @click=\"openActionDialog(action, false)\"></svg-button>\n <svg-button name=\"delete\" :hoverBgColor=\"false\" @click=\"delEvent(action)\"></svg-button>\n </div>\n </div>\n </li>\n </ul>\n <div v-show=\"isEmpty\" class=\"empty-action\">\n <div class=\"icon\">\n <svg-icon name=\"empty-action\" class=\"empty-action-icon\"></svg-icon>\n </div>\n <div class=\"center\">支持添加原生DOM事件,然后点击 绑定事件 为画布所选元素增加事件</div>\n </div>\n </div>\n <bind-events-dialog :eventBinding=\"state.eventBinding\"></bind-events-dialog>\n <add-events-dialog\n :visible=\"state.showBindEventDialog\"\n :componentEvents=\"renderEventList\"\n @closeDialog=\"handleToggleAddEventDialog(false)\"\n @addEvent=\"handleAddEvent\"\n ></add-events-dialog>\n</template>\n\n<script>\nimport { computed, reactive, watchEffect } from 'vue'\nimport { Popover, Button } from '@opentiny/vue'\nimport {\n useModal,\n getMergeMeta,\n useCanvas,\n useLayout,\n useBlock,\n useMaterial,\n getMetaApi,\n META_APP,\n useMessage\n} from '@opentiny/tiny-engine-meta-register'\nimport i18n from '@opentiny/tiny-engine-common/js/i18n'\nimport { BlockLinkEvent, SvgButton } from '@opentiny/tiny-engine-common'\nimport { iconChevronDown } from '@opentiny/vue-icon'\nimport BindEventsDialog, { open as openDialog } from './BindEventsDialog.vue'\nimport AddEventsDialog from './AddEventsDialog.vue'\n\nexport default {\n components: {\n BlockLinkEvent,\n BindEventsDialog,\n TinyPopover: Popover,\n TinyButton: Button,\n IconChevronDown: iconChevronDown(),\n SvgButton,\n AddEventsDialog\n },\n inheritAttrs: false,\n setup() {\n const { PLUGIN_NAME, activePlugin } = useLayout()\n const { pageState } = useCanvas()\n const { getBlockEvents, getCurrentBlock, removeEventLink } = useBlock()\n const { getMaterial } = useMaterial()\n const { confirm } = useModal()\n const locale = i18n.global.locale.value\n const { highlightMethod } = getMetaApi(META_APP.Page)\n const { commonEvents = {} } = getMergeMeta('engine.setting.event').options\n\n const state = reactive({\n eventName: '', // 事件名称\n eventBinding: null, // 事件绑定的处理方法对象\n componentEvent: {},\n customEvents: commonEvents,\n bindActions: {},\n showBindEventDialog: false\n })\n\n const isBlock = computed(() => Boolean(pageState.isBlock))\n const isEmpty = computed(() => Object.keys(state.bindActions).length === 0)\n const renderEventList = computed(() => ({ ...state.componentEvent, ...state.customEvents }))\n\n watchEffect(() => {\n const componentName = pageState?.currentSchema?.componentName\n const componentSchema = getMaterial(componentName)\n state.componentEvent = componentSchema?.content?.schema?.events || componentSchema?.schema?.events || {}\n const props = pageState?.currentSchema?.props || {}\n const keys = Object.keys(props)\n state.bindActions = {}\n // 遍历组件事件元数据\n Object.entries(renderEventList.value).forEach(([eventName, componentEvent]) => {\n // 查找组件已添加的事件\n if (keys.indexOf(eventName) > -1) {\n const event = props[eventName]\n const { value, params } = event\n const eventArgs = (!params && value.match(/\\((.+)\\)$/)?.[1]?.split(',')) || params\n const action = {\n eventName,\n ref: '',\n event: props[eventName],\n params: eventArgs\n }\n\n if (action.event.type === 'JSExpression') {\n action.ref = action.event.value.replace('this.', '').replace(/\\(.*\\)$/, '')\n }\n\n if (pageState.isBlock) {\n // 区块编辑态时设置选中组件的事件元数据\n action.metaEvent = componentEvent\n\n const blockEvents = getBlockEvents(getCurrentBlock())\n const componentId = pageState?.currentSchema?.id\n\n if (componentId && blockEvents) {\n Object.entries(blockEvents).forEach(([name, event]) => {\n if (componentId === event?.linked?.id && eventName === event?.linked?.event) {\n action.linked = event.linked\n action.linkedEventName = name\n }\n })\n }\n }\n\n state.bindActions[eventName] = action\n }\n })\n })\n\n const openActionDialog = (action, isAdd) => {\n if (isAdd && state.bindActions[action.eventName]) {\n return\n }\n\n state.eventBinding = action\n\n openDialog()\n }\n\n const deleteAction = (action) => {\n const keys = Object.keys(pageState?.currentSchema?.props || {})\n\n if (keys.indexOf(action.eventName) > -1) {\n delete pageState.currentSchema.props[action.eventName]\n\n useMessage().publish({ topic: 'schemaChange', data: { props: pageState.currentSchema.props } })\n }\n }\n\n const delEvent = (action) => {\n confirm({\n title: '提示',\n message: `您确定要删除事件 ${action.eventName} 吗?`,\n exec() {\n if (pageState.isBlock) {\n removeEventLink({ linked: action.linked })\n }\n\n deleteAction(action)\n }\n })\n }\n\n const openCodePanel = (action) => {\n if (action) {\n activePlugin(PLUGIN_NAME.Page).then(() => {\n if (highlightMethod) {\n highlightMethod(action.ref)\n }\n })\n }\n }\n\n const handleToggleAddEventDialog = (visible) => {\n state.showBindEventDialog = visible\n }\n\n const handleAddEvent = (params) => {\n const { eventName, eventDescription } = params\n\n Object.assign(state.customEvents, {\n [eventName]: {\n label: {\n zh_CN: eventDescription\n },\n description: {\n zh_CN: `${eventDescription}的回调函数`\n },\n type: 'event',\n functionInfo: {\n params: [],\n returns: {}\n },\n defaultValue: ''\n }\n })\n\n state.showBindEventDialog = false\n }\n\n return {\n state,\n isBlock,\n isEmpty,\n delEvent,\n openCodePanel,\n openActionDialog,\n handleAddEvent,\n handleToggleAddEventDialog,\n renderEventList,\n locale\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.custom-event {\n padding: 10px 20px 10px 10px;\n footer {\n text-align: center;\n }\n}\n.bind-action-list {\n .bind-actions {\n margin-top: 20px;\n .binding-name {\n word-break: break-all;\n }\n .action-buttons {\n display: flex;\n align-items: center;\n justify-content: center;\n .item {\n margin-right: 10px;\n }\n }\n .event-bind {\n color: var(--te-events-event-bind-text-color);\n }\n .bind-action-item {\n display: flex;\n justify-content: space-between;\n padding: 8px 12px;\n cursor: pointer;\n color: var(--te-events-bind-action-item-text-color);\n border-bottom: 1px solid var(--te-events-bind-action-item-border-color);\n &:first-child {\n border-top: 1px solid var(--te-events-bind-action-item-border-color);\n }\n &:hover {\n background: var(--te-events-bind-action-item-bg-color-hover);\n }\n\n .linked {\n color: var(--te-events-bind-action-item-text-color-link);\n }\n }\n }\n .popover-head {\n display: flex;\n justify-content: space-between;\n margin-top: 12px;\n .bind-action-button-item {\n width: 50%;\n &:not(:last-child) {\n margin-right: 12px;\n }\n }\n .add-custom-event-button {\n margin-right: 0;\n }\n .bind-event-btn {\n padding: 0 16px;\n width: 100%;\n .bind-event-btn-icon {\n margin-right: 0;\n margin-left: 4px;\n }\n }\n }\n .empty-action {\n display: flex;\n flex-direction: column;\n align-items: center;\n background-color: var(--te-events-empty-action-bg-color);\n color: var(--te-events-empty-action-text-color);\n padding: 24px 18px;\n margin-top: var(--te-common-vertical-item-spacing-normal);\n .empty-action-icon {\n font-size: 48px;\n }\n .icon {\n text-align: center;\n opacity: 0.4;\n }\n .center {\n margin-top: 4px;\n }\n .text {\n margin-top: 12px;\n }\n }\n}\n.bind-event-list {\n color: var(--te-events-bind-event-list-text-color);\n}\n.bind-event-list-item-notallow {\n cursor: not-allowed;\n pointer-events: none;\n color: var(--te-events-bind-event-list-item-text-color-disabled);\n}\n.bind-event-list-item {\n padding: 0 16px;\n margin: 0 -16px;\n line-height: 24px;\n &:hover {\n cursor: pointer;\n background: var(--te-events-bind-event-list-item-bg-color-hover);\n }\n}\n</style>\n","<template>\n <div class=\"advanced-config-container\">\n <div class=\"advnce-config\">\n <label class=\"text-ellipsis-multiple\">是否渲染</label>\n <div class=\"advanced-config-form-item\">\n <switch-configurator v-if=\"!isBind\" :modelValue=\"condition\" @update:modelValue=\"setConfig\">\n </switch-configurator>\n <div v-else class=\"binding-state text-ellipsis-multiple\" :title=\"condition.value\">\n 已绑定:{{ condition.value }}\n </div>\n <variable-configurator\n v-model=\"condition\"\n name=\"advance\"\n @update:modelValue=\"setConfig\"\n ></variable-configurator>\n </div>\n </div>\n\n <div class=\"advnce-config loop-data-item\">\n <label class=\"text-ellipsis-multiple\">循环数据</label>\n <div class=\"advanced-config-form-item\">\n <code-configurator\n v-if=\"!state.isLoop\"\n v-model=\"state.loopData\"\n data-type=\"JSExpression\"\n @update:modelValue=\"setLoop\"\n @open=\"openEditor\"\n ></code-configurator>\n <div v-else class=\"binding-state text-ellipsis-multiple\" :title=\"state.loopData?.value\">\n 已绑定:{{ state.loopData?.value }}\n </div>\n <variable-configurator\n v-model=\"state.loopData\"\n name=\"advance\"\n @update:modelValue=\"setLoop\"\n ></variable-configurator>\n </div>\n </div>\n <div class=\"advnce-config\">\n <label class=\"text-ellipsis-multiple\">迭代变量名</label>\n <div class=\"advanced-config-form-item\">\n <input-configurator\n v-model=\"state.loopItem\"\n :placeholder=\"`默认值为:${DEFAULT_LOOP_NAME.ITEM}`\"\n @update:modelValue=\"setLoopItem\"\n ></input-configurator>\n </div>\n </div>\n <div class=\"advnce-config\">\n <label class=\"text-ellipsis-multiple\">索引变量名</label>\n <div class=\"advanced-config-form-item\">\n <input-configurator\n v-model=\"state.loopIndex\"\n :placeholder=\"`默认值为:${DEFAULT_LOOP_NAME.INDEX}`\"\n @update:modelValue=\"setLoopIndex\"\n ></input-configurator>\n </div>\n </div>\n <div class=\"advnce-config\">\n <label class=\"text-ellipsis-multiple\">key</label>\n <div class=\"advanced-config-form-item\">\n <tiny-tooltip content=\"建议填写循环项中的唯一值(如item.id),如果填写为数字将不保存\" effect=\"light\">\n <input-configurator\n v-model=\"state.loopKey\"\n :placeholder=\"`默认为索引名:${getIndexName()}`\"\n @update:modelValue=\"setLoopKey\"\n ></input-configurator>\n </tiny-tooltip>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { ref, computed, reactive, watch } from 'vue'\nimport {\n CodeConfigurator,\n InputConfigurator,\n SwitchConfigurator,\n VariableConfigurator\n} from '@opentiny/tiny-engine-configurator'\nimport { useProperties, useCanvas } from '@opentiny/tiny-engine-meta-register'\nimport { PROP_DATA_TYPE } from '@opentiny/tiny-engine-common/js/constants'\nimport { constants, utils } from '@opentiny/tiny-engine-utils'\nimport { Tooltip } from '@opentiny/vue'\n\nconst { DEFAULT_LOOP_NAME } = constants\nconst { string2Obj } = utils\n\nexport default {\n components: {\n SwitchConfigurator,\n TinyTooltip: Tooltip,\n VariableConfigurator,\n InputConfigurator,\n CodeConfigurator\n },\n inheritAttrs: false,\n setup() {\n const { pageState } = useCanvas()\n const condition = ref(false)\n const isBind = computed(() => condition.value?.type === PROP_DATA_TYPE.JSEXPRESSION)\n const getIndexName = () => useProperties().getSchema()?.loopArgs?.[1] || DEFAULT_LOOP_NAME.INDEX\n\n const state = reactive({\n loopData: {\n type: PROP_DATA_TYPE.JSEXPRESSION,\n value: '[]'\n },\n loopItem: 'item',\n loopIndex: 'index',\n isLoop: computed(() => state.loopData?.type === PROP_DATA_TYPE.JSEXPRESSION),\n loopKey: '',\n shouldUpdate: false\n })\n\n watch(\n () => [pageState?.currentSchema, state.shouldUpdate],\n ([value]) => {\n condition.value = value?.condition === undefined ? true : value?.condition\n state.loopData = value?.loop\n state.loopItem = value?.loopArgs?.[0] || ''\n state.loopIndex = value?.loopArgs?.[1] || ''\n state.loopKey = value?.props?.key?.value || ''\n }\n )\n\n const setLoopKey = (value = '') => {\n value = value.replace(/\\s*/g, '')\n const { getSchema, setProp } = useProperties()\n const schema = getSchema()\n\n if (!schema) {\n return\n }\n\n const isNumber = Number(value).toString() !== 'NaN'\n let newPropsKey = schema.props?.key\n\n if (value && !isNumber) {\n newPropsKey = {\n type: PROP_DATA_TYPE.JSEXPRESSION,\n value\n }\n }\n\n if (!value) {\n if (state.isLoop) {\n newPropsKey = {\n type: PROP_DATA_TYPE.JSEXPRESSION,\n value: getIndexName()\n }\n } else {\n newPropsKey = ''\n }\n }\n\n setProp('key', newPropsKey)\n }\n\n watch([() => state.isLoop, () => state.loopIndex], () => {\n if (!state.loopKey && state.isLoop) {\n setLoopKey(getIndexName())\n }\n\n if (!state.isLoop) {\n setLoopKey('')\n }\n })\n\n const openEditor = () => {\n state.loopData = useProperties().getSchema()?.loop\n }\n\n const setConfig = (value) => {\n const { getSchema } = useProperties()\n const schema = getSchema()\n\n if (!schema) {\n return\n }\n\n const { operateNode } = useCanvas()\n\n if (value === false || value?.type) {\n operateNode({ type: 'updateAttributes', id: schema.id, value: { condition: value } })\n } else {\n const { condition: _schemaCondition, children, ...rest } = schema\n operateNode({ type: 'updateAttributes', id: schema.id, value: { ...rest }, overwrite: true })\n }\n\n useCanvas().canvasApi.value.updateRect()\n condition.value = value\n }\n\n const setLoopIndex = (value) => {\n const schema = useProperties().getSchema()\n let loopArgs = schema.loopArgs\n const { operateNode } = useCanvas()\n\n if (loopArgs) {\n loopArgs[1] = value || DEFAULT_LOOP_NAME.INDEX\n } else {\n loopArgs = [DEFAULT_LOOP_NAME.ITEM, value]\n }\n\n operateNode({ type: 'updateAttributes', id: schema.id, value: { loopArgs } })\n }\n\n const setLoop = (value) => {\n const { operateNode } = useCanvas()\n const { getSchema } = useProperties()\n const schema = getSchema()\n\n if (value) {\n const newLoop = value?.type ? value : string2Obj(value)\n\n operateNode({ type: 'updateAttributes', id: schema.id, value: { loop: newLoop } })\n setLoopIndex(DEFAULT_LOOP_NAME.INDEX)\n } else {\n setLoopKey()\n const { loop: _loop, loopArgs: _loopArgs, children: _children, ...rest } = schema\n\n operateNode({ type: 'updateAttributes', id: schema.id, value: rest, overwrite: true })\n }\n\n // 触发更新state\n state.shouldUpdate = !state.shouldUpdate\n }\n\n const setLoopItem = (value) => {\n const schema = useProperties().getSchema()\n let loopArgs = schema.loopArgs\n const { operateNode } = useCanvas()\n\n if (loopArgs) {\n loopArgs[0] = value || DEFAULT_LOOP_NAME.ITEM\n } else {\n loopArgs = [value, DEFAULT_LOOP_NAME.INDEX]\n }\n\n operateNode({ type: 'updateAttributes', id: schema.id, value: { loopArgs } })\n }\n\n return {\n condition,\n setConfig,\n isBind,\n state,\n setLoop,\n setLoopItem,\n DEFAULT_LOOP_NAME,\n openEditor,\n setLoopIndex,\n setLoopKey,\n getIndexName\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.advanced-config-container {\n .advnce-config {\n &:not(:last-child) {\n margin-bottom: var(--te-common-vertical-item-spacing-normal);\n }\n align-items: center;\n display: flex;\n column-gap: 12px;\n color: var(--te-events-advanced-config-text-color);\n\n label {\n width: 80px;\n word-break: keep-all;\n color: var(--te-events-advanced-label-text-color);\n flex-shrink: 0;\n }\n\n .advanced-config-form-item {\n display: grid;\n grid-template-columns: 1fr auto;\n flex: 1;\n }\n .binding-state {\n box-sizing: border-box;\n background: var(--te-events-advanced-binding-state-bg-color);\n color: var(--te-events-advanced-binding-state-text-color);\n border: 1px solid var(--te-events-advanced-binding-state-border-color);\n font-size: 12px;\n height: 24px;\n line-height: 14px;\n padding: 4px 8px;\n --ellipsis-line: 1;\n border-radius: var(--te-base-border-radius-1);\n }\n\n .advance-config-loop-wrap {\n .advance-item {\n width: 100%;\n }\n }\n }\n .loop-data-item {\n display: block;\n label {\n margin-bottom: 5px;\n }\n }\n}\n</style>\n","<template>\n <plugin-panel\n title=\"高级\"\n :fixed-panels=\"fixedPanels\"\n :fixed-name=\"PLUGIN_NAME.Event\"\n :header-margin-bottom=\"0\"\n @close=\"$emit('close')\"\n >\n <template #content>\n <tiny-collapse v-model=\"activeNames\">\n <tiny-collapse-item title=\"事件绑定\" name=\"bindEvent\">\n <bind-events></bind-events>\n </tiny-collapse-item>\n <tiny-collapse-item title=\"高级配置\" name=\"advancedConfig\">\n <advance-config></advance-config>\n </tiny-collapse-item>\n </tiny-collapse>\n </template>\n </plugin-panel>\n</template>\n\n<script setup>\nimport { ref, reactive, provide, defineProps, defineEmits } from 'vue'\nimport { Collapse as TinyCollapse, CollapseItem as TinyCollapseItem } from '@opentiny/vue'\nimport BindEvents from './components/BindEvents.vue'\nimport AdvanceConfig from './components/AdvanceConfig.vue'\nimport { PluginPanel } from '@opentiny/tiny-engine-common'\nimport { useLayout } from '@opentiny/tiny-engine-meta-register'\n\nconst activeNames = ref(['bindEvent', 'advancedConfig'])\nconst { PLUGIN_NAME } = useLayout()\n\ndefineProps({\n fixedPanels: Array\n})\n\nconst emit = defineEmits([])\n\nconst panelState = reactive({\n emitEvent: emit\n})\n\nprovide('panelState', panelState)\n</script>\n","export const NEW_METHOD_TYPE = 'newMethod'\nexport const INVALID_VARNAME_CHAR_RE = /[^0-9a-zA-Z_$]/\nexport const VALID_VARNAME_RE = /^[a-zA-Z_$][0-9a-zA-Z_$]*$/\n\nexport const METHOD_TIPS_MAP = {\n default: '选择已有方法或者添加新方法(点击 确定 之后将在JS面板中创建一个该名称的新方法)',\n exist: '方法名称已存在',\n ruleInvalid: '请输入有效的方法名,可以由字母、数字、下划线、$ 符号组成,不能以数字开头',\n empty: '方法名称不能为空'\n}\n","<template>\n <div class=\"content-right\">\n <div :class=\"['content-right-top', { 'tip-error': context.tipError }]\">\n <div class=\"content-right-title\">方法名称</div>\n <tiny-input\n v-model=\"context.bindMethodInfo.name\"\n :disabled=\"context.bindMethodInfo.type !== NEW_METHOD_TYPE\"\n :class=\"[{ 'status-error': context.tipError }]\"\n placeholder=\"请从左侧选择一个方法进行绑定,或者选择添加新方法,输入自定义方法名称。\"\n @update:modelValue=\"change\"\n ></tiny-input>\n <div class=\"new-action-tip\">{{ context.tip }}</div>\n </div>\n <div :class=\"['content-right-bottom', { 'tip-error': !context.isValidParams }]\">\n <div class=\"content-right-title\">\n <tiny-checkbox v-model=\"context.enableExtraParams\" name=\"tiny-checkbox\">扩展参数设置</tiny-checkbox>\n <div class=\"set-params-tip\">\n <div>扩展参数:调用当前事件传入的真实参数,数组格式,追加在原有事件参数之后</div>\n 如: {{ context.bindMethodInfo.name }}(eventArgs, extParam1, extParam2, ...)\n </div>\n </div>\n\n <div class=\"content-right-monaco\">\n <monaco-editor\n v-if=\"dialogVisible\"\n :value=\"context.editorContent\"\n :options=\"editorOptions\"\n @change=\"editorContentChange\"\n class=\"monaco-editor\"\n />\n <div v-if=\"!context.enableExtraParams\" class=\"mark\"></div>\n </div>\n <div v-if=\"!context.isValidParams && context.enableExtraParams\" class=\"params-tip\">\n 请输入数组格式的参数,参数可以为表达式。例如:[\"extParam1\", \"item.status\", 1, \"getNames()\"]\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { VueMonaco } from '@opentiny/tiny-engine-common'\nimport { getMetaApi, META_APP } from '@opentiny/tiny-engine-meta-register'\nimport { Input, Checkbox } from '@opentiny/vue'\nimport { inject } from 'vue'\nimport { METHOD_TIPS_MAP, NEW_METHOD_TYPE, VALID_VARNAME_RE } from './constants'\n\nexport default {\n components: {\n MonacoEditor: VueMonaco,\n TinyInput: Input,\n TinyCheckbox: Checkbox\n },\n props: {\n dialogVisible: Boolean\n },\n setup() {\n const { getMethodNameList } = getMetaApi(META_APP.Page)\n\n const context = inject('context')\n\n const editorOptions = {\n language: 'json',\n lineNumbers: false,\n minimap: {\n enabled: false\n }\n }\n\n const editorContentChange = (content) => {\n context.editorContent = content\n }\n\n const validMethodNameEmpty = (name) => !name\n\n const validMethodNameExist = (name) => getMethodNameList?.().includes(name)\n\n const invalidMethodName = (name) => !VALID_VARNAME_RE.test(name)\n\n const change = (value) => {\n const validRules = [\n { validator: validMethodNameEmpty, tip: METHOD_TIPS_MAP.empty },\n { validator: validMethodNameExist, tip: METHOD_TIPS_MAP.exist },\n { validator: invalidMethodName, tip: METHOD_TIPS_MAP.ruleInvalid }\n ]\n for (let i = 0; i < validRules.length; i++) {\n const rule = validRules[i]\n if (rule.validator(value)) {\n context.tipError = true\n context.tip = rule.tip\n\n // 若存在校验不通过的,则直接返回,不继续走下面的流程\n return\n }\n }\n context.tipError = false\n context.tip = ''\n }\n\n return {\n NEW_METHOD_TYPE,\n context,\n editorOptions,\n change,\n editorContentChange\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.content-right {\n width: 68%;\n\n .content-right-top {\n .new-action-tip {\n margin: 8px 0;\n color: var(--te-bind-event-dialog-tip-text-color);\n }\n }\n .content-right-bottom {\n .content-right-monaco {\n border: 1px solid var(--te-bind-event-dialog-content-right-monaco-border-color);\n overflow: hidden;\n position: relative;\n\n .monaco-editor {\n width: 100%;\n height: 216px;\n color: var(--te-bind-event-dialog-content-right-monaco-text-color);\n }\n .mark {\n width: 100%;\n height: 216px;\n position: absolute;\n z-index: 1;\n top: 0;\n }\n }\n\n .params-tip {\n margin: 8px 0;\n color: var(--te-bind-event-dialog-danger-tip-text-color);\n }\n }\n .content-right-top .content-right-title,\n .content-right-bottom .content-right-title {\n margin-bottom: var(--te-common-vertical-item-spacing-normal);\n .set-params-tip {\n margin-top: 6px;\n font-weight: 400;\n color: var(--te-bind-event-dialog-tip-text-color);\n }\n }\n\n .tip-error {\n .content-right-monaco {\n border: 1px solid var(--te-bind-event-dialog-danger-border-color);\n }\n .params-tip,\n .new-action-tip {\n color: var(--te-bind-event-dialog-danger-tip-text-color);\n }\n }\n}\n</style>\n","<template>\n <div class=\"dialog-content-left\">\n <div class=\"left-title\">响应方法</div>\n <div class=\"left-list-wrap\">\n <div class=\"left-action-list\">\n <tiny-search v-model=\"searchValue\" placeholder=\"搜索\"></tiny-search>\n <ul class=\"action-list-wrap\">\n <li v-for=\"item in filteredMethodList\" :key=\"item.name\" @click=\"selectMethod(item)\">\n <div :class=\"['action-name', { active: item.name === context.bindMethodInfo.name }]\">\n {{ item.title || item.name }}\n </div>\n </li>\n </ul>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { getMetaApi, META_APP } from '@opentiny/tiny-engine-meta-register'\nimport { Search } from '@opentiny/vue'\nimport { inject, ref, watchEffect } from 'vue'\nimport { INVALID_VARNAME_CHAR_RE, NEW_METHOD_TYPE } from './constants'\n\nexport default {\n components: {\n TinySearch: Search\n },\n props: {\n eventBinding: {\n type: Object,\n default: () => ({})\n }\n },\n setup(props) {\n const { getMethodNameList } = getMetaApi(META_APP.Page)\n\n const searchValue = ref('')\n const filteredMethodList = ref([])\n const context = inject('context')\n\n const generateMethodName = (nameList, eventName) => {\n const max = nameList\n .map((name) => Number.parseInt(name.match(/\\d+$/)?.[0]) || 0)\n .sort((a, b) => a - b)\n .pop()\n\n const functionName = eventName?.replace(INVALID_VARNAME_CHAR_RE, '_') || ''\n let name = `${functionName}New`\n\n if (max > -1) {\n name += `${max + 1}`\n }\n\n return name\n }\n\n const selectMethod = (data) => {\n context.bindMethodInfo = data\n }\n\n watchEffect(() => {\n const eventName = props.eventBinding?.eventName\n\n const nameList = getMethodNameList?.().filter((action) => action.includes(eventName)) || []\n const newMethodName = generateMethodName(nameList, eventName)\n\n const newMethod = {\n title: '添加新方法',\n name: newMethodName,\n type: NEW_METHOD_TYPE\n }\n\n if (props.eventBinding?.ref) {\n selectMethod({ name: props.eventBinding.ref })\n } else {\n selectMethod(newMethod)\n }\n\n const methodList =\n getMethodNameList?.()\n .filter((item) => item.includes(searchValue.value))\n .map((name) => ({ name })) || []\n\n filteredMethodList.value = [newMethod, ...methodList]\n })\n\n return {\n context,\n searchValue,\n filteredMethodList,\n selectMethod\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.dialog-content-left {\n margin-right: 30px;\n width: 30%;\n display: flex;\n flex-direction: column;\n\n .left-title {\n font-weight: 400;\n }\n\n .left-list-wrap {\n border: 1px solid var(--te-bind-event-dialog-content-left-border-color);\n border-radius: 4px;\n height: 300px;\n margin-top: var(--te-common-vertical-item-spacing-normal);\n display: flex;\n flex: 1;\n\n .left-action-list {\n flex: 1;\n padding: 12px;\n .action-list-wrap {\n height: 250px;\n margin-top: 8px;\n overflow: auto;\n }\n\n .action-name {\n display: flex;\n justify-content: space-between;\n padding: 8px 12px;\n cursor: pointer;\n color: var(--te-bind-event-dialog-text-color);\n &.active {\n background: var(--te-bind-event-dialog-content-left-list-item-bg-color-active);\n }\n }\n }\n }\n}\n</style>\n","/**\n * Copyright (c) 2023 - present TinyEngine Authors.\n * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd.\n *\n * Use of this source code is governed by an MIT-style license.\n *\n * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,\n * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR\n * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.\n *\n */\n\nimport entry from './src/Main.vue'\nimport metaData from './meta'\nimport { commonEvents } from './src/commonjs/events.ts'\nimport BindEventsDialogContent from './src/components/BindEventsDialogContent.vue'\nimport BindEventsDialogSidebar from './src/components/BindEventsDialogSidebar.vue'\nimport './src/styles/vars.less'\n\nexport default {\n ...metaData,\n entry,\n options: { commonEvents },\n components: {\n BindEventsDialogSidebar,\n BindEventsDialogContent\n }\n}\n"],"names":["metaData","dialogVisible","ref","open","close","_sfc_main","Button","DialogBox","TinyAlert","props","BindEventsDialogSidebar","BindEventsDialogContent","getMergeMeta","meta","PLUGIN_NAME","activePlugin","useLayout","pageState","useCanvas","getMethods","saveMethod","highlightMethod","getMetaApi","META_APP","state","reactive","provide","selectMethod","data","bindMethod","eventName","_a","nodeProps","_b","name","extra","useHistory","resetTipError","getExtraParams","extraParams","getFormatParams","v","i","getFunctionBody","method","preBody","isAsync","isGenerator","astStr","string2Ast","_d","_c","ast2String","_f","_e","_h","_g","activePagePlugin","nextTick","params","formatParams","functionBody","functionName","beforeSaveMethod","getOptions","_hoisted_1","_hoisted_2","_hoisted_3","_createBlock","_component_tiny_dialog_box","$setup","_createElementVNode","_createVNode","_component_tiny_button","_cache","_component_tiny_alert","_openBlock","_resolveDynamicComponent","$props","commonEvents","allEvents","checkEvent","event","e","three","__props","emits","__emit","formData","ruleForm","rules","rule","value","callback","closeDialog","addMethod","valid","eventDescription","_unref","TinyDialogBox","TinyButton","TinyForm","TinyFormItem","TinyInput","$event","BlockLinkEvent","BindEventsDialog","Popover","iconChevronDown","SvgButton","AddEventsDialog","getBlockEvents","getCurrentBlock","removeEventLink","useBlock","getMaterial","useMaterial","confirm","useModal","locale","i18n","isBlock","computed","isEmpty","renderEventList","watchEffect","componentName","componentSchema","keys","componentEvent","eventArgs","action","blockEvents","componentId","openActionDialog","isAdd","openDialog","deleteAction","useMessage","visible","_hoisted_5","_hoisted_6","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_component_tiny_popover","_component_icon_chevron_down","_createElementBlock","_Fragment","_renderList","_normalizeClass","_toDisplayString","_component_svg_icon","_withDirectives","_createTextVNode","_component_block_link_event","_component_svg_button","_component_bind_events_dialog","_component_add_events_dialog","DEFAULT_LOOP_NAME","constants","string2Obj","utils","SwitchConfigurator","Tooltip","VariableConfigurator","InputConfigurator","CodeConfigurator","condition","isBind","PROP_DATA_TYPE","getIndexName","useProperties","watch","setLoopKey","getSchema","setProp","schema","isNumber","newPropsKey","openEditor","setConfig","operateNode","_schemaCondition","children","rest","setLoopIndex","loopArgs","newLoop","_loop","_loopArgs","_children","_hoisted_12","_hoisted_13","_hoisted_4","_component_switch_configurator","_component_variable_configurator","_hoisted_7","_component_code_configurator","_component_input_configurator","_component_tiny_tooltip","activeNames","panelState","PluginPanel","$emit","TinyCollapse","TinyCollapseItem","BindEvents","AdvanceConfig","NEW_METHOD_TYPE","INVALID_VARNAME_CHAR_RE","VALID_VARNAME_RE","METHOD_TIPS_MAP","VueMonaco","Input","Checkbox","getMethodNameList","context","inject","editorOptions","editorContentChange","content","validMethodNameEmpty","validMethodNameExist","invalidMethodName","validRules","_component_tiny_input","_component_tiny_checkbox","_component_monaco_editor","Search","searchValue","filteredMethodList","generateMethodName","nameList","max","a","b","newMethod","methodList","item","_component_tiny_search","index","entry"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../meta.js","../src/components/BindEventsDialog.vue","../src/commonjs/events.ts","../src/components/AddEventsDialog.vue","../src/components/BindEvents.vue","../src/components/AdvanceConfig.vue","../src/Main.vue","../src/components/constants.ts","../src/components/BindEventsDialogContent.vue","../src/components/BindEventsDialogSidebar.vue","../index.ts"],"sourcesContent":["export default {\n id: 'engine.setting.event',\n title: '高级',\n type: 'setting',\n align: 'rightTop',\n name: 'event',\n icon: 'target'\n}\n","<template>\n <tiny-dialog-box\n :visible=\"dialogVisible\"\n title=\"事件绑定\"\n width=\"50%\"\n dialog-class=\"bind-event-dialog\"\n draggable\n :append-to-body=\"true\"\n @close=\"closeDialog\"\n @opened=\"openedDialog\"\n >\n <div class=\"bind-event-dialog-tip\">\n <tiny-alert\n type=\"info\"\n description=\"选择已有方法或者添加新方法(点击 确定 之后将在JS面板中创建一个该名称的新方法)。\"\n class=\"header-alert\"\n :closable=\"false\"\n ></tiny-alert>\n </div>\n <div class=\"bind-event-dialog-content\">\n <component :is=\"BindEventsDialogSidebar\" :dialogVisible=\"dialogVisible\" :eventBinding=\"eventBinding\"></component>\n <component :is=\"BindEventsDialogContent\" :dialogVisible=\"dialogVisible\"></component>\n </div>\n <template #footer>\n <div class=\"bind-dialog-footer\">\n <tiny-button @click=\"closeDialog\">取 消</tiny-button>\n <tiny-button type=\"info\" @click=\"confirm\">确 定</tiny-button>\n </div>\n </template>\n </tiny-dialog-box>\n</template>\n\n<script>\nimport { ast2String, string2Ast } from '@opentiny/tiny-engine-common/js/ast'\nimport {\n getMergeMeta,\n useCanvas,\n useHistory,\n useLayout,\n getOptions,\n getMetaApi,\n META_APP\n} from '@opentiny/tiny-engine-meta-register'\nimport { Button, DialogBox, TinyAlert } from '@opentiny/vue'\nimport { nextTick, provide, reactive, ref } from 'vue'\nimport meta from '../../meta'\n\nconst dialogVisible = ref(false)\n\nexport const open = () => {\n dialogVisible.value = true\n}\n\nexport const close = () => {\n dialogVisible.value = false\n}\n\nexport default {\n components: {\n TinyButton: Button,\n TinyDialogBox: DialogBox,\n TinyAlert\n },\n inheritAttrs: false,\n props: {\n eventBinding: {\n type: Object,\n default: () => ({})\n }\n },\n setup(props) {\n const { BindEventsDialogSidebar, BindEventsDialogContent } = getMergeMeta(meta.id).components\n\n const { PLUGIN_NAME, activePlugin } = useLayout()\n const { pageState } = useCanvas()\n const { getMethods, saveMethod, highlightMethod } = getMetaApi(META_APP.Page)\n\n const state = reactive({\n editorContent: '',\n bindMethodInfo: {},\n tip: '',\n tipError: false,\n enableExtraParams: false,\n isValidParams: true\n })\n\n provide('context', state)\n\n const selectMethod = (data) => {\n state.bindMethodInfo = data\n }\n\n const bindMethod = (data) => {\n if (!data) {\n return\n }\n\n const eventName = props.eventBinding?.eventName\n\n if (!eventName) {\n return\n }\n\n const nodeProps = pageState?.currentSchema?.props\n\n if (!nodeProps) {\n return\n }\n\n const { name, extra } = data\n\n if (!props[eventName]) {\n nodeProps[eventName] = {\n type: 'JSExpression',\n value: ''\n }\n }\n\n if (extra && state.enableExtraParams) {\n nodeProps[eventName].params = extra\n }\n\n nodeProps[eventName].value = `this.${name}`\n\n useHistory().addHistory()\n }\n\n const resetTipError = () => {\n state.tipError = false\n state.tip = ''\n state.isValidParams = true\n }\n\n const getExtraParams = () => {\n let extraParams = ''\n if (state.enableExtraParams) {\n try {\n extraParams = JSON.parse(state.editorContent)\n state.isValidParams = Array.isArray(extraParams)\n } catch (error) {\n state.isValidParams = false\n }\n }\n return extraParams\n }\n\n const getFormatParams = (extraParams) => Array.from({ length: extraParams.length }, (v, i) => `args${i}`).join(',')\n\n const getFunctionBody = () => {\n let method = getMethods()?.[state.bindMethodInfo.name]?.value\n let preBody = '{}'\n let isAsync = false\n let isGenerator = false\n\n if (method) {\n let astStr = {}\n try {\n astStr = string2Ast(method)\n } catch (e) {\n method = method.replace('function', `function ${state.bindMethodInfo.name}`)\n astStr = string2Ast(method)\n }\n\n if (astStr?.program?.body[0]?.body) {\n preBody = ast2String(astStr.program.body[0].body)\n }\n\n if (astStr?.program?.body[0]?.async) {\n isAsync = true\n }\n\n if (astStr?.program?.body[0]?.generator) {\n isGenerator = true\n }\n }\n\n return {\n preBody: preBody || '{\\n}',\n isAsync,\n isGenerator\n }\n }\n\n const activePagePlugin = () => {\n activePlugin(PLUGIN_NAME.Page).then(() => {\n // 确认js面板渲染完成之后再对目标函数进行高亮处理\n nextTick(() => {\n if (highlightMethod) {\n highlightMethod(state.bindMethodInfo?.name)\n }\n })\n })\n }\n\n const confirm = async () => {\n if (state.tipError) {\n return\n }\n\n let params = 'event'\n const extraParams = getExtraParams()\n let formatParams = params\n\n if (!state.isValidParams) {\n return\n }\n\n if (extraParams) {\n params = extraParams.join(',')\n formatParams = getFormatParams(extraParams)\n }\n\n bindMethod({ ...state.bindMethodInfo, params, extra: extraParams })\n\n // 需要在bindMethod之后\n const { preBody: functionBody, isAsync, isGenerator } = getFunctionBody()\n const { name } = state.bindMethodInfo\n const functionName = `${isAsync ? 'async' : ''} function${isGenerator ? '*' : ''} ${name}`\n const method = {\n name,\n content: state.enableExtraParams\n ? `${functionName}(eventArgs,${formatParams}) ${functionBody}`\n : `${functionName}(${formatParams}) ${functionBody}`\n }\n const { beforeSaveMethod } = getOptions(meta.id)\n\n if (typeof beforeSaveMethod === 'function') {\n await beforeSaveMethod(method, state.bindMethodInfo)\n }\n\n saveMethod?.(method)\n\n activePagePlugin()\n close()\n }\n\n const openedDialog = () => {\n state.enableExtraParams = Boolean(props.eventBinding?.params?.length)\n state.editorContent = JSON.stringify(props.eventBinding?.params || [], null, 2)\n resetTipError()\n }\n\n const closeDialog = () => {\n resetTipError()\n close()\n }\n\n return {\n BindEventsDialogSidebar,\n BindEventsDialogContent,\n state,\n dialogVisible,\n confirm,\n closeDialog,\n openedDialog,\n selectMethod\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.bind-event-dialog {\n z-index: 99;\n :deep(.tiny-dialog-box) {\n min-width: 760px;\n }\n}\n\n.bind-event-dialog-tip {\n .tiny-alert.tiny-alert--normal {\n margin: 12px 0;\n }\n}\n\n.bind-event-dialog-content {\n display: flex;\n min-width: 700px;\n}\n</style>\n","/**\n * Copyright (c) 2023 - present TinyEngine Authors.\n * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd.\n *\n * Use of this source code is governed by an MIT-style license.\n *\n * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,\n * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR\n * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.\n *\n */\n\nexport const commonEvents = {\n onClick: {\n label: {\n zh_CN: '点击事件'\n },\n description: {\n zh_CN: '鼠标单击时触发的回调函数'\n },\n type: 'event',\n functionInfo: {\n params: [],\n returns: {}\n },\n defaultValue: ''\n },\n onChange: {\n label: {\n zh_CN: '值被改变时触发'\n },\n description: {\n zh_CN: '当用户更改 <input>、<select> 和 <textarea> 元素的值时,被触发的回调函数,'\n },\n type: 'event',\n functionInfo: {\n params: [],\n returns: {}\n },\n defaultValue: ''\n },\n onFocus: {\n label: {\n zh_CN: '元素获得焦点'\n },\n description: {\n zh_CN: '元素获得焦点时触发的回调函数'\n },\n type: 'event',\n functionInfo: {\n params: [],\n returns: {}\n },\n defaultValue: ''\n },\n onMousemove: {\n label: {\n zh_CN: '鼠标移动时触发'\n },\n description: {\n zh_CN: '鼠标移动时触发的回调函数'\n },\n type: 'event',\n functionInfo: {\n params: [],\n returns: {}\n },\n defaultValue: ''\n }\n}\n\nconst allEvents = [\n 'onabort',\n 'onafterprint',\n 'onanimationend',\n 'onanimationiteration',\n 'onanimationstart',\n 'onappinstalled',\n 'onauxclick',\n 'onbeforeinstallprompt',\n 'onbeforeprint',\n 'onbeforeunload',\n 'onbeforexrselect',\n 'onblur',\n 'oncancel',\n 'oncanplay',\n 'oncanplaythrough',\n 'onchange',\n 'onclick',\n 'onclose',\n 'oncontextlost',\n 'oncontextmenu',\n 'oncontextrestored',\n 'oncuechange',\n 'ondblclick',\n 'ondrag',\n 'ondragend',\n 'ondragenter',\n 'ondragleave',\n 'ondragover',\n 'ondragstart',\n 'ondrop',\n 'ondurationchange',\n 'onemptied',\n 'onended',\n 'onerror',\n 'onfocus',\n 'onformdata',\n 'ongotpointercapture',\n 'onhashchange',\n 'oninput',\n 'oninvalid',\n 'onkeydown',\n 'onkeypress',\n 'onkeyup',\n 'onlanguagechange',\n 'onload',\n 'onloadeddata',\n 'onloadedmetadata',\n 'onloadstart',\n 'onlostpointercapture',\n 'onmessage',\n 'onmessageerror',\n 'onmousedown',\n 'onmouseenter',\n 'onmouseleave',\n 'onmousemove',\n 'onmouseout',\n 'onmouseover',\n 'onmouseup',\n 'onmousewheel',\n 'onoffline',\n 'ononline',\n 'onpagehide',\n 'onpageshow',\n 'onpause',\n 'onplay',\n 'onplaying',\n 'onpointercancel',\n 'onpointerdown',\n 'onpointerenter',\n 'onpointerleave',\n 'onpointermove',\n 'onpointerout',\n 'onpointerover',\n 'onpointerrawupdate',\n 'onpointerup',\n 'onpopstate',\n 'onprogress',\n 'onratechange',\n 'onrejectionhandled',\n 'onreset',\n 'onresize',\n 'onscroll',\n 'onsearch',\n 'onsecuritypolicyviolation',\n 'onseeked',\n 'onseeking',\n 'onselect',\n 'onselectionchange',\n 'onselectstart',\n 'onslotchange',\n 'onstalled',\n 'onstorage',\n 'onsubmit',\n 'onsuspend',\n 'ontimeupdate',\n 'ontoggle',\n 'ontransitioncancel',\n 'ontransitionend',\n 'ontransitionrun',\n 'ontransitionstart',\n 'onunhandledrejection',\n 'onunload',\n 'onvolumechange',\n 'onwaiting',\n 'onwebkitanimationend',\n 'onwebkitanimationiteration',\n 'onwebkitanimationstart',\n 'onwebkittransitionend',\n 'onwheel'\n]\n\nexport const checkEvent = (event: string) => {\n const checkEventList = allEvents.map((e) => {\n const three = e[2].toUpperCase()\n return `${e.substring(0, 2)}${three}${e.substring(3)}`\n })\n if (!checkEventList.includes(event)) {\n return false\n }\n return true\n}\n","<template>\n <tiny-dialog-box\n :visible=\"visible\"\n title=\"添加新事件\"\n width=\"400px\"\n :append-to-body=\"true\"\n :close-on-click-modal=\"false\"\n @close=\"closeDialog\"\n >\n <tiny-form\n ref=\"ruleForm\"\n :model=\"formData\"\n :rules=\"rules\"\n label-width=\"80px\"\n :inline-message=\"true\"\n validate-type=\"text\"\n label-position=\"left\"\n class=\"add-custom-event-form\"\n >\n <tiny-form-item label=\"事件函数名\" prop=\"eventName\" required>\n <tiny-input v-model=\"formData.eventName\" placeholder=\"小驼峰格式,如:onDrag\"></tiny-input>\n </tiny-form-item>\n <tiny-form-item label=\"事件描述\" prop=\"eventDescription\" required>\n <tiny-input v-model=\"formData.eventDescription\"></tiny-input>\n </tiny-form-item>\n </tiny-form>\n <template #footer>\n <div class=\"footer\">\n <tiny-button @click=\"closeDialog\"> 取消</tiny-button>\n <tiny-button type=\"primary\" @click=\"addMethod\"> 确定</tiny-button>\n </div>\n </template>\n </tiny-dialog-box>\n</template>\n\n<script setup>\nimport { reactive, ref, defineProps, defineEmits } from 'vue'\nimport {\n Input as TinyInput,\n Form as TinyForm,\n FormItem as TinyFormItem,\n Button as TinyButton,\n DialogBox as TinyDialogBox\n} from '@opentiny/vue'\nimport { checkEvent } from '../commonjs/events'\n\nconst props = defineProps({\n visible: {\n type: Boolean,\n default: false\n },\n componentEvents: {\n type: Object,\n default: () => ({})\n }\n})\n\nconst emits = defineEmits(['closeDialog', 'addEvent'])\n\nconst formData = reactive({\n eventDescription: '',\n eventName: ''\n})\n\nconst ruleForm = ref(null)\n\nconst eventNameValidator = (rule, value, callback) => {\n if (props.componentEvents[formData.eventName]) {\n callback(new Error('事件名已存在'))\n\n return\n }\n\n if (!checkEvent(formData.eventName)) {\n callback(new Error('请输入正确的浏览器事件名'))\n\n return\n }\n\n callback()\n}\n\nconst rules = {\n eventDescription: [\n {\n required: true,\n message: '必填'\n }\n ],\n eventName: [\n { required: true, message: '必填' },\n {\n validator: eventNameValidator\n }\n ]\n}\n\nconst closeDialog = () => {\n emits('closeDialog')\n}\n\nconst addMethod = () => {\n if (!ruleForm.value) {\n return\n }\n\n ruleForm.value.validate((valid) => {\n if (!valid) {\n return\n }\n\n const { eventName, eventDescription } = formData\n\n emits('addEvent', { eventName, eventDescription })\n })\n}\n</script>\n\n<style lang=\"less\" scoped>\n.add-custom-event-form.add-custom-event-form {\n :deep(.tiny-form-item__label) {\n padding-left: 0;\n }\n}\n.footer {\n display: flex;\n justify-content: flex-end;\n}\n</style>\n","<template>\n <div class=\"bind-action-list\">\n <div class=\"popover-head\">\n <tiny-popover\n popperClass=\"option-popper setting-advanced-bind-event-list\"\n placement=\"bottom-start\"\n trigger=\"hover\"\n class=\"bind-action-button-item\"\n width=\"256\"\n :visible-arrow=\"false\"\n >\n <template #reference>\n <tiny-button class=\"bind-event-btn\">\n <span>绑定事件</span>\n <icon-chevron-down class=\"icon-chevron-down bind-event-btn-icon\"></icon-chevron-down>\n </tiny-button>\n </template>\n <ul class=\"bind-event-list\">\n <li\n v-for=\"(event, name) in renderEventList\"\n :key=\"name\"\n :class=\"['bind-event-list-item', { 'bind-event-list-item-notallow': state.bindActions[name] }]\"\n @click=\"openActionDialog({ eventName: name }, true)\"\n >\n <div>{{ name }}&nbsp; | &nbsp;{{ event?.label?.[locale] || name }}</div>\n </li>\n </ul>\n </tiny-popover>\n <tiny-button\n class=\"title add-custom-event-button bind-action-button-item\"\n @click=\"handleToggleAddEventDialog(true)\"\n >\n <svg-icon name=\"add\" class=\"custom-event-button-icon\"></svg-icon>\n <span class=\"custom-event-button-text\">添加新事件</span>\n </tiny-button>\n </div>\n <ul v-show=\"!isEmpty\" class=\"bind-actions\">\n <li v-for=\"action in state.bindActions\" :key=\"action.eventName\">\n <div class=\"action-item bind-action-item\">\n <div class=\"binding-name\" @click=\"openActionDialog(action)\">\n <div>\n {{ action.eventName }}<span>{{ renderEventList[action.eventName]?.label?.[locale] }}</span>\n </div>\n <div :class=\"{ linked: action.linked }\">{{ action.linkedEventName }}</div>\n <span class=\"event-bind\">{{ action.ref }}</span>\n </div>\n <div class=\"action-buttons\">\n <block-link-event v-if=\"isBlock\" :data=\"action\"></block-link-event>\n <svg-button\n name=\"plugin-icon-page-schema\"\n tips=\"定位到代码\"\n placement=\"top\"\n :hoverBgColor=\"false\"\n @click=\"openCodePanel(action)\"\n ></svg-button>\n <svg-button name=\"setting\" :hoverBgColor=\"false\" @click=\"openActionDialog(action, false)\"></svg-button>\n <svg-button name=\"delete\" :hoverBgColor=\"false\" @click=\"delEvent(action)\"></svg-button>\n </div>\n </div>\n </li>\n </ul>\n <div v-show=\"isEmpty\" class=\"empty-action\">\n <div class=\"icon\">\n <svg-icon name=\"empty-action\" class=\"empty-action-icon\"></svg-icon>\n </div>\n <div class=\"center\">支持添加原生DOM事件,然后点击 绑定事件 为画布所选元素增加事件</div>\n </div>\n </div>\n <bind-events-dialog :eventBinding=\"state.eventBinding\"></bind-events-dialog>\n <add-events-dialog\n :visible=\"state.showBindEventDialog\"\n :componentEvents=\"renderEventList\"\n @closeDialog=\"handleToggleAddEventDialog(false)\"\n @addEvent=\"handleAddEvent\"\n ></add-events-dialog>\n</template>\n\n<script>\nimport { computed, reactive, watchEffect } from 'vue'\nimport { Popover, Button } from '@opentiny/vue'\nimport {\n useModal,\n getMergeMeta,\n useCanvas,\n useLayout,\n useBlock,\n useMaterial,\n getMetaApi,\n META_APP,\n useMessage\n} from '@opentiny/tiny-engine-meta-register'\nimport i18n from '@opentiny/tiny-engine-common/js/i18n'\nimport { BlockLinkEvent, SvgButton } from '@opentiny/tiny-engine-common'\nimport { iconChevronDown } from '@opentiny/vue-icon'\nimport BindEventsDialog, { open as openDialog } from './BindEventsDialog.vue'\nimport AddEventsDialog from './AddEventsDialog.vue'\n\nexport default {\n components: {\n BlockLinkEvent,\n BindEventsDialog,\n TinyPopover: Popover,\n TinyButton: Button,\n IconChevronDown: iconChevronDown(),\n SvgButton,\n AddEventsDialog\n },\n inheritAttrs: false,\n setup() {\n const { PLUGIN_NAME, activePlugin } = useLayout()\n const { pageState } = useCanvas()\n const { getBlockEvents, getCurrentBlock, removeEventLink } = useBlock()\n const { getMaterial } = useMaterial()\n const { confirm } = useModal()\n const locale = i18n.global.locale.value\n const { highlightMethod } = getMetaApi(META_APP.Page)\n const { commonEvents = {} } = getMergeMeta('engine.setting.event').options\n\n const state = reactive({\n eventName: '', // 事件名称\n eventBinding: null, // 事件绑定的处理方法对象\n componentEvent: {},\n customEvents: commonEvents,\n bindActions: {},\n showBindEventDialog: false\n })\n\n const isBlock = computed(() => Boolean(pageState.isBlock))\n const isEmpty = computed(() => Object.keys(state.bindActions).length === 0)\n const renderEventList = computed(() => ({ ...state.componentEvent, ...state.customEvents }))\n\n watchEffect(() => {\n const componentName = pageState?.currentSchema?.componentName\n const componentSchema = getMaterial(componentName)\n state.componentEvent = componentSchema?.content?.schema?.events || componentSchema?.schema?.events || {}\n const props = pageState?.currentSchema?.props || {}\n const keys = Object.keys(props)\n state.bindActions = {}\n // 遍历组件事件元数据\n Object.entries(renderEventList.value).forEach(([eventName, componentEvent]) => {\n // 查找组件已添加的事件\n if (keys.indexOf(eventName) > -1) {\n const event = props[eventName]\n const { value, params } = event\n const eventArgs = (!params && value.match(/\\((.+)\\)$/)?.[1]?.split(',')) || params\n const action = {\n eventName,\n ref: '',\n event: props[eventName],\n params: eventArgs\n }\n\n if (action.event.type === 'JSExpression') {\n action.ref = action.event.value.replace('this.', '').replace(/\\(.*\\)$/, '')\n }\n\n if (pageState.isBlock) {\n // 区块编辑态时设置选中组件的事件元数据\n action.metaEvent = componentEvent\n\n const blockEvents = getBlockEvents(getCurrentBlock())\n const componentId = pageState?.currentSchema?.id\n\n if (componentId && blockEvents) {\n Object.entries(blockEvents).forEach(([name, event]) => {\n if (componentId === event?.linked?.id && eventName === event?.linked?.event) {\n action.linked = event.linked\n action.linkedEventName = name\n }\n })\n }\n }\n\n state.bindActions[eventName] = action\n }\n })\n })\n\n const openActionDialog = (action, isAdd) => {\n if (isAdd && state.bindActions[action.eventName]) {\n return\n }\n\n state.eventBinding = action\n\n openDialog()\n }\n\n const deleteAction = (action) => {\n const keys = Object.keys(pageState?.currentSchema?.props || {})\n\n if (keys.indexOf(action.eventName) > -1) {\n delete pageState.currentSchema.props[action.eventName]\n\n useMessage().publish({ topic: 'schemaChange', data: { props: pageState.currentSchema.props } })\n }\n }\n\n const delEvent = (action) => {\n confirm({\n title: '提示',\n message: `您确定要删除事件 ${action.eventName} 吗?`,\n exec() {\n if (pageState.isBlock) {\n removeEventLink({ linked: action.linked })\n }\n\n deleteAction(action)\n }\n })\n }\n\n const openCodePanel = (action) => {\n if (action) {\n activePlugin(PLUGIN_NAME.Page).then(() => {\n if (highlightMethod) {\n highlightMethod(action.ref)\n }\n })\n }\n }\n\n const handleToggleAddEventDialog = (visible) => {\n state.showBindEventDialog = visible\n }\n\n const handleAddEvent = (params) => {\n const { eventName, eventDescription } = params\n\n Object.assign(state.customEvents, {\n [eventName]: {\n label: {\n zh_CN: eventDescription\n },\n description: {\n zh_CN: `${eventDescription}的回调函数`\n },\n type: 'event',\n functionInfo: {\n params: [],\n returns: {}\n },\n defaultValue: ''\n }\n })\n\n state.showBindEventDialog = false\n }\n\n return {\n state,\n isBlock,\n isEmpty,\n delEvent,\n openCodePanel,\n openActionDialog,\n handleAddEvent,\n handleToggleAddEventDialog,\n renderEventList,\n locale\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.custom-event {\n padding: 10px 20px 10px 10px;\n footer {\n text-align: center;\n }\n}\n.bind-action-list {\n .bind-actions {\n margin-top: 20px;\n .binding-name {\n word-break: break-all;\n }\n .action-buttons {\n display: flex;\n align-items: center;\n justify-content: center;\n .item {\n margin-right: 10px;\n }\n }\n .event-bind {\n color: var(--te-events-event-bind-text-color);\n }\n .bind-action-item {\n display: flex;\n justify-content: space-between;\n padding: 8px 12px;\n cursor: pointer;\n color: var(--te-events-bind-action-item-text-color);\n border-bottom: 1px solid var(--te-events-bind-action-item-border-color);\n &:first-child {\n border-top: 1px solid var(--te-events-bind-action-item-border-color);\n }\n &:hover {\n background: var(--te-events-bind-action-item-bg-color-hover);\n }\n\n .linked {\n color: var(--te-events-bind-action-item-text-color-link);\n }\n }\n }\n .popover-head {\n display: flex;\n justify-content: space-between;\n margin-top: 12px;\n .bind-action-button-item {\n width: 50%;\n &:not(:last-child) {\n margin-right: 12px;\n }\n }\n .add-custom-event-button {\n margin-right: 0;\n }\n .bind-event-btn {\n padding: 0 16px;\n width: 100%;\n .bind-event-btn-icon {\n margin-right: 0;\n margin-left: 4px;\n }\n }\n }\n .empty-action {\n display: flex;\n flex-direction: column;\n align-items: center;\n background-color: var(--te-events-empty-action-bg-color);\n color: var(--te-events-empty-action-text-color);\n padding: 24px 18px;\n margin-top: var(--te-common-vertical-item-spacing-normal);\n .empty-action-icon {\n font-size: 48px;\n }\n .icon {\n text-align: center;\n opacity: 0.4;\n }\n .center {\n margin-top: 4px;\n }\n .text {\n margin-top: 12px;\n }\n }\n}\n.bind-event-list {\n color: var(--te-events-bind-event-list-text-color);\n}\n.bind-event-list-item-notallow {\n cursor: not-allowed;\n pointer-events: none;\n color: var(--te-events-bind-event-list-item-text-color-disabled);\n}\n.bind-event-list-item {\n padding: 0 16px;\n margin: 0 -16px;\n line-height: 24px;\n &:hover {\n cursor: pointer;\n background: var(--te-events-bind-event-list-item-bg-color-hover);\n }\n}\n</style>\n","<template>\n <div class=\"advanced-config-container\">\n <div class=\"advnce-config\">\n <label class=\"text-ellipsis-multiple\">是否渲染</label>\n <div class=\"advanced-config-form-item\">\n <switch-configurator v-if=\"!isBind\" :modelValue=\"condition\" @update:modelValue=\"setConfig\">\n </switch-configurator>\n <div v-else class=\"binding-state text-ellipsis-multiple\" :title=\"condition.value\">\n 已绑定:{{ condition.value }}\n </div>\n <variable-configurator\n v-model=\"condition\"\n name=\"advance\"\n @update:modelValue=\"setConfig\"\n ></variable-configurator>\n </div>\n </div>\n\n <div class=\"advnce-config loop-data-item\">\n <label class=\"text-ellipsis-multiple\">循环数据</label>\n <div class=\"advanced-config-form-item\">\n <code-configurator\n v-if=\"!state.isLoop\"\n v-model=\"state.loopData\"\n data-type=\"JSExpression\"\n @update:modelValue=\"setLoop\"\n @open=\"openEditor\"\n ></code-configurator>\n <div v-else class=\"binding-state text-ellipsis-multiple\" :title=\"state.loopData?.value\">\n 已绑定:{{ state.loopData?.value }}\n </div>\n <variable-configurator\n v-model=\"state.loopData\"\n name=\"advance\"\n @update:modelValue=\"setLoop\"\n ></variable-configurator>\n </div>\n </div>\n <div class=\"advnce-config\">\n <label class=\"text-ellipsis-multiple\">迭代变量名</label>\n <div class=\"advanced-config-form-item\">\n <input-configurator\n v-model=\"state.loopItem\"\n :placeholder=\"`默认值为:${DEFAULT_LOOP_NAME.ITEM}`\"\n @update:modelValue=\"setLoopItem\"\n ></input-configurator>\n </div>\n </div>\n <div class=\"advnce-config\">\n <label class=\"text-ellipsis-multiple\">索引变量名</label>\n <div class=\"advanced-config-form-item\">\n <input-configurator\n v-model=\"state.loopIndex\"\n :placeholder=\"`默认值为:${DEFAULT_LOOP_NAME.INDEX}`\"\n @update:modelValue=\"setLoopIndex\"\n ></input-configurator>\n </div>\n </div>\n <div class=\"advnce-config\">\n <label class=\"text-ellipsis-multiple\">key</label>\n <div class=\"advanced-config-form-item\">\n <tiny-tooltip content=\"建议填写循环项中的唯一值(如item.id),如果填写为数字将不保存\" effect=\"light\">\n <input-configurator\n v-model=\"state.loopKey\"\n :placeholder=\"`默认为索引名:${getIndexName()}`\"\n @update:modelValue=\"setLoopKey\"\n ></input-configurator>\n </tiny-tooltip>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { ref, computed, reactive, watch } from 'vue'\nimport {\n CodeConfigurator,\n InputConfigurator,\n SwitchConfigurator,\n VariableConfigurator\n} from '@opentiny/tiny-engine-configurator'\nimport { useProperties, useCanvas } from '@opentiny/tiny-engine-meta-register'\nimport { PROP_DATA_TYPE } from '@opentiny/tiny-engine-common/js/constants'\nimport { constants, utils } from '@opentiny/tiny-engine-utils'\nimport { Tooltip } from '@opentiny/vue'\n\nconst { DEFAULT_LOOP_NAME } = constants\nconst { string2Obj } = utils\n\nexport default {\n components: {\n SwitchConfigurator,\n TinyTooltip: Tooltip,\n VariableConfigurator,\n InputConfigurator,\n CodeConfigurator\n },\n inheritAttrs: false,\n setup() {\n const { pageState } = useCanvas()\n const condition = ref(false)\n const isBind = computed(() => condition.value?.type === PROP_DATA_TYPE.JSEXPRESSION)\n const getIndexName = () => useProperties().getSchema()?.loopArgs?.[1] || DEFAULT_LOOP_NAME.INDEX\n\n const state = reactive({\n loopData: {\n type: PROP_DATA_TYPE.JSEXPRESSION,\n value: '[]'\n },\n loopItem: 'item',\n loopIndex: 'index',\n isLoop: computed(() => state.loopData?.type === PROP_DATA_TYPE.JSEXPRESSION),\n loopKey: '',\n shouldUpdate: false\n })\n\n watch(\n () => [pageState?.currentSchema, state.shouldUpdate],\n ([value]) => {\n condition.value = value?.condition === undefined ? true : value?.condition\n state.loopData = value?.loop\n state.loopItem = value?.loopArgs?.[0] || ''\n state.loopIndex = value?.loopArgs?.[1] || ''\n state.loopKey = value?.props?.key?.value || ''\n }\n )\n\n const setLoopKey = (value = '') => {\n value = value.replace(/\\s*/g, '')\n const { getSchema, setProp } = useProperties()\n const schema = getSchema()\n\n if (!schema) {\n return\n }\n\n const isNumber = Number(value).toString() !== 'NaN'\n let newPropsKey = schema.props?.key\n\n if (value && !isNumber) {\n newPropsKey = {\n type: PROP_DATA_TYPE.JSEXPRESSION,\n value\n }\n }\n\n if (!value) {\n if (state.isLoop) {\n newPropsKey = {\n type: PROP_DATA_TYPE.JSEXPRESSION,\n value: getIndexName()\n }\n } else {\n newPropsKey = ''\n }\n }\n\n setProp('key', newPropsKey)\n }\n\n watch([() => state.isLoop, () => state.loopIndex], () => {\n if (!state.loopKey && state.isLoop) {\n setLoopKey(getIndexName())\n }\n\n if (!state.isLoop) {\n setLoopKey('')\n }\n })\n\n const openEditor = () => {\n state.loopData = useProperties().getSchema()?.loop\n }\n\n const setConfig = (value) => {\n const { getSchema } = useProperties()\n const schema = getSchema()\n\n if (!schema) {\n return\n }\n\n const { operateNode } = useCanvas()\n\n if (value === false || value?.type) {\n operateNode({ type: 'updateAttributes', id: schema.id, value: { condition: value } })\n } else {\n const { condition: _schemaCondition, children, ...rest } = schema\n operateNode({ type: 'updateAttributes', id: schema.id, value: { ...rest }, overwrite: true })\n }\n\n useCanvas().canvasApi.value.updateRect()\n condition.value = value\n }\n\n const setLoopIndex = (value) => {\n const schema = useProperties().getSchema()\n let loopArgs = schema.loopArgs\n const { operateNode } = useCanvas()\n\n if (loopArgs) {\n loopArgs[1] = value || DEFAULT_LOOP_NAME.INDEX\n } else {\n loopArgs = [DEFAULT_LOOP_NAME.ITEM, value]\n }\n\n operateNode({ type: 'updateAttributes', id: schema.id, value: { loopArgs } })\n }\n\n const setLoop = (value) => {\n const { operateNode } = useCanvas()\n const { getSchema } = useProperties()\n const schema = getSchema()\n\n if (value) {\n const newLoop = value?.type ? value : string2Obj(value)\n\n operateNode({ type: 'updateAttributes', id: schema.id, value: { loop: newLoop } })\n setLoopIndex(DEFAULT_LOOP_NAME.INDEX)\n } else {\n setLoopKey()\n const { loop: _loop, loopArgs: _loopArgs, children: _children, ...rest } = schema\n\n operateNode({ type: 'updateAttributes', id: schema.id, value: rest, overwrite: true })\n }\n\n // 触发更新state\n state.shouldUpdate = !state.shouldUpdate\n }\n\n const setLoopItem = (value) => {\n const schema = useProperties().getSchema()\n let loopArgs = schema.loopArgs\n const { operateNode } = useCanvas()\n\n if (loopArgs) {\n loopArgs[0] = value || DEFAULT_LOOP_NAME.ITEM\n } else {\n loopArgs = [value, DEFAULT_LOOP_NAME.INDEX]\n }\n\n operateNode({ type: 'updateAttributes', id: schema.id, value: { loopArgs } })\n }\n\n return {\n condition,\n setConfig,\n isBind,\n state,\n setLoop,\n setLoopItem,\n DEFAULT_LOOP_NAME,\n openEditor,\n setLoopIndex,\n setLoopKey,\n getIndexName\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.advanced-config-container {\n .advnce-config {\n &:not(:last-child) {\n margin-bottom: var(--te-common-vertical-item-spacing-normal);\n }\n align-items: center;\n display: flex;\n column-gap: 12px;\n color: var(--te-events-advanced-config-text-color);\n\n label {\n width: 80px;\n word-break: keep-all;\n color: var(--te-events-advanced-label-text-color);\n flex-shrink: 0;\n }\n\n .advanced-config-form-item {\n display: grid;\n grid-template-columns: 1fr auto;\n flex: 1;\n }\n .binding-state {\n box-sizing: border-box;\n background: var(--te-events-advanced-binding-state-bg-color);\n color: var(--te-events-advanced-binding-state-text-color);\n border: 1px solid var(--te-events-advanced-binding-state-border-color);\n font-size: 12px;\n height: 24px;\n line-height: 14px;\n padding: 4px 8px;\n --ellipsis-line: 1;\n border-radius: var(--te-base-border-radius-1);\n }\n\n .advance-config-loop-wrap {\n .advance-item {\n width: 100%;\n }\n }\n }\n .loop-data-item {\n display: block;\n label {\n margin-bottom: 5px;\n }\n }\n}\n</style>\n","<template>\n <plugin-panel\n title=\"高级\"\n :fixed-panels=\"fixedPanels\"\n :fixed-name=\"PLUGIN_NAME.Event\"\n :header-margin-bottom=\"0\"\n @close=\"$emit('close')\"\n >\n <template #content>\n <tiny-collapse v-model=\"activeNames\">\n <tiny-collapse-item title=\"事件绑定\" name=\"bindEvent\">\n <bind-events></bind-events>\n </tiny-collapse-item>\n <tiny-collapse-item title=\"高级配置\" name=\"advancedConfig\">\n <advance-config></advance-config>\n </tiny-collapse-item>\n </tiny-collapse>\n </template>\n </plugin-panel>\n</template>\n\n<script setup>\nimport { ref, reactive, provide, defineProps, defineEmits } from 'vue'\nimport { Collapse as TinyCollapse, CollapseItem as TinyCollapseItem } from '@opentiny/vue'\nimport BindEvents from './components/BindEvents.vue'\nimport AdvanceConfig from './components/AdvanceConfig.vue'\nimport { PluginPanel } from '@opentiny/tiny-engine-common'\nimport { useLayout } from '@opentiny/tiny-engine-meta-register'\n\nconst activeNames = ref(['bindEvent', 'advancedConfig'])\nconst { PLUGIN_NAME } = useLayout()\n\ndefineProps({\n fixedPanels: Array\n})\n\nconst emit = defineEmits([])\n\nconst panelState = reactive({\n emitEvent: emit\n})\n\nprovide('panelState', panelState)\n</script>\n","export const NEW_METHOD_TYPE = 'newMethod'\nexport const INVALID_VARNAME_CHAR_RE = /[^0-9a-zA-Z_$]/\nexport const VALID_VARNAME_RE = /^[a-zA-Z_$][0-9a-zA-Z_$]*$/\n\nexport const METHOD_TIPS_MAP = {\n default: '选择已有方法或者添加新方法(点击 确定 之后将在JS面板中创建一个该名称的新方法)',\n exist: '方法名称已存在',\n ruleInvalid: '请输入有效的方法名,可以由字母、数字、下划线、$ 符号组成,不能以数字开头',\n empty: '方法名称不能为空'\n}\n","<template>\n <div class=\"content-right\">\n <div :class=\"['content-right-top', { 'tip-error': context.tipError }]\">\n <div class=\"content-right-title\">方法名称</div>\n <tiny-input\n v-model=\"context.bindMethodInfo.name\"\n :disabled=\"context.bindMethodInfo.type !== NEW_METHOD_TYPE\"\n :class=\"[{ 'status-error': context.tipError }]\"\n placeholder=\"请从左侧选择一个方法进行绑定,或者选择添加新方法,输入自定义方法名称。\"\n @update:modelValue=\"change\"\n ></tiny-input>\n <div class=\"new-action-tip\">{{ context.tip }}</div>\n </div>\n <div :class=\"['content-right-bottom', { 'tip-error': !context.isValidParams }]\">\n <div class=\"content-right-title\">\n <tiny-checkbox v-model=\"context.enableExtraParams\" name=\"tiny-checkbox\">扩展参数设置</tiny-checkbox>\n <div class=\"set-params-tip\">\n <div>扩展参数:调用当前事件传入的真实参数,数组格式,追加在原有事件参数之后</div>\n 如: {{ context.bindMethodInfo.name }}(eventArgs, extParam1, extParam2, ...)\n </div>\n </div>\n\n <div class=\"content-right-monaco\">\n <monaco-editor\n v-if=\"dialogVisible\"\n :value=\"context.editorContent\"\n :options=\"editorOptions\"\n @change=\"editorContentChange\"\n class=\"monaco-editor\"\n />\n <div v-if=\"!context.enableExtraParams\" class=\"mark\"></div>\n </div>\n <div v-if=\"!context.isValidParams && context.enableExtraParams\" class=\"params-tip\">\n 请输入数组格式的参数,参数可以为表达式。例如:[\"extParam1\", \"item.status\", 1, \"getNames()\"]\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { VueMonaco } from '@opentiny/tiny-engine-common'\nimport { getMetaApi, META_APP } from '@opentiny/tiny-engine-meta-register'\nimport { Input, Checkbox } from '@opentiny/vue'\nimport { inject } from 'vue'\nimport { METHOD_TIPS_MAP, NEW_METHOD_TYPE, VALID_VARNAME_RE } from './constants'\n\nexport default {\n components: {\n MonacoEditor: VueMonaco,\n TinyInput: Input,\n TinyCheckbox: Checkbox\n },\n props: {\n dialogVisible: Boolean\n },\n setup() {\n const { getMethodNameList } = getMetaApi(META_APP.Page)\n\n const context = inject('context')\n\n const editorOptions = {\n language: 'json',\n lineNumbers: false,\n minimap: {\n enabled: false\n }\n }\n\n const editorContentChange = (content) => {\n context.editorContent = content\n }\n\n const validMethodNameEmpty = (name) => !name\n\n const validMethodNameExist = (name) => getMethodNameList?.().includes(name)\n\n const invalidMethodName = (name) => !VALID_VARNAME_RE.test(name)\n\n const change = (value) => {\n const validRules = [\n { validator: validMethodNameEmpty, tip: METHOD_TIPS_MAP.empty },\n { validator: validMethodNameExist, tip: METHOD_TIPS_MAP.exist },\n { validator: invalidMethodName, tip: METHOD_TIPS_MAP.ruleInvalid }\n ]\n for (let i = 0; i < validRules.length; i++) {\n const rule = validRules[i]\n if (rule.validator(value)) {\n context.tipError = true\n context.tip = rule.tip\n\n // 若存在校验不通过的,则直接返回,不继续走下面的流程\n return\n }\n }\n context.tipError = false\n context.tip = ''\n }\n\n return {\n NEW_METHOD_TYPE,\n context,\n editorOptions,\n change,\n editorContentChange\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.content-right {\n width: 68%;\n\n .content-right-top {\n .new-action-tip {\n margin: 8px 0;\n color: var(--te-bind-event-dialog-tip-text-color);\n }\n }\n .content-right-bottom {\n .content-right-monaco {\n border: 1px solid var(--te-bind-event-dialog-content-right-monaco-border-color);\n overflow: hidden;\n position: relative;\n\n .monaco-editor {\n width: 100%;\n height: 216px;\n color: var(--te-bind-event-dialog-content-right-monaco-text-color);\n }\n .mark {\n width: 100%;\n height: 216px;\n position: absolute;\n z-index: 1;\n top: 0;\n }\n }\n\n .params-tip {\n margin: 8px 0;\n color: var(--te-bind-event-dialog-danger-tip-text-color);\n }\n }\n .content-right-top .content-right-title,\n .content-right-bottom .content-right-title {\n margin-bottom: var(--te-common-vertical-item-spacing-normal);\n .set-params-tip {\n margin-top: 6px;\n font-weight: 400;\n color: var(--te-bind-event-dialog-tip-text-color);\n }\n }\n\n .tip-error {\n .content-right-monaco {\n border: 1px solid var(--te-bind-event-dialog-danger-border-color);\n }\n .params-tip,\n .new-action-tip {\n color: var(--te-bind-event-dialog-danger-tip-text-color);\n }\n }\n}\n</style>\n","<template>\n <div class=\"dialog-content-left\">\n <div class=\"left-title\">响应方法</div>\n <div class=\"left-list-wrap\">\n <div class=\"left-action-list\">\n <tiny-search v-model=\"searchValue\" placeholder=\"搜索\"></tiny-search>\n <ul class=\"action-list-wrap\">\n <li v-for=\"item in filteredMethodList\" :key=\"item.name\" @click=\"selectMethod(item)\">\n <div :class=\"['action-name', { active: item.name === context.bindMethodInfo.name }]\">\n {{ item.title || item.name }}\n </div>\n </li>\n </ul>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { getMetaApi, META_APP } from '@opentiny/tiny-engine-meta-register'\nimport { Search } from '@opentiny/vue'\nimport { inject, ref, watchEffect } from 'vue'\nimport { INVALID_VARNAME_CHAR_RE, NEW_METHOD_TYPE } from './constants'\n\nexport default {\n components: {\n TinySearch: Search\n },\n props: {\n eventBinding: {\n type: Object,\n default: () => ({})\n }\n },\n setup(props) {\n const { getMethodNameList } = getMetaApi(META_APP.Page)\n\n const searchValue = ref('')\n const filteredMethodList = ref([])\n const context = inject('context')\n\n const generateMethodName = (nameList, eventName) => {\n const max = nameList\n .map((name) => Number.parseInt(name.match(/\\d+$/)?.[0]) || 0)\n .sort((a, b) => a - b)\n .pop()\n\n const functionName = eventName?.replace(INVALID_VARNAME_CHAR_RE, '_') || ''\n let name = `${functionName}New`\n\n if (max > -1) {\n name += `${max + 1}`\n }\n\n return name\n }\n\n const selectMethod = (data) => {\n context.bindMethodInfo = data\n }\n\n watchEffect(() => {\n const eventName = props.eventBinding?.eventName\n\n const nameList = getMethodNameList?.().filter((action) => action.includes(eventName)) || []\n const newMethodName = generateMethodName(nameList, eventName)\n\n const newMethod = {\n title: '添加新方法',\n name: newMethodName,\n type: NEW_METHOD_TYPE\n }\n\n if (props.eventBinding?.ref) {\n selectMethod({ name: props.eventBinding.ref })\n } else {\n selectMethod(newMethod)\n }\n\n const methodList =\n getMethodNameList?.()\n .filter((item) => item.includes(searchValue.value))\n .map((name) => ({ name })) || []\n\n filteredMethodList.value = [newMethod, ...methodList]\n })\n\n return {\n context,\n searchValue,\n filteredMethodList,\n selectMethod\n }\n }\n}\n</script>\n\n<style lang=\"less\" scoped>\n.dialog-content-left {\n margin-right: 30px;\n width: 30%;\n display: flex;\n flex-direction: column;\n\n .left-title {\n font-weight: 400;\n }\n\n .left-list-wrap {\n border: 1px solid var(--te-bind-event-dialog-content-left-border-color);\n border-radius: 4px;\n height: 300px;\n margin-top: var(--te-common-vertical-item-spacing-normal);\n display: flex;\n flex: 1;\n\n .left-action-list {\n flex: 1;\n padding: 12px;\n .action-list-wrap {\n height: 250px;\n margin-top: 8px;\n overflow: auto;\n }\n\n .action-name {\n display: flex;\n justify-content: space-between;\n padding: 8px 12px;\n cursor: pointer;\n color: var(--te-bind-event-dialog-text-color);\n &.active {\n background: var(--te-bind-event-dialog-content-left-list-item-bg-color-active);\n }\n }\n }\n }\n}\n</style>\n","/**\n * Copyright (c) 2023 - present TinyEngine Authors.\n * Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd.\n *\n * Use of this source code is governed by an MIT-style license.\n *\n * THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,\n * BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR\n * A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.\n *\n */\n\nimport entry from './src/Main.vue'\nimport metaData from './meta'\nimport { commonEvents } from './src/commonjs/events.ts'\nimport BindEventsDialogContent from './src/components/BindEventsDialogContent.vue'\nimport BindEventsDialogSidebar from './src/components/BindEventsDialogSidebar.vue'\nimport './src/styles/vars.less'\n\nexport default {\n ...metaData,\n entry,\n options: { commonEvents },\n components: {\n BindEventsDialogSidebar,\n BindEventsDialogContent\n }\n}\n"],"names":["metaData","dialogVisible","ref","open","close","_sfc_main","Button","DialogBox","TinyAlert","props","BindEventsDialogSidebar","BindEventsDialogContent","getMergeMeta","meta","PLUGIN_NAME","activePlugin","useLayout","pageState","useCanvas","getMethods","saveMethod","highlightMethod","getMetaApi","META_APP","state","reactive","provide","selectMethod","data","bindMethod","eventName","_a","nodeProps","_b","name","extra","useHistory","resetTipError","getExtraParams","extraParams","getFormatParams","v","i","getFunctionBody","method","preBody","isAsync","isGenerator","astStr","string2Ast","_d","_c","ast2String","_f","_e","_h","_g","activePagePlugin","nextTick","params","formatParams","functionBody","functionName","beforeSaveMethod","getOptions","_hoisted_1","_hoisted_2","_hoisted_3","_createBlock","_component_tiny_dialog_box","$setup","_createElementVNode","_createVNode","_component_tiny_button","_cache","_component_tiny_alert","_openBlock","_resolveDynamicComponent","$props","commonEvents","allEvents","checkEvent","event","e","three","__props","emits","__emit","formData","ruleForm","rules","rule","value","callback","closeDialog","addMethod","valid","eventDescription","_unref","TinyDialogBox","TinyButton","TinyForm","TinyFormItem","TinyInput","$event","BlockLinkEvent","BindEventsDialog","Popover","iconChevronDown","SvgButton","AddEventsDialog","getBlockEvents","getCurrentBlock","removeEventLink","useBlock","getMaterial","useMaterial","confirm","useModal","locale","i18n","isBlock","computed","isEmpty","renderEventList","watchEffect","componentName","componentSchema","keys","componentEvent","eventArgs","action","blockEvents","componentId","openActionDialog","isAdd","openDialog","deleteAction","useMessage","visible","_hoisted_5","_hoisted_6","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_component_tiny_popover","_component_icon_chevron_down","_createElementBlock","_Fragment","_renderList","_normalizeClass","_toDisplayString","_component_svg_icon","_withDirectives","_createTextVNode","_component_block_link_event","_component_svg_button","_component_bind_events_dialog","_component_add_events_dialog","DEFAULT_LOOP_NAME","constants","string2Obj","utils","SwitchConfigurator","Tooltip","VariableConfigurator","InputConfigurator","CodeConfigurator","condition","isBind","PROP_DATA_TYPE","getIndexName","useProperties","watch","setLoopKey","getSchema","setProp","schema","isNumber","newPropsKey","openEditor","setConfig","operateNode","_schemaCondition","children","rest","setLoopIndex","loopArgs","newLoop","_loop","_loopArgs","_children","_hoisted_12","_hoisted_13","_hoisted_4","_component_switch_configurator","_component_variable_configurator","_hoisted_7","_component_code_configurator","_component_input_configurator","_component_tiny_tooltip","activeNames","panelState","PluginPanel","$emit","TinyCollapse","TinyCollapseItem","BindEvents","AdvanceConfig","NEW_METHOD_TYPE","INVALID_VARNAME_CHAR_RE","VALID_VARNAME_RE","METHOD_TIPS_MAP","VueMonaco","Input","Checkbox","getMethodNameList","context","inject","editorOptions","editorContentChange","content","validMethodNameEmpty","validMethodNameExist","invalidMethodName","validRules","_component_tiny_input","_component_tiny_checkbox","_component_monaco_editor","Search","searchValue","filteredMethodList","generateMethodName","nameList","max","a","b","newMethod","methodList","item","_component_tiny_search","index","entry"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opentiny/tiny-engine-setting-events",
3
- "version": "2.6.2-alpha.0",
3
+ "version": "2.6.3",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -25,13 +25,13 @@
25
25
  "license": "MIT",
26
26
  "homepage": "https://opentiny.design/tiny-engine",
27
27
  "dependencies": {
28
- "@opentiny/tiny-engine-common": "2.6.2-alpha.0",
29
- "@opentiny/tiny-engine-configurator": "2.6.2-alpha.0",
30
- "@opentiny/tiny-engine-meta-register": "2.6.2-alpha.0",
31
- "@opentiny/tiny-engine-utils": "2.6.2-alpha.0"
28
+ "@opentiny/tiny-engine-common": "2.6.3",
29
+ "@opentiny/tiny-engine-configurator": "2.6.3",
30
+ "@opentiny/tiny-engine-meta-register": "2.6.3",
31
+ "@opentiny/tiny-engine-utils": "2.6.3"
32
32
  },
33
33
  "devDependencies": {
34
- "@opentiny/tiny-engine-vite-plugin-meta-comments": "2.6.2-alpha.0",
34
+ "@opentiny/tiny-engine-vite-plugin-meta-comments": "2.6.3",
35
35
  "@vitejs/plugin-vue": "^5.1.2",
36
36
  "@vitejs/plugin-vue-jsx": "^4.0.1",
37
37
  "vite": "^5.4.2"
@@ -41,5 +41,5 @@
41
41
  "@opentiny/vue-icon": "^3.20.0",
42
42
  "vue": "^3.4.15"
43
43
  },
44
- "gitHead": "2ba591367de3ffd4c0efcbe4180487e2f3be217c"
44
+ "gitHead": "d274eef2c6c1e037aa2810fa6690ae1bdf49f27a"
45
45
  }