juxscript 1.1.224 → 1.1.225

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.
@@ -172,13 +172,10 @@ export declare class DataFrameComponent extends BaseComponent<DataFrameState> {
172
172
  private _updateStatus;
173
173
  private _setDataFrame;
174
174
  /**
175
- * Append settings button to status bar
176
- */
177
- private _appendSettingsButton;
178
- /**
179
- * Update the collapsible summary text
175
+ * Update the collapsible summary text and add settings button
180
176
  */
181
177
  private _updateSummary;
178
+ private _appendSettingsButton;
182
179
  private _detectMalformedData;
183
180
  private _showReshapeModal;
184
181
  private _cleanupReshapeModal;
@@ -1 +1 @@
1
- {"version":3,"file":"dataframe.d.ts","sourceRoot":"","sources":["dataframe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dataframe.d.ts","sourceRoot":"","sources":["dataframe.ts"],"names":[],"mappings":"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"}
@@ -589,66 +589,112 @@ export class DataFrameComponent extends BaseComponent {
589
589
  const columnDefs = this._df.columns.map(col => ({ key: col, label: col }));
590
590
  this._table.columns(columnDefs).rows(this._df.toRows());
591
591
  }
592
+ const isMalformed = this._detectMalformedData(this._df);
592
593
  // ✅ Show the details element now that data is loaded
593
594
  if (this._collapsible && this._detailsElement) {
594
595
  this._detailsElement.style.display = '';
595
- this._updateSummary();
596
- }
597
- const isMalformed = this._detectMalformedData(this._df);
598
- // ✅ Update status with settings button
599
- if (isMalformed && this._rawFileData) {
600
- this._updateStatus(`${sourceName} — ${this._df.height} rows × ${this._df.width} cols`, 'warning');
601
- this._appendSettingsButton('Fix Import Settings', 'warning');
596
+ this._updateSummary(isMalformed);
602
597
  }
603
- else {
604
- this._updateStatus(`${sourceName} — ${this._df.height} rows × ${this._df.width} cols`, 'success');
605
- if (this._rawFileData) {
606
- this._appendSettingsButton('Import Settings', 'ghost');
598
+ // ✅ Update status (for non-collapsible mode)
599
+ if (!this._collapsible) {
600
+ if (isMalformed && this._rawFileData) {
601
+ this._updateStatus(`${sourceName} ${this._df.height} rows × ${this._df.width} cols`, 'warning');
602
+ this._appendSettingsButton('Fix Import Settings', 'warning');
603
+ }
604
+ else {
605
+ this._updateStatus(`${sourceName} — ${this._df.height} rows × ${this._df.width} cols`, 'success');
606
+ if (this._rawFileData) {
607
+ this._appendSettingsButton('Import Settings', 'ghost');
608
+ }
607
609
  }
608
610
  }
609
- this._triggerCallback('load', this._df, null, this);
610
- }
611
- /**
612
- * Append settings button to status bar
613
- */
614
- _appendSettingsButton(label, variant) {
615
- requestAnimationFrame(() => {
611
+ else {
612
+ // ✅ For collapsible mode, hide the status bar
616
613
  const statusEl = document.getElementById(`${this._id}-status`);
617
614
  if (statusEl) {
618
- const settingsBtn = document.createElement('button');
619
- settingsBtn.textContent = label;
620
- settingsBtn.className = `jux-button jux-button-sm jux-button-${variant}`;
621
- settingsBtn.style.marginLeft = '0.5rem';
622
- settingsBtn.addEventListener('click', () => this._showReshapeModal());
623
- statusEl.appendChild(settingsBtn);
615
+ statusEl.style.display = 'none';
624
616
  }
625
- });
617
+ }
618
+ this._triggerCallback('load', this._df, null, this);
626
619
  }
627
620
  /**
628
- * Update the collapsible summary text
621
+ * Update the collapsible summary text and add settings button
629
622
  */
630
- _updateSummary() {
623
+ _updateSummary(isMalformed) {
631
624
  if (!this._collapsible || !this._detailsElement)
632
625
  return;
633
- const summaryTextEl = this._detailsElement.querySelector('.jux-dataframe-summary-text');
634
- if (!summaryTextEl)
635
- return;
636
- if (!this._df) {
637
- // Don't show anything if no data
626
+ const summaryEl = this._detailsElement.querySelector('.jux-dataframe-summary');
627
+ if (!summaryEl)
638
628
  return;
629
+ // Get or detect malformed status
630
+ const malformed = isMalformed ?? (this._df ? this._detectMalformedData(this._df) : false);
631
+ // Update text
632
+ const summaryTextEl = summaryEl.querySelector('.jux-dataframe-summary-text');
633
+ if (summaryTextEl) {
634
+ if (!this._df) {
635
+ summaryTextEl.textContent = 'No data loaded';
636
+ }
637
+ else if (this._summaryTemplate) {
638
+ summaryTextEl.textContent = this._summaryTemplate(this._df);
639
+ }
640
+ else {
641
+ const suffix = malformed ? ' ⚠️' : '';
642
+ summaryTextEl.textContent = `${this.state.sourceName || 'Data'} — ${this._df.height} rows × ${this._df.width} cols${suffix}`;
643
+ }
639
644
  }
640
- if (this._summaryTemplate) {
641
- summaryTextEl.textContent = this._summaryTemplate(this._df);
645
+ // ✅ Add settings button to summary if we have raw file data
646
+ let settingsBtn = summaryEl.querySelector('.jux-dataframe-summary-settings');
647
+ if (this._rawFileData && this._df) {
648
+ if (!settingsBtn) {
649
+ settingsBtn = document.createElement('button');
650
+ settingsBtn.className = 'jux-dataframe-summary-settings';
651
+ settingsBtn.type = 'button';
652
+ settingsBtn.addEventListener('click', (e) => {
653
+ e.stopPropagation(); // Don't toggle the details
654
+ this._showReshapeModal();
655
+ });
656
+ summaryEl.appendChild(settingsBtn);
657
+ }
658
+ // Update button text/style based on malformed status
659
+ if (malformed) {
660
+ settingsBtn.textContent = '⚙️ Fix Settings';
661
+ settingsBtn.className = 'jux-dataframe-summary-settings jux-dataframe-summary-settings-warning';
662
+ }
663
+ else {
664
+ settingsBtn.textContent = '⚙️ Settings';
665
+ settingsBtn.className = 'jux-dataframe-summary-settings';
666
+ }
642
667
  }
643
- else {
644
- const isMalformed = this._detectMalformedData(this._df);
645
- const suffix = isMalformed ? ' ⚠️' : '';
646
- summaryTextEl.textContent = `${this.state.sourceName || 'Data'} — ${this._df.height} rows × ${this._df.width} cols${suffix}`;
668
+ else if (settingsBtn) {
669
+ // Remove settings button if no raw file data
670
+ settingsBtn.remove();
647
671
  }
648
672
  }
649
673
  /* ═══════════════════════════════════════════════════
650
674
  * MALFORMED DATA DETECTION
651
675
  * ═══════════════════════════════════════════════════ */
676
+ _appendSettingsButton(label, variant) {
677
+ const statusEl = document.getElementById(`${this._id}-status`);
678
+ if (!statusEl)
679
+ return;
680
+ // Remove existing settings button if any
681
+ const existing = statusEl.querySelector('.jux-dataframe-settings-btn');
682
+ if (existing)
683
+ existing.remove();
684
+ const btn = document.createElement('button');
685
+ btn.className = `jux-dataframe-settings-btn jux-dataframe-settings-btn-${variant}`;
686
+ btn.type = 'button';
687
+ btn.textContent = `⚙️ ${label}`;
688
+ btn.style.marginLeft = '8px';
689
+ btn.style.cursor = 'pointer';
690
+ btn.style.fontSize = '0.8rem';
691
+ btn.style.padding = '2px 8px';
692
+ btn.style.borderRadius = 'var(--radius, 4px)';
693
+ btn.style.border = '1px solid hsl(var(--border))';
694
+ btn.style.background = variant === 'warning' ? 'hsl(38 92% 50% / 0.15)' : 'transparent';
695
+ btn.addEventListener('click', () => this._showReshapeModal());
696
+ statusEl.appendChild(btn);
697
+ }
652
698
  _detectMalformedData(df) {
653
699
  const columns = df.columns;
654
700
  const rows = df.toRows();
@@ -1071,18 +1117,21 @@ export class DataFrameComponent extends BaseComponent {
1071
1117
  await this._handleFile(files[0]);
1072
1118
  });
1073
1119
  };
1120
+ const uploadRow = document.createElement('div');
1121
+ uploadRow.className = 'jux-dataframe-upload-row';
1074
1122
  const uploadContainer = document.createElement('div');
1075
1123
  uploadContainer.className = 'jux-dataframe-upload';
1076
1124
  uploadContainer.id = `${this._id}-upload-container`;
1077
- uploadArea.appendChild(uploadContainer);
1078
- // ✅ Status bar INLINE with upload (inside upload area)
1125
+ uploadRow.appendChild(uploadContainer);
1126
+ // ✅ Status bar INLINE in the same row
1079
1127
  if (this._showStatus) {
1080
1128
  const statusBar = document.createElement('div');
1081
- statusBar.className = 'jux-dataframe-status jux-dataframe-status-empty';
1129
+ statusBar.className = 'jux-dataframe-status jux-dataframe-status-inline';
1082
1130
  statusBar.id = `${this._id}-status`;
1083
1131
  statusBar.style.display = 'none'; // Hidden until needed
1084
- uploadArea.appendChild(statusBar);
1132
+ uploadRow.appendChild(statusBar);
1085
1133
  }
1134
+ uploadArea.appendChild(uploadRow);
1086
1135
  if (this._uploadDescription) {
1087
1136
  const descEl = document.createElement('div');
1088
1137
  descEl.className = 'jux-dataframe-upload-description';
@@ -1095,7 +1144,7 @@ export class DataFrameComponent extends BaseComponent {
1095
1144
  }
1096
1145
  else {
1097
1146
  container.appendChild(wrapper);
1098
- // Status bar for non-upload mode
1147
+ // Status bar for non-upload mode
1099
1148
  if (this._showStatus) {
1100
1149
  const statusBar = document.createElement('div');
1101
1150
  statusBar.className = 'jux-dataframe-status jux-dataframe-status-empty';
@@ -1110,7 +1159,7 @@ export class DataFrameComponent extends BaseComponent {
1110
1159
  const details = document.createElement('details');
1111
1160
  details.className = 'jux-dataframe-details';
1112
1161
  details.open = !this._collapsed;
1113
- details.style.display = 'none'; // Hidden until data loads
1162
+ details.style.display = 'none'; // Hidden until data loads
1114
1163
  this._detailsElement = details;
1115
1164
  const summary = document.createElement('summary');
1116
1165
  summary.className = 'jux-dataframe-summary';
@@ -1120,7 +1169,6 @@ export class DataFrameComponent extends BaseComponent {
1120
1169
  summary.appendChild(chevron);
1121
1170
  const textSpan = document.createElement('span');
1122
1171
  textSpan.className = 'jux-dataframe-summary-text';
1123
- // Don't set text - will be set when data loads
1124
1172
  summary.appendChild(textSpan);
1125
1173
  details.appendChild(summary);
1126
1174
  const content = document.createElement('div');
@@ -710,28 +710,36 @@ export class DataFrameComponent extends BaseComponent<DataFrameState> {
710
710
  this._table.columns(columnDefs).rows(this._df.toRows());
711
711
  }
712
712
 
713
+ const isMalformed = this._detectMalformedData(this._df!);
714
+
713
715
  // ✅ Show the details element now that data is loaded
714
716
  if (this._collapsible && this._detailsElement) {
715
717
  this._detailsElement.style.display = '';
716
- this._updateSummary();
718
+ this._updateSummary(isMalformed);
717
719
  }
718
720
 
719
- const isMalformed = this._detectMalformedData(this._df!);
720
-
721
- // Update status with settings button
722
- if (isMalformed && this._rawFileData) {
723
- this._updateStatus(
724
- `${sourceName} — ${this._df!.height} rows × ${this._df!.width} cols`,
725
- 'warning'
726
- );
727
- this._appendSettingsButton('Fix Import Settings', 'warning');
721
+ // Update status (for non-collapsible mode)
722
+ if (!this._collapsible) {
723
+ if (isMalformed && this._rawFileData) {
724
+ this._updateStatus(
725
+ `${sourceName} — ${this._df!.height} rows × ${this._df!.width} cols`,
726
+ 'warning'
727
+ );
728
+ this._appendSettingsButton('Fix Import Settings', 'warning');
729
+ } else {
730
+ this._updateStatus(
731
+ `${sourceName} — ${this._df!.height} rows × ${this._df!.width} cols`,
732
+ 'success'
733
+ );
734
+ if (this._rawFileData) {
735
+ this._appendSettingsButton('Import Settings', 'ghost');
736
+ }
737
+ }
728
738
  } else {
729
- this._updateStatus(
730
- `${sourceName} ${this._df!.height} rows × ${this._df!.width} cols`,
731
- 'success'
732
- );
733
- if (this._rawFileData) {
734
- this._appendSettingsButton('Import Settings', 'ghost');
739
+ // ✅ For collapsible mode, hide the status bar
740
+ const statusEl = document.getElementById(`${this._id}-status`);
741
+ if (statusEl) {
742
+ statusEl.style.display = 'none';
735
743
  }
736
744
  }
737
745
 
@@ -739,42 +747,56 @@ export class DataFrameComponent extends BaseComponent<DataFrameState> {
739
747
  }
740
748
 
741
749
  /**
742
- * Append settings button to status bar
743
- */
744
- private _appendSettingsButton(label: string, variant: 'warning' | 'ghost'): void {
745
- requestAnimationFrame(() => {
746
- const statusEl = document.getElementById(`${this._id}-status`);
747
- if (statusEl) {
748
- const settingsBtn = document.createElement('button');
749
- settingsBtn.textContent = label;
750
- settingsBtn.className = `jux-button jux-button-sm jux-button-${variant}`;
751
- settingsBtn.style.marginLeft = '0.5rem';
752
- settingsBtn.addEventListener('click', () => this._showReshapeModal());
753
- statusEl.appendChild(settingsBtn);
754
- }
755
- });
756
- }
757
-
758
- /**
759
- * Update the collapsible summary text
750
+ * Update the collapsible summary text and add settings button
760
751
  */
761
- private _updateSummary(): void {
752
+ private _updateSummary(isMalformed?: boolean): void {
762
753
  if (!this._collapsible || !this._detailsElement) return;
763
754
 
764
- const summaryTextEl = this._detailsElement.querySelector('.jux-dataframe-summary-text');
765
- if (!summaryTextEl) return;
755
+ const summaryEl = this._detailsElement.querySelector('.jux-dataframe-summary');
756
+ if (!summaryEl) return;
766
757
 
767
- if (!this._df) {
768
- // Don't show anything if no data
769
- return;
758
+ // Get or detect malformed status
759
+ const malformed = isMalformed ?? (this._df ? this._detectMalformedData(this._df) : false);
760
+
761
+ // Update text
762
+ const summaryTextEl = summaryEl.querySelector('.jux-dataframe-summary-text');
763
+ if (summaryTextEl) {
764
+ if (!this._df) {
765
+ summaryTextEl.textContent = 'No data loaded';
766
+ } else if (this._summaryTemplate) {
767
+ summaryTextEl.textContent = this._summaryTemplate(this._df);
768
+ } else {
769
+ const suffix = malformed ? ' ⚠️' : '';
770
+ summaryTextEl.textContent = `${this.state.sourceName || 'Data'} — ${this._df.height} rows × ${this._df.width} cols${suffix}`;
771
+ }
770
772
  }
771
773
 
772
- if (this._summaryTemplate) {
773
- summaryTextEl.textContent = this._summaryTemplate(this._df);
774
- } else {
775
- const isMalformed = this._detectMalformedData(this._df);
776
- const suffix = isMalformed ? ' ⚠️' : '';
777
- summaryTextEl.textContent = `${this.state.sourceName || 'Data'} — ${this._df.height} rows × ${this._df.width} cols${suffix}`;
774
+ // ✅ Add settings button to summary if we have raw file data
775
+ let settingsBtn = summaryEl.querySelector('.jux-dataframe-summary-settings') as HTMLButtonElement;
776
+
777
+ if (this._rawFileData && this._df) {
778
+ if (!settingsBtn) {
779
+ settingsBtn = document.createElement('button');
780
+ settingsBtn.className = 'jux-dataframe-summary-settings';
781
+ settingsBtn.type = 'button';
782
+ settingsBtn.addEventListener('click', (e) => {
783
+ e.stopPropagation(); // Don't toggle the details
784
+ this._showReshapeModal();
785
+ });
786
+ summaryEl.appendChild(settingsBtn);
787
+ }
788
+
789
+ // Update button text/style based on malformed status
790
+ if (malformed) {
791
+ settingsBtn.textContent = '⚙️ Fix Settings';
792
+ settingsBtn.className = 'jux-dataframe-summary-settings jux-dataframe-summary-settings-warning';
793
+ } else {
794
+ settingsBtn.textContent = '⚙️ Settings';
795
+ settingsBtn.className = 'jux-dataframe-summary-settings';
796
+ }
797
+ } else if (settingsBtn) {
798
+ // Remove settings button if no raw file data
799
+ settingsBtn.remove();
778
800
  }
779
801
  }
780
802
 
@@ -782,6 +804,29 @@ export class DataFrameComponent extends BaseComponent<DataFrameState> {
782
804
  * MALFORMED DATA DETECTION
783
805
  * ═══════════════════════════════════════════════════ */
784
806
 
807
+ private _appendSettingsButton(label: string, variant: string): void {
808
+ const statusEl = document.getElementById(`${this._id}-status`);
809
+ if (!statusEl) return;
810
+
811
+ // Remove existing settings button if any
812
+ const existing = statusEl.querySelector('.jux-dataframe-settings-btn');
813
+ if (existing) existing.remove();
814
+
815
+ const btn = document.createElement('button');
816
+ btn.className = `jux-dataframe-settings-btn jux-dataframe-settings-btn-${variant}`;
817
+ btn.type = 'button';
818
+ btn.textContent = `⚙️ ${label}`;
819
+ btn.style.marginLeft = '8px';
820
+ btn.style.cursor = 'pointer';
821
+ btn.style.fontSize = '0.8rem';
822
+ btn.style.padding = '2px 8px';
823
+ btn.style.borderRadius = 'var(--radius, 4px)';
824
+ btn.style.border = '1px solid hsl(var(--border))';
825
+ btn.style.background = variant === 'warning' ? 'hsl(38 92% 50% / 0.15)' : 'transparent';
826
+ btn.addEventListener('click', () => this._showReshapeModal());
827
+ statusEl.appendChild(btn);
828
+ }
829
+
785
830
  private _detectMalformedData(df: DataFrame): boolean {
786
831
  const columns = df.columns;
787
832
  const rows = df.toRows();
@@ -1259,20 +1304,25 @@ export class DataFrameComponent extends BaseComponent<DataFrameState> {
1259
1304
  });
1260
1305
  };
1261
1306
 
1307
+ const uploadRow = document.createElement('div');
1308
+ uploadRow.className = 'jux-dataframe-upload-row';
1309
+
1262
1310
  const uploadContainer = document.createElement('div');
1263
1311
  uploadContainer.className = 'jux-dataframe-upload';
1264
1312
  uploadContainer.id = `${this._id}-upload-container`;
1265
- uploadArea.appendChild(uploadContainer);
1313
+ uploadRow.appendChild(uploadContainer);
1266
1314
 
1267
- // ✅ Status bar INLINE with upload (inside upload area)
1315
+ // ✅ Status bar INLINE in the same row
1268
1316
  if (this._showStatus) {
1269
1317
  const statusBar = document.createElement('div');
1270
- statusBar.className = 'jux-dataframe-status jux-dataframe-status-empty';
1318
+ statusBar.className = 'jux-dataframe-status jux-dataframe-status-inline';
1271
1319
  statusBar.id = `${this._id}-status`;
1272
1320
  statusBar.style.display = 'none'; // Hidden until needed
1273
- uploadArea.appendChild(statusBar);
1321
+ uploadRow.appendChild(statusBar);
1274
1322
  }
1275
1323
 
1324
+ uploadArea.appendChild(uploadRow);
1325
+
1276
1326
  if (this._uploadDescription) {
1277
1327
  const descEl = document.createElement('div');
1278
1328
  descEl.className = 'jux-dataframe-upload-description';
@@ -1286,7 +1336,7 @@ export class DataFrameComponent extends BaseComponent<DataFrameState> {
1286
1336
  } else {
1287
1337
  container.appendChild(wrapper);
1288
1338
 
1289
- // Status bar for non-upload mode
1339
+ // Status bar for non-upload mode
1290
1340
  if (this._showStatus) {
1291
1341
  const statusBar = document.createElement('div');
1292
1342
  statusBar.className = 'jux-dataframe-status jux-dataframe-status-empty';
@@ -1303,7 +1353,7 @@ export class DataFrameComponent extends BaseComponent<DataFrameState> {
1303
1353
  const details = document.createElement('details');
1304
1354
  details.className = 'jux-dataframe-details';
1305
1355
  details.open = !this._collapsed;
1306
- details.style.display = 'none'; // Hidden until data loads
1356
+ details.style.display = 'none'; // Hidden until data loads
1307
1357
  this._detailsElement = details;
1308
1358
 
1309
1359
  const summary = document.createElement('summary');
@@ -1316,7 +1366,6 @@ export class DataFrameComponent extends BaseComponent<DataFrameState> {
1316
1366
 
1317
1367
  const textSpan = document.createElement('span');
1318
1368
  textSpan.className = 'jux-dataframe-summary-text';
1319
- // Don't set text - will be set when data loads
1320
1369
  summary.appendChild(textSpan);
1321
1370
 
1322
1371
  details.appendChild(summary);
@@ -916,6 +916,36 @@ code {
916
916
  flex: 1;
917
917
  }
918
918
 
919
+ /* ✅ Settings button in summary */
920
+ .jux-dataframe-summary-settings {
921
+ padding: 0.25rem 0.5rem;
922
+ font-size: 0.75rem;
923
+ font-weight: 500;
924
+ border: 1px solid hsl(var(--border));
925
+ border-radius: calc(var(--radius) - 2px);
926
+ background: hsl(var(--background));
927
+ color: hsl(var(--muted-foreground));
928
+ cursor: pointer;
929
+ transition: all 0.15s;
930
+ margin-left: auto;
931
+ }
932
+
933
+ .jux-dataframe-summary-settings:hover {
934
+ background: hsl(var(--accent));
935
+ color: hsl(var(--foreground));
936
+ border-color: hsl(var(--muted-foreground) / 0.3);
937
+ }
938
+
939
+ .jux-dataframe-summary-settings-warning {
940
+ background: hsl(var(--warning) / 0.1);
941
+ border-color: hsl(var(--warning) / 0.3);
942
+ color: hsl(var(--warning-foreground));
943
+ }
944
+
945
+ .jux-dataframe-summary-settings-warning:hover {
946
+ background: hsl(var(--warning) / 0.2);
947
+ }
948
+
919
949
  .jux-dataframe-details-content {
920
950
  padding: 0;
921
951
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "juxscript",
3
- "version": "1.1.224",
3
+ "version": "1.1.225",
4
4
  "type": "module",
5
5
  "description": "A JavaScript UX authorship platform",
6
6
  "main": "index.js",