n8n-editor-ui 1.91.1 → 1.93.0
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/assets/{AnimatedSpinner-BrkRvAXQ.js → AnimatedSpinner-hbTZDd93.js} +1 -1
- package/dist/assets/{AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-DRamY8Fo.js → AnnotationTagsDropdown.ee.vue_vue_type_script_setup_true_lang-CYzc5StE.js} +1 -1
- package/dist/assets/{AuthView-ehh7NFh5.js → AuthView-8SLMP0H_.js} +2 -2
- package/dist/assets/{CanvasChatSwitch-DUBgoMXw.js → CanvasChatSwitch-Dt8TgNJg.js} +22 -10
- package/dist/assets/{ChangePasswordView-BLFb7_-o.js → ChangePasswordView-DIRyDp89.js} +3 -3
- package/dist/assets/CollectionParameter-Cj4t6-hd.js +4 -0
- package/dist/assets/{CredentialsView-1uYUpp0G.js → CredentialsView-B6-VxAJ6.js} +26 -11
- package/dist/assets/{DemoFooter-CNfkqkRC.js → DemoFooter-CIHwH5PG.js} +8 -8
- package/dist/assets/{ErrorView-CmYweWFA.js → ErrorView-C7i0TZwT.js} +1 -1
- package/dist/assets/{ExecutionsTime.vue_vue_type_script_setup_true_lang-DAWTDTON.js → ExecutionsTime.vue_vue_type_script_setup_true_lang--2G21NNR.js} +2 -2
- package/dist/assets/{ExecutionsView-fotg1R4V.js → ExecutionsView-C_YtciAr.js} +10 -9
- package/dist/assets/{FileSaver.min-CcnqpaV-.js → FileSaver.min-bgn7Q9Gt.js} +1 -1
- package/dist/assets/{FixedCollectionParameter-BYR4RzWw.js → FixedCollectionParameter-BPCJ5aaq.js} +1 -1
- package/dist/assets/{ForgotMyPasswordView-CQMKtpr-.js → ForgotMyPasswordView-DyUaGd6Z.js} +3 -3
- package/dist/assets/{InsightsChartAverageRuntime-B-9BU5qw.js → InsightsChartAverageRuntime-BB2I2vpV.js} +4 -4
- package/dist/assets/{InsightsChartFailed-Bd1BlFEm.js → InsightsChartFailed-CN_Rl3Bl.js} +4 -4
- package/dist/assets/{InsightsChartFailureRate-DPTCueAp.js → InsightsChartFailureRate-CHKlg6tg.js} +4 -4
- package/dist/assets/{InsightsChartTimeSaved-CSVKB08W.js → InsightsChartTimeSaved-Cd05cM8q.js} +4 -4
- package/dist/assets/{InsightsChartTotal-Bxjmisao.js → InsightsChartTotal-ChAO7myf.js} +4 -4
- package/dist/assets/{InsightsDashboard-5cOORj5z.js → InsightsDashboard-BeCfBVUz.js} +10 -10
- package/dist/assets/{InsightsPaywall-Bdo_3Ic_.js → InsightsPaywall-Chz8CDc3.js} +1 -1
- package/dist/assets/{InsightsSummary-DB62HhNM.js → InsightsSummary-MECenLJQ.js} +1 -1
- package/dist/assets/{InsightsTableWorkflows-BEC5Yh0b.js → InsightsTableWorkflows-5rpYY7YT.js} +2 -2
- package/dist/assets/{Logo-CK8euEWT.js → Logo-DUDCllkm.js} +1 -1
- package/dist/assets/{LogsPanel-CrGEYFLo.js → LogsPanel-D9r5AcQH.js} +75 -106
- package/dist/assets/{LogsPanel-DLC2TAqh.css → LogsPanel-mTaFEGk_.css} +38 -34
- package/dist/assets/{MainHeader-CEPLiR-5.css → MainHeader-CEMGASqv.css} +18 -11
- package/dist/assets/{MainHeader-C7XOaZKu.js → MainHeader-DkKOOZ_D.js} +145 -79
- package/dist/assets/{MainSidebar-CKMiDGvH.css → MainSidebar-D1_1YFQZ.css} +13 -12
- package/dist/assets/{MainSidebar-DD_ugRL3.js → MainSidebar-ZUBIWeXm.js} +36 -19
- package/dist/assets/{NodeCreation-S2FoBcnW.js → NodeCreation-DCfAFuL5.js} +10 -5
- package/dist/assets/{NodeCreator-D9fmPdS2.css → NodeCreator-D18StsVZ.css} +1021 -174
- package/dist/assets/{NodeCreator-D6TKVgLu.js → NodeCreator-a0YVv1IE.js} +863 -418
- package/dist/assets/{NodeDetailsView-DtvMtBqp.js → NodeDetailsView-C5_hVJzj.js} +60 -47
- package/dist/assets/{NodeDetailsView-CGgV4Pn_.css → NodeDetailsView-pYP-34nS.css} +20 -20
- package/dist/assets/{NodeView-BPhaaoWK.js → NodeView-Bk9h8GYy.js} +49 -25
- package/dist/assets/{ProjectCardBadge-C_L_pqWA.js → ProjectCardBadge-DRlDZx3d.js} +38 -2
- package/dist/assets/{ProjectHeader-C0FZTxjm.js → ProjectHeader-DNm605Kk.js} +106 -64
- package/dist/assets/{ProjectSettings-DlggJ6Ti.js → ProjectSettings-Dge_6KaR.js} +3 -2
- package/dist/assets/{PushConnectionTracker.vue_vue_type_script_setup_true_lang-BNtCDFSj.js → PushConnectionTracker.vue_vue_type_script_setup_true_lang-CUf0LkWR.js} +1 -1
- package/dist/assets/{ResourcesListLayout-HzoSFUaj.js → ResourcesListLayout-Bbl-1i4l.js} +156 -53
- package/dist/assets/{ResourcesListLayout-CtGME7aU.css → ResourcesListLayout-DuNjbsMn.css} +8 -8
- package/dist/assets/{RunData-C9dtm1M2.css → RunData-DQeENuzG.css} +12 -2
- package/dist/assets/{RunData-D8Eax0cQ.js → RunData-b0RE2JWc.js} +418 -207
- package/dist/assets/{RunDataAi-BF2gZZGr.css → RunDataAi-D9VLFXIf.css} +10 -51
- package/dist/assets/{RunDataAi-BUnCQIRN.js → RunDataAi-DnWcCR_0.js} +27 -310
- package/dist/assets/{RunDataJson-DXd3nZxI.js → RunDataJson-CptVuHuA.js} +7 -7
- package/dist/assets/{RunDataJsonActions-aivOaol2.js → RunDataJsonActions-3jjDztw7.js} +1 -1
- package/dist/assets/RunDataParsedAiContent-9EEUzCKp.css +176 -0
- package/dist/assets/RunDataParsedAiContent-BbXv-NPD.js +148 -0
- package/dist/assets/{RunDataSearch-DJ9BZGTu.js → RunDataSearch-B90wjsDA.js} +1 -1
- package/dist/assets/{RunDataTable-vEPCwbcC.js → RunDataTable-CpS78GlT.js} +3 -3
- package/dist/assets/{SamlOnboarding--OTxMEws.js → SamlOnboarding-Ch9K5rRW.js} +3 -3
- package/dist/assets/{SettingsApiView-BulxWyyY.js → SettingsApiView-9GU5n_rm.js} +1 -1
- package/dist/assets/{SettingsCommunityNodesView-4wwPXFO2.js → SettingsCommunityNodesView-CPnVRzNX.js} +24 -11
- package/dist/assets/{SettingsExternalSecrets-zt7dxBKK.js → SettingsExternalSecrets-D7xTMV9h.js} +1 -1
- package/dist/assets/{SettingsLdapView-xneO6UIv.js → SettingsLdapView-OfrjGKkt.js} +1 -1
- package/dist/assets/{SettingsLogStreamingView-_h8wUzum.js → SettingsLogStreamingView-C_VnOaeX.js} +1 -1
- package/dist/assets/{SettingsPersonalView-CwYMP4sk.js → SettingsPersonalView-Dm24akPV.js} +14 -13
- package/dist/assets/{SettingsSourceControl-B9Tg93u3.js → SettingsSourceControl-DDCmL82j.js} +1 -1
- package/dist/assets/{SettingsSso-XaL1PzfW.js → SettingsSso-BGGQ0Cpg.js} +14 -1
- package/dist/assets/{SettingsUsageAndPlan-Ci15FW81.js → SettingsUsageAndPlan-BzO_zdkH.js} +1 -1
- package/dist/assets/{SettingsUsersView-DBJV4vSK.js → SettingsUsersView-DHQUqhqB.js} +1 -1
- package/dist/assets/{SettingsView-DMzdPF-1.js → SettingsView-CbtAqjOX.js} +1 -1
- package/dist/assets/{SetupView-BqWgdvDq.js → SetupView-BME1OE6U.js} +3 -3
- package/dist/assets/{SetupWorkflowCredentialsButton-B2wnuUnF.js → SetupWorkflowCredentialsButton-DZr4TCPC.js} +1 -1
- package/dist/assets/{SetupWorkflowFromTemplateView-BwC_wFSc.js → SetupWorkflowFromTemplateView-CPkKEY04.js} +3 -3
- package/dist/assets/{SigninView-DpTLJJwD.js → SigninView-DUeRvOiY.js} +3 -3
- package/dist/assets/{SignoutView-dkTtOCo1.js → SignoutView-BC7SBunZ.js} +1 -1
- package/dist/assets/{SignupView-CJFJJO3L.js → SignupView-B5ecYJ2q.js} +3 -3
- package/dist/assets/{TemplateDetails-84YElIBA.js → TemplateDetails-DjanZgC1.js} +1 -1
- package/dist/assets/{TemplateList-CGsfKuVA.js → TemplateList-8TyNGxY-.js} +1 -1
- package/dist/assets/{TemplatesCollectionView-2y8KZk0I.js → TemplatesCollectionView-BkH4pJCv.js} +5 -5
- package/dist/assets/{TemplatesSearchView-DgosiOzl.js → TemplatesSearchView-Bcdhi1SL.js} +3 -3
- package/dist/assets/{TemplatesView-CgQSZO4a.js → TemplatesView-De2XB6We.js} +1 -1
- package/dist/assets/{TemplatesWorkflowView-2pSUmAbX.js → TemplatesWorkflowView-BVnwtrMa.js} +5 -5
- package/dist/assets/{TestDefinitionEditView-C26sWE7p.js → TestDefinitionEditView-DjmPnrTk.js} +7 -7
- package/dist/assets/{TestDefinitionListView-Cyl6bsLP.js → TestDefinitionListView-BL2s_qBZ.js} +1 -1
- package/dist/assets/{TestDefinitionNewView-CfIZ0atk.js → TestDefinitionNewView-B9BqJZST.js} +2 -2
- package/dist/assets/{TestDefinitionRootView-CYg7HBL-.js → TestDefinitionRootView-AlWyxbc0.js} +1 -1
- package/dist/assets/{VariablesView-BFE9B0_b.js → VariablesView-BZCvPfan.js} +4 -3
- package/dist/assets/{WorkerView-BUMCMS_B.js → WorkerView-CigxqnWi.js} +6 -6
- package/dist/assets/{WorkflowActivator-BDLto9c0.js → WorkflowActivator-B7jRy4L1.js} +8 -4
- package/dist/assets/{WorkflowActivator-DAyH7N29.css → WorkflowActivator-DrMTmuTZ.css} +2 -2
- package/dist/assets/{WorkflowExecutionsInfoAccordion-manN-WIj.js → WorkflowExecutionsInfoAccordion-C_ZycbsF.js} +1 -1
- package/dist/assets/{WorkflowExecutionsLandingPage-BzGmpGvf.js → WorkflowExecutionsLandingPage-DOqrfKlC.js} +2 -2
- package/dist/assets/{WorkflowExecutionsPreview-CNEV2lom.js → WorkflowExecutionsPreview-B4Cj2gXW.js} +6 -6
- package/dist/assets/{WorkflowExecutionsView-WiNvtAmD.js → WorkflowExecutionsView-RXfP7zkJ.js} +11 -9
- package/dist/assets/{WorkflowHistory-6uJJqB4x.js → WorkflowHistory-DrXrRwIS.js} +37 -19
- package/dist/assets/{WorkflowOnboardingView-CPt_AUR-.js → WorkflowOnboardingView-CXH1vCW2.js} +1 -1
- package/dist/assets/{WorkflowPreview-CHUEX6H6.js → WorkflowPreview-B_MuFEV8.js} +1 -1
- package/dist/assets/{WorkflowsView-B2_HJCJ5.css → WorkflowsView-CQvTAWQ0.css} +24 -13
- package/dist/assets/{WorkflowsView-DbGBRbfc.js → WorkflowsView-D90hfJ35.js} +300 -158
- package/dist/assets/{chartjs.utils-C--HONKb.js → chartjs.utils-DalQn9bk.js} +2 -2
- package/dist/assets/{dateFormatter-DbKqmK4w.js → dateFormatter-BPfJSa6q.js} +1 -1
- package/dist/assets/{easyAiWorkflowUtils-BWgfZ0am.js → easyAiWorkflowUtils-kgtpBx2h.js} +1 -1
- package/dist/assets/{global-link-actions-COf-9vBh.js → global-link-actions-CnWOMvqA.js} +1 -1
- package/dist/assets/{import-curl-BiXaU2jk.js → import-curl-BvX_O56D.js} +1 -1
- package/dist/assets/{index-B6xE9gZ1.js → index-Bb2NNknG.js} +1 -1
- package/dist/assets/{index-BLAboPd2.js → index-DZ6VpjNj.js} +4635 -2824
- package/dist/assets/{index-sq5ggyEC.css → index-yNaoC3fo.css} +363 -97
- package/dist/assets/{pickBy-gZHb6vZ2.js → pickBy-B_HGYyxS.js} +1 -1
- package/dist/assets/{templateActions-DCx74tPa.js → templateActions-DQfZ3ni5.js} +1 -1
- package/dist/assets/{useBeforeUnload-DbfysOS-.js → useBeforeUnload-Cu0LPVWe.js} +1 -1
- package/dist/assets/{useCanvasMapping-CSuq_dYj.js → useCanvasMapping-CTTq6x8X.js} +62 -40
- package/dist/assets/{useCanvasMapping-cuXLM-h-.css → useCanvasMapping-VtpW_QZA.css} +6 -5
- package/dist/assets/{useCanvasOperations-C0pQBHW3.js → useCanvasOperations-u8oSDa_u.js} +96 -445
- package/dist/assets/{useClearExecutionButtonVisible-Cvfxw8xC.js → useClearExecutionButtonVisible-Dwc1_eG9.js} +2 -2
- package/dist/assets/{useExecutionDebugging-D2H5O6fT.js → useExecutionDebugging-rc72wLIp.js} +1 -1
- package/dist/assets/{useExecutionHelpers-C--m0pTQ.js → useExecutionHelpers-DqwMonFW.js} +2 -2
- package/dist/assets/{useImportCurlCommand-XFn6Ezp2.js → useImportCurlCommand-D_onuFvo.js} +19 -10
- package/dist/assets/useProjectPages-e8b03-5_.js +17 -0
- package/dist/assets/usePushConnection-wm-7Id6Q.js +629 -0
- package/dist/assets/{useTestDefinitionForm-2YP-8pAN.js → useTestDefinitionForm-DlUOnNC0.js} +1 -1
- package/dist/assets/{useWorkflowActivate-CvmIpy5T.js → useWorkflowActivate-65xML23U.js} +1 -1
- package/dist/assets/useWorkflowSaving-CUel20JA.js +66 -0
- package/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/assets/CollectionParameter-BaH_a73u.js +0 -4
- package/dist/assets/usePushConnection-x0iF1Axz.js +0 -537
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { R as useRoute, a0 as useSourceControlStore, Q as useWorkflowsStore, q as computed, b as useRouter, bz as useNodeTypesStore,
|
|
2
|
-
import {
|
|
1
|
+
import { R as useRoute, a0 as useSourceControlStore, Q as useWorkflowsStore, q as computed, b as useRouter, bz as useNodeTypesStore, bZ as START_NODE_TYPE } from "./index-DZ6VpjNj.js";
|
|
2
|
+
import { a as useCanvasOperations } from "./useCanvasOperations-u8oSDa_u.js";
|
|
3
3
|
function useClearExecutionButtonVisible() {
|
|
4
4
|
const route = useRoute();
|
|
5
5
|
const sourceControlStore = useSourceControlStore();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { b as useRouter, a as useToast, Q as useWorkflowsStore, p as useSettingsStore, H as useUIStore, a6 as usePageRedirectionHelper, q as computed, aa as EnterpriseEditionFeature, c as useI18n,
|
|
1
|
+
import { b as useRouter, a as useToast, Q as useWorkflowsStore, p as useSettingsStore, H as useUIStore, a6 as usePageRedirectionHelper, q as computed, aa as EnterpriseEditionFeature, c as useI18n, ct as DEBUG_PAYWALL_MODAL_KEY, aq as h, cu as sanitizeHtml, ai as useMessage, aj as MODAL_CONFIRM, V as VIEWS, ag as useTelemetry, Z as useRootStore, cv as isFullExecutionResponse } from "./index-DZ6VpjNj.js";
|
|
2
2
|
const useExecutionDebugging = () => {
|
|
3
3
|
const telemetry = useTelemetry();
|
|
4
4
|
const router = useRouter();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { c as convertToDisplayDate } from "./dateFormatter-
|
|
2
|
-
import { b as useRouter, V as VIEWS, ag as useTelemetry, c as useI18n } from "./index-
|
|
1
|
+
import { c as convertToDisplayDate } from "./dateFormatter-BPfJSa6q.js";
|
|
2
|
+
import { b as useRouter, V as VIEWS, ag as useTelemetry, c as useI18n } from "./index-DZ6VpjNj.js";
|
|
3
3
|
function useExecutionHelpers() {
|
|
4
4
|
const i18n = useI18n();
|
|
5
5
|
const router = useRouter();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hD as require$$0, cx as getDefaultExportFromCjs, a as useToast, m as unref, cY as assert, hE as CURL_IMPORT_NOT_SUPPORTED_PROTOCOLS, hF as CURL_IMPORT_NODES_PROTOCOLS, c as useI18n, hG as get } from "./index-DZ6VpjNj.js";
|
|
2
2
|
import { c as commonjsRequire } from "./_commonjs-dynamic-modules-TGKdzP3c.js";
|
|
3
|
-
import { i as importCurlEventBus } from "./import-curl-
|
|
3
|
+
import { i as importCurlEventBus } from "./import-curl-BvX_O56D.js";
|
|
4
4
|
class CCError extends Error {
|
|
5
5
|
}
|
|
6
6
|
const UTF8encoder = new TextEncoder();
|
|
@@ -8735,12 +8735,15 @@ const SUPPORTED_CONTENT_TYPES = [
|
|
|
8735
8735
|
"multipart/form-data"
|
|
8736
8736
|
];
|
|
8737
8737
|
const CONTENT_TYPE_KEY = "content-type";
|
|
8738
|
+
const getContentTypeHeader = (headers) => {
|
|
8739
|
+
return get(headers, CONTENT_TYPE_KEY) ?? void 0;
|
|
8740
|
+
};
|
|
8738
8741
|
const isContentType = (headers, contentType) => {
|
|
8739
|
-
return
|
|
8742
|
+
return getContentTypeHeader(headers) === contentType;
|
|
8740
8743
|
};
|
|
8741
8744
|
const isJsonRequest = (curlJson) => {
|
|
8742
8745
|
if (isContentType(curlJson.headers, "application/json")) return true;
|
|
8743
|
-
if (curlJson.data) {
|
|
8746
|
+
if (curlJson.data && !getContentTypeHeader(curlJson.headers)) {
|
|
8744
8747
|
const bodyKey = Object.keys(curlJson.data)[0];
|
|
8745
8748
|
try {
|
|
8746
8749
|
JSON.parse(bodyKey);
|
|
@@ -8753,7 +8756,7 @@ const isJsonRequest = (curlJson) => {
|
|
|
8753
8756
|
};
|
|
8754
8757
|
const isFormUrlEncodedRequest = (curlJson) => {
|
|
8755
8758
|
if (isContentType(curlJson.headers, "application/x-www-form-urlencoded")) return true;
|
|
8756
|
-
if (curlJson.data && !curlJson.files) return true;
|
|
8759
|
+
if (!getContentTypeHeader(curlJson.headers) && curlJson.data && !curlJson.files) return true;
|
|
8757
8760
|
return false;
|
|
8758
8761
|
};
|
|
8759
8762
|
const isMultipartRequest = (curlJson) => {
|
|
@@ -8794,18 +8797,24 @@ const extractQueries = (queries = {}) => {
|
|
|
8794
8797
|
}
|
|
8795
8798
|
};
|
|
8796
8799
|
};
|
|
8797
|
-
const
|
|
8800
|
+
const keyValueBodyToNodeParameters = (body2 = {}) => {
|
|
8798
8801
|
return Object.entries(body2).map(toKeyValueArray);
|
|
8799
8802
|
};
|
|
8803
|
+
const jsonBodyToNodeParameters = (body2 = {}) => {
|
|
8804
|
+
if (typeof body2 === "string") {
|
|
8805
|
+
const parameters = new URLSearchParams(body2);
|
|
8806
|
+
return [...parameters.entries()].map((parameter) => {
|
|
8807
|
+
return toKeyValueArray(parameter);
|
|
8808
|
+
});
|
|
8809
|
+
}
|
|
8810
|
+
return keyValueBodyToNodeParameters(body2);
|
|
8811
|
+
};
|
|
8800
8812
|
const multipartToNodeParameters = (body2 = {}, files = {}) => {
|
|
8801
8813
|
return [
|
|
8802
8814
|
...Object.entries(body2).map(toKeyValueArray).map((e) => ({ parameterType: "formData", ...e })),
|
|
8803
8815
|
...Object.entries(files).map(toKeyValueArray).map((e) => ({ parameterType: "formBinaryData", ...e }))
|
|
8804
8816
|
];
|
|
8805
8817
|
};
|
|
8806
|
-
const keyValueBodyToNodeParameters = (body2 = {}) => {
|
|
8807
|
-
return Object.entries(body2).map(toKeyValueArray);
|
|
8808
|
-
};
|
|
8809
8818
|
const lowerCaseContentTypeKey = (obj) => {
|
|
8810
8819
|
if (!obj) return;
|
|
8811
8820
|
const regex = new RegExp(CONTENT_TYPE_KEY, "gi");
|
|
@@ -8930,7 +8939,7 @@ const toHttpNodeParameters = (curlCommand) => {
|
|
|
8930
8939
|
sendBody: true,
|
|
8931
8940
|
specifyBody: "keypair",
|
|
8932
8941
|
bodyParameters: {
|
|
8933
|
-
parameters:
|
|
8942
|
+
parameters: jsonBodyToNodeParameters(curlJson.data)
|
|
8934
8943
|
}
|
|
8935
8944
|
});
|
|
8936
8945
|
} else if (isMultipartRequest(curlJson)) {
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { R as useRoute, q as computed, V as VIEWS, bR as reactive } from "./index-DZ6VpjNj.js";
|
|
2
|
+
const useProjectPages = () => {
|
|
3
|
+
const route = useRoute();
|
|
4
|
+
const isOverviewSubPage = computed(
|
|
5
|
+
() => route.name === VIEWS.WORKFLOWS || route.name === VIEWS.HOMEPAGE || route.name === VIEWS.CREDENTIALS || route.name === VIEWS.EXECUTIONS || route.name === VIEWS.FOLDERS
|
|
6
|
+
);
|
|
7
|
+
const isSharedSubPage = computed(
|
|
8
|
+
() => route.name === VIEWS.SHARED_WITH_ME || route.name === VIEWS.SHARED_WORKFLOWS || route.name === VIEWS.SHARED_CREDENTIALS
|
|
9
|
+
);
|
|
10
|
+
return reactive({
|
|
11
|
+
isOverviewSubPage,
|
|
12
|
+
isSharedSubPage
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
export {
|
|
16
|
+
useProjectPages as u
|
|
17
|
+
};
|