@plasmicpkgs/plasmic-basic-components 0.0.2 → 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.
Files changed (45) hide show
  1. package/dist/Data.d.ts +32 -59
  2. package/dist/Embed.d.ts +5 -3
  3. package/dist/Iframe.d.ts +8 -3
  4. package/dist/ScrollRevealer.d.ts +12 -6
  5. package/dist/Video.d.ts +6 -0
  6. package/dist/index.d.ts +3 -1
  7. package/dist/plasmic-basic-components.cjs.development.js +151 -172
  8. package/dist/plasmic-basic-components.cjs.development.js.map +1 -1
  9. package/dist/plasmic-basic-components.cjs.production.min.js +1 -1
  10. package/dist/plasmic-basic-components.cjs.production.min.js.map +1 -1
  11. package/dist/plasmic-basic-components.esm.js +134 -169
  12. package/dist/plasmic-basic-components.esm.js.map +1 -1
  13. package/package.json +4 -13
  14. package/Data/dist/Data.d.ts +0 -97
  15. package/Data/dist/common.d.ts +0 -2
  16. package/Data/dist/index.cjs.js +0 -267
  17. package/Data/dist/index.cjs.js.map +0 -1
  18. package/Data/dist/index.esm.js +0 -246
  19. package/Data/dist/index.esm.js.map +0 -1
  20. package/Data/package.json +0 -6
  21. package/Embed/dist/Embed.d.ts +0 -8
  22. package/Embed/dist/common.d.ts +0 -2
  23. package/Embed/dist/index.cjs.js +0 -64
  24. package/Embed/dist/index.cjs.js.map +0 -1
  25. package/Embed/dist/index.esm.js +0 -55
  26. package/Embed/dist/index.esm.js.map +0 -1
  27. package/Embed/package.json +0 -6
  28. package/Iframe/dist/Iframe.d.ts +0 -8
  29. package/Iframe/dist/index.cjs.js +0 -62
  30. package/Iframe/dist/index.cjs.js.map +0 -1
  31. package/Iframe/dist/index.esm.js +0 -53
  32. package/Iframe/dist/index.esm.js.map +0 -1
  33. package/Iframe/package.json +0 -6
  34. package/ScrollRevealer/dist/ScrollRevealer.d.ts +0 -20
  35. package/ScrollRevealer/dist/index.cjs.js +0 -87
  36. package/ScrollRevealer/dist/index.cjs.js.map +0 -1
  37. package/ScrollRevealer/dist/index.esm.js +0 -77
  38. package/ScrollRevealer/dist/index.esm.js.map +0 -1
  39. package/ScrollRevealer/package.json +0 -6
  40. package/Video/dist/Video.d.ts +0 -3
  41. package/Video/dist/index.cjs.js +0 -100
  42. package/Video/dist/index.cjs.js.map +0 -1
  43. package/Video/dist/index.esm.js +0 -91
  44. package/Video/dist/index.esm.js.map +0 -1
  45. package/Video/package.json +0 -6
@@ -87,16 +87,9 @@ var tuple = function tuple() {
87
87
 
88
88
  return args;
89
89
  };
90
- function ensure(x) {
91
- if (x === null || x === undefined) {
92
- debugger;
93
- throw new Error("Value must not be undefined or null");
94
- } else {
95
- return x;
96
- }
97
- }
98
90
 
99
91
  var DataContext = /*#__PURE__*/React.createContext(undefined);
92
+ var thisModule = "@plasmicpkgs/plasmic-basic-components";
100
93
  function applySelector(rawData, selector) {
101
94
  if (!selector) {
102
95
  return undefined;
@@ -199,19 +192,17 @@ function DynamicImage(_ref6) {
199
192
  src: "https://studio.plasmic.app/static/img/placeholder.png"
200
193
  }));
201
194
  }
202
- function DynamicCollection(_ref7) {
195
+ function DynamicRepeater(_ref7) {
203
196
  var _ref8;
204
197
 
205
- var selector = _ref7.selector,
198
+ var children = _ref7.children,
206
199
  loopItemName = _ref7.loopItemName,
207
- children = _ref7.children,
208
- data = _ref7.data,
209
200
  keySelector = _ref7.keySelector,
210
- props = _objectWithoutPropertiesLoose(_ref7, ["selector", "loopItemName", "children", "data", "keySelector"]);
211
-
201
+ selector = _ref7.selector,
202
+ data = _ref7.data;
212
203
  // Defaults to an array of three items.
213
204
  var finalData = (_ref8 = data != null ? data : useSelector(selector)) != null ? _ref8 : [1, 2, 3];
214
- return React__default.createElement(DynamicElement, Object.assign({}, props), finalData == null ? void 0 : finalData.map == null ? void 0 : finalData.map(function (item, index) {
205
+ return React__default.createElement(React__default.Fragment, null, finalData == null ? void 0 : finalData.map == null ? void 0 : finalData.map(function (item, index) {
215
206
  var _applySelector;
216
207
 
217
208
  return React__default.createElement(DataProvider, {
@@ -221,26 +212,36 @@ function DynamicCollection(_ref7) {
221
212
  }, host.repeatedElement(index === 0, children));
222
213
  }));
223
214
  }
224
- function DynamicCollectionGrid(_ref9) {
225
- var columns = _ref9.columns,
226
- _ref9$columnGap = _ref9.columnGap,
227
- columnGap = _ref9$columnGap === void 0 ? 0 : _ref9$columnGap,
228
- _ref9$rowGap = _ref9.rowGap,
229
- rowGap = _ref9$rowGap === void 0 ? 0 : _ref9$rowGap,
230
- props = _objectWithoutPropertiesLoose(_ref9, ["columns", "columnGap", "rowGap"]);
231
-
232
- return React__default.createElement(DynamicCollection, Object.assign({}, props, {
233
- style: {
234
- display: "grid",
235
- gridTemplateColumns: "repeat(" + columns + ", 1fr)",
236
- columnGap: columnGap + "px",
237
- rowGap: rowGap + "px"
238
- }
239
- }));
215
+ var dynamicRepeaterProps = {
216
+ selector: {
217
+ type: "string",
218
+ description: "The selector expression to use to get the array of data to loop over, such as: someVariable.0.someField"
219
+ },
220
+ loopItemName: {
221
+ type: "string",
222
+ defaultValue: "item",
223
+ description: "The name of the variable to use to store the current item in the loop"
224
+ },
225
+ children: "slot"
226
+ };
227
+ var dynamicRepeaterMeta = {
228
+ name: "hostless-dynamic-repeater",
229
+ displayName: "Dynamic Repeater",
230
+ importName: "DynamicRepeater",
231
+ importPath: thisModule,
232
+ props: dynamicRepeaterProps
233
+ };
234
+ function registerDynamicRepeater(loader, customDynamicRepeaterMeta) {
235
+ if (loader) {
236
+ loader.registerComponent(DynamicRepeater, customDynamicRepeaterMeta != null ? customDynamicRepeaterMeta : dynamicRepeaterMeta);
237
+ } else {
238
+ registerComponent(DynamicRepeater, customDynamicRepeaterMeta != null ? customDynamicRepeaterMeta : dynamicRepeaterMeta);
239
+ }
240
240
  }
241
- var thisModule = "@plasmicpkgs/plasmic-basic-components/Data";
242
- registerComponent(DataProvider, {
243
- name: "DataProvider",
241
+ var dataProviderMeta = {
242
+ name: "hostless-data-provider",
243
+ displayName: "Data Provider",
244
+ importName: "DataProvider",
244
245
  importPath: thisModule,
245
246
  // description: "Makes some specified data available to the subtree in a context",
246
247
  props: {
@@ -265,24 +266,31 @@ registerComponent(DataProvider, {
265
266
  type: "slot",
266
267
  defaultValue: [{
267
268
  type: "component",
268
- name: "DynamicText",
269
+ name: "hostless-dynamic-text",
269
270
  props: {
270
271
  selector: "celebrities.0.name"
271
272
  }
272
273
  }, {
273
274
  type: "component",
274
- name: "DynamicImage",
275
+ name: "hostless-dynamic-image",
275
276
  props: {
276
277
  selector: "celebrities.0.profilePicture"
277
278
  }
278
279
  }]
279
280
  }
280
281
  }
281
- });
282
+ };
283
+ function registerDataProvider(loader, customDataProviderMeta) {
284
+ if (loader) {
285
+ loader.registerComponent(DataProvider, customDataProviderMeta != null ? customDataProviderMeta : dataProviderMeta);
286
+ } else {
287
+ registerComponent(DataProvider, customDataProviderMeta != null ? customDataProviderMeta : dataProviderMeta);
288
+ }
289
+ }
282
290
  var dynamicPropsWithoutTag = {
283
291
  propSelectors: {
284
292
  type: "object",
285
- // defaultValueHint: {},
293
+ defaultValueHint: {},
286
294
  description: "An object whose keys are prop names and values are selector expressions. Use this to set any prop to a dynamic value."
287
295
  }
288
296
  };
@@ -290,137 +298,74 @@ var dynamicPropsWithoutTag = {
290
298
  var dynamicProps = /*#__PURE__*/_extends({}, dynamicPropsWithoutTag, {
291
299
  tag: {
292
300
  type: "string",
293
- // defaultValueHint: "div",
301
+ defaultValueHint: "div",
294
302
  description: "The HTML tag to use"
295
303
  }
296
304
  }); // TODO Eventually we'll want to expose all the base HTML properties, but in the nicer way that we do within the studio.
297
305
 
298
306
 
299
- registerComponent(DynamicElement, {
300
- name: "DynamicElement",
307
+ var dynamicElementMeta = {
308
+ name: "hostless-dynamic-element",
309
+ displayName: "Dynamic Element",
310
+ importName: "DynamicElement",
301
311
  importPath: thisModule,
302
- props: _extends({}, dynamicProps, {
312
+ props: /*#__PURE__*/_extends({}, dynamicProps, {
303
313
  children: "slot"
304
314
  })
305
- });
306
- registerComponent(DynamicText, {
307
- name: "DynamicText",
315
+ };
316
+ function registerDynamicElement(loader, customDynamicElementMeta) {
317
+ if (loader) {
318
+ loader.registerComponent(DynamicElement, customDynamicElementMeta != null ? customDynamicElementMeta : dynamicElementMeta);
319
+ } else {
320
+ registerComponent(DynamicElement, customDynamicElementMeta != null ? customDynamicElementMeta : dynamicElementMeta);
321
+ }
322
+ }
323
+ var dynamicTextMeta = {
324
+ name: "hostless-dynamic-text",
325
+ importName: "DynamicText",
326
+ displayName: "Dynamic Text",
308
327
  importPath: thisModule,
309
- props: _extends({}, dynamicProps, {
328
+ props: /*#__PURE__*/_extends({}, dynamicProps, {
310
329
  selector: {
311
330
  type: "string",
312
331
  description: "The selector expression to use to get the text, such as: someVariable.0.someField"
313
332
  }
314
333
  })
315
- });
316
- registerComponent(DynamicImage, {
317
- name: "DynamicImage",
334
+ };
335
+ function registerDynamicText(loader, customDynamicTextMeta) {
336
+ if (loader) {
337
+ loader.registerComponent(DynamicText, customDynamicTextMeta != null ? customDynamicTextMeta : dynamicTextMeta);
338
+ } else {
339
+ registerComponent(DynamicText, customDynamicTextMeta != null ? customDynamicTextMeta : dynamicTextMeta);
340
+ }
341
+ }
342
+ var dynamicImageMeta = {
343
+ name: "hostless-dynamic-image",
344
+ displayName: "Dynamic Image",
345
+ importName: "DynamicImage",
318
346
  importPath: thisModule,
319
- props: _extends({}, dynamicPropsWithoutTag, {
347
+ props: /*#__PURE__*/_extends({}, dynamicPropsWithoutTag, {
320
348
  selector: {
321
349
  type: "string",
322
350
  description: "The selector expression to use to get the image source URL, such as: someVariable.0.someField"
323
351
  }
324
352
  })
325
- });
326
- var dynamicCollectionProps = /*#__PURE__*/_extends({}, dynamicProps, {
327
- selector: {
328
- type: "string",
329
- description: "The selector expression to use to get the array of data to loop over, such as: someVariable.0.someField"
330
- },
331
- loopItemName: {
332
- type: "string",
333
- defaultValue: "item",
334
- description: "The name of the variable to use to store the current item in the loop"
335
- },
336
- children: "slot"
337
- });
338
- registerComponent(DynamicCollection, {
339
- name: "DynamicCollection",
340
- importPath: thisModule,
341
- props: dynamicCollectionProps
342
- });
343
- var dynamicCollectionGridProps = /*#__PURE__*/_extends({}, dynamicCollectionProps, {
344
- columns: {
345
- type: "number",
346
- defaultValue: 2,
347
- description: "The number of columns to use in the grid"
348
- },
349
- columnGap: {
350
- type: "number",
351
- defaultValue: 8,
352
- description: "The gap between columns"
353
- },
354
- rowGap: {
355
- type: "number",
356
- defaultValue: 8,
357
- description: "The gap between rows"
353
+ };
354
+ function registerDynamicImage(loader, customDynamicImageMeta) {
355
+ if (loader) {
356
+ loader.registerComponent(DynamicImage, customDynamicImageMeta != null ? customDynamicImageMeta : dynamicImageMeta);
357
+ } else {
358
+ registerComponent(DynamicImage, customDynamicImageMeta != null ? customDynamicImageMeta : dynamicImageMeta);
358
359
  }
359
- });
360
- registerComponent(DynamicCollectionGrid, {
361
- name: "DynamicCollectionGrid",
362
- importPath: thisModule,
363
- props: dynamicCollectionGridProps
364
- });
365
-
366
- /** @format */
367
- function Embed(_ref) {
368
- var className = _ref.className,
369
- code = _ref.code,
370
- _ref$hideInEditor = _ref.hideInEditor,
371
- hideInEditor = _ref$hideInEditor === void 0 ? false : _ref$hideInEditor;
372
- var rootElt = React.useRef(null);
373
- React.useEffect(function () {
374
- if (hideInEditor) {
375
- return;
376
- }
377
-
378
- Array.from(ensure(rootElt.current).querySelectorAll("script")).forEach(function (oldScript) {
379
- var newScript = document.createElement("script");
380
- Array.from(oldScript.attributes).forEach(function (attr) {
381
- return newScript.setAttribute(attr.name, attr.value);
382
- });
383
- newScript.appendChild(document.createTextNode(oldScript.innerHTML));
384
- ensure(oldScript.parentNode).replaceChild(newScript, oldScript);
385
- });
386
- }, [code, hideInEditor]);
387
- var effectiveCode = hideInEditor ? "" : code;
388
- return React__default.createElement("div", {
389
- ref: rootElt,
390
- className: className,
391
- dangerouslySetInnerHTML: {
392
- __html: effectiveCode
393
- }
394
- });
395
360
  }
396
- registerComponent(Embed, {
397
- name: "Embed",
398
- importPath: "@plasmicpkgs/plasmic-basic-components/Embed",
399
- props: {
400
- code: {
401
- type: "string",
402
- defaultValue: "https://www.example.com"
403
- },
404
- hideInEditor: {
405
- type: "boolean",
406
- displayName: "Hide in editor",
407
- description: "Disable running the code while editing in Plasmic Studio (may require reload)"
408
- }
409
- },
410
- isDefaultExport: true,
411
- defaultStyles: {
412
- maxWidth: "100%"
413
- }
414
- });
415
361
 
416
- /** @format */
417
362
  function Iframe(_ref) {
418
- var hideInEditor = _ref.hideInEditor,
363
+ var preview = _ref.preview,
419
364
  src = _ref.src,
420
365
  className = _ref.className;
421
366
  var isEditing = React.useContext(host.PlasmicCanvasContext);
422
367
 
423
- if (isEditing && !hideInEditor) {
368
+ if (isEditing && !preview) {
424
369
  return React__default.createElement("div", {
425
370
  className: className
426
371
  }, React__default.createElement("div", {
@@ -448,27 +393,34 @@ function Iframe(_ref) {
448
393
  className: className
449
394
  });
450
395
  }
451
- registerComponent(Iframe, {
452
- name: "Iframe",
453
- importPath: "@plasmicpkgs/plasmic-basic-components/Iframe",
396
+ var iframeMeta = {
397
+ name: "hostless-iframe",
398
+ displayName: "Iframe",
399
+ importName: "Iframe",
400
+ importPath: "@plasmicpkgs/plasmic-basic-components",
454
401
  props: {
455
402
  src: {
456
403
  type: "string",
457
404
  defaultValue: "https://www.example.com"
458
405
  },
459
- hideInEditor: {
406
+ preview: {
460
407
  type: "boolean",
461
- displayName: "Preview",
462
408
  description: "Load the iframe while editing in Plasmic Studio"
463
409
  }
464
410
  },
465
- isDefaultExport: true,
466
411
  defaultStyles: {
467
412
  width: "300px",
468
413
  height: "150px",
469
414
  maxWidth: "100%"
470
415
  }
471
- });
416
+ };
417
+ function registerIframe(loader, customIframeMeta) {
418
+ if (loader) {
419
+ loader.registerComponent(Iframe, customIframeMeta != null ? customIframeMeta : iframeMeta);
420
+ } else {
421
+ registerComponent(Iframe, customIframeMeta != null ? customIframeMeta : iframeMeta);
422
+ }
423
+ }
472
424
 
473
425
  function useDirectionalIntersection(_ref) {
474
426
  var ref = _ref.ref,
@@ -534,40 +486,49 @@ function ScrollRevealer(_ref2) {
534
486
  ref: intersectionRef
535
487
  }, revealed ? children : null);
536
488
  }
537
- registerComponent(ScrollRevealer, {
538
- name: "ScrollRevealer",
489
+ var scrollRevealerMeta = {
490
+ name: "hostless-scroll-revealer",
491
+ importName: "ScrollRevealer",
539
492
  displayName: "Scroll Revealer",
540
- importPath: "@plasmicpkgs/plasmic-basic-components/ScrollRevealer",
493
+ importPath: "@plasmicpkgs/plasmic-basic-components",
541
494
  props: {
542
495
  children: "slot",
543
496
  scrollDownThreshold: {
544
497
  type: "number",
545
498
  displayName: "Scroll down threshold",
546
- // defaultValueHint: 0.5,
499
+ defaultValueHint: 0.5,
547
500
  description: "How much of the element (as a fraction) must you scroll into view for it to appear (defaults to 0.5)"
548
501
  },
549
502
  scrollUpThreshold: {
550
503
  type: "number",
551
504
  displayName: "Scroll up threshold",
552
- // defaultValueHint: 0,
505
+ defaultValueHint: 0,
553
506
  description: "While scrolling up, how much of the element (as a fraction) can still be scrolled in view before it disappears (defaults to 0, meaning you must scroll up until it's completely out of view)"
554
507
  }
555
508
  },
556
- isDefaultExport: true,
557
509
  defaultStyles: {
558
510
  width: "stretch",
559
511
  maxWidth: "100%"
560
512
  }
561
- });
513
+ };
514
+ function registerScrollRevealer(loader, customScrollRevealerMeta) {
515
+ if (loader) {
516
+ loader.registerComponent(ScrollRevealer, customScrollRevealerMeta != null ? customScrollRevealerMeta : scrollRevealerMeta);
517
+ } else {
518
+ registerComponent(ScrollRevealer, customScrollRevealerMeta != null ? customScrollRevealerMeta : scrollRevealerMeta);
519
+ }
520
+ }
562
521
 
563
522
  var Video = /*#__PURE__*/React__default.forwardRef(function (props, ref) {
564
523
  return React__default.createElement("video", Object.assign({
565
524
  ref: ref
566
525
  }, props));
567
526
  });
568
- registerComponent(Video, {
569
- name: "Video",
570
- importPath: "@plasmicpkgs/plasmic-basic-components/Video",
527
+ var videoMeta = {
528
+ name: "hostless-html-video",
529
+ importName: "Video",
530
+ displayName: "HTML Video",
531
+ importPath: "@plasmicpkgs/plasmic-basic-components",
571
532
  props: {
572
533
  src: {
573
534
  type: "string",
@@ -600,13 +561,11 @@ registerComponent(Video, {
600
561
  displayName: "Muted",
601
562
  description: "Whether audio should be muted"
602
563
  },
603
- // TODO enable this once image is a type
604
- // poster: {
605
- // type: "image",
606
- // displayName: "Poster (placeholder) image",
607
- // description:
608
- // "Image to show while video is downloading",
609
- // },
564
+ poster: {
565
+ type: "imageUrl",
566
+ displayName: "Poster (placeholder) image",
567
+ description: "Image to show while video is downloading"
568
+ },
610
569
  preload: {
611
570
  type: "choice",
612
571
  options: ["none", "metadata", "auto"],
@@ -614,29 +573,49 @@ registerComponent(Video, {
614
573
  description: "Whether to preload nothing, metadata only, or the full video"
615
574
  }
616
575
  },
617
- isDefaultExport: true,
618
576
  defaultStyles: {
619
577
  height: "hug",
620
578
  width: "640px",
621
579
  maxWidth: "100%"
622
580
  }
623
- });
581
+ };
582
+ function registerVideo(loader, customVideoMeta) {
583
+ if (loader) {
584
+ loader.registerComponent(Video, customVideoMeta != null ? customVideoMeta : videoMeta);
585
+ } else {
586
+ registerComponent(Video, customVideoMeta != null ? customVideoMeta : videoMeta);
587
+ }
588
+ }
624
589
 
625
590
  exports.DataContext = DataContext;
626
591
  exports.DataProvider = DataProvider;
627
- exports.DynamicCollection = DynamicCollection;
628
- exports.DynamicCollectionGrid = DynamicCollectionGrid;
629
592
  exports.DynamicElement = DynamicElement;
630
593
  exports.DynamicImage = DynamicImage;
594
+ exports.DynamicRepeater = DynamicRepeater;
631
595
  exports.DynamicText = DynamicText;
632
- exports.Embed = Embed;
633
596
  exports.Iframe = Iframe;
634
597
  exports.ScrollRevealer = ScrollRevealer;
635
598
  exports.Video = Video;
636
599
  exports.applySelector = applySelector;
637
- exports.dynamicCollectionGridProps = dynamicCollectionGridProps;
638
- exports.dynamicCollectionProps = dynamicCollectionProps;
600
+ exports.dataProviderMeta = dataProviderMeta;
601
+ exports.dynamicElementMeta = dynamicElementMeta;
602
+ exports.dynamicImageMeta = dynamicImageMeta;
603
+ exports.dynamicRepeaterMeta = dynamicRepeaterMeta;
604
+ exports.dynamicRepeaterProps = dynamicRepeaterProps;
605
+ exports.dynamicTextMeta = dynamicTextMeta;
606
+ exports.iframeMeta = iframeMeta;
607
+ exports.registerDataProvider = registerDataProvider;
608
+ exports.registerDynamicElement = registerDynamicElement;
609
+ exports.registerDynamicImage = registerDynamicImage;
610
+ exports.registerDynamicRepeater = registerDynamicRepeater;
611
+ exports.registerDynamicText = registerDynamicText;
612
+ exports.registerIframe = registerIframe;
613
+ exports.registerScrollRevealer = registerScrollRevealer;
614
+ exports.registerVideo = registerVideo;
615
+ exports.scrollRevealerMeta = scrollRevealerMeta;
639
616
  exports.useDataEnv = useDataEnv;
617
+ exports.useDirectionalIntersection = useDirectionalIntersection;
640
618
  exports.useSelector = useSelector;
641
619
  exports.useSelectors = useSelectors;
620
+ exports.videoMeta = videoMeta;
642
621
  //# sourceMappingURL=plasmic-basic-components.cjs.development.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plasmic-basic-components.cjs.development.js","sources":["../src/common.ts","../src/Data.tsx","../src/Embed.tsx","../src/Iframe.tsx","../src/ScrollRevealer.tsx","../src/Video.tsx"],"sourcesContent":["export const tuple = <T extends any[]>(...args: T): T => args;\n\nexport function ensure<T>(x: T | null | undefined): T {\n if (x === null || x === undefined) {\n debugger;\n throw new Error(`Value must not be undefined or null`);\n } else {\n return x;\n }\n}\n","/** @format */\n\nimport { repeatedElement } from \"@plasmicapp/host\";\nimport registerComponent from \"@plasmicapp/host/registerComponent\";\nimport React, {\n ComponentProps,\n createContext,\n createElement,\n CSSProperties,\n ReactNode,\n useContext,\n} from \"react\";\nimport { tuple } from \"./common\";\n\nexport type DataDict = Record<string, any>;\n\nexport const DataContext = createContext<DataDict | undefined>(undefined);\n\nexport function applySelector(\n rawData: DataDict | undefined,\n selector: string | undefined\n): any {\n if (!selector) {\n return undefined;\n }\n let curData = rawData;\n for (const key of selector.split(\".\")) {\n curData = curData?.[key];\n }\n return curData;\n}\n\nexport type SelectorDict = Record<string, string | undefined>;\n\nexport function useSelector(selector: string | undefined): any {\n const rawData = useDataEnv();\n return applySelector(rawData, selector);\n}\n\nexport function useSelectors(selectors: SelectorDict = {}): any {\n const rawData = useDataEnv();\n return Object.fromEntries(\n Object.entries(selectors)\n .filter(([key, selector]) => !!key && !!selector)\n .map(([key, selector]) => tuple(key, applySelector(rawData, selector)))\n );\n}\n\nexport function useDataEnv() {\n return useContext(DataContext);\n}\n\nexport interface DataProviderProps {\n name?: string;\n data?: any;\n children?: ReactNode;\n}\n\nexport function DataProvider({ name, data, children }: DataProviderProps) {\n const existingEnv = useDataEnv() ?? {};\n if (!name) {\n return <>{children}</>;\n } else {\n return (\n <DataContext.Provider value={{ ...existingEnv, [name]: data }}>\n {children}\n </DataContext.Provider>\n );\n }\n}\n\nexport interface CommonDynamicProps {\n className?: string;\n tag?: string;\n propSelectors?: SelectorDict;\n}\n\nexport function DynamicElement<\n Tag extends keyof JSX.IntrinsicElements = \"div\"\n>({\n tag = \"div\",\n className,\n children,\n propSelectors,\n ...props\n}: CommonDynamicProps & ComponentProps<Tag>) {\n const computed = useSelectors(propSelectors);\n return createElement(tag, {\n children,\n ...props,\n ...computed,\n className: className + \" \" + computed.className,\n });\n}\n\nexport function DynamicText({\n selector,\n propSelectors,\n ...props\n}: CommonDynamicProps & {\n selector?: string;\n}) {\n return (\n <DynamicElement\n {...props}\n propSelectors={{ ...propSelectors, children: selector }}\n >\n {/*This is the default text*/}\n (DynamicText requires a selector)\n </DynamicElement>\n );\n}\n\nexport function DynamicImage({\n selector,\n propSelectors,\n ...props\n}: CommonDynamicProps &\n ComponentProps<\"img\"> & {\n selector?: string;\n }) {\n return (\n <DynamicElement<\"img\">\n tag={\"img\"}\n loading={\"lazy\"}\n style={{\n objectFit: \"cover\",\n }}\n {...props}\n propSelectors={{ ...propSelectors, src: selector }}\n // Default image placeholder\n src=\"https://studio.plasmic.app/static/img/placeholder.png\"\n />\n );\n}\n\nexport interface DynamicCollectionProps extends CommonDynamicProps {\n children?: ReactNode;\n style?: CSSProperties;\n loopItemName?: string;\n keySelector?: string;\n selector?: string;\n data?: any;\n}\n\nexport function DynamicCollection({\n selector,\n loopItemName,\n children,\n data,\n keySelector,\n ...props\n}: DynamicCollectionProps) {\n // Defaults to an array of three items.\n const finalData = data ?? useSelector(selector) ?? [1, 2, 3];\n return (\n <DynamicElement {...props}>\n {finalData?.map?.((item: any, index: number) => (\n <DataProvider\n key={applySelector(item, keySelector) ?? index}\n name={loopItemName}\n data={item}\n >\n {repeatedElement(index === 0, children)}\n </DataProvider>\n ))}\n </DynamicElement>\n );\n}\n\nexport interface DynamicCollectionGridProps extends DynamicCollectionProps {\n columns?: number;\n columnGap?: number;\n rowGap?: number;\n}\n\nexport function DynamicCollectionGrid({\n columns,\n columnGap = 0,\n rowGap = 0,\n ...props\n}: DynamicCollectionGridProps) {\n return (\n <DynamicCollection\n {...props}\n style={{\n display: \"grid\",\n gridTemplateColumns: `repeat(${columns}, 1fr)`,\n columnGap: `${columnGap}px`,\n rowGap: `${rowGap}px`,\n }}\n />\n );\n}\n\nconst thisModule = \"@plasmicpkgs/plasmic-basic-components/Data\";\n\nregisterComponent(DataProvider, {\n name: \"DataProvider\",\n importPath: thisModule,\n // description: \"Makes some specified data available to the subtree in a context\",\n props: {\n name: {\n type: \"string\",\n defaultValue: \"celebrities\",\n description: \"The name of the variable to store the data in\",\n },\n data: {\n type: \"object\",\n defaultValue: [\n {\n name: \"Fill Murray\",\n birthYear: 1950,\n profilePicture: [\"https://www.fillmurray.com/200/300\"],\n },\n {\n name: \"Place Cage\",\n birthYear: 1950,\n profilePicture: [\"https://www.placecage.com/200/300\"],\n },\n ],\n },\n children: {\n type: \"slot\",\n defaultValue: [\n {\n type: \"component\",\n name: \"DynamicText\",\n props: {\n selector: \"celebrities.0.name\",\n },\n },\n {\n type: \"component\",\n name: \"DynamicImage\",\n props: {\n selector: \"celebrities.0.profilePicture\",\n },\n },\n ],\n },\n },\n});\n\nconst dynamicPropsWithoutTag = {\n propSelectors: {\n type: \"object\",\n // defaultValueHint: {},\n description:\n \"An object whose keys are prop names and values are selector expressions. Use this to set any prop to a dynamic value.\",\n },\n} as const;\n\nconst dynamicProps = {\n ...dynamicPropsWithoutTag,\n tag: {\n type: \"string\",\n // defaultValueHint: \"div\",\n description: \"The HTML tag to use\",\n },\n} as const;\n\n// TODO Eventually we'll want to expose all the base HTML properties, but in the nicer way that we do within the studio.\n\nregisterComponent(DynamicElement, {\n name: \"DynamicElement\",\n importPath: thisModule,\n props: { ...dynamicProps, children: \"slot\" },\n});\n\nregisterComponent(DynamicText, {\n name: \"DynamicText\",\n importPath: thisModule,\n props: {\n ...dynamicProps,\n selector: {\n type: \"string\",\n description:\n \"The selector expression to use to get the text, such as: someVariable.0.someField\",\n },\n },\n});\n\nregisterComponent(DynamicImage, {\n name: \"DynamicImage\",\n importPath: thisModule,\n props: {\n ...dynamicPropsWithoutTag,\n selector: {\n type: \"string\",\n description:\n \"The selector expression to use to get the image source URL, such as: someVariable.0.someField\",\n },\n },\n});\n\nexport const dynamicCollectionProps = {\n ...dynamicProps,\n selector: {\n type: \"string\",\n description:\n \"The selector expression to use to get the array of data to loop over, such as: someVariable.0.someField\",\n },\n loopItemName: {\n type: \"string\",\n defaultValue: \"item\",\n description:\n \"The name of the variable to use to store the current item in the loop\",\n },\n children: \"slot\",\n} as const;\n\nregisterComponent(DynamicCollection, {\n name: \"DynamicCollection\",\n importPath: thisModule,\n props: dynamicCollectionProps,\n});\n\nexport const dynamicCollectionGridProps = {\n ...dynamicCollectionProps,\n columns: {\n type: \"number\",\n defaultValue: 2,\n description: \"The number of columns to use in the grid\",\n },\n columnGap: {\n type: \"number\",\n defaultValue: 8,\n description: \"The gap between columns\",\n },\n rowGap: {\n type: \"number\",\n defaultValue: 8,\n description: \"The gap between rows\",\n },\n} as const;\n\nregisterComponent(DynamicCollectionGrid, {\n name: \"DynamicCollectionGrid\",\n importPath: thisModule,\n props: dynamicCollectionGridProps,\n});\n","/** @format */\n\nimport registerComponent from \"@plasmicapp/host/registerComponent\";\nimport React, { useEffect, useRef } from \"react\";\nimport { ensure } from \"./common\";\n\nexport interface EmbedProps {\n className?: string;\n code: string;\n hideInEditor?: boolean;\n}\n\nexport default function Embed({\n className,\n code,\n hideInEditor = false,\n}: EmbedProps) {\n const rootElt = useRef<HTMLDivElement>(null);\n useEffect(() => {\n if (hideInEditor) {\n return;\n }\n Array.from(ensure(rootElt.current).querySelectorAll(\"script\")).forEach(\n (oldScript) => {\n const newScript = document.createElement(\"script\");\n Array.from(oldScript.attributes).forEach((attr) =>\n newScript.setAttribute(attr.name, attr.value)\n );\n newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n ensure(oldScript.parentNode).replaceChild(newScript, oldScript);\n }\n );\n }, [code, hideInEditor]);\n const effectiveCode = hideInEditor ? \"\" : code;\n return (\n <div\n ref={rootElt}\n className={className}\n dangerouslySetInnerHTML={{ __html: effectiveCode }}\n />\n );\n}\n\nregisterComponent(Embed, {\n name: \"Embed\",\n importPath: \"@plasmicpkgs/plasmic-basic-components/Embed\",\n props: {\n code: {\n type: \"string\",\n defaultValue: \"https://www.example.com\",\n },\n hideInEditor: {\n type: \"boolean\",\n displayName: \"Hide in editor\",\n description:\n \"Disable running the code while editing in Plasmic Studio (may require reload)\",\n },\n },\n isDefaultExport: true,\n defaultStyles: {\n maxWidth: \"100%\",\n },\n});\n","/** @format */\n\nimport { PlasmicCanvasContext } from \"@plasmicapp/host\";\nimport registerComponent from \"@plasmicapp/host/registerComponent\";\nimport React, { useContext } from \"react\";\n\nexport interface IframeProps {\n src: string;\n hideInEditor?: boolean;\n className?: string;\n}\n\nexport default function Iframe({ hideInEditor, src, className }: IframeProps) {\n const isEditing = useContext(PlasmicCanvasContext);\n if (isEditing && !hideInEditor) {\n return (\n <div className={className}>\n <div\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n background: \"#eee\",\n color: \"#888\",\n fontSize: \"36px\",\n fontFamily: \"sans-serif\",\n fontWeight: \"bold\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n }}\n >\n Iframe placeholder\n </div>\n </div>\n );\n }\n return <iframe src={src} className={className} />;\n}\n\nregisterComponent(Iframe, {\n name: \"Iframe\",\n importPath: \"@plasmicpkgs/plasmic-basic-components/Iframe\",\n props: {\n src: {\n type: \"string\",\n defaultValue: \"https://www.example.com\",\n },\n hideInEditor: {\n type: \"boolean\",\n displayName: \"Preview\",\n description: \"Load the iframe while editing in Plasmic Studio\",\n },\n },\n isDefaultExport: true,\n defaultStyles: {\n width: \"300px\",\n height: \"150px\",\n maxWidth: \"100%\",\n },\n});\n","import registerComponent from \"@plasmicapp/host/registerComponent\";\nimport React, {\n ReactNode,\n RefObject,\n useEffect,\n useRef,\n useState,\n} from \"react\";\n\nexport function useDirectionalIntersection({\n ref,\n scrollDownThreshold = 0.5,\n scrollUpThreshold = 0,\n}: {\n ref: RefObject<HTMLElement>;\n scrollDownThreshold?: number;\n scrollUpThreshold?: number;\n}) {\n const [revealed, setRevealed] = useState(false);\n useEffect(() => {\n if (ref.current && typeof IntersectionObserver === \"function\") {\n const handler = (entries: IntersectionObserverEntry[]) => {\n if (entries[0].intersectionRatio >= scrollDownThreshold) {\n setRevealed(true);\n } else if (entries[0].intersectionRatio <= scrollUpThreshold) {\n setRevealed(false);\n }\n };\n\n const observer = new IntersectionObserver(handler, {\n root: null,\n rootMargin: \"0%\",\n threshold: [scrollUpThreshold, scrollDownThreshold],\n });\n observer.observe(ref.current);\n\n return () => {\n setRevealed(false);\n observer.disconnect();\n };\n }\n return () => {};\n }, [ref.current, scrollDownThreshold, scrollUpThreshold]);\n return revealed;\n}\n\n/**\n * Unlike react-awesome-reveal, ScrollRevealer:\n *\n * - has configurable thresholds\n * - triggers arbitrary render/unrender animations\n *\n * TODO: Merge this inta a general Reveal component, perhaps forking react-awesome-reveal, so that we don't have two different reveal components for users.\n */\nexport default function ScrollRevealer({\n children,\n className,\n scrollDownThreshold = 0.5,\n scrollUpThreshold = 0,\n}: {\n children?: ReactNode;\n className?: string;\n scrollUpThreshold?: number;\n scrollDownThreshold?: number;\n}) {\n const intersectionRef = useRef<HTMLDivElement>(null);\n const revealed = useDirectionalIntersection({\n ref: intersectionRef,\n scrollUpThreshold,\n scrollDownThreshold,\n });\n return (\n <div className={className} ref={intersectionRef}>\n {revealed ? children : null}\n </div>\n );\n}\n\nregisterComponent(ScrollRevealer, {\n name: \"ScrollRevealer\",\n displayName: \"Scroll Revealer\",\n importPath: \"@plasmicpkgs/plasmic-basic-components/ScrollRevealer\",\n props: {\n children: \"slot\",\n scrollDownThreshold: {\n type: \"number\",\n displayName: \"Scroll down threshold\",\n // defaultValueHint: 0.5,\n description:\n \"How much of the element (as a fraction) must you scroll into view for it to appear (defaults to 0.5)\",\n },\n scrollUpThreshold: {\n type: \"number\",\n displayName: \"Scroll up threshold\",\n // defaultValueHint: 0,\n description:\n \"While scrolling up, how much of the element (as a fraction) can still be scrolled in view before it disappears (defaults to 0, meaning you must scroll up until it's completely out of view)\",\n },\n },\n isDefaultExport: true,\n defaultStyles: {\n width: \"stretch\",\n maxWidth: \"100%\",\n },\n});\n","import registerComponent from \"@plasmicapp/host/registerComponent\";\nimport React from \"react\";\n\ntype VideoProps = Pick<\n React.ComponentProps<\"video\">,\n | \"autoPlay\"\n | \"controls\"\n | \"loop\"\n | \"muted\"\n | \"playsInline\"\n | \"poster\"\n | \"preload\"\n | \"src\"\n>;\n\nconst Video = React.forwardRef<HTMLVideoElement, VideoProps>(\n (props: VideoProps, ref) => {\n return <video ref={ref} {...props} />;\n }\n);\n\nexport default Video;\n\nregisterComponent(Video, {\n name: \"Video\",\n importPath: \"@plasmicpkgs/plasmic-basic-components/Video\",\n props: {\n src: {\n type: \"string\",\n defaultValue:\n \"https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.webm\",\n displayName: \"Source URL\",\n description: \"URL to a video file.\",\n },\n autoPlay: {\n type: \"boolean\",\n displayName: \"Auto Play\",\n description:\n \"Whether the video show automatically start playing when the player loads\",\n },\n controls: {\n type: \"boolean\",\n displayName: \"Show Controls\",\n description: \"Whether the video player controls should be displayed\",\n },\n playsInline: {\n type: \"boolean\",\n displayName: \"Plays inline\",\n description:\n \"Usually on mobile, when tilted landscape, videos can play fullscreen. Turn this on to prevent that.\",\n },\n loop: {\n type: \"boolean\",\n displayName: \"Loop\",\n description: \"Whether the video should be played again after it finishes\",\n },\n muted: {\n type: \"boolean\",\n displayName: \"Muted\",\n description: \"Whether audio should be muted\",\n },\n // TODO enable this once image is a type\n // poster: {\n // type: \"image\",\n // displayName: \"Poster (placeholder) image\",\n // description:\n // \"Image to show while video is downloading\",\n // },\n preload: {\n type: \"choice\",\n options: [\"none\", \"metadata\", \"auto\"],\n displayName: \"Preload\",\n description:\n \"Whether to preload nothing, metadata only, or the full video\",\n },\n },\n isDefaultExport: true,\n defaultStyles: {\n height: \"hug\",\n width: \"640px\",\n maxWidth: \"100%\",\n },\n});\n"],"names":["tuple","args","ensure","x","undefined","Error","DataContext","createContext","applySelector","rawData","selector","curData","split","key","useSelector","useDataEnv","useSelectors","selectors","Object","fromEntries","entries","filter","map","useContext","DataProvider","name","data","children","existingEnv","React","Provider","value","DynamicElement","tag","className","propSelectors","props","computed","createElement","DynamicText","DynamicImage","loading","style","objectFit","src","DynamicCollection","loopItemName","keySelector","finalData","item","index","repeatedElement","DynamicCollectionGrid","columns","columnGap","rowGap","display","gridTemplateColumns","thisModule","registerComponent","importPath","type","defaultValue","description","birthYear","profilePicture","dynamicPropsWithoutTag","dynamicProps","dynamicCollectionProps","dynamicCollectionGridProps","Embed","code","hideInEditor","rootElt","useRef","useEffect","Array","from","current","querySelectorAll","forEach","oldScript","newScript","document","attributes","attr","setAttribute","appendChild","createTextNode","innerHTML","parentNode","replaceChild","effectiveCode","ref","dangerouslySetInnerHTML","__html","displayName","isDefaultExport","defaultStyles","maxWidth","Iframe","isEditing","PlasmicCanvasContext","position","top","left","right","bottom","background","color","fontSize","fontFamily","fontWeight","alignItems","justifyContent","overflow","width","height","useDirectionalIntersection","scrollDownThreshold","scrollUpThreshold","useState","revealed","setRevealed","IntersectionObserver","handler","intersectionRatio","observer","root","rootMargin","threshold","observe","disconnect","ScrollRevealer","intersectionRef","Video","forwardRef","autoPlay","controls","playsInline","loop","muted","preload","options"],"mappings":"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"}
1
+ {"version":3,"file":"plasmic-basic-components.cjs.development.js","sources":["../src/common.ts","../src/Data.tsx","../src/Iframe.tsx","../src/ScrollRevealer.tsx","../src/Video.tsx"],"sourcesContent":["export const tuple = <T extends any[]>(...args: T): T => args;\n\nexport function ensure<T>(x: T | null | undefined): T {\n if (x === null || x === undefined) {\n debugger;\n throw new Error(`Value must not be undefined or null`);\n } else {\n return x;\n }\n}\n","import { ComponentMeta, repeatedElement } from \"@plasmicapp/host\";\nimport registerComponent from \"@plasmicapp/host/registerComponent\";\nimport React, {\n ComponentProps,\n createContext,\n createElement,\n ReactNode,\n useContext,\n} from \"react\";\nimport { tuple } from \"./common\";\n\nexport type DataDict = Record<string, any>;\n\nexport const DataContext = createContext<DataDict | undefined>(undefined);\n\nconst thisModule = \"@plasmicpkgs/plasmic-basic-components\";\n\nexport function applySelector(\n rawData: DataDict | undefined,\n selector: string | undefined\n): any {\n if (!selector) {\n return undefined;\n }\n let curData = rawData;\n for (const key of selector.split(\".\")) {\n curData = curData?.[key];\n }\n return curData;\n}\n\nexport type SelectorDict = Record<string, string | undefined>;\n\nexport function useSelector(selector: string | undefined): any {\n const rawData = useDataEnv();\n return applySelector(rawData, selector);\n}\n\nexport function useSelectors(selectors: SelectorDict = {}): any {\n const rawData = useDataEnv();\n return Object.fromEntries(\n Object.entries(selectors)\n .filter(([key, selector]) => !!key && !!selector)\n .map(([key, selector]) => tuple(key, applySelector(rawData, selector)))\n );\n}\n\nexport function useDataEnv() {\n return useContext(DataContext);\n}\n\nexport interface DataProviderProps {\n name?: string;\n data?: any;\n children?: ReactNode;\n}\n\nexport function DataProvider({ name, data, children }: DataProviderProps) {\n const existingEnv = useDataEnv() ?? {};\n if (!name) {\n return <>{children}</>;\n } else {\n return (\n <DataContext.Provider value={{ ...existingEnv, [name]: data }}>\n {children}\n </DataContext.Provider>\n );\n }\n}\n\nexport interface CommonDynamicProps {\n className?: string;\n tag?: string;\n propSelectors?: SelectorDict;\n}\n\nexport function DynamicElement<\n Tag extends keyof JSX.IntrinsicElements = \"div\"\n>({\n tag = \"div\",\n className,\n children,\n propSelectors,\n ...props\n}: CommonDynamicProps & ComponentProps<Tag>) {\n const computed = useSelectors(propSelectors);\n return createElement(tag, {\n children,\n ...props,\n ...computed,\n className: className + \" \" + computed.className,\n });\n}\n\nexport interface DynamicTextProps extends CommonDynamicProps {\n selector?: string;\n}\n\nexport function DynamicText({\n selector,\n propSelectors,\n ...props\n}: DynamicTextProps) {\n return (\n <DynamicElement\n {...props}\n propSelectors={{ ...propSelectors, children: selector }}\n >\n {/*This is the default text*/}\n (DynamicText requires a selector)\n </DynamicElement>\n );\n}\n\nexport interface DynamicImageProps\n extends CommonDynamicProps,\n ComponentProps<\"img\"> {\n selector?: string;\n}\n\nexport function DynamicImage({\n selector,\n propSelectors,\n ...props\n}: DynamicImageProps) {\n return (\n <DynamicElement<\"img\">\n tag={\"img\"}\n loading={\"lazy\"}\n style={{\n objectFit: \"cover\",\n }}\n {...props}\n propSelectors={{ ...propSelectors, src: selector }}\n // Default image placeholder\n src=\"https://studio.plasmic.app/static/img/placeholder.png\"\n />\n );\n}\n\nexport interface DynamicRepeaterProps {\n children?: ReactNode;\n loopItemName?: string;\n keySelector?: string;\n selector?: string;\n data?: any;\n}\n\nexport function DynamicRepeater({\n children,\n loopItemName,\n keySelector,\n selector,\n data,\n}: DynamicRepeaterProps) {\n // Defaults to an array of three items.\n const finalData = data ?? useSelector(selector) ?? [1, 2, 3];\n return (\n <>\n {finalData?.map?.((item: any, index: number) => (\n <DataProvider\n key={applySelector(item, keySelector) ?? index}\n name={loopItemName}\n data={item}\n >\n {repeatedElement(index === 0, children)}\n </DataProvider>\n ))}\n </>\n );\n}\n\nexport const dynamicRepeaterProps = {\n selector: {\n type: \"string\",\n description:\n \"The selector expression to use to get the array of data to loop over, such as: someVariable.0.someField\",\n },\n loopItemName: {\n type: \"string\",\n defaultValue: \"item\",\n description:\n \"The name of the variable to use to store the current item in the loop\",\n },\n children: \"slot\",\n} as const;\n\nexport const dynamicRepeaterMeta: ComponentMeta<DynamicRepeaterProps> = {\n name: \"hostless-dynamic-repeater\",\n displayName: \"Dynamic Repeater\",\n importName: \"DynamicRepeater\",\n importPath: thisModule,\n props: dynamicRepeaterProps,\n};\n\nexport function registerDynamicRepeater(\n loader?: { registerComponent: typeof registerComponent },\n customDynamicRepeaterMeta?: ComponentMeta<DynamicRepeaterProps>\n) {\n if (loader) {\n loader.registerComponent(\n DynamicRepeater,\n customDynamicRepeaterMeta ?? dynamicRepeaterMeta\n );\n } else {\n registerComponent(\n DynamicRepeater,\n customDynamicRepeaterMeta ?? dynamicRepeaterMeta\n );\n }\n}\n\nexport const dataProviderMeta: ComponentMeta<DataProviderProps> = {\n name: \"hostless-data-provider\",\n displayName: \"Data Provider\",\n importName: \"DataProvider\",\n importPath: thisModule,\n // description: \"Makes some specified data available to the subtree in a context\",\n props: {\n name: {\n type: \"string\",\n defaultValue: \"celebrities\",\n description: \"The name of the variable to store the data in\",\n },\n data: {\n type: \"object\",\n defaultValue: [\n {\n name: \"Fill Murray\",\n birthYear: 1950,\n profilePicture: [\"https://www.fillmurray.com/200/300\"],\n },\n {\n name: \"Place Cage\",\n birthYear: 1950,\n profilePicture: [\"https://www.placecage.com/200/300\"],\n },\n ],\n },\n children: {\n type: \"slot\",\n defaultValue: [\n {\n type: \"component\",\n name: \"hostless-dynamic-text\",\n props: {\n selector: \"celebrities.0.name\",\n },\n },\n {\n type: \"component\",\n name: \"hostless-dynamic-image\",\n props: {\n selector: \"celebrities.0.profilePicture\",\n },\n },\n ],\n },\n },\n};\n\nexport function registerDataProvider(\n loader?: { registerComponent: typeof registerComponent },\n customDataProviderMeta?: ComponentMeta<DataProviderProps>\n) {\n if (loader) {\n loader.registerComponent(\n DataProvider,\n customDataProviderMeta ?? dataProviderMeta\n );\n } else {\n registerComponent(DataProvider, customDataProviderMeta ?? dataProviderMeta);\n }\n}\n\nconst dynamicPropsWithoutTag = {\n propSelectors: {\n type: \"object\",\n defaultValueHint: {},\n description:\n \"An object whose keys are prop names and values are selector expressions. Use this to set any prop to a dynamic value.\",\n },\n} as const;\n\nconst dynamicProps = {\n ...dynamicPropsWithoutTag,\n tag: {\n type: \"string\",\n defaultValueHint: \"div\",\n description: \"The HTML tag to use\",\n },\n} as const;\n\n// TODO Eventually we'll want to expose all the base HTML properties, but in the nicer way that we do within the studio.\n\nexport const dynamicElementMeta: ComponentMeta<CommonDynamicProps> = {\n name: \"hostless-dynamic-element\",\n displayName: \"Dynamic Element\",\n importName: \"DynamicElement\",\n importPath: thisModule,\n props: { ...dynamicProps, children: \"slot\" },\n};\n\nexport function registerDynamicElement(\n loader?: { registerComponent: typeof registerComponent },\n customDynamicElementMeta?: ComponentMeta<CommonDynamicProps>\n) {\n if (loader) {\n loader.registerComponent(\n DynamicElement,\n customDynamicElementMeta ?? dynamicElementMeta\n );\n } else {\n registerComponent(\n DynamicElement,\n customDynamicElementMeta ?? dynamicElementMeta\n );\n }\n}\n\nexport const dynamicTextMeta: ComponentMeta<DynamicTextProps> = {\n name: \"hostless-dynamic-text\",\n importName: \"DynamicText\",\n displayName: \"Dynamic Text\",\n importPath: thisModule,\n props: {\n ...dynamicProps,\n selector: {\n type: \"string\",\n description:\n \"The selector expression to use to get the text, such as: someVariable.0.someField\",\n },\n },\n};\n\nexport function registerDynamicText(\n loader?: { registerComponent: typeof registerComponent },\n customDynamicTextMeta?: ComponentMeta<DynamicTextProps>\n) {\n if (loader) {\n loader.registerComponent(\n DynamicText,\n customDynamicTextMeta ?? dynamicTextMeta\n );\n } else {\n registerComponent(DynamicText, customDynamicTextMeta ?? dynamicTextMeta);\n }\n}\n\nexport const dynamicImageMeta: ComponentMeta<DynamicImageProps> = {\n name: \"hostless-dynamic-image\",\n displayName: \"Dynamic Image\",\n importName: \"DynamicImage\",\n importPath: thisModule,\n props: {\n ...dynamicPropsWithoutTag,\n selector: {\n type: \"string\",\n description:\n \"The selector expression to use to get the image source URL, such as: someVariable.0.someField\",\n },\n },\n};\n\nexport function registerDynamicImage(\n loader?: { registerComponent: typeof registerComponent },\n customDynamicImageMeta?: ComponentMeta<DynamicImageProps>\n) {\n if (loader) {\n loader.registerComponent(\n DynamicImage,\n customDynamicImageMeta ?? dynamicImageMeta\n );\n } else {\n registerComponent(DynamicImage, customDynamicImageMeta ?? dynamicImageMeta);\n }\n}\n","import { ComponentMeta, PlasmicCanvasContext } from \"@plasmicapp/host\";\nimport registerComponent from \"@plasmicapp/host/registerComponent\";\nimport React, { useContext } from \"react\";\n\nexport interface IframeProps {\n src: string;\n preview?: boolean;\n className?: string;\n}\n\nexport default function Iframe({ preview, src, className }: IframeProps) {\n const isEditing = useContext(PlasmicCanvasContext);\n if (isEditing && !preview) {\n return (\n <div className={className}>\n <div\n style={{\n position: \"absolute\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n background: \"#eee\",\n color: \"#888\",\n fontSize: \"36px\",\n fontFamily: \"sans-serif\",\n fontWeight: \"bold\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n overflow: \"hidden\",\n }}\n >\n Iframe placeholder\n </div>\n </div>\n );\n }\n return <iframe src={src} className={className} />;\n}\n\nexport const iframeMeta: ComponentMeta<IframeProps> = {\n name: \"hostless-iframe\",\n displayName: \"Iframe\",\n importName: \"Iframe\",\n importPath: \"@plasmicpkgs/plasmic-basic-components\",\n props: {\n src: {\n type: \"string\",\n defaultValue: \"https://www.example.com\",\n },\n preview: {\n type: \"boolean\",\n description: \"Load the iframe while editing in Plasmic Studio\",\n },\n },\n defaultStyles: {\n width: \"300px\",\n height: \"150px\",\n maxWidth: \"100%\",\n },\n};\n\nexport function registerIframe(\n loader?: { registerComponent: typeof registerComponent },\n customIframeMeta?: ComponentMeta<IframeProps>\n) {\n if (loader) {\n loader.registerComponent(Iframe, customIframeMeta ?? iframeMeta);\n } else {\n registerComponent(Iframe, customIframeMeta ?? iframeMeta);\n }\n}\n","import registerComponent, {\n ComponentMeta,\n} from \"@plasmicapp/host/registerComponent\";\nimport React, {\n ReactNode,\n RefObject,\n useEffect,\n useRef,\n useState,\n} from \"react\";\n\nexport function useDirectionalIntersection({\n ref,\n scrollDownThreshold = 0.5,\n scrollUpThreshold = 0,\n}: {\n ref: RefObject<HTMLElement>;\n scrollDownThreshold?: number;\n scrollUpThreshold?: number;\n}) {\n const [revealed, setRevealed] = useState(false);\n useEffect(() => {\n if (ref.current && typeof IntersectionObserver === \"function\") {\n const handler = (entries: IntersectionObserverEntry[]) => {\n if (entries[0].intersectionRatio >= scrollDownThreshold) {\n setRevealed(true);\n } else if (entries[0].intersectionRatio <= scrollUpThreshold) {\n setRevealed(false);\n }\n };\n\n const observer = new IntersectionObserver(handler, {\n root: null,\n rootMargin: \"0%\",\n threshold: [scrollUpThreshold, scrollDownThreshold],\n });\n observer.observe(ref.current);\n\n return () => {\n setRevealed(false);\n observer.disconnect();\n };\n }\n return () => {};\n }, [ref.current, scrollDownThreshold, scrollUpThreshold]);\n return revealed;\n}\n\nexport interface ScrollRevealerProps {\n children?: ReactNode;\n className?: string;\n scrollUpThreshold?: number;\n scrollDownThreshold?: number;\n}\n\n/**\n * Unlike react-awesome-reveal, ScrollRevealer:\n *\n * - has configurable thresholds\n * - triggers arbitrary render/unrender animations\n *\n * TODO: Merge this inta a general Reveal component, perhaps forking react-awesome-reveal, so that we don't have two different reveal components for users.\n */\nexport default function ScrollRevealer({\n children,\n className,\n scrollDownThreshold = 0.5,\n scrollUpThreshold = 0,\n}: ScrollRevealerProps) {\n const intersectionRef = useRef<HTMLDivElement>(null);\n const revealed = useDirectionalIntersection({\n ref: intersectionRef,\n scrollUpThreshold,\n scrollDownThreshold,\n });\n return (\n <div className={className} ref={intersectionRef}>\n {revealed ? children : null}\n </div>\n );\n}\n\nexport const scrollRevealerMeta: ComponentMeta<ScrollRevealerProps> = {\n name: \"hostless-scroll-revealer\",\n importName: \"ScrollRevealer\",\n displayName: \"Scroll Revealer\",\n importPath: \"@plasmicpkgs/plasmic-basic-components\",\n props: {\n children: \"slot\",\n scrollDownThreshold: {\n type: \"number\",\n displayName: \"Scroll down threshold\",\n defaultValueHint: 0.5,\n description:\n \"How much of the element (as a fraction) must you scroll into view for it to appear (defaults to 0.5)\",\n },\n scrollUpThreshold: {\n type: \"number\",\n displayName: \"Scroll up threshold\",\n defaultValueHint: 0,\n description:\n \"While scrolling up, how much of the element (as a fraction) can still be scrolled in view before it disappears (defaults to 0, meaning you must scroll up until it's completely out of view)\",\n },\n },\n defaultStyles: {\n width: \"stretch\",\n maxWidth: \"100%\",\n },\n};\n\nexport function registerScrollRevealer(\n loader?: { registerComponent: typeof registerComponent },\n customScrollRevealerMeta?: ComponentMeta<ScrollRevealerProps>\n) {\n if (loader) {\n loader.registerComponent(\n ScrollRevealer,\n customScrollRevealerMeta ?? scrollRevealerMeta\n );\n } else {\n registerComponent(\n ScrollRevealer,\n customScrollRevealerMeta ?? scrollRevealerMeta\n );\n }\n}\n","import registerComponent, {\n ComponentMeta,\n} from \"@plasmicapp/host/registerComponent\";\nimport React from \"react\";\n\nexport type VideoProps = Pick<\n React.ComponentProps<\"video\">,\n | \"autoPlay\"\n | \"controls\"\n | \"loop\"\n | \"muted\"\n | \"playsInline\"\n | \"poster\"\n | \"preload\"\n | \"src\"\n>;\n\nconst Video = React.forwardRef<HTMLVideoElement, VideoProps>(\n (props: VideoProps, ref) => {\n return <video ref={ref} {...props} />;\n }\n);\n\nexport default Video;\n\nexport const videoMeta: ComponentMeta<VideoProps> = {\n name: \"hostless-html-video\",\n importName: \"Video\",\n displayName: \"HTML Video\",\n importPath: \"@plasmicpkgs/plasmic-basic-components\",\n props: {\n src: {\n type: \"string\",\n defaultValue:\n \"https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.webm\",\n displayName: \"Source URL\",\n description: \"URL to a video file.\",\n },\n autoPlay: {\n type: \"boolean\",\n displayName: \"Auto Play\",\n description:\n \"Whether the video show automatically start playing when the player loads\",\n },\n controls: {\n type: \"boolean\",\n displayName: \"Show Controls\",\n description: \"Whether the video player controls should be displayed\",\n },\n playsInline: {\n type: \"boolean\",\n displayName: \"Plays inline\",\n description:\n \"Usually on mobile, when tilted landscape, videos can play fullscreen. Turn this on to prevent that.\",\n },\n loop: {\n type: \"boolean\",\n displayName: \"Loop\",\n description: \"Whether the video should be played again after it finishes\",\n },\n muted: {\n type: \"boolean\",\n displayName: \"Muted\",\n description: \"Whether audio should be muted\",\n },\n poster: {\n type: \"imageUrl\",\n displayName: \"Poster (placeholder) image\",\n description: \"Image to show while video is downloading\",\n },\n preload: {\n type: \"choice\",\n options: [\"none\", \"metadata\", \"auto\"],\n displayName: \"Preload\",\n description:\n \"Whether to preload nothing, metadata only, or the full video\",\n },\n },\n defaultStyles: {\n height: \"hug\",\n width: \"640px\",\n maxWidth: \"100%\",\n },\n};\n\nexport function registerVideo(\n loader?: { registerComponent: typeof registerComponent },\n customVideoMeta?: ComponentMeta<VideoProps>\n) {\n if (loader) {\n loader.registerComponent(Video, customVideoMeta ?? videoMeta);\n } else {\n registerComponent(Video, customVideoMeta ?? videoMeta);\n }\n}\n"],"names":["tuple","args","DataContext","createContext","undefined","thisModule","applySelector","rawData","selector","curData","split","key","useSelector","useDataEnv","useSelectors","selectors","Object","fromEntries","entries","filter","map","useContext","DataProvider","name","data","children","existingEnv","React","Provider","value","DynamicElement","tag","className","propSelectors","props","computed","createElement","DynamicText","DynamicImage","loading","style","objectFit","src","DynamicRepeater","loopItemName","keySelector","finalData","item","index","repeatedElement","dynamicRepeaterProps","type","description","defaultValue","dynamicRepeaterMeta","displayName","importName","importPath","registerDynamicRepeater","loader","customDynamicRepeaterMeta","registerComponent","dataProviderMeta","birthYear","profilePicture","registerDataProvider","customDataProviderMeta","dynamicPropsWithoutTag","defaultValueHint","dynamicProps","dynamicElementMeta","registerDynamicElement","customDynamicElementMeta","dynamicTextMeta","registerDynamicText","customDynamicTextMeta","dynamicImageMeta","registerDynamicImage","customDynamicImageMeta","Iframe","preview","isEditing","PlasmicCanvasContext","position","top","left","right","bottom","background","color","fontSize","fontFamily","fontWeight","display","alignItems","justifyContent","overflow","iframeMeta","defaultStyles","width","height","maxWidth","registerIframe","customIframeMeta","useDirectionalIntersection","ref","scrollDownThreshold","scrollUpThreshold","useState","revealed","setRevealed","useEffect","current","IntersectionObserver","handler","intersectionRatio","observer","root","rootMargin","threshold","observe","disconnect","ScrollRevealer","intersectionRef","useRef","scrollRevealerMeta","registerScrollRevealer","customScrollRevealerMeta","Video","forwardRef","videoMeta","autoPlay","controls","playsInline","loop","muted","poster","preload","options","registerVideo","customVideoMeta"],"mappings":"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"}