@plasmicpkgs/plasmic-basic-components 0.0.3 → 0.0.7

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.
package/dist/Data.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { ComponentMeta } from "@plasmicapp/host";
2
2
  import registerComponent from "@plasmicapp/host/registerComponent";
3
- import React, { ComponentProps, CSSProperties, ReactNode } from "react";
3
+ import React, { ComponentProps, ReactNode } from "react";
4
4
  export declare type DataDict = Record<string, any>;
5
5
  export declare const DataContext: React.Context<Record<string, any> | undefined>;
6
6
  export declare function applySelector(rawData: DataDict | undefined, selector: string | undefined): any;
@@ -28,21 +28,30 @@ export interface DynamicImageProps extends CommonDynamicProps, ComponentProps<"i
28
28
  selector?: string;
29
29
  }
30
30
  export declare function DynamicImage({ selector, propSelectors, ...props }: DynamicImageProps): JSX.Element;
31
- export interface DynamicCollectionProps extends CommonDynamicProps {
31
+ export interface DynamicRepeaterProps {
32
32
  children?: ReactNode;
33
- style?: CSSProperties;
34
33
  loopItemName?: string;
35
34
  keySelector?: string;
36
35
  selector?: string;
37
36
  data?: any;
38
37
  }
39
- export declare function DynamicCollection({ selector, loopItemName, children, data, keySelector, ...props }: DynamicCollectionProps): JSX.Element;
40
- export interface DynamicCollectionGridProps extends DynamicCollectionProps {
41
- columns?: number;
42
- columnGap?: number;
43
- rowGap?: number;
44
- }
45
- export declare function DynamicCollectionGrid({ columns, columnGap, rowGap, ...props }: DynamicCollectionGridProps): JSX.Element;
38
+ export declare function DynamicRepeater({ children, loopItemName, keySelector, selector, data, }: DynamicRepeaterProps): JSX.Element;
39
+ export declare const dynamicRepeaterProps: {
40
+ readonly selector: {
41
+ readonly type: "string";
42
+ readonly description: "The selector expression to use to get the array of data to loop over, such as: someVariable.0.someField";
43
+ };
44
+ readonly loopItemName: {
45
+ readonly type: "string";
46
+ readonly defaultValue: "item";
47
+ readonly description: "The name of the variable to use to store the current item in the loop";
48
+ };
49
+ readonly children: "slot";
50
+ };
51
+ export declare const dynamicRepeaterMeta: ComponentMeta<DynamicRepeaterProps>;
52
+ export declare function registerDynamicRepeater(loader?: {
53
+ registerComponent: typeof registerComponent;
54
+ }, customDynamicRepeaterMeta?: ComponentMeta<DynamicRepeaterProps>): void;
46
55
  export declare const dataProviderMeta: ComponentMeta<DataProviderProps>;
47
56
  export declare function registerDataProvider(loader?: {
48
57
  registerComponent: typeof registerComponent;
@@ -59,66 +68,3 @@ export declare const dynamicImageMeta: ComponentMeta<DynamicImageProps>;
59
68
  export declare function registerDynamicImage(loader?: {
60
69
  registerComponent: typeof registerComponent;
61
70
  }, customDynamicImageMeta?: ComponentMeta<DynamicImageProps>): void;
62
- export declare const dynamicCollectionProps: {
63
- readonly selector: {
64
- readonly type: "string";
65
- readonly description: "The selector expression to use to get the array of data to loop over, such as: someVariable.0.someField";
66
- };
67
- readonly loopItemName: {
68
- readonly type: "string";
69
- readonly defaultValue: "item";
70
- readonly description: "The name of the variable to use to store the current item in the loop";
71
- };
72
- readonly children: "slot";
73
- readonly tag: {
74
- readonly type: "string";
75
- readonly description: "The HTML tag to use";
76
- };
77
- readonly propSelectors: {
78
- readonly type: "object";
79
- readonly description: "An object whose keys are prop names and values are selector expressions. Use this to set any prop to a dynamic value.";
80
- };
81
- };
82
- export declare const dynamicCollectionMeta: ComponentMeta<DynamicCollectionProps>;
83
- export declare function registerDynamicCollection(loader?: {
84
- registerComponent: typeof registerComponent;
85
- }, customDynamicCollectionMeta?: ComponentMeta<DynamicCollectionProps>): void;
86
- export declare const dynamicCollectionGridProps: {
87
- readonly columns: {
88
- readonly type: "number";
89
- readonly defaultValue: 2;
90
- readonly description: "The number of columns to use in the grid";
91
- };
92
- readonly columnGap: {
93
- readonly type: "number";
94
- readonly defaultValue: 8;
95
- readonly description: "The gap between columns";
96
- };
97
- readonly rowGap: {
98
- readonly type: "number";
99
- readonly defaultValue: 8;
100
- readonly description: "The gap between rows";
101
- };
102
- readonly selector: {
103
- readonly type: "string";
104
- readonly description: "The selector expression to use to get the array of data to loop over, such as: someVariable.0.someField";
105
- };
106
- readonly loopItemName: {
107
- readonly type: "string";
108
- readonly defaultValue: "item";
109
- readonly description: "The name of the variable to use to store the current item in the loop";
110
- };
111
- readonly children: "slot";
112
- readonly tag: {
113
- readonly type: "string";
114
- readonly description: "The HTML tag to use";
115
- };
116
- readonly propSelectors: {
117
- readonly type: "object";
118
- readonly description: "An object whose keys are prop names and values are selector expressions. Use this to set any prop to a dynamic value.";
119
- };
120
- };
121
- export declare const dynamicCollectionGridMeta: ComponentMeta<DynamicCollectionGridProps>;
122
- export declare function registerDynamicCollectionGrid(loader?: {
123
- registerComponent: typeof registerComponent;
124
- }, customDynamicCollectionGridMeta?: ComponentMeta<DynamicCollectionGridProps>): void;
package/dist/Embed.d.ts CHANGED
@@ -1,11 +1,9 @@
1
- /// <reference types="react" />
2
1
  import registerComponent, { ComponentMeta } from "@plasmicapp/host/registerComponent";
3
2
  export interface EmbedProps {
4
3
  className?: string;
5
4
  code: string;
6
5
  hideInEditor?: boolean;
7
6
  }
8
- export default function Embed({ className, code, hideInEditor, }: EmbedProps): JSX.Element;
9
7
  export declare const embedMeta: ComponentMeta<EmbedProps>;
10
8
  export declare function registerEmbed(loader?: {
11
9
  registerComponent: typeof registerComponent;
package/dist/index.d.ts CHANGED
@@ -1,6 +1,4 @@
1
1
  export * from "./Data";
2
- export * from "./Embed";
3
- export { default as Embed } from "./Embed";
4
2
  export * from "./Iframe";
5
3
  export { default as Iframe } from "./Iframe";
6
4
  export * from "./ScrollRevealer";
@@ -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,24 +212,32 @@ 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";
242
241
  var dataProviderMeta = {
243
242
  name: "hostless-data-provider",
244
243
  displayName: "Data Provider",
@@ -291,7 +290,7 @@ function registerDataProvider(loader, customDataProviderMeta) {
291
290
  var dynamicPropsWithoutTag = {
292
291
  propSelectors: {
293
292
  type: "object",
294
- // defaultValueHint: {},
293
+ defaultValueHint: {},
295
294
  description: "An object whose keys are prop names and values are selector expressions. Use this to set any prop to a dynamic value."
296
295
  }
297
296
  };
@@ -299,7 +298,7 @@ var dynamicPropsWithoutTag = {
299
298
  var dynamicProps = /*#__PURE__*/_extends({}, dynamicPropsWithoutTag, {
300
299
  tag: {
301
300
  type: "string",
302
- // defaultValueHint: "div",
301
+ defaultValueHint: "div",
303
302
  description: "The HTML tag to use"
304
303
  }
305
304
  }); // TODO Eventually we'll want to expose all the base HTML properties, but in the nicer way that we do within the studio.
@@ -359,121 +358,6 @@ function registerDynamicImage(loader, customDynamicImageMeta) {
359
358
  registerComponent(DynamicImage, customDynamicImageMeta != null ? customDynamicImageMeta : dynamicImageMeta);
360
359
  }
361
360
  }
362
- var dynamicCollectionProps = /*#__PURE__*/_extends({}, dynamicProps, {
363
- selector: {
364
- type: "string",
365
- description: "The selector expression to use to get the array of data to loop over, such as: someVariable.0.someField"
366
- },
367
- loopItemName: {
368
- type: "string",
369
- defaultValue: "item",
370
- description: "The name of the variable to use to store the current item in the loop"
371
- },
372
- children: "slot"
373
- });
374
- var dynamicCollectionMeta = {
375
- name: "hostless-dynamic-collection",
376
- displayName: "Dynamic Collection",
377
- importName: "DynamicCollection",
378
- importPath: thisModule,
379
- props: dynamicCollectionProps
380
- };
381
- function registerDynamicCollection(loader, customDynamicCollectionMeta) {
382
- if (loader) {
383
- loader.registerComponent(DynamicCollection, customDynamicCollectionMeta != null ? customDynamicCollectionMeta : dynamicCollectionMeta);
384
- } else {
385
- registerComponent(DynamicCollection, customDynamicCollectionMeta != null ? customDynamicCollectionMeta : dynamicCollectionMeta);
386
- }
387
- }
388
- var dynamicCollectionGridProps = /*#__PURE__*/_extends({}, dynamicCollectionProps, {
389
- columns: {
390
- type: "number",
391
- defaultValue: 2,
392
- description: "The number of columns to use in the grid"
393
- },
394
- columnGap: {
395
- type: "number",
396
- defaultValue: 8,
397
- description: "The gap between columns"
398
- },
399
- rowGap: {
400
- type: "number",
401
- defaultValue: 8,
402
- description: "The gap between rows"
403
- }
404
- });
405
- var dynamicCollectionGridMeta = {
406
- name: "hostless-dynamic-collection-grid",
407
- displayName: "Dynamic Collection Grid",
408
- importName: "DynamicCollectionGrid",
409
- importPath: thisModule,
410
- props: dynamicCollectionGridProps
411
- };
412
- function registerDynamicCollectionGrid(loader, customDynamicCollectionGridMeta) {
413
- if (loader) {
414
- loader.registerComponent(DynamicCollectionGrid, customDynamicCollectionGridMeta != null ? customDynamicCollectionGridMeta : dynamicCollectionGridMeta);
415
- } else {
416
- registerComponent(DynamicCollectionGrid, customDynamicCollectionGridMeta != null ? customDynamicCollectionGridMeta : dynamicCollectionGridMeta);
417
- }
418
- }
419
-
420
- function Embed(_ref) {
421
- var className = _ref.className,
422
- code = _ref.code,
423
- _ref$hideInEditor = _ref.hideInEditor,
424
- hideInEditor = _ref$hideInEditor === void 0 ? false : _ref$hideInEditor;
425
- var rootElt = React.useRef(null);
426
- React.useEffect(function () {
427
- if (hideInEditor) {
428
- return;
429
- }
430
-
431
- Array.from(ensure(rootElt.current).querySelectorAll("script")).forEach(function (oldScript) {
432
- var newScript = document.createElement("script");
433
- Array.from(oldScript.attributes).forEach(function (attr) {
434
- return newScript.setAttribute(attr.name, attr.value);
435
- });
436
- newScript.appendChild(document.createTextNode(oldScript.innerHTML));
437
- ensure(oldScript.parentNode).replaceChild(newScript, oldScript);
438
- });
439
- }, [code, hideInEditor]);
440
- var effectiveCode = hideInEditor ? "" : code;
441
- return React__default.createElement("div", {
442
- ref: rootElt,
443
- className: className,
444
- dangerouslySetInnerHTML: {
445
- __html: effectiveCode
446
- }
447
- });
448
- }
449
- var embedMeta = {
450
- name: "hostless-embed",
451
- displayName: "Embed",
452
- importName: "Embed",
453
- importPath: "@plasmicpkgs/plasmic-basic-components",
454
- props: {
455
- code: {
456
- type: "string",
457
- defaultValue: "https://www.example.com"
458
- },
459
- hideInEditor: {
460
- type: "boolean",
461
- displayName: "Hide in editor",
462
- description: "Disable running the code while editing in Plasmic Studio (may require reload)",
463
- editOnly: true
464
- }
465
- },
466
- defaultStyles: {
467
- maxWidth: "100%"
468
- }
469
- };
470
- function registerEmbed(loader, customEmbedMeta) {
471
- if (loader) {
472
- loader.registerComponent(Embed, customEmbedMeta != null ? customEmbedMeta : embedMeta);
473
- } else {
474
- registerComponent(Embed, customEmbedMeta != null ? customEmbedMeta : embedMeta);
475
- }
476
- }
477
361
 
478
362
  function Iframe(_ref) {
479
363
  var preview = _ref.preview,
@@ -612,13 +496,13 @@ var scrollRevealerMeta = {
612
496
  scrollDownThreshold: {
613
497
  type: "number",
614
498
  displayName: "Scroll down threshold",
615
- // defaultValueHint: 0.5,
499
+ defaultValueHint: 0.5,
616
500
  description: "How much of the element (as a fraction) must you scroll into view for it to appear (defaults to 0.5)"
617
501
  },
618
502
  scrollUpThreshold: {
619
503
  type: "number",
620
504
  displayName: "Scroll up threshold",
621
- // defaultValueHint: 0,
505
+ defaultValueHint: 0,
622
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)"
623
507
  }
624
508
  },
@@ -705,33 +589,26 @@ function registerVideo(loader, customVideoMeta) {
705
589
 
706
590
  exports.DataContext = DataContext;
707
591
  exports.DataProvider = DataProvider;
708
- exports.DynamicCollection = DynamicCollection;
709
- exports.DynamicCollectionGrid = DynamicCollectionGrid;
710
592
  exports.DynamicElement = DynamicElement;
711
593
  exports.DynamicImage = DynamicImage;
594
+ exports.DynamicRepeater = DynamicRepeater;
712
595
  exports.DynamicText = DynamicText;
713
- exports.Embed = Embed;
714
596
  exports.Iframe = Iframe;
715
597
  exports.ScrollRevealer = ScrollRevealer;
716
598
  exports.Video = Video;
717
599
  exports.applySelector = applySelector;
718
600
  exports.dataProviderMeta = dataProviderMeta;
719
- exports.dynamicCollectionGridMeta = dynamicCollectionGridMeta;
720
- exports.dynamicCollectionGridProps = dynamicCollectionGridProps;
721
- exports.dynamicCollectionMeta = dynamicCollectionMeta;
722
- exports.dynamicCollectionProps = dynamicCollectionProps;
723
601
  exports.dynamicElementMeta = dynamicElementMeta;
724
602
  exports.dynamicImageMeta = dynamicImageMeta;
603
+ exports.dynamicRepeaterMeta = dynamicRepeaterMeta;
604
+ exports.dynamicRepeaterProps = dynamicRepeaterProps;
725
605
  exports.dynamicTextMeta = dynamicTextMeta;
726
- exports.embedMeta = embedMeta;
727
606
  exports.iframeMeta = iframeMeta;
728
607
  exports.registerDataProvider = registerDataProvider;
729
- exports.registerDynamicCollection = registerDynamicCollection;
730
- exports.registerDynamicCollectionGrid = registerDynamicCollectionGrid;
731
608
  exports.registerDynamicElement = registerDynamicElement;
732
609
  exports.registerDynamicImage = registerDynamicImage;
610
+ exports.registerDynamicRepeater = registerDynamicRepeater;
733
611
  exports.registerDynamicText = registerDynamicText;
734
- exports.registerEmbed = registerEmbed;
735
612
  exports.registerIframe = registerIframe;
736
613
  exports.registerScrollRevealer = registerScrollRevealer;
737
614
  exports.registerVideo = registerVideo;
@@ -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","import { ComponentMeta, 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 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 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\";\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\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\nexport const dynamicCollectionMeta: ComponentMeta<DynamicCollectionProps> = {\n name: \"hostless-dynamic-collection\",\n displayName: \"Dynamic Collection\",\n importName: \"DynamicCollection\",\n importPath: thisModule,\n props: dynamicCollectionProps,\n};\n\nexport function registerDynamicCollection(\n loader?: { registerComponent: typeof registerComponent },\n customDynamicCollectionMeta?: ComponentMeta<DynamicCollectionProps>\n) {\n if (loader) {\n loader.registerComponent(\n DynamicCollection,\n customDynamicCollectionMeta ?? dynamicCollectionMeta\n );\n } else {\n registerComponent(\n DynamicCollection,\n customDynamicCollectionMeta ?? dynamicCollectionMeta\n );\n }\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\nexport const dynamicCollectionGridMeta: ComponentMeta<DynamicCollectionGridProps> = {\n name: \"hostless-dynamic-collection-grid\",\n displayName: \"Dynamic Collection Grid\",\n importName: \"DynamicCollectionGrid\",\n importPath: thisModule,\n props: dynamicCollectionGridProps,\n};\n\nexport function registerDynamicCollectionGrid(\n loader?: { registerComponent: typeof registerComponent },\n customDynamicCollectionGridMeta?: ComponentMeta<DynamicCollectionGridProps>\n) {\n if (loader) {\n loader.registerComponent(\n DynamicCollectionGrid,\n customDynamicCollectionGridMeta ?? dynamicCollectionGridMeta\n );\n } else {\n registerComponent(\n DynamicCollectionGrid,\n customDynamicCollectionGridMeta ?? dynamicCollectionGridMeta\n );\n }\n}\n","import registerComponent, {\n ComponentMeta,\n} 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\nexport const embedMeta: ComponentMeta<EmbedProps> = {\n name: \"hostless-embed\",\n displayName: \"Embed\",\n importName: \"Embed\",\n importPath: \"@plasmicpkgs/plasmic-basic-components\",\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 editOnly: true,\n },\n },\n defaultStyles: {\n maxWidth: \"100%\",\n },\n};\n\nexport function registerEmbed(\n loader?: { registerComponent: typeof registerComponent },\n customEmbedMeta?: ComponentMeta<EmbedProps>\n) {\n if (loader) {\n loader.registerComponent(Embed, customEmbedMeta ?? embedMeta);\n } else {\n registerComponent(Embed, customEmbedMeta ?? embedMeta);\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","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","dataProviderMeta","displayName","importName","importPath","type","defaultValue","description","birthYear","profilePicture","registerDataProvider","loader","customDataProviderMeta","registerComponent","dynamicPropsWithoutTag","dynamicProps","dynamicElementMeta","registerDynamicElement","customDynamicElementMeta","dynamicTextMeta","registerDynamicText","customDynamicTextMeta","dynamicImageMeta","registerDynamicImage","customDynamicImageMeta","dynamicCollectionProps","dynamicCollectionMeta","registerDynamicCollection","customDynamicCollectionMeta","dynamicCollectionGridProps","dynamicCollectionGridMeta","registerDynamicCollectionGrid","customDynamicCollectionGridMeta","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","embedMeta","editOnly","defaultStyles","maxWidth","registerEmbed","customEmbedMeta","Iframe","preview","isEditing","PlasmicCanvasContext","position","top","left","right","bottom","background","color","fontSize","fontFamily","fontWeight","alignItems","justifyContent","overflow","iframeMeta","width","height","registerIframe","customIframeMeta","useDirectionalIntersection","scrollDownThreshold","scrollUpThreshold","useState","revealed","setRevealed","IntersectionObserver","handler","intersectionRatio","observer","root","rootMargin","threshold","observe","disconnect","ScrollRevealer","intersectionRef","scrollRevealerMeta","registerScrollRevealer","customScrollRevealerMeta","Video","forwardRef","videoMeta","autoPlay","controls","playsInline","loop","muted","poster","preload","options","registerVideo","customVideoMeta"],"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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"}