@next-bricks/visual-builder 1.4.2 → 1.4.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/bricks.json +6 -6
- package/dist/chunks/{2179.19b98399.js → 2179.30f97726.js} +2 -2
- package/dist/chunks/{6205.529b6763.js.map → 2179.30f97726.js.map} +1 -1
- package/dist/chunks/{2907.5fb1f0a3.js → 2907.5b37da49.js} +2 -2
- package/dist/chunks/{2907.5fb1f0a3.js.map → 2907.5b37da49.js.map} +1 -1
- package/dist/chunks/{3458.062a00c5.js → 3458.fba2c109.js} +2 -2
- package/dist/chunks/{3458.062a00c5.js.map → 3458.fba2c109.js.map} +1 -1
- package/dist/chunks/{3636.b4e00e12.js → 3636.d0e16af6.js} +3 -3
- package/dist/chunks/{3636.b4e00e12.js.map → 3636.d0e16af6.js.map} +1 -1
- package/dist/chunks/4504.660a28c0.js +2 -0
- package/dist/chunks/4504.660a28c0.js.map +1 -0
- package/dist/chunks/{6205.529b6763.js → 6205.11d95812.js} +2 -2
- package/dist/chunks/{2179.19b98399.js.map → 6205.11d95812.js.map} +1 -1
- package/dist/chunks/{7164.5df59ab1.js → 7164.1240707e.js} +2 -2
- package/dist/chunks/{7164.5df59ab1.js.map → 7164.1240707e.js.map} +1 -1
- package/dist/chunks/{7757.3643166e.js → 7757.aa45e813.js} +3 -3
- package/dist/chunks/{7757.3643166e.js.map → 7757.aa45e813.js.map} +1 -1
- package/dist/chunks/{8691.7918c49e.js → 8691.9d1746f6.js} +2 -2
- package/dist/chunks/{8691.7918c49e.js.map → 8691.9d1746f6.js.map} +1 -1
- package/dist/chunks/{inject-preview-agent.e0258a4d.js → inject-preview-agent.66585443.js} +2 -2
- package/dist/chunks/{inject-preview-agent.e0258a4d.js.map → inject-preview-agent.66585443.js.map} +1 -1
- package/dist/chunks/main.99b4e947.js +2 -0
- package/dist/chunks/{main.13108c0b.js.map → main.99b4e947.js.map} +1 -1
- package/dist/chunks/{workbench-action-list.ce122ee7.js → workbench-action-list.81f415cf.js} +2 -2
- package/dist/chunks/{workbench-action-list.ce122ee7.js.map → workbench-action-list.81f415cf.js.map} +1 -1
- package/dist/chunks/{workbench-history-action.eec4a2e6.js → workbench-history-action.607d1eac.js} +3 -3
- package/dist/chunks/{workbench-history-action.eec4a2e6.js.map → workbench-history-action.607d1eac.js.map} +1 -1
- package/dist/index.ec45d316.js +2 -0
- package/dist/{index.3b2044a7.js.map → index.ec45d316.js.map} +1 -1
- package/dist/manifest.json +20 -20
- package/package.json +3 -3
- package/dist/chunks/4504.59f8ff2c.js +0 -2
- package/dist/chunks/4504.59f8ff2c.js.map +0 -1
- package/dist/chunks/main.13108c0b.js +0 -2
- package/dist/index.3b2044a7.js +0 -2
- /package/dist/chunks/{3636.b4e00e12.js.LICENSE.txt → 3636.d0e16af6.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{7757.3643166e.js.LICENSE.txt → 7757.aa45e813.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{workbench-history-action.eec4a2e6.js.LICENSE.txt → workbench-history-action.607d1eac.js.LICENSE.txt} +0 -0
package/dist/bricks.json
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
"visual-builder.workbench-pane",
|
|
5
5
|
"visual-builder.workbench-sidebar",
|
|
6
6
|
"visual-builder.workbench-action",
|
|
7
|
-
"visual-builder.workbench-tree",
|
|
8
7
|
"visual-builder.workbench-action-list",
|
|
8
|
+
"visual-builder.workbench-tree",
|
|
9
9
|
"visual-builder.inject-preview-agent",
|
|
10
10
|
"visual-builder.workbench-history-action",
|
|
11
11
|
"visual-builder.page-arch-node",
|
|
@@ -21,15 +21,15 @@
|
|
|
21
21
|
"eo-link",
|
|
22
22
|
"eo-icon"
|
|
23
23
|
],
|
|
24
|
-
"visual-builder.workbench-tree": [
|
|
25
|
-
"basic.general-link",
|
|
26
|
-
"icons.general-icon"
|
|
27
|
-
],
|
|
28
24
|
"visual-builder.workbench-action-list": [
|
|
29
25
|
"visual-builder.workbench-action",
|
|
30
26
|
"eo-link",
|
|
31
27
|
"eo-icon"
|
|
32
28
|
],
|
|
29
|
+
"visual-builder.workbench-tree": [
|
|
30
|
+
"basic.general-link",
|
|
31
|
+
"icons.general-icon"
|
|
32
|
+
],
|
|
33
33
|
"visual-builder.workbench-history-action": [
|
|
34
34
|
"eo-button",
|
|
35
35
|
"eo-link",
|
|
@@ -41,5 +41,5 @@
|
|
|
41
41
|
"eo-icon"
|
|
42
42
|
]
|
|
43
43
|
},
|
|
44
|
-
"filePath": "bricks/visual-builder/dist/index.
|
|
44
|
+
"filePath": "bricks/visual-builder/dist/index.ec45d316.js"
|
|
45
45
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_next_bricks_visual_builder=self.webpackChunk_next_bricks_visual_builder||[]).push([[2179,7164,6205],{7164:(e,i,n)=>{n.r(i),n.d(i,{i18n:()=>f,i18nText:()=>c,initializeI18n:()=>l});var r=n(3239),t=n(860),a=n(7207),s=!1,u=new Set;function l(e,i){if(s||(s=!0,t.i18n.use(a.default).init({fallbackLng:"zh",debug:!1,supportedLngs:["zh","en"],nonExplicitSupportedLngs:!0,interpolation:{escapeValue:!1},react:{useSuspense:!1},compatibilityJSON:"v3",resources:{}})),e&&i&&!u.has(e))for(var[n,r]of(u.add(e),Object.entries(i)))t.i18n.addResourceBundle(n,e,r)}var o=n(
|
|
2
|
-
//# sourceMappingURL=2179.
|
|
1
|
+
"use strict";(self.webpackChunk_next_bricks_visual_builder=self.webpackChunk_next_bricks_visual_builder||[]).push([[2179,7164,6205],{7164:(e,i,n)=>{n.r(i),n.d(i,{i18n:()=>f,i18nText:()=>c,initializeI18n:()=>l});var r=n(3239),t=n(860),a=n(7207),s=!1,u=new Set;function l(e,i){if(s||(s=!0,t.i18n.use(a.default).init({fallbackLng:"zh",debug:!1,supportedLngs:["zh","en"],nonExplicitSupportedLngs:!0,interpolation:{escapeValue:!1},react:{useSuspense:!1},compatibilityJSON:"v3",resources:{}})),e&&i&&!u.has(e))for(var[n,r]of(u.add(e),Object.entries(i)))t.i18n.addResourceBundle(n,e,r)}var o=n(9242);function c(e){var i;if(e){var n=null!==(i=t.i18n.language)&&void 0!==i?i:"zh-CN";if((0,o.hasOwnProperty)(e,n))return e[n];var r=n.split("-")[0];if(r!==n)return(0,o.hasOwnProperty)(e,r)?e[r]:void 0;var a="".concat(r,"-");for(var s of Object.keys(e))if(s.startsWith(a))return e[s]}}var f=r.default}}]);
|
|
2
|
+
//# sourceMappingURL=2179.30f97726.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/
|
|
1
|
+
{"version":3,"file":"chunks/2179.30f97726.js","mappings":"oPAEIA,GAAc,EACdC,EAAwB,IAAIC,IACzB,SAASC,EAAeC,EAAIC,GAwBjC,GAvBKL,IACHA,GAAc,EACd,EAAAM,KAICC,IAAmF,WAEnFC,KAAK,CACJC,YAAa,KACbC,OAAO,EACPC,cAAe,CAAC,KAAM,MACtBC,0BAA0B,EAC1BC,cAAe,CACbC,aAAa,GAEfC,MAAO,CACLC,aAAa,GAEfC,kBAAmB,KACnBC,UAAW,CAAC,KAGXd,GAAOC,IAAWJ,EAAsBkB,IAAIf,GAIjD,IAAK,IAAKgB,EAAMF,KADhBjB,EAAsBoB,IAAIjB,GACIkB,OAAOC,QAAQlB,IAC3C,EAAAC,KAAKkB,kBAAkBJ,EAAMhB,EAAIc,EAErC,C,cCjCO,SAASO,EAASC,GACvB,IAAIC,EACJ,GAAKD,EAAL,CAGA,IAAIE,EAAgD,QAApCD,EAAiB,EAAArB,KAAKsB,gBAAyC,IAAnBD,EAA4BA,EAAiB,QAEzG,IAAI,IAAAE,gBAAeH,EAAME,GACvB,OAAOF,EAAKE,GAGd,IAAIE,EAAkBF,EAASG,MAAM,KAAK,GAC1C,GAAID,IAAoBF,EAGtB,OAAO,IAAAC,gBAAeH,EAAMI,GAAmBJ,EAAKI,QAAmBE,EAKzE,IAAIC,EAAS,GAAGC,OAAOJ,EAAiB,KACxC,IAAK,IAAIK,KAAOb,OAAOc,KAAKV,GAC1B,GAAIS,EAAIE,WAAWJ,GACjB,OAAOP,EAAKS,EAnBhB,CAsBF,CC3BO,IAAI7B,EAA6E,S","sources":["webpack:///../../node_modules/@next-core/i18n/dist/esm/init.js","webpack:///../../node_modules/@next-core/i18n/dist/esm/text.js","webpack:///../../node_modules/@next-core/i18n/dist/esm/index.js"],"sourcesContent":["import { i18n } from \"@next-core/i18n\";\nimport LanguageDetector from \"i18next-browser-languagedetector\";\nvar initialized = false;\nvar initializedNamespaces = new Set();\nexport function initializeI18n(NS, locales) {\n if (!initialized) {\n initialized = true;\n i18n\n // learn more: https://github.com/i18next/i18next-xhr-backend\n // .use(Backend)\n // learn more: https://github.com/i18next/i18next-browser-languageDetector\n .use(process.env.NODE_ENV === \"test\" ? LanguageDetector : /* istanbul ignore next */LanguageDetector.default)\n // for all options read: https://www.i18next.com/overview/configuration-options\n .init({\n fallbackLng: \"zh\",\n debug: process.env.NODE_ENV === \"development\",\n supportedLngs: [\"zh\", \"en\"],\n nonExplicitSupportedLngs: true,\n interpolation: {\n escapeValue: false // not needed for react as it escapes by default\n },\n react: {\n useSuspense: false\n },\n compatibilityJSON: \"v3\",\n resources: {}\n });\n }\n if (!NS || !locales || initializedNamespaces.has(NS)) {\n return;\n }\n initializedNamespaces.add(NS);\n for (var [lang, resources] of Object.entries(locales)) {\n i18n.addResourceBundle(lang, NS, resources);\n }\n}\n//# sourceMappingURL=init.js.map","import { i18n } from \"@next-core/i18n\";\nimport { hasOwnProperty } from \"@next-core/utils/general\";\nexport function i18nText(data) {\n var _i18n$language;\n if (!data) {\n return;\n }\n var language = (_i18n$language = i18n.language) !== null && _i18n$language !== void 0 ? _i18n$language : \"zh-CN\";\n // First, make a perfect match.\n if (hasOwnProperty(data, language)) {\n return data[language];\n }\n // https://en.wikipedia.org/wiki/IETF_language_tag\n var primaryLanguage = language.split(\"-\")[0];\n if (primaryLanguage !== language) {\n // Then, match the primary language (which omits other subtags).\n // E.g., match `zh` if the current language is `zh-CN`.\n return hasOwnProperty(data, primaryLanguage) ? data[primaryLanguage] : undefined;\n }\n // At last, match the first key which starts with the primary language,\n // if the current language contains primary subtag only.\n // E.g., match `zh-CN` if the current language is `zh`.\n var prefix = \"\".concat(primaryLanguage, \"-\");\n for (var key of Object.keys(data)) {\n if (key.startsWith(prefix)) {\n return data[key];\n }\n }\n}\n//# sourceMappingURL=text.js.map","import i18next from \"i18next\";\nexport var i18n = process.env.NODE_ENV === \"test\" ? i18next : /* istanbul ignore next */i18next.default;\nexport * from \"./init.js\";\nexport * from \"./text.js\";\n//# sourceMappingURL=index.js.map"],"names":["initialized","initializedNamespaces","Set","initializeI18n","NS","locales","i18n","use","init","fallbackLng","debug","supportedLngs","nonExplicitSupportedLngs","interpolation","escapeValue","react","useSuspense","compatibilityJSON","resources","has","lang","add","Object","entries","addResourceBundle","i18nText","data","_i18n$language","language","hasOwnProperty","primaryLanguage","split","undefined","prefix","concat","key","keys","startsWith"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_next_bricks_visual_builder=self.webpackChunk_next_bricks_visual_builder||[]).push([[2907],{894:(e,t,n)=>{n.d(t,{k:()=>i});var r=n(1935),a=n(6530),o=n(2812);function i(e){var t=function(e){var t=new Set;return(0,a.f)(e,(e=>{switch(e.type){case"Resolvable":case"EventHandler":var n,r=null===(n=e.raw)||void 0===n?void 0:n.useProvider;r&&t.add(r)}})),t}((0,o.ud)(e)),n=[];for(var r of t)r.includes("@")&&n.push(r);return n}customElements.define("visual-builder.collect-used-contracts",(0,r.createProviderClass)(i))},2907:(e,t,n)=>{n.d(t,{Z:()=>R});var r,a=n(4795),o=n(3028),i=n(9464),s=n(5178),d=n(1763),l=n.n(d);function p(){return(p=(0,a.Z)((function*(e,t){var n,r=yield l()(document.body,{logging:!1,scale:1,width:window.innerWidth,height:window.innerHeight,foreignObjectRendering:!0}),a=document.createElement("canvas");return function(e,t,n,r){var a=n/r,{width:o,height:i}=e,s=o/i,d=s>=a,l=d?n:r*s,p=d?n/s:r;t.width=l,t.height=p,t.getContext("2d").drawImage(e,0,0,o,i,0,0,l,p),t.toDataURL()}(r,a,e,t),yield(n=a,new Promise((function(e,t){n.toBlob((function(n){n?e(n):t()}))})))}))).apply(this,arguments)}function c(e){var t;e.preventDefault(),e.stopPropagation(),(t=y(e.composedPath())).length>0&&window.parent.postMessage({sender:"previewer",type:"select-brick",iidList:t},r)}function u(e){e.preventDefault(),e.stopPropagation()}var v=(0,s.throttle)((e=>{var t=y(e);t.length>0&&window.parent.postMessage({sender:"previewer",type:"hover-on-brick",iidList:t},r)}),100,{leading:!1});function h(e){e.preventDefault(),e.stopPropagation(),v(e.composedPath())}function w(e){e.preventDefault(),e.stopPropagation(),v(e.composedPath())}function m(e){e.preventDefault(),e.stopPropagation(),window.parent.postMessage({sender:"previewer",type:"hover-on-brick",iidList:[]},r)}function g(e){var t,n,a;e.preventDefault(),e.stopPropagation(),t=e.composedPath(),n={x:e.clientX,y:e.clientY},(a=y(t)).length>0&&window.parent.postMessage({sender:"previewer",type:"context-menu-on-brick",iidList:a,position:n},r)}function y(e){var t=[];for(var n of e)n instanceof HTMLElement&&"string"==typeof n.dataset.iid&&t.push(n.dataset.iid);return t}var f=n(894);function b(e){var t=typeof e;switch(t){case"string":case"boolean":case"number":return{type:t,value:e};case"undefined":return{type:t}}return null===e?{type:"null"}:Array.isArray(e)?{type:"array",length:e.length}:{type:"object"}}var S=!1,E=i.getHistory,k=i.matchPath,L=i.__secret_internals,I=!1;try{var x,P=window.dll;if(P&&null!==(x=window.BRICK_NEXT_VERSIONS)&&void 0!==x&&null!==(x=x["brick-container"])&&void 0!==x&&x.startsWith("2.")){var{getHistory:C,developHelper:T}=P("tYg3"),{matchPath:D}=P("A+yw");E=C,k=D,L=(0,o.Z)((0,o.Z)({},T),{},{getContextValue(e,t){var{tplStateStoreId:n}=t;return T.getContextValue(e,{tplContextId:n})},getAllContextValues(e){var{tplStateStoreId:t}=e,n=T.getAllContextValues({tplContextId:t});return Object.fromEntries([...n].map((e=>{var[t,n]=e;return[t,n.value]})))}}),I=!0}}catch(e){console.error("Try to use v2 runtime APIs failed:",e)}var A=null,N=null;function R(e,t){return _.apply(this,arguments)}function _(){return _=(0,a.Z)((function*(e,t){var n,d;if(!S){S=!0;var l,v,y,I,x=t=>{window.parent.postMessage((0,o.Z)({sender:"previewer"},t),e)};x({type:"preview-started"}),r=e;var P,C=(e,t,n)=>{var r=M(t);x({type:"highlight-brick",highlightType:e,outlines:r,iid:t,alias:n})};t.templateId&&(P=t.settings);var T=()=>{L.updateTemplatePreviewSettings(t.appId,t.templateId,P),E().reload()},D=()=>{L.updateSnippetPreviewSettings(t.appId,JSON.parse(t.snippetData)),E().reload()},R=E();window.addEventListener("message",function(){var n=(0,a.Z)((function*(n){var a,o,d,{data:b,origin:S}=n;if(S===e&&b&&"preview-container"===b.sender)if("builder"===b.forwardedFor)switch(b.type){case"hover-on-brick":l=b.iid,v=b.alias,C("hover",b.iid,b.alias);break;case"hover-on-main":C("hover","#main-mount-point","root");break;case"hover-on-context":d=b.highlightNodes.map((e=>M(e.iid,e.alias))).flat(),x({type:"highlight-context",outlines:d});break;case"select-brick":y=b.iid,I=b.alias,C("active",b.iid,b.alias);break;case"hover-on-iframe":(e=>{var t=document.elementFromPoint(e.x,e.y);if("BODY"===(null==t?void 0:t.tagName))window.parent.postMessage({sender:"previewer",type:"hover-on-main",isDirection:!0,position:{x:e.x,y:e.y}},r);else{var n=function(e){for(var t=[],n=e;n;)"string"==typeof n.dataset.iid&&t.push(n.dataset.iid),n=n.parentElement;return t}(t);window.parent.postMessage({sender:"previewer",type:"hover-on-brick",iidList:n,isDirection:!0,position:{x:e.x,y:e.y}},r)}})(b.position)}else switch(b.type){case"toggle-inspecting":b.enabled?(window.addEventListener("click",c,!0),window.addEventListener("mousedown",u,!0),window.addEventListener("mouseover",u,!0),window.addEventListener("mouseup",u,!0),window.addEventListener("pointerdown",h,!0),window.addEventListener("pointermove",w,!0),window.addEventListener("pointerup",u,!0),window.addEventListener("pointerleave",m,!0),window.addEventListener("contextmenu",g,!0)):(window.removeEventListener("click",c,!0),window.removeEventListener("mousedown",u,!0),window.removeEventListener("mouseover",u,!0),window.removeEventListener("mouseup",u,!0),window.removeEventListener("pointerdown",h,!0),window.removeEventListener("pointermove",w,!0),window.removeEventListener("pointerup",u,!0),window.removeEventListener("pointerleave",m,!0),window.removeEventListener("contextmenu",g,!0));break;case"refresh":if(null!==(a=b.options)&&void 0!==a&&a.updateStoryboardType){var k,A;"route"===b.options.updateStoryboardType?L.updateStoryboardByRoute(t.appId,b.storyboardPatch):"template"===b.options.updateStoryboardType?L.updateStoryboardByTemplate(t.appId,b.storyboardPatch,b.options.settings):"snippet"===b.options.updateStoryboardType&&L.updateStoryboardBySnippet(t.appId,b.storyboardPatch);var N=yield null===(k=(A=L).getAddedContracts)||void 0===k?void 0:k.call(A,b.storyboardPatch,{appId:t.appId,updateStoryboardType:b.options.updateStoryboardType,formId:t.formId,collectUsedContracts:f.k});(0,s.isEmpty)(N)?E().reload():x({type:"contract-update",data:{add:N}});break}L.updateStoryboard(t.appId,b.storyboardPatch),t.templateId?(P=b.settings,T()):null!==(o=b.options)&&void 0!==o&&o.snippetData?(t.snippetData=b.options.snippetData,D()):E().reload();break;case"reload":location.reload();break;case"back":R.goBack();break;case"forward":R.goForward();break;case"capture":(function(e,t){return p.apply(this,arguments)})(b.maxWidth,b.maxHeight).then((e=>{x({type:"capture-ok",screenshot:e})}),(()=>{x({type:"capture-failed"})}));break;case"inspect-data-value":((e,t)=>{try{var n,r,a,{dataType:o}=t;if("state"===o&&!(n=O()))return void x({type:"inspect-data-value-error",data:{error:{message:"tplStateStoreId not found, unable to preview STATE value"}}});if(e)a="inspect-single-data-value-success",r=L.getContextValue(e,{tplStateStoreId:n});else{a="inspect-all-data-values-success";var i=L.getAllContextValues({tplStateStoreId:n});r=Object.entries(i).map((e=>{var[t,n]=e;return{name:t,value:n}}))}x({type:a,data:{name:e,value:r}})}catch(e){x({type:"inspect-data-value-error",data:{message:e.message}})}})(b.name,b.option);break;case"update-preview-url":var _=b.previewUrl.startsWith(window.origin)?b.previewUrl.substring(window.origin.length):b.previewUrl,H=(0,i.getBasePath)(),B=_.startsWith(H)?_.substring(H.length-1):_;E().push(B);break;case"update-preview-route":t.routePath=b.routePath,t.routeExact=b.routeExact,q()}}));return function(e){return n.apply(this,arguments)}}()),window.addEventListener("scroll",(()=>{x({type:"scroll",scroll:{x:window.scrollX,y:window.scrollY}})}));var _,H,B=!0,Z=e=>{x({type:"url-change",url:location.origin+R.createHref(e)}),_=e,q()};Z(R.location),R.listen(Z),t.templateId&&T(),t.snippetData&&D(),null===(n=(d=L).addRealTimeDataInspectHook)||void 0===n||n.call(d,(e=>{var{changeType:t,tplStateStoreId:n,detail:r}=e;x({type:"real-time-data-inspect-change",changeType:t,tplStateStoreId:n,detail:"update"===t?{name:r.name,annotation:b(r.value)}:{data:Object.fromEntries(Object.entries(r.data).map((e=>{var[t,n]=e;return[t,b(n)]})))}})})),window.addEventListener("route.render",(()=>{U(!0)})),V(),U(!0),new MutationObserver((0,s.throttle)((()=>{V(),U(),l&&C("hover",l,v),y&&C("active",y,I)}),100,{leading:!1})).observe(document.body,{subtree:!0,childList:!0})}function q(){if(t.routePath){var e=!!k(_.pathname,{path:t.routePath,exact:t.routeExact});if(x({type:"route-match-change",match:e}),t.templateId&&!B&&e){var n=document.querySelector("#main-mount-point"),r=new MutationObserver((()=>{1===n.childNodes.length&&"SPAN"===n.firstChild.tagName&&0===n.firstChild.childNodes.length&&(T(),r.disconnect())}));r.observe(n,{childList:!0})}if(t.snippetData&&!B&&e){var a=document.querySelector("#main-mount-point"),o=new MutationObserver((()=>{1===a.childNodes.length&&"SPAN"===a.firstChild.tagName&&0===a.firstChild.childNodes.length&&(D(),o.disconnect())}));o.observe(a,{childList:!0})}B=e}}function V(){var e,t,n,r=document.querySelector("eo-page-view"),a=null!==(e=null==r||null===(t=r.shadowRoot)||void 0===t?void 0:t.querySelector(".content"))&&void 0!==e?e:null;a!==A&&(null===(n=A)||void 0===n||n.removeEventListener("scroll",j),null==a||a.addEventListener("scroll",j),A=a,N=r)}function j(){x({type:"content-scroll",scroll:{x:this.scrollLeft,y:this.scrollTop}})}function U(e){var n,r,a=t.templateId?O():void 0;(H!==a||e)&&(H=a,null===(n=(r=L).setRealTimeDataInspectRoot)||void 0===n||n.call(r,{tplStateStoreId:a}))}})),_.apply(this,arguments)}function M(e,t){if(!e)return[];var n=e.includes("#"),r=function(e,t){var n=[];return function r(a){var o=a.querySelectorAll(t?e:'[data-iid="'.concat(e,'"]'));if(n.push(...o),!(a===document&&o.length>0))for(var i of a.querySelectorAll("*"))i.shadowRoot&&r(i.shadowRoot)}(document),n}(e,n),a=function(e,t){return e.map((e=>{var n,r=null===(n=N)||void 0===n?void 0:n.contains(e),{width:a,height:o,left:i,top:s}=e.getBoundingClientRect();return{width:a,height:o,left:i+window.scrollX+(r?A.scrollLeft:0),top:s+window.scrollY+(r?A.scrollTop:0),alias:t,hasContentScroll:r}}))}(r,t);return n?a.map((e=>(0,o.Z)((0,o.Z)({},e),{},{height:window.innerHeight-e.top}))):a}function O(){var e,t=document.querySelector("#main-mount-point");return null==t||null===(e=t.firstChild)||void 0===e?void 0:e.dataset[I?"tplContextId":"tplStateStoreId"]}}}]);
|
|
2
|
-
//# sourceMappingURL=2907.
|
|
1
|
+
"use strict";(self.webpackChunk_next_bricks_visual_builder=self.webpackChunk_next_bricks_visual_builder||[]).push([[2907],{894:(e,t,n)=>{n.d(t,{k:()=>i});var r=n(9242),a=n(6530),o=n(2812);function i(e){var t=function(e){var t=new Set;return(0,a.f)(e,(e=>{switch(e.type){case"Resolvable":case"EventHandler":var n,r=null===(n=e.raw)||void 0===n?void 0:n.useProvider;r&&t.add(r)}})),t}((0,o.ud)(e)),n=[];for(var r of t)r.includes("@")&&n.push(r);return n}customElements.define("visual-builder.collect-used-contracts",(0,r.createProviderClass)(i))},2907:(e,t,n)=>{n.d(t,{Z:()=>R});var r,a=n(4795),o=n(3028),i=n(9888),s=n(5178),d=n(1763),l=n.n(d);function p(){return(p=(0,a.Z)((function*(e,t){var n,r=yield l()(document.body,{logging:!1,scale:1,width:window.innerWidth,height:window.innerHeight,foreignObjectRendering:!0}),a=document.createElement("canvas");return function(e,t,n,r){var a=n/r,{width:o,height:i}=e,s=o/i,d=s>=a,l=d?n:r*s,p=d?n/s:r;t.width=l,t.height=p,t.getContext("2d").drawImage(e,0,0,o,i,0,0,l,p),t.toDataURL()}(r,a,e,t),yield(n=a,new Promise((function(e,t){n.toBlob((function(n){n?e(n):t()}))})))}))).apply(this,arguments)}function c(e){var t;e.preventDefault(),e.stopPropagation(),(t=y(e.composedPath())).length>0&&window.parent.postMessage({sender:"previewer",type:"select-brick",iidList:t},r)}function u(e){e.preventDefault(),e.stopPropagation()}var v=(0,s.throttle)((e=>{var t=y(e);t.length>0&&window.parent.postMessage({sender:"previewer",type:"hover-on-brick",iidList:t},r)}),100,{leading:!1});function h(e){e.preventDefault(),e.stopPropagation(),v(e.composedPath())}function w(e){e.preventDefault(),e.stopPropagation(),v(e.composedPath())}function m(e){e.preventDefault(),e.stopPropagation(),window.parent.postMessage({sender:"previewer",type:"hover-on-brick",iidList:[]},r)}function g(e){var t,n,a;e.preventDefault(),e.stopPropagation(),t=e.composedPath(),n={x:e.clientX,y:e.clientY},(a=y(t)).length>0&&window.parent.postMessage({sender:"previewer",type:"context-menu-on-brick",iidList:a,position:n},r)}function y(e){var t=[];for(var n of e)n instanceof HTMLElement&&"string"==typeof n.dataset.iid&&t.push(n.dataset.iid);return t}var f=n(894);function b(e){var t=typeof e;switch(t){case"string":case"boolean":case"number":return{type:t,value:e};case"undefined":return{type:t}}return null===e?{type:"null"}:Array.isArray(e)?{type:"array",length:e.length}:{type:"object"}}var S=!1,E=i.getHistory,k=i.matchPath,L=i.__secret_internals,I=!1;try{var x,P=window.dll;if(P&&null!==(x=window.BRICK_NEXT_VERSIONS)&&void 0!==x&&null!==(x=x["brick-container"])&&void 0!==x&&x.startsWith("2.")){var{getHistory:C,developHelper:T}=P("tYg3"),{matchPath:D}=P("A+yw");E=C,k=D,L=(0,o.Z)((0,o.Z)({},T),{},{getContextValue(e,t){var{tplStateStoreId:n}=t;return T.getContextValue(e,{tplContextId:n})},getAllContextValues(e){var{tplStateStoreId:t}=e,n=T.getAllContextValues({tplContextId:t});return Object.fromEntries([...n].map((e=>{var[t,n]=e;return[t,n.value]})))}}),I=!0}}catch(e){console.error("Try to use v2 runtime APIs failed:",e)}var A=null,N=null;function R(e,t){return _.apply(this,arguments)}function _(){return _=(0,a.Z)((function*(e,t){var n,d;if(!S){S=!0;var l,v,y,I,x=t=>{window.parent.postMessage((0,o.Z)({sender:"previewer"},t),e)};x({type:"preview-started"}),r=e;var P,C=(e,t,n)=>{var r=M(t);x({type:"highlight-brick",highlightType:e,outlines:r,iid:t,alias:n})};t.templateId&&(P=t.settings);var T=()=>{L.updateTemplatePreviewSettings(t.appId,t.templateId,P),E().reload()},D=()=>{L.updateSnippetPreviewSettings(t.appId,JSON.parse(t.snippetData)),E().reload()},R=E();window.addEventListener("message",function(){var n=(0,a.Z)((function*(n){var a,o,d,{data:b,origin:S}=n;if(S===e&&b&&"preview-container"===b.sender)if("builder"===b.forwardedFor)switch(b.type){case"hover-on-brick":l=b.iid,v=b.alias,C("hover",b.iid,b.alias);break;case"hover-on-main":C("hover","#main-mount-point","root");break;case"hover-on-context":d=b.highlightNodes.map((e=>M(e.iid,e.alias))).flat(),x({type:"highlight-context",outlines:d});break;case"select-brick":y=b.iid,I=b.alias,C("active",b.iid,b.alias);break;case"hover-on-iframe":(e=>{var t=document.elementFromPoint(e.x,e.y);if("BODY"===(null==t?void 0:t.tagName))window.parent.postMessage({sender:"previewer",type:"hover-on-main",isDirection:!0,position:{x:e.x,y:e.y}},r);else{var n=function(e){for(var t=[],n=e;n;)"string"==typeof n.dataset.iid&&t.push(n.dataset.iid),n=n.parentElement;return t}(t);window.parent.postMessage({sender:"previewer",type:"hover-on-brick",iidList:n,isDirection:!0,position:{x:e.x,y:e.y}},r)}})(b.position)}else switch(b.type){case"toggle-inspecting":b.enabled?(window.addEventListener("click",c,!0),window.addEventListener("mousedown",u,!0),window.addEventListener("mouseover",u,!0),window.addEventListener("mouseup",u,!0),window.addEventListener("pointerdown",h,!0),window.addEventListener("pointermove",w,!0),window.addEventListener("pointerup",u,!0),window.addEventListener("pointerleave",m,!0),window.addEventListener("contextmenu",g,!0)):(window.removeEventListener("click",c,!0),window.removeEventListener("mousedown",u,!0),window.removeEventListener("mouseover",u,!0),window.removeEventListener("mouseup",u,!0),window.removeEventListener("pointerdown",h,!0),window.removeEventListener("pointermove",w,!0),window.removeEventListener("pointerup",u,!0),window.removeEventListener("pointerleave",m,!0),window.removeEventListener("contextmenu",g,!0));break;case"refresh":if(null!==(a=b.options)&&void 0!==a&&a.updateStoryboardType){var k,A;"route"===b.options.updateStoryboardType?L.updateStoryboardByRoute(t.appId,b.storyboardPatch):"template"===b.options.updateStoryboardType?L.updateStoryboardByTemplate(t.appId,b.storyboardPatch,b.options.settings):"snippet"===b.options.updateStoryboardType&&L.updateStoryboardBySnippet(t.appId,b.storyboardPatch);var N=yield null===(k=(A=L).getAddedContracts)||void 0===k?void 0:k.call(A,b.storyboardPatch,{appId:t.appId,updateStoryboardType:b.options.updateStoryboardType,formId:t.formId,collectUsedContracts:f.k});(0,s.isEmpty)(N)?E().reload():x({type:"contract-update",data:{add:N}});break}L.updateStoryboard(t.appId,b.storyboardPatch),t.templateId?(P=b.settings,T()):null!==(o=b.options)&&void 0!==o&&o.snippetData?(t.snippetData=b.options.snippetData,D()):E().reload();break;case"reload":location.reload();break;case"back":R.goBack();break;case"forward":R.goForward();break;case"capture":(function(e,t){return p.apply(this,arguments)})(b.maxWidth,b.maxHeight).then((e=>{x({type:"capture-ok",screenshot:e})}),(()=>{x({type:"capture-failed"})}));break;case"inspect-data-value":((e,t)=>{try{var n,r,a,{dataType:o}=t;if("state"===o&&!(n=O()))return void x({type:"inspect-data-value-error",data:{error:{message:"tplStateStoreId not found, unable to preview STATE value"}}});if(e)a="inspect-single-data-value-success",r=L.getContextValue(e,{tplStateStoreId:n});else{a="inspect-all-data-values-success";var i=L.getAllContextValues({tplStateStoreId:n});r=Object.entries(i).map((e=>{var[t,n]=e;return{name:t,value:n}}))}x({type:a,data:{name:e,value:r}})}catch(e){x({type:"inspect-data-value-error",data:{message:e.message}})}})(b.name,b.option);break;case"update-preview-url":var _=b.previewUrl.startsWith(window.origin)?b.previewUrl.substring(window.origin.length):b.previewUrl,H=(0,i.getBasePath)(),B=_.startsWith(H)?_.substring(H.length-1):_;E().push(B);break;case"update-preview-route":t.routePath=b.routePath,t.routeExact=b.routeExact,q()}}));return function(e){return n.apply(this,arguments)}}()),window.addEventListener("scroll",(()=>{x({type:"scroll",scroll:{x:window.scrollX,y:window.scrollY}})}));var _,H,B=!0,Z=e=>{x({type:"url-change",url:location.origin+R.createHref(e)}),_=e,q()};Z(R.location),R.listen(Z),t.templateId&&T(),t.snippetData&&D(),null===(n=(d=L).addRealTimeDataInspectHook)||void 0===n||n.call(d,(e=>{var{changeType:t,tplStateStoreId:n,detail:r}=e;x({type:"real-time-data-inspect-change",changeType:t,tplStateStoreId:n,detail:"update"===t?{name:r.name,annotation:b(r.value)}:{data:Object.fromEntries(Object.entries(r.data).map((e=>{var[t,n]=e;return[t,b(n)]})))}})})),window.addEventListener("route.render",(()=>{U(!0)})),V(),U(!0),new MutationObserver((0,s.throttle)((()=>{V(),U(),l&&C("hover",l,v),y&&C("active",y,I)}),100,{leading:!1})).observe(document.body,{subtree:!0,childList:!0})}function q(){if(t.routePath){var e=!!k(_.pathname,{path:t.routePath,exact:t.routeExact});if(x({type:"route-match-change",match:e}),t.templateId&&!B&&e){var n=document.querySelector("#main-mount-point"),r=new MutationObserver((()=>{1===n.childNodes.length&&"SPAN"===n.firstChild.tagName&&0===n.firstChild.childNodes.length&&(T(),r.disconnect())}));r.observe(n,{childList:!0})}if(t.snippetData&&!B&&e){var a=document.querySelector("#main-mount-point"),o=new MutationObserver((()=>{1===a.childNodes.length&&"SPAN"===a.firstChild.tagName&&0===a.firstChild.childNodes.length&&(D(),o.disconnect())}));o.observe(a,{childList:!0})}B=e}}function V(){var e,t,n,r=document.querySelector("eo-page-view"),a=null!==(e=null==r||null===(t=r.shadowRoot)||void 0===t?void 0:t.querySelector(".content"))&&void 0!==e?e:null;a!==A&&(null===(n=A)||void 0===n||n.removeEventListener("scroll",j),null==a||a.addEventListener("scroll",j),A=a,N=r)}function j(){x({type:"content-scroll",scroll:{x:this.scrollLeft,y:this.scrollTop}})}function U(e){var n,r,a=t.templateId?O():void 0;(H!==a||e)&&(H=a,null===(n=(r=L).setRealTimeDataInspectRoot)||void 0===n||n.call(r,{tplStateStoreId:a}))}})),_.apply(this,arguments)}function M(e,t){if(!e)return[];var n=e.includes("#"),r=function(e,t){var n=[];return function r(a){var o=a.querySelectorAll(t?e:'[data-iid="'.concat(e,'"]'));if(n.push(...o),!(a===document&&o.length>0))for(var i of a.querySelectorAll("*"))i.shadowRoot&&r(i.shadowRoot)}(document),n}(e,n),a=function(e,t){return e.map((e=>{var n,r=null===(n=N)||void 0===n?void 0:n.contains(e),{width:a,height:o,left:i,top:s}=e.getBoundingClientRect();return{width:a,height:o,left:i+window.scrollX+(r?A.scrollLeft:0),top:s+window.scrollY+(r?A.scrollTop:0),alias:t,hasContentScroll:r}}))}(r,t);return n?a.map((e=>(0,o.Z)((0,o.Z)({},e),{},{height:window.innerHeight-e.top}))):a}function O(){var e,t=document.querySelector("#main-mount-point");return null==t||null===(e=t.firstChild)||void 0===e?void 0:e.dataset[I?"tplContextId":"tplStateStoreId"]}}}]);
|
|
2
|
+
//# sourceMappingURL=2907.5b37da49.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/2907.5fb1f0a3.js","mappings":"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","sources":["webpack:///./src/data-providers/collect-used-contracts.ts","webpack:///./src/data-providers/preview/inspector.ts","webpack:///./src/data-providers/preview/capture.ts","webpack:///./src/data-providers/preview/resizeScreenshot.ts","webpack:///./src/data-providers/preview/realTimeDataInspect.ts","webpack:///./src/data-providers/preview/connect.ts"],"sourcesContent":["import { createProviderClass } from \"@next-core/utils/general\";\nimport {\n type StoryboardNode,\n parseStoryboard,\n traverse,\n} from \"@next-core/storyboard\";\nimport {\n Storyboard,\n UseProviderResolveConf,\n UseProviderEventHandler,\n} from \"@next-core/types\";\n\nfunction collect(nodeOrNodes: StoryboardNode | StoryboardNode[]): Set<string> {\n const collection = new Set<string>();\n\n traverse(nodeOrNodes, (node) => {\n switch (node.type) {\n case \"Resolvable\":\n case \"EventHandler\": {\n const useProvider = (\n node.raw as UseProviderResolveConf | UseProviderEventHandler\n )?.useProvider;\n if (useProvider) {\n collection.add(useProvider);\n }\n }\n }\n });\n\n return collection;\n}\n\nexport function collectUsedContracts(storyboard: Storyboard): string[] {\n const collection = collect(parseStoryboard(storyboard as any));\n\n const contracts = [];\n\n for (const item of collection) {\n if (item.includes(\"@\")) {\n contracts.push(item);\n }\n }\n\n return contracts;\n}\n\ncustomElements.define(\n \"visual-builder.collect-used-contracts\",\n createProviderClass(collectUsedContracts)\n);\n","// istanbul ignore file: working in progress\n// https://github.com/facebook/react/blob/cae635054e17a6f107a39d328649137b83f25972/packages/react-devtools-shared/src/backend/views/Highlighter/index.js\nimport { throttle } from \"lodash\";\nimport type {\n PreviewMessagePreviewerHoverOnBrick,\n PreviewMessagePreviewerSelectBrick,\n PreviewMessagePreviewerContextMenuOnBrick,\n} from \"./interfaces.js\";\n\nexport let previewProxyOrigin: string;\n\nexport function setPreviewFromOrigin(origin: string): void {\n previewProxyOrigin = origin;\n}\n\nexport function startInspecting(): void {\n registerListeners();\n}\n\nexport function stopInspecting(): void {\n unregisterListeners();\n}\n\nfunction registerListeners(): void {\n window.addEventListener(\"click\", onClick, true);\n window.addEventListener(\"mousedown\", onMouseEvent, true);\n window.addEventListener(\"mouseover\", onMouseEvent, true);\n window.addEventListener(\"mouseup\", onMouseEvent, true);\n window.addEventListener(\"pointerdown\", onPointerDown, true);\n window.addEventListener(\"pointermove\", onPointerMove, true);\n window.addEventListener(\"pointerup\", onMouseEvent, true);\n window.addEventListener(\"pointerleave\", onPointerLeave, true);\n window.addEventListener(\"contextmenu\", onContextMenu, true);\n}\n\nfunction unregisterListeners(): void {\n window.removeEventListener(\"click\", onClick, true);\n window.removeEventListener(\"mousedown\", onMouseEvent, true);\n window.removeEventListener(\"mouseover\", onMouseEvent, true);\n window.removeEventListener(\"mouseup\", onMouseEvent, true);\n window.removeEventListener(\"pointerdown\", onPointerDown, true);\n window.removeEventListener(\"pointermove\", onPointerMove, true);\n window.removeEventListener(\"pointerup\", onMouseEvent, true);\n window.removeEventListener(\"pointerleave\", onPointerLeave, true);\n window.removeEventListener(\"contextmenu\", onContextMenu, true);\n}\n\nfunction onClick(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n selectBrick(event.composedPath());\n}\n\nfunction onMouseEvent(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n}\n\nconst hoverOnBrick = throttle(\n (eventTargets: EventTarget[]) => {\n const iidList = getPossibleBrickTargets(eventTargets);\n\n if (iidList.length > 0) {\n window.parent.postMessage(\n {\n sender: \"previewer\",\n type: \"hover-on-brick\",\n iidList,\n } as PreviewMessagePreviewerHoverOnBrick,\n previewProxyOrigin\n );\n }\n },\n 100,\n { leading: false }\n);\n\nfunction onPointerDown(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n hoverOnBrick(event.composedPath());\n}\n\nfunction onPointerMove(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n hoverOnBrick(event.composedPath());\n}\n\nfunction onPointerLeave(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n window.parent.postMessage(\n {\n sender: \"previewer\",\n type: \"hover-on-brick\",\n iidList: [],\n } as PreviewMessagePreviewerHoverOnBrick,\n previewProxyOrigin\n );\n}\n\nfunction onContextMenu(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n contextMenuOnBrick(event.composedPath(), {\n x: event.clientX,\n y: event.clientY,\n });\n}\n\nfunction contextMenuOnBrick(\n eventTargets: EventTarget[],\n position: {\n x: number;\n y: number;\n }\n): void {\n const iidList = getPossibleBrickTargets(eventTargets);\n if (iidList.length > 0) {\n window.parent.postMessage(\n {\n sender: \"previewer\",\n type: \"context-menu-on-brick\",\n iidList,\n position,\n } as PreviewMessagePreviewerContextMenuOnBrick,\n previewProxyOrigin\n );\n }\n}\n\nfunction selectBrick(eventTargets: EventTarget[]): void {\n const iidList = getPossibleBrickTargets(eventTargets);\n if (iidList.length > 0) {\n window.parent.postMessage(\n {\n sender: \"previewer\",\n type: \"select-brick\",\n iidList,\n } as PreviewMessagePreviewerSelectBrick,\n previewProxyOrigin\n );\n }\n}\n\nexport function getPossibleBrickIidList(brick: HTMLElement): string[] {\n const iidList: string[] = [];\n // Traverse from bottom to up, to find bricks current hover on.\n let cursor: HTMLElement | null = brick;\n while (cursor) {\n if (typeof cursor.dataset.iid === \"string\") {\n iidList.push(cursor.dataset.iid);\n }\n cursor = cursor.parentElement;\n }\n return iidList;\n}\n\nexport function getPossibleBrickTargets(eventTargets: EventTarget[]) {\n const targets: string[] = [];\n for (const target of eventTargets) {\n if (\n target instanceof HTMLElement &&\n typeof target.dataset.iid === \"string\"\n ) {\n targets.push(target.dataset.iid);\n }\n }\n return targets;\n}\n","// istanbul ignore file: nothing logical except calling html2canvas.\nimport html2canvas from \"html2canvas\";\nimport { resizeScreenshot } from \"./resizeScreenshot.js\";\n\nfunction getCanvasBlob(canvas: HTMLCanvasElement): Promise<Blob> {\n return new Promise(function (resolve, reject) {\n canvas.toBlob(function (blob: Blob | null) {\n if (blob) {\n resolve(blob);\n } else {\n reject();\n }\n });\n });\n}\n\nexport async function capture(\n maxWidth: number,\n maxHeight: number\n): Promise<Blob> {\n const sourceCanvas = await html2canvas(document.body, {\n logging: false,\n scale: 1,\n width: window.innerWidth,\n height: window.innerHeight,\n foreignObjectRendering: true,\n });\n const targetCanvas = document.createElement(\"canvas\");\n resizeScreenshot(sourceCanvas, targetCanvas, maxWidth, maxHeight);\n const blob = await getCanvasBlob(targetCanvas);\n return blob;\n}\n","export function resizeScreenshot(\n canvas: HTMLCanvasElement,\n targetCanvas: HTMLCanvasElement,\n maxWidth: number,\n maxHeight: number\n): string {\n const targetRatio = maxWidth / maxHeight;\n const { width, height } = canvas;\n const ratio = width / height;\n const wider = ratio >= targetRatio;\n const finalWidth = wider ? maxWidth : maxHeight * ratio;\n const finalHeight = wider ? maxWidth / ratio : maxHeight;\n targetCanvas.width = finalWidth;\n targetCanvas.height = finalHeight;\n\n const ctx = targetCanvas.getContext(\"2d\")!;\n ctx.drawImage(canvas, 0, 0, width, height, 0, 0, finalWidth, finalHeight);\n return targetCanvas.toDataURL();\n}\n","export function getRealTimeDataAnnotation(value: unknown) {\n const type = typeof value;\n switch (type) {\n case \"string\":\n case \"boolean\":\n case \"number\":\n return {\n type,\n value,\n };\n case \"undefined\":\n return { type };\n }\n if (value === null) {\n return { type: \"null\" };\n }\n if (Array.isArray(value)) {\n return { type: \"array\", length: value.length };\n }\n return { type: \"object\" };\n}\n","import {\n getHistory as _getHistory,\n getBasePath,\n matchPath as _matchPath,\n __secret_internals as _internals,\n type NextLocation,\n} from \"@next-core/runtime\";\nimport type { BrickConf, CustomTemplate, RouteConf } from \"@next-core/types\";\nimport { isEmpty, throttle } from \"lodash\";\nimport type {\n BrickOutline,\n HighLightNode,\n Position,\n PreviewDataOption,\n PreviewMessageFromPreviewer,\n PreviewMessagePreviewContractUpdate,\n PreviewMessagePreviewDataValueError,\n PreviewMessagePreviewDataValueSuccess,\n PreviewMessagePreviewerCaptureFailed,\n PreviewMessagePreviewerCaptureOk,\n PreviewMessagePreviewerContentScroll,\n PreviewMessagePreviewerHighlightBrick,\n PreviewMessagePreviewerHighlightContext,\n PreviewMessagePreviewerHoverOnMain,\n PreviewMessagePreviewerRealTimeDataInspectChange,\n PreviewMessagePreviewerRouteMatchChange,\n PreviewMessagePreviewerScroll,\n PreviewMessagePreviewerUrlChange,\n PreviewMessageToPreviewer,\n PreviewSettings,\n PreviewStartOptions,\n} from \"./interfaces.js\";\nimport { capture } from \"./capture.js\";\nimport {\n previewProxyOrigin,\n getPossibleBrickIidList,\n setPreviewFromOrigin,\n startInspecting,\n stopInspecting,\n} from \"./inspector.js\";\nimport { collectUsedContracts } from \"../collect-used-contracts.js\";\nimport { getRealTimeDataAnnotation } from \"./realTimeDataInspect.js\";\n\nlet connected = false;\n\ninterface DLL {\n (moduleId: \"tYg3\"): {\n getHistory: typeof _getHistory;\n developHelper: typeof _internals;\n };\n (moduleId: \"A+yw\"): {\n matchPath: typeof _matchPath;\n };\n}\n\nlet getHistory = _getHistory;\nlet matchPath = _matchPath;\nlet __secret_internals = _internals;\nlet isV2 = false;\n\n// istanbul ignore next\n// Make v3 bricks compatible with Brick Next v2.\ntry {\n const dll = (window as unknown as { dll?: DLL }).dll;\n if (\n dll &&\n window.BRICK_NEXT_VERSIONS?.[\"brick-container\"]?.startsWith(\"2.\")\n ) {\n const { getHistory: getHistoryV2, developHelper: developHelperV2 } =\n dll(\"tYg3\");\n const { matchPath: matchPathV2 } = dll(\"A+yw\");\n getHistory = getHistoryV2;\n matchPath = matchPathV2;\n // The `__secret_internals` of v3 has pretty the same API as\n // `developHelper` of v2, especially those for preview usage.\n __secret_internals = {\n ...developHelperV2,\n getContextValue(name, { tplStateStoreId }) {\n return developHelperV2.getContextValue(name, {\n tplContextId: tplStateStoreId,\n } as any);\n },\n getAllContextValues({ tplStateStoreId }) {\n // V3 returns an object of key-value.\n // While v2 returns a map of ContextItem.\n const v2Map = developHelperV2.getAllContextValues({\n tplContextId: tplStateStoreId,\n } as any) as unknown as Map<string, { value: unknown }>;\n return Object.fromEntries(\n [...v2Map].map(([k, v]) => [k, (v as any).value])\n );\n },\n };\n isV2 = true;\n }\n} catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Try to use v2 runtime APIs failed:\", e);\n}\n\nlet contentScrollElement: Element | null = null;\nlet contentScrollHost: Element | null = null;\n\nexport default async function connect(\n previewFromOrigin: string,\n options: PreviewStartOptions\n) {\n if (connected) {\n return;\n }\n connected = true;\n\n const sendMessage = <T extends PreviewMessageFromPreviewer>(\n message: Omit<T, \"sender\">\n ): void => {\n window.parent.postMessage(\n {\n sender: \"previewer\",\n ...message,\n },\n previewFromOrigin\n );\n };\n\n sendMessage({ type: \"preview-started\" });\n setPreviewFromOrigin(previewFromOrigin);\n\n let hoverIid: string;\n let hoverAlias: string;\n let activeIid: string;\n let activeAlias: string;\n\n const handleHoverOnIframe = (pos: Position): void => {\n const element = document.elementFromPoint(pos.x, pos.y);\n if (element?.tagName === \"BODY\") {\n window.parent.postMessage(\n {\n sender: \"previewer\",\n type: \"hover-on-main\",\n isDirection: true,\n position: {\n x: pos.x,\n y: pos.y,\n },\n } as PreviewMessagePreviewerHoverOnMain,\n previewProxyOrigin\n );\n } else {\n const iidList = getPossibleBrickIidList(element as HTMLElement);\n window.parent.postMessage(\n {\n sender: \"previewer\",\n type: \"hover-on-brick\",\n iidList,\n isDirection: true,\n position: {\n x: pos.x,\n y: pos.y,\n },\n },\n previewProxyOrigin\n );\n }\n };\n\n const sendHighlightBrickOutlines = (\n type: \"hover\" | \"active\",\n iid: string,\n alias: string\n ): void => {\n const outlines = getBrickOutlines(iid);\n sendMessage<PreviewMessagePreviewerHighlightBrick>({\n type: \"highlight-brick\",\n highlightType: type,\n outlines,\n iid: iid,\n alias: alias,\n });\n };\n\n const sendHighlightBricksOutlines = (nodes: HighLightNode[]): void => {\n const outlines = nodes\n .map((node) => getBrickOutlines(node.iid, node.alias))\n .flat();\n sendMessage<PreviewMessagePreviewerHighlightContext>({\n type: \"highlight-context\",\n outlines,\n });\n };\n\n let lastTemplatePreviewSettings: PreviewSettings | undefined;\n if (options.templateId) {\n lastTemplatePreviewSettings = options.settings;\n }\n\n const updateTemplatePreviewSettings = (): void => {\n __secret_internals.updateTemplatePreviewSettings(\n options.appId,\n options.templateId!,\n lastTemplatePreviewSettings\n );\n getHistory().reload();\n };\n\n const updateSnippetPreviewSettings = (): void => {\n __secret_internals.updateSnippetPreviewSettings(\n options.appId,\n JSON.parse(options.snippetData)\n );\n getHistory().reload();\n };\n\n /* const updateFormPreviewSettings = (): void => {\n __secret_internals.updateFormPreviewSettings(\n options.appId,\n options.formId,\n options.formData\n );\n getHistory().reload();\n }; */\n\n const handlePreviewData = (name: string, option: PreviewDataOption): void => {\n try {\n const { dataType } = option;\n let tplStateStoreId;\n\n if (dataType === \"state\") {\n tplStateStoreId = getRootTplStateStoreId();\n\n if (!tplStateStoreId) {\n sendMessage<PreviewMessagePreviewDataValueError>({\n type: \"inspect-data-value-error\",\n data: {\n error: {\n message:\n \"tplStateStoreId not found, unable to preview STATE value\",\n },\n },\n });\n\n return;\n }\n }\n\n let value, type: PreviewMessagePreviewDataValueSuccess[\"type\"];\n if (name) {\n type = \"inspect-single-data-value-success\";\n value = __secret_internals.getContextValue(name, {\n tplStateStoreId,\n });\n } else {\n type = \"inspect-all-data-values-success\";\n const data = __secret_internals.getAllContextValues({\n tplStateStoreId,\n });\n value = Object.entries(data).map(([name, value]) => ({ name, value }));\n }\n\n sendMessage<PreviewMessagePreviewDataValueSuccess>({\n type,\n data: {\n name,\n value,\n },\n });\n\n // istanbul ignore next\n } catch (error) {\n sendMessage<PreviewMessagePreviewDataValueError>({\n type: \"inspect-data-value-error\",\n data: {\n message: (error as Error).message,\n },\n });\n }\n };\n\n const history = getHistory();\n\n window.addEventListener(\n \"message\",\n async ({ data, origin }: MessageEvent<PreviewMessageToPreviewer>) => {\n if (\n origin !== previewFromOrigin ||\n !data ||\n data.sender !== \"preview-container\"\n ) {\n return;\n }\n if (data.forwardedFor === \"builder\") {\n switch (data.type) {\n case \"hover-on-brick\":\n hoverIid = data.iid;\n hoverAlias = data.alias;\n sendHighlightBrickOutlines(\"hover\", data.iid, data.alias);\n break;\n case \"hover-on-main\":\n sendHighlightBrickOutlines(\"hover\", \"#main-mount-point\", \"root\");\n break;\n case \"hover-on-context\":\n sendHighlightBricksOutlines(data.highlightNodes);\n break;\n case \"select-brick\":\n activeIid = data.iid;\n activeAlias = data.alias;\n sendHighlightBrickOutlines(\"active\", data.iid, data.alias);\n break;\n case \"hover-on-iframe\":\n handleHoverOnIframe(data.position);\n break;\n }\n } else\n switch (data.type) {\n case \"toggle-inspecting\":\n data.enabled ? startInspecting() : stopInspecting();\n break;\n case \"refresh\":\n if (data.options?.updateStoryboardType) {\n if (data.options.updateStoryboardType === \"route\") {\n __secret_internals.updateStoryboardByRoute(\n options.appId,\n data.storyboardPatch as RouteConf\n );\n } else if (data.options.updateStoryboardType === \"template\") {\n __secret_internals.updateStoryboardByTemplate(\n options.appId,\n data.storyboardPatch as CustomTemplate,\n data.options.settings\n );\n } else if (data.options.updateStoryboardType === \"snippet\") {\n __secret_internals.updateStoryboardBySnippet(\n options.appId,\n data.storyboardPatch as {\n snippetId: string;\n bricks: BrickConf[];\n }\n );\n } /* else if (data.options.updateStoryboardType === \"form\") {\n __secret_internals.updateFormPreviewSettings(\n options.appId,\n options.formId,\n data.storyboardPatch as FormDataProperties\n );\n } */\n\n const newContracts = await (\n __secret_internals as any\n ).getAddedContracts?.(data.storyboardPatch, {\n appId: options.appId,\n updateStoryboardType: data.options.updateStoryboardType,\n formId: options.formId,\n collectUsedContracts,\n });\n\n if (!isEmpty(newContracts)) {\n sendMessage<PreviewMessagePreviewContractUpdate>({\n type: \"contract-update\",\n data: {\n add: newContracts,\n },\n });\n } else {\n getHistory().reload();\n }\n\n break;\n }\n __secret_internals.updateStoryboard(\n options.appId,\n data.storyboardPatch\n );\n if (options.templateId) {\n lastTemplatePreviewSettings = data.settings;\n updateTemplatePreviewSettings();\n } /* else if (options.formId || options.formData) {\n updateFormPreviewSettings();\n } */ else if (data.options?.snippetData) {\n options.snippetData = data.options.snippetData;\n updateSnippetPreviewSettings();\n } else {\n getHistory().reload();\n }\n break;\n case \"reload\":\n location.reload();\n break;\n case \"back\":\n history.goBack();\n break;\n case \"forward\":\n history.goForward();\n break;\n case \"capture\":\n capture(data.maxWidth, data.maxHeight).then(\n (screenshot) => {\n sendMessage<PreviewMessagePreviewerCaptureOk>({\n type: \"capture-ok\",\n screenshot,\n });\n },\n () => {\n sendMessage<PreviewMessagePreviewerCaptureFailed>({\n type: \"capture-failed\",\n });\n }\n );\n break;\n case \"inspect-data-value\":\n handlePreviewData(data.name, data.option);\n break;\n case \"update-preview-url\": {\n // Remove origin first.\n const url = data.previewUrl.startsWith(window.origin)\n ? data.previewUrl.substring(window.origin.length)\n : data.previewUrl;\n // Then remove base path.\n const basePath = getBasePath();\n const to = url.startsWith(basePath)\n ? url.substring(basePath.length - 1)\n : url;\n getHistory().push(to);\n break;\n }\n case \"update-preview-route\": {\n options.routePath = data.routePath;\n options.routeExact = data.routeExact;\n syncRouteMatch();\n break;\n }\n /* case \"excute-proxy-method\": {\n const [ref, method, args = []] = data.proxyMethodArgs;\n try {\n const result = document.body.querySelector(ref)[method](...args);\n window.parent.postMessage({\n sender: \"previewer\",\n type: \"excute-proxy-method-success\",\n data: { method: method, res: result },\n });\n } catch (err) {\n window.parent.postMessage({\n sender: \"previewer\",\n type: \"excute-proxy-method-error\",\n data: { method: method, res: err.message },\n });\n }\n break;\n } */\n }\n }\n );\n\n window.addEventListener(\"scroll\", () => {\n sendMessage<PreviewMessagePreviewerScroll>({\n type: \"scroll\",\n scroll: {\n x: window.scrollX,\n y: window.scrollY,\n },\n });\n });\n\n let previewPageMatch = true;\n let currentLocation: NextLocation;\n const sendLocationChange = (loc: NextLocation): void => {\n sendMessage<PreviewMessagePreviewerUrlChange>({\n type: \"url-change\",\n url: location.origin + history.createHref(loc),\n });\n currentLocation = loc;\n syncRouteMatch();\n };\n\n function syncRouteMatch() {\n if (options.routePath) {\n const match = !!matchPath(currentLocation.pathname, {\n path: options.routePath,\n exact: options.routeExact,\n });\n sendMessage<PreviewMessagePreviewerRouteMatchChange>({\n type: \"route-match-change\",\n match,\n });\n\n // Re-update template preview settings once match route again (typically after login).\n if (options.templateId && !previewPageMatch && match) {\n const mainMountPoint = document.querySelector(\"#main-mount-point\")!;\n const placeholderLoadObserver = new MutationObserver(() => {\n // We observe when the placeholder is appeared.\n if (\n mainMountPoint.childNodes.length === 1 &&\n (mainMountPoint.firstChild as HTMLElement).tagName === \"SPAN\" &&\n mainMountPoint.firstChild!.childNodes.length === 0\n ) {\n updateTemplatePreviewSettings();\n placeholderLoadObserver.disconnect();\n }\n });\n placeholderLoadObserver.observe(mainMountPoint, { childList: true });\n }\n /* if (options.formId && !previewPageMatch && match) {\n const mainMountPoint = document.querySelector(\"#main-mount-point\");\n const placeholderLoadObserver = new MutationObserver(() => {\n // We observe when the placeholder is appeared.\n if (\n mainMountPoint.childNodes.length === 1 &&\n (mainMountPoint.firstChild as HTMLElement).tagName === \"SPAN\" &&\n mainMountPoint.firstChild.childNodes.length === 0\n ) {\n updateFormPreviewSettings();\n placeholderLoadObserver.disconnect();\n }\n });\n placeholderLoadObserver.observe(mainMountPoint, { childList: true });\n } */\n if (options.snippetData && !previewPageMatch && match) {\n const mainMountPoint = document.querySelector(\"#main-mount-point\")!;\n const placeholderLoadObserver = new MutationObserver(() => {\n // We observe when the placeholder is appeared.\n if (\n mainMountPoint.childNodes.length === 1 &&\n (mainMountPoint.firstChild as HTMLElement).tagName === \"SPAN\" &&\n mainMountPoint.firstChild!.childNodes.length === 0\n ) {\n updateSnippetPreviewSettings();\n placeholderLoadObserver.disconnect();\n }\n });\n placeholderLoadObserver.observe(mainMountPoint, { childList: true });\n }\n previewPageMatch = match;\n }\n }\n\n sendLocationChange(history.location);\n\n history.listen(sendLocationChange);\n\n if (options.templateId) {\n updateTemplatePreviewSettings();\n }\n\n /* if (options.formId || options.formData) {\n updateFormPreviewSettings();\n } */\n\n if (options.snippetData) {\n updateSnippetPreviewSettings();\n }\n\n function setupContentScroll() {\n const host = document.querySelector(\"eo-page-view\");\n const element = host?.shadowRoot?.querySelector(\".content\") ?? null;\n if (element !== contentScrollElement) {\n contentScrollElement?.removeEventListener(\"scroll\", onContentScroll);\n element?.addEventListener(\"scroll\", onContentScroll);\n contentScrollElement = element;\n contentScrollHost = host;\n }\n }\n\n function onContentScroll(this: Element) {\n sendMessage<PreviewMessagePreviewerContentScroll>({\n type: \"content-scroll\",\n scroll: {\n x: this.scrollLeft,\n y: this.scrollTop,\n },\n });\n }\n\n __secret_internals.addRealTimeDataInspectHook?.(\n ({ changeType, tplStateStoreId, detail }) => {\n sendMessage<PreviewMessagePreviewerRealTimeDataInspectChange>({\n type: \"real-time-data-inspect-change\",\n changeType,\n tplStateStoreId,\n detail:\n changeType === \"update\"\n ? {\n name: detail.name,\n annotation: getRealTimeDataAnnotation(detail.value),\n }\n : {\n data: Object.fromEntries(\n Object.entries(detail.data).map(([k, v]) => [\n k,\n getRealTimeDataAnnotation(v),\n ])\n ),\n },\n });\n }\n );\n\n let memoizedRootTplStateStoreId: string | undefined;\n\n function setupRealTimeDataInspect(force?: boolean) {\n const tplStateStoreId = options.templateId\n ? getRootTplStateStoreId()\n : undefined;\n if (memoizedRootTplStateStoreId !== tplStateStoreId || force) {\n memoizedRootTplStateStoreId = tplStateStoreId;\n __secret_internals.setRealTimeDataInspectRoot?.({\n tplStateStoreId,\n });\n }\n }\n\n window.addEventListener(\"route.render\", () => {\n setupRealTimeDataInspect(true);\n });\n\n setupContentScroll();\n setupRealTimeDataInspect(true);\n\n const mutationCallback = (): void => {\n setupContentScroll();\n setupRealTimeDataInspect();\n if (hoverIid) {\n sendHighlightBrickOutlines(\"hover\", hoverIid, hoverAlias);\n }\n if (activeIid) {\n sendHighlightBrickOutlines(\"active\", activeIid, activeAlias);\n }\n };\n const mutationObserver = new MutationObserver(\n throttle(mutationCallback, 100, { leading: false })\n );\n mutationObserver.observe(document.body, { subtree: true, childList: true });\n}\n\nfunction getBrickOutlines(iid: string, alias?: string): BrickOutline[] {\n if (!iid) {\n return [];\n }\n const isRoot = iid.includes(\"#\");\n const elements = getElementsIncludingInShadowDOM(iid, isRoot);\n const outlines = getOutlines(elements, alias);\n return isRoot\n ? outlines.map((item) => ({\n ...item,\n height: window.innerHeight - item.top,\n }))\n : outlines;\n}\n\nfunction getElementsIncludingInShadowDOM(\n iid: string,\n isRoot: boolean\n): HTMLElement[] {\n const elements: HTMLElement[] = [];\n\n function walk(root: Document | ShadowRoot) {\n const candidates = root.querySelectorAll<HTMLElement>(\n isRoot ? iid : `[data-iid=\"${iid}\"]`\n );\n elements.push(...candidates);\n\n // If elements are found in the document, we should stop searching in shadow DOM.\n if (root === document && candidates.length > 0) {\n return;\n }\n\n // These useBrick in v3 bricks will be inside shadow DOM.\n for (const item of root.querySelectorAll(\"*\")) {\n if (item.shadowRoot) {\n walk(item.shadowRoot);\n }\n }\n }\n\n walk(document);\n\n return elements;\n}\n\nfunction getOutlines(elements: HTMLElement[], alias?: string): BrickOutline[] {\n return elements.map((element) => {\n const hasContentScroll = contentScrollHost?.contains(element);\n const { width, height, left, top } = element.getBoundingClientRect();\n return {\n width,\n height,\n left:\n left +\n window.scrollX +\n (hasContentScroll ? contentScrollElement.scrollLeft : 0),\n top:\n top +\n window.scrollY +\n (hasContentScroll ? contentScrollElement.scrollTop : 0),\n alias,\n hasContentScroll,\n };\n });\n}\n\nfunction getRootTplStateStoreId(): string | undefined {\n const mainMountPoint = document.querySelector(\"#main-mount-point\")!;\n\n return (mainMountPoint?.firstChild as HTMLElement)?.dataset[\n isV2 ? \"tplContextId\" : \"tplStateStoreId\"\n ];\n}\n"],"names":["collectUsedContracts","storyboard","collection","nodeOrNodes","Set","traverse","node","type","_node$raw","useProvider","raw","add","collect","parseStoryboard","contracts","item","includes","push","customElements","define","createProviderClass","previewProxyOrigin","_capture","_asyncToGenerator","maxWidth","maxHeight","canvas","sourceCanvas","html2canvas","document","body","logging","scale","width","window","innerWidth","height","innerHeight","foreignObjectRendering","targetCanvas","createElement","targetRatio","ratio","wider","finalWidth","finalHeight","getContext","drawImage","toDataURL","resizeScreenshot","Promise","resolve","reject","toBlob","blob","apply","arguments","onClick","event","iidList","preventDefault","stopPropagation","getPossibleBrickTargets","composedPath","length","parent","postMessage","sender","onMouseEvent","hoverOnBrick","throttle","eventTargets","leading","onPointerDown","onPointerMove","onPointerLeave","onContextMenu","position","x","clientX","y","clientY","targets","target","HTMLElement","dataset","iid","getRealTimeDataAnnotation","value","Array","isArray","connected","getHistory","_getHistory","matchPath","_matchPath","__secret_internals","_internals","isV2","_window$BRICK_NEXT_VE","dll","BRICK_NEXT_VERSIONS","startsWith","getHistoryV2","developHelper","developHelperV2","matchPathV2","_objectSpread","getContextValue","name","_ref","tplStateStoreId","tplContextId","getAllContextValues","_ref2","v2Map","Object","fromEntries","map","_ref3","k","v","e","console","error","contentScrollElement","contentScrollHost","connect","_x","_x2","_connect","previewFromOrigin","options","_secret_internals$ad","_secret_internals","hoverIid","hoverAlias","activeIid","activeAlias","sendMessage","message","lastTemplatePreviewSettings","sendHighlightBrickOutlines","alias","outlines","getBrickOutlines","highlightType","templateId","settings","updateTemplatePreviewSettings","appId","reload","updateSnippetPreviewSettings","JSON","parse","snippetData","history","addEventListener","_ref6","_ref5","_data$options","_data$options2","data","origin","forwardedFor","highlightNodes","flat","pos","element","elementFromPoint","tagName","isDirection","brick","cursor","parentElement","getPossibleBrickIidList","handleHoverOnIframe","enabled","removeEventListener","updateStoryboardType","_getAddedContracts","_ref7","updateStoryboardByRoute","storyboardPatch","updateStoryboardByTemplate","updateStoryboardBySnippet","newContracts","getAddedContracts","call","formId","isEmpty","updateStoryboard","location","goBack","goForward","capture","then","screenshot","handlePreviewData","option","dataType","getRootTplStateStoreId","entries","_ref4","url","previewUrl","substring","basePath","getBasePath","to","routePath","routeExact","syncRouteMatch","_x3","scroll","scrollX","scrollY","currentLocation","memoizedRootTplStateStoreId","previewPageMatch","sendLocationChange","loc","createHref","listen","addRealTimeDataInspectHook","_ref8","changeType","detail","annotation","_ref9","setupRealTimeDataInspect","setupContentScroll","MutationObserver","mutationCallback","observe","subtree","childList","match","pathname","path","exact","mainMountPoint","querySelector","placeholderLoadObserver","childNodes","firstChild","disconnect","_host$shadowRoot$quer","_host$shadowRoot","_contentScrollElement","host","shadowRoot","onContentScroll","this","scrollLeft","scrollTop","force","_secret_internals$se","_secret_internals2","undefined","setRealTimeDataInspectRoot","isRoot","elements","walk","root","candidates","querySelectorAll","concat","getElementsIncludingInShadowDOM","_contentScrollHost","hasContentScroll","contains","left","top","getBoundingClientRect","getOutlines","_mainMountPoint$first"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"chunks/2907.5b37da49.js","mappings":"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","sources":["webpack:///./src/data-providers/collect-used-contracts.ts","webpack:///./src/data-providers/preview/inspector.ts","webpack:///./src/data-providers/preview/capture.ts","webpack:///./src/data-providers/preview/resizeScreenshot.ts","webpack:///./src/data-providers/preview/realTimeDataInspect.ts","webpack:///./src/data-providers/preview/connect.ts"],"sourcesContent":["import { createProviderClass } from \"@next-core/utils/general\";\nimport {\n type StoryboardNode,\n parseStoryboard,\n traverse,\n} from \"@next-core/storyboard\";\nimport {\n Storyboard,\n UseProviderResolveConf,\n UseProviderEventHandler,\n} from \"@next-core/types\";\n\nfunction collect(nodeOrNodes: StoryboardNode | StoryboardNode[]): Set<string> {\n const collection = new Set<string>();\n\n traverse(nodeOrNodes, (node) => {\n switch (node.type) {\n case \"Resolvable\":\n case \"EventHandler\": {\n const useProvider = (\n node.raw as UseProviderResolveConf | UseProviderEventHandler\n )?.useProvider;\n if (useProvider) {\n collection.add(useProvider);\n }\n }\n }\n });\n\n return collection;\n}\n\nexport function collectUsedContracts(storyboard: Storyboard): string[] {\n const collection = collect(parseStoryboard(storyboard as any));\n\n const contracts = [];\n\n for (const item of collection) {\n if (item.includes(\"@\")) {\n contracts.push(item);\n }\n }\n\n return contracts;\n}\n\ncustomElements.define(\n \"visual-builder.collect-used-contracts\",\n createProviderClass(collectUsedContracts)\n);\n","// istanbul ignore file: working in progress\n// https://github.com/facebook/react/blob/cae635054e17a6f107a39d328649137b83f25972/packages/react-devtools-shared/src/backend/views/Highlighter/index.js\nimport { throttle } from \"lodash\";\nimport type {\n PreviewMessagePreviewerHoverOnBrick,\n PreviewMessagePreviewerSelectBrick,\n PreviewMessagePreviewerContextMenuOnBrick,\n} from \"./interfaces.js\";\n\nexport let previewProxyOrigin: string;\n\nexport function setPreviewFromOrigin(origin: string): void {\n previewProxyOrigin = origin;\n}\n\nexport function startInspecting(): void {\n registerListeners();\n}\n\nexport function stopInspecting(): void {\n unregisterListeners();\n}\n\nfunction registerListeners(): void {\n window.addEventListener(\"click\", onClick, true);\n window.addEventListener(\"mousedown\", onMouseEvent, true);\n window.addEventListener(\"mouseover\", onMouseEvent, true);\n window.addEventListener(\"mouseup\", onMouseEvent, true);\n window.addEventListener(\"pointerdown\", onPointerDown, true);\n window.addEventListener(\"pointermove\", onPointerMove, true);\n window.addEventListener(\"pointerup\", onMouseEvent, true);\n window.addEventListener(\"pointerleave\", onPointerLeave, true);\n window.addEventListener(\"contextmenu\", onContextMenu, true);\n}\n\nfunction unregisterListeners(): void {\n window.removeEventListener(\"click\", onClick, true);\n window.removeEventListener(\"mousedown\", onMouseEvent, true);\n window.removeEventListener(\"mouseover\", onMouseEvent, true);\n window.removeEventListener(\"mouseup\", onMouseEvent, true);\n window.removeEventListener(\"pointerdown\", onPointerDown, true);\n window.removeEventListener(\"pointermove\", onPointerMove, true);\n window.removeEventListener(\"pointerup\", onMouseEvent, true);\n window.removeEventListener(\"pointerleave\", onPointerLeave, true);\n window.removeEventListener(\"contextmenu\", onContextMenu, true);\n}\n\nfunction onClick(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n selectBrick(event.composedPath());\n}\n\nfunction onMouseEvent(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n}\n\nconst hoverOnBrick = throttle(\n (eventTargets: EventTarget[]) => {\n const iidList = getPossibleBrickTargets(eventTargets);\n\n if (iidList.length > 0) {\n window.parent.postMessage(\n {\n sender: \"previewer\",\n type: \"hover-on-brick\",\n iidList,\n } as PreviewMessagePreviewerHoverOnBrick,\n previewProxyOrigin\n );\n }\n },\n 100,\n { leading: false }\n);\n\nfunction onPointerDown(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n hoverOnBrick(event.composedPath());\n}\n\nfunction onPointerMove(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n hoverOnBrick(event.composedPath());\n}\n\nfunction onPointerLeave(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n window.parent.postMessage(\n {\n sender: \"previewer\",\n type: \"hover-on-brick\",\n iidList: [],\n } as PreviewMessagePreviewerHoverOnBrick,\n previewProxyOrigin\n );\n}\n\nfunction onContextMenu(event: MouseEvent): void {\n event.preventDefault();\n event.stopPropagation();\n contextMenuOnBrick(event.composedPath(), {\n x: event.clientX,\n y: event.clientY,\n });\n}\n\nfunction contextMenuOnBrick(\n eventTargets: EventTarget[],\n position: {\n x: number;\n y: number;\n }\n): void {\n const iidList = getPossibleBrickTargets(eventTargets);\n if (iidList.length > 0) {\n window.parent.postMessage(\n {\n sender: \"previewer\",\n type: \"context-menu-on-brick\",\n iidList,\n position,\n } as PreviewMessagePreviewerContextMenuOnBrick,\n previewProxyOrigin\n );\n }\n}\n\nfunction selectBrick(eventTargets: EventTarget[]): void {\n const iidList = getPossibleBrickTargets(eventTargets);\n if (iidList.length > 0) {\n window.parent.postMessage(\n {\n sender: \"previewer\",\n type: \"select-brick\",\n iidList,\n } as PreviewMessagePreviewerSelectBrick,\n previewProxyOrigin\n );\n }\n}\n\nexport function getPossibleBrickIidList(brick: HTMLElement): string[] {\n const iidList: string[] = [];\n // Traverse from bottom to up, to find bricks current hover on.\n let cursor: HTMLElement | null = brick;\n while (cursor) {\n if (typeof cursor.dataset.iid === \"string\") {\n iidList.push(cursor.dataset.iid);\n }\n cursor = cursor.parentElement;\n }\n return iidList;\n}\n\nexport function getPossibleBrickTargets(eventTargets: EventTarget[]) {\n const targets: string[] = [];\n for (const target of eventTargets) {\n if (\n target instanceof HTMLElement &&\n typeof target.dataset.iid === \"string\"\n ) {\n targets.push(target.dataset.iid);\n }\n }\n return targets;\n}\n","// istanbul ignore file: nothing logical except calling html2canvas.\nimport html2canvas from \"html2canvas\";\nimport { resizeScreenshot } from \"./resizeScreenshot.js\";\n\nfunction getCanvasBlob(canvas: HTMLCanvasElement): Promise<Blob> {\n return new Promise(function (resolve, reject) {\n canvas.toBlob(function (blob: Blob | null) {\n if (blob) {\n resolve(blob);\n } else {\n reject();\n }\n });\n });\n}\n\nexport async function capture(\n maxWidth: number,\n maxHeight: number\n): Promise<Blob> {\n const sourceCanvas = await html2canvas(document.body, {\n logging: false,\n scale: 1,\n width: window.innerWidth,\n height: window.innerHeight,\n foreignObjectRendering: true,\n });\n const targetCanvas = document.createElement(\"canvas\");\n resizeScreenshot(sourceCanvas, targetCanvas, maxWidth, maxHeight);\n const blob = await getCanvasBlob(targetCanvas);\n return blob;\n}\n","export function resizeScreenshot(\n canvas: HTMLCanvasElement,\n targetCanvas: HTMLCanvasElement,\n maxWidth: number,\n maxHeight: number\n): string {\n const targetRatio = maxWidth / maxHeight;\n const { width, height } = canvas;\n const ratio = width / height;\n const wider = ratio >= targetRatio;\n const finalWidth = wider ? maxWidth : maxHeight * ratio;\n const finalHeight = wider ? maxWidth / ratio : maxHeight;\n targetCanvas.width = finalWidth;\n targetCanvas.height = finalHeight;\n\n const ctx = targetCanvas.getContext(\"2d\")!;\n ctx.drawImage(canvas, 0, 0, width, height, 0, 0, finalWidth, finalHeight);\n return targetCanvas.toDataURL();\n}\n","export function getRealTimeDataAnnotation(value: unknown) {\n const type = typeof value;\n switch (type) {\n case \"string\":\n case \"boolean\":\n case \"number\":\n return {\n type,\n value,\n };\n case \"undefined\":\n return { type };\n }\n if (value === null) {\n return { type: \"null\" };\n }\n if (Array.isArray(value)) {\n return { type: \"array\", length: value.length };\n }\n return { type: \"object\" };\n}\n","import {\n getHistory as _getHistory,\n getBasePath,\n matchPath as _matchPath,\n __secret_internals as _internals,\n type NextLocation,\n} from \"@next-core/runtime\";\nimport type { BrickConf, CustomTemplate, RouteConf } from \"@next-core/types\";\nimport { isEmpty, throttle } from \"lodash\";\nimport type {\n BrickOutline,\n HighLightNode,\n Position,\n PreviewDataOption,\n PreviewMessageFromPreviewer,\n PreviewMessagePreviewContractUpdate,\n PreviewMessagePreviewDataValueError,\n PreviewMessagePreviewDataValueSuccess,\n PreviewMessagePreviewerCaptureFailed,\n PreviewMessagePreviewerCaptureOk,\n PreviewMessagePreviewerContentScroll,\n PreviewMessagePreviewerHighlightBrick,\n PreviewMessagePreviewerHighlightContext,\n PreviewMessagePreviewerHoverOnMain,\n PreviewMessagePreviewerRealTimeDataInspectChange,\n PreviewMessagePreviewerRouteMatchChange,\n PreviewMessagePreviewerScroll,\n PreviewMessagePreviewerUrlChange,\n PreviewMessageToPreviewer,\n PreviewSettings,\n PreviewStartOptions,\n} from \"./interfaces.js\";\nimport { capture } from \"./capture.js\";\nimport {\n previewProxyOrigin,\n getPossibleBrickIidList,\n setPreviewFromOrigin,\n startInspecting,\n stopInspecting,\n} from \"./inspector.js\";\nimport { collectUsedContracts } from \"../collect-used-contracts.js\";\nimport { getRealTimeDataAnnotation } from \"./realTimeDataInspect.js\";\n\nlet connected = false;\n\ninterface DLL {\n (moduleId: \"tYg3\"): {\n getHistory: typeof _getHistory;\n developHelper: typeof _internals;\n };\n (moduleId: \"A+yw\"): {\n matchPath: typeof _matchPath;\n };\n}\n\nlet getHistory = _getHistory;\nlet matchPath = _matchPath;\nlet __secret_internals = _internals;\nlet isV2 = false;\n\n// istanbul ignore next\n// Make v3 bricks compatible with Brick Next v2.\ntry {\n const dll = (window as unknown as { dll?: DLL }).dll;\n if (\n dll &&\n window.BRICK_NEXT_VERSIONS?.[\"brick-container\"]?.startsWith(\"2.\")\n ) {\n const { getHistory: getHistoryV2, developHelper: developHelperV2 } =\n dll(\"tYg3\");\n const { matchPath: matchPathV2 } = dll(\"A+yw\");\n getHistory = getHistoryV2;\n matchPath = matchPathV2;\n // The `__secret_internals` of v3 has pretty the same API as\n // `developHelper` of v2, especially those for preview usage.\n __secret_internals = {\n ...developHelperV2,\n getContextValue(name, { tplStateStoreId }) {\n return developHelperV2.getContextValue(name, {\n tplContextId: tplStateStoreId,\n } as any);\n },\n getAllContextValues({ tplStateStoreId }) {\n // V3 returns an object of key-value.\n // While v2 returns a map of ContextItem.\n const v2Map = developHelperV2.getAllContextValues({\n tplContextId: tplStateStoreId,\n } as any) as unknown as Map<string, { value: unknown }>;\n return Object.fromEntries(\n [...v2Map].map(([k, v]) => [k, (v as any).value])\n );\n },\n };\n isV2 = true;\n }\n} catch (e) {\n // eslint-disable-next-line no-console\n console.error(\"Try to use v2 runtime APIs failed:\", e);\n}\n\nlet contentScrollElement: Element | null = null;\nlet contentScrollHost: Element | null = null;\n\nexport default async function connect(\n previewFromOrigin: string,\n options: PreviewStartOptions\n) {\n if (connected) {\n return;\n }\n connected = true;\n\n const sendMessage = <T extends PreviewMessageFromPreviewer>(\n message: Omit<T, \"sender\">\n ): void => {\n window.parent.postMessage(\n {\n sender: \"previewer\",\n ...message,\n },\n previewFromOrigin\n );\n };\n\n sendMessage({ type: \"preview-started\" });\n setPreviewFromOrigin(previewFromOrigin);\n\n let hoverIid: string;\n let hoverAlias: string;\n let activeIid: string;\n let activeAlias: string;\n\n const handleHoverOnIframe = (pos: Position): void => {\n const element = document.elementFromPoint(pos.x, pos.y);\n if (element?.tagName === \"BODY\") {\n window.parent.postMessage(\n {\n sender: \"previewer\",\n type: \"hover-on-main\",\n isDirection: true,\n position: {\n x: pos.x,\n y: pos.y,\n },\n } as PreviewMessagePreviewerHoverOnMain,\n previewProxyOrigin\n );\n } else {\n const iidList = getPossibleBrickIidList(element as HTMLElement);\n window.parent.postMessage(\n {\n sender: \"previewer\",\n type: \"hover-on-brick\",\n iidList,\n isDirection: true,\n position: {\n x: pos.x,\n y: pos.y,\n },\n },\n previewProxyOrigin\n );\n }\n };\n\n const sendHighlightBrickOutlines = (\n type: \"hover\" | \"active\",\n iid: string,\n alias: string\n ): void => {\n const outlines = getBrickOutlines(iid);\n sendMessage<PreviewMessagePreviewerHighlightBrick>({\n type: \"highlight-brick\",\n highlightType: type,\n outlines,\n iid: iid,\n alias: alias,\n });\n };\n\n const sendHighlightBricksOutlines = (nodes: HighLightNode[]): void => {\n const outlines = nodes\n .map((node) => getBrickOutlines(node.iid, node.alias))\n .flat();\n sendMessage<PreviewMessagePreviewerHighlightContext>({\n type: \"highlight-context\",\n outlines,\n });\n };\n\n let lastTemplatePreviewSettings: PreviewSettings | undefined;\n if (options.templateId) {\n lastTemplatePreviewSettings = options.settings;\n }\n\n const updateTemplatePreviewSettings = (): void => {\n __secret_internals.updateTemplatePreviewSettings(\n options.appId,\n options.templateId!,\n lastTemplatePreviewSettings\n );\n getHistory().reload();\n };\n\n const updateSnippetPreviewSettings = (): void => {\n __secret_internals.updateSnippetPreviewSettings(\n options.appId,\n JSON.parse(options.snippetData)\n );\n getHistory().reload();\n };\n\n /* const updateFormPreviewSettings = (): void => {\n __secret_internals.updateFormPreviewSettings(\n options.appId,\n options.formId,\n options.formData\n );\n getHistory().reload();\n }; */\n\n const handlePreviewData = (name: string, option: PreviewDataOption): void => {\n try {\n const { dataType } = option;\n let tplStateStoreId;\n\n if (dataType === \"state\") {\n tplStateStoreId = getRootTplStateStoreId();\n\n if (!tplStateStoreId) {\n sendMessage<PreviewMessagePreviewDataValueError>({\n type: \"inspect-data-value-error\",\n data: {\n error: {\n message:\n \"tplStateStoreId not found, unable to preview STATE value\",\n },\n },\n });\n\n return;\n }\n }\n\n let value, type: PreviewMessagePreviewDataValueSuccess[\"type\"];\n if (name) {\n type = \"inspect-single-data-value-success\";\n value = __secret_internals.getContextValue(name, {\n tplStateStoreId,\n });\n } else {\n type = \"inspect-all-data-values-success\";\n const data = __secret_internals.getAllContextValues({\n tplStateStoreId,\n });\n value = Object.entries(data).map(([name, value]) => ({ name, value }));\n }\n\n sendMessage<PreviewMessagePreviewDataValueSuccess>({\n type,\n data: {\n name,\n value,\n },\n });\n\n // istanbul ignore next\n } catch (error) {\n sendMessage<PreviewMessagePreviewDataValueError>({\n type: \"inspect-data-value-error\",\n data: {\n message: (error as Error).message,\n },\n });\n }\n };\n\n const history = getHistory();\n\n window.addEventListener(\n \"message\",\n async ({ data, origin }: MessageEvent<PreviewMessageToPreviewer>) => {\n if (\n origin !== previewFromOrigin ||\n !data ||\n data.sender !== \"preview-container\"\n ) {\n return;\n }\n if (data.forwardedFor === \"builder\") {\n switch (data.type) {\n case \"hover-on-brick\":\n hoverIid = data.iid;\n hoverAlias = data.alias;\n sendHighlightBrickOutlines(\"hover\", data.iid, data.alias);\n break;\n case \"hover-on-main\":\n sendHighlightBrickOutlines(\"hover\", \"#main-mount-point\", \"root\");\n break;\n case \"hover-on-context\":\n sendHighlightBricksOutlines(data.highlightNodes);\n break;\n case \"select-brick\":\n activeIid = data.iid;\n activeAlias = data.alias;\n sendHighlightBrickOutlines(\"active\", data.iid, data.alias);\n break;\n case \"hover-on-iframe\":\n handleHoverOnIframe(data.position);\n break;\n }\n } else\n switch (data.type) {\n case \"toggle-inspecting\":\n data.enabled ? startInspecting() : stopInspecting();\n break;\n case \"refresh\":\n if (data.options?.updateStoryboardType) {\n if (data.options.updateStoryboardType === \"route\") {\n __secret_internals.updateStoryboardByRoute(\n options.appId,\n data.storyboardPatch as RouteConf\n );\n } else if (data.options.updateStoryboardType === \"template\") {\n __secret_internals.updateStoryboardByTemplate(\n options.appId,\n data.storyboardPatch as CustomTemplate,\n data.options.settings\n );\n } else if (data.options.updateStoryboardType === \"snippet\") {\n __secret_internals.updateStoryboardBySnippet(\n options.appId,\n data.storyboardPatch as {\n snippetId: string;\n bricks: BrickConf[];\n }\n );\n } /* else if (data.options.updateStoryboardType === \"form\") {\n __secret_internals.updateFormPreviewSettings(\n options.appId,\n options.formId,\n data.storyboardPatch as FormDataProperties\n );\n } */\n\n const newContracts = await (\n __secret_internals as any\n ).getAddedContracts?.(data.storyboardPatch, {\n appId: options.appId,\n updateStoryboardType: data.options.updateStoryboardType,\n formId: options.formId,\n collectUsedContracts,\n });\n\n if (!isEmpty(newContracts)) {\n sendMessage<PreviewMessagePreviewContractUpdate>({\n type: \"contract-update\",\n data: {\n add: newContracts,\n },\n });\n } else {\n getHistory().reload();\n }\n\n break;\n }\n __secret_internals.updateStoryboard(\n options.appId,\n data.storyboardPatch\n );\n if (options.templateId) {\n lastTemplatePreviewSettings = data.settings;\n updateTemplatePreviewSettings();\n } /* else if (options.formId || options.formData) {\n updateFormPreviewSettings();\n } */ else if (data.options?.snippetData) {\n options.snippetData = data.options.snippetData;\n updateSnippetPreviewSettings();\n } else {\n getHistory().reload();\n }\n break;\n case \"reload\":\n location.reload();\n break;\n case \"back\":\n history.goBack();\n break;\n case \"forward\":\n history.goForward();\n break;\n case \"capture\":\n capture(data.maxWidth, data.maxHeight).then(\n (screenshot) => {\n sendMessage<PreviewMessagePreviewerCaptureOk>({\n type: \"capture-ok\",\n screenshot,\n });\n },\n () => {\n sendMessage<PreviewMessagePreviewerCaptureFailed>({\n type: \"capture-failed\",\n });\n }\n );\n break;\n case \"inspect-data-value\":\n handlePreviewData(data.name, data.option);\n break;\n case \"update-preview-url\": {\n // Remove origin first.\n const url = data.previewUrl.startsWith(window.origin)\n ? data.previewUrl.substring(window.origin.length)\n : data.previewUrl;\n // Then remove base path.\n const basePath = getBasePath();\n const to = url.startsWith(basePath)\n ? url.substring(basePath.length - 1)\n : url;\n getHistory().push(to);\n break;\n }\n case \"update-preview-route\": {\n options.routePath = data.routePath;\n options.routeExact = data.routeExact;\n syncRouteMatch();\n break;\n }\n /* case \"excute-proxy-method\": {\n const [ref, method, args = []] = data.proxyMethodArgs;\n try {\n const result = document.body.querySelector(ref)[method](...args);\n window.parent.postMessage({\n sender: \"previewer\",\n type: \"excute-proxy-method-success\",\n data: { method: method, res: result },\n });\n } catch (err) {\n window.parent.postMessage({\n sender: \"previewer\",\n type: \"excute-proxy-method-error\",\n data: { method: method, res: err.message },\n });\n }\n break;\n } */\n }\n }\n );\n\n window.addEventListener(\"scroll\", () => {\n sendMessage<PreviewMessagePreviewerScroll>({\n type: \"scroll\",\n scroll: {\n x: window.scrollX,\n y: window.scrollY,\n },\n });\n });\n\n let previewPageMatch = true;\n let currentLocation: NextLocation;\n const sendLocationChange = (loc: NextLocation): void => {\n sendMessage<PreviewMessagePreviewerUrlChange>({\n type: \"url-change\",\n url: location.origin + history.createHref(loc),\n });\n currentLocation = loc;\n syncRouteMatch();\n };\n\n function syncRouteMatch() {\n if (options.routePath) {\n const match = !!matchPath(currentLocation.pathname, {\n path: options.routePath,\n exact: options.routeExact,\n });\n sendMessage<PreviewMessagePreviewerRouteMatchChange>({\n type: \"route-match-change\",\n match,\n });\n\n // Re-update template preview settings once match route again (typically after login).\n if (options.templateId && !previewPageMatch && match) {\n const mainMountPoint = document.querySelector(\"#main-mount-point\")!;\n const placeholderLoadObserver = new MutationObserver(() => {\n // We observe when the placeholder is appeared.\n if (\n mainMountPoint.childNodes.length === 1 &&\n (mainMountPoint.firstChild as HTMLElement).tagName === \"SPAN\" &&\n mainMountPoint.firstChild!.childNodes.length === 0\n ) {\n updateTemplatePreviewSettings();\n placeholderLoadObserver.disconnect();\n }\n });\n placeholderLoadObserver.observe(mainMountPoint, { childList: true });\n }\n /* if (options.formId && !previewPageMatch && match) {\n const mainMountPoint = document.querySelector(\"#main-mount-point\");\n const placeholderLoadObserver = new MutationObserver(() => {\n // We observe when the placeholder is appeared.\n if (\n mainMountPoint.childNodes.length === 1 &&\n (mainMountPoint.firstChild as HTMLElement).tagName === \"SPAN\" &&\n mainMountPoint.firstChild.childNodes.length === 0\n ) {\n updateFormPreviewSettings();\n placeholderLoadObserver.disconnect();\n }\n });\n placeholderLoadObserver.observe(mainMountPoint, { childList: true });\n } */\n if (options.snippetData && !previewPageMatch && match) {\n const mainMountPoint = document.querySelector(\"#main-mount-point\")!;\n const placeholderLoadObserver = new MutationObserver(() => {\n // We observe when the placeholder is appeared.\n if (\n mainMountPoint.childNodes.length === 1 &&\n (mainMountPoint.firstChild as HTMLElement).tagName === \"SPAN\" &&\n mainMountPoint.firstChild!.childNodes.length === 0\n ) {\n updateSnippetPreviewSettings();\n placeholderLoadObserver.disconnect();\n }\n });\n placeholderLoadObserver.observe(mainMountPoint, { childList: true });\n }\n previewPageMatch = match;\n }\n }\n\n sendLocationChange(history.location);\n\n history.listen(sendLocationChange);\n\n if (options.templateId) {\n updateTemplatePreviewSettings();\n }\n\n /* if (options.formId || options.formData) {\n updateFormPreviewSettings();\n } */\n\n if (options.snippetData) {\n updateSnippetPreviewSettings();\n }\n\n function setupContentScroll() {\n const host = document.querySelector(\"eo-page-view\");\n const element = host?.shadowRoot?.querySelector(\".content\") ?? null;\n if (element !== contentScrollElement) {\n contentScrollElement?.removeEventListener(\"scroll\", onContentScroll);\n element?.addEventListener(\"scroll\", onContentScroll);\n contentScrollElement = element;\n contentScrollHost = host;\n }\n }\n\n function onContentScroll(this: Element) {\n sendMessage<PreviewMessagePreviewerContentScroll>({\n type: \"content-scroll\",\n scroll: {\n x: this.scrollLeft,\n y: this.scrollTop,\n },\n });\n }\n\n __secret_internals.addRealTimeDataInspectHook?.(\n ({ changeType, tplStateStoreId, detail }) => {\n sendMessage<PreviewMessagePreviewerRealTimeDataInspectChange>({\n type: \"real-time-data-inspect-change\",\n changeType,\n tplStateStoreId,\n detail:\n changeType === \"update\"\n ? {\n name: detail.name,\n annotation: getRealTimeDataAnnotation(detail.value),\n }\n : {\n data: Object.fromEntries(\n Object.entries(detail.data).map(([k, v]) => [\n k,\n getRealTimeDataAnnotation(v),\n ])\n ),\n },\n });\n }\n );\n\n let memoizedRootTplStateStoreId: string | undefined;\n\n function setupRealTimeDataInspect(force?: boolean) {\n const tplStateStoreId = options.templateId\n ? getRootTplStateStoreId()\n : undefined;\n if (memoizedRootTplStateStoreId !== tplStateStoreId || force) {\n memoizedRootTplStateStoreId = tplStateStoreId;\n __secret_internals.setRealTimeDataInspectRoot?.({\n tplStateStoreId,\n });\n }\n }\n\n window.addEventListener(\"route.render\", () => {\n setupRealTimeDataInspect(true);\n });\n\n setupContentScroll();\n setupRealTimeDataInspect(true);\n\n const mutationCallback = (): void => {\n setupContentScroll();\n setupRealTimeDataInspect();\n if (hoverIid) {\n sendHighlightBrickOutlines(\"hover\", hoverIid, hoverAlias);\n }\n if (activeIid) {\n sendHighlightBrickOutlines(\"active\", activeIid, activeAlias);\n }\n };\n const mutationObserver = new MutationObserver(\n throttle(mutationCallback, 100, { leading: false })\n );\n mutationObserver.observe(document.body, { subtree: true, childList: true });\n}\n\nfunction getBrickOutlines(iid: string, alias?: string): BrickOutline[] {\n if (!iid) {\n return [];\n }\n const isRoot = iid.includes(\"#\");\n const elements = getElementsIncludingInShadowDOM(iid, isRoot);\n const outlines = getOutlines(elements, alias);\n return isRoot\n ? outlines.map((item) => ({\n ...item,\n height: window.innerHeight - item.top,\n }))\n : outlines;\n}\n\nfunction getElementsIncludingInShadowDOM(\n iid: string,\n isRoot: boolean\n): HTMLElement[] {\n const elements: HTMLElement[] = [];\n\n function walk(root: Document | ShadowRoot) {\n const candidates = root.querySelectorAll<HTMLElement>(\n isRoot ? iid : `[data-iid=\"${iid}\"]`\n );\n elements.push(...candidates);\n\n // If elements are found in the document, we should stop searching in shadow DOM.\n if (root === document && candidates.length > 0) {\n return;\n }\n\n // These useBrick in v3 bricks will be inside shadow DOM.\n for (const item of root.querySelectorAll(\"*\")) {\n if (item.shadowRoot) {\n walk(item.shadowRoot);\n }\n }\n }\n\n walk(document);\n\n return elements;\n}\n\nfunction getOutlines(elements: HTMLElement[], alias?: string): BrickOutline[] {\n return elements.map((element) => {\n const hasContentScroll = contentScrollHost?.contains(element);\n const { width, height, left, top } = element.getBoundingClientRect();\n return {\n width,\n height,\n left:\n left +\n window.scrollX +\n (hasContentScroll ? contentScrollElement.scrollLeft : 0),\n top:\n top +\n window.scrollY +\n (hasContentScroll ? contentScrollElement.scrollTop : 0),\n alias,\n hasContentScroll,\n };\n });\n}\n\nfunction getRootTplStateStoreId(): string | undefined {\n const mainMountPoint = document.querySelector(\"#main-mount-point\")!;\n\n return (mainMountPoint?.firstChild as HTMLElement)?.dataset[\n isV2 ? \"tplContextId\" : \"tplStateStoreId\"\n ];\n}\n"],"names":["collectUsedContracts","storyboard","collection","nodeOrNodes","Set","traverse","node","type","_node$raw","useProvider","raw","add","collect","parseStoryboard","contracts","item","includes","push","customElements","define","createProviderClass","previewProxyOrigin","_capture","_asyncToGenerator","maxWidth","maxHeight","canvas","sourceCanvas","html2canvas","document","body","logging","scale","width","window","innerWidth","height","innerHeight","foreignObjectRendering","targetCanvas","createElement","targetRatio","ratio","wider","finalWidth","finalHeight","getContext","drawImage","toDataURL","resizeScreenshot","Promise","resolve","reject","toBlob","blob","apply","arguments","onClick","event","iidList","preventDefault","stopPropagation","getPossibleBrickTargets","composedPath","length","parent","postMessage","sender","onMouseEvent","hoverOnBrick","throttle","eventTargets","leading","onPointerDown","onPointerMove","onPointerLeave","onContextMenu","position","x","clientX","y","clientY","targets","target","HTMLElement","dataset","iid","getRealTimeDataAnnotation","value","Array","isArray","connected","getHistory","_getHistory","matchPath","_matchPath","__secret_internals","_internals","isV2","_window$BRICK_NEXT_VE","dll","BRICK_NEXT_VERSIONS","startsWith","getHistoryV2","developHelper","developHelperV2","matchPathV2","_objectSpread","getContextValue","name","_ref","tplStateStoreId","tplContextId","getAllContextValues","_ref2","v2Map","Object","fromEntries","map","_ref3","k","v","e","console","error","contentScrollElement","contentScrollHost","connect","_x","_x2","_connect","previewFromOrigin","options","_secret_internals$ad","_secret_internals","hoverIid","hoverAlias","activeIid","activeAlias","sendMessage","message","lastTemplatePreviewSettings","sendHighlightBrickOutlines","alias","outlines","getBrickOutlines","highlightType","templateId","settings","updateTemplatePreviewSettings","appId","reload","updateSnippetPreviewSettings","JSON","parse","snippetData","history","addEventListener","_ref6","_ref5","_data$options","_data$options2","data","origin","forwardedFor","highlightNodes","flat","pos","element","elementFromPoint","tagName","isDirection","brick","cursor","parentElement","getPossibleBrickIidList","handleHoverOnIframe","enabled","removeEventListener","updateStoryboardType","_getAddedContracts","_ref7","updateStoryboardByRoute","storyboardPatch","updateStoryboardByTemplate","updateStoryboardBySnippet","newContracts","getAddedContracts","call","formId","isEmpty","updateStoryboard","location","goBack","goForward","capture","then","screenshot","handlePreviewData","option","dataType","getRootTplStateStoreId","entries","_ref4","url","previewUrl","substring","basePath","getBasePath","to","routePath","routeExact","syncRouteMatch","_x3","scroll","scrollX","scrollY","currentLocation","memoizedRootTplStateStoreId","previewPageMatch","sendLocationChange","loc","createHref","listen","addRealTimeDataInspectHook","_ref8","changeType","detail","annotation","_ref9","setupRealTimeDataInspect","setupContentScroll","MutationObserver","mutationCallback","observe","subtree","childList","match","pathname","path","exact","mainMountPoint","querySelector","placeholderLoadObserver","childNodes","firstChild","disconnect","_host$shadowRoot$quer","_host$shadowRoot","_contentScrollElement","host","shadowRoot","onContentScroll","this","scrollLeft","scrollTop","force","_secret_internals$se","_secret_internals2","undefined","setRealTimeDataInspectRoot","isRoot","elements","walk","root","candidates","querySelectorAll","concat","getElementsIncludingInShadowDOM","_contentScrollHost","hasContentScroll","contains","left","top","getBoundingClientRect","getOutlines","_mainMountPoint$first"],"sourceRoot":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_next_bricks_visual_builder=self.webpackChunk_next_bricks_visual_builder||[]).push([[3458,8691],{3458:(e,t,r)=>{function o(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return function(n,a){if("string"==typeof t?n.name===t:t.includes(n.name)){for(var i=[],s=1;s<=r;s++){var c=a[a.length-s];if("MemberExpression"===(null==c?void 0:c.node.type)&&"object"===c.key){var u=c.node;u.computed||"Identifier"!==u.property.type?u.computed&&"Literal"===u.property.type&&"string"==typeof u.property.value?i.push(o?"".concat(n.name,".").concat(u.property.value):u.property.value):e.hasNonStaticUsage=!0:i.push(o?"".concat(n.name,".").concat(u.property.name):u.property.name)}else e.hasNonStaticUsage=!0}i.length===r&&e.usedProperties.add(i.join("."))}}}function n(e,t){return function(r,o,n){if(o.name===e){var a=n[n.length-1],i=n[n.length-2];if("CallExpression"===(null==i?void 0:i.node.type)&&"callee"===(null==i?void 0:i.key)&&"MemberExpression"===(null==a?void 0:a.node.type)&&"object"===a.key&&(a.node.computed?"Literal"===a.node.property.type&&a.node.property.value===t:"Identifier"===a.node.property.type&&a.node.property.name===t)){var s=i.node.arguments;if(s.length>0){var c=s[0];"Literal"===c.type&&"string"==typeof c.value?r.usedArgs.add(c.value):r.hasNonStaticUsage=!0}}}}}r.r(t),r.d(t,{beforeVisitGlobalMember:()=>o,collectAppGetMenuUsage:()=>a,collectInstalledAppsHasUsage:()=>i,collectMemberUsage:()=>p,collectMemberUsageInFunction:()=>g,createProviderClass:()=>c.createProviderClass,scanPermissionActionsInAny:()=>m,scanPermissionActionsInStoryboard:()=>b,strictCollectMemberUsage:()=>l,track:()=>d,trackAll:()=>f,traverseStoryboardExpressions:()=>u,traverseStoryboardFunction:()=>v,traverseStoryboardFunctions:()=>y,unwrapProvider:()=>c.unwrapProvider});var a=n("APP","getMenu"),i=n("INSTALLED_APPS","has"),s=r(488),c=r(
|
|
2
|
-
//# sourceMappingURL=3458.
|
|
1
|
+
"use strict";(self.webpackChunk_next_bricks_visual_builder=self.webpackChunk_next_bricks_visual_builder||[]).push([[3458,8691],{3458:(e,t,r)=>{function o(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return function(n,a){if("string"==typeof t?n.name===t:t.includes(n.name)){for(var i=[],s=1;s<=r;s++){var c=a[a.length-s];if("MemberExpression"===(null==c?void 0:c.node.type)&&"object"===c.key){var u=c.node;u.computed||"Identifier"!==u.property.type?u.computed&&"Literal"===u.property.type&&"string"==typeof u.property.value?i.push(o?"".concat(n.name,".").concat(u.property.value):u.property.value):e.hasNonStaticUsage=!0:i.push(o?"".concat(n.name,".").concat(u.property.name):u.property.name)}else e.hasNonStaticUsage=!0}i.length===r&&e.usedProperties.add(i.join("."))}}}function n(e,t){return function(r,o,n){if(o.name===e){var a=n[n.length-1],i=n[n.length-2];if("CallExpression"===(null==i?void 0:i.node.type)&&"callee"===(null==i?void 0:i.key)&&"MemberExpression"===(null==a?void 0:a.node.type)&&"object"===a.key&&(a.node.computed?"Literal"===a.node.property.type&&a.node.property.value===t:"Identifier"===a.node.property.type&&a.node.property.name===t)){var s=i.node.arguments;if(s.length>0){var c=s[0];"Literal"===c.type&&"string"==typeof c.value?r.usedArgs.add(c.value):r.hasNonStaticUsage=!0}}}}}r.r(t),r.d(t,{beforeVisitGlobalMember:()=>o,collectAppGetMenuUsage:()=>a,collectInstalledAppsHasUsage:()=>i,collectMemberUsage:()=>p,collectMemberUsageInFunction:()=>g,createProviderClass:()=>c.createProviderClass,scanPermissionActionsInAny:()=>m,scanPermissionActionsInStoryboard:()=>b,strictCollectMemberUsage:()=>l,track:()=>d,trackAll:()=>f,traverseStoryboardExpressions:()=>u,traverseStoryboardFunction:()=>v,traverseStoryboardFunctions:()=>y,unwrapProvider:()=>c.unwrapProvider});var a=n("APP","getMenu"),i=n("INSTALLED_APPS","has"),s=r(488),c=r(9242);function u(e,t,r){var o=new WeakSet,{matchExpressionString:n,visitNotMatchedExpressionString:a,visitNonExpressionString:i,visitObject:u}="string"==typeof r?{matchExpressionString:e=>e.includes(r)}:r;!function e(r){if("string"==typeof r)if((0,s.isEvaluable)(r))if(n(r))try{(0,s.preevaluate)(r,{withParent:!0,hooks:{beforeVisitGlobal(e,o){t(e,o,r)}}})}catch(e){console.error("Parse storyboard expression failed:",e)}else null==a||a(r);else null==i||i(r);else if((0,c.isObject)(r)){if(o.has(r))return;for(var l of(o.add(r),null==u||u(r),Array.isArray(r)?r:Object.values(r)))e(l)}}(e)}function l(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,{hasNonStaticUsage:o,nonStaticUsage:n,usedProperties:a}=p(e,t,r);if(o)throw new Error("Non-static usage of ".concat(t,' is prohibited, check your expression: "').concat(n,'"'));return a}function p(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,n={usedProperties:new Set,hasNonStaticUsage:!1},a=o(n,t,r);return u(e,((e,t,r)=>{a(e,t),n.hasNonStaticUsage&&(n.nonStaticUsage=r)}),t),n}function d(e,t,r){if(e.includes(t)){var n,a={usedProperties:new Set,hasNonStaticUsage:!1},{expression:i}=(0,s.preevaluate)(e,{withParent:!0,hooks:{beforeVisitGlobal:o(a,r)}});if("SequenceExpression"===i.type&&(n=i.expressions[0])&&"Literal"===n.type&&n.value===t){if(a.usedProperties.size>0)return a.usedProperties;console.warn('You are using "'.concat(t,'" but no `').concat(r,"` usage found in your expression: ").concat(JSON.stringify(e)))}}return!1}function f(e){if(e){var t={usedProperties:new Set,hasNonStaticUsage:!1};if((0,s.preevaluate)(e,{withParent:!0,hooks:{beforeVisitGlobal:o(t,["CTX","STATE","FORM_STATE"],1,!0)}}),t.usedProperties.size>0){var r=[...t.usedProperties],n={context:!1,state:!1,formState:!1},a={CTX:"context",STATE:"state",FORM_STATE:"formState"};return r.forEach((e=>{var[t,r]=e.split(".");n[a[t]]||(n[a[t]]=[]),n[a[t]].push(r)})),n}console.warn('You are using track all but no "CTX" or "STATE" or "FORM_STATE" usage found in your expression: '.concat(JSON.stringify(e)))}return!1}function y(e,t){if(Array.isArray(e))for(var r of e)v(r,t)}function v(e,t,r){try{(0,s.precookFunction)(e.source,{typescript:e.typescript,withParent:!0,hooks:{beforeVisitGlobal:t}})}catch(t){r||console.error('Parse storyboard function "'.concat(e.name,'" failed:'),t)}}function g(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1,a={usedProperties:new Set,hasNonStaticUsage:!1};if(v(e,o(a,t,n),r),a.hasNonStaticUsage&&!r)throw new Error("Non-static usage of ".concat(t,' is prohibited, check your function: "').concat(e.name,'"'));return a.usedProperties.delete(e.name),a.usedProperties}var h="PERMISSIONS",S="check";function b(e){var t,r=new Set,o=P(r),{customTemplates:n,functions:a}=null!==(t=e.meta)&&void 0!==t?t:{};return u([e.routes,n],o,h),y(a,o),Array.from(r)}function m(e){var t=new Set;return u(e,P(t),h),Array.from(t)}function P(e){return function(t,r){if(t.name===h){var o=r[r.length-1],n=r[r.length-2];if("CallExpression"===(null==n?void 0:n.node.type)&&"callee"===(null==n?void 0:n.key)&&"MemberExpression"===(null==o?void 0:o.node.type)&&"object"===o.key&&(o.node.computed?"Literal"===o.node.property.type&&o.node.property.value===S:"Identifier"===o.node.property.type&&o.node.property.name===S))for(var a of n.node.arguments)"Literal"===a.type&&"string"==typeof a.value&&e.add(a.value)}}}}}]);
|
|
2
|
+
//# sourceMappingURL=3458.fba2c109.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/3458.062a00c5.js","mappings":"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","sources":["webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/beforeVisitGlobalMember.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/collectMemberCallUsage.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/traverse.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/collectMemberUsage.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/track.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/functions/traverse.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/functions/collectMemberUsageInFunction.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/permissions.js"],"sourcesContent":["export function beforeVisitGlobalMember(usage, objectName) {\n var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var rememberObjectName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n return function beforeVisitGlobal(node, parent) {\n if (typeof objectName === \"string\" ? node.name === objectName : objectName.includes(node.name)) {\n var segments = [];\n for (var i = 1; i <= level; i++) {\n var memberParent = parent[parent.length - i];\n if ((memberParent === null || memberParent === void 0 ? void 0 : memberParent.node.type) === \"MemberExpression\" && memberParent.key === \"object\") {\n var memberNode = memberParent.node;\n if (!memberNode.computed && memberNode.property.type === \"Identifier\") {\n segments.push(rememberObjectName ? \"\".concat(node.name, \".\").concat(memberNode.property.name) : memberNode.property.name);\n } else if (memberNode.computed && memberNode.property.type === \"Literal\" && typeof memberNode.property.value === \"string\") {\n segments.push(rememberObjectName ? \"\".concat(node.name, \".\").concat(memberNode.property.value) : memberNode.property.value);\n } else {\n usage.hasNonStaticUsage = true;\n }\n } else {\n usage.hasNonStaticUsage = true;\n }\n }\n if (segments.length === level) {\n usage.usedProperties.add(segments.join(\".\"));\n }\n }\n };\n}\n//# sourceMappingURL=beforeVisitGlobalMember.js.map","function collectMemberCallUsageFactory(object, property) {\n return function collectMemberCallUsage(usage, node, parent) {\n if (node.name === object) {\n var memberParent = parent[parent.length - 1];\n var callParent = parent[parent.length - 2];\n if ((callParent === null || callParent === void 0 ? void 0 : callParent.node.type) === \"CallExpression\" && (callParent === null || callParent === void 0 ? void 0 : callParent.key) === \"callee\" && (memberParent === null || memberParent === void 0 ? void 0 : memberParent.node.type) === \"MemberExpression\" && memberParent.key === \"object\" && (memberParent.node.computed ? memberParent.node.property.type === \"Literal\" && memberParent.node.property.value === property : memberParent.node.property.type === \"Identifier\" && memberParent.node.property.name === property)) {\n var args = callParent.node.arguments;\n if (args.length > 0) {\n var firstArg = args[0];\n if (firstArg.type === \"Literal\" && typeof firstArg.value === \"string\") {\n usage.usedArgs.add(firstArg.value);\n } else {\n usage.hasNonStaticUsage = true;\n }\n }\n }\n }\n };\n}\nexport var collectAppGetMenuUsage = collectMemberCallUsageFactory(\"APP\", \"getMenu\");\nexport var collectInstalledAppsHasUsage = collectMemberCallUsageFactory(\"INSTALLED_APPS\", \"has\");\n//# sourceMappingURL=collectMemberCallUsage.js.map","import { isEvaluable, preevaluate } from \"@next-core/cook\";\nimport { isObject } from \"@next-core/utils/general\";\nexport function traverseStoryboardExpressions(data, beforeVisitGlobal,\n// If `options` is a string, it means the *keyword*.\noptions) {\n var memo = new WeakSet();\n var {\n matchExpressionString,\n visitNotMatchedExpressionString,\n visitNonExpressionString,\n visitObject\n } = typeof options === \"string\" ? {\n matchExpressionString: v => v.includes(options)\n } : options;\n function traverse(value) {\n if (typeof value === \"string\") {\n if (isEvaluable(value)) {\n if (matchExpressionString(value)) {\n try {\n preevaluate(value, {\n withParent: true,\n hooks: {\n beforeVisitGlobal(node, parent) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n beforeVisitGlobal(node, parent, value);\n }\n }\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Parse storyboard expression failed:\", error);\n }\n } else {\n visitNotMatchedExpressionString === null || visitNotMatchedExpressionString === void 0 || visitNotMatchedExpressionString(value);\n }\n } else {\n visitNonExpressionString === null || visitNonExpressionString === void 0 || visitNonExpressionString(value);\n }\n } else if (isObject(value)) {\n // Avoid call stack overflow.\n if (memo.has(value)) {\n return;\n }\n memo.add(value);\n visitObject === null || visitObject === void 0 || visitObject(value);\n for (var item of Array.isArray(value) ? value : Object.values(value)) {\n traverse(item);\n }\n }\n }\n traverse(data);\n}\n//# sourceMappingURL=traverse.js.map","import { beforeVisitGlobalMember } from \"./beforeVisitGlobalMember.js\";\nimport { traverseStoryboardExpressions } from \"./traverse.js\";\nexport function strictCollectMemberUsage(data, objectName) {\n var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var {\n hasNonStaticUsage,\n nonStaticUsage,\n usedProperties\n } = collectMemberUsage(data, objectName, level);\n if (hasNonStaticUsage) {\n throw new Error(\"Non-static usage of \".concat(objectName, \" is prohibited, check your expression: \\\"\").concat(nonStaticUsage, \"\\\"\"));\n }\n return usedProperties;\n}\nexport function collectMemberUsage(data, objectName) {\n var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n var beforeVisitGlobal = beforeVisitGlobalMember(usage, objectName, level);\n traverseStoryboardExpressions(data, (node, parent, expr) => {\n beforeVisitGlobal(node, parent);\n if (usage.hasNonStaticUsage) {\n usage.nonStaticUsage = expr;\n }\n }, objectName);\n return usage;\n}\n//# sourceMappingURL=collectMemberUsage.js.map","import { preevaluate } from \"@next-core/cook\";\nimport { beforeVisitGlobalMember } from \"./beforeVisitGlobalMember.js\";\nexport function track(raw, trackText, variableName) {\n if (raw.includes(trackText)) {\n var usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n var {\n expression\n } = preevaluate(raw, {\n withParent: true,\n hooks: {\n beforeVisitGlobal: beforeVisitGlobalMember(usage, variableName)\n }\n });\n var trackCtxExp;\n if (expression.type === \"SequenceExpression\" && (trackCtxExp = expression.expressions[0]) && trackCtxExp.type === \"Literal\" && trackCtxExp.value === trackText) {\n if (usage.usedProperties.size > 0) {\n return usage.usedProperties;\n } else {\n // eslint-disable-next-line no-console\n console.warn(\"You are using \\\"\".concat(trackText, \"\\\" but no `\").concat(variableName, \"` usage found in your expression: \").concat(JSON.stringify(raw)));\n }\n }\n }\n return false;\n}\nexport function trackAll(raw) {\n if (raw) {\n var usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n preevaluate(raw, {\n withParent: true,\n hooks: {\n beforeVisitGlobal: beforeVisitGlobalMember(usage, [\"CTX\", \"STATE\", \"FORM_STATE\"], 1, true)\n }\n });\n if (usage.usedProperties.size > 0) {\n var usedProperites = [...usage.usedProperties];\n var result = {\n context: false,\n state: false,\n formState: false\n };\n var keyMap = {\n CTX: \"context\",\n STATE: \"state\",\n FORM_STATE: \"formState\"\n };\n usedProperites.forEach(item => {\n var [key, name] = item.split(\".\");\n if (!result[keyMap[key]]) {\n result[keyMap[key]] = [];\n }\n result[keyMap[key]].push(name);\n });\n return result;\n } else {\n // eslint-disable-next-line no-console\n console.warn(\"You are using track all but no \\\"CTX\\\" or \\\"STATE\\\" or \\\"FORM_STATE\\\" usage found in your expression: \".concat(JSON.stringify(raw)));\n }\n }\n return false;\n}\n//# sourceMappingURL=track.js.map","import { precookFunction } from \"@next-core/cook\";\nexport function traverseStoryboardFunctions(functions, beforeVisitGlobal) {\n if (Array.isArray(functions)) {\n for (var fn of functions) {\n traverseStoryboardFunction(fn, beforeVisitGlobal);\n }\n }\n}\nexport function traverseStoryboardFunction(fn, beforeVisitGlobal, silentErrors) {\n try {\n precookFunction(fn.source, {\n typescript: fn.typescript,\n withParent: true,\n hooks: {\n beforeVisitGlobal\n }\n });\n } catch (error) {\n if (!silentErrors) {\n // eslint-disable-next-line no-console\n console.error(\"Parse storyboard function \\\"\".concat(fn.name, \"\\\" failed:\"), error);\n }\n }\n}\n//# sourceMappingURL=traverse.js.map","import { beforeVisitGlobalMember } from \"../expressions/beforeVisitGlobalMember.js\";\nimport { traverseStoryboardFunction } from \"./traverse.js\";\nexport function collectMemberUsageInFunction(fn, objectName, silentErrors) {\n var level = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n var usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n traverseStoryboardFunction(fn, beforeVisitGlobalMember(usage, objectName, level), silentErrors);\n if (usage.hasNonStaticUsage && !silentErrors) {\n throw new Error(\"Non-static usage of \".concat(objectName, \" is prohibited, check your function: \\\"\").concat(fn.name, \"\\\"\"));\n }\n usage.usedProperties.delete(fn.name);\n return usage.usedProperties;\n}\n//# sourceMappingURL=collectMemberUsageInFunction.js.map","import { traverseStoryboardExpressions } from \"./expressions/index.js\";\nimport { traverseStoryboardFunctions } from \"./functions/index.js\";\nvar PERMISSIONS = \"PERMISSIONS\";\nvar check = \"check\";\nexport function scanPermissionActionsInStoryboard(storyboard) {\n var _storyboard$meta;\n var collection = new Set();\n var beforeVisitPermissions = beforeVisitPermissionsFactory(collection);\n var {\n customTemplates,\n functions\n } = (_storyboard$meta = storyboard.meta) !== null && _storyboard$meta !== void 0 ? _storyboard$meta : {};\n traverseStoryboardExpressions([storyboard.routes, customTemplates], beforeVisitPermissions, PERMISSIONS);\n traverseStoryboardFunctions(functions, beforeVisitPermissions);\n return Array.from(collection);\n}\nexport function scanPermissionActionsInAny(data) {\n var collection = new Set();\n traverseStoryboardExpressions(data, beforeVisitPermissionsFactory(collection), PERMISSIONS);\n return Array.from(collection);\n}\nfunction beforeVisitPermissionsFactory(collection) {\n return function beforeVisitPermissions(node, parent) {\n if (node.name === PERMISSIONS) {\n var memberParent = parent[parent.length - 1];\n var callParent = parent[parent.length - 2];\n if ((callParent === null || callParent === void 0 ? void 0 : callParent.node.type) === \"CallExpression\" && (callParent === null || callParent === void 0 ? void 0 : callParent.key) === \"callee\" && (memberParent === null || memberParent === void 0 ? void 0 : memberParent.node.type) === \"MemberExpression\" && memberParent.key === \"object\" && (memberParent.node.computed ? memberParent.node.property.type === \"Literal\" && memberParent.node.property.value === check : memberParent.node.property.type === \"Identifier\" && memberParent.node.property.name === check)) {\n for (var arg of callParent.node.arguments) {\n if (arg.type === \"Literal\" && typeof arg.value === \"string\") {\n collection.add(arg.value);\n }\n }\n }\n }\n };\n}\n//# sourceMappingURL=permissions.js.map"],"names":["beforeVisitGlobalMember","usage","objectName","level","arguments","length","undefined","rememberObjectName","node","parent","name","includes","segments","i","memberParent","type","key","memberNode","computed","property","value","push","concat","hasNonStaticUsage","usedProperties","add","join","collectMemberCallUsageFactory","object","callParent","args","firstArg","usedArgs","collectAppGetMenuUsage","collectInstalledAppsHasUsage","traverseStoryboardExpressions","data","beforeVisitGlobal","options","memo","WeakSet","matchExpressionString","visitNotMatchedExpressionString","visitNonExpressionString","visitObject","v","traverse","isEvaluable","preevaluate","withParent","hooks","error","console","isObject","has","item","Array","isArray","Object","values","strictCollectMemberUsage","nonStaticUsage","collectMemberUsage","Error","Set","expr","track","raw","trackText","variableName","trackCtxExp","expression","expressions","size","warn","JSON","stringify","trackAll","usedProperites","result","context","state","formState","keyMap","CTX","STATE","FORM_STATE","forEach","split","traverseStoryboardFunctions","functions","fn","traverseStoryboardFunction","silentErrors","precookFunction","source","typescript","collectMemberUsageInFunction","delete","PERMISSIONS","check","scanPermissionActionsInStoryboard","storyboard","_storyboard$meta","collection","beforeVisitPermissions","beforeVisitPermissionsFactory","customTemplates","meta","routes","from","scanPermissionActionsInAny","arg"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"chunks/3458.fba2c109.js","mappings":"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","sources":["webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/beforeVisitGlobalMember.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/collectMemberCallUsage.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/traverse.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/collectMemberUsage.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/expressions/track.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/functions/traverse.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/functions/collectMemberUsageInFunction.js","webpack:///../../node_modules/@next-core/utils/dist/esm/storyboard/permissions.js"],"sourcesContent":["export function beforeVisitGlobalMember(usage, objectName) {\n var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var rememberObjectName = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n return function beforeVisitGlobal(node, parent) {\n if (typeof objectName === \"string\" ? node.name === objectName : objectName.includes(node.name)) {\n var segments = [];\n for (var i = 1; i <= level; i++) {\n var memberParent = parent[parent.length - i];\n if ((memberParent === null || memberParent === void 0 ? void 0 : memberParent.node.type) === \"MemberExpression\" && memberParent.key === \"object\") {\n var memberNode = memberParent.node;\n if (!memberNode.computed && memberNode.property.type === \"Identifier\") {\n segments.push(rememberObjectName ? \"\".concat(node.name, \".\").concat(memberNode.property.name) : memberNode.property.name);\n } else if (memberNode.computed && memberNode.property.type === \"Literal\" && typeof memberNode.property.value === \"string\") {\n segments.push(rememberObjectName ? \"\".concat(node.name, \".\").concat(memberNode.property.value) : memberNode.property.value);\n } else {\n usage.hasNonStaticUsage = true;\n }\n } else {\n usage.hasNonStaticUsage = true;\n }\n }\n if (segments.length === level) {\n usage.usedProperties.add(segments.join(\".\"));\n }\n }\n };\n}\n//# sourceMappingURL=beforeVisitGlobalMember.js.map","function collectMemberCallUsageFactory(object, property) {\n return function collectMemberCallUsage(usage, node, parent) {\n if (node.name === object) {\n var memberParent = parent[parent.length - 1];\n var callParent = parent[parent.length - 2];\n if ((callParent === null || callParent === void 0 ? void 0 : callParent.node.type) === \"CallExpression\" && (callParent === null || callParent === void 0 ? void 0 : callParent.key) === \"callee\" && (memberParent === null || memberParent === void 0 ? void 0 : memberParent.node.type) === \"MemberExpression\" && memberParent.key === \"object\" && (memberParent.node.computed ? memberParent.node.property.type === \"Literal\" && memberParent.node.property.value === property : memberParent.node.property.type === \"Identifier\" && memberParent.node.property.name === property)) {\n var args = callParent.node.arguments;\n if (args.length > 0) {\n var firstArg = args[0];\n if (firstArg.type === \"Literal\" && typeof firstArg.value === \"string\") {\n usage.usedArgs.add(firstArg.value);\n } else {\n usage.hasNonStaticUsage = true;\n }\n }\n }\n }\n };\n}\nexport var collectAppGetMenuUsage = collectMemberCallUsageFactory(\"APP\", \"getMenu\");\nexport var collectInstalledAppsHasUsage = collectMemberCallUsageFactory(\"INSTALLED_APPS\", \"has\");\n//# sourceMappingURL=collectMemberCallUsage.js.map","import { isEvaluable, preevaluate } from \"@next-core/cook\";\nimport { isObject } from \"@next-core/utils/general\";\nexport function traverseStoryboardExpressions(data, beforeVisitGlobal,\n// If `options` is a string, it means the *keyword*.\noptions) {\n var memo = new WeakSet();\n var {\n matchExpressionString,\n visitNotMatchedExpressionString,\n visitNonExpressionString,\n visitObject\n } = typeof options === \"string\" ? {\n matchExpressionString: v => v.includes(options)\n } : options;\n function traverse(value) {\n if (typeof value === \"string\") {\n if (isEvaluable(value)) {\n if (matchExpressionString(value)) {\n try {\n preevaluate(value, {\n withParent: true,\n hooks: {\n beforeVisitGlobal(node, parent) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n beforeVisitGlobal(node, parent, value);\n }\n }\n });\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Parse storyboard expression failed:\", error);\n }\n } else {\n visitNotMatchedExpressionString === null || visitNotMatchedExpressionString === void 0 || visitNotMatchedExpressionString(value);\n }\n } else {\n visitNonExpressionString === null || visitNonExpressionString === void 0 || visitNonExpressionString(value);\n }\n } else if (isObject(value)) {\n // Avoid call stack overflow.\n if (memo.has(value)) {\n return;\n }\n memo.add(value);\n visitObject === null || visitObject === void 0 || visitObject(value);\n for (var item of Array.isArray(value) ? value : Object.values(value)) {\n traverse(item);\n }\n }\n }\n traverse(data);\n}\n//# sourceMappingURL=traverse.js.map","import { beforeVisitGlobalMember } from \"./beforeVisitGlobalMember.js\";\nimport { traverseStoryboardExpressions } from \"./traverse.js\";\nexport function strictCollectMemberUsage(data, objectName) {\n var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var {\n hasNonStaticUsage,\n nonStaticUsage,\n usedProperties\n } = collectMemberUsage(data, objectName, level);\n if (hasNonStaticUsage) {\n throw new Error(\"Non-static usage of \".concat(objectName, \" is prohibited, check your expression: \\\"\").concat(nonStaticUsage, \"\\\"\"));\n }\n return usedProperties;\n}\nexport function collectMemberUsage(data, objectName) {\n var level = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n var beforeVisitGlobal = beforeVisitGlobalMember(usage, objectName, level);\n traverseStoryboardExpressions(data, (node, parent, expr) => {\n beforeVisitGlobal(node, parent);\n if (usage.hasNonStaticUsage) {\n usage.nonStaticUsage = expr;\n }\n }, objectName);\n return usage;\n}\n//# sourceMappingURL=collectMemberUsage.js.map","import { preevaluate } from \"@next-core/cook\";\nimport { beforeVisitGlobalMember } from \"./beforeVisitGlobalMember.js\";\nexport function track(raw, trackText, variableName) {\n if (raw.includes(trackText)) {\n var usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n var {\n expression\n } = preevaluate(raw, {\n withParent: true,\n hooks: {\n beforeVisitGlobal: beforeVisitGlobalMember(usage, variableName)\n }\n });\n var trackCtxExp;\n if (expression.type === \"SequenceExpression\" && (trackCtxExp = expression.expressions[0]) && trackCtxExp.type === \"Literal\" && trackCtxExp.value === trackText) {\n if (usage.usedProperties.size > 0) {\n return usage.usedProperties;\n } else {\n // eslint-disable-next-line no-console\n console.warn(\"You are using \\\"\".concat(trackText, \"\\\" but no `\").concat(variableName, \"` usage found in your expression: \").concat(JSON.stringify(raw)));\n }\n }\n }\n return false;\n}\nexport function trackAll(raw) {\n if (raw) {\n var usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n preevaluate(raw, {\n withParent: true,\n hooks: {\n beforeVisitGlobal: beforeVisitGlobalMember(usage, [\"CTX\", \"STATE\", \"FORM_STATE\"], 1, true)\n }\n });\n if (usage.usedProperties.size > 0) {\n var usedProperites = [...usage.usedProperties];\n var result = {\n context: false,\n state: false,\n formState: false\n };\n var keyMap = {\n CTX: \"context\",\n STATE: \"state\",\n FORM_STATE: \"formState\"\n };\n usedProperites.forEach(item => {\n var [key, name] = item.split(\".\");\n if (!result[keyMap[key]]) {\n result[keyMap[key]] = [];\n }\n result[keyMap[key]].push(name);\n });\n return result;\n } else {\n // eslint-disable-next-line no-console\n console.warn(\"You are using track all but no \\\"CTX\\\" or \\\"STATE\\\" or \\\"FORM_STATE\\\" usage found in your expression: \".concat(JSON.stringify(raw)));\n }\n }\n return false;\n}\n//# sourceMappingURL=track.js.map","import { precookFunction } from \"@next-core/cook\";\nexport function traverseStoryboardFunctions(functions, beforeVisitGlobal) {\n if (Array.isArray(functions)) {\n for (var fn of functions) {\n traverseStoryboardFunction(fn, beforeVisitGlobal);\n }\n }\n}\nexport function traverseStoryboardFunction(fn, beforeVisitGlobal, silentErrors) {\n try {\n precookFunction(fn.source, {\n typescript: fn.typescript,\n withParent: true,\n hooks: {\n beforeVisitGlobal\n }\n });\n } catch (error) {\n if (!silentErrors) {\n // eslint-disable-next-line no-console\n console.error(\"Parse storyboard function \\\"\".concat(fn.name, \"\\\" failed:\"), error);\n }\n }\n}\n//# sourceMappingURL=traverse.js.map","import { beforeVisitGlobalMember } from \"../expressions/beforeVisitGlobalMember.js\";\nimport { traverseStoryboardFunction } from \"./traverse.js\";\nexport function collectMemberUsageInFunction(fn, objectName, silentErrors) {\n var level = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n var usage = {\n usedProperties: new Set(),\n hasNonStaticUsage: false\n };\n traverseStoryboardFunction(fn, beforeVisitGlobalMember(usage, objectName, level), silentErrors);\n if (usage.hasNonStaticUsage && !silentErrors) {\n throw new Error(\"Non-static usage of \".concat(objectName, \" is prohibited, check your function: \\\"\").concat(fn.name, \"\\\"\"));\n }\n usage.usedProperties.delete(fn.name);\n return usage.usedProperties;\n}\n//# sourceMappingURL=collectMemberUsageInFunction.js.map","import { traverseStoryboardExpressions } from \"./expressions/index.js\";\nimport { traverseStoryboardFunctions } from \"./functions/index.js\";\nvar PERMISSIONS = \"PERMISSIONS\";\nvar check = \"check\";\nexport function scanPermissionActionsInStoryboard(storyboard) {\n var _storyboard$meta;\n var collection = new Set();\n var beforeVisitPermissions = beforeVisitPermissionsFactory(collection);\n var {\n customTemplates,\n functions\n } = (_storyboard$meta = storyboard.meta) !== null && _storyboard$meta !== void 0 ? _storyboard$meta : {};\n traverseStoryboardExpressions([storyboard.routes, customTemplates], beforeVisitPermissions, PERMISSIONS);\n traverseStoryboardFunctions(functions, beforeVisitPermissions);\n return Array.from(collection);\n}\nexport function scanPermissionActionsInAny(data) {\n var collection = new Set();\n traverseStoryboardExpressions(data, beforeVisitPermissionsFactory(collection), PERMISSIONS);\n return Array.from(collection);\n}\nfunction beforeVisitPermissionsFactory(collection) {\n return function beforeVisitPermissions(node, parent) {\n if (node.name === PERMISSIONS) {\n var memberParent = parent[parent.length - 1];\n var callParent = parent[parent.length - 2];\n if ((callParent === null || callParent === void 0 ? void 0 : callParent.node.type) === \"CallExpression\" && (callParent === null || callParent === void 0 ? void 0 : callParent.key) === \"callee\" && (memberParent === null || memberParent === void 0 ? void 0 : memberParent.node.type) === \"MemberExpression\" && memberParent.key === \"object\" && (memberParent.node.computed ? memberParent.node.property.type === \"Literal\" && memberParent.node.property.value === check : memberParent.node.property.type === \"Identifier\" && memberParent.node.property.name === check)) {\n for (var arg of callParent.node.arguments) {\n if (arg.type === \"Literal\" && typeof arg.value === \"string\") {\n collection.add(arg.value);\n }\n }\n }\n }\n };\n}\n//# sourceMappingURL=permissions.js.map"],"names":["beforeVisitGlobalMember","usage","objectName","level","arguments","length","undefined","rememberObjectName","node","parent","name","includes","segments","i","memberParent","type","key","memberNode","computed","property","value","push","concat","hasNonStaticUsage","usedProperties","add","join","collectMemberCallUsageFactory","object","callParent","args","firstArg","usedArgs","collectAppGetMenuUsage","collectInstalledAppsHasUsage","traverseStoryboardExpressions","data","beforeVisitGlobal","options","memo","WeakSet","matchExpressionString","visitNotMatchedExpressionString","visitNonExpressionString","visitObject","v","traverse","isEvaluable","preevaluate","withParent","hooks","error","console","isObject","has","item","Array","isArray","Object","values","strictCollectMemberUsage","nonStaticUsage","collectMemberUsage","Error","Set","expr","track","raw","trackText","variableName","trackCtxExp","expression","expressions","size","warn","JSON","stringify","trackAll","usedProperites","result","context","state","formState","keyMap","CTX","STATE","FORM_STATE","forEach","split","traverseStoryboardFunctions","functions","fn","traverseStoryboardFunction","silentErrors","precookFunction","source","typescript","collectMemberUsageInFunction","delete","PERMISSIONS","check","scanPermissionActionsInStoryboard","storyboard","_storyboard$meta","collection","beforeVisitPermissions","beforeVisitPermissionsFactory","customTemplates","meta","routes","from","scanPermissionActionsInAny","arg"],"sourceRoot":""}
|