@jecloud/func
Version:
JECloud 功能库
1 lines • 3.16 kB
JavaScript
var n=this&&this.__assign||function(){return n=Object.assign||function(n){for(var t,e=1,o=arguments.length;e<o;e++)for(var i in t=arguments[e])Object.prototype.hasOwnProperty.call(t,i)&&(n[i]=t[i]);return n},n.apply(this,arguments)};import{execScript as t,isPromise as e,isFunction as o,isEmpty as i,pick as r,omit as s}from"@jecloud/utils";import{doButtonDefaultEvents as c}from"../events/func-button-events";import{formatEventName as u}from"../../data/model/func/util";import{FuncRefEnum as v}from"../../data/enum";import{getGlobalConfig as f}from"../../config-provider";export function useEventAction(n){return{bindButtonEvents:d.bind(this,n),bindActionButtonEvents:a.bind(this,n),bindGridEvents:l.bind(this,n),bindFormEvents:p.bind(this,n),bindFormFieldEvents:b.bind(this,n),bindGridColumnEvents:E.bind(this,n)}}function d(n,t){var e=t.button,o={click:function(){return c(n,t)}};return m({$func:n,events:e.events,defaultEvents:o,options:t})}function a(t,e){var o=e.button.events,i={click:function(o){return c(t,n(n({type:"action"},e),{eventOptions:o}))}},u=["click","before-click","after-click"],v=m({$func:t,events:r(o,u),defaultEvents:i,options:e}),f=bindEvents4Sync({$func:t,events:s(o,u),options:e});return n(n({},v),f)}function l(n,t){var e=n.getFuncData(),o=n.getViewRef(v.FUNC_GRID);return m({$func:n,events:e.info.gridEvents,defaultEvents:t.defaultEvents,eventWhiteList:["drop","before-drop"],options:{$grid:o}})}function p(n,t){var e=n.getFuncData(),o=n.getViewRef(v.FUNC_FORM);return m({$func:n,events:e.info.formEvents,defaultEvents:t.defaultEvents,options:{$form:o}})}function b(n,t){return bindEvents4Sync({$func:n,events:t.field.events,options:t})}function E(n,t){return bindEvents4Sync({$func:n,events:t.column.events,options:t})}function m(t){var e=t.$func,o=t.events,i=void 0===o?{}:o,r=t.defaultEvents,s=void 0===r?{}:r,c=t.eventWhiteList,v=void 0===c?[]:c,f=t.options,d="before-",a="after-",l={},p=Object.keys(i).filter((function(n){return v.includes(n)||!n.startsWith(d)&&!n.startsWith(a)}));return p.push.apply(p,Object.keys(s).filter((function(n){return!p.includes(n)}))),p.forEach((function(t){var o=t,r=i[o],c=i[d+o],p=i[a+o],b=v.includes(o),E=u(o,!0);l[E]=function(t){var i=n(n({$func:e},f),t);h({eventOptions:i,code:c,before:!0,disabled:b}).then((function(){var n;return r?h({eventOptions:i,code:r}):null===(n=s[o])||void 0===n?void 0:n.call(s,t)})).then((function(){h({eventOptions:i,code:p,disabled:b})})).catch((function(n){console.log(n)}))}})),l}function h(n){var t=n.eventOptions,o=n.code,r=n.before;if(n.disabled||i(o))return Promise.resolve();var s=doEvents4Sync({eventOptions:t,code:o});return r?e(s)?s:!1!==s?Promise.resolve():Promise.reject():Promise.resolve()}export function bindEvents4Sync(t){var e=t.$func,o=t.events,i=void 0===o?{}:o,r=t.options,s={};return Object.keys(i).forEach((function(t){var o=t,c=i[o],v=u(o,!0);s[v]=function(t){var o=n(n({$func:e},r),t);return doEvents4Sync({$func:e,eventOptions:o,code:c})}})),s}export function doEvents4Sync(e){var r,s=e.$func,c=e.eventOptions,u=e.code;if(!i(u)){var v=null!==(r=f("JE"))&&void 0!==r?r:{},d={EventOptions:n({$func:s},c),JE:v};return o(u)?u(d):t(u,d)}}