@steedos/service-plugin-amis 2.3.0-beta.12 → 2.3.0-beta.15

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.
@@ -43,7 +43,7 @@
43
43
 
44
44
  // 加载Amis SDK: 如果直接放到body中会导致meteor 编译后的 cordova.js 加载报错
45
45
  let amisSDKScript = document.createElement("script");
46
- amisSDKScript.setAttribute("src", Steedos.absoluteUrl('/unpkg.com/@steedos-ui/amis@2.2.43/dist/amis-sdk.umd.min.js'));
46
+ amisSDKScript.setAttribute("src", Steedos.absoluteUrl('/unpkg.com/amis/sdk/sdk.js'));
47
47
  document.getElementsByTagName("head")[0].appendChild(amisSDKScript);
48
48
  } catch (error) {
49
49
  console.error(error)
@@ -63,12 +63,10 @@
63
63
 
64
64
  // 此处不能使用import, client js 编译时会将import 转为require, 导致加载失败
65
65
  // import('/unpkg.com/@steedos-ui/amis/dist/amis-sdk.umd.min.js').then(() => {
66
-
67
66
  Promise.all([
68
67
  waitForThing(window, 'assetsLoaded'),
69
- waitForThing(window, 'AmisSDK'),
68
+ waitForThing(window, 'amis'),
70
69
  ]).then(()=>{
71
-
72
70
  const AmisRenderers = [];
73
71
 
74
72
  const amisComps = lodash.filter(Builder.registry['meta-components'], function(item){ return item.componentName && item.amis?.render});
@@ -77,14 +75,33 @@
77
75
  const Component = Builder.components.find(item => item.name === comp.componentName);
78
76
  if (Component && !AmisRenderers.includes(comp.amis?.render.type)){
79
77
  try {
78
+ let AmisWrapper = Component.class
80
79
  AmisRenderers.push(comp.amis?.render.type);
81
- AmisSDK.amis.Renderer(
80
+ if(comp.componentType === 'amisSchema'){
81
+ let amisReact = amisRequire('react');
82
+ AmisWrapper = function(props){
83
+ const { body, render } = props
84
+ const [schema, setSchema] = amisReact.useState(null);
85
+ amisReact.useEffect(()=>{
86
+ const result = Component.class(props);
87
+ if(result.then && typeof result.then === 'function'){
88
+ result.then((data)=>{
89
+ setSchema(data);
90
+ })
91
+ }else{
92
+ setSchema(result)
93
+ }
94
+ }, [])
95
+ return amisReact.createElement(amisReact.Fragment, null, amisReact.createElement(amisReact.Fragment, null, schema && render ? render('body', schema) : ''), amisReact.createElement(amisReact.Fragment, null, render ? render('body', body) : ''));
96
+ }
97
+ }
98
+ amisRequire("amis").Renderer(
82
99
  {
83
100
  type: comp.amis?.render.type,
84
101
  weight: comp.amis?.render.weight,
85
102
  autoVar: true,
86
103
  }
87
- )(Component.class);
104
+ )(AmisWrapper);
88
105
  } catch(e){console.error(e)}
89
106
  }
90
107
  });
@@ -178,7 +195,29 @@
178
195
  }
179
196
  }, env);
180
197
  }
181
- return (React.createElement("div", { className: "amis-scope" }, AmisSDK.AmisRender(schema, {data, name, locale: getAmisLng()}, Object.assign({}, AmisEnv, env))));
198
+ schema.scopeRef = (ref) => {
199
+ try {
200
+ if(!window.amisScopes){
201
+ window.amisScopes = {};
202
+ }
203
+ if(name){
204
+ window.amisScopes[name] = ref;
205
+ }
206
+ } catch (error) {
207
+ console.error('error', error)
208
+ }
209
+
210
+ return scoped = ref
211
+ }
212
+
213
+ React.useEffect(()=>{
214
+ amisRequire('amis/embed').embed(`.steedos-amis-render-scope-${name}`,schema, {data, name, locale: getAmisLng()}, Object.assign({}, AmisEnv, env))
215
+ }, [])
216
+ return React.createElement("div", {
217
+ className: "amis-scope"
218
+ }, React.createElement("div", {
219
+ className: `steedos-amis-render-scope-${name}`
220
+ }));
182
221
  };
183
222
 
184
223
  const initMonaco = ()=>{
@@ -199,14 +238,13 @@
199
238
  return Builder.initMonaco()
200
239
  }
201
240
  }
202
-
203
241
  //Amis SDK 中已清理了monaco, 所以这里需要提前注册,否则会导致amis code类型报错
204
242
  initMonaco().catch((err)=>{
205
243
  console.error(`Builder.initMonaco error: ${err}`);
206
244
  }).finally(()=>{
207
245
  const language = getAmisLng()
208
246
  axios.get(`/translations/amis/${language}.json`).then((res)=>{
209
- AmisSDK.amis.registerLocale(`${language}`, res.data)
247
+ amisRequire("amis").registerLocale(`${language}`, res.data)
210
248
  Builder.registerComponent(AmisRender, {
211
249
  name: 'Amis',
212
250
  inputs: [