All files / src/components/script/events scriptEventFormFields.tsx

75% Statements 12/16
36.23% Branches 25/69
50% Functions 2/4
73.33% Lines 11/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 741x             1x             1x 1x 1x 1x                             1x 1x 1x                                       1x                 1x                    
import React from "react";
import type { ScriptEventDef } from "lib/scriptEventsHandlers/handlerTypes";
import type {
  ScriptEventFieldSchema,
  ScriptNormalized,
} from "shared/lib/entities/entitiesTypes";
 
export const getScriptEventFields = (
  command: string,
  value: { customEventId?: string; engineFieldKey?: string },
  customEvents: Record<string, ScriptNormalized>,
  scriptEventDefs: Record<string, ScriptEventDef>,
) => {
  const eventCommands =
    (scriptEventDefs[command] && scriptEventDefs[command]?.fields) || [];
  Eif (value.customEventId && customEvents[value.customEventId]) {
    const customEvent = customEvents[value.customEventId];
    const description = customEvent?.description
      ? [
          {
            label: customEvent.description
              .split("\n")
              .map((text, index) => (
                <div key={index}>{text || <div>&nbsp;</div>}</div>
              )),
          },
          {
            type: "break",
          },
        ]
      : [];
    const usedVariables =
      Object.values(customEvent?.variables || []).map((v) => {
        Eif (v?.passByReference === "array") {
          return {
            label: `${v.name || ""}[${v.length}]`,
            key: `$variable[${v.id || ""}]$`,
            type: "variable",
            defaultValue: "LAST_VARIABLE",
            variableType: "arrayReference",
            arrayLength: v.length,
          } satisfies ScriptEventFieldSchema;
        }
        return {
          label: `${v?.name || ""}`,
          key: `$variable[${v?.id || ""}]$`,
          type: "value",
          defaultValue: {
            type: "variable",
            value: "LAST_VARIABLE",
          },
        };
      }) || [];
    const usedActors =
      Object.values(customEvent?.actors || []).map((a) => {
        return {
          label: `${a?.name || ""}`,
          defaultValue: "player",
          key: `$actor[${a?.id || ""}]$`,
          type: "actor",
        };
      }) || [];
 
    return ([] as ScriptEventFieldSchema[]).concat(
      eventCommands,
      description,
      usedVariables,
      usedActors,
    );
  }
 
  return eventCommands;
};