Grabbed dndbeyond's source code
``` ~/go/bin/sourcemapper -output ddb -jsurl https://media.dndbeyond.com/character-app/static/js/main.90aa78c5.js ```
This commit is contained in:
@@ -0,0 +1,203 @@
|
||||
import {
|
||||
BaseInventoryContract,
|
||||
Hack__BaseCharClass,
|
||||
FeatDetailsContract,
|
||||
RacialTraitContract,
|
||||
ClassFeatureUtils,
|
||||
ClassUtils,
|
||||
Constants,
|
||||
DataOriginRef,
|
||||
DataOriginRefData,
|
||||
DataOriginUtils,
|
||||
FeatUtils,
|
||||
ItemUtils,
|
||||
RacialTraitUtils,
|
||||
DataOrigin,
|
||||
Spell,
|
||||
SpellUtils,
|
||||
ClassFeatureContract,
|
||||
} from "@dndbeyond/character-rules-engine/es";
|
||||
|
||||
import { PaneIdentifierUtils } from "~/tools/js/Shared/utils";
|
||||
|
||||
import {
|
||||
PaneComponentEnum,
|
||||
PaneComponentInfo,
|
||||
PaneComponentProperties,
|
||||
PaneIdentifiers,
|
||||
} from "../types";
|
||||
|
||||
// List any full width panes
|
||||
const fullWidthPanes = [PaneComponentEnum.CHARACTER_MANAGE];
|
||||
|
||||
// Check to see if pane is in the list
|
||||
const isFullWidthPane = (activeEntry: PaneComponentInfo | null) =>
|
||||
activeEntry?.type && fullWidthPanes.includes(activeEntry.type);
|
||||
|
||||
// List any forced dark mode panes
|
||||
const darkModePanes = [PaneComponentEnum.CHARACTER_MANAGE];
|
||||
|
||||
// Check to see if pane is in the list
|
||||
const forceDarkMode = (activeEntry: PaneComponentInfo | null) =>
|
||||
activeEntry?.type && darkModePanes.includes(activeEntry.type);
|
||||
|
||||
// Return optional pane props
|
||||
export const getPaneProperties = (
|
||||
activeEntry: PaneComponentInfo | null
|
||||
): PaneComponentProperties => {
|
||||
const props: PaneComponentProperties = {
|
||||
isFullWidth: isFullWidthPane(activeEntry) ?? false,
|
||||
forceDarkMode: forceDarkMode(activeEntry) ?? false,
|
||||
};
|
||||
|
||||
return { ...props };
|
||||
};
|
||||
|
||||
export function getSpellComponentInfo(spell: Spell): PaneComponentInfo {
|
||||
let dataOrigin = SpellUtils.getDataOrigin(spell);
|
||||
let dataOriginType = SpellUtils.getDataOriginType(spell);
|
||||
|
||||
let type: PaneComponentEnum = PaneComponentEnum.CHARACTER_SPELL_DETAIL;
|
||||
let identifiers: PaneIdentifiers | null = null;
|
||||
|
||||
const mappingId = SpellUtils.getMappingId(spell);
|
||||
if (mappingId !== null) {
|
||||
if (dataOriginType === Constants.DataOriginTypeEnum.CLASS) {
|
||||
type = PaneComponentEnum.CLASS_SPELL_DETAIL;
|
||||
identifiers = PaneIdentifierUtils.generateClassSpell(
|
||||
ClassUtils.getMappingId(dataOrigin.primary as Hack__BaseCharClass),
|
||||
mappingId
|
||||
);
|
||||
} else {
|
||||
identifiers = PaneIdentifierUtils.generateCharacterSpell(mappingId);
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
type,
|
||||
identifiers,
|
||||
};
|
||||
}
|
||||
|
||||
export function getDataOriginComponentInfo(
|
||||
dataOrigin: DataOrigin
|
||||
): PaneComponentInfo {
|
||||
let type: PaneComponentEnum = PaneComponentEnum.ERROR_404;
|
||||
let identifiers: PaneIdentifiers | null = null;
|
||||
switch (dataOrigin.type) {
|
||||
case Constants.DataOriginTypeEnum.ITEM:
|
||||
type = PaneComponentEnum.ITEM_DETAIL;
|
||||
identifiers = PaneIdentifierUtils.generateItem(
|
||||
ItemUtils.getMappingId(dataOrigin.primary as BaseInventoryContract)
|
||||
);
|
||||
break;
|
||||
|
||||
case Constants.DataOriginTypeEnum.CLASS_FEATURE:
|
||||
type = PaneComponentEnum.CLASS_FEATURE_DETAIL;
|
||||
identifiers = PaneIdentifierUtils.generateClassFeature(
|
||||
ClassFeatureUtils.getId(dataOrigin.primary as ClassFeatureContract),
|
||||
ClassUtils.getMappingId(dataOrigin.parent as Hack__BaseCharClass)
|
||||
);
|
||||
break;
|
||||
|
||||
case Constants.DataOriginTypeEnum.RACE:
|
||||
type = PaneComponentEnum.SPECIES_TRAIT_DETAIL;
|
||||
identifiers = PaneIdentifierUtils.generateRacialTrait(
|
||||
RacialTraitUtils.getId(dataOrigin.primary as RacialTraitContract)
|
||||
);
|
||||
break;
|
||||
|
||||
case Constants.DataOriginTypeEnum.FEAT:
|
||||
type = PaneComponentEnum.FEAT_DETAIL;
|
||||
identifiers = PaneIdentifierUtils.generateFeat(
|
||||
FeatUtils.getId(dataOrigin.primary as FeatDetailsContract)
|
||||
);
|
||||
break;
|
||||
|
||||
case Constants.DataOriginTypeEnum.BACKGROUND:
|
||||
type = PaneComponentEnum.BACKGROUND;
|
||||
break;
|
||||
|
||||
case Constants.DataOriginTypeEnum.FEAT_LIST:
|
||||
if (dataOrigin.parentType === Constants.DataOriginTypeEnum.BACKGROUND) {
|
||||
type = PaneComponentEnum.BACKGROUND;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
// Not implemented
|
||||
}
|
||||
|
||||
return {
|
||||
type,
|
||||
identifiers,
|
||||
};
|
||||
}
|
||||
|
||||
export function getDataOriginRefComponentInfo(
|
||||
ref: DataOriginRef,
|
||||
refData: DataOriginRefData
|
||||
): PaneComponentInfo {
|
||||
let type: PaneComponentEnum = PaneComponentEnum.ERROR_404;
|
||||
let identifiers: PaneIdentifiers | null = null;
|
||||
|
||||
switch (ref.type) {
|
||||
case Constants.DataOriginTypeEnum.ITEM: {
|
||||
const primary = DataOriginUtils.getRefPrimary(ref, refData);
|
||||
if (primary !== null) {
|
||||
type = PaneComponentEnum.ITEM_DETAIL;
|
||||
identifiers = PaneIdentifierUtils.generateItem(
|
||||
ItemUtils.getMappingId(primary)
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case Constants.DataOriginTypeEnum.CLASS_FEATURE: {
|
||||
const primary = DataOriginUtils.getRefPrimary(ref, refData);
|
||||
const parent = DataOriginUtils.getRefParent(ref, refData);
|
||||
if (primary !== null && parent !== null) {
|
||||
type = PaneComponentEnum.CLASS_FEATURE_DETAIL;
|
||||
identifiers = PaneIdentifierUtils.generateClassFeature(
|
||||
ClassFeatureUtils.getId(primary),
|
||||
ClassUtils.getMappingId(parent)
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case Constants.DataOriginTypeEnum.RACE: {
|
||||
const primary = DataOriginUtils.getRefPrimary(ref, refData);
|
||||
if (primary !== null) {
|
||||
type = PaneComponentEnum.SPECIES_TRAIT_DETAIL;
|
||||
identifiers = PaneIdentifierUtils.generateRacialTrait(
|
||||
RacialTraitUtils.getId(primary)
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case Constants.DataOriginTypeEnum.FEAT: {
|
||||
const primary = DataOriginUtils.getRefPrimary(ref, refData);
|
||||
if (primary !== null) {
|
||||
type = PaneComponentEnum.FEAT_DETAIL;
|
||||
identifiers = PaneIdentifierUtils.generateFeat(
|
||||
FeatUtils.getId(primary)
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case Constants.DataOriginTypeEnum.BACKGROUND:
|
||||
type = PaneComponentEnum.BACKGROUND;
|
||||
break;
|
||||
|
||||
default:
|
||||
// Not implemented
|
||||
}
|
||||
|
||||
return {
|
||||
type,
|
||||
identifiers,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user