@nocobase/plugin-custom-variables 2.0.5 → 2.0.7

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.
@@ -1,4 +1,4 @@
1
- import { FC } from "react";
1
+ import { FC } from 'react';
2
2
  export declare const AddVariableButton: FC<{
3
3
  onSuccess?: () => void;
4
4
  }>;
@@ -7,4 +7,4 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
 
10
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("react-i18next"),require("@nocobase/client"),require("@formily/react"),require("@nocobase/utils/client"),require("@ant-design/icons"),require("antd")):"function"==typeof define&&define.amd?define("@nocobase/plugin-custom-variables",["react","react-i18next","@nocobase/client","@formily/react","@nocobase/utils/client","@ant-design/icons","antd"],t):"object"==typeof exports?exports["@nocobase/plugin-custom-variables"]=t(require("react"),require("react-i18next"),require("@nocobase/client"),require("@formily/react"),require("@nocobase/utils/client"),require("@ant-design/icons"),require("antd")):e["@nocobase/plugin-custom-variables"]=t(e.react,e["react-i18next"],e["@nocobase/client"],e["@formily/react"],e["@nocobase/utils/client"],e["@ant-design/icons"],e.antd)}(self,function(e,t,n,r,o,a,i){return function(){"use strict";var l={482:function(e){e.exports=a},505:function(e){e.exports=r},772:function(e){e.exports=n},584:function(e){e.exports=o},721:function(e){e.exports=i},156:function(t){t.exports=e},238:function(e){e.exports=t}},c={};function u(e){var t=c[e];if(void 0!==t)return t.exports;var n=c[e]={exports:{}};return l[e](n,n.exports,u),n.exports}u.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(t,{a:t}),t},u.d=function(e,t){for(var n in t)u.o(t,n)&&!u.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},u.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},u.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};return!function(){u.r(s),u.d(s,{default:function(){return J}});var e=u(772),t=u(584),n=u(156),r=u.n(n),o=(0,n.createContext)({onSuccess:function(){}}),a=function(t){var n=(0,e.useToken)().token,a=(0,e.useSchemaInitializerRender)("customVariables:addVariable").render;return r().createElement(o.Provider,{value:{onSuccess:t.onSuccess||function(){}}},a({style:{borderRadius:n.borderRadius}}))},i=u(238),l="custom-variables";function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}function f(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}var p=function(){var t,o=(0,i.useTranslation)(l).t,a=(0,e.useCurrentRoute)(),u=(0,e.useNocoBaseRoutes)().updateRoute,s=(0,n.useMemo)(function(){return{type:"object",title:o("Edit badge"),properties:{count:{title:o("Badge"),"x-decorator":"FormItem","x-decorator-props":{tooltip:o("You can enter numbers, text, variables, aggregation variables, expressions, etc.")},"x-component":function(t){var n=(0,e.useVariableOptions)({});return r().createElement(e.Variable.TextArea,f(c({},t),{scope:n}))},description:r().createElement("span",null,o("Syntax references: "),r().createElement("a",{href:"https://docs.nocobase.com/handbook/calculation-engines/formula",target:"_blank",rel:"noreferrer"},"Formula.js"))},color:{title:o("Background color"),"x-decorator":"FormItem","x-component":"ColorPicker","x-component-props":{}},textColor:{title:o("Text color"),"x-decorator":"FormItem","x-component":"ColorPicker","x-component-props":{}},size:{title:o("Size"),"x-decorator":"FormItem","x-component":"Select",enum:[{label:o("Default"),value:"default"},{label:o("Small"),value:"small"}],default:"default"},overflowCount:{title:o("Max number"),"x-decorator":"FormItem","x-decorator-props":{tooltip:o("Maximum number to display when the badge is a number")},"x-component":"InputNumber",default:99},showZero:{title:o("Show zero"),"x-decorator":"FormItem","x-decorator-props":{tooltip:o("Whether to show the badge when it is a number and the number is 0")},"x-component":"Checkbox",default:!1}}}},[o]),p=(0,n.useMemo)(function(){var e;return null==(e=a.options)?void 0:e.badge},[null==(t=a.options)?void 0:t.badge]),d=(0,n.useCallback)(function(e){if(void 0!==a.id){var t;u(a.id,{options:f(c({},a.options),{badge:f(c({},null==(t=a.options)?void 0:t.badge,e),{count:null==e.count||""===e.count?void 0:e.count})})})}},[a.id,a.options,u]);return r().createElement(e.SchemaSettingsModalItem,{title:o("Edit badge"),eventKey:"edit-badge",schema:s,initialValues:p,onSubmit:d})},d=u(721),m=u(482),b=u(505);function v(){var e,t,n=(e=["\n margin-bottom: 1.5em;\n padding: 1em;\n background-color: ",";\n\n > *:last-child {\n margin-bottom: 0;\n }\n\n dl {\n display: flex;\n align-items: baseline;\n\n dt {\n color: ",";\n &:after {\n content: ':';\n margin-right: 0.5em;\n }\n }\n }\n\n p {\n color: ",";\n }\n "],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return v=function(){return n},n}var y=(0,e.createStyles)(function(e){var t=e.css,n=e.token;return{container:t(v(),n.colorFillAlter,n.colorText,n.colorTextDescription)}});function h(t){var n=t.label,o=t.title,a=t.icon,i=t.description,l=y().styles;return r().createElement("div",{className:(0,e.cx)(l.container,t.className)},r().createElement("dl",null,r().createElement("dt",null,n),r().createElement("dd",null,r().createElement(d.Tag,{icon:a,style:{background:"none"}},o))),i?r().createElement("p",null,i):null)}function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function x(e,t,n,r,o,a,i){try{var l=e[a](i),c=l.value}catch(e){n(e);return}l.done?t(c):Promise.resolve(c).then(r,o)}function O(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function i(e){x(a,r,o,i,l,"next",e)}function l(e){x(a,r,o,i,l,"throw",e)}i(void 0)})}}function S(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function w(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function E(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return g(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return g(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function j(e,t){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(a){return function(l){var c=[a,l];if(n)throw TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,r=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=t.call(e,i)}catch(e){c=[6,e],r=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}function C(){var e,t,n=(e=["\n position: relative;\n width: 100%;\n "],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return C=function(){return n},n}function P(t){var n=t.value,o=t.onChange,a=t.renderSchemaComponent;return r().createElement(e.VariableInput,{value:n,onChange:o,renderSchemaComponent:a})}function I(){return!0}var k=(0,b.observer)(function(t){var n,o,a=t.filter,i=w(t,["filter"]),l=(0,e.useCompile)(),c=(0,e.useCollectionManager_deprecated)().getCollectionFields,u=(0,b.useForm)().values,s=E((0,e.parseCollectionName)(null==u?void 0:u.collection),2),f=s[0],p=c(s[1],f);return r().createElement(d.Select,(n=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){S(e,t,n[t])})}return e}({popupMatchSelectWidth:!1},i),o=o={options:p.filter(void 0===a?I:a).map(function(e){var t;return{label:l(null==(t=e.uiSchema)?void 0:t.title),value:e.name}})},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(o)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(o)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(o,e))}),n))},{displayName:"FieldsSelect"}),A=function(n,a){var i;return{type:"object",properties:S({},a,{"x-decorator":"Form","x-component":"Action.Drawer","x-component-props":{zIndex:9999},type:"void",title:{create:'{{t("Add aggregate variable", { ns: "'.concat(l,'" })}}'),update:'{{t("Edit aggregate variable", { ns: "'.concat(l,'" })}}')}[a],properties:{description:{type:"void","x-component":h,"x-component-props":{label:'{{t("Variable type", { ns: "'.concat(l,'" })}}'),title:'{{t("Aggregate", { ns: "'.concat(l,'" })}}'),icon:r().createElement(m.BarChartOutlined,null),description:'{{t("Create an aggregate variable that performs statistical calculations (COUNT, SUM, AVG, MIN, MAX) on data from a specific collection. You can apply filters to narrow down the data scope and optionally use distinct values for counting operations.", { ns: "'.concat(l,'" })}}')}},variableTitle:{type:"string",title:'{{t("Variable name", { ns: "'.concat(l,'" })}}'),"x-decorator":"FormItem","x-component":"Input",required:!0,default:null==n?void 0:n.label},aggregator:{type:"string",title:'{{t("Aggregator function", { ns: "'.concat(l,'" })}}'),"x-decorator":"FormItem","x-component":"Radio.Group",enum:[{label:"COUNT",value:"count"},{label:"SUM",value:"sum"},{label:"AVG",value:"avg"},{label:"MIN",value:"min"},{label:"MAX",value:"max"}],required:!0,default:(null==n?void 0:n.options.aggregator)||"count"},collectionField:{type:"void","x-decorator":"SchemaComponentContext.Provider","x-decorator-props":{value:{designable:!1}},"x-component":"Grid",properties:{row:{type:"void","x-component":"Grid.Row",properties:{target:{type:"void","x-component":"Grid.Col",properties:{collection:{type:"string",required:!0,"x-decorator":"FormItem","x-component":"DataSourceCollectionCascader","x-component-props":{dataSourceFilter:function(e){return"main"===e.key||e.options.isDBInstance}},title:'{{t("Data of collection", { ns: "'.concat(l,'" })}}'),"x-reactions":[{target:"params.field",effects:["onFieldValueChange"],fulfill:{state:{value:null}}},{target:"params.filter",effects:["onFieldValueChange"],fulfill:{state:{value:null}}}],default:null==n?void 0:n.options.collection}}},field:{type:"void","x-component":"Grid.Col",properties:{"params.field":{type:"string",title:'{{t("Field to aggregate", { ns: "'.concat(l,'" })}}'),"x-decorator":"FormItem","x-component":k,"x-component-props":{filter:function(e){return!e.hidden&&e.interface&&!["belongsTo","hasOne","hasMany","belongsToMany"].includes(e.type)}},required:!0,"x-reactions":[{dependencies:["collection"],fulfill:{state:{visible:"{{!!$deps[0]}}"}}}],default:null==n?void 0:n.options.params.field}}}}}}},params:{type:"object",properties:{distinct:{type:"boolean","x-decorator":"FormItem","x-component":"Checkbox","x-content":'{{t("Distinct", { ns: "'.concat(l,'" })}}'),"x-reactions":[{dependencies:["collection","aggregator"],fulfill:{state:{visible:'{{!!$deps[0] && ["count"].includes($deps[1])}}'}}}],default:null==n?void 0:n.options.params.distinct},filter:{type:"object",title:'{{t("Filter")}}',"x-decorator":"FormItem","x-component":"Filter","x-use-component-props":function(){var t=(0,b.useForm)().values,n=E((0,e.parseCollectionName)(null==t?void 0:t.collection),2),r=n[0],o=n[1];return{options:(0,e.useCollectionFilterOptions)(o,r),className:(0,e.css)(C())}},"x-component-props":{dynamicComponent:P},"x-reactions":[{dependencies:["collection"],fulfill:{state:{visible:"{{!!$deps[0]}}"}}}],default:null==n?void 0:n.options.params.filter}}},precision:{type:"number",title:'{{t("Result precision", { ns: "'.concat(l,'" })}}'),description:'{{t("Number of decimal places for query result.", { ns: "'.concat(l,'" })}}'),"x-decorator":"FormItem","x-component":"InputNumber","x-component-props":{min:0,max:14,step:1,precision:0},default:null!=(i=null==n?void 0:n.options.precision)?i:2},footer:{"x-component":"Action.Drawer.Footer",type:"void",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:function(){var t=(0,e.useActionContext)().setVisible,n=(0,b.useForm)();return{run:function(){return O(function(){return j(this,function(e){switch(e.label){case 0:return t(!1),[4,n.reset()];case 1:return e.sent(),[2]}})})()}}}}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:function(){var i=(0,e.useActionContext)().setVisible,l=(0,b.useForm)(),c=(0,e.useVariableScopeInfo)().getVariableScopeInfo,u=(0,e.useAPIClient)(),s=r().useContext(o).onSuccess;return{run:function(){return O(function(){var e,r,o,f;return j(this,function(p){switch(p.label){case 0:return[4,l.submit()];case 1:if(p.sent(),r=(e=l.values).variableTitle,o=w(e,["variableTitle"]),!(f=c()).scopeId)throw Error("Scope info not found");if("update"!==a)return[3,3];return[4,u.request({url:"customVariables:update",method:"POST",params:{filterByTk:n.name},data:{label:r,options:o}})];case 2:p.sent(),p.label=3;case 3:if("create"!==a)return[3,5];return[4,u.request({url:"customVariables:create",method:"POST",data:{name:(0,t.uid)(),label:r,declaredAt:f.scopeId,type:"aggregate",options:o}})];case 4:p.sent(),p.label=5;case 5:return[4,l.reset()];case 6:return p.sent(),i(!1),null==s||s(),[2]}})})()}}}}}}}}})}},V=new e.SchemaInitializer({name:"customVariables:addVariable",title:'{{t("Add variable", { ns: "'.concat(l,'" })}}'),icon:"PlusOutlined",items:[{name:"aggregateVariable",title:'{{t("Aggregate variable", { ns: "'.concat(l,'" })}}'),Component:function(){var t=E(r().useState(!1),2),n=t[0],o=t[1],a=(0,i.useTranslation)(l).t;return r().createElement(r().Fragment,null,r().createElement(e.SchemaInitializerItem,{title:a("Aggregate variable"),onClick:function(){o(!0)}}),r().createElement(e.ActionContextProvider,{value:{visible:n,setVisible:o}},r().createElement(e.SchemaComponentContext.Provider,{value:{designable:!1}},r().createElement(e.SchemaComponent,{schema:A(void 0,"create")}))))}}]}),T=function(t){var n=t.visible,o=t.setVisible,a=t.initialValues;return r().createElement(e.ActionContextProvider,{value:{visible:n,setVisible:o}},r().createElement(e.SchemaComponentContext.Provider,{value:{designable:!1}},r().createElement(e.SchemaComponent,{schema:A(a,"update")})))};function F(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function M(e,t,n,r,o,a,i){try{var l=e[a](i),c=l.value}catch(e){n(e);return}l.done?t(c):Promise.resolve(c).then(r,o)}function q(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function i(e){M(a,r,o,i,l,"next",e)}function l(e){M(a,r,o,i,l,"throw",e)}i(void 0)})}}function D(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return F(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return F(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function N(e,t){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(a){return function(l){var c=[a,l];if(n)throw TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,r=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=t.call(e,i)}catch(e){c=[6,e],r=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var R=function(t){var o=D((0,n.useState)(!1),2),a=o[0],c=o[1],u=(0,i.useTranslation)(l).t,s=(0,e.useToken)().token,f=(0,n.useRef)(a);return(0,n.useEffect)(function(){!a&&f.current&&t.refresh(),f.current=a},[a,t.refresh]),r().createElement(r().Fragment,null,r().createElement("div",{onClick:function(e){c(!0)}},r().createElement(m.EditOutlined,null),r().createElement("span",{style:{marginLeft:s.marginXS}},u("Edit"))),r().createElement(T,{visible:a,setVisible:c,initialValues:t.variable}))},B=function(t){var n,o=(0,e.useAPIClient)(),a=(0,i.useTranslation)(l).t,c=[{key:"edit",label:r().createElement(R,{variable:t.variable,refresh:t.refresh})},{key:"delete",label:a("Delete"),icon:r().createElement(m.DeleteOutlined,null),onClick:(n=q(function(e){return N(this,function(n){return e.domEvent,d.Modal.confirm({title:a("Delete Variable"),content:a('Are you sure you want to delete "{{label}}" variable?',{label:t.variable.label}),okText:a("Yes"),cancelText:a("No"),onOk:q(function(){return N(this,function(e){switch(e.label){case 0:return[4,o.request({url:"customVariables:destroy",method:"POST",params:{filterByTk:t.variable.name}})];case 1:return e.sent(),t.refresh(),[2]}})})}),[2]})}),function(e){return n.apply(this,arguments)})}];return r().createElement("div",{style:{paddingLeft:"8px",cursor:"pointer",opacity:+!t.hidden},onClick:function(e){e.stopPropagation()}},r().createElement(d.Dropdown,{menu:{items:c}},r().createElement(m.EllipsisOutlined,null)))},_=function(t){var o=D((0,n.useState)(!1),2),a=o[0],i=o[1];return(0,e.useFlag)().isInXButton?r().createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},onMouseEnter:function(){return i(!0)},onMouseLeave:function(){return i(!1)}},r().createElement("span",null,t.value),r().createElement(B,{variable:t.variable,hidden:!a,refresh:t.refresh})):r().createElement(r().Fragment,null,t.value)},$=function(){var t=D((0,n.useState)([]),2),o=t[0],a=t[1],i=(0,e.useAPIClient)(),l=(0,e.useVariableScopeInfo)().getVariableScopeInfo,c=D((0,n.useState)(!1),2),u=c[0],s=c[1],f=(0,n.useCallback)(function(){var e=l().scopeId;e&&(s(!0),i.request({url:"customVariables:list",method:"GET",params:{filter:{declaredAt:e}}}).then(function(e){a(e.data.data.map(function(e){return{label:r().createElement(_,{value:e.label,variable:e,refresh:f}),value:e.name}})),s(!1)}).catch(function(e){console.error("Error fetching custom variables:",e),a([]),s(!1)}))},[l]);return(0,n.useEffect)(function(){f()},[f]),{options:o,loading:u,refresh:f}};function z(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function G(e,t,n,r,o,a,i){try{var l=e[a](i),c=l.value}catch(e){n(e);return}l.done?t(c):Promise.resolve(c).then(r,o)}function L(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function i(e){G(a,r,o,i,l,"next",e)}function l(e){G(a,r,o,i,l,"throw",e)}i(void 0)})}}function U(e,t,n){return(U=Z()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&X(o,n.prototype),o}).apply(null,arguments)}function W(e){return(W=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function X(e,t){return(X=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function Y(e,t){if(e){if("string"==typeof e)return z(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return z(e,t)}}function K(e){var t="function"==typeof Map?new Map:void 0;return(K=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return U(e,arguments,W(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),X(n,e)})(e)}function Z(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(Z=function(){return!!e})()}function H(e,t){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(a){return function(l){var c=[a,l];if(n)throw TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,r=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=t.call(e,i)}catch(e){c=[6,e],r=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var J=function(o){var c;if("function"!=typeof o&&null!==o)throw TypeError("Super expression must either be null or a function");function u(){var e,t;if(!(this instanceof u))throw TypeError("Cannot call a class as a function");return e=u,t=arguments,e=W(e),function(e,t){var n;if(t&&("object"==((n=t)&&"undefined"!=typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,Z()?Reflect.construct(e,t||[],W(this).constructor):e.apply(this,t))}return u.prototype=Object.create(o&&o.prototype,{constructor:{value:u,writable:!0,configurable:!0}}),o&&X(u,o),c=[{key:"load",value:function(){var o=this;return L(function(){return H(this,function(c){return o.app.schemaInitializerManager.add(V),o.app.schemaSettingsManager.addItem("menuSettings:menuItem","badge",{Component:p,sort:401}),o.app.schemaSettingsManager.addItem("PageTabSettings","badge",{Component:p,sort:201}),o.app.apiClient.axios.interceptors.response.use(function(e){var t=e.config.url.split("?")[0];return o.app.eventBus.dispatchEvent(new CustomEvent("collection:".concat(t))),e}),o.app.registerVariable({name:"$customVariables",useOption:function(){var e=$(),t=e.options,o=e.refresh,c=e.loading,u=(0,i.useTranslation)(l).t,s=(0,n.useMemo)(function(){return{label:u("Custom Variables"),value:"$customVariables",children:((function(e){if(Array.isArray(e))return z(e)})(t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||Y(t)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).concat([{label:r().createElement(a,{onSuccess:o}),disabled:!0,value:"none"}])}},[t,o]);return(0,n.useMemo)(function(){return{option:s,visible:!c}},[s,c])},useCtx:function(){var o,a,i=(0,e.useAPIClient)(),l=(0,e.useApp)(),c=(0,e.useLocalVariablesWithoutCustomVariable)(),u=(0,e.useVariables)(),s=(o=r().useState(0),function(e){if(Array.isArray(e))return e}(o)||function(e,t){var n,r,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(o,2)||Y(o,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),f=s[0],p=s[1],d=r().useRef(new Set),m=(0,n.useCallback)(function(){p(function(e){return e+1})},[]),b=(0,n.useCallback)((a=L(function(n){var r,o;return H(this,function(a){switch(a.label){case 0:return r={},(0,t.flatten)(n,{breakOn:function(e){var t=e.key;return t.startsWith("$")&&"$and"!==t&&"$or"!==t},transformValue:function(t){if(!(0,e.isVariable)(t))return t;var n=null==u?void 0:u.parseVariable(t,c).then(function(e){return e.value});return r[t]=n,n}}),[4,Promise.all((o=Object.keys(r)).map(function(e){return r[e]}))];case 1:return a.sent().forEach(function(e,t){r[o[t]]=e}),[2,r]}})}),function(e){return a.apply(this,arguments)}),[c,null==u?void 0:u.parseVariable]);return(0,n.useEffect)(function(){return function(){d.current.forEach(function(e){l.eventBus.removeEventListener(e,m)})}},[]),(0,n.useMemo)(function(){var e;return e=L(function(e){var t,n,r,o,a,c,u;return H(this,function(s){switch(s.label){case 0:return n=e.variableName.replace("$customVariables.",""),[4,i.request({url:"customVariables:get?filter[name]=".concat(n),method:"GET"})];case 1:if(!(null==(r=s.sent())||null==(t=r.data)?void 0:t.data))throw Error('Custom variable "'.concat(n,'" not found. It may have been deleted.'));return[4,b((o=r.data.data).options.params.filter)];case 2:return a=s.sent(),c=["collection:".concat(o.options.collection,":create"),"collection:".concat(o.options.collection,":update"),"collection:".concat(o.options.collection,":destroy")],d.current.forEach(function(e){l.eventBus.removeEventListener(e,m)}),c.forEach(function(e){d.current.add(e),l.eventBus.addEventListener(e,m)}),[4,i.request({url:"customVariables:parse?name=".concat(n),method:"POST",data:{filterCtx:a}})];case 3:return[2,null==(u=s.sent().data)?void 0:u.data]}})}),function(t){return e.apply(this,arguments)}},[f])}}),[2]})})()}}],function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(u.prototype,c),u}(K(e.Plugin))}(),s}()});
10
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react"),require("react-i18next"),require("@nocobase/client"),require("@formily/react"),require("@nocobase/utils/client"),require("@ant-design/icons"),require("antd")):"function"==typeof define&&define.amd?define("@nocobase/plugin-custom-variables",["react","react-i18next","@nocobase/client","@formily/react","@nocobase/utils/client","@ant-design/icons","antd"],t):"object"==typeof exports?exports["@nocobase/plugin-custom-variables"]=t(require("react"),require("react-i18next"),require("@nocobase/client"),require("@formily/react"),require("@nocobase/utils/client"),require("@ant-design/icons"),require("antd")):e["@nocobase/plugin-custom-variables"]=t(e.react,e["react-i18next"],e["@nocobase/client"],e["@formily/react"],e["@nocobase/utils/client"],e["@ant-design/icons"],e.antd)}(self,function(e,t,n,r,o,a,i){return function(){"use strict";var l={482:function(e){e.exports=a},505:function(e){e.exports=r},772:function(e){e.exports=n},584:function(e){e.exports=o},721:function(e){e.exports=i},156:function(t){t.exports=e},238:function(e){e.exports=t}},c={};function u(e){var t=c[e];if(void 0!==t)return t.exports;var n=c[e]={exports:{}};return l[e](n,n.exports,u),n.exports}u.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return u.d(t,{a:t}),t},u.d=function(e,t){for(var n in t)u.o(t,n)&&!u.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},u.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},u.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};return!function(){u.r(s),u.d(s,{default:function(){return Q}});var e=u(772),t=u(584),n=u(156),r=u.n(n),o=(0,n.createContext)({onSuccess:function(){}}),a=function(t){var n=(0,e.useToken)().token,a=(0,e.useSchemaInitializerRender)("customVariables:addVariable").render;return r().createElement(o.Provider,{value:{onSuccess:t.onSuccess||function(){}}},a({style:{borderRadius:n.borderRadius}}))},i=u(238),l="custom-variables";function c(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}function f(e,t){return t=null!=t?t:{},Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(t)).forEach(function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}),e}var p=function(t){var n=(0,e.useVariableOptions)({});return r().createElement(e.Variable.TextArea,f(c({},t),{scope:n}))},d=function(){var t,o=(0,i.useTranslation)(l).t,a=(0,e.useCurrentRoute)(),u=(0,e.useNocoBaseRoutes)().updateRoute,s=(0,n.useMemo)(function(){return{type:"object",title:o("Edit badge"),properties:{count:{title:o("Badge"),"x-decorator":"FormItem","x-decorator-props":{tooltip:o("You can enter numbers, text, variables, aggregation variables, expressions, etc.")},"x-component":p,description:r().createElement("span",null,o("Syntax references: "),r().createElement("a",{href:"https://docs.nocobase.com/handbook/calculation-engines/formula",target:"_blank",rel:"noreferrer"},"Formula.js"))},color:{title:o("Background color"),"x-decorator":"FormItem","x-component":"ColorPicker","x-component-props":{}},textColor:{title:o("Text color"),"x-decorator":"FormItem","x-component":"ColorPicker","x-component-props":{}},size:{title:o("Size"),"x-decorator":"FormItem","x-component":"Select",enum:[{label:o("Default"),value:"default"},{label:o("Small"),value:"small"}],default:"default"},overflowCount:{title:o("Max number"),"x-decorator":"FormItem","x-decorator-props":{tooltip:o("Maximum number to display when the badge is a number")},"x-component":"InputNumber",default:99},showZero:{title:o("Show zero"),"x-decorator":"FormItem","x-decorator-props":{tooltip:o("Whether to show the badge when it is a number and the number is 0")},"x-component":"Checkbox",default:!1}}}},[o]),d=(0,n.useMemo)(function(){var e;return null==(e=a.options)?void 0:e.badge},[null==(t=a.options)?void 0:t.badge]),m=(0,n.useCallback)(function(e){if(void 0!==a.id){var t;u(a.id,{options:f(c({},a.options),{badge:f(c({},null==(t=a.options)?void 0:t.badge,e),{count:null==e.count||""===e.count?void 0:e.count})})})}},[a.id,a.options,u]);return r().createElement(e.SchemaSettingsModalItem,{title:o("Edit badge"),eventKey:"edit-badge",schema:s,initialValues:d,onSubmit:m})},m=u(721),b=u(482),v=u(505);function y(){var e,t,n=(e=["\n margin-bottom: 1.5em;\n padding: 1em;\n background-color: ",";\n\n > *:last-child {\n margin-bottom: 0;\n }\n\n dl {\n display: flex;\n align-items: baseline;\n\n dt {\n color: ",";\n &:after {\n content: ':';\n margin-right: 0.5em;\n }\n }\n }\n\n p {\n color: ",";\n }\n "],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return y=function(){return n},n}var h=(0,e.createStyles)(function(e){var t=e.css,n=e.token;return{container:t(y(),n.colorFillAlter,n.colorText,n.colorTextDescription)}});function g(t){var n=t.label,o=t.title,a=t.icon,i=t.description,l=h().styles;return r().createElement("div",{className:(0,e.cx)(l.container,t.className)},r().createElement("dl",null,r().createElement("dt",null,n),r().createElement("dd",null,r().createElement(m.Tag,{icon:a,style:{background:"none"}},o))),i?r().createElement("p",null,i):null)}function x(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function O(e,t,n,r,o,a,i){try{var l=e[a](i),c=l.value}catch(e){n(e);return}l.done?t(c):Promise.resolve(c).then(r,o)}function S(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function i(e){O(a,r,o,i,l,"next",e)}function l(e){O(a,r,o,i,l,"throw",e)}i(void 0)})}}function w(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function E(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],!(t.indexOf(n)>=0)&&Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function j(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return x(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return x(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function C(e,t){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(a){return function(l){var c=[a,l];if(n)throw TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,r=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=t.call(e,i)}catch(e){c=[6,e],r=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}function P(){var e,t,n=(e=["\n position: relative;\n width: 100%;\n "],t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}})));return P=function(){return n},n}function I(t){var n=t.value,o=t.onChange,a=t.renderSchemaComponent;return r().createElement(e.VariableInput,{value:n,onChange:o,renderSchemaComponent:a})}function k(){return!0}var A=(0,v.observer)(function(t){var n,o,a=t.filter,i=E(t,["filter"]),l=(0,e.useCompile)(),c=(0,e.useCollectionManager_deprecated)().getCollectionFields,u=(0,v.useForm)().values,s=j((0,e.parseCollectionName)(null==u?void 0:u.collection),2),f=s[0],p=c(s[1],f);return r().createElement(m.Select,(n=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){w(e,t,n[t])})}return e}({popupMatchSelectWidth:!1},i),o=o={options:p.filter(void 0===a?k:a).map(function(e){var t;return{label:l(null==(t=e.uiSchema)?void 0:t.title),value:e.name}})},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(o)):(function(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n.push.apply(n,r)}return n})(Object(o)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(o,e))}),n))},{displayName:"FieldsSelect"}),V=function(n,a){var i;return{type:"object",properties:w({},a,{"x-decorator":"Form","x-component":"Action.Drawer","x-component-props":{zIndex:9999},type:"void",title:{create:'{{t("Add aggregate variable", { ns: "'.concat(l,'" })}}'),update:'{{t("Edit aggregate variable", { ns: "'.concat(l,'" })}}')}[a],properties:{description:{type:"void","x-component":g,"x-component-props":{label:'{{t("Variable type", { ns: "'.concat(l,'" })}}'),title:'{{t("Aggregate", { ns: "'.concat(l,'" })}}'),icon:r().createElement(b.BarChartOutlined,null),description:'{{t("Create an aggregate variable that performs statistical calculations (COUNT, SUM, AVG, MIN, MAX) on data from a specific collection. You can apply filters to narrow down the data scope and optionally use distinct values for counting operations.", { ns: "'.concat(l,'" })}}')}},variableTitle:{type:"string",title:'{{t("Variable name", { ns: "'.concat(l,'" })}}'),"x-decorator":"FormItem","x-component":"Input",required:!0,default:null==n?void 0:n.label},aggregator:{type:"string",title:'{{t("Aggregator function", { ns: "'.concat(l,'" })}}'),"x-decorator":"FormItem","x-component":"Radio.Group",enum:[{label:"COUNT",value:"count"},{label:"SUM",value:"sum"},{label:"AVG",value:"avg"},{label:"MIN",value:"min"},{label:"MAX",value:"max"}],required:!0,default:(null==n?void 0:n.options.aggregator)||"count"},collectionField:{type:"void","x-decorator":"SchemaComponentContext.Provider","x-decorator-props":{value:{designable:!1}},"x-component":"Grid",properties:{row:{type:"void","x-component":"Grid.Row",properties:{target:{type:"void","x-component":"Grid.Col",properties:{collection:{type:"string",required:!0,"x-decorator":"FormItem","x-component":"DataSourceCollectionCascader","x-component-props":{dataSourceFilter:function(e){return"main"===e.key||e.options.isDBInstance}},title:'{{t("Data of collection", { ns: "'.concat(l,'" })}}'),"x-reactions":[{target:"params.field",effects:["onFieldValueChange"],fulfill:{state:{value:null}}},{target:"params.filter",effects:["onFieldValueChange"],fulfill:{state:{value:null}}}],default:null==n?void 0:n.options.collection}}},field:{type:"void","x-component":"Grid.Col",properties:{"params.field":{type:"string",title:'{{t("Field to aggregate", { ns: "'.concat(l,'" })}}'),"x-decorator":"FormItem","x-component":A,"x-component-props":{filter:function(e){return!e.hidden&&e.interface&&!["belongsTo","hasOne","hasMany","belongsToMany"].includes(e.type)}},required:!0,"x-reactions":[{dependencies:["collection"],fulfill:{state:{visible:"{{!!$deps[0]}}"}}}],default:null==n?void 0:n.options.params.field}}}}}}},params:{type:"object",properties:{distinct:{type:"boolean","x-decorator":"FormItem","x-component":"Checkbox","x-content":'{{t("Distinct", { ns: "'.concat(l,'" })}}'),"x-reactions":[{dependencies:["collection","aggregator"],fulfill:{state:{visible:'{{!!$deps[0] && ["count"].includes($deps[1])}}'}}}],default:null==n?void 0:n.options.params.distinct},filter:{type:"object",title:'{{t("Filter")}}',"x-decorator":"FormItem","x-component":"Filter","x-use-component-props":function(){var t=(0,v.useForm)().values,n=j((0,e.parseCollectionName)(null==t?void 0:t.collection),2),r=n[0],o=n[1];return{options:(0,e.useCollectionFilterOptions)(o,r),className:(0,e.css)(P())}},"x-component-props":{dynamicComponent:I},"x-reactions":[{dependencies:["collection"],fulfill:{state:{visible:"{{!!$deps[0]}}"}}}],default:null==n?void 0:n.options.params.filter}}},precision:{type:"number",title:'{{t("Result precision", { ns: "'.concat(l,'" })}}'),description:'{{t("Number of decimal places for query result.", { ns: "'.concat(l,'" })}}'),"x-decorator":"FormItem","x-component":"InputNumber","x-component-props":{min:0,max:14,step:1,precision:0},default:null!=(i=null==n?void 0:n.options.precision)?i:2},footer:{"x-component":"Action.Drawer.Footer",type:"void",properties:{cancel:{title:'{{t("Cancel")}}',"x-component":"Action","x-component-props":{useAction:function(){var t=(0,e.useActionContext)().setVisible,n=(0,v.useForm)();return{run:function(){return S(function(){return C(this,function(e){switch(e.label){case 0:return t(!1),[4,n.reset()];case 1:return e.sent(),[2]}})})()}}}}},submit:{title:'{{t("Submit")}}',"x-component":"Action","x-component-props":{type:"primary",useAction:function(){var i=(0,e.useActionContext)().setVisible,l=(0,v.useForm)(),c=(0,e.useVariableScopeInfo)().getVariableScopeInfo,u=(0,e.useAPIClient)(),s=r().useContext(o).onSuccess;return{run:function(){return S(function(){var e,r,o,f;return C(this,function(p){switch(p.label){case 0:return[4,l.submit()];case 1:if(p.sent(),r=(e=l.values).variableTitle,o=E(e,["variableTitle"]),!(f=c()).scopeId)throw Error("Scope info not found");if("update"!==a)return[3,3];return[4,u.request({url:"customVariables:update",method:"POST",params:{filterByTk:n.name},data:{label:r,options:o}})];case 2:p.sent(),p.label=3;case 3:if("create"!==a)return[3,5];return[4,u.request({url:"customVariables:create",method:"POST",data:{name:(0,t.uid)(),label:r,declaredAt:f.scopeId,type:"aggregate",options:o}})];case 4:p.sent(),p.label=5;case 5:return[4,l.reset()];case 6:return p.sent(),i(!1),null==s||s(),[2]}})})()}}}}}}}}})}},T=new e.SchemaInitializer({name:"customVariables:addVariable",title:'{{t("Add variable", { ns: "'.concat(l,'" })}}'),icon:"PlusOutlined",items:[{name:"aggregateVariable",title:'{{t("Aggregate variable", { ns: "'.concat(l,'" })}}'),Component:function(){var t=j(r().useState(!1),2),n=t[0],o=t[1],a=(0,i.useTranslation)(l).t;return r().createElement(r().Fragment,null,r().createElement(e.SchemaInitializerItem,{title:a("Aggregate variable"),onClick:function(){o(!0)}}),r().createElement(e.ActionContextProvider,{value:{visible:n,setVisible:o}},r().createElement(e.SchemaComponentContext.Provider,{value:{designable:!1}},r().createElement(e.SchemaComponent,{schema:V(void 0,"create")}))))}}]}),F=function(t){var n=t.visible,o=t.setVisible,a=t.initialValues;return r().createElement(e.ActionContextProvider,{value:{visible:n,setVisible:o}},r().createElement(e.SchemaComponentContext.Provider,{value:{designable:!1}},r().createElement(e.SchemaComponent,{schema:V(a,"update")})))};function M(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function q(e,t,n,r,o,a,i){try{var l=e[a](i),c=l.value}catch(e){n(e);return}l.done?t(c):Promise.resolve(c).then(r,o)}function D(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function i(e){q(a,r,o,i,l,"next",e)}function l(e){q(a,r,o,i,l,"throw",e)}i(void 0)})}}function N(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(e,t)||function(e,t){if(e){if("string"==typeof e)return M(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return M(e,t)}}(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function R(e,t){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(a){return function(l){var c=[a,l];if(n)throw TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,r=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=t.call(e,i)}catch(e){c=[6,e],r=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var B=function(t){var o=N((0,n.useState)(!1),2),a=o[0],c=o[1],u=(0,i.useTranslation)(l).t,s=(0,e.useToken)().token,f=(0,n.useRef)(a);return(0,n.useEffect)(function(){!a&&f.current&&t.refresh(),f.current=a},[a,t.refresh]),r().createElement(r().Fragment,null,r().createElement("div",{onClick:function(e){c(!0)}},r().createElement(b.EditOutlined,null),r().createElement("span",{style:{marginLeft:s.marginXS}},u("Edit"))),r().createElement(F,{visible:a,setVisible:c,initialValues:t.variable}))},_=function(t){var n,o=(0,e.useAPIClient)(),a=(0,i.useTranslation)(l).t,c=[{key:"edit",label:r().createElement(B,{variable:t.variable,refresh:t.refresh})},{key:"delete",label:a("Delete"),icon:r().createElement(b.DeleteOutlined,null),onClick:(n=D(function(e){return R(this,function(n){return e.domEvent,m.Modal.confirm({title:a("Delete Variable"),content:a('Are you sure you want to delete "{{label}}" variable?',{label:t.variable.label}),okText:a("Yes"),cancelText:a("No"),onOk:D(function(){return R(this,function(e){switch(e.label){case 0:return[4,o.request({url:"customVariables:destroy",method:"POST",params:{filterByTk:t.variable.name}})];case 1:return e.sent(),t.refresh(),[2]}})})}),[2]})}),function(e){return n.apply(this,arguments)})}];return r().createElement("div",{style:{paddingLeft:"8px",cursor:"pointer",opacity:+!t.hidden},onClick:function(e){e.stopPropagation()}},r().createElement(m.Dropdown,{menu:{items:c}},r().createElement(b.EllipsisOutlined,null)))},$=function(t){var o=N((0,n.useState)(!1),2),a=o[0],i=o[1];return(0,e.useFlag)().isInXButton?r().createElement("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center"},onMouseEnter:function(){return i(!0)},onMouseLeave:function(){return i(!1)}},r().createElement("span",null,t.value),r().createElement(_,{variable:t.variable,hidden:!a,refresh:t.refresh})):r().createElement(r().Fragment,null,t.value)},z=function(){var t=N((0,n.useState)([]),2),o=t[0],a=t[1],i=(0,e.useAPIClient)(),l=(0,e.useVariableScopeInfo)().getVariableScopeInfo,c=N((0,n.useState)(!1),2),u=c[0],s=c[1],f=(0,n.useCallback)(function(){var e=l().scopeId;e&&(s(!0),i.request({url:"customVariables:list",method:"GET",params:{filter:{declaredAt:e}}}).then(function(e){a(e.data.data.map(function(e){return{label:r().createElement($,{value:e.label,variable:e,refresh:f}),value:e.name}})),s(!1)}).catch(function(e){console.error("Error fetching custom variables:",e),a([]),s(!1)}))},[l]);return(0,n.useEffect)(function(){f()},[f]),{options:o,loading:u,refresh:f}};function G(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function L(e,t,n,r,o,a,i){try{var l=e[a](i),c=l.value}catch(e){n(e);return}l.done?t(c):Promise.resolve(c).then(r,o)}function U(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function i(e){L(a,r,o,i,l,"next",e)}function l(e){L(a,r,o,i,l,"throw",e)}i(void 0)})}}function W(e,t,n){return(W=H()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&Y(o,n.prototype),o}).apply(null,arguments)}function X(e){return(X=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Y(e,t){return(Y=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function K(e,t){if(e){if("string"==typeof e)return G(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return G(e,t)}}function Z(e){var t="function"==typeof Map?new Map:void 0;return(Z=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return W(e,arguments,X(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),Y(n,e)})(e)}function H(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(H=function(){return!!e})()}function J(e,t){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function l(a){return function(l){var c=[a,l];if(n)throw TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,r=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=t.call(e,i)}catch(e){c=[6,e],r=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}var Q=function(o){var c;if("function"!=typeof o&&null!==o)throw TypeError("Super expression must either be null or a function");function u(){var e,t;if(!(this instanceof u))throw TypeError("Cannot call a class as a function");return e=u,t=arguments,e=X(e),function(e,t){var n;if(t&&("object"==((n=t)&&"undefined"!=typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,H()?Reflect.construct(e,t||[],X(this).constructor):e.apply(this,t))}return u.prototype=Object.create(o&&o.prototype,{constructor:{value:u,writable:!0,configurable:!0}}),o&&Y(u,o),c=[{key:"load",value:function(){var o=this;return U(function(){return J(this,function(c){return o.app.schemaInitializerManager.add(T),o.app.schemaSettingsManager.addItem("menuSettings:menuItem","badge",{Component:d,sort:401}),o.app.schemaSettingsManager.addItem("PageTabSettings","badge",{Component:d,sort:201}),o.app.apiClient.axios.interceptors.response.use(function(e){var t=e.config.url.split("?")[0];return o.app.eventBus.dispatchEvent(new CustomEvent("collection:".concat(t))),e}),o.app.registerVariable({name:"$customVariables",useOption:function(){var e=z(),t=e.options,o=e.refresh,c=e.loading,u=(0,i.useTranslation)(l).t,s=(0,n.useMemo)(function(){return{label:u("Custom Variables"),value:"$customVariables",children:((function(e){if(Array.isArray(e))return G(e)})(t)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(t)||K(t)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).concat([{label:r().createElement(a,{onSuccess:o}),disabled:!0,value:"none"}])}},[t,o]);return(0,n.useMemo)(function(){return{option:s,visible:!c}},[s,c])},useCtx:function(){var o,a,i=(0,e.useAPIClient)(),l=(0,e.useApp)(),c=(0,e.useLocalVariablesWithoutCustomVariable)(),u=(0,e.useVariables)(),s=(o=r().useState(0),function(e){if(Array.isArray(e))return e}(o)||function(e,t){var n,r,o=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],i=!0,l=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),a.length!==t);i=!0);}catch(e){l=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(l)throw r}}return a}}(o,2)||K(o,2)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),f=s[0],p=s[1],d=r().useRef(new Set),m=(0,n.useCallback)(function(){p(function(e){return e+1})},[]),b=(0,n.useCallback)((a=U(function(n){var r,o;return J(this,function(a){switch(a.label){case 0:return r={},(0,t.flatten)(n,{breakOn:function(e){var t=e.key;return t.startsWith("$")&&"$and"!==t&&"$or"!==t},transformValue:function(t){if(!(0,e.isVariable)(t))return t;var n=null==u?void 0:u.parseVariable(t,c).then(function(e){return e.value});return r[t]=n,n}}),[4,Promise.all((o=Object.keys(r)).map(function(e){return r[e]}))];case 1:return a.sent().forEach(function(e,t){r[o[t]]=e}),[2,r]}})}),function(e){return a.apply(this,arguments)}),[c,null==u?void 0:u.parseVariable]);return(0,n.useEffect)(function(){return function(){d.current.forEach(function(e){l.eventBus.removeEventListener(e,m)})}},[]),(0,n.useMemo)(function(){var e;return e=U(function(e){var t,n,r,o,a,c,u;return J(this,function(s){switch(s.label){case 0:return n=e.variableName.replace("$customVariables.",""),[4,i.request({url:"customVariables:get?filter[name]=".concat(n),method:"GET"})];case 1:if(!(null==(r=s.sent())||null==(t=r.data)?void 0:t.data))throw Error('Custom variable "'.concat(n,'" not found. It may have been deleted.'));return[4,b((o=r.data.data).options.params.filter)];case 2:return a=s.sent(),c=["collection:".concat(o.options.collection,":create"),"collection:".concat(o.options.collection,":update"),"collection:".concat(o.options.collection,":destroy")],d.current.forEach(function(e){l.eventBus.removeEventListener(e,m)}),c.forEach(function(e){d.current.add(e),l.eventBus.addEventListener(e,m)}),[4,i.request({url:"customVariables:parse?name=".concat(n),method:"POST",data:{filterCtx:a}})];case 3:return[2,null==(u=s.sent().data)?void 0:u.data]}})}),function(t){return e.apply(this,arguments)}},[f])}}),[2]})})()}}],function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(u.prototype,c),u}(Z(e.Plugin))}(),s}()});
@@ -9,14 +9,14 @@
9
9
 
10
10
  module.exports = {
11
11
  "react": "18.2.0",
12
- "@nocobase/client": "2.0.5",
12
+ "@nocobase/client": "2.0.7",
13
13
  "antd": "5.24.2",
14
14
  "@formily/react": "2.3.7",
15
15
  "react-i18next": "11.18.6",
16
- "@nocobase/utils": "2.0.5",
16
+ "@nocobase/utils": "2.0.7",
17
17
  "@ant-design/icons": "5.6.1",
18
- "@nocobase/server": "2.0.5",
18
+ "@nocobase/server": "2.0.7",
19
19
  "mathjs": "15.1.0",
20
- "@nocobase/data-source-manager": "2.0.5",
21
- "@nocobase/database": "2.0.5"
20
+ "@nocobase/data-source-manager": "2.0.7",
21
+ "@nocobase/database": "2.0.7"
22
22
  };
@@ -69,11 +69,7 @@ class PluginCustomVariablesServer extends import_server.Plugin {
69
69
  }
70
70
  const {
71
71
  collection,
72
- params: {
73
- field,
74
- filter,
75
- distinct
76
- },
72
+ params: { field, filter, distinct },
77
73
  aggregator,
78
74
  precision = 2
79
75
  } = options;
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "displayName.zh-CN": "自定义变量",
5
5
  "description": "Support for adding and using custom variables",
6
6
  "description.zh-CN": "支持新增和使用自定义变量",
7
- "version": "2.0.5",
7
+ "version": "2.0.7",
8
8
  "main": "./dist/server/index.js",
9
9
  "homepage": "https://docs.nocobase.com/handbook/custom-variables",
10
10
  "homepage.zh-CN": "https://docs-cn.nocobase.com/handbook/custom-variables",
@@ -21,7 +21,7 @@
21
21
  "@nocobase/test": "2.x",
22
22
  "antd-style": "3.x"
23
23
  },
24
- "gitHead": "9073a2c814ed9a703a6adb0dd3da34eb0d0b7e9b",
24
+ "gitHead": "71519f094dea3451ddfebe0045d8fd6e4281a6c5",
25
25
  "keywords": [
26
26
  "Custom variables"
27
27
  ],