@airtable/blocks 0.0.0-experimental-28533a19d-20251016 → 0.0.0-experimental-e7419444f-20251120

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.
@@ -1,7 +1,7 @@
1
1
  /** @module @airtable/blocks/models: Record */ /** */
2
2
 
3
- import { RecordCore, WatchableRecordKeysCore } from '../../shared/models/record_core';
4
- import { isEnumValue, isObjectEmpty } from '../../shared/private_utils';
3
+ import { RecordCore, WatchableCellValueInFieldKeyPrefix, WatchableRecordKeysCore } from '../../shared/models/record_core';
4
+ import { isEnumValue } from '../../shared/private_utils';
5
5
  import { invariant } from '../../shared/error_utils';
6
6
  import colorUtils from '../../shared/color_utils';
7
7
  import LinkedRecordsQueryResult from './linked_records_query_result';
@@ -11,11 +11,9 @@ const WatchableRecordKeys = Object.freeze({
11
11
  ...WatchableRecordKeysCore,
12
12
  commentCount: 'commentCount'
13
13
  });
14
- // TODO: load cell values in field when this is watched? This will
15
- // cause the CellRenderer component to load cell values, which seems okay,
16
- // but needs a little more thought.
17
- const WatchableCellValueInFieldKeyPrefix = 'cellValueInField:';
18
- // TODO: load view data when this is watched. see previous comment.
14
+
15
+ // TODO: Should we load view data when this is watched?
16
+ // See comment on WatchableCellValueInFieldKeyPrefix.
19
17
  const WatchableColorInViewKeyPrefix = 'colorInView:';
20
18
  /**
21
19
  * Any key within record that can be watched:
@@ -210,14 +208,8 @@ class Record extends RecordCore {
210
208
  __triggerOnChangeForDirtyPaths(dirtyPaths) {
211
209
  super.__triggerOnChangeForDirtyPaths(dirtyPaths);
212
210
  const {
213
- cellValuesByFieldId,
214
211
  commentCount
215
212
  } = dirtyPaths;
216
- if (cellValuesByFieldId && !isObjectEmpty(cellValuesByFieldId)) {
217
- for (const fieldId of Object.keys(cellValuesByFieldId)) {
218
- this._onChange(WatchableCellValueInFieldKeyPrefix + fieldId, fieldId);
219
- }
220
- }
221
213
  if (commentCount) {
222
214
  this._onChange(WatchableRecordKeys.commentCount);
223
215
  }
@@ -1,5 +1,6 @@
1
1
  import { spawnError } from '../../shared/error_utils';
2
- import { RecordCore, WatchableRecordKeysCore } from '../../shared/models/record_core';
2
+ import { RecordCore, WatchableCellValueInFieldKeyPrefix, WatchableRecordKeysCore } from '../../shared/models/record_core';
3
+ import { isEnumValue } from '../../shared/private_utils';
3
4
  import { FieldType } from '../../shared/types/field_core';
4
5
  const WatchableRecordKeys = Object.freeze({
5
6
  ...WatchableRecordKeysCore
@@ -8,6 +9,7 @@ const WatchableRecordKeys = Object.freeze({
8
9
  * Any key within record that can be watched:
9
10
  * - `'name'`
10
11
  * - `'cellValues'`
12
+ * - `'cellValueInField:' + someFieldId`
11
13
  */
12
14
 
13
15
  /**
@@ -20,6 +22,10 @@ const WatchableRecordKeys = Object.freeze({
20
22
  export class Record extends RecordCore {
21
23
  /** @internal */
22
24
  static _className = 'Record';
25
+ /** @internal */
26
+ static _isWatchableKey(key) {
27
+ return isEnumValue(WatchableRecordKeys, key) || key.startsWith(WatchableCellValueInFieldKeyPrefix);
28
+ }
23
29
 
24
30
  /**
25
31
  * Fetch foreign records for a field. Subsequent calls to this method will
@@ -1,4 +1,4 @@
1
- import { cloneDeep, isEnumValue, isObjectEmpty } from '../private_utils';
1
+ import { cloneDeep, isObjectEmpty } from '../private_utils';
2
2
  import { invariant } from '../error_utils';
3
3
  import { FieldType } from '../types/field_core';
4
4
  import AbstractModel from './abstract_model';
@@ -9,6 +9,10 @@ export const WatchableRecordKeysCore = Object.freeze({
9
9
  // it's just inconsistent...)
10
10
  cellValues: 'cellValues'
11
11
  });
12
+ // TODO: load cell values in field when this is watched? This will
13
+ // cause the CellRenderer component to load cell values, which seems okay,
14
+ // but needs a little more thought.
15
+ export const WatchableCellValueInFieldKeyPrefix = 'cellValueInField:';
12
16
 
13
17
  /** @hidden */
14
18
 
@@ -17,10 +21,6 @@ export class RecordCore extends AbstractModel {
17
21
  /** @internal */
18
22
  static _className = 'RecordCore';
19
23
  /** @internal */
20
- static _isWatchableKey(key) {
21
- return isEnumValue(WatchableRecordKeysCore, key);
22
- }
23
- /** @internal */
24
24
 
25
25
  /** @internal */
26
26
 
@@ -199,6 +199,9 @@ export class RecordCore extends AbstractModel {
199
199
  // that we're not subscribed to).
200
200
 
201
201
  this._onChange(WatchableRecordKeysCore.cellValues, Object.keys(cellValuesByFieldId));
202
+ for (const fieldId of Object.keys(cellValuesByFieldId)) {
203
+ this._onChange(WatchableCellValueInFieldKeyPrefix + fieldId, fieldId);
204
+ }
202
205
  if (cellValuesByFieldId[this.parentTable.primaryField.id]) {
203
206
  this._onChange(WatchableRecordKeysCore.name);
204
207
  }
@@ -24,7 +24,7 @@ export class BlockSdkCore {
24
24
  * @hidden
25
25
  */
26
26
  // @ts-ignore
27
- static VERSION = "0.0.0-experimental-28533a19d-20251016";
27
+ static VERSION = "0.0.0-experimental-e7419444f-20251120";
28
28
 
29
29
  /** Storage for this block installation's configuration. */
30
30
 
@@ -1 +1 @@
1
- {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../../../../src/base/models/record.ts"],"names":[],"mappings":"AAAA,8CAA8C,CAAC,MAAM;AACrD,OAAO,EAAC,KAAK,KAAK,EAAC,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAC,UAAU,EAA0B,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAC,KAAK,MAAM,EAAE,KAAK,OAAO,EAAC,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAC,KAAK,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAEH,KAAK,YAAY,EAGpB,MAAM,4BAA4B,CAAC;AAIpC,OAAO,EAAC,KAAK,SAAS,EAAC,MAAM,+BAA+B,CAAC;AAC7D,OAAO,wBAAwB,MAAM,+BAA+B,CAAC;AAGrE,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAA0B,EAAC,KAAK,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAEpF,QAAA,MAAM,mBAAmB;;;;EAGvB,CAAC;AAOH;;;;;;;GAOG;AACH,KAAK,kBAAkB,GAAG,YAAY,CAAC,OAAO,mBAAmB,CAAC,GAAG,MAAM,CAAC;AAE5E;;;;;;;GAOG;AACH,cAAM,MAAO,SAAQ,UAAU,CAAC,WAAW,EAAE,kBAAkB,CAAC;IAoC5D;;;;;;;;;;OAUG;IACH,oBAAoB,CAAC,yBAAyB,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM;IASjF,gBAAgB,CAAC,KAAK,EAAE;QAAC,EAAE,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAC,GAAG,OAAO;IAShE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,sCAAsC,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM;IAS3F;;;;;;;OAOG;IACH,cAAc,CAAC,sBAAsB,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI;IAK5E;;;;;;;OAOG;IACH,iBAAiB,CAAC,sBAAsB,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;IAOvE;;;;;;;OAOG;IACH,2BAA2B,CACvB,yBAAyB,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,EACnD,IAAI,GAAE,qBAA0B,GACjC,wBAAwB;IAoB3B;;;;;;;;;OASG;IACG,gCAAgC,CAClC,yBAAyB,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,EACnD,IAAI,GAAE,qBAA0B,GACjC,OAAO,CAAC,wBAAwB,CAAC;IAKpC;;;;;;;;OAQG;IACH,IAAI,GAAG,IAAI,MAAM,CAKhB;IACD;;;;;;;;;;;OAWG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;CAsBJ;AAED,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../../../../src/base/models/record.ts"],"names":[],"mappings":"AAAA,8CAA8C,CAAC,MAAM;AACrD,OAAO,EAAC,KAAK,KAAK,EAAC,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EACH,UAAU,EAGb,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAC,KAAK,MAAM,EAAE,KAAK,OAAO,EAAC,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAC,KAAK,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAc,KAAK,YAAY,EAAqB,MAAM,4BAA4B,CAAC;AAI9F,OAAO,EAAC,KAAK,SAAS,EAAC,MAAM,+BAA+B,CAAC;AAC7D,OAAO,wBAAwB,MAAM,+BAA+B,CAAC;AAGrE,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAA0B,EAAC,KAAK,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAEpF,QAAA,MAAM,mBAAmB;;;;EAGvB,CAAC;AAKH;;;;;;;GAOG;AACH,KAAK,kBAAkB,GAAG,YAAY,CAAC,OAAO,mBAAmB,CAAC,GAAG,MAAM,CAAC;AAE5E;;;;;;;GAOG;AACH,cAAM,MAAO,SAAQ,UAAU,CAAC,WAAW,EAAE,kBAAkB,CAAC;IAoC5D;;;;;;;;;;OAUG;IACH,oBAAoB,CAAC,yBAAyB,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM;IASjF,gBAAgB,CAAC,KAAK,EAAE;QAAC,EAAE,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAC,GAAG,OAAO;IAShE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACH,sCAAsC,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM;IAS3F;;;;;;;OAOG;IACH,cAAc,CAAC,sBAAsB,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI;IAK5E;;;;;;;OAOG;IACH,iBAAiB,CAAC,sBAAsB,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;IAOvE;;;;;;;OAOG;IACH,2BAA2B,CACvB,yBAAyB,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,EACnD,IAAI,GAAE,qBAA0B,GACjC,wBAAwB;IAoB3B;;;;;;;;;OASG;IACG,gCAAgC,CAClC,yBAAyB,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,EACnD,IAAI,GAAE,qBAA0B,GACjC,OAAO,CAAC,wBAAwB,CAAC;IAKpC;;;;;;;;OAQG;IACH,IAAI,GAAG,IAAI,MAAM,CAKhB;IACD;;;;;;;;;;;OAWG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;CAiBJ;AAED,eAAe,MAAM,CAAC"}
@@ -11,6 +11,7 @@ declare const WatchableRecordKeys: Readonly<{
11
11
  * Any key within record that can be watched:
12
12
  * - `'name'`
13
13
  * - `'cellValues'`
14
+ * - `'cellValueInField:' + someFieldId`
14
15
  */
15
16
  type WatchableRecordKey = ObjectValues<typeof WatchableRecordKeys> | string;
16
17
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../../../../src/interface/models/record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,gBAAgB,EAAC,MAAM,gBAAgB,CAAC;AAErD,OAAO,EAAC,UAAU,EAA0B,MAAM,iCAAiC,CAAC;AACpF,OAAO,EAAC,KAAK,YAAY,EAAC,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EAAC,KAAK,QAAQ,EAAC,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAC,KAAK,KAAK,EAAC,MAAM,SAAS,CAAC;AAEnC,QAAA,MAAM,mBAAmB;;;EAEvB,CAAC;AACH;;;;GAIG;AACH,KAAK,kBAAkB,GAAG,YAAY,CAAC,OAAO,mBAAmB,CAAC,GAAG,MAAM,CAAC;AAE5E;;;;;;GAMG;AACH,qBAAa,MAAO,SAAQ,UAAU,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;IAIxE;;;;;;;;OAQG;IACH,wBAAwB,CACpB,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,MAAM,GACrB,OAAO,CAAC;QACP,OAAO,EAAE,aAAa,CAAC;YAAC,EAAE,EAAE,QAAQ,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC,CAAC,CAAC;KACxD,CAAC;CAgBL"}
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../../../../src/interface/models/record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,gBAAgB,EAAC,MAAM,gBAAgB,CAAC;AAErD,OAAO,EACH,UAAU,EAGb,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAc,KAAK,YAAY,EAAC,MAAM,4BAA4B,CAAC;AAE1E,OAAO,EAAC,KAAK,QAAQ,EAAC,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAC,KAAK,KAAK,EAAC,MAAM,SAAS,CAAC;AAEnC,QAAA,MAAM,mBAAmB;;;EAEvB,CAAC;AACH;;;;;GAKG;AACH,KAAK,kBAAkB,GAAG,YAAY,CAAC,OAAO,mBAAmB,CAAC,GAAG,MAAM,CAAC;AAE5E;;;;;;GAMG;AACH,qBAAa,MAAO,SAAQ,UAAU,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;IAWxE;;;;;;;;OAQG;IACH,wBAAwB,CACpB,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,MAAM,GACrB,OAAO,CAAC;QACP,OAAO,EAAE,aAAa,CAAC;YAAC,EAAE,EAAE,QAAQ,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAC,CAAC,CAAC;KACxD,CAAC;CAgBL"}
@@ -6,8 +6,9 @@ export declare const WatchableRecordKeysCore: Readonly<{
6
6
  name: "name";
7
7
  cellValues: "cellValues";
8
8
  }>;
9
+ export declare const WatchableCellValueInFieldKeyPrefix = "cellValueInField:";
9
10
  /** @hidden */
10
- type WatchableRecordKeyCore = ObjectValues<typeof WatchableRecordKeysCore>;
11
+ type WatchableRecordKeyCore = ObjectValues<typeof WatchableRecordKeysCore> | string;
11
12
  /** @hidden */
12
13
  export declare abstract class RecordCore<SdkModeT extends SdkMode, WatchableKeys extends string = WatchableRecordKeyCore> extends AbstractModel<SdkModeT, SdkModeT['RecordDataT'], WatchableRecordKeyCore | WatchableKeys> {
13
14
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"record_core.d.ts","sourceRoot":"","sources":["../../../../../src/shared/models/record_core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,OAAO,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAKH,KAAK,YAAY,EACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAC,KAAK,OAAO,EAAgB,MAAM,oBAAoB,CAAC;AAE/D,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAG7C,eAAO,MAAM,uBAAuB;;;EAKlC,CAAC;AAEH,cAAc;AACd,KAAK,sBAAsB,GAAG,YAAY,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAE3E,cAAc;AACd,8BAAsB,UAAU,CAC5B,QAAQ,SAAS,OAAO,EACxB,aAAa,SAAS,MAAM,GAAG,sBAAsB,CACvD,SAAQ,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,sBAAsB,GAAG,aAAa,CAAC;IAyF9F;;;;;;;;;;OAUG;IACH,YAAY,CAAC,yBAAyB,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO;IAoCvF;;;;;;;;;;OAUG;IACH,oBAAoB,CAAC,yBAAyB,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM;IAiB9F;;;;;;;;OAQG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IACD;;;;;;;;;OASG;IACH,IAAI,WAAW,IAAI,IAAI,CAEtB;CAmBJ"}
1
+ {"version":3,"file":"record_core.d.ts","sourceRoot":"","sources":["../../../../../src/shared/models/record_core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,OAAO,EAAC,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAA+C,KAAK,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAEjG,OAAO,EAAC,KAAK,OAAO,EAAgB,MAAM,oBAAoB,CAAC;AAE/D,OAAO,aAAa,MAAM,kBAAkB,CAAC;AAG7C,eAAO,MAAM,uBAAuB;;;EAKlC,CAAC;AAIH,eAAO,MAAM,kCAAkC,sBAAsB,CAAC;AAEtE,cAAc;AACd,KAAK,sBAAsB,GACrB,YAAY,CAAC,OAAO,uBAAuB,CAAC,GAE5C,MAAM,CAAC;AAEb,cAAc;AACd,8BAAsB,UAAU,CAC5B,QAAQ,SAAS,OAAO,EACxB,aAAa,SAAS,MAAM,GAAG,sBAAsB,CACvD,SAAQ,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,sBAAsB,GAAG,aAAa,CAAC;IAqF9F;;;;;;;;;;OAUG;IACH,YAAY,CAAC,yBAAyB,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO;IAoCvF;;;;;;;;;;OAUG;IACH,oBAAoB,CAAC,yBAAyB,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM;IAiB9F;;;;;;;;OAQG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IACD;;;;;;;;;OASG;IACH,IAAI,WAAW,IAAI,IAAI,CAEtB;CAuBJ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@airtable/blocks",
3
- "version": "0.0.0-experimental-28533a19d-20251016",
3
+ "version": "0.0.0-experimental-e7419444f-20251120",
4
4
  "description": "Airtable Blocks SDK",
5
5
  "type": "module",
6
6
  "repository": {