jspsych-tangram 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3550,9 +3550,11 @@ function startPrepTrial(display_element, params, jsPsych) {
3550
3550
  layoutMode,
3551
3551
  requireAllSlots,
3552
3552
  quickstashMacros,
3553
+ primitiveOrder,
3553
3554
  onInteraction,
3554
3555
  onTrialEnd
3555
3556
  } = params;
3557
+ const PRIMITIVE_BLUEPRINTS_ORDERED = [...PRIMITIVE_BLUEPRINTS].sort((a, b) => primitiveOrder.indexOf(a.kind) - primitiveOrder.indexOf(b.kind));
3556
3558
  const prepSectors = Array.from({ length: numQuickstashSlots }, (_, i) => ({
3557
3559
  id: `prep-sector-${i}`,
3558
3560
  tangramId: `prep-sector-${i}`,
@@ -3566,7 +3568,7 @@ function startPrepTrial(display_element, params, jsPsych) {
3566
3568
  const handleControllerReady = (controller, layout, force) => {
3567
3569
  if (quickstashMacros && quickstashMacros.length > 0 && layout) {
3568
3570
  const primsByKind = /* @__PURE__ */ new Map();
3569
- PRIMITIVE_BLUEPRINTS.forEach((p) => primsByKind.set(p.kind, p));
3571
+ PRIMITIVE_BLUEPRINTS_ORDERED.forEach((p) => primsByKind.set(p.kind, p));
3570
3572
  quickstashMacros.forEach((anchorComposite, macroIndex) => {
3571
3573
  const sectorId = `prep-sector-${macroIndex}`;
3572
3574
  const compositeBlueprint = convertAnchorCompositeToPixels(
@@ -3623,7 +3625,7 @@ function startPrepTrial(display_element, params, jsPsych) {
3623
3625
  sectors: prepSectors,
3624
3626
  quickstash: [],
3625
3627
  // No pre-made macros
3626
- primitives: PRIMITIVE_BLUEPRINTS,
3628
+ primitives: PRIMITIVE_BLUEPRINTS_ORDERED,
3627
3629
  layout: layoutMode,
3628
3630
  target: "workspace",
3629
3631
  // Pieces go in sectors
@@ -3684,6 +3686,12 @@ const info = {
3684
3686
  default: [],
3685
3687
  description: "Array of AnchorComposite objects to edit as primitive pieces"
3686
3688
  },
3689
+ /** Array of primitive names in the order they should be displayed */
3690
+ primitive_order: {
3691
+ type: jspsych.ParameterType.OBJECT,
3692
+ default: ["square", "smalltriangle", "parallelogram", "medtriangle", "largetriangle"],
3693
+ description: "Array of primitive names in the order they should be displayed"
3694
+ },
3687
3695
  /** Callback fired after each interaction (optional analytics hook) */
3688
3696
  onInteraction: {
3689
3697
  type: jspsych.ParameterType.FUNCTION,
@@ -3734,6 +3742,7 @@ class TangramPrepPlugin {
3734
3742
  layoutMode: trial.layout,
3735
3743
  requireAllSlots: trial.require_all_slots,
3736
3744
  quickstashMacros: trial.quickstash_macros,
3745
+ primitiveOrder: trial.primitive_order,
3737
3746
  onInteraction: trial.onInteraction,
3738
3747
  onTrialEnd: wrappedOnTrialEnd
3739
3748
  };