diff --git a/graphify-out/.graphify_labels.json b/graphify-out/.graphify_labels.json new file mode 100644 index 0000000..986fac3 --- /dev/null +++ b/graphify-out/.graphify_labels.json @@ -0,0 +1,8 @@ +{ + "0": "khanegiSettingCatalog.ts", + "1": "formatValueForSave", + "2": "resolveSwitchChecked", + "3": "normalizeSettingRow", + "4": "superAdminSettingKeys.ts", + "5": "isSettingVisible" +} diff --git a/graphify-out/.graphify_labels.json.sig b/graphify-out/.graphify_labels.json.sig new file mode 100644 index 0000000..f969ad4 --- /dev/null +++ b/graphify-out/.graphify_labels.json.sig @@ -0,0 +1 @@ +{"0": "c47c6c9a6cdd6684", "1": "2504a600231e9767", "2": "04e8f5fc588d14b2", "3": "d0038b93f872317a", "4": "4fea0ed0deb11c56", "5": "8955a16d55c2d309"} \ No newline at end of file diff --git a/graphify-out/.graphify_root b/graphify-out/.graphify_root new file mode 100644 index 0000000..945c9b4 --- /dev/null +++ b/graphify-out/.graphify_root @@ -0,0 +1 @@ +. \ No newline at end of file diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md new file mode 100644 index 0000000..b912da8 --- /dev/null +++ b/graphify-out/GRAPH_REPORT.md @@ -0,0 +1,80 @@ +# Graph Report - controlpanel_user (2026-10-04) + +## Corpus Check +- 56 files · ~46,173 words +- Verdict: corpus is large enough that graph structure adds value. +- Unclassified: 38 file(s) not represented in the graph (top: .ttf 16, .eot 6, .woff 6) + +## Summary +- 63 nodes · 87 edges · 6 communities (4 shown, 2 thin omitted) +- Extraction: 100% EXTRACTED · 0% INFERRED · 0% AMBIGUOUS +- Token cost: 0 input · 0 output + +## Graph Freshness +- Built from commit: `bef5da62` +- Run `git rev-parse HEAD` and compare to check if the graph is stale. +- Run `graphify update .` after code changes (no API cost). + +## Community Hubs (Navigation) +- khanegiSettingCatalog.ts +- formatValueForSave +- resolveSwitchChecked +- normalizeSettingRow +- superAdminSettingKeys.ts +- isSettingVisible + +## God Nodes (most connected - your core abstractions) +1. `formatValueForSave()` - 7 edges +2. `resolveSwitchChecked()` - 5 edges +3. `switchValueFromChecked()` - 5 edges +4. `normalizeSettingRow()` - 5 edges +5. `normalizeMainWalletProductsValue()` - 4 edges +6. `isSupportMessengerType()` - 4 edges +7. `parseSupportMessengers()` - 4 edges +8. `resolveSettingFieldType()` - 4 edges +9. `resolveSettingDescription()` - 4 edges +10. `parseSupportMessengersDraft()` - 3 edges + +## Surprising Connections (you probably didn't know these) +- `formatValueForSave()` --calls--> `resolveSwitchChecked()` [EXTRACTED] + src/config/khanegiSettingCatalog.ts → src/config/khanegiSettingCatalog.ts _Bridges community 2 → community 1_ + +## Import Cycles +- None detected. + +## Communities (6 total, 2 thin omitted) + +### Community 0 - "khanegiSettingCatalog.ts" +Cohesion: 0.06 +Nodes (26): ref_config, ACTIVATE_DEACTIVATE_SWITCH_KEYS, conditionalOrderEnabledSetting, HIDDEN_LEGACY_SETTING_KEYS, KEY_HELP_FALLBACK, KEY_LABEL_FALLBACK, KEY_TYPE_FALLBACK, MAIN_WALLET_PRODUCTS_DEFAULT (+18 more) + +### Community 1 - "formatValueForSave" +Cohesion: 0.28 +Nodes (9): formatMainWalletProductIds(), formatSupportMessengers(), formatValueForSave(), isSupportMessengerType(), normalizeMainWalletProductsValue(), normalizeTimeValue(), parseMainWalletProductIds(), parseSupportMessengers() (+1 more) + +### Community 2 - "resolveSwitchChecked" +Cohesion: 0.29 +Nodes (7): isActivateDeactivateSwitch(), isReferralRequired(), isSwitchOn(), referralRequiredToString(), resolveSwitchChecked(), switchToString(), switchValueFromChecked() + +### Community 3 - "normalizeSettingRow" +Cohesion: 0.47 +Nodes (6): helpText(), normalizeSettingRow(), resolveSettingCanEdit(), resolveSettingDescription(), resolveSettingFieldType(), resolveSettingTitle() + +## Knowledge Gaps +- **27 isolated node(s):** `conditionalOrderEnabledSetting`, `priceChannelAccessSetting`, `priceProviderSetting`, `showToUsersChatSetting`, `SettingFieldType` (+22 more) + These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 37 node(s) total have ≤1 connection when file, concept and rationale nodes are included.) +- **2 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. + +## Suggested Questions +_Questions this graph is uniquely positioned to answer:_ + +- **Why does `formatValueForSave()` connect `formatValueForSave` to `khanegiSettingCatalog.ts`, `resolveSwitchChecked`?** + _High betweenness centrality (0.004) - this node is a cross-community bridge._ +- **Why does `resolveSwitchChecked()` connect `resolveSwitchChecked` to `khanegiSettingCatalog.ts`, `formatValueForSave`?** + _High betweenness centrality (0.001) - this node is a cross-community bridge._ +- **Why does `switchValueFromChecked()` connect `resolveSwitchChecked` to `khanegiSettingCatalog.ts`, `formatValueForSave`?** + _High betweenness centrality (0.001) - this node is a cross-community bridge._ +- **What connects `conditionalOrderEnabledSetting`, `priceChannelAccessSetting`, `priceProviderSetting` to the rest of the system?** + _27 weakly-connected nodes found - possible documentation gaps or missing edges._ +- **Should `khanegiSettingCatalog.ts` be split into smaller, more focused modules?** + _Cohesion score 0.05714285714285714 - nodes in this community are weakly interconnected._ \ No newline at end of file diff --git a/graphify-out/cache/stat-index.json b/graphify-out/cache/stat-index.json index 3458d16..63ea111 100644 --- a/graphify-out/cache/stat-index.json +++ b/graphify-out/cache/stat-index.json @@ -1 +1 @@ -{"README.md":{"size":442,"mtime_ns":1786352915196344500,"indexed_at_ns":1790064372776161689,"word_count":55},"index.html":{"size":382,"mtime_ns":1786352915196795000,"indexed_at_ns":1790064372776620016,"word_count":31},"package.json":{"size":681,"mtime_ns":1787153733241869200,"indexed_at_ns":1790064372776988000,"word_count":60},"public/favicon.svg":{"size":278,"mtime_ns":1786352915197578700,"indexed_at_ns":1790064372777406070,"word_count":29},"public/icons.svg":{"size":5031,"mtime_ns":1786352915197721800,"indexed_at_ns":1790064372777824028,"word_count":382},"src/App.vue":{"size":344,"mtime_ns":1786352915197867600,"indexed_at_ns":1790064372778270918,"word_count":35},"src/api/http.ts":{"size":598,"mtime_ns":1786352915198027600,"indexed_at_ns":1790064372778751712,"word_count":59},"src/auth/permissions.ts":{"size":1871,"mtime_ns":1786377085786641100,"indexed_at_ns":1790064372793560922,"word_count":201},"src/components/JalaliDatePicker.vue":{"size":3871,"mtime_ns":1789554412084637500,"indexed_at_ns":1790064372794104845,"word_count":394},"src/components/KhanegiDepositPanel.vue":{"size":4406,"mtime_ns":1788876816247845000,"indexed_at_ns":1790064372794625871,"word_count":399},"src/components/MoneyInput.vue":{"size":2327,"mtime_ns":1788875079255983200,"indexed_at_ns":1790064372795145094,"word_count":275},"src/components/SettingsCatalogPanel.vue":{"size":6149,"mtime_ns":1786986825333444900,"indexed_at_ns":1790064372795654230,"word_count":592},"src/components/TenantPanelShortcuts.vue":{"size":7331,"mtime_ns":1786352915211626500,"indexed_at_ns":1790064372796203334,"word_count":845},"src/components/VersionPageTabs.vue":{"size":1530,"mtime_ns":1786990119536758700,"indexed_at_ns":1790064372796738652,"word_count":163},"src/components/program-settings/SettingCard.vue":{"size":5485,"mtime_ns":1786972416689591300,"indexed_at_ns":1790064372797318999,"word_count":469},"src/components/program-settings/SettingToggle.vue":{"size":2508,"mtime_ns":1786972307025286900,"indexed_at_ns":1790064372797930858,"word_count":227},"src/components/program-settings/SettingValueField.vue":{"size":5839,"mtime_ns":1786972346815993800,"indexed_at_ns":1790064372798508320,"word_count":487},"src/config/defaultHamkarUiConfig.ts":{"size":7039,"mtime_ns":1786352915211833800,"indexed_at_ns":1790064372799040724,"word_count":737},"src/config/defaultKhanegiUiConfig.ts":{"size":11193,"mtime_ns":1787560898434721100,"indexed_at_ns":1790064372799735825,"word_count":1207},"src/config/hamkarEffectiveTheme.ts":{"size":2249,"mtime_ns":1786352915212110500,"indexed_at_ns":1790064372800619081,"word_count":280},"src/config/khanegiSettingCatalog.ts":{"size":77368,"mtime_ns":1788614933096693600,"indexed_at_ns":1790064372801442038,"word_count":6864},"src/config/khanegiSettingRow.ts":{"size":220,"mtime_ns":1786972105440816700,"indexed_at_ns":1790064372802543731,"word_count":30},"src/config/khanegiSystemSettingGroups.ts":{"size":5360,"mtime_ns":1788614855858223400,"indexed_at_ns":1790064372803081099,"word_count":496},"src/config/khanegiThemePresets.ts":{"size":6447,"mtime_ns":1786352915212270300,"indexed_at_ns":1790064372803607363,"word_count":673},"src/config/numeric.ts":{"size":1219,"mtime_ns":1786972105440556800,"indexed_at_ns":1790064372804143516,"word_count":160},"src/config/superAdminSettingKeys.ts":{"size":5766,"mtime_ns":1788614865698831900,"indexed_at_ns":1790064372804643626,"word_count":271},"src/layouts/AppLayout.vue":{"size":5556,"mtime_ns":1788873083851134400,"indexed_at_ns":1790064372805165061,"word_count":583},"src/main.ts":{"size":320,"mtime_ns":1786352915212587300,"indexed_at_ns":1790064372805613647,"word_count":36},"src/pages/AdminsPage.vue":{"size":13582,"mtime_ns":1788873155751709500,"indexed_at_ns":1790064372806094296,"word_count":1222},"src/pages/AuditPage.vue":{"size":1489,"mtime_ns":1786352915212934700,"indexed_at_ns":1790064372806641792,"word_count":147},"src/pages/HamkarUiConfigPage.vue":{"size":17660,"mtime_ns":1788873030907565000,"indexed_at_ns":1790064372807135608,"word_count":1416},"src/pages/HomePage.vue":{"size":14431,"mtime_ns":1788942596466701600,"indexed_at_ns":1790064372807700175,"word_count":1193},"src/pages/KhanegiModularUiConfigPage.vue":{"size":11664,"mtime_ns":1788873133224847700,"indexed_at_ns":1790064372808256118,"word_count":1089},"src/pages/LoginPage.vue":{"size":2146,"mtime_ns":1786352915213618700,"indexed_at_ns":1790064372808801466,"word_count":199},"src/pages/PluginCatalogPage.vue":{"size":23753,"mtime_ns":1788972334617575800,"indexed_at_ns":1790064372809320051,"word_count":2151},"src/pages/PluginPanelPage.vue":{"size":17743,"mtime_ns":1788972326034320200,"indexed_at_ns":1790064372809956623,"word_count":1637},"src/pages/PluginTenantPage.vue":{"size":34201,"mtime_ns":1789554426924640600,"indexed_at_ns":1790064372810528293,"word_count":2896},"src/pages/ProductVersionsPage.vue":{"size":7495,"mtime_ns":1788964077410396400,"indexed_at_ns":1790064372811210401,"word_count":630},"src/pages/ProgramSettingsPage.vue":{"size":22948,"mtime_ns":1788873135269548700,"indexed_at_ns":1790064372811739551,"word_count":2126},"src/pages/ServerPanelPage.vue":{"size":9388,"mtime_ns":1788873043565847500,"indexed_at_ns":1790064372812387805,"word_count":841},"src/pages/ServerTenantPage.vue":{"size":21393,"mtime_ns":1788873091808932500,"indexed_at_ns":1790064372813031103,"word_count":1904},"src/pages/SmsPanelPage.vue":{"size":8548,"mtime_ns":1788873043565660600,"indexed_at_ns":1790064372813665380,"word_count":767},"src/pages/SmsTenantPage.vue":{"size":31808,"mtime_ns":1788873091930502100,"indexed_at_ns":1790064372814236209,"word_count":2737},"src/pages/SupportPanelPage.vue":{"size":8509,"mtime_ns":1788873042587012800,"indexed_at_ns":1790064372814894330,"word_count":774},"src/pages/SupportTenantPage.vue":{"size":21721,"mtime_ns":1788873155504786500,"indexed_at_ns":1790064372815496774,"word_count":1826},"src/pages/TenantFormPage.vue":{"size":15067,"mtime_ns":1789626500502038200,"indexed_at_ns":1790064372816115036,"word_count":1275},"src/pages/UiConfigPage.vue":{"size":31846,"mtime_ns":1788873137816556400,"indexed_at_ns":1790064372816727638,"word_count":2641},"src/router/index.ts":{"size":5974,"mtime_ns":1788852471469088500,"indexed_at_ns":1790064372817391902,"word_count":541},"src/stores/auth.ts":{"size":1801,"mtime_ns":1786377085791489900,"indexed_at_ns":1790064372817923077,"word_count":204},"src/theme/tokens.ts":{"size":4616,"mtime_ns":1786352915216459100,"indexed_at_ns":1790064372818684017,"word_count":422},"src/types/vue3-persian-datetime-picker.d.ts":{"size":212,"mtime_ns":1786352915216636300,"indexed_at_ns":1790064372819206900,"word_count":22},"src/utils/datetime.ts":{"size":6276,"mtime_ns":1789550690341050700,"indexed_at_ns":1790064372819699742,"word_count":928},"src/utils/money.ts":{"size":1600,"mtime_ns":1786352915216957500,"indexed_at_ns":1790064372820318927,"word_count":222},"src/utils/rewriteLegacyUploadUrl.ts":{"size":651,"mtime_ns":1788799101621580600,"indexed_at_ns":1790064372820846732,"word_count":75},"src/vite-env.d.ts":{"size":157,"mtime_ns":1786352915217058100,"indexed_at_ns":1790064372821286287,"word_count":18},"tsconfig.app.json":{"size":340,"mtime_ns":1786352915217159500,"indexed_at_ns":1790064372821637400,"word_count":24},"tsconfig.json":{"size":119,"mtime_ns":1786352915217253500,"indexed_at_ns":1790064372821991589,"word_count":15},"tsconfig.node.json":{"size":633,"mtime_ns":1787153734300967400,"indexed_at_ns":1790064372822338391,"word_count":43},"vite.config.ts":{"size":1105,"mtime_ns":1786973481403445100,"indexed_at_ns":1790064372822681270,"word_count":106}} \ No newline at end of file +{"README.md":{"size":442,"mtime_ns":1786352915196344500,"indexed_at_ns":1790064372776161689,"word_count":55},"index.html":{"size":382,"mtime_ns":1786352915196795000,"indexed_at_ns":1790064372776620016,"word_count":31},"package.json":{"size":681,"mtime_ns":1787153733241869200,"indexed_at_ns":1790064372776988000,"word_count":60},"public/favicon.svg":{"size":278,"mtime_ns":1786352915197578700,"indexed_at_ns":1790064372777406070,"word_count":29},"public/icons.svg":{"size":5031,"mtime_ns":1786352915197721800,"indexed_at_ns":1790064372777824028,"word_count":382},"src/App.vue":{"size":344,"mtime_ns":1786352915197867600,"indexed_at_ns":1790064372778270918,"word_count":35},"src/api/http.ts":{"size":598,"mtime_ns":1786352915198027600,"indexed_at_ns":1790064372778751712,"word_count":59},"src/auth/permissions.ts":{"size":1871,"mtime_ns":1786377085786641100,"indexed_at_ns":1790064372793560922,"word_count":201},"src/components/JalaliDatePicker.vue":{"size":3871,"mtime_ns":1789554412084637500,"indexed_at_ns":1790064372794104845,"word_count":394},"src/components/KhanegiDepositPanel.vue":{"size":4406,"mtime_ns":1788876816247845000,"indexed_at_ns":1790064372794625871,"word_count":399},"src/components/MoneyInput.vue":{"size":2327,"mtime_ns":1788875079255983200,"indexed_at_ns":1790064372795145094,"word_count":275},"src/components/SettingsCatalogPanel.vue":{"size":6149,"mtime_ns":1786986825333444900,"indexed_at_ns":1790064372795654230,"word_count":592},"src/components/TenantPanelShortcuts.vue":{"size":7331,"mtime_ns":1786352915211626500,"indexed_at_ns":1790064372796203334,"word_count":845},"src/components/VersionPageTabs.vue":{"size":1530,"mtime_ns":1786990119536758700,"indexed_at_ns":1790064372796738652,"word_count":163},"src/components/program-settings/SettingCard.vue":{"size":5485,"mtime_ns":1786972416689591300,"indexed_at_ns":1790064372797318999,"word_count":469},"src/components/program-settings/SettingToggle.vue":{"size":2508,"mtime_ns":1786972307025286900,"indexed_at_ns":1790064372797930858,"word_count":227},"src/components/program-settings/SettingValueField.vue":{"size":5839,"mtime_ns":1786972346815993800,"indexed_at_ns":1790064372798508320,"word_count":487},"src/config/defaultHamkarUiConfig.ts":{"size":7039,"mtime_ns":1786352915211833800,"indexed_at_ns":1790064372799040724,"word_count":737},"src/config/defaultKhanegiUiConfig.ts":{"size":11193,"mtime_ns":1787560898434721100,"indexed_at_ns":1790064372799735825,"word_count":1207},"src/config/hamkarEffectiveTheme.ts":{"size":2249,"mtime_ns":1786352915212110500,"indexed_at_ns":1790064372800619081,"word_count":280},"src/config/khanegiSettingCatalog.ts":{"size":77901,"mtime_ns":1791015842829780600,"indexed_at_ns":1791133977495028910,"word_count":6905},"src/config/khanegiSettingRow.ts":{"size":220,"mtime_ns":1786972105440816700,"indexed_at_ns":1790064372802543731,"word_count":30},"src/config/khanegiSystemSettingGroups.ts":{"size":5360,"mtime_ns":1788614855858223400,"indexed_at_ns":1790064372803081099,"word_count":496},"src/config/khanegiThemePresets.ts":{"size":6447,"mtime_ns":1786352915212270300,"indexed_at_ns":1790064372803607363,"word_count":673},"src/config/numeric.ts":{"size":1219,"mtime_ns":1786972105440556800,"indexed_at_ns":1790064372804143516,"word_count":160},"src/config/superAdminSettingKeys.ts":{"size":5806,"mtime_ns":1791015842830027600,"indexed_at_ns":1791133977498601933,"word_count":272},"src/layouts/AppLayout.vue":{"size":5556,"mtime_ns":1788873083851134400,"indexed_at_ns":1790064372805165061,"word_count":583},"src/main.ts":{"size":320,"mtime_ns":1786352915212587300,"indexed_at_ns":1790064372805613647,"word_count":36},"src/pages/AdminsPage.vue":{"size":13582,"mtime_ns":1788873155751709500,"indexed_at_ns":1790064372806094296,"word_count":1222},"src/pages/AuditPage.vue":{"size":1489,"mtime_ns":1786352915212934700,"indexed_at_ns":1790064372806641792,"word_count":147},"src/pages/HamkarUiConfigPage.vue":{"size":17660,"mtime_ns":1788873030907565000,"indexed_at_ns":1790064372807135608,"word_count":1416},"src/pages/HomePage.vue":{"size":14431,"mtime_ns":1788942596466701600,"indexed_at_ns":1790064372807700175,"word_count":1193},"src/pages/KhanegiModularUiConfigPage.vue":{"size":11664,"mtime_ns":1788873133224847700,"indexed_at_ns":1790064372808256118,"word_count":1089},"src/pages/LoginPage.vue":{"size":2146,"mtime_ns":1786352915213618700,"indexed_at_ns":1790064372808801466,"word_count":199},"src/pages/PluginCatalogPage.vue":{"size":23753,"mtime_ns":1788972334617575800,"indexed_at_ns":1790064372809320051,"word_count":2151},"src/pages/PluginPanelPage.vue":{"size":17743,"mtime_ns":1788972326034320200,"indexed_at_ns":1790064372809956623,"word_count":1637},"src/pages/PluginTenantPage.vue":{"size":34201,"mtime_ns":1789554426924640600,"indexed_at_ns":1790064372810528293,"word_count":2896},"src/pages/ProductVersionsPage.vue":{"size":7495,"mtime_ns":1790177785564258700,"indexed_at_ns":1791133977503698401,"word_count":630},"src/pages/ProgramSettingsPage.vue":{"size":22948,"mtime_ns":1788873135269548700,"indexed_at_ns":1790064372811739551,"word_count":2126},"src/pages/ServerPanelPage.vue":{"size":9388,"mtime_ns":1788873043565847500,"indexed_at_ns":1790064372812387805,"word_count":841},"src/pages/ServerTenantPage.vue":{"size":21393,"mtime_ns":1788873091808932500,"indexed_at_ns":1790064372813031103,"word_count":1904},"src/pages/SmsPanelPage.vue":{"size":8548,"mtime_ns":1788873043565660600,"indexed_at_ns":1790064372813665380,"word_count":767},"src/pages/SmsTenantPage.vue":{"size":31808,"mtime_ns":1788873091930502100,"indexed_at_ns":1790064372814236209,"word_count":2737},"src/pages/SupportPanelPage.vue":{"size":8509,"mtime_ns":1788873042587012800,"indexed_at_ns":1790064372814894330,"word_count":774},"src/pages/SupportTenantPage.vue":{"size":21721,"mtime_ns":1788873155504786500,"indexed_at_ns":1790064372815496774,"word_count":1826},"src/pages/TenantFormPage.vue":{"size":15067,"mtime_ns":1789626500502038200,"indexed_at_ns":1790064372816115036,"word_count":1275},"src/pages/UiConfigPage.vue":{"size":31846,"mtime_ns":1788873137816556400,"indexed_at_ns":1790064372816727638,"word_count":2641},"src/router/index.ts":{"size":5974,"mtime_ns":1788852471469088500,"indexed_at_ns":1790064372817391902,"word_count":541},"src/stores/auth.ts":{"size":1801,"mtime_ns":1786377085791489900,"indexed_at_ns":1790064372817923077,"word_count":204},"src/theme/tokens.ts":{"size":4616,"mtime_ns":1786352915216459100,"indexed_at_ns":1790064372818684017,"word_count":422},"src/types/vue3-persian-datetime-picker.d.ts":{"size":212,"mtime_ns":1786352915216636300,"indexed_at_ns":1790064372819206900,"word_count":22},"src/utils/datetime.ts":{"size":6276,"mtime_ns":1789550690341050700,"indexed_at_ns":1790064372819699742,"word_count":928},"src/utils/money.ts":{"size":1600,"mtime_ns":1786352915216957500,"indexed_at_ns":1790064372820318927,"word_count":222},"src/utils/rewriteLegacyUploadUrl.ts":{"size":651,"mtime_ns":1788799101621580600,"indexed_at_ns":1790064372820846732,"word_count":75},"src/vite-env.d.ts":{"size":157,"mtime_ns":1786352915217058100,"indexed_at_ns":1790064372821286287,"word_count":18},"tsconfig.app.json":{"size":340,"mtime_ns":1786352915217159500,"indexed_at_ns":1790064372821637400,"word_count":24},"tsconfig.json":{"size":119,"mtime_ns":1786352915217253500,"indexed_at_ns":1790064372821991589,"word_count":15},"tsconfig.node.json":{"size":633,"mtime_ns":1787153734300967400,"indexed_at_ns":1790064372822338391,"word_count":43},"vite.config.ts":{"size":1105,"mtime_ns":1786973481403445100,"indexed_at_ns":1790064372822681270,"word_count":106}} \ No newline at end of file diff --git a/graphify-out/graph.html b/graphify-out/graph.html new file mode 100644 index 0000000..a578e4f --- /dev/null +++ b/graphify-out/graph.html @@ -0,0 +1,351 @@ + + + + +graphify - graphify-out/graph.html + + + + +
+ + + + + \ No newline at end of file diff --git a/graphify-out/graph.json b/graphify-out/graph.json new file mode 100644 index 0000000..2d7277b --- /dev/null +++ b/graphify-out/graph.json @@ -0,0 +1,1730 @@ +{ + "directed": false, + "multigraph": false, + "graph": {}, + "nodes": [ + { + "id": "src_config_khanegisettingcatalog_partnerurlrow", + "label": "PartnerUrlRow", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "partnerurlrow", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L121" + }, + { + "id": "src_config_khanegisettingcatalog_settingfieldtype", + "label": "SettingFieldType", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "settingfieldtype", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L10" + }, + { + "id": "src_config_khanegisettingcatalog_supportmessengerentrydraft", + "label": "SupportMessengerEntryDraft", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "supportmessengerentrydraft", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L57" + }, + { + "id": "src_config_khanegisettingcatalog_switchhelpparts", + "label": "SwitchHelpParts", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "switchhelpparts", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L596" + }, + { + "id": "src_config_khanegisettingcatalog_formatpartnerserverurls", + "label": "formatPartnerServerUrls()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "formatpartnerserverurls()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L150" + }, + { + "id": "src_config_khanegisettingcatalog_issettingactive", + "label": "isSettingActive()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "issettingactive()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L226" + }, + { + "id": "src_config_khanegisettingcatalog_issettinglocked", + "label": "isSettingLocked()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "issettinglocked()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L222" + }, + { + "id": "src_config_khanegisettingcatalog_parsepartnerserverurlsdraft", + "label": "parsePartnerServerUrlsDraft()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "parsepartnerserverurlsdraft()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L126" + }, + { + "id": "src_config_khanegisettingcatalog_parseselectoptions", + "label": "parseSelectOptions()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "parseselectoptions()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L505" + }, + { + "id": "src_config_khanegisettingcatalog_parseswitchhelp", + "label": "parseSwitchHelp()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "parseswitchhelp()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L607" + }, + { + "id": "src_config_khanegisettingcatalog_supportmessengeridplaceholder", + "label": "supportMessengerIdPlaceholder()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "supportmessengeridplaceholder()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L162" + }, + { + "id": "src_config_khanegisettingcatalog_switchlabels", + "label": "switchLabels()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "switchlabels()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L586" + }, + { + "id": "src_config_khanegisettingcatalog_formatmainwalletproductids", + "label": "formatMainWalletProductIds()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "formatValueForSave", + "file_type": "code", + "norm_label": "formatmainwalletproductids()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L44" + }, + { + "id": "src_config_khanegisettingcatalog_formatsupportmessengers", + "label": "formatSupportMessengers()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "formatValueForSave", + "file_type": "code", + "norm_label": "formatsupportmessengers()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L109" + }, + { + "id": "src_config_khanegisettingcatalog_formatvalueforsave", + "label": "formatValueForSave()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "formatValueForSave", + "file_type": "code", + "norm_label": "formatvalueforsave()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L557" + }, + { + "id": "src_config_khanegisettingcatalog_issupportmessengertype", + "label": "isSupportMessengerType()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "formatValueForSave", + "file_type": "code", + "norm_label": "issupportmessengertype()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L73" + }, + { + "id": "src_config_khanegisettingcatalog_normalizemainwalletproductsvalue", + "label": "normalizeMainWalletProductsValue()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "formatValueForSave", + "file_type": "code", + "norm_label": "normalizemainwalletproductsvalue()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L52" + }, + { + "id": "src_config_khanegisettingcatalog_normalizetimevalue", + "label": "normalizeTimeValue()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "formatValueForSave", + "file_type": "code", + "norm_label": "normalizetimevalue()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1335" + }, + { + "id": "src_config_khanegisettingcatalog_parsemainwalletproductids", + "label": "parseMainWalletProductIds()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "formatValueForSave", + "file_type": "code", + "norm_label": "parsemainwalletproductids()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L23" + }, + { + "id": "src_config_khanegisettingcatalog_parsesupportmessengers", + "label": "parseSupportMessengers()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "formatValueForSave", + "file_type": "code", + "norm_label": "parsesupportmessengers()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L79" + }, + { + "id": "src_config_khanegisettingcatalog_parsesupportmessengersdraft", + "label": "parseSupportMessengersDraft()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "formatValueForSave", + "file_type": "code", + "norm_label": "parsesupportmessengersdraft()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L86" + }, + { + "id": "src_config_khanegisettingcatalog_isactivatedeactivateswitch", + "label": "isActivateDeactivateSwitch()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "resolveSwitchChecked", + "file_type": "code", + "norm_label": "isactivatedeactivateswitch()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L480" + }, + { + "id": "src_config_khanegisettingcatalog_isreferralrequired", + "label": "isReferralRequired()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "resolveSwitchChecked", + "file_type": "code", + "norm_label": "isreferralrequired()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L484" + }, + { + "id": "src_config_khanegisettingcatalog_isswitchon", + "label": "isSwitchOn()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "resolveSwitchChecked", + "file_type": "code", + "norm_label": "isswitchon()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L527" + }, + { + "id": "src_config_khanegisettingcatalog_referralrequiredtostring", + "label": "referralRequiredToString()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "resolveSwitchChecked", + "file_type": "code", + "norm_label": "referralrequiredtostring()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L488" + }, + { + "id": "src_config_khanegisettingcatalog_resolveswitchchecked", + "label": "resolveSwitchChecked()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "resolveSwitchChecked", + "file_type": "code", + "norm_label": "resolveswitchchecked()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L536" + }, + { + "id": "src_config_khanegisettingcatalog_switchtostring", + "label": "switchToString()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "resolveSwitchChecked", + "file_type": "code", + "norm_label": "switchtostring()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L532" + }, + { + "id": "src_config_khanegisettingcatalog_switchvaluefromchecked", + "label": "switchValueFromChecked()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "resolveSwitchChecked", + "file_type": "code", + "norm_label": "switchvaluefromchecked()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L547" + }, + { + "id": "src_config_khanegisettingcatalog_helptext", + "label": "helpText()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "normalizeSettingRow", + "file_type": "code", + "norm_label": "helptext()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1316" + }, + { + "id": "src_config_khanegisettingcatalog_normalizesettingrow", + "label": "normalizeSettingRow()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "normalizeSettingRow", + "file_type": "code", + "norm_label": "normalizesettingrow()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1298" + }, + { + "id": "src_config_khanegisettingcatalog_resolvesettingcanedit", + "label": "resolveSettingCanEdit()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "normalizeSettingRow", + "file_type": "code", + "norm_label": "resolvesettingcanedit()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1287" + }, + { + "id": "src_config_khanegisettingcatalog_resolvesettingdescription", + "label": "resolveSettingDescription()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "normalizeSettingRow", + "file_type": "code", + "norm_label": "resolvesettingdescription()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1268" + }, + { + "id": "src_config_khanegisettingcatalog_resolvesettingfieldtype", + "label": "resolveSettingFieldType()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "normalizeSettingRow", + "file_type": "code", + "norm_label": "resolvesettingfieldtype()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L492" + }, + { + "id": "src_config_khanegisettingcatalog_resolvesettingtitle", + "label": "resolveSettingTitle()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "normalizeSettingRow", + "file_type": "code", + "norm_label": "resolvesettingtitle()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1261" + }, + { + "id": "src_config_superadminsettingkeys_issuperadminsystemsettingkey", + "label": "isSuperAdminSystemSettingKey()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "superAdminSettingKeys.ts", + "file_type": "code", + "norm_label": "issuperadminsystemsettingkey()", + "source_file": "src/config/superAdminSettingKeys.ts", + "source_location": "L227" + }, + { + "id": "src_config_khanegisettingcatalog_issettingvisible", + "label": "isSettingVisible()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "isSettingVisible", + "file_type": "code", + "norm_label": "issettingvisible()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L231" + }, + { + "id": "src_config_khanegisettingcatalog_isstoreapp", + "label": "isStoreApp()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "isSettingVisible", + "file_type": "code", + "norm_label": "isstoreapp()", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L4" + }, + { + "id": "src_config_khanegisettingcatalog", + "label": "khanegiSettingCatalog.ts", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "khanegisettingcatalog.ts", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1" + }, + { + "id": "src_config_khanegisettingcatalog_activate_deactivate_switch_keys", + "label": "ACTIVATE_DEACTIVATE_SWITCH_KEYS", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "activate_deactivate_switch_keys", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L478" + }, + { + "id": "src_config_khanegisettingcatalog_conditionalorderenabledsetting", + "label": "conditionalOrderEnabledSetting", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "conditionalorderenabledsetting", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L5" + }, + { + "id": "src_config_khanegisettingcatalog_hidden_legacy_setting_keys", + "label": "HIDDEN_LEGACY_SETTING_KEYS", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "hidden_legacy_setting_keys", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L203" + }, + { + "id": "src_config_khanegisettingcatalog_key_help_fallback", + "label": "KEY_HELP_FALLBACK", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "key_help_fallback", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L645" + }, + { + "id": "src_config_khanegisettingcatalog_key_label_fallback", + "label": "KEY_LABEL_FALLBACK", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "key_label_fallback", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1012" + }, + { + "id": "src_config_khanegisettingcatalog_key_type_fallback", + "label": "KEY_TYPE_FALLBACK", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "key_type_fallback", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L273" + }, + { + "id": "src_config_khanegisettingcatalog_main_wallet_products_default", + "label": "MAIN_WALLET_PRODUCTS_DEFAULT", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "main_wallet_products_default", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L20" + }, + { + "id": "src_config_khanegisettingcatalog_partner_server_urls_max", + "label": "PARTNER_SERVER_URLS_MAX", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "partner_server_urls_max", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L123" + }, + { + "id": "src_config_khanegisettingcatalog_price_channel_panel_keys", + "label": "PRICE_CHANNEL_PANEL_KEYS", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "price_channel_panel_keys", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L249" + }, + { + "id": "src_config_khanegisettingcatalog_pricechannelaccesssetting", + "label": "priceChannelAccessSetting", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "pricechannelaccesssetting", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L6" + }, + { + "id": "src_config_khanegisettingcatalog_priceprovidersetting", + "label": "priceProviderSetting", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "priceprovidersetting", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L7" + }, + { + "id": "src_config_khanegisettingcatalog_referral_required_key", + "label": "REFERRAL_REQUIRED_KEY", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "referral_required_key", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L475" + }, + { + "id": "src_config_khanegisettingcatalog_select_labels_by_key", + "label": "SELECT_LABELS_BY_KEY", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "select_labels_by_key", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L439" + }, + { + "id": "src_config_khanegisettingcatalog_select_options_by_key", + "label": "SELECT_OPTIONS_BY_KEY", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "select_options_by_key", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L463" + }, + { + "id": "src_config_khanegisettingcatalog_setting_code_managed_keys", + "label": "SETTING_CODE_MANAGED_KEYS", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "setting_code_managed_keys", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L186" + }, + { + "id": "src_config_khanegisettingcatalog_setting_editable_keys", + "label": "SETTING_EDITABLE_KEYS", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "setting_editable_keys", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1213" + }, + { + "id": "src_config_khanegisettingcatalog_setting_locked_keys", + "label": "SETTING_LOCKED_KEYS", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "setting_locked_keys", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1156" + }, + { + "id": "src_config_khanegisettingcatalog_setting_type_options", + "label": "SETTING_TYPE_OPTIONS", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "setting_type_options", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L262" + }, + { + "id": "src_config_khanegisettingcatalog_showtouserschatsetting", + "label": "showToUsersChatSetting", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "showtouserschatsetting", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L8" + }, + { + "id": "src_config_khanegisettingcatalog_store_only_setting_keys", + "label": "STORE_ONLY_SETTING_KEYS", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "store_only_setting_keys", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L220" + }, + { + "id": "src_config_khanegisettingcatalog_support_messenger_types", + "label": "SUPPORT_MESSENGER_TYPES", + "_origin": "ast", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "file_type": "code", + "norm_label": "support_messenger_types", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L62" + }, + { + "id": "src_config_superadminsettingkeys", + "label": "superAdminSettingKeys.ts", + "_origin": "ast", + "community": 4, + "community_name": "superAdminSettingKeys.ts", + "file_type": "code", + "norm_label": "superadminsettingkeys.ts", + "source_file": "src/config/superAdminSettingKeys.ts", + "source_location": "L1" + }, + { + "id": "src_config_superadminsettingkeys_superadmin_editable_setting_keys", + "label": "SUPERADMIN_EDITABLE_SETTING_KEYS", + "_origin": "ast", + "community": 4, + "community_name": "superAdminSettingKeys.ts", + "file_type": "code", + "norm_label": "superadmin_editable_setting_keys", + "source_file": "src/config/superAdminSettingKeys.ts", + "source_location": "L24" + }, + { + "id": "src_config_superadminsettingkeys_superadmin_system_setting_keys", + "label": "SUPERADMIN_SYSTEM_SETTING_KEYS", + "_origin": "ast", + "community": 4, + "community_name": "superAdminSettingKeys.ts", + "file_type": "code", + "norm_label": "superadmin_system_setting_keys", + "source_file": "src/config/superAdminSettingKeys.ts", + "source_location": "L5" + }, + { + "id": "ref_config", + "label": "ref_config", + "community": 0, + "community_name": "khanegiSettingCatalog.ts", + "external": true, + "file_type": "concept", + "norm_label": "ref_config", + "source_file": "", + "type": "external" + } + ], + "links": [ + { + "source": "src_config_khanegisettingcatalog_formatsupportmessengers", + "target": "src_config_khanegisettingcatalog_issupportmessengertype", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L115", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_formatvalueforsave", + "target": "src_config_khanegisettingcatalog_switchvaluefromchecked", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L563", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_formatvalueforsave", + "target": "src_config_khanegisettingcatalog_resolveswitchchecked", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L565", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_formatvalueforsave", + "target": "src_config_khanegisettingcatalog_normalizetimevalue", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L575", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_formatvalueforsave", + "target": "src_config_khanegisettingcatalog_normalizemainwalletproductsvalue", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L578", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_formatvalueforsave", + "target": "src_config_khanegisettingcatalog_formatsupportmessengers", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L581", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_formatvalueforsave", + "target": "src_config_khanegisettingcatalog_parsesupportmessengers", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L581", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_helptext", + "target": "src_config_khanegisettingcatalog_resolvesettingdescription", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1322", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_helptext", + "target": "src_config_khanegisettingcatalog_resolvesettingfieldtype", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1325", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_issettingvisible", + "target": "src_config_khanegisettingcatalog_isstoreapp", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L235", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_normalizemainwalletproductsvalue", + "target": "src_config_khanegisettingcatalog_formatmainwalletproductids", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L53", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_normalizemainwalletproductsvalue", + "target": "src_config_khanegisettingcatalog_parsemainwalletproductids", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L53", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_normalizesettingrow", + "target": "src_config_khanegisettingcatalog_resolvesettingtitle", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1309", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_normalizesettingrow", + "target": "src_config_khanegisettingcatalog_resolvesettingdescription", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1310", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_normalizesettingrow", + "target": "src_config_khanegisettingcatalog_resolvesettingcanedit", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1311", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_normalizesettingrow", + "target": "src_config_khanegisettingcatalog_resolvesettingfieldtype", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1312", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_parsesupportmessengers", + "target": "src_config_khanegisettingcatalog_parsesupportmessengersdraft", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L80", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_parsesupportmessengers", + "target": "src_config_khanegisettingcatalog_issupportmessengertype", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L81", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_parsesupportmessengersdraft", + "target": "src_config_khanegisettingcatalog_issupportmessengertype", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L103", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_resolvesettingdescription", + "target": "src_config_khanegisettingcatalog_resolvesettingfieldtype", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1272", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_resolveswitchchecked", + "target": "src_config_khanegisettingcatalog_isreferralrequired", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L538", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_resolveswitchchecked", + "target": "src_config_khanegisettingcatalog_isactivatedeactivateswitch", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L540", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_resolveswitchchecked", + "target": "src_config_khanegisettingcatalog_isswitchon", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L544", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_switchvaluefromchecked", + "target": "src_config_khanegisettingcatalog_referralrequiredtostring", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L549", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_switchvaluefromchecked", + "target": "src_config_khanegisettingcatalog_isactivatedeactivateswitch", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L551", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog_switchvaluefromchecked", + "target": "src_config_khanegisettingcatalog_switchtostring", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L554", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "ref_config", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L2", + "type_only": true, + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_settingfieldtype", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_key_label_fallback", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1012", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_formatsupportmessengers", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L109", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_setting_locked_keys", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1156", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_partnerurlrow", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L121", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_setting_editable_keys", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1213", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_partner_server_urls_max", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L123", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_parsepartnerserverurlsdraft", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L126", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_resolvesettingtitle", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1261", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_resolvesettingdescription", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1268", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_resolvesettingcanedit", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1287", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_normalizesettingrow", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1298", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_helptext", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1316", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_normalizetimevalue", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L1335", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_formatpartnerserverurls", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L150", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_supportmessengeridplaceholder", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L162", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_setting_code_managed_keys", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L186", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_main_wallet_products_default", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_hidden_legacy_setting_keys", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L203", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_store_only_setting_keys", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L220", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_issettinglocked", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L222", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_issettingactive", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L226", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_parsemainwalletproductids", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_issettingvisible", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L231", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_price_channel_panel_keys", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L249", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_setting_type_options", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L262", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_key_type_fallback", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L273", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_isstoreapp", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_select_labels_by_key", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L439", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_formatmainwalletproductids", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_select_options_by_key", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L463", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_referral_required_key", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L475", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_activate_deactivate_switch_keys", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L478", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_isactivatedeactivateswitch", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L480", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_isreferralrequired", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L484", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_referralrequiredtostring", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L488", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_resolvesettingfieldtype", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L492", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_conditionalorderenabledsetting", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_parseselectoptions", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L505", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_normalizemainwalletproductsvalue", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L52", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_isswitchon", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L527", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_switchtostring", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L532", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_resolveswitchchecked", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L536", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_switchvaluefromchecked", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L547", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_formatvalueforsave", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L557", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_supportmessengerentrydraft", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L57", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_switchlabels", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L586", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_switchhelpparts", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L596", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_pricechannelaccesssetting", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_parseswitchhelp", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L607", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_support_messenger_types", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L62", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_key_help_fallback", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L645", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_priceprovidersetting", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_issupportmessengertype", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L73", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_parsesupportmessengers", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L79", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_showtouserschatsetting", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "src_config_khanegisettingcatalog", + "target": "src_config_khanegisettingcatalog_parsesupportmessengersdraft", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/khanegiSettingCatalog.ts", + "source_location": "L86", + "weight": 1.0 + }, + { + "source": "src_config_superadminsettingkeys", + "target": "src_config_superadminsettingkeys_issuperadminsystemsettingkey", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/superAdminSettingKeys.ts", + "source_location": "L227", + "weight": 1.0 + }, + { + "source": "src_config_superadminsettingkeys", + "target": "src_config_superadminsettingkeys_superadmin_editable_setting_keys", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/superAdminSettingKeys.ts", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "src_config_superadminsettingkeys", + "target": "src_config_superadminsettingkeys_superadmin_system_setting_keys", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "src/config/superAdminSettingKeys.ts", + "source_location": "L5", + "weight": 1.0 + } + ], + "hyperedges": [], + "built_at_commit": "bef5da6239125c09d0be11736fc906a96b76ac3a" +} \ No newline at end of file diff --git a/graphify-out/manifest.json b/graphify-out/manifest.json new file mode 100644 index 0000000..f498f63 --- /dev/null +++ b/graphify-out/manifest.json @@ -0,0 +1,356 @@ +{ + "package.json": { + "mtime": 1787153733.2418692, + "seen": 1791133977.6193485, + "ast_hash": "0ea185a5e1e78aadf7025665e9b39e9e", + "semantic_hash": "" + }, + "src/App.vue": { + "mtime": 1786352915.1978676, + "seen": 1791133977.619354, + "ast_hash": "d87851861f641427b9beb7dab5a75980", + "semantic_hash": "" + }, + "src/api/http.ts": { + "mtime": 1786352915.1980276, + "seen": 1791133977.6193569, + "ast_hash": "9dc615bf4662aa79f29b0db92134b79e", + "semantic_hash": "" + }, + "src/auth/permissions.ts": { + "mtime": 1786377085.7866411, + "seen": 1791133977.6193588, + "ast_hash": "20cf34abc737e76f0fd1f9c2c233dc8f", + "semantic_hash": "" + }, + "src/components/JalaliDatePicker.vue": { + "mtime": 1789554412.0846374, + "seen": 1791133977.6193602, + "ast_hash": "a9754baab2ad0987a406000a6f61fbf8", + "semantic_hash": "" + }, + "src/components/KhanegiDepositPanel.vue": { + "mtime": 1788876816.247845, + "seen": 1791133977.6193616, + "ast_hash": "d1e30b30e0d99d792c6b705e2fe34991", + "semantic_hash": "" + }, + "src/components/MoneyInput.vue": { + "mtime": 1788875079.255983, + "seen": 1791133977.6193628, + "ast_hash": "06eff041abd7a55e4832cf98db8e754b", + "semantic_hash": "" + }, + "src/components/SettingsCatalogPanel.vue": { + "mtime": 1786986825.3334448, + "seen": 1791133977.619364, + "ast_hash": "baff7fe473f274cbaaacf87f81a5c615", + "semantic_hash": "" + }, + "src/components/TenantPanelShortcuts.vue": { + "mtime": 1786352915.2116265, + "seen": 1791133977.6193655, + "ast_hash": "4829dc2470e432c360cb4f00a3b7f372", + "semantic_hash": "" + }, + "src/components/VersionPageTabs.vue": { + "mtime": 1786990119.5367587, + "seen": 1791133977.6193666, + "ast_hash": "df3345b45d52c55e49244b7807cbcf1f", + "semantic_hash": "" + }, + "src/components/program-settings/SettingCard.vue": { + "mtime": 1786972416.6895914, + "seen": 1791133977.6193678, + "ast_hash": "7629045273cd0b04c29473fdd562a179", + "semantic_hash": "" + }, + "src/components/program-settings/SettingToggle.vue": { + "mtime": 1786972307.025287, + "seen": 1791133977.6193695, + "ast_hash": "e538c09c9a630204f5ff7a0287817ee3", + "semantic_hash": "" + }, + "src/components/program-settings/SettingValueField.vue": { + "mtime": 1786972346.8159938, + "seen": 1791133977.6193707, + "ast_hash": "41c146f501265f37d643dc76fc0d7392", + "semantic_hash": "" + }, + "src/config/defaultHamkarUiConfig.ts": { + "mtime": 1786352915.2118337, + "seen": 1791133977.6193721, + "ast_hash": "f3376ee71c1d8f7d68f9af6ec1db6e6b", + "semantic_hash": "" + }, + "src/config/defaultKhanegiUiConfig.ts": { + "mtime": 1787560898.434721, + "seen": 1791133977.6193733, + "ast_hash": "273b1d70ada3296dd50a9e92a5a8238d", + "semantic_hash": "" + }, + "src/config/hamkarEffectiveTheme.ts": { + "mtime": 1786352915.2121105, + "seen": 1791133977.6193743, + "ast_hash": "0fec3d7e57d42a3db8a76a2a78f11ea5", + "semantic_hash": "" + }, + "src/config/khanegiSettingCatalog.ts": { + "mtime": 1791015842.8297806, + "seen": 1791133977.619376, + "ast_hash": "ab5c90f95d716e0172f4cfa88b8ba56d", + "semantic_hash": "" + }, + "src/config/khanegiSettingRow.ts": { + "mtime": 1786972105.4408166, + "seen": 1791133977.6193771, + "ast_hash": "e231618c0266b4898b8250abd77bc8f9", + "semantic_hash": "" + }, + "src/config/khanegiSystemSettingGroups.ts": { + "mtime": 1788614855.8582234, + "seen": 1791133977.6193783, + "ast_hash": "50e2e92d1428b4eacb9c21315de227ce", + "semantic_hash": "" + }, + "src/config/khanegiThemePresets.ts": { + "mtime": 1786352915.2122703, + "seen": 1791133977.6193798, + "ast_hash": "40385f7f94dd9e317b2e2c46deed52ec", + "semantic_hash": "" + }, + "src/config/numeric.ts": { + "mtime": 1786972105.4405568, + "seen": 1791133977.619381, + "ast_hash": "cd431f7af9e4b0d4a03be856ef78341e", + "semantic_hash": "" + }, + "src/config/superAdminSettingKeys.ts": { + "mtime": 1791015842.8300276, + "seen": 1791133977.6193826, + "ast_hash": "09d0079d23d5f15fd0cc137844a18540", + "semantic_hash": "" + }, + "src/layouts/AppLayout.vue": { + "mtime": 1788873083.8511343, + "seen": 1791133977.619384, + "ast_hash": "cd71c1876ad38c9bcfc15eaa31ef2151", + "semantic_hash": "" + }, + "src/main.ts": { + "mtime": 1786352915.2125874, + "seen": 1791133977.6193852, + "ast_hash": "ecb1b140df8f5c8250545a335fa47c9e", + "semantic_hash": "" + }, + "src/pages/AdminsPage.vue": { + "mtime": 1788873155.7517095, + "seen": 1791133977.6193867, + "ast_hash": "e5b4a807bdea957ba1ca0f21348d6a6c", + "semantic_hash": "" + }, + "src/pages/AuditPage.vue": { + "mtime": 1786352915.2129347, + "seen": 1791133977.6193879, + "ast_hash": "26848d52a3dbb5069aa54775acab8e85", + "semantic_hash": "" + }, + "src/pages/HamkarUiConfigPage.vue": { + "mtime": 1788873030.907565, + "seen": 1791133977.6193893, + "ast_hash": "51c4a855048ace46e1b37008827f0d47", + "semantic_hash": "" + }, + "src/pages/HomePage.vue": { + "mtime": 1788942596.4667015, + "seen": 1791133977.6193905, + "ast_hash": "5e73449136257e730f06538014d05850", + "semantic_hash": "" + }, + "src/pages/KhanegiModularUiConfigPage.vue": { + "mtime": 1788873133.2248478, + "seen": 1791133977.6193962, + "ast_hash": "43ae7cd439ddbd7206d5feae0a035808", + "semantic_hash": "" + }, + "src/pages/LoginPage.vue": { + "mtime": 1786352915.2136188, + "seen": 1791133977.6193972, + "ast_hash": "b629d53ac0df833f863c19f9d2eedc61", + "semantic_hash": "" + }, + "src/pages/PluginCatalogPage.vue": { + "mtime": 1788972334.617576, + "seen": 1791133977.619398, + "ast_hash": "12f79da56c91cd3b554b3eed346f1b63", + "semantic_hash": "" + }, + "src/pages/PluginPanelPage.vue": { + "mtime": 1788972326.03432, + "seen": 1791133977.6193993, + "ast_hash": "2b3a45073ef16ab7063785956b913d80", + "semantic_hash": "" + }, + "src/pages/PluginTenantPage.vue": { + "mtime": 1789554426.9246407, + "seen": 1791133977.6194007, + "ast_hash": "d23afb3fdde3aa701a3e02ad82bf73ef", + "semantic_hash": "" + }, + "src/pages/ProductVersionsPage.vue": { + "mtime": 1790177785.5642588, + "seen": 1791133977.6194022, + "ast_hash": "458e757f30b3fa12021205581741ce10", + "semantic_hash": "" + }, + "src/pages/ProgramSettingsPage.vue": { + "mtime": 1788873135.2695487, + "seen": 1791133977.6194036, + "ast_hash": "ec6a273ff3ff292f8e1fa07f21682518", + "semantic_hash": "" + }, + "src/pages/ServerPanelPage.vue": { + "mtime": 1788873043.5658474, + "seen": 1791133977.6194046, + "ast_hash": "426a0e93e52bfc2b588b28669a0d28fa", + "semantic_hash": "" + }, + "src/pages/ServerTenantPage.vue": { + "mtime": 1788873091.8089325, + "seen": 1791133977.619406, + "ast_hash": "7ae5ebd7cbdea8fde31ea4d78601a23e", + "semantic_hash": "" + }, + "src/pages/SmsPanelPage.vue": { + "mtime": 1788873043.5656607, + "seen": 1791133977.6194072, + "ast_hash": "696297a851fae528b55756f8590284ad", + "semantic_hash": "" + }, + "src/pages/SmsTenantPage.vue": { + "mtime": 1788873091.9305022, + "seen": 1791133977.6194084, + "ast_hash": "5dd4c6671629e829371c3d5b5dcb064f", + "semantic_hash": "" + }, + "src/pages/SupportPanelPage.vue": { + "mtime": 1788873042.5870128, + "seen": 1791133977.6194096, + "ast_hash": "ec2f46ea98eb15d7ab9fc84f91fdb5c0", + "semantic_hash": "" + }, + "src/pages/SupportTenantPage.vue": { + "mtime": 1788873155.5047865, + "seen": 1791133977.619411, + "ast_hash": "26119695bf9ae113f723761a96e9920c", + "semantic_hash": "" + }, + "src/pages/TenantFormPage.vue": { + "mtime": 1789626500.5020382, + "seen": 1791133977.6194122, + "ast_hash": "bdc1ad360c59703855dde8852bbdf182", + "semantic_hash": "" + }, + "src/pages/UiConfigPage.vue": { + "mtime": 1788873137.8165565, + "seen": 1791133977.6194139, + "ast_hash": "5fb5e68a4aae67c73c7320a0f302575f", + "semantic_hash": "" + }, + "src/router/index.ts": { + "mtime": 1788852471.4690886, + "seen": 1791133977.6194155, + "ast_hash": "550d87d0ccccb911ab2337a740ddf081", + "semantic_hash": "" + }, + "src/stores/auth.ts": { + "mtime": 1786377085.7914898, + "seen": 1791133977.6194167, + "ast_hash": "1ba25b41a49803e021a3973a752e3d25", + "semantic_hash": "" + }, + "src/theme/tokens.ts": { + "mtime": 1786352915.216459, + "seen": 1791133977.6194181, + "ast_hash": "ceecfc226cf4db2c5fe72fd57834f094", + "semantic_hash": "" + }, + "src/types/vue3-persian-datetime-picker.d.ts": { + "mtime": 1786352915.2166362, + "seen": 1791133977.6194193, + "ast_hash": "d6c63254beaf8e4cba21615c737081f6", + "semantic_hash": "" + }, + "src/utils/datetime.ts": { + "mtime": 1789550690.3410506, + "seen": 1791133977.6194208, + "ast_hash": "3f44d9ee7b87d32892366eafc03e89b6", + "semantic_hash": "" + }, + "src/utils/money.ts": { + "mtime": 1786352915.2169576, + "seen": 1791133977.619422, + "ast_hash": "3dd9ef861fcaa479a7ce3c6c5da2c6e3", + "semantic_hash": "" + }, + "src/utils/rewriteLegacyUploadUrl.ts": { + "mtime": 1788799101.6215806, + "seen": 1791133977.6194232, + "ast_hash": "da4e9d04bd43513e9644e8203cbc3819", + "semantic_hash": "" + }, + "src/vite-env.d.ts": { + "mtime": 1786352915.2170582, + "seen": 1791133977.6194243, + "ast_hash": "53ef1e204e58e29f9e328d6ddb0d5ef5", + "semantic_hash": "" + }, + "tsconfig.app.json": { + "mtime": 1786352915.2171595, + "seen": 1791133977.6194255, + "ast_hash": "d067e3ba63ec213fcec98b687b5e54e2", + "semantic_hash": "" + }, + "tsconfig.json": { + "mtime": 1786352915.2172534, + "seen": 1791133977.6194267, + "ast_hash": "a3d39fa780ebff65444de257f291ce6c", + "semantic_hash": "" + }, + "tsconfig.node.json": { + "mtime": 1787153734.3009675, + "seen": 1791133977.6194282, + "ast_hash": "308bb19a1eb06cf3481482994c5c7bd5", + "semantic_hash": "" + }, + "vite.config.ts": { + "mtime": 1786973481.403445, + "seen": 1791133977.6194293, + "ast_hash": "90a02fc0c5386c89adc80703c4344995", + "semantic_hash": "" + }, + "README.md": { + "mtime": 1786352915.1963446, + "seen": 1791133977.619431, + "ast_hash": "64ba9c1ddf7098960f302d6dcbd66522", + "semantic_hash": "" + }, + "index.html": { + "mtime": 1786352915.196795, + "seen": 1791133977.6194324, + "ast_hash": "4a22619d085cffe0062757a639d1636e", + "semantic_hash": "" + }, + "public/favicon.svg": { + "mtime": 1786352915.1975787, + "seen": 1791133977.6194336, + "ast_hash": "ddb1b57182207e652a01e2b0266df08e", + "semantic_hash": "" + }, + "public/icons.svg": { + "mtime": 1786352915.1977217, + "seen": 1791133977.619435, + "ast_hash": "3b4fcfcf393eca4d264dca4a4663bc37", + "semantic_hash": "" + } +} \ No newline at end of file diff --git a/src/components/LayoutVariantsEditor.vue b/src/components/LayoutVariantsEditor.vue new file mode 100644 index 0000000..44f4947 --- /dev/null +++ b/src/components/LayoutVariantsEditor.vue @@ -0,0 +1,329 @@ + + + + + diff --git a/src/config/defaultKhanegiUiConfig.ts b/src/config/defaultKhanegiUiConfig.ts index ad0bb46..1029512 100644 --- a/src/config/defaultKhanegiUiConfig.ts +++ b/src/config/defaultKhanegiUiConfig.ts @@ -1,3 +1,5 @@ +import { applyKhanegiLayoutVariants, createDefaultKhanegiLayoutVariants } from '@/config/khanegiLayoutVariants' + export type ThemeColors = { primary: string secondary: string @@ -112,6 +114,7 @@ export function createDefaultKhanegiUiConfig() { showProfile: true, brandSubtitle: 'پنل کاربری', }, + layoutVariants: createDefaultKhanegiLayoutVariants(), }, pages: {} as Record, } @@ -303,6 +306,7 @@ export function normalizeKhanegiUiConfigForClient> if (app.header && typeof app.header === 'object') { app.header.variant = 'default' } + applyKhanegiLayoutVariants(app) if (app.navigation && typeof app.navigation === 'object') { if (app.navigation.type === 'sidebar+bottom') app.navigation.type = 'both' app.navigation.sidebar = mapLegacyNavItems(app.navigation.sidebar) diff --git a/src/config/khanegiLayoutVariants.ts b/src/config/khanegiLayoutVariants.ts new file mode 100644 index 0000000..8611d2c --- /dev/null +++ b/src/config/khanegiLayoutVariants.ts @@ -0,0 +1,145 @@ +/** + * چیدمان المان‌های تم جدید. + * با controlpanel_server/src/get-user/khanegi-layout-variants.ts یکی بماند. + * variant شناسهٔ themeN است. جزئیات المان داخل options می‌ماند. + */ + +export const LAYOUT_VARIANT_ID = /^theme[1-9]\d*$/ +export const LAYOUT_OPTION_KEY = /^[a-zA-Z][a-zA-Z0-9_]*$/ + +export type LayoutThemeDef = { + id: string + label: string +} + +export type LayoutElementConfig = { + id: string + variant: string + options: Record +} + +export type KhanegiLayoutVariants = { + schemaId: 'layout-variants' + version: '1.0.0' + themes: LayoutThemeDef[] + header: LayoutElementConfig + footer: LayoutElementConfig + home: { + assets: LayoutElementConfig + livePrice: LayoutElementConfig + quickAccess: LayoutElementConfig + recentTransactions: LayoutElementConfig + [elementId: string]: LayoutElementConfig + } +} + +function isRecord(value: unknown): value is Record { + return Boolean(value) && typeof value === 'object' && !Array.isArray(value) +} + +export function isLayoutVariantId(value: unknown): value is string { + return typeof value === 'string' && LAYOUT_VARIANT_ID.test(value) +} + +export function nextLayoutThemeId(ids: string[]): string { + let n = 1 + const used = new Set(ids) + while (used.has(`theme${n}`)) n += 1 + return `theme${n}` +} + +function defaultThemes(): LayoutThemeDef[] { + return [ + { id: 'theme1', label: 'تم ۱' }, + { id: 'theme2', label: 'تم ۲' }, + ] +} + +function element(id: string): LayoutElementConfig { + return { id, variant: 'theme1', options: {} } +} + +export function mergeLayoutThemes(stored: unknown, usedIds: string[] = []): LayoutThemeDef[] { + const parsed: LayoutThemeDef[] = [] + const seen = new Set() + if (Array.isArray(stored)) { + for (const row of stored) { + if (!isRecord(row) || !isLayoutVariantId(row.id) || seen.has(row.id)) continue + seen.add(row.id) + const label = typeof row.label === 'string' && row.label.trim() + ? row.label.trim().slice(0, 40) + : row.id + parsed.push({ id: row.id, label }) + } + } + const list = parsed.length ? parsed : defaultThemes() + for (const id of usedIds) { + if (!isLayoutVariantId(id) || list.some((theme) => theme.id === id)) continue + list.push({ id, label: id }) + } + return list +} + +export function createDefaultKhanegiLayoutVariants(): KhanegiLayoutVariants { + return { + schemaId: 'layout-variants', + version: '1.0.0', + themes: defaultThemes(), + header: element('header'), + footer: element('footer'), + home: { + assets: element('assets'), + livePrice: element('livePrice'), + quickAccess: element('quickAccess'), + recentTransactions: element('recentTransactions'), + }, + } +} + +export function mergeLayoutElement(id: string, stored: unknown): LayoutElementConfig { + const base = element(id) + if (!isRecord(stored)) return base + const options = isRecord(stored.options) ? { ...stored.options } : {} + return { + ...stored, + id, + variant: isLayoutVariantId(stored.variant) ? stored.variant : 'theme1', + options, + } +} + +/** تم انتخاب‌شده و کلید options پاک نمی‌شود. فهرست تم خالی به تم ۱ و ۲ برمی‌گردد. */ +export function mergeKhanegiLayoutVariants(stored: unknown): KhanegiLayoutVariants { + const defaults = createDefaultKhanegiLayoutVariants() + const src = isRecord(stored) ? stored : {} + const homeSrc = isRecord(src.home) ? src.home : {} + const knownHome = Object.keys(defaults.home) + const home: KhanegiLayoutVariants['home'] = { ...defaults.home } + + for (const key of Object.keys(homeSrc)) { + if (knownHome.includes(key)) continue + home[key] = mergeLayoutElement(key, homeSrc[key]) + } + for (const key of knownHome) { + home[key] = mergeLayoutElement(key, homeSrc[key]) + } + + const header = mergeLayoutElement('header', src.header) + const footer = mergeLayoutElement('footer', src.footer) + const usedIds = [header.variant, footer.variant, ...Object.values(home).map((item) => item.variant)] + + return { + ...src, + schemaId: 'layout-variants', + version: '1.0.0', + themes: mergeLayoutThemes(src.themes, usedIds), + header, + footer, + home, + } +} + +export function applyKhanegiLayoutVariants(app: { layoutVariants?: unknown } | null | undefined) { + if (!app || typeof app !== 'object') return + app.layoutVariants = mergeKhanegiLayoutVariants(app.layoutVariants) +} diff --git a/src/pages/UiConfigPage.vue b/src/pages/UiConfigPage.vue index 5dfdf51..bbce5fe 100644 --- a/src/pages/UiConfigPage.vue +++ b/src/pages/UiConfigPage.vue @@ -4,6 +4,7 @@ import { useRoute, useRouter } from 'vue-router' import { message, Modal } from 'ant-design-vue' import { ArrowRightOutlined, HolderOutlined } from '@ant-design/icons-vue' import api from '@/api/http' +import LayoutVariantsEditor from '@/components/LayoutVariantsEditor.vue' import VersionPageTabs from '@/components/VersionPageTabs.vue' import { applyKhanegiNavSample, @@ -14,6 +15,7 @@ import { normalizeKhanegiUiConfigForClient, type KhanegiNavItem, } from '@/config/defaultKhanegiUiConfig' +import { applyKhanegiLayoutVariants } from '@/config/khanegiLayoutVariants' import { applyKhanegiPreset, khanegiThemePresets, @@ -260,6 +262,7 @@ function applyAdvancedJson() { config.defaultSnapshot = keepSnapshot } applySharedNavSample() + applyKhanegiLayoutVariants(config.app) ensureSchemes() selectedPreset.value = resolvePresetId(config) jsonError.value = '' @@ -312,6 +315,8 @@ async function load() { } } applySharedNavSample() + applyKhanegiLayoutVariants(config.app) + applyKhanegiLayoutVariants(config.defaultSnapshot?.app) ensureSchemes() if (!config.defaultSnapshot) { config.defaultSnapshot = cloneKhanegiAppSnapshot(config) @@ -418,6 +423,7 @@ function resetToDefault() { config.app = JSON.parse(JSON.stringify(snap.app)) config.pages = JSON.parse(JSON.stringify(snap.pages || {})) applySharedNavSample() + applyKhanegiLayoutVariants(config.app) ensureSchemes() selectedPreset.value = resolvePresetId(config) previewMode.value = config.app.theme.mode === 'light' ? 'light' : 'dark' @@ -740,6 +746,14 @@ onMounted(load) + + + +

برای pages و جزئیات کامل می‌توانید JSON را مستقیم ویرایش کنید.