@plasmicpkgs/plasmic-rich-components 1.0.219 → 1.0.221

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 (38) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/field-mappings.d.ts +2 -2
  3. package/dist/index.js +58 -47
  4. package/dist/index.js.map +1 -1
  5. package/dist/plasmic-rich-components.esm.js +58 -47
  6. package/dist/plasmic-rich-components.esm.js.map +1 -1
  7. package/dist/rich-table/index.d.ts +4 -4
  8. package/package.json +4 -4
  9. package/skinny/{common-prop-types-988c65db.esm.js → common-prop-types-82f3a4ed.esm.js} +2 -2
  10. package/skinny/{common-prop-types-988c65db.esm.js.map → common-prop-types-82f3a4ed.esm.js.map} +1 -1
  11. package/skinny/{common-prop-types-193ce561.cjs.js → common-prop-types-94b20130.cjs.js} +2 -2
  12. package/skinny/{common-prop-types-193ce561.cjs.js.map → common-prop-types-94b20130.cjs.js.map} +1 -1
  13. package/skinny/field-mappings.d.ts +2 -2
  14. package/skinny/{formatting-0acc57f5.esm.js → formatting-6f22c9d6.esm.js} +15 -15
  15. package/skinny/formatting-6f22c9d6.esm.js.map +1 -0
  16. package/skinny/{formatting-6dc71cdd.cjs.js → formatting-939d0aa3.cjs.js} +15 -15
  17. package/skinny/formatting-939d0aa3.cjs.js.map +1 -0
  18. package/skinny/rich-calendar/index.cjs.js +29 -20
  19. package/skinny/rich-calendar/index.cjs.js.map +1 -1
  20. package/skinny/rich-calendar/index.esm.js +29 -20
  21. package/skinny/rich-calendar/index.esm.js.map +1 -1
  22. package/skinny/rich-details/index.cjs.js +1 -1
  23. package/skinny/rich-details/index.esm.js +1 -1
  24. package/skinny/rich-layout/index.cjs.js +7 -4
  25. package/skinny/rich-layout/index.cjs.js.map +1 -1
  26. package/skinny/rich-layout/index.esm.js +7 -4
  27. package/skinny/rich-layout/index.esm.js.map +1 -1
  28. package/skinny/rich-list/index.cjs.js +8 -9
  29. package/skinny/rich-list/index.cjs.js.map +1 -1
  30. package/skinny/rich-list/index.esm.js +9 -10
  31. package/skinny/rich-list/index.esm.js.map +1 -1
  32. package/skinny/rich-table/index.cjs.js +6 -6
  33. package/skinny/rich-table/index.cjs.js.map +1 -1
  34. package/skinny/rich-table/index.d.ts +4 -4
  35. package/skinny/rich-table/index.esm.js +6 -6
  36. package/skinny/rich-table/index.esm.js.map +1 -1
  37. package/skinny/formatting-0acc57f5.esm.js.map +0 -1
  38. package/skinny/formatting-6dc71cdd.cjs.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../src/rich-calendar/RichCalendar.tsx","../../src/rich-calendar/index.tsx"],"sourcesContent":["import {\n deriveFieldConfigs,\n NormalizedData,\n useNormalizedData,\n} from \"@plasmicapp/data-sources\";\nimport { parseDate } from \"@plasmicpkgs/luxon-parser\";\nimport { Badge, Calendar } from \"antd\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport groupBy from \"lodash/groupBy\";\nimport React, { useMemo } from \"react\";\nimport { BaseColumnConfig, FieldfulProps, RowFunc } from \"../field-mappings\";\nimport { getFieldAggregateValue } from \"../formatting\";\nimport {\n ensure,\n ensureArray,\n isLikeColor,\n isLikeDate,\n isValidIsoDate,\n maybe,\n mkShortId,\n} from \"../utils\";\n\nimport localeData from \"dayjs/plugin/localeData\";\nimport weekday from \"dayjs/plugin/weekday\";\n\ndayjs.extend(weekday);\ndayjs.extend(localeData);\n\ntype RichCalendarPropsBase = Omit<\n React.ComponentProps<typeof Calendar>,\n \"value\" | \"defaultValue\" | \"validRange\"\n>;\n\nexport interface RichCalendarProps\n extends FieldfulProps<EventsConfig>,\n RichCalendarPropsBase {\n color: EventsConfig[];\n date: EventsConfig[];\n title: EventsConfig[];\n value: string;\n defaultValue: string;\n validRange: [string | undefined, string | undefined] | undefined;\n}\n\ninterface Event {\n date: string;\n title: string;\n color?: string;\n}\n\nfunction getEventFullDate(date?: string): string | undefined {\n const parsed = parseDate(date);\n if (!parsed) return undefined;\n const yyyy = parsed.getFullYear();\n const mm = (parsed.getMonth() + 1).toString().padStart(2, \"0\");\n const dd = parsed.getDate().toString().padStart(2, \"0\");\n return `${yyyy}-${mm}-${dd}`;\n}\n\nfunction getEventMonthYear(date?: string): string | undefined {\n return getEventFullDate(date)?.substring(0, 7);\n}\n\nfunction EventCell({ events }: { events: Event[] }) {\n if (!events || !events.length) return null;\n return (\n <ul style={{ all: \"unset\" }}>\n {events.map((e) => (\n <li key={JSON.stringify(e)} style={{ all: \"unset\", display: \"block\" }}>\n <Badge color={e.color || \"green\"} text={e.title} />\n </li>\n ))}\n </ul>\n );\n}\n\nexport function RichCalendar(props: RichCalendarProps) {\n const {\n data: rawData = {\n data: [],\n schema: {\n id: \"inferred\",\n fields: [\n {\n id: \"id\",\n type: \"string\",\n readOnly: false,\n },\n ],\n },\n },\n value: isoValue,\n defaultValue: isoDefaultValue,\n validRange: isoValidRange,\n dateCellRender,\n dateFullCellRender,\n monthCellRender,\n monthFullCellRender,\n ...rest\n } = props;\n const data = useNormalizedData(rawData);\n\n const { normalized, finalRoles: roleConfigs } = useRoleDefinitions(\n data,\n props\n );\n const {\n eventsByDate,\n eventsByMonth,\n }: {\n eventsByDate: Record<string, Event[]>;\n eventsByMonth: Record<string, Event[]>;\n } = useMemo(() => {\n if (!data) return { eventsByDate: {}, eventsByMonth: {} };\n return data?.data.reduce(\n (acc: any, item: any) => {\n const date = getFieldAggregateValue(item, roleConfigs.date);\n const title = getFieldAggregateValue(item, roleConfigs.title);\n const color = getFieldAggregateValue(item, roleConfigs.color);\n\n const event = {\n date,\n title,\n color,\n };\n\n const keyDate = getEventFullDate(date); // extract the date-only part\n const keyMonth = getEventMonthYear(date); // extract the month-year part\n if (keyDate && keyMonth) {\n acc.eventsByDate[keyDate] = [\n ...(acc.eventsByDate[keyDate] || []),\n event,\n ];\n acc.eventsByMonth[keyMonth] = [\n ...(acc.eventsByMonth[keyMonth] || []),\n event,\n ];\n }\n\n return acc;\n },\n { eventsByDate: {}, eventsByMonth: {} }\n );\n }, [data, roleConfigs.color, roleConfigs.date, roleConfigs.title]);\n\n const value = useMemo(\n () => (isValidIsoDate(isoValue) ? dayjs(isoValue) : dayjs()),\n [isoValue]\n ); // https://day.js.org/docs/en/parse/now`\n const defaultValue = useMemo(\n () => (isValidIsoDate(isoDefaultValue) ? dayjs(isoDefaultValue) : dayjs()),\n [isoDefaultValue]\n ); // https://day.js.org/docs/en/parse/now\n\n const validRange: [Dayjs, Dayjs] | undefined = useMemo(() => {\n if (!isoValidRange) return undefined;\n\n const range = isoValidRange\n .filter((dateIso: string | undefined) => isValidIsoDate(dateIso))\n .map((d: any) => dayjs(d));\n\n if (range.length !== 2) return undefined;\n return [range[0], range[1]];\n }, [isoValidRange]);\n\n const key = useMemo(() => JSON.stringify(roleConfigs), [roleConfigs]);\n\n return (\n <Calendar\n {...rest}\n key={key}\n validRange={validRange}\n // for interactive / preview mode\n defaultValue={defaultValue}\n // for design mode\n value={value}\n dateCellRender={\n dateCellRender\n ? dateCellRender\n : (date: Dayjs) => (\n <EventCell\n events={eventsByDate[getEventFullDate(date.toISOString())!]}\n />\n )\n }\n monthCellRender={\n monthCellRender\n ? monthCellRender\n : (date: Dayjs) => (\n <EventCell\n events={eventsByMonth[getEventMonthYear(date.toISOString())!]}\n />\n )\n }\n dateFullCellRender={dateFullCellRender}\n monthFullCellRender={monthFullCellRender}\n />\n );\n}\n\ninterface StyleConfig {\n styles: Record<string, any>;\n align: \"left\" | \"center\" | \"right\";\n freeze: \"off\" | \"left\" | \"right\";\n}\n\nconst defaultColumnConfig = (): EventsConfig =>\n ({\n key: mkShortId(),\n isEditableExpr: () => false,\n disableSorting: false,\n sortByExpr: undefined,\n isHidden: false,\n formatting: {\n styles: {},\n align: \"left\",\n freeze: \"off\",\n },\n dataType: \"auto\" as const,\n role: undefined,\n } as const);\n\nconst roles = [\"date\", \"title\", \"color\", \"unset\"] as const;\n\nexport type Role = (typeof roles)[number];\n\nexport type EventsConfig = BaseColumnConfig & {\n isEditableExpr: RowFunc<boolean>;\n disableSorting: boolean;\n sortByExpr?: RowFunc<any>;\n formatting: StyleConfig;\n\n /**\n * The default inferred role, not the actual user-set role.\n */\n role: undefined | Role | \"unset\";\n};\n\n// This component is different from Table/Details since it has various different roles, so the UX is one of setting the choices for each role rather than a single list of fields.\n//\n// We first infer the defaults for each role.\n// This we always need to do because we want the choices to be 'stable'.\n// If the user sets one of the roles, without setting the others, we don't want to shift things around on the other roles as a result.\n// So the defaults need to always be there (they would only be irrelevant if all roles that would have had defaults were set/overridden by the user).\n//\n// Then, we layer on the user role choices.\n//\n// One UX wart is that unsetting a role will restore the default selection instead of clearing it.\n// User must know to actually set fieldId to none or (for arrays) remove the item.\n// Just another reason to fill in few roles by default.\nfunction useRoleDefinitions(\n data: NormalizedData | undefined,\n props: React.ComponentProps<typeof RichCalendar>\n) {\n const { fields, setControlContextData } = props;\n\n return React.useMemo(() => {\n const schema = data?.schema;\n if (!data || !schema) {\n return { normalized: [], finalRoles: {} };\n }\n\n function tagFieldConfigs(role: Role) {\n if (role !== \"unset\") {\n return ensureArray(props[role] ?? []).map((field) => {\n return {\n ...field,\n role,\n };\n });\n } else {\n return [];\n }\n }\n\n // This is only being computed to get the default role choices.\n const specifiedFieldsPartial = [\n ...tagFieldConfigs(\"date\"),\n ...tagFieldConfigs(\"color\"),\n ...tagFieldConfigs(\"title\"),\n ];\n\n function doDeriveFieldConfigs(mode: \"existing\" | \"defaults\") {\n return deriveFieldConfigs<EventsConfig>(\n mode === \"defaults\" ? [] : specifiedFieldsPartial,\n schema,\n (field) => ({\n ...defaultColumnConfig(),\n ...(field && {\n key: field.id,\n fieldId: field.id,\n title: field.label || field.id,\n // undefined means not yet determined in this routine, not 'unset'\n role: undefined,\n expr: (currentItem) => currentItem[field.id],\n }),\n })\n );\n }\n\n // Now we derive the defaults.\n //\n // We always start from a blank slate for this. We want stability - we don't want a situation where we are constantly shifting around the defaults based on what else the user has set.\n //\n // For instance,\n // (1) we derive `city` to be content,\n // (2) user sets `city` as title,\n // (3) we now derive a different content because `city` is used.\n const {\n mergedFields: defaultMergedFields,\n minimalFullLengthFields: defaultMinimalFullLengthFields,\n } = doDeriveFieldConfigs(\"defaults\");\n\n // Find a good default date field.\n // Filter mergedFields where there are mostly values (in the sampleRows) that are a string that looks like a date in ISO date-only or date-time format, or a timestamp\n // Of these, prefer the one with a name like date, timestamp.\n // Otherwise, prefer the one with a name with that substring.\n // Otherwise, pick any remaining one.\n if (\n data.data.length > 0 &&\n !defaultMergedFields.some((field) => field.role === \"date\")\n ) {\n const sampleRows = Array.from(\n new Set(\n [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map((i) =>\n Math.round((i / 9) * (data.data.length - 1))\n )\n )\n ).map((i) => data.data[i]);\n const dateFieldCandidates = defaultMergedFields.filter(\n (field) =>\n !field.role &&\n sampleRows.filter(\n (row) => field.fieldId && isLikeDate(row[field.fieldId])\n ).length >=\n sampleRows.length / 2\n );\n const dateField =\n dateFieldCandidates.find((f) =>\n f.fieldId?.match(/^(date|datetime|timestamp|eventdate)$/i)\n ) ??\n dateFieldCandidates.find((f) =>\n f.fieldId?.match(/.*(date|time|event).*/i)\n ) ??\n dateFieldCandidates[0];\n if (dateField) {\n dateField.role = \"date\";\n }\n }\n\n // Find a good default color field.\n // Filter mergedFields where there are mostly values (in the sampleRows) that are a string that looks like a color code.\n // Of these, prefer the one with a name like color.\n // Otherwise, prefer the one with a name with that substring.\n // Otherwise, pick any remaining one.\n if (\n data.data.length > 0 &&\n !defaultMergedFields.some((field) => field.role === \"color\")\n ) {\n const sampleRows = Array.from(\n new Set(\n [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map((i) =>\n Math.round((i / 9) * (data.data.length - 1))\n )\n )\n ).map((i) => data.data[i]);\n const colorFieldCandidates = defaultMergedFields.filter(\n (field) =>\n !field.role &&\n sampleRows.filter(\n (row) => field.fieldId && isLikeColor(row[field.fieldId])\n ).length >=\n sampleRows.length / 2\n );\n const colorField =\n colorFieldCandidates.find((f) =>\n f.fieldId?.match(/^(color|hex|rgb|hsl|rgba|cmyk|hsv|hsb)$/i)\n ) ??\n colorFieldCandidates.find((f) =>\n f.fieldId?.match(/.*(color|hex|rgb|hsl|rgba|cmyk|hsv|hsb).*/i)\n ) ??\n colorFieldCandidates[0];\n if (colorField) {\n colorField.role = \"color\";\n }\n }\n\n // Find a good default title field, just based on the field name.\n if (!defaultMergedFields.some((field) => field.role === \"title\")) {\n const titleField = defaultMergedFields.find(\n (field) =>\n !field.role &&\n field.fieldId?.toLowerCase().match(/^(title|name||event[ _-]?name)$/)\n );\n if (titleField) {\n titleField.role = \"title\";\n }\n }\n\n const fieldIdToDefaultRole = new Map(\n defaultMergedFields.map((f) => [f.fieldId, f.role])\n );\n for (const f of defaultMinimalFullLengthFields) {\n f.role = fieldIdToDefaultRole.get(f.fieldId);\n }\n\n // Now we have the defaults!\n //\n // We once again derive field configs, this time using existing props.\n // Then we add on the derived defaults for the \"real merged\" fields.\n //\n // Note this is kind of an awkward/wasteful use of deriveFieldConfigs since it was more for table columns originally, and this by-role usage is a different shape of problem. We're mainly using it to fill in / \"inflate\" the additional settings on these FieldConfigs. Haven't yet bothered finding a better utility interface.\n const { mergedFields, minimalFullLengthFields } =\n doDeriveFieldConfigs(\"existing\");\n\n const minimalFullLengthFieldsWithDefaults = [\n ...minimalFullLengthFields.filter((f) => f.role && f.role !== \"unset\"),\n ...defaultMinimalFullLengthFields.filter(\n (f) => f.role && f.role !== \"unset\" && !props[f.role]\n ),\n ];\n const mergedFieldsWithDefaults = [\n ...mergedFields.filter((f) => f.role && f.role !== \"unset\"),\n ...defaultMergedFields.filter(\n (f) => f.role && f.role !== \"unset\" && !props[f.role]\n ),\n ];\n\n // We now get by-role grouping which is needed by the component.\n const roleConfigs = ensure(\n groupBy(mergedFieldsWithDefaults, (f) => f.role)\n );\n\n const finalRoles: Partial<Record<Role, EventsConfig[]>> = {};\n for (const role of roles) {\n if (role !== \"unset\") {\n finalRoles[role] = maybe(props[role], ensureArray) ?? roleConfigs[role];\n }\n }\n\n setControlContextData?.({\n ...data,\n mergedFields: mergedFieldsWithDefaults,\n minimalFullLengthFields: minimalFullLengthFieldsWithDefaults,\n });\n\n const normalized = mergedFieldsWithDefaults;\n return { normalized, finalRoles };\n }, [data, setControlContextData, props]);\n}\n","import dayjs, { Dayjs } from \"dayjs\";\nimport { roleProp } from \"../common-prop-types\";\nimport {\n isValidIsoDate,\n Registerable,\n registerComponentHelper,\n} from \"../utils\";\nimport { RichCalendar } from \"./RichCalendar\";\n\nexport * from \"./RichCalendar\";\n\nexport const calendarHelpers = {\n states: {\n mode: {\n onChangeArgsToValue: (_date: Dayjs, mode: string) => mode,\n },\n selectedDate: {\n onChangeArgsToValue: (date: Dayjs) => dayjs(date).toISOString(),\n },\n },\n};\n\nexport const calendarComponentName = \"hostless-rich-calendar\";\n\nexport function registerRichCalendar(loader?: Registerable) {\n registerComponentHelper(loader, RichCalendar, {\n name: calendarComponentName,\n displayName: \"Calendar\",\n props: {\n data: {\n type: \"dataSourceOpData\" as any,\n displayName: \"Events\",\n description:\n \"The events data should be a list of records with some date, title and (optionally) color fields. The component will infer the date field from the provided data, but you can also explicitly specify that below.\",\n },\n title: roleProp({ role: \"title\" }),\n date: roleProp({ role: \"date\", singular: true }),\n color: roleProp({ role: \"color\", singular: true }),\n value: {\n // Must have a corresponding state and eventhandler for any prop that I want to be able to change in interactive mode.\n editOnly: true,\n uncontrolledProp: \"defaultValue\",\n type: \"dateString\",\n description: `The date selected by default as an ISO string`,\n validator: (value, ps) => {\n if (!ps.value) return true;\n if (!ps.validRange) return true;\n if (!isValidIsoDate(value)) return \"Not a valid ISO string.\";\n if (\n dayjs(value).isBefore(ps.validRange[0]) ||\n dayjs(value).isAfter(ps.validRange[1])\n )\n return \"Not within the valid range\";\n return true;\n },\n },\n mode: {\n type: \"choice\",\n options: [\"month\", \"year\"],\n description: \"The default display mode of the calendar.\",\n defaultValueHint: \"month\",\n },\n validRange: {\n type: \"dateRangeStrings\",\n description: \"Only allow selection of dates that lie within this range\",\n advanced: true,\n validator: (value, ps) => {\n if (!value) return true;\n if (!Array.isArray(value) || value.length !== 2)\n return \"Not an array with 2 items\";\n if (!isValidIsoDate(value[0]) || !isValidIsoDate(value[1]))\n return \"Min or max range is not in valid ISO date format.\";\n return true;\n },\n },\n headerRender: {\n type: \"slot\",\n renderPropParams: [\"headerProps\"],\n hidePlaceholder: true,\n displayName: \"Custom Header\",\n },\n dateCellRender: {\n type: \"slot\",\n renderPropParams: [\"dateProps\"],\n hidePlaceholder: true,\n displayName: \"Append Date Cell\",\n },\n dateFullCellRender: {\n type: \"slot\",\n renderPropParams: [\"dateProps\"],\n hidePlaceholder: true,\n displayName: \"Custom Date Cell\",\n },\n monthCellRender: {\n type: \"slot\",\n renderPropParams: [\"dateProps\"],\n hidePlaceholder: true,\n displayName: \"Append Month Cell\",\n },\n monthFullCellRender: {\n type: \"slot\",\n renderPropParams: [\"dateProps\"],\n hidePlaceholder: true,\n displayName: \"Custom Month Cell\",\n },\n onPanelChange: {\n type: \"eventHandler\",\n description:\n \"Triggers when the calendar mode changes (e.g. from month to year mode)\",\n argTypes: [\n { name: \"date\", type: \"object\" },\n { name: \"mode\", type: \"string\" },\n ],\n },\n onChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"date\", type: \"object\" }],\n },\n },\n states: {\n mode: {\n type: \"writable\",\n valueProp: \"mode\",\n onChangeProp: \"onPanelChange\",\n variableType: \"text\",\n ...calendarHelpers.states.mode,\n },\n selectedDate: {\n type: \"writable\",\n valueProp: \"value\",\n onChangeProp: \"onChange\",\n variableType: \"text\",\n ...calendarHelpers.states.selectedDate,\n },\n },\n componentHelpers: {\n helpers: calendarHelpers,\n importName: \"calendarHelpers\",\n importPath: \"@plasmicpkgs/plasmic-rich-components/skinny/rich-calendar\",\n },\n importPath: \"@plasmicpkgs/plasmic-rich-components/skinny/rich-calendar\",\n importName: \"RichCalendar\",\n });\n}\n"],"names":["__spreadValues","_a"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../src/rich-calendar/RichCalendar.tsx","../../src/rich-calendar/index.tsx"],"sourcesContent":["import {\n deriveFieldConfigs,\n NormalizedData,\n useNormalizedData,\n} from \"@plasmicapp/data-sources\";\nimport { parseDate } from \"@plasmicpkgs/luxon-parser\";\nimport { Badge, Calendar } from \"antd\";\nimport dayjs, { Dayjs } from \"dayjs\";\nimport groupBy from \"lodash/groupBy\";\nimport React, { useMemo } from \"react\";\nimport { BaseColumnConfig, FieldfulProps, RowFunc } from \"../field-mappings\";\nimport { getFieldAggregateValue } from \"../formatting\";\nimport {\n ensure,\n ensureArray,\n isLikeColor,\n isLikeDate,\n isValidIsoDate,\n maybe,\n mkShortId,\n} from \"../utils\";\n\nimport localeData from \"dayjs/plugin/localeData\";\nimport weekday from \"dayjs/plugin/weekday\";\n\ndayjs.extend(weekday);\ndayjs.extend(localeData);\n\ntype RichCalendarPropsBase = Omit<\n React.ComponentProps<typeof Calendar>,\n \"value\" | \"defaultValue\" | \"validRange\"\n>;\n\nexport interface RichCalendarProps\n extends FieldfulProps<EventsConfig>,\n RichCalendarPropsBase {\n color: EventsConfig[];\n date: EventsConfig[];\n title: EventsConfig[];\n value: string;\n defaultValue: string;\n validRange: [string | undefined, string | undefined] | undefined;\n}\n\ninterface Event {\n date: string;\n title: string;\n color?: string;\n}\n\nfunction getEventFullDate(date?: string): string | undefined {\n const parsed = parseDate(date);\n if (!parsed) {\n return undefined;\n }\n const yyyy = parsed.getFullYear();\n const mm = (parsed.getMonth() + 1).toString().padStart(2, \"0\");\n const dd = parsed.getDate().toString().padStart(2, \"0\");\n return `${yyyy}-${mm}-${dd}`;\n}\n\nfunction getEventMonthYear(date?: string): string | undefined {\n return getEventFullDate(date)?.substring(0, 7);\n}\n\nfunction EventCell({ events }: { events: Event[] }) {\n if (!events || !events.length) {\n return null;\n }\n return (\n <ul style={{ all: \"unset\" }}>\n {events.map((e) => (\n <li key={JSON.stringify(e)} style={{ all: \"unset\", display: \"block\" }}>\n <Badge color={e.color || \"green\"} text={e.title} />\n </li>\n ))}\n </ul>\n );\n}\n\nexport function RichCalendar(props: RichCalendarProps) {\n const {\n data: rawData = {\n data: [],\n schema: {\n id: \"inferred\",\n fields: [\n {\n id: \"id\",\n type: \"string\",\n readOnly: false,\n },\n ],\n },\n },\n value: isoValue,\n defaultValue: isoDefaultValue,\n validRange: isoValidRange,\n dateCellRender,\n dateFullCellRender,\n monthCellRender,\n monthFullCellRender,\n ...rest\n } = props;\n const data = useNormalizedData(rawData);\n\n const { finalRoles: roleConfigs } = useRoleDefinitions(data, props);\n const {\n eventsByDate,\n eventsByMonth,\n }: {\n eventsByDate: Record<string, Event[]>;\n eventsByMonth: Record<string, Event[]>;\n } = useMemo(() => {\n if (!data) {\n return { eventsByDate: {}, eventsByMonth: {} };\n }\n return data?.data.reduce(\n (acc: any, item: any) => {\n const date = getFieldAggregateValue(item, roleConfigs.date);\n const title = getFieldAggregateValue(item, roleConfigs.title);\n const color = getFieldAggregateValue(item, roleConfigs.color);\n\n const event = {\n date,\n title,\n color,\n };\n\n const keyDate = getEventFullDate(date); // extract the date-only part\n const keyMonth = getEventMonthYear(date); // extract the month-year part\n if (keyDate && keyMonth) {\n acc.eventsByDate[keyDate] = [\n ...(acc.eventsByDate[keyDate] || []),\n event,\n ];\n acc.eventsByMonth[keyMonth] = [\n ...(acc.eventsByMonth[keyMonth] || []),\n event,\n ];\n }\n\n return acc;\n },\n { eventsByDate: {}, eventsByMonth: {} }\n );\n }, [data, roleConfigs.color, roleConfigs.date, roleConfigs.title]);\n\n const value = useMemo(\n () => (isValidIsoDate(isoValue) ? dayjs(isoValue) : dayjs()),\n [isoValue]\n ); // https://day.js.org/docs/en/parse/now`\n const defaultValue = useMemo(\n () => (isValidIsoDate(isoDefaultValue) ? dayjs(isoDefaultValue) : dayjs()),\n [isoDefaultValue]\n ); // https://day.js.org/docs/en/parse/now\n\n const validRange: [Dayjs, Dayjs] | undefined = useMemo(() => {\n if (!isoValidRange) {\n return undefined;\n }\n\n const range = isoValidRange\n .filter((dateIso: string | undefined) => isValidIsoDate(dateIso))\n .map((d: any) => dayjs(d));\n\n if (range.length !== 2) {\n return undefined;\n }\n return [range[0], range[1]];\n }, [isoValidRange]);\n\n const key = useMemo(() => JSON.stringify(roleConfigs), [roleConfigs]);\n\n return (\n <Calendar\n {...rest}\n key={key}\n validRange={validRange}\n // for interactive / preview mode\n defaultValue={defaultValue}\n // for design mode\n value={value}\n dateCellRender={\n dateCellRender\n ? dateCellRender\n : (date: Dayjs) => (\n <EventCell\n events={eventsByDate[getEventFullDate(date.toISOString())!]}\n />\n )\n }\n monthCellRender={\n monthCellRender\n ? monthCellRender\n : (date: Dayjs) => (\n <EventCell\n events={eventsByMonth[getEventMonthYear(date.toISOString())!]}\n />\n )\n }\n dateFullCellRender={dateFullCellRender}\n monthFullCellRender={monthFullCellRender}\n />\n );\n}\n\ninterface StyleConfig {\n styles: Record<string, any>;\n align: \"left\" | \"center\" | \"right\";\n freeze: \"off\" | \"left\" | \"right\";\n}\n\nconst defaultColumnConfig = (): EventsConfig =>\n ({\n key: mkShortId(),\n isEditableExpr: () => false,\n disableSorting: false,\n sortByExpr: undefined,\n isHidden: false,\n formatting: {\n styles: {},\n align: \"left\",\n freeze: \"off\",\n },\n dataType: \"auto\" as const,\n role: undefined,\n } as const);\n\nconst roles = [\"date\", \"title\", \"color\", \"unset\"] as const;\n\nexport type Role = (typeof roles)[number];\n\nexport type EventsConfig = BaseColumnConfig & {\n isEditableExpr: RowFunc<boolean>;\n disableSorting: boolean;\n sortByExpr?: RowFunc<any>;\n formatting: StyleConfig;\n\n /**\n * The default inferred role, not the actual user-set role.\n */\n role: undefined | Role | \"unset\";\n};\n\n// This component is different from Table/Details since it has various different roles, so the UX is one of setting the choices for each role rather than a single list of fields.\n//\n// We first infer the defaults for each role.\n// This we always need to do because we want the choices to be 'stable'.\n// If the user sets one of the roles, without setting the others, we don't want to shift things around on the other roles as a result.\n// So the defaults need to always be there (they would only be irrelevant if all roles that would have had defaults were set/overridden by the user).\n//\n// Then, we layer on the user role choices.\n//\n// One UX wart is that unsetting a role will restore the default selection instead of clearing it.\n// User must know to actually set fieldId to none or (for arrays) remove the item.\n// Just another reason to fill in few roles by default.\nfunction useRoleDefinitions(\n data: NormalizedData | undefined,\n props: React.ComponentProps<typeof RichCalendar>\n) {\n const { setControlContextData } = props;\n\n return React.useMemo(() => {\n const schema = data?.schema;\n if (!data || !schema) {\n return { normalized: [], finalRoles: {} };\n }\n\n function tagFieldConfigs(role: Role) {\n if (role !== \"unset\") {\n return ensureArray(props[role] ?? []).map((field) => {\n return {\n ...field,\n role,\n };\n });\n } else {\n return [];\n }\n }\n\n // This is only being computed to get the default role choices.\n const specifiedFieldsPartial = [\n ...tagFieldConfigs(\"date\"),\n ...tagFieldConfigs(\"color\"),\n ...tagFieldConfigs(\"title\"),\n ];\n\n function doDeriveFieldConfigs(mode: \"existing\" | \"defaults\") {\n return deriveFieldConfigs<EventsConfig>(\n mode === \"defaults\" ? [] : specifiedFieldsPartial,\n schema,\n (field) => ({\n ...defaultColumnConfig(),\n ...(field && {\n key: field.id,\n fieldId: field.id,\n title: field.label || field.id,\n // undefined means not yet determined in this routine, not 'unset'\n role: undefined,\n expr: (currentItem) => currentItem[field.id],\n }),\n })\n );\n }\n\n // Now we derive the defaults.\n //\n // We always start from a blank slate for this. We want stability - we don't want a situation where we are constantly shifting around the defaults based on what else the user has set.\n //\n // For instance,\n // (1) we derive `city` to be content,\n // (2) user sets `city` as title,\n // (3) we now derive a different content because `city` is used.\n const {\n mergedFields: defaultMergedFields,\n minimalFullLengthFields: defaultMinimalFullLengthFields,\n } = doDeriveFieldConfigs(\"defaults\");\n\n // Find a good default date field.\n // Filter mergedFields where there are mostly values (in the sampleRows) that are a string that looks like a date in ISO date-only or date-time format, or a timestamp\n // Of these, prefer the one with a name like date, timestamp.\n // Otherwise, prefer the one with a name with that substring.\n // Otherwise, pick any remaining one.\n if (\n data.data.length > 0 &&\n !defaultMergedFields.some((field) => field.role === \"date\")\n ) {\n const sampleRows = Array.from(\n new Set(\n [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map((i) =>\n Math.round((i / 9) * (data.data.length - 1))\n )\n )\n ).map((i) => data.data[i]);\n const dateFieldCandidates = defaultMergedFields.filter(\n (field) =>\n !field.role &&\n sampleRows.filter(\n (row) => field.fieldId && isLikeDate(row[field.fieldId])\n ).length >=\n sampleRows.length / 2\n );\n const dateField =\n dateFieldCandidates.find((f) =>\n f.fieldId?.match(/^(date|datetime|timestamp|eventdate)$/i)\n ) ??\n dateFieldCandidates.find((f) =>\n f.fieldId?.match(/.*(date|time|event).*/i)\n ) ??\n dateFieldCandidates[0];\n if (dateField) {\n dateField.role = \"date\";\n }\n }\n\n // Find a good default color field.\n // Filter mergedFields where there are mostly values (in the sampleRows) that are a string that looks like a color code.\n // Of these, prefer the one with a name like color.\n // Otherwise, prefer the one with a name with that substring.\n // Otherwise, pick any remaining one.\n if (\n data.data.length > 0 &&\n !defaultMergedFields.some((field) => field.role === \"color\")\n ) {\n const sampleRows = Array.from(\n new Set(\n [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map((i) =>\n Math.round((i / 9) * (data.data.length - 1))\n )\n )\n ).map((i) => data.data[i]);\n const colorFieldCandidates = defaultMergedFields.filter(\n (field) =>\n !field.role &&\n sampleRows.filter(\n (row) => field.fieldId && isLikeColor(row[field.fieldId])\n ).length >=\n sampleRows.length / 2\n );\n const colorField =\n colorFieldCandidates.find((f) =>\n f.fieldId?.match(/^(color|hex|rgb|hsl|rgba|cmyk|hsv|hsb)$/i)\n ) ??\n colorFieldCandidates.find((f) =>\n f.fieldId?.match(/.*(color|hex|rgb|hsl|rgba|cmyk|hsv|hsb).*/i)\n ) ??\n colorFieldCandidates[0];\n if (colorField) {\n colorField.role = \"color\";\n }\n }\n\n // Find a good default title field, just based on the field name.\n if (!defaultMergedFields.some((field) => field.role === \"title\")) {\n const titleField = defaultMergedFields.find(\n (field) =>\n !field.role &&\n field.fieldId?.toLowerCase().match(/^(title|name||event[ _-]?name)$/)\n );\n if (titleField) {\n titleField.role = \"title\";\n }\n }\n\n const fieldIdToDefaultRole = new Map(\n defaultMergedFields.map((f) => [f.fieldId, f.role])\n );\n for (const f of defaultMinimalFullLengthFields) {\n f.role = fieldIdToDefaultRole.get(f.fieldId);\n }\n\n // Now we have the defaults!\n //\n // We once again derive field configs, this time using existing props.\n // Then we add on the derived defaults for the \"real merged\" fields.\n //\n // Note this is kind of an awkward/wasteful use of deriveFieldConfigs since it was more for table columns originally, and this by-role usage is a different shape of problem. We're mainly using it to fill in / \"inflate\" the additional settings on these FieldConfigs. Haven't yet bothered finding a better utility interface.\n const { mergedFields, minimalFullLengthFields } =\n doDeriveFieldConfigs(\"existing\");\n\n const minimalFullLengthFieldsWithDefaults = [\n ...minimalFullLengthFields.filter((f) => f.role && f.role !== \"unset\"),\n ...defaultMinimalFullLengthFields.filter(\n (f) => f.role && f.role !== \"unset\" && !props[f.role]\n ),\n ];\n const mergedFieldsWithDefaults = [\n ...mergedFields.filter((f) => f.role && f.role !== \"unset\"),\n ...defaultMergedFields.filter(\n (f) => f.role && f.role !== \"unset\" && !props[f.role]\n ),\n ];\n\n // We now get by-role grouping which is needed by the component.\n const roleConfigs = ensure(\n groupBy(mergedFieldsWithDefaults, (f) => f.role)\n );\n\n const finalRoles: Partial<Record<Role, EventsConfig[]>> = {};\n for (const role of roles) {\n if (role !== \"unset\") {\n finalRoles[role] = maybe(props[role], ensureArray) ?? roleConfigs[role];\n }\n }\n\n setControlContextData?.({\n ...data,\n mergedFields: mergedFieldsWithDefaults,\n minimalFullLengthFields: minimalFullLengthFieldsWithDefaults,\n });\n\n const normalized = mergedFieldsWithDefaults;\n return { normalized, finalRoles };\n }, [data, setControlContextData, props]);\n}\n","import dayjs, { Dayjs } from \"dayjs\";\nimport { roleProp } from \"../common-prop-types\";\nimport {\n isValidIsoDate,\n Registerable,\n registerComponentHelper,\n} from \"../utils\";\nimport { RichCalendar, RichCalendarProps } from \"./RichCalendar\";\n\nexport * from \"./RichCalendar\";\n\nexport const calendarHelpers = {\n states: {\n mode: {\n onChangeArgsToValue: (_date: Dayjs, mode: string) => mode,\n },\n selectedDate: {\n onChangeArgsToValue: (date: Dayjs) => dayjs(date).toISOString(),\n },\n },\n};\n\nexport const calendarComponentName = \"hostless-rich-calendar\";\n\nexport function registerRichCalendar(loader?: Registerable) {\n registerComponentHelper(loader, RichCalendar, {\n name: calendarComponentName,\n displayName: \"Calendar\",\n props: {\n data: {\n type: \"dataSourceOpData\" as any,\n displayName: \"Events\",\n description:\n \"The events data should be a list of records with some date, title and (optionally) color fields. The component will infer the date field from the provided data, but you can also explicitly specify that below.\",\n },\n title: roleProp({ role: \"title\" }),\n date: roleProp({ role: \"date\", singular: true }),\n color: roleProp({ role: \"color\", singular: true }),\n value: {\n // Must have a corresponding state and eventhandler for any prop that I want to be able to change in interactive mode.\n editOnly: true,\n uncontrolledProp: \"defaultValue\",\n type: \"dateString\",\n description: `The date selected by default as an ISO string`,\n validator: (value: string, ps: RichCalendarProps) => {\n if (!ps.value) {\n return true;\n }\n if (!ps.validRange) {\n return true;\n }\n if (!isValidIsoDate(value)) {\n return \"Not a valid ISO string.\";\n }\n if (\n dayjs(value).isBefore(ps.validRange[0]) ||\n dayjs(value).isAfter(ps.validRange[1])\n ) {\n return \"Not within the valid range\";\n }\n return true;\n },\n },\n mode: {\n type: \"choice\",\n options: [\"month\", \"year\"],\n description: \"The default display mode of the calendar.\",\n defaultValueHint: \"month\",\n },\n validRange: {\n type: \"dateRangeStrings\",\n description: \"Only allow selection of dates that lie within this range\",\n advanced: true,\n validator: (value: [string, string], _ps: RichCalendarProps) => {\n if (!value) {\n return true;\n }\n if (!Array.isArray(value) || value.length !== 2) {\n return \"Not an array with 2 items\";\n }\n if (!isValidIsoDate(value[0]) || !isValidIsoDate(value[1])) {\n return \"Min or max range is not in valid ISO date format.\";\n }\n return true;\n },\n },\n headerRender: {\n type: \"slot\",\n renderPropParams: [\"headerProps\"],\n hidePlaceholder: true,\n displayName: \"Custom Header\",\n },\n dateCellRender: {\n type: \"slot\",\n renderPropParams: [\"dateProps\"],\n hidePlaceholder: true,\n displayName: \"Append Date Cell\",\n },\n dateFullCellRender: {\n type: \"slot\",\n renderPropParams: [\"dateProps\"],\n hidePlaceholder: true,\n displayName: \"Custom Date Cell\",\n },\n monthCellRender: {\n type: \"slot\",\n renderPropParams: [\"dateProps\"],\n hidePlaceholder: true,\n displayName: \"Append Month Cell\",\n },\n monthFullCellRender: {\n type: \"slot\",\n renderPropParams: [\"dateProps\"],\n hidePlaceholder: true,\n displayName: \"Custom Month Cell\",\n },\n onPanelChange: {\n type: \"eventHandler\",\n description:\n \"Triggers when the calendar mode changes (e.g. from month to year mode)\",\n argTypes: [\n { name: \"date\", type: \"object\" },\n { name: \"mode\", type: \"string\" },\n ],\n },\n onChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"date\", type: \"object\" }],\n },\n },\n states: {\n mode: {\n type: \"writable\",\n valueProp: \"mode\",\n onChangeProp: \"onPanelChange\",\n variableType: \"text\",\n ...calendarHelpers.states.mode,\n },\n selectedDate: {\n type: \"writable\",\n valueProp: \"value\",\n onChangeProp: \"onChange\",\n variableType: \"text\",\n ...calendarHelpers.states.selectedDate,\n },\n },\n componentHelpers: {\n helpers: calendarHelpers,\n importName: \"calendarHelpers\",\n importPath: \"@plasmicpkgs/plasmic-rich-components/skinny/rich-calendar\",\n },\n importPath: \"@plasmicpkgs/plasmic-rich-components/skinny/rich-calendar\",\n importName: \"RichCalendar\",\n });\n}\n"],"names":["__spreadValues","_a"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBA,KAAA,CAAM,OAAO,OAAO,CAAA,CAAA;AACpB,KAAA,CAAM,OAAO,UAAU,CAAA,CAAA;AAwBvB,SAAS,iBAAiB,IAAmC,EAAA;AAC3D,EAAM,MAAA,MAAA,GAAS,UAAU,IAAI,CAAA,CAAA;AAC7B,EAAA,IAAI,CAAC,MAAQ,EAAA;AACX,IAAO,OAAA,KAAA,CAAA,CAAA;AAAA,GACT;AACA,EAAM,MAAA,IAAA,GAAO,OAAO,WAAY,EAAA,CAAA;AAChC,EAAM,MAAA,EAAA,GAAA,CAAM,OAAO,QAAS,EAAA,GAAI,GAAG,QAAS,EAAA,CAAE,QAAS,CAAA,CAAA,EAAG,GAAG,CAAA,CAAA;AAC7D,EAAM,MAAA,EAAA,GAAK,OAAO,OAAQ,EAAA,CAAE,UAAW,CAAA,QAAA,CAAS,GAAG,GAAG,CAAA,CAAA;AACtD,EAAO,OAAA,CAAA,EAAG,QAAQ,EAAM,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA;AAC1B,CAAA;AAEA,SAAS,kBAAkB,IAAmC,EAAA;AA7D9D,EAAA,IAAA,EAAA,CAAA;AA8DE,EAAA,OAAA,CAAO,EAAiB,GAAA,gBAAA,CAAA,IAAI,CAArB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAwB,UAAU,CAAG,EAAA,CAAA,CAAA,CAAA;AAC9C,CAAA;AAEA,SAAS,SAAA,CAAU,EAAE,MAAA,EAA+B,EAAA;AAClD,EAAA,IAAI,CAAC,MAAA,IAAU,CAAC,MAAA,CAAO,MAAQ,EAAA;AAC7B,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACA,EAAA,2CACG,IAAG,EAAA,EAAA,KAAA,EAAO,EAAE,GAAA,EAAK,SACf,EAAA,EAAA,MAAA,CAAO,GAAI,CAAA,CAAC,sBACV,KAAA,CAAA,aAAA,CAAA,IAAA,EAAA,EAAG,GAAK,EAAA,IAAA,CAAK,UAAU,CAAC,CAAA,EAAG,KAAO,EAAA,EAAE,KAAK,OAAS,EAAA,OAAA,EAAS,OAAQ,EAAA,EAAA,sCACjE,KAAM,EAAA,EAAA,KAAA,EAAO,CAAE,CAAA,KAAA,IAAS,SAAS,IAAM,EAAA,CAAA,CAAE,KAAO,EAAA,CACnD,CACD,CACH,CAAA,CAAA;AAEJ,CAAA;AAEO,SAAS,aAAa,KAA0B,EAAA;AACrD,EAAA,MAsBI,EArBF,GAAA,KAAA,EAAA;AAAA,IAAA,IAAA,EAAM,OAAU,GAAA;AAAA,MACd,MAAM,EAAC;AAAA,MACP,MAAQ,EAAA;AAAA,QACN,EAAI,EAAA,UAAA;AAAA,QACJ,MAAQ,EAAA;AAAA,UACN;AAAA,YACE,EAAI,EAAA,IAAA;AAAA,YACJ,IAAM,EAAA,QAAA;AAAA,YACN,QAAU,EAAA,KAAA;AAAA,WACZ;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAAA,IACA,KAAO,EAAA,QAAA;AAAA,IACP,YAAc,EAAA,eAAA;AAAA,IACd,UAAY,EAAA,aAAA;AAAA,IACZ,cAAA;AAAA,IACA,kBAAA;AAAA,IACA,eAAA;AAAA,IACA,mBAAA;AAAA,GArGJ,GAuGM,EADC,EAAA,IAAA,GAAA,SAAA,CACD,EADC,EAAA;AAAA,IApBH,MAAA;AAAA,IAaA,OAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,IACA,gBAAA;AAAA,IACA,oBAAA;AAAA,IACA,iBAAA;AAAA,IACA,qBAAA;AAAA,GAAA,CAAA,CAAA;AAGF,EAAM,MAAA,IAAA,GAAO,kBAAkB,OAAO,CAAA,CAAA;AAEtC,EAAA,MAAM,EAAE,UAAY,EAAA,WAAA,EAAgB,GAAA,kBAAA,CAAmB,MAAM,KAAK,CAAA,CAAA;AAClE,EAAM,MAAA;AAAA,IACJ,YAAA;AAAA,IACA,aAAA;AAAA,GACF,GAGI,QAAQ,MAAM;AAChB,IAAA,IAAI,CAAC,IAAM,EAAA;AACT,MAAA,OAAO,EAAE,YAAc,EAAA,EAAI,EAAA,aAAA,EAAe,EAAG,EAAA,CAAA;AAAA,KAC/C;AACA,IAAA,OAAO,6BAAM,IAAK,CAAA,MAAA;AAAA,MAChB,CAAC,KAAU,IAAc,KAAA;AACvB,QAAA,MAAM,IAAO,GAAA,sBAAA,CAAuB,IAAM,EAAA,WAAA,CAAY,IAAI,CAAA,CAAA;AAC1D,QAAA,MAAM,KAAQ,GAAA,sBAAA,CAAuB,IAAM,EAAA,WAAA,CAAY,KAAK,CAAA,CAAA;AAC5D,QAAA,MAAM,KAAQ,GAAA,sBAAA,CAAuB,IAAM,EAAA,WAAA,CAAY,KAAK,CAAA,CAAA;AAE5D,QAAA,MAAM,KAAQ,GAAA;AAAA,UACZ,IAAA;AAAA,UACA,KAAA;AAAA,UACA,KAAA;AAAA,SACF,CAAA;AAEA,QAAM,MAAA,OAAA,GAAU,iBAAiB,IAAI,CAAA,CAAA;AACrC,QAAM,MAAA,QAAA,GAAW,kBAAkB,IAAI,CAAA,CAAA;AACvC,QAAA,IAAI,WAAW,QAAU,EAAA;AACvB,UAAI,GAAA,CAAA,YAAA,CAAa,OAAO,CAAI,GAAA;AAAA,YAC1B,GAAI,GAAA,CAAI,YAAa,CAAA,OAAO,KAAK,EAAC;AAAA,YAClC,KAAA;AAAA,WACF,CAAA;AACA,UAAI,GAAA,CAAA,aAAA,CAAc,QAAQ,CAAI,GAAA;AAAA,YAC5B,GAAI,GAAA,CAAI,aAAc,CAAA,QAAQ,KAAK,EAAC;AAAA,YACpC,KAAA;AAAA,WACF,CAAA;AAAA,SACF;AAEA,QAAO,OAAA,GAAA,CAAA;AAAA,OACT;AAAA,MACA,EAAE,YAAc,EAAA,EAAI,EAAA,aAAA,EAAe,EAAG,EAAA;AAAA,KAAA,CAAA;AAAA,GAE1C,EAAG,CAAC,IAAM,EAAA,WAAA,CAAY,OAAO,WAAY,CAAA,IAAA,EAAM,WAAY,CAAA,KAAK,CAAC,CAAA,CAAA;AAEjE,EAAA,MAAM,KAAQ,GAAA,OAAA;AAAA,IACZ,MAAO,cAAe,CAAA,QAAQ,IAAI,KAAM,CAAA,QAAQ,IAAI,KAAM,EAAA;AAAA,IAC1D,CAAC,QAAQ,CAAA;AAAA,GACX,CAAA;AACA,EAAA,MAAM,YAAe,GAAA,OAAA;AAAA,IACnB,MAAO,cAAe,CAAA,eAAe,IAAI,KAAM,CAAA,eAAe,IAAI,KAAM,EAAA;AAAA,IACxE,CAAC,eAAe,CAAA;AAAA,GAClB,CAAA;AAEA,EAAM,MAAA,UAAA,GAAyC,QAAQ,MAAM;AAC3D,IAAA,IAAI,CAAC,aAAe,EAAA;AAClB,MAAO,OAAA,KAAA,CAAA,CAAA;AAAA,KACT;AAEA,IAAA,MAAM,KAAQ,GAAA,aAAA,CACX,MAAO,CAAA,CAAC,YAAgC,cAAe,CAAA,OAAO,CAAC,CAAA,CAC/D,GAAI,CAAA,CAAC,CAAW,KAAA,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAE3B,IAAI,IAAA,KAAA,CAAM,WAAW,CAAG,EAAA;AACtB,MAAO,OAAA,KAAA,CAAA,CAAA;AAAA,KACT;AACA,IAAA,OAAO,CAAC,KAAM,CAAA,CAAC,CAAG,EAAA,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AAAA,GAC5B,EAAG,CAAC,aAAa,CAAC,CAAA,CAAA;AAElB,EAAM,MAAA,GAAA,GAAM,QAAQ,MAAM,IAAA,CAAK,UAAU,WAAW,CAAA,EAAG,CAAC,WAAW,CAAC,CAAA,CAAA;AAEpE,EACE,uBAAA,KAAA,CAAA,aAAA;AAAA,IAAC,QAAA;AAAA,IAAA,aAAA,CAAAA,gBAAA,CAAA,EAAA,EACK,IADL,CAAA,EAAA;AAAA,MAEC,GAAA;AAAA,MACA,UAAA;AAAA,MAEA,YAAA;AAAA,MAEA,KAAA;AAAA,MACA,cACE,EAAA,cAAA,GACI,cACA,GAAA,CAAC,IACC,qBAAA,KAAA,CAAA,aAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,QAAQ,YAAa,CAAA,gBAAA,CAAiB,IAAK,CAAA,WAAA,EAAa,CAAE,CAAA;AAAA,SAAA;AAAA,OAC5D;AAAA,MAGR,eACE,EAAA,eAAA,GACI,eACA,GAAA,CAAC,IACC,qBAAA,KAAA,CAAA,aAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,QAAQ,aAAc,CAAA,iBAAA,CAAkB,IAAK,CAAA,WAAA,EAAa,CAAE,CAAA;AAAA,SAAA;AAAA,OAC9D;AAAA,MAGR,kBAAA;AAAA,MACA,mBAAA;AAAA,KAAA,CAAA;AAAA,GACF,CAAA;AAEJ,CAAA;AAQA,MAAM,sBAAsB,OACzB;AAAA,EACC,KAAK,SAAU,EAAA;AAAA,EACf,gBAAgB,MAAM,KAAA;AAAA,EACtB,cAAgB,EAAA,KAAA;AAAA,EAChB,UAAY,EAAA,KAAA,CAAA;AAAA,EACZ,QAAU,EAAA,KAAA;AAAA,EACV,UAAY,EAAA;AAAA,IACV,QAAQ,EAAC;AAAA,IACT,KAAO,EAAA,MAAA;AAAA,IACP,MAAQ,EAAA,KAAA;AAAA,GACV;AAAA,EACA,QAAU,EAAA,MAAA;AAAA,EACV,IAAM,EAAA,KAAA,CAAA;AACR,CAAA,CAAA,CAAA;AAEF,MAAM,KAAQ,GAAA,CAAC,MAAQ,EAAA,OAAA,EAAS,SAAS,OAAO,CAAA,CAAA;AA4BhD,SAAS,kBAAA,CACP,MACA,KACA,EAAA;AACA,EAAM,MAAA,EAAE,uBAA0B,GAAA,KAAA,CAAA;AAElC,EAAO,OAAA,KAAA,CAAM,QAAQ,MAAM;AAvQ7B,IAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAwQI,IAAA,MAAM,SAAS,IAAM,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAA,MAAA,CAAA;AACrB,IAAI,IAAA,CAAC,IAAQ,IAAA,CAAC,MAAQ,EAAA;AACpB,MAAA,OAAO,EAAE,UAAY,EAAA,EAAI,EAAA,UAAA,EAAY,EAAG,EAAA,CAAA;AAAA,KAC1C;AAEA,IAAA,SAAS,gBAAgB,IAAY,EAAA;AA7QzC,MAAAC,IAAAA,GAAAA,CAAAA;AA8QM,MAAA,IAAI,SAAS,OAAS,EAAA;AACpB,QAAA,OAAO,WAAYA,CAAAA,CAAAA,GAAAA,GAAA,KAAM,CAAA,IAAI,CAAV,KAAA,IAAA,GAAAA,GAAe,GAAA,EAAE,CAAA,CAAE,GAAI,CAAA,CAAC,KAAU,KAAA;AACnD,UAAA,OAAO,mCACF,KADE,CAAA,EAAA;AAAA,YAEL,IAAA;AAAA,WACF,CAAA,CAAA;AAAA,SACD,CAAA,CAAA;AAAA,OACI,MAAA;AACL,QAAA,OAAO,EAAC,CAAA;AAAA,OACV;AAAA,KACF;AAGA,IAAA,MAAM,sBAAyB,GAAA;AAAA,MAC7B,GAAG,gBAAgB,MAAM,CAAA;AAAA,MACzB,GAAG,gBAAgB,OAAO,CAAA;AAAA,MAC1B,GAAG,gBAAgB,OAAO,CAAA;AAAA,KAC5B,CAAA;AAEA,IAAA,SAAS,qBAAqB,IAA+B,EAAA;AAC3D,MAAO,OAAA,kBAAA;AAAA,QACL,IAAA,KAAS,UAAa,GAAA,EAAK,GAAA,sBAAA;AAAA,QAC3B,MAAA;AAAA,QACA,CAAC,KAAA,KAAWD,gBACP,CAAAA,gBAAA,CAAA,EAAA,EAAA,mBAAA,KACC,KAAS,IAAA;AAAA,UACX,KAAK,KAAM,CAAA,EAAA;AAAA,UACX,SAAS,KAAM,CAAA,EAAA;AAAA,UACf,KAAA,EAAO,KAAM,CAAA,KAAA,IAAS,KAAM,CAAA,EAAA;AAAA;AAAA,UAE5B,IAAM,EAAA,KAAA,CAAA;AAAA,UACN,IAAM,EAAA,CAAC,WAAgB,KAAA,WAAA,CAAY,MAAM,EAAE,CAAA;AAAA,SAC7C,CAAA;AAAA,OAEJ,CAAA;AAAA,KACF;AAUA,IAAM,MAAA;AAAA,MACJ,YAAc,EAAA,mBAAA;AAAA,MACd,uBAAyB,EAAA,8BAAA;AAAA,KAC3B,GAAI,qBAAqB,UAAU,CAAA,CAAA;AAOnC,IAAA,IACE,IAAK,CAAA,IAAA,CAAK,MAAS,GAAA,CAAA,IACnB,CAAC,mBAAA,CAAoB,IAAK,CAAA,CAAC,KAAU,KAAA,KAAA,CAAM,IAAS,KAAA,MAAM,CAC1D,EAAA;AACA,MAAA,MAAM,aAAa,KAAM,CAAA,IAAA;AAAA,QACvB,IAAI,GAAA;AAAA,UACF,CAAC,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAC,CAAE,CAAA,GAAA;AAAA,YAAI,CAAC,MAClC,IAAK,CAAA,KAAA,CAAO,IAAI,CAAM,IAAA,IAAA,CAAK,IAAK,CAAA,MAAA,GAAS,CAAE,CAAA,CAAA;AAAA,WAC7C;AAAA,SACF;AAAA,QACA,GAAI,CAAA,CAAC,MAAM,IAAK,CAAA,IAAA,CAAK,CAAC,CAAC,CAAA,CAAA;AACzB,MAAA,MAAM,sBAAsB,mBAAoB,CAAA,MAAA;AAAA,QAC9C,CAAC,KAAA,KACC,CAAC,KAAA,CAAM,QACP,UAAW,CAAA,MAAA;AAAA,UACT,CAAC,QAAQ,KAAM,CAAA,OAAA,IAAW,WAAW,GAAI,CAAA,KAAA,CAAM,OAAO,CAAC,CAAA;AAAA,SACzD,CAAE,MACA,IAAA,UAAA,CAAW,MAAS,GAAA,CAAA;AAAA,OAC1B,CAAA;AACA,MAAA,MAAM,aACJ,EAAoB,GAAA,CAAA,EAAA,GAAA,mBAAA,CAAA,IAAA;AAAA,QAAK,CAAC,CAAG,KAAA;AAzVrC,UAAAC,IAAAA,GAAAA,CAAAA;AA0VU,UAAA,OAAA,CAAAA,GAAA,GAAA,CAAA,CAAE,OAAF,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAW,KAAM,CAAA,wCAAA,CAAA,CAAA;AAAA,SAAA;AAAA,OACnB,KAFA,YAGA,mBAAoB,CAAA,IAAA;AAAA,QAAK,CAAC,CAAG,KAAA;AA5VrC,UAAAA,IAAAA,GAAAA,CAAAA;AA6VU,UAAA,OAAA,CAAAA,GAAA,GAAA,CAAA,CAAE,OAAF,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAW,KAAM,CAAA,wBAAA,CAAA,CAAA;AAAA,SAAA;AAAA,OACnB,KALA,IAMA,GAAA,EAAA,GAAA,mBAAA,CAAoB,CAAC,CAAA,CAAA;AACvB,MAAA,IAAI,SAAW,EAAA;AACb,QAAA,SAAA,CAAU,IAAO,GAAA,MAAA,CAAA;AAAA,OACnB;AAAA,KACF;AAOA,IAAA,IACE,IAAK,CAAA,IAAA,CAAK,MAAS,GAAA,CAAA,IACnB,CAAC,mBAAA,CAAoB,IAAK,CAAA,CAAC,KAAU,KAAA,KAAA,CAAM,IAAS,KAAA,OAAO,CAC3D,EAAA;AACA,MAAA,MAAM,aAAa,KAAM,CAAA,IAAA;AAAA,QACvB,IAAI,GAAA;AAAA,UACF,CAAC,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAA,EAAG,CAAG,EAAA,CAAC,CAAE,CAAA,GAAA;AAAA,YAAI,CAAC,MAClC,IAAK,CAAA,KAAA,CAAO,IAAI,CAAM,IAAA,IAAA,CAAK,IAAK,CAAA,MAAA,GAAS,CAAE,CAAA,CAAA;AAAA,WAC7C;AAAA,SACF;AAAA,QACA,GAAI,CAAA,CAAC,MAAM,IAAK,CAAA,IAAA,CAAK,CAAC,CAAC,CAAA,CAAA;AACzB,MAAA,MAAM,uBAAuB,mBAAoB,CAAA,MAAA;AAAA,QAC/C,CAAC,KAAA,KACC,CAAC,KAAA,CAAM,QACP,UAAW,CAAA,MAAA;AAAA,UACT,CAAC,QAAQ,KAAM,CAAA,OAAA,IAAW,YAAY,GAAI,CAAA,KAAA,CAAM,OAAO,CAAC,CAAA;AAAA,SAC1D,CAAE,MACA,IAAA,UAAA,CAAW,MAAS,GAAA,CAAA;AAAA,OAC1B,CAAA;AACA,MAAA,MAAM,cACJ,EAAqB,GAAA,CAAA,EAAA,GAAA,oBAAA,CAAA,IAAA;AAAA,QAAK,CAAC,CAAG,KAAA;AA9XtC,UAAAA,IAAAA,GAAAA,CAAAA;AA+XU,UAAA,OAAA,CAAAA,GAAA,GAAA,CAAA,CAAE,OAAF,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAW,KAAM,CAAA,0CAAA,CAAA,CAAA;AAAA,SAAA;AAAA,OACnB,KAFA,YAGA,oBAAqB,CAAA,IAAA;AAAA,QAAK,CAAC,CAAG,KAAA;AAjYtC,UAAAA,IAAAA,GAAAA,CAAAA;AAkYU,UAAA,OAAA,CAAAA,GAAA,GAAA,CAAA,CAAE,OAAF,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAW,KAAM,CAAA,4CAAA,CAAA,CAAA;AAAA,SAAA;AAAA,OACnB,KALA,IAMA,GAAA,EAAA,GAAA,oBAAA,CAAqB,CAAC,CAAA,CAAA;AACxB,MAAA,IAAI,UAAY,EAAA;AACd,QAAA,UAAA,CAAW,IAAO,GAAA,OAAA,CAAA;AAAA,OACpB;AAAA,KACF;AAGA,IAAI,IAAA,CAAC,oBAAoB,IAAK,CAAA,CAAC,UAAU,KAAM,CAAA,IAAA,KAAS,OAAO,CAAG,EAAA;AAChE,MAAA,MAAM,aAAa,mBAAoB,CAAA,IAAA;AAAA,QACrC,CAAC,KAAO,KAAA;AA7YhB,UAAAA,IAAAA,GAAAA,CAAAA;AA8YU,UAAC,OAAA,CAAA,KAAA,CAAM,UACPA,GAAA,GAAA,KAAA,CAAM,YAAN,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAAA,CAAe,cAAc,KAAM,CAAA,iCAAA,CAAA,CAAA,CAAA;AAAA,SAAA;AAAA,OACvC,CAAA;AACA,MAAA,IAAI,UAAY,EAAA;AACd,QAAA,UAAA,CAAW,IAAO,GAAA,OAAA,CAAA;AAAA,OACpB;AAAA,KACF;AAEA,IAAA,MAAM,uBAAuB,IAAI,GAAA;AAAA,MAC/B,mBAAA,CAAoB,IAAI,CAAC,CAAA,KAAM,CAAC,CAAE,CAAA,OAAA,EAAS,CAAE,CAAA,IAAI,CAAC,CAAA;AAAA,KACpD,CAAA;AACA,IAAA,KAAA,MAAW,KAAK,8BAAgC,EAAA;AAC9C,MAAA,CAAA,CAAE,IAAO,GAAA,oBAAA,CAAqB,GAAI,CAAA,CAAA,CAAE,OAAO,CAAA,CAAA;AAAA,KAC7C;AAQA,IAAA,MAAM,EAAE,YAAA,EAAc,uBAAwB,EAAA,GAC5C,qBAAqB,UAAU,CAAA,CAAA;AAEjC,IAAA,MAAM,mCAAsC,GAAA;AAAA,MAC1C,GAAG,wBAAwB,MAAO,CAAA,CAAC,MAAM,CAAE,CAAA,IAAA,IAAQ,CAAE,CAAA,IAAA,KAAS,OAAO,CAAA;AAAA,MACrE,GAAG,8BAA+B,CAAA,MAAA;AAAA,QAChC,CAAC,CAAM,KAAA,CAAA,CAAE,IAAQ,IAAA,CAAA,CAAE,SAAS,OAAW,IAAA,CAAC,KAAM,CAAA,CAAA,CAAE,IAAI,CAAA;AAAA,OACtD;AAAA,KACF,CAAA;AACA,IAAA,MAAM,wBAA2B,GAAA;AAAA,MAC/B,GAAG,aAAa,MAAO,CAAA,CAAC,MAAM,CAAE,CAAA,IAAA,IAAQ,CAAE,CAAA,IAAA,KAAS,OAAO,CAAA;AAAA,MAC1D,GAAG,mBAAoB,CAAA,MAAA;AAAA,QACrB,CAAC,CAAM,KAAA,CAAA,CAAE,IAAQ,IAAA,CAAA,CAAE,SAAS,OAAW,IAAA,CAAC,KAAM,CAAA,CAAA,CAAE,IAAI,CAAA;AAAA,OACtD;AAAA,KACF,CAAA;AAGA,IAAA,MAAM,WAAc,GAAA,MAAA;AAAA,MAClB,OAAQ,CAAA,wBAAA,EAA0B,CAAC,CAAA,KAAM,EAAE,IAAI,CAAA;AAAA,KACjD,CAAA;AAEA,IAAA,MAAM,aAAoD,EAAC,CAAA;AAC3D,IAAA,KAAA,MAAW,QAAQ,KAAO,EAAA;AACxB,MAAA,IAAI,SAAS,OAAS,EAAA;AACpB,QAAW,UAAA,CAAA,IAAI,CAAI,GAAA,CAAA,EAAA,GAAA,KAAA,CAAM,KAAM,CAAA,IAAI,GAAG,WAAW,CAAA,KAA9B,IAAmC,GAAA,EAAA,GAAA,WAAA,CAAY,IAAI,CAAA,CAAA;AAAA,OACxE;AAAA,KACF;AAEA,IAAA,qBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,qBAAA,CAAwB,mCACnB,IADmB,CAAA,EAAA;AAAA,MAEtB,YAAc,EAAA,wBAAA;AAAA,MACd,uBAAyB,EAAA,mCAAA;AAAA,KAC3B,CAAA,CAAA,CAAA;AAEA,IAAA,MAAM,UAAa,GAAA,wBAAA,CAAA;AACnB,IAAO,OAAA,EAAE,YAAY,UAAW,EAAA,CAAA;AAAA,GAC/B,EAAA,CAAC,IAAM,EAAA,qBAAA,EAAuB,KAAK,CAAC,CAAA,CAAA;AACzC;;;;;;;;;;;;;;;;;;AC7bO,MAAM,eAAkB,GAAA;AAAA,EAC7B,MAAQ,EAAA;AAAA,IACN,IAAM,EAAA;AAAA,MACJ,mBAAA,EAAqB,CAAC,KAAA,EAAc,IAAiB,KAAA,IAAA;AAAA,KACvD;AAAA,IACA,YAAc,EAAA;AAAA,MACZ,qBAAqB,CAAC,IAAA,KAAgB,KAAM,CAAA,IAAI,EAAE,WAAY,EAAA;AAAA,KAChE;AAAA,GACF;AACF,EAAA;AAEO,MAAM,qBAAwB,GAAA,yBAAA;AAE9B,SAAS,qBAAqB,MAAuB,EAAA;AAC1D,EAAA,uBAAA,CAAwB,QAAQ,YAAc,EAAA;AAAA,IAC5C,IAAM,EAAA,qBAAA;AAAA,IACN,WAAa,EAAA,UAAA;AAAA,IACb,KAAO,EAAA;AAAA,MACL,IAAM,EAAA;AAAA,QACJ,IAAM,EAAA,kBAAA;AAAA,QACN,WAAa,EAAA,QAAA;AAAA,QACb,WACE,EAAA,kNAAA;AAAA,OACJ;AAAA,MACA,KAAO,EAAA,QAAA,CAAS,EAAE,IAAA,EAAM,SAAS,CAAA;AAAA,MACjC,MAAM,QAAS,CAAA,EAAE,MAAM,MAAQ,EAAA,QAAA,EAAU,MAAM,CAAA;AAAA,MAC/C,OAAO,QAAS,CAAA,EAAE,MAAM,OAAS,EAAA,QAAA,EAAU,MAAM,CAAA;AAAA,MACjD,KAAO,EAAA;AAAA;AAAA,QAEL,QAAU,EAAA,IAAA;AAAA,QACV,gBAAkB,EAAA,cAAA;AAAA,QAClB,IAAM,EAAA,YAAA;AAAA,QACN,WAAa,EAAA,CAAA,6CAAA,CAAA;AAAA,QACb,SAAA,EAAW,CAAC,KAAA,EAAe,EAA0B,KAAA;AACnD,UAAI,IAAA,CAAC,GAAG,KAAO,EAAA;AACb,YAAO,OAAA,IAAA,CAAA;AAAA,WACT;AACA,UAAI,IAAA,CAAC,GAAG,UAAY,EAAA;AAClB,YAAO,OAAA,IAAA,CAAA;AAAA,WACT;AACA,UAAI,IAAA,CAAC,cAAe,CAAA,KAAK,CAAG,EAAA;AAC1B,YAAO,OAAA,yBAAA,CAAA;AAAA,WACT;AACA,UAAA,IACE,MAAM,KAAK,CAAA,CAAE,QAAS,CAAA,EAAA,CAAG,WAAW,CAAC,CAAC,CACtC,IAAA,KAAA,CAAM,KAAK,CAAE,CAAA,OAAA,CAAQ,GAAG,UAAW,CAAA,CAAC,CAAC,CACrC,EAAA;AACA,YAAO,OAAA,4BAAA,CAAA;AAAA,WACT;AACA,UAAO,OAAA,IAAA,CAAA;AAAA,SACT;AAAA,OACF;AAAA,MACA,IAAM,EAAA;AAAA,QACJ,IAAM,EAAA,QAAA;AAAA,QACN,OAAA,EAAS,CAAC,OAAA,EAAS,MAAM,CAAA;AAAA,QACzB,WAAa,EAAA,2CAAA;AAAA,QACb,gBAAkB,EAAA,OAAA;AAAA,OACpB;AAAA,MACA,UAAY,EAAA;AAAA,QACV,IAAM,EAAA,kBAAA;AAAA,QACN,WAAa,EAAA,0DAAA;AAAA,QACb,QAAU,EAAA,IAAA;AAAA,QACV,SAAA,EAAW,CAAC,KAAA,EAAyB,GAA2B,KAAA;AAC9D,UAAA,IAAI,CAAC,KAAO,EAAA;AACV,YAAO,OAAA,IAAA,CAAA;AAAA,WACT;AACA,UAAA,IAAI,CAAC,KAAM,CAAA,OAAA,CAAQ,KAAK,CAAK,IAAA,KAAA,CAAM,WAAW,CAAG,EAAA;AAC/C,YAAO,OAAA,2BAAA,CAAA;AAAA,WACT;AACA,UAAI,IAAA,CAAC,cAAe,CAAA,KAAA,CAAM,CAAC,CAAC,CAAK,IAAA,CAAC,cAAe,CAAA,KAAA,CAAM,CAAC,CAAC,CAAG,EAAA;AAC1D,YAAO,OAAA,mDAAA,CAAA;AAAA,WACT;AACA,UAAO,OAAA,IAAA,CAAA;AAAA,SACT;AAAA,OACF;AAAA,MACA,YAAc,EAAA;AAAA,QACZ,IAAM,EAAA,MAAA;AAAA,QACN,gBAAA,EAAkB,CAAC,aAAa,CAAA;AAAA,QAChC,eAAiB,EAAA,IAAA;AAAA,QACjB,WAAa,EAAA,eAAA;AAAA,OACf;AAAA,MACA,cAAgB,EAAA;AAAA,QACd,IAAM,EAAA,MAAA;AAAA,QACN,gBAAA,EAAkB,CAAC,WAAW,CAAA;AAAA,QAC9B,eAAiB,EAAA,IAAA;AAAA,QACjB,WAAa,EAAA,kBAAA;AAAA,OACf;AAAA,MACA,kBAAoB,EAAA;AAAA,QAClB,IAAM,EAAA,MAAA;AAAA,QACN,gBAAA,EAAkB,CAAC,WAAW,CAAA;AAAA,QAC9B,eAAiB,EAAA,IAAA;AAAA,QACjB,WAAa,EAAA,kBAAA;AAAA,OACf;AAAA,MACA,eAAiB,EAAA;AAAA,QACf,IAAM,EAAA,MAAA;AAAA,QACN,gBAAA,EAAkB,CAAC,WAAW,CAAA;AAAA,QAC9B,eAAiB,EAAA,IAAA;AAAA,QACjB,WAAa,EAAA,mBAAA;AAAA,OACf;AAAA,MACA,mBAAqB,EAAA;AAAA,QACnB,IAAM,EAAA,MAAA;AAAA,QACN,gBAAA,EAAkB,CAAC,WAAW,CAAA;AAAA,QAC9B,eAAiB,EAAA,IAAA;AAAA,QACjB,WAAa,EAAA,mBAAA;AAAA,OACf;AAAA,MACA,aAAe,EAAA;AAAA,QACb,IAAM,EAAA,cAAA;AAAA,QACN,WACE,EAAA,wEAAA;AAAA,QACF,QAAU,EAAA;AAAA,UACR,EAAE,IAAA,EAAM,MAAQ,EAAA,IAAA,EAAM,QAAS,EAAA;AAAA,UAC/B,EAAE,IAAA,EAAM,MAAQ,EAAA,IAAA,EAAM,QAAS,EAAA;AAAA,SACjC;AAAA,OACF;AAAA,MACA,QAAU,EAAA;AAAA,QACR,IAAM,EAAA,cAAA;AAAA,QACN,UAAU,CAAC,EAAE,MAAM,MAAQ,EAAA,IAAA,EAAM,UAAU,CAAA;AAAA,OAC7C;AAAA,KACF;AAAA,IACA,MAAQ,EAAA;AAAA,MACN,IAAM,EAAA,cAAA,CAAA;AAAA,QACJ,IAAM,EAAA,UAAA;AAAA,QACN,SAAW,EAAA,MAAA;AAAA,QACX,YAAc,EAAA,eAAA;AAAA,QACd,YAAc,EAAA,MAAA;AAAA,OAAA,EACX,gBAAgB,MAAO,CAAA,IAAA,CAAA;AAAA,MAE5B,YAAc,EAAA,cAAA,CAAA;AAAA,QACZ,IAAM,EAAA,UAAA;AAAA,QACN,SAAW,EAAA,OAAA;AAAA,QACX,YAAc,EAAA,UAAA;AAAA,QACd,YAAc,EAAA,MAAA;AAAA,OAAA,EACX,gBAAgB,MAAO,CAAA,YAAA,CAAA;AAAA,KAE9B;AAAA,IACA,gBAAkB,EAAA;AAAA,MAChB,OAAS,EAAA,eAAA;AAAA,MACT,UAAY,EAAA,iBAAA;AAAA,MACZ,UAAY,EAAA,2DAAA;AAAA,KACd;AAAA,IACA,UAAY,EAAA,2DAAA;AAAA,IACZ,UAAY,EAAA,cAAA;AAAA,GACb,CAAA,CAAA;AACH;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var formatting = require('../formatting-6dc71cdd.cjs.js');
3
+ var formatting = require('../formatting-939d0aa3.cjs.js');
4
4
  var utils = require('../utils-65c486f0.cjs.js');
5
5
  var dataSources = require('@plasmicapp/data-sources');
6
6
  var antd = require('antd');
@@ -1,4 +1,4 @@
1
- import { r as renderValue, b as buildFieldsPropType } from '../formatting-0acc57f5.esm.js';
1
+ import { r as renderValue, b as buildFieldsPropType } from '../formatting-6f22c9d6.esm.js';
2
2
  import { d as mkShortId, r as registerComponentHelper } from '../utils-c32bd7ed.esm.js';
3
3
  import { useNormalizedData, deriveFieldConfigs } from '@plasmicapp/data-sources';
4
4
  import { Empty, Descriptions } from 'antd';
@@ -76,7 +76,7 @@ var __objRest = (source, exclude) => {
76
76
  };
77
77
  function omitUndefined(x) {
78
78
  return Object.fromEntries(
79
- Object.entries(x).filter(([k, v]) => v !== void 0)
79
+ Object.entries(x).filter(([_k, v]) => v !== void 0)
80
80
  );
81
81
  }
82
82
  function processNavItems(navMenuItems) {
@@ -142,10 +142,12 @@ function RichLayout(_a) {
142
142
  }
143
143
  }, []);
144
144
  React.useEffect(() => {
145
- if (!ready)
145
+ if (!ready) {
146
146
  return;
147
- if (!ref.current)
147
+ }
148
+ if (!ref.current) {
148
149
  return;
150
+ }
149
151
  const selectedSubmenus = Array.from(
150
152
  ref.current.querySelectorAll(
151
153
  "ul > li.ant-menu-submenu.ant-menu-submenu-selected > div"
@@ -272,8 +274,9 @@ function RichLayout(_a) {
272
274
  return [actionsChildren];
273
275
  },
274
276
  menuFooterRender: (props) => {
275
- if (props == null ? void 0 : props.collapsed)
277
+ if (props == null ? void 0 : props.collapsed) {
276
278
  return void 0;
279
+ }
277
280
  return footerChildren;
278
281
  },
279
282
  onMenuHeaderClick: (e) => console.log(e),
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../src/widgets.tsx","../../src/rich-layout/RichLayout.tsx","../../src/rich-layout/index.tsx"],"sourcesContent":["import React from \"react\";\nexport const AnchorLink = React.forwardRef(function AnchorLink(\n props: React.ComponentProps<\"a\">,\n ref: React.Ref<HTMLAnchorElement>\n) {\n return <a {...props} ref={ref} />;\n});\n","import { LogoutOutlined } from \"@ant-design/icons\";\nimport type { MenuDataItem, ProLayoutProps } from \"@ant-design/pro-components\";\nimport { ProConfigProvider, ProLayout } from \"@ant-design/pro-components\";\nimport { useDataEnv, usePlasmicLink } from \"@plasmicapp/host\";\nimport { ConfigProvider, Dropdown, theme } from \"antd\";\nimport React, { ReactNode, useEffect, useRef, useState } from \"react\";\nimport { isLight, useIsClient } from \"../common\";\nimport { AnchorLink } from \"../widgets\";\n\nfunction omitUndefined(x: object) {\n return Object.fromEntries(\n Object.entries(x).filter(([k, v]) => v !== undefined)\n );\n}\n\ninterface NavMenuItem extends Omit<MenuDataItem, \"routes\"> {\n routes?: NavMenuItem[];\n}\n\nexport interface SimpleNavTheme {\n scheme?: \"default\" | \"light\" | \"dark\" | \"custom\" | \"primary\";\n customBgColor?: string;\n}\n\n/**\n * Filter items by condition, and add missing paths so that any added items are visible.\n */\nfunction processNavItems(navMenuItems: NavMenuItem[]): NavMenuItem[] {\n return navMenuItems\n .filter((item) => item.condition === undefined || item.condition)\n .map((item) => ({\n ...item,\n // We fill a default path because otherwise the item doesn't appear at all.\n path: item.path || \"/\",\n routes: item.routes ? processNavItems(item.routes) : undefined,\n }));\n}\n\nexport interface RichLayoutProps extends ProLayoutProps {\n navMenuItems?: NavMenuItem[];\n rootUrl?: string;\n actionsChildren?: ReactNode;\n footerChildren?: ReactNode;\n avatarLabel?: string;\n avatarImage?: string;\n showAvatarMenu?: boolean;\n simpleNavTheme?: SimpleNavTheme;\n logoElement?: ReactNode;\n}\n\n// width: 100% needed because parent is display: flex, which is needed for the min-height behavior.\nconst baseStyles = `\n.ant-pro-layout-bg-list {\n display: none;\n}\n.ant-pro-layout {\n display: flex;\n width: 100%;\n}\n.ant-pro-layout .ant-pro-layout-content {\n padding: 0;\n}\n`;\n\nexport function RichLayout({\n children,\n navMenuItems,\n rootUrl = \"/\",\n actionsChildren,\n footerChildren,\n avatarLabel,\n avatarImage,\n showAvatarMenu,\n className,\n simpleNavTheme,\n logo,\n logoElement,\n ...layoutProps\n}: RichLayoutProps) {\n const $ctx = useDataEnv();\n const ref = useRef<HTMLDivElement>(null);\n const isClient = useIsClient();\n const [pathname, setPathname] = useState<string | undefined>(undefined);\n const [openKeys, setOpenKeys] = useState<string[]>([]);\n const [ready, setReady] = useState(false);\n useEffect(() => {\n setTimeout(() => {\n setReady(true);\n }, 500);\n\n if (typeof location !== \"undefined\") {\n setPathname(location.pathname);\n }\n }, []);\n\n useEffect(() => {\n if (!ready) return;\n if (!ref.current) return;\n // open selected submenu (only opens the last one in the list!)\n const selectedSubmenus: string[] =\n (Array.from(\n ref.current.querySelectorAll(\n \"ul > li.ant-menu-submenu.ant-menu-submenu-selected > div\"\n )\n )\n .map((el) => el.getAttribute(\"data-menu-id\")?.split(\"/\").pop())\n .filter((i) => i)\n .map((i) => `/${i}`) as string[]) || [];\n setOpenKeys(selectedSubmenus);\n }, [ready]);\n\n // The usePlasmicLink function may be undefined, if host is not up to date\n const PlasmicLink = usePlasmicLink?.() ?? AnchorLink;\n const { token } = theme.useToken();\n const origTextColor = token.colorTextBase;\n function getNavBgColor(): string {\n const scheme = simpleNavTheme?.scheme ?? \"default\";\n switch (scheme) {\n case \"primary\":\n return token.colorPrimary;\n case \"dark\":\n // Ant default dark blue Menu color.\n return \"#011528\";\n case \"custom\":\n return simpleNavTheme?.customBgColor ?? token.colorBgBase;\n case \"light\":\n // Just use this sorta ugly gray if using 'light' scheme in 'dark' mode.\n // Otherwise using light scheme in light mode.\n return \"#fff\";\n case \"default\":\n return token.colorBgBase || \"#fff\";\n }\n }\n const navBgColor = getNavBgColor();\n // Dynamically determine whether we need to change the text to black/white or not, based on background color.\n // We don't want light-on-light or dark-on-dark, so if both isNavBgLight and isOrigTextLight are the same, then need to change.\n // If no need to change, we leave text color as is.\n const isNavBgLight = isLight(navBgColor);\n const isOrigTextLight = isLight(origTextColor);\n // Ant will interpret \"\" as defaulting to \"#fff\" for dark mode and \"#000\" in light mode.\n const navTextColor = isNavBgLight !== isOrigTextLight ? undefined : \"\";\n if (!isClient) {\n return null;\n }\n\n const layoutColorOverrides = isNavBgLight\n ? undefined\n : {\n colorBgCollapsedButton: navBgColor,\n colorTextCollapsedButtonHover: \"rgba(255,255,255,0.85)\",\n colorTextCollapsedButton: \"rgba(255,255,255,0.65)\",\n colorMenuBackground: navBgColor,\n colorBgMenuItemCollapsedHover: \"rgba(0,0,0,0.06)\",\n colorBgMenuItemCollapsedSelected: \"rgba(0,0,0,0.15)\",\n colorBgMenuItemCollapsedElevated: \"rgba(0,0,0,0.85)\",\n colorMenuItemDivider: \"rgba(255,255,255,0.15)\",\n colorBgMenuItemHover: \"rgba(0,0,0,0.06)\",\n colorBgMenuItemSelected: \"rgba(0,0,0,0.15)\",\n colorTextMenuSelected: \"#fff\",\n colorTextMenuItemHover: \"rgba(255,255,255,0.75)\",\n colorTextMenu: \"rgba(255,255,255,0.75)\",\n colorTextMenuSecondary: \"rgba(255,255,255,0.65)\",\n colorTextMenuTitle: \"rgba(255,255,255,0.95)\",\n colorTextMenuActive: \"rgba(255,255,255,0.95)\",\n colorTextSubMenuSelected: \"#fff\",\n };\n return (\n <div ref={ref} className={className} style={{ display: \"flex\" }}>\n {/* Remove the always-on fixed gradient background layer. */}\n <style>{baseStyles}</style>\n <ProLayout\n {...layoutProps}\n // This prevents setting a document title. Normally tries to set to either app title or page title (from routes meta).\n pageTitleRender={() => \"\"}\n logo={logo ?? logoElement}\n // Theme just the header. If you simply pass in navTheme=realDark, it affects all main content as well.\n //\n // What we're doing is telling Ant to use the dark mode algorithm. However, dark mode algorithm doesn't change\n // the seed tokens for colorTextBase and colorBgBase - it only fills in #fff and #000 for these if they are\n // unset (\"\"). So that's why further up we may be setting the text color to \"\".\n //\n // I think it doesn't matter too much what is the colorBgBase, since we are setting (Pro-specific) `tokens`\n // further down for actually setting the fill of the nav sections. What matters is the text color - if we're\n // showing a dark background, then we want the text to be white.\n //\n // We could specify darkAlgorithm to ConfigProvider, but IIRC Pro might be setting some of its own tokens\n // based on whether dark is being specified to the ProConfigProvider. So that's why we need that.\n //\n // ProConfigProvider does first read/inherit the theme/tokens from the surrounding ConfigProvider.\n headerRender={(_props, defaultDom) => (\n <ConfigProvider\n theme={{ token: omitUndefined({ colorTextBase: navTextColor }) }}\n >\n <ProConfigProvider dark={!isNavBgLight}>\n {defaultDom}\n </ProConfigProvider>\n </ConfigProvider>\n )}\n token={{\n header: omitUndefined({\n colorBgHeader: navBgColor,\n ...layoutColorOverrides,\n }),\n // Ideally, we'd do something similar to headerRender above, and just specify general dark mode to specify\n // whether all components/text should be light.\n // But for some reason it doesn't work, causing the bg color to be ignored (just the default dark Menu color),\n // *and* the text is just dark as well.\n // Haven't yet been able to unravel the pro components code to figure out the proper way to do this, so just\n // bluntly specifying tokens here, as recommended in some GitHub issue.\n sider: omitUndefined({\n colorMenuBackground: navBgColor,\n ...layoutColorOverrides,\n }),\n }}\n // Tweak defaults. ProLayout is janky and has terrible docs!\n layout={layoutProps.layout ?? \"top\"}\n fixedHeader={layoutProps.fixedHeader ?? false}\n fixSiderbar={\n // Doesn't stretch full height if you set this to false and you're in mix mode.\n layoutProps.layout === \"mix\"\n ? undefined\n : layoutProps.fixSiderbar ?? false\n }\n // This is always needed if you want layout mix to have effect and look any different from layout side - not clear why this should ever be false.\n splitMenus={layoutProps.layout === \"mix\"}\n route={{\n path: rootUrl,\n routes: navMenuItems ? processNavItems(navMenuItems) : undefined,\n }}\n location={{\n pathname,\n }}\n menu={{\n // collapsedShowGroupTitle: true,\n defaultOpenAll: false,\n // hideMenuWhenCollapsed: true,\n }}\n avatarProps={\n showAvatarMenu\n ? {\n src: avatarImage,\n size: \"small\",\n title: avatarLabel,\n render: (_props, dom) => {\n return (\n <Dropdown\n menu={{\n items: [\n {\n key: \"logout\",\n icon: <LogoutOutlined />,\n label: \"Sign out\",\n },\n ],\n }}\n >\n {dom}\n </Dropdown>\n );\n },\n }\n : undefined\n }\n actionsRender={(_props) => {\n return [actionsChildren];\n }}\n menuFooterRender={(props) => {\n if (props?.collapsed) return undefined;\n return footerChildren;\n }}\n onMenuHeaderClick={(e) => console.log(e)}\n openKeys={openKeys}\n onOpenChange={(keys) =>\n keys === false || !ready ? [] : setOpenKeys(keys)\n }\n selectedKeys={[$ctx?.pagePath]}\n menuItemRender={(item, dom) => (\n <PlasmicLink href={item.path}>{dom}</PlasmicLink>\n )}\n headerTitleRender={(logoEl, title, _) => {\n return (\n <PlasmicLink href={rootUrl}>\n {logoEl}\n {title}\n </PlasmicLink>\n );\n }}\n >\n {children}\n </ProLayout>\n </div>\n );\n}\n","import {\n ComponentMeta,\n JSONLikeType,\n} from \"@plasmicapp/host/registerComponent\";\nimport { capitalize } from \"../common\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { RichLayout, RichLayoutProps } from \"./RichLayout\";\n\nexport * from \"./RichLayout\";\nexport default RichLayout;\n\nfunction generateNavMenuType(\n isNested: boolean,\n remainingDepth: number,\n displayName?: string,\n defaultValue?: any[]\n): object & JSONLikeType<any> {\n return {\n displayName: displayName ? displayName : \"Nested items\",\n type: \"array\",\n defaultValue,\n advanced: isNested,\n itemType: {\n type: \"object\",\n nameFunc: (item: any) =>\n item.name || (!displayName ? \"Unnamed nested item\" : \"Unnamed item\"),\n fields: {\n path: \"href\",\n name: \"string\",\n condition: {\n advanced: true,\n displayName: \"Show only if\",\n type: \"exprEditor\" as any,\n },\n ...(remainingDepth === 0\n ? {}\n : {\n routes: generateNavMenuType(true, remainingDepth - 1),\n }),\n },\n },\n } as const;\n}\n\nconst richLayoutMeta: ComponentMeta<RichLayoutProps> = {\n name: \"hostless-rich-layout\",\n displayName: \"Rich App Layout\",\n props: {\n children: {\n type: \"slot\",\n unstable__isMainContentSlot: true,\n },\n actionsChildren: {\n type: \"slot\",\n hidePlaceholder: true,\n },\n title: {\n displayName: \"Title\",\n type: \"string\",\n defaultValue: \"App title\",\n },\n logo: {\n displayName: \"Logo\",\n type: \"imageUrl\",\n hidden: (ps) => !ps.logo,\n },\n logoElement: {\n type: \"slot\",\n displayName: \"Logo\",\n defaultValue: {\n type: \"img\",\n src: \"https://static1.plasmic.app/fake-logo.svg\",\n },\n hidden: (ps) => !!ps.logo,\n },\n navMenuItems: generateNavMenuType(false, 2, \"Nav menu items\", [\n {\n path: \"/\",\n name: \"Home\",\n },\n ]),\n\n layout: {\n displayName: \"Layout\",\n type: \"choice\",\n options: [\"side\", \"top\", \"mix\"].map((value) => ({\n value,\n label: capitalize(value),\n })),\n defaultValueHint: \"top\",\n },\n\n simpleNavTheme: {\n displayName: \"Theme\",\n type: \"object\",\n fields: {\n scheme: {\n type: \"choice\",\n options: [\"default\", \"primary\", \"light\", \"dark\", \"custom\"].map(\n (v) => ({\n label: capitalize(v),\n value: v,\n })\n ),\n defaultValueHint: \"default\",\n },\n customBgColor: {\n type: \"color\",\n displayName: \"Custom color\",\n hidden: (props) => !(props.simpleNavTheme?.scheme === \"custom\"),\n defaultValue: \"#D73B58\",\n },\n },\n },\n\n // Advanced, show later\n /*\n siderMenuType: {\n displayName: \"Sidebar mode\",\n type: \"choice\",\n options: [\"sub\", \"group\"].map((value) => ({\n value,\n label: capitalize(value),\n })),\n defaultValue: \"sub\",\n },\n contentWidth: {\n displayName: \"Content width\",\n type: \"choice\",\n options: [\"Fluid\", \"Fixed\"],\n defaultValueHint: \"Fluid\",\n },\n */\n fixedHeader: {\n displayName: \"Sticky header\",\n type: \"boolean\",\n hidden: (ps) => (ps.layout ?? \"top\") !== \"top\",\n defaultValueHint: false,\n },\n fixSiderbar: {\n displayName: \"Sticky sidebar\",\n type: \"boolean\",\n hidden: (ps) => (ps.layout ?? \"top\") !== \"side\",\n defaultValueHint: false,\n },\n /*\n showAvatarMenu: {\n displayName: \"Show avatar\",\n type: \"boolean\",\n defaultValue: true,\n },\n avatarLabel: {\n displayName: \"Avatar label\",\n type: \"string\",\n defaultValue: \"User Name\",\n },\n avatarImage: {\n displayName: \"Avatar image\",\n type: \"imageUrl\",\n defaultValue:\n \"https://gw.alipayobjects.com/zos/antfincdn/efFD%24IOql2/weixintupian_20170331104822.jpg\",\n },\n */\n menu: {\n displayName: \"Menu\",\n type: \"object\",\n fields: {\n defaultOpenAll: {\n displayName: \"Default open all\",\n type: \"boolean\",\n },\n hideMenuWhenCollapsed: {\n // displayName: \"\",\n type: \"boolean\",\n },\n },\n },\n },\n\n defaultStyles: {\n width: \"full-bleed\",\n height: \"stretch\",\n minHeight: \"100vh\",\n },\n\n importName: \"RichLayout\",\n importPath: \"@plasmicpkgs/plasmic-rich-components/skinny/rich-layout\",\n};\n\nexport function registerRichLayout(loader?: Registerable) {\n registerComponentHelper(loader, RichLayout, richLayoutMeta);\n}\n"],"names":["React","AnchorLink","__spreadProps","__spreadValues","_a","_b","useDataEnv","useRef","useIsClient","useState","useEffect","usePlasmicLink","theme","isLight","ProLayout","ConfigProvider","ProConfigProvider","Dropdown","LogoutOutlined","capitalize","registerComponentHelper"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../../src/widgets.tsx","../../src/rich-layout/RichLayout.tsx","../../src/rich-layout/index.tsx"],"sourcesContent":["import React from \"react\";\nexport const AnchorLink = React.forwardRef(function AnchorLink(\n props: React.ComponentProps<\"a\">,\n ref: React.Ref<HTMLAnchorElement>\n) {\n return <a {...props} ref={ref} />;\n});\n","import { LogoutOutlined } from \"@ant-design/icons\";\nimport type { MenuDataItem, ProLayoutProps } from \"@ant-design/pro-components\";\nimport { ProConfigProvider, ProLayout } from \"@ant-design/pro-components\";\nimport { useDataEnv, usePlasmicLink } from \"@plasmicapp/host\";\nimport { ConfigProvider, Dropdown, theme } from \"antd\";\nimport React, { ReactNode, useEffect, useRef, useState } from \"react\";\nimport { isLight, useIsClient } from \"../common\";\nimport { AnchorLink } from \"../widgets\";\n\nfunction omitUndefined(x: object) {\n return Object.fromEntries(\n Object.entries(x).filter(([_k, v]) => v !== undefined)\n );\n}\n\ninterface NavMenuItem extends Omit<MenuDataItem, \"routes\"> {\n routes?: NavMenuItem[];\n}\n\nexport interface SimpleNavTheme {\n scheme?: \"default\" | \"light\" | \"dark\" | \"custom\" | \"primary\";\n customBgColor?: string;\n}\n\n/**\n * Filter items by condition, and add missing paths so that any added items are visible.\n */\nfunction processNavItems(navMenuItems: NavMenuItem[]): NavMenuItem[] {\n return navMenuItems\n .filter((item) => item.condition === undefined || item.condition)\n .map((item) => ({\n ...item,\n // We fill a default path because otherwise the item doesn't appear at all.\n path: item.path || \"/\",\n routes: item.routes ? processNavItems(item.routes) : undefined,\n }));\n}\n\nexport interface RichLayoutProps extends ProLayoutProps {\n navMenuItems?: NavMenuItem[];\n rootUrl?: string;\n actionsChildren?: ReactNode;\n footerChildren?: ReactNode;\n avatarLabel?: string;\n avatarImage?: string;\n showAvatarMenu?: boolean;\n simpleNavTheme?: SimpleNavTheme;\n logoElement?: ReactNode;\n}\n\n// width: 100% needed because parent is display: flex, which is needed for the min-height behavior.\nconst baseStyles = `\n.ant-pro-layout-bg-list {\n display: none;\n}\n.ant-pro-layout {\n display: flex;\n width: 100%;\n}\n.ant-pro-layout .ant-pro-layout-content {\n padding: 0;\n}\n`;\n\nexport function RichLayout({\n children,\n navMenuItems,\n rootUrl = \"/\",\n actionsChildren,\n footerChildren,\n avatarLabel,\n avatarImage,\n showAvatarMenu,\n className,\n simpleNavTheme,\n logo,\n logoElement,\n ...layoutProps\n}: RichLayoutProps) {\n const $ctx = useDataEnv();\n const ref = useRef<HTMLDivElement>(null);\n const isClient = useIsClient();\n const [pathname, setPathname] = useState<string | undefined>(undefined);\n const [openKeys, setOpenKeys] = useState<string[]>([]);\n const [ready, setReady] = useState(false);\n useEffect(() => {\n setTimeout(() => {\n setReady(true);\n }, 500);\n\n if (typeof location !== \"undefined\") {\n setPathname(location.pathname);\n }\n }, []);\n\n useEffect(() => {\n if (!ready) {\n return;\n }\n if (!ref.current) {\n return;\n }\n // open selected submenu (only opens the last one in the list!)\n const selectedSubmenus: string[] =\n (Array.from(\n ref.current.querySelectorAll(\n \"ul > li.ant-menu-submenu.ant-menu-submenu-selected > div\"\n )\n )\n .map((el) => el.getAttribute(\"data-menu-id\")?.split(\"/\").pop())\n .filter((i) => i)\n .map((i) => `/${i}`) as string[]) || [];\n setOpenKeys(selectedSubmenus);\n }, [ready]);\n\n // The usePlasmicLink function may be undefined, if host is not up to date\n const PlasmicLink = usePlasmicLink?.() ?? AnchorLink;\n const { token } = theme.useToken();\n const origTextColor = token.colorTextBase;\n function getNavBgColor(): string {\n const scheme = simpleNavTheme?.scheme ?? \"default\";\n switch (scheme) {\n case \"primary\":\n return token.colorPrimary;\n case \"dark\":\n // Ant default dark blue Menu color.\n return \"#011528\";\n case \"custom\":\n return simpleNavTheme?.customBgColor ?? token.colorBgBase;\n case \"light\":\n // Just use this sorta ugly gray if using 'light' scheme in 'dark' mode.\n // Otherwise using light scheme in light mode.\n return \"#fff\";\n case \"default\":\n return token.colorBgBase || \"#fff\";\n }\n }\n const navBgColor = getNavBgColor();\n // Dynamically determine whether we need to change the text to black/white or not, based on background color.\n // We don't want light-on-light or dark-on-dark, so if both isNavBgLight and isOrigTextLight are the same, then need to change.\n // If no need to change, we leave text color as is.\n const isNavBgLight = isLight(navBgColor);\n const isOrigTextLight = isLight(origTextColor);\n // Ant will interpret \"\" as defaulting to \"#fff\" for dark mode and \"#000\" in light mode.\n const navTextColor = isNavBgLight !== isOrigTextLight ? undefined : \"\";\n if (!isClient) {\n return null;\n }\n\n const layoutColorOverrides = isNavBgLight\n ? undefined\n : {\n colorBgCollapsedButton: navBgColor,\n colorTextCollapsedButtonHover: \"rgba(255,255,255,0.85)\",\n colorTextCollapsedButton: \"rgba(255,255,255,0.65)\",\n colorMenuBackground: navBgColor,\n colorBgMenuItemCollapsedHover: \"rgba(0,0,0,0.06)\",\n colorBgMenuItemCollapsedSelected: \"rgba(0,0,0,0.15)\",\n colorBgMenuItemCollapsedElevated: \"rgba(0,0,0,0.85)\",\n colorMenuItemDivider: \"rgba(255,255,255,0.15)\",\n colorBgMenuItemHover: \"rgba(0,0,0,0.06)\",\n colorBgMenuItemSelected: \"rgba(0,0,0,0.15)\",\n colorTextMenuSelected: \"#fff\",\n colorTextMenuItemHover: \"rgba(255,255,255,0.75)\",\n colorTextMenu: \"rgba(255,255,255,0.75)\",\n colorTextMenuSecondary: \"rgba(255,255,255,0.65)\",\n colorTextMenuTitle: \"rgba(255,255,255,0.95)\",\n colorTextMenuActive: \"rgba(255,255,255,0.95)\",\n colorTextSubMenuSelected: \"#fff\",\n };\n return (\n <div ref={ref} className={className} style={{ display: \"flex\" }}>\n {/* Remove the always-on fixed gradient background layer. */}\n <style>{baseStyles}</style>\n <ProLayout\n {...layoutProps}\n // This prevents setting a document title. Normally tries to set to either app title or page title (from routes meta).\n pageTitleRender={() => \"\"}\n logo={logo ?? logoElement}\n // Theme just the header. If you simply pass in navTheme=realDark, it affects all main content as well.\n //\n // What we're doing is telling Ant to use the dark mode algorithm. However, dark mode algorithm doesn't change\n // the seed tokens for colorTextBase and colorBgBase - it only fills in #fff and #000 for these if they are\n // unset (\"\"). So that's why further up we may be setting the text color to \"\".\n //\n // I think it doesn't matter too much what is the colorBgBase, since we are setting (Pro-specific) `tokens`\n // further down for actually setting the fill of the nav sections. What matters is the text color - if we're\n // showing a dark background, then we want the text to be white.\n //\n // We could specify darkAlgorithm to ConfigProvider, but IIRC Pro might be setting some of its own tokens\n // based on whether dark is being specified to the ProConfigProvider. So that's why we need that.\n //\n // ProConfigProvider does first read/inherit the theme/tokens from the surrounding ConfigProvider.\n headerRender={(_props, defaultDom) => (\n <ConfigProvider\n theme={{ token: omitUndefined({ colorTextBase: navTextColor }) }}\n >\n <ProConfigProvider dark={!isNavBgLight}>\n {defaultDom}\n </ProConfigProvider>\n </ConfigProvider>\n )}\n token={{\n header: omitUndefined({\n colorBgHeader: navBgColor,\n ...layoutColorOverrides,\n }),\n // Ideally, we'd do something similar to headerRender above, and just specify general dark mode to specify\n // whether all components/text should be light.\n // But for some reason it doesn't work, causing the bg color to be ignored (just the default dark Menu color),\n // *and* the text is just dark as well.\n // Haven't yet been able to unravel the pro components code to figure out the proper way to do this, so just\n // bluntly specifying tokens here, as recommended in some GitHub issue.\n sider: omitUndefined({\n colorMenuBackground: navBgColor,\n ...layoutColorOverrides,\n }),\n }}\n // Tweak defaults. ProLayout is janky and has terrible docs!\n layout={layoutProps.layout ?? \"top\"}\n fixedHeader={layoutProps.fixedHeader ?? false}\n fixSiderbar={\n // Doesn't stretch full height if you set this to false and you're in mix mode.\n layoutProps.layout === \"mix\"\n ? undefined\n : layoutProps.fixSiderbar ?? false\n }\n // This is always needed if you want layout mix to have effect and look any different from layout side - not clear why this should ever be false.\n splitMenus={layoutProps.layout === \"mix\"}\n route={{\n path: rootUrl,\n routes: navMenuItems ? processNavItems(navMenuItems) : undefined,\n }}\n location={{\n pathname,\n }}\n menu={{\n // collapsedShowGroupTitle: true,\n defaultOpenAll: false,\n // hideMenuWhenCollapsed: true,\n }}\n avatarProps={\n showAvatarMenu\n ? {\n src: avatarImage,\n size: \"small\",\n title: avatarLabel,\n render: (_props, dom) => {\n return (\n <Dropdown\n menu={{\n items: [\n {\n key: \"logout\",\n icon: <LogoutOutlined />,\n label: \"Sign out\",\n },\n ],\n }}\n >\n {dom}\n </Dropdown>\n );\n },\n }\n : undefined\n }\n actionsRender={(_props) => {\n return [actionsChildren];\n }}\n menuFooterRender={(props) => {\n if (props?.collapsed) {\n return undefined;\n }\n return footerChildren;\n }}\n onMenuHeaderClick={(e) => console.log(e)}\n openKeys={openKeys}\n onOpenChange={(keys) =>\n keys === false || !ready ? [] : setOpenKeys(keys)\n }\n selectedKeys={[$ctx?.pagePath]}\n menuItemRender={(item, dom) => (\n <PlasmicLink href={item.path}>{dom}</PlasmicLink>\n )}\n headerTitleRender={(logoEl, title, _) => {\n return (\n <PlasmicLink href={rootUrl}>\n {logoEl}\n {title}\n </PlasmicLink>\n );\n }}\n >\n {children}\n </ProLayout>\n </div>\n );\n}\n","import {\n ComponentMeta,\n JSONLikeType,\n} from \"@plasmicapp/host/registerComponent\";\nimport { capitalize } from \"../common\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { RichLayout, RichLayoutProps } from \"./RichLayout\";\n\nexport * from \"./RichLayout\";\nexport default RichLayout;\n\nfunction generateNavMenuType(\n isNested: boolean,\n remainingDepth: number,\n displayName?: string,\n defaultValue?: any[]\n): object & JSONLikeType<any> {\n return {\n displayName: displayName ? displayName : \"Nested items\",\n type: \"array\",\n defaultValue,\n advanced: isNested,\n itemType: {\n type: \"object\",\n nameFunc: (item: any) =>\n item.name || (!displayName ? \"Unnamed nested item\" : \"Unnamed item\"),\n fields: {\n path: \"href\",\n name: \"string\",\n condition: {\n advanced: true,\n displayName: \"Show only if\",\n type: \"exprEditor\" as any,\n },\n ...(remainingDepth === 0\n ? {}\n : {\n routes: generateNavMenuType(true, remainingDepth - 1),\n }),\n },\n },\n } as const;\n}\n\nconst richLayoutMeta: ComponentMeta<RichLayoutProps> = {\n name: \"hostless-rich-layout\",\n displayName: \"Rich App Layout\",\n props: {\n children: {\n type: \"slot\",\n unstable__isMainContentSlot: true,\n },\n actionsChildren: {\n type: \"slot\",\n hidePlaceholder: true,\n },\n title: {\n displayName: \"Title\",\n type: \"string\",\n defaultValue: \"App title\",\n },\n logo: {\n displayName: \"Logo\",\n type: \"imageUrl\",\n hidden: (ps) => !ps.logo,\n },\n logoElement: {\n type: \"slot\",\n displayName: \"Logo\",\n defaultValue: {\n type: \"img\",\n src: \"https://static1.plasmic.app/fake-logo.svg\",\n },\n hidden: (ps) => !!ps.logo,\n },\n navMenuItems: generateNavMenuType(false, 2, \"Nav menu items\", [\n {\n path: \"/\",\n name: \"Home\",\n },\n ]),\n\n layout: {\n displayName: \"Layout\",\n type: \"choice\",\n options: [\"side\", \"top\", \"mix\"].map((value) => ({\n value,\n label: capitalize(value),\n })),\n defaultValueHint: \"top\",\n },\n\n simpleNavTheme: {\n displayName: \"Theme\",\n type: \"object\",\n fields: {\n scheme: {\n type: \"choice\",\n options: [\"default\", \"primary\", \"light\", \"dark\", \"custom\"].map(\n (v) => ({\n label: capitalize(v),\n value: v,\n })\n ),\n defaultValueHint: \"default\",\n },\n customBgColor: {\n type: \"color\",\n displayName: \"Custom color\",\n hidden: (props) => !(props.simpleNavTheme?.scheme === \"custom\"),\n defaultValue: \"#D73B58\",\n },\n },\n },\n\n // Advanced, show later\n /*\n siderMenuType: {\n displayName: \"Sidebar mode\",\n type: \"choice\",\n options: [\"sub\", \"group\"].map((value) => ({\n value,\n label: capitalize(value),\n })),\n defaultValue: \"sub\",\n },\n contentWidth: {\n displayName: \"Content width\",\n type: \"choice\",\n options: [\"Fluid\", \"Fixed\"],\n defaultValueHint: \"Fluid\",\n },\n */\n fixedHeader: {\n displayName: \"Sticky header\",\n type: \"boolean\",\n hidden: (ps) => (ps.layout ?? \"top\") !== \"top\",\n defaultValueHint: false,\n },\n fixSiderbar: {\n displayName: \"Sticky sidebar\",\n type: \"boolean\",\n hidden: (ps) => (ps.layout ?? \"top\") !== \"side\",\n defaultValueHint: false,\n },\n /*\n showAvatarMenu: {\n displayName: \"Show avatar\",\n type: \"boolean\",\n defaultValue: true,\n },\n avatarLabel: {\n displayName: \"Avatar label\",\n type: \"string\",\n defaultValue: \"User Name\",\n },\n avatarImage: {\n displayName: \"Avatar image\",\n type: \"imageUrl\",\n defaultValue:\n \"https://gw.alipayobjects.com/zos/antfincdn/efFD%24IOql2/weixintupian_20170331104822.jpg\",\n },\n */\n menu: {\n displayName: \"Menu\",\n type: \"object\",\n fields: {\n defaultOpenAll: {\n displayName: \"Default open all\",\n type: \"boolean\",\n },\n hideMenuWhenCollapsed: {\n // displayName: \"\",\n type: \"boolean\",\n },\n },\n },\n },\n\n defaultStyles: {\n width: \"full-bleed\",\n height: \"stretch\",\n minHeight: \"100vh\",\n },\n\n importName: \"RichLayout\",\n importPath: \"@plasmicpkgs/plasmic-rich-components/skinny/rich-layout\",\n};\n\nexport function registerRichLayout(loader?: Registerable) {\n registerComponentHelper(loader, RichLayout, richLayoutMeta);\n}\n"],"names":["React","AnchorLink","__spreadProps","__spreadValues","_a","_b","useDataEnv","useRef","useIsClient","useState","useEffect","usePlasmicLink","theme","isLight","ProLayout","ConfigProvider","ProConfigProvider","Dropdown","LogoutOutlined","capitalize","registerComponentHelper"],"mappings":"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"}
@@ -68,7 +68,7 @@ var __objRest = (source, exclude) => {
68
68
  };
69
69
  function omitUndefined(x) {
70
70
  return Object.fromEntries(
71
- Object.entries(x).filter(([k, v]) => v !== void 0)
71
+ Object.entries(x).filter(([_k, v]) => v !== void 0)
72
72
  );
73
73
  }
74
74
  function processNavItems(navMenuItems) {
@@ -134,10 +134,12 @@ function RichLayout(_a) {
134
134
  }
135
135
  }, []);
136
136
  useEffect(() => {
137
- if (!ready)
137
+ if (!ready) {
138
138
  return;
139
- if (!ref.current)
139
+ }
140
+ if (!ref.current) {
140
141
  return;
142
+ }
141
143
  const selectedSubmenus = Array.from(
142
144
  ref.current.querySelectorAll(
143
145
  "ul > li.ant-menu-submenu.ant-menu-submenu-selected > div"
@@ -264,8 +266,9 @@ function RichLayout(_a) {
264
266
  return [actionsChildren];
265
267
  },
266
268
  menuFooterRender: (props) => {
267
- if (props == null ? void 0 : props.collapsed)
269
+ if (props == null ? void 0 : props.collapsed) {
268
270
  return void 0;
271
+ }
269
272
  return footerChildren;
270
273
  },
271
274
  onMenuHeaderClick: (e) => console.log(e),
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../src/widgets.tsx","../../src/rich-layout/RichLayout.tsx","../../src/rich-layout/index.tsx"],"sourcesContent":["import React from \"react\";\nexport const AnchorLink = React.forwardRef(function AnchorLink(\n props: React.ComponentProps<\"a\">,\n ref: React.Ref<HTMLAnchorElement>\n) {\n return <a {...props} ref={ref} />;\n});\n","import { LogoutOutlined } from \"@ant-design/icons\";\nimport type { MenuDataItem, ProLayoutProps } from \"@ant-design/pro-components\";\nimport { ProConfigProvider, ProLayout } from \"@ant-design/pro-components\";\nimport { useDataEnv, usePlasmicLink } from \"@plasmicapp/host\";\nimport { ConfigProvider, Dropdown, theme } from \"antd\";\nimport React, { ReactNode, useEffect, useRef, useState } from \"react\";\nimport { isLight, useIsClient } from \"../common\";\nimport { AnchorLink } from \"../widgets\";\n\nfunction omitUndefined(x: object) {\n return Object.fromEntries(\n Object.entries(x).filter(([k, v]) => v !== undefined)\n );\n}\n\ninterface NavMenuItem extends Omit<MenuDataItem, \"routes\"> {\n routes?: NavMenuItem[];\n}\n\nexport interface SimpleNavTheme {\n scheme?: \"default\" | \"light\" | \"dark\" | \"custom\" | \"primary\";\n customBgColor?: string;\n}\n\n/**\n * Filter items by condition, and add missing paths so that any added items are visible.\n */\nfunction processNavItems(navMenuItems: NavMenuItem[]): NavMenuItem[] {\n return navMenuItems\n .filter((item) => item.condition === undefined || item.condition)\n .map((item) => ({\n ...item,\n // We fill a default path because otherwise the item doesn't appear at all.\n path: item.path || \"/\",\n routes: item.routes ? processNavItems(item.routes) : undefined,\n }));\n}\n\nexport interface RichLayoutProps extends ProLayoutProps {\n navMenuItems?: NavMenuItem[];\n rootUrl?: string;\n actionsChildren?: ReactNode;\n footerChildren?: ReactNode;\n avatarLabel?: string;\n avatarImage?: string;\n showAvatarMenu?: boolean;\n simpleNavTheme?: SimpleNavTheme;\n logoElement?: ReactNode;\n}\n\n// width: 100% needed because parent is display: flex, which is needed for the min-height behavior.\nconst baseStyles = `\n.ant-pro-layout-bg-list {\n display: none;\n}\n.ant-pro-layout {\n display: flex;\n width: 100%;\n}\n.ant-pro-layout .ant-pro-layout-content {\n padding: 0;\n}\n`;\n\nexport function RichLayout({\n children,\n navMenuItems,\n rootUrl = \"/\",\n actionsChildren,\n footerChildren,\n avatarLabel,\n avatarImage,\n showAvatarMenu,\n className,\n simpleNavTheme,\n logo,\n logoElement,\n ...layoutProps\n}: RichLayoutProps) {\n const $ctx = useDataEnv();\n const ref = useRef<HTMLDivElement>(null);\n const isClient = useIsClient();\n const [pathname, setPathname] = useState<string | undefined>(undefined);\n const [openKeys, setOpenKeys] = useState<string[]>([]);\n const [ready, setReady] = useState(false);\n useEffect(() => {\n setTimeout(() => {\n setReady(true);\n }, 500);\n\n if (typeof location !== \"undefined\") {\n setPathname(location.pathname);\n }\n }, []);\n\n useEffect(() => {\n if (!ready) return;\n if (!ref.current) return;\n // open selected submenu (only opens the last one in the list!)\n const selectedSubmenus: string[] =\n (Array.from(\n ref.current.querySelectorAll(\n \"ul > li.ant-menu-submenu.ant-menu-submenu-selected > div\"\n )\n )\n .map((el) => el.getAttribute(\"data-menu-id\")?.split(\"/\").pop())\n .filter((i) => i)\n .map((i) => `/${i}`) as string[]) || [];\n setOpenKeys(selectedSubmenus);\n }, [ready]);\n\n // The usePlasmicLink function may be undefined, if host is not up to date\n const PlasmicLink = usePlasmicLink?.() ?? AnchorLink;\n const { token } = theme.useToken();\n const origTextColor = token.colorTextBase;\n function getNavBgColor(): string {\n const scheme = simpleNavTheme?.scheme ?? \"default\";\n switch (scheme) {\n case \"primary\":\n return token.colorPrimary;\n case \"dark\":\n // Ant default dark blue Menu color.\n return \"#011528\";\n case \"custom\":\n return simpleNavTheme?.customBgColor ?? token.colorBgBase;\n case \"light\":\n // Just use this sorta ugly gray if using 'light' scheme in 'dark' mode.\n // Otherwise using light scheme in light mode.\n return \"#fff\";\n case \"default\":\n return token.colorBgBase || \"#fff\";\n }\n }\n const navBgColor = getNavBgColor();\n // Dynamically determine whether we need to change the text to black/white or not, based on background color.\n // We don't want light-on-light or dark-on-dark, so if both isNavBgLight and isOrigTextLight are the same, then need to change.\n // If no need to change, we leave text color as is.\n const isNavBgLight = isLight(navBgColor);\n const isOrigTextLight = isLight(origTextColor);\n // Ant will interpret \"\" as defaulting to \"#fff\" for dark mode and \"#000\" in light mode.\n const navTextColor = isNavBgLight !== isOrigTextLight ? undefined : \"\";\n if (!isClient) {\n return null;\n }\n\n const layoutColorOverrides = isNavBgLight\n ? undefined\n : {\n colorBgCollapsedButton: navBgColor,\n colorTextCollapsedButtonHover: \"rgba(255,255,255,0.85)\",\n colorTextCollapsedButton: \"rgba(255,255,255,0.65)\",\n colorMenuBackground: navBgColor,\n colorBgMenuItemCollapsedHover: \"rgba(0,0,0,0.06)\",\n colorBgMenuItemCollapsedSelected: \"rgba(0,0,0,0.15)\",\n colorBgMenuItemCollapsedElevated: \"rgba(0,0,0,0.85)\",\n colorMenuItemDivider: \"rgba(255,255,255,0.15)\",\n colorBgMenuItemHover: \"rgba(0,0,0,0.06)\",\n colorBgMenuItemSelected: \"rgba(0,0,0,0.15)\",\n colorTextMenuSelected: \"#fff\",\n colorTextMenuItemHover: \"rgba(255,255,255,0.75)\",\n colorTextMenu: \"rgba(255,255,255,0.75)\",\n colorTextMenuSecondary: \"rgba(255,255,255,0.65)\",\n colorTextMenuTitle: \"rgba(255,255,255,0.95)\",\n colorTextMenuActive: \"rgba(255,255,255,0.95)\",\n colorTextSubMenuSelected: \"#fff\",\n };\n return (\n <div ref={ref} className={className} style={{ display: \"flex\" }}>\n {/* Remove the always-on fixed gradient background layer. */}\n <style>{baseStyles}</style>\n <ProLayout\n {...layoutProps}\n // This prevents setting a document title. Normally tries to set to either app title or page title (from routes meta).\n pageTitleRender={() => \"\"}\n logo={logo ?? logoElement}\n // Theme just the header. If you simply pass in navTheme=realDark, it affects all main content as well.\n //\n // What we're doing is telling Ant to use the dark mode algorithm. However, dark mode algorithm doesn't change\n // the seed tokens for colorTextBase and colorBgBase - it only fills in #fff and #000 for these if they are\n // unset (\"\"). So that's why further up we may be setting the text color to \"\".\n //\n // I think it doesn't matter too much what is the colorBgBase, since we are setting (Pro-specific) `tokens`\n // further down for actually setting the fill of the nav sections. What matters is the text color - if we're\n // showing a dark background, then we want the text to be white.\n //\n // We could specify darkAlgorithm to ConfigProvider, but IIRC Pro might be setting some of its own tokens\n // based on whether dark is being specified to the ProConfigProvider. So that's why we need that.\n //\n // ProConfigProvider does first read/inherit the theme/tokens from the surrounding ConfigProvider.\n headerRender={(_props, defaultDom) => (\n <ConfigProvider\n theme={{ token: omitUndefined({ colorTextBase: navTextColor }) }}\n >\n <ProConfigProvider dark={!isNavBgLight}>\n {defaultDom}\n </ProConfigProvider>\n </ConfigProvider>\n )}\n token={{\n header: omitUndefined({\n colorBgHeader: navBgColor,\n ...layoutColorOverrides,\n }),\n // Ideally, we'd do something similar to headerRender above, and just specify general dark mode to specify\n // whether all components/text should be light.\n // But for some reason it doesn't work, causing the bg color to be ignored (just the default dark Menu color),\n // *and* the text is just dark as well.\n // Haven't yet been able to unravel the pro components code to figure out the proper way to do this, so just\n // bluntly specifying tokens here, as recommended in some GitHub issue.\n sider: omitUndefined({\n colorMenuBackground: navBgColor,\n ...layoutColorOverrides,\n }),\n }}\n // Tweak defaults. ProLayout is janky and has terrible docs!\n layout={layoutProps.layout ?? \"top\"}\n fixedHeader={layoutProps.fixedHeader ?? false}\n fixSiderbar={\n // Doesn't stretch full height if you set this to false and you're in mix mode.\n layoutProps.layout === \"mix\"\n ? undefined\n : layoutProps.fixSiderbar ?? false\n }\n // This is always needed if you want layout mix to have effect and look any different from layout side - not clear why this should ever be false.\n splitMenus={layoutProps.layout === \"mix\"}\n route={{\n path: rootUrl,\n routes: navMenuItems ? processNavItems(navMenuItems) : undefined,\n }}\n location={{\n pathname,\n }}\n menu={{\n // collapsedShowGroupTitle: true,\n defaultOpenAll: false,\n // hideMenuWhenCollapsed: true,\n }}\n avatarProps={\n showAvatarMenu\n ? {\n src: avatarImage,\n size: \"small\",\n title: avatarLabel,\n render: (_props, dom) => {\n return (\n <Dropdown\n menu={{\n items: [\n {\n key: \"logout\",\n icon: <LogoutOutlined />,\n label: \"Sign out\",\n },\n ],\n }}\n >\n {dom}\n </Dropdown>\n );\n },\n }\n : undefined\n }\n actionsRender={(_props) => {\n return [actionsChildren];\n }}\n menuFooterRender={(props) => {\n if (props?.collapsed) return undefined;\n return footerChildren;\n }}\n onMenuHeaderClick={(e) => console.log(e)}\n openKeys={openKeys}\n onOpenChange={(keys) =>\n keys === false || !ready ? [] : setOpenKeys(keys)\n }\n selectedKeys={[$ctx?.pagePath]}\n menuItemRender={(item, dom) => (\n <PlasmicLink href={item.path}>{dom}</PlasmicLink>\n )}\n headerTitleRender={(logoEl, title, _) => {\n return (\n <PlasmicLink href={rootUrl}>\n {logoEl}\n {title}\n </PlasmicLink>\n );\n }}\n >\n {children}\n </ProLayout>\n </div>\n );\n}\n","import {\n ComponentMeta,\n JSONLikeType,\n} from \"@plasmicapp/host/registerComponent\";\nimport { capitalize } from \"../common\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { RichLayout, RichLayoutProps } from \"./RichLayout\";\n\nexport * from \"./RichLayout\";\nexport default RichLayout;\n\nfunction generateNavMenuType(\n isNested: boolean,\n remainingDepth: number,\n displayName?: string,\n defaultValue?: any[]\n): object & JSONLikeType<any> {\n return {\n displayName: displayName ? displayName : \"Nested items\",\n type: \"array\",\n defaultValue,\n advanced: isNested,\n itemType: {\n type: \"object\",\n nameFunc: (item: any) =>\n item.name || (!displayName ? \"Unnamed nested item\" : \"Unnamed item\"),\n fields: {\n path: \"href\",\n name: \"string\",\n condition: {\n advanced: true,\n displayName: \"Show only if\",\n type: \"exprEditor\" as any,\n },\n ...(remainingDepth === 0\n ? {}\n : {\n routes: generateNavMenuType(true, remainingDepth - 1),\n }),\n },\n },\n } as const;\n}\n\nconst richLayoutMeta: ComponentMeta<RichLayoutProps> = {\n name: \"hostless-rich-layout\",\n displayName: \"Rich App Layout\",\n props: {\n children: {\n type: \"slot\",\n unstable__isMainContentSlot: true,\n },\n actionsChildren: {\n type: \"slot\",\n hidePlaceholder: true,\n },\n title: {\n displayName: \"Title\",\n type: \"string\",\n defaultValue: \"App title\",\n },\n logo: {\n displayName: \"Logo\",\n type: \"imageUrl\",\n hidden: (ps) => !ps.logo,\n },\n logoElement: {\n type: \"slot\",\n displayName: \"Logo\",\n defaultValue: {\n type: \"img\",\n src: \"https://static1.plasmic.app/fake-logo.svg\",\n },\n hidden: (ps) => !!ps.logo,\n },\n navMenuItems: generateNavMenuType(false, 2, \"Nav menu items\", [\n {\n path: \"/\",\n name: \"Home\",\n },\n ]),\n\n layout: {\n displayName: \"Layout\",\n type: \"choice\",\n options: [\"side\", \"top\", \"mix\"].map((value) => ({\n value,\n label: capitalize(value),\n })),\n defaultValueHint: \"top\",\n },\n\n simpleNavTheme: {\n displayName: \"Theme\",\n type: \"object\",\n fields: {\n scheme: {\n type: \"choice\",\n options: [\"default\", \"primary\", \"light\", \"dark\", \"custom\"].map(\n (v) => ({\n label: capitalize(v),\n value: v,\n })\n ),\n defaultValueHint: \"default\",\n },\n customBgColor: {\n type: \"color\",\n displayName: \"Custom color\",\n hidden: (props) => !(props.simpleNavTheme?.scheme === \"custom\"),\n defaultValue: \"#D73B58\",\n },\n },\n },\n\n // Advanced, show later\n /*\n siderMenuType: {\n displayName: \"Sidebar mode\",\n type: \"choice\",\n options: [\"sub\", \"group\"].map((value) => ({\n value,\n label: capitalize(value),\n })),\n defaultValue: \"sub\",\n },\n contentWidth: {\n displayName: \"Content width\",\n type: \"choice\",\n options: [\"Fluid\", \"Fixed\"],\n defaultValueHint: \"Fluid\",\n },\n */\n fixedHeader: {\n displayName: \"Sticky header\",\n type: \"boolean\",\n hidden: (ps) => (ps.layout ?? \"top\") !== \"top\",\n defaultValueHint: false,\n },\n fixSiderbar: {\n displayName: \"Sticky sidebar\",\n type: \"boolean\",\n hidden: (ps) => (ps.layout ?? \"top\") !== \"side\",\n defaultValueHint: false,\n },\n /*\n showAvatarMenu: {\n displayName: \"Show avatar\",\n type: \"boolean\",\n defaultValue: true,\n },\n avatarLabel: {\n displayName: \"Avatar label\",\n type: \"string\",\n defaultValue: \"User Name\",\n },\n avatarImage: {\n displayName: \"Avatar image\",\n type: \"imageUrl\",\n defaultValue:\n \"https://gw.alipayobjects.com/zos/antfincdn/efFD%24IOql2/weixintupian_20170331104822.jpg\",\n },\n */\n menu: {\n displayName: \"Menu\",\n type: \"object\",\n fields: {\n defaultOpenAll: {\n displayName: \"Default open all\",\n type: \"boolean\",\n },\n hideMenuWhenCollapsed: {\n // displayName: \"\",\n type: \"boolean\",\n },\n },\n },\n },\n\n defaultStyles: {\n width: \"full-bleed\",\n height: \"stretch\",\n minHeight: \"100vh\",\n },\n\n importName: \"RichLayout\",\n importPath: \"@plasmicpkgs/plasmic-rich-components/skinny/rich-layout\",\n};\n\nexport function registerRichLayout(loader?: Registerable) {\n registerComponentHelper(loader, RichLayout, richLayoutMeta);\n}\n"],"names":["AnchorLink","__spreadProps","__spreadValues","_a","_b"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../src/widgets.tsx","../../src/rich-layout/RichLayout.tsx","../../src/rich-layout/index.tsx"],"sourcesContent":["import React from \"react\";\nexport const AnchorLink = React.forwardRef(function AnchorLink(\n props: React.ComponentProps<\"a\">,\n ref: React.Ref<HTMLAnchorElement>\n) {\n return <a {...props} ref={ref} />;\n});\n","import { LogoutOutlined } from \"@ant-design/icons\";\nimport type { MenuDataItem, ProLayoutProps } from \"@ant-design/pro-components\";\nimport { ProConfigProvider, ProLayout } from \"@ant-design/pro-components\";\nimport { useDataEnv, usePlasmicLink } from \"@plasmicapp/host\";\nimport { ConfigProvider, Dropdown, theme } from \"antd\";\nimport React, { ReactNode, useEffect, useRef, useState } from \"react\";\nimport { isLight, useIsClient } from \"../common\";\nimport { AnchorLink } from \"../widgets\";\n\nfunction omitUndefined(x: object) {\n return Object.fromEntries(\n Object.entries(x).filter(([_k, v]) => v !== undefined)\n );\n}\n\ninterface NavMenuItem extends Omit<MenuDataItem, \"routes\"> {\n routes?: NavMenuItem[];\n}\n\nexport interface SimpleNavTheme {\n scheme?: \"default\" | \"light\" | \"dark\" | \"custom\" | \"primary\";\n customBgColor?: string;\n}\n\n/**\n * Filter items by condition, and add missing paths so that any added items are visible.\n */\nfunction processNavItems(navMenuItems: NavMenuItem[]): NavMenuItem[] {\n return navMenuItems\n .filter((item) => item.condition === undefined || item.condition)\n .map((item) => ({\n ...item,\n // We fill a default path because otherwise the item doesn't appear at all.\n path: item.path || \"/\",\n routes: item.routes ? processNavItems(item.routes) : undefined,\n }));\n}\n\nexport interface RichLayoutProps extends ProLayoutProps {\n navMenuItems?: NavMenuItem[];\n rootUrl?: string;\n actionsChildren?: ReactNode;\n footerChildren?: ReactNode;\n avatarLabel?: string;\n avatarImage?: string;\n showAvatarMenu?: boolean;\n simpleNavTheme?: SimpleNavTheme;\n logoElement?: ReactNode;\n}\n\n// width: 100% needed because parent is display: flex, which is needed for the min-height behavior.\nconst baseStyles = `\n.ant-pro-layout-bg-list {\n display: none;\n}\n.ant-pro-layout {\n display: flex;\n width: 100%;\n}\n.ant-pro-layout .ant-pro-layout-content {\n padding: 0;\n}\n`;\n\nexport function RichLayout({\n children,\n navMenuItems,\n rootUrl = \"/\",\n actionsChildren,\n footerChildren,\n avatarLabel,\n avatarImage,\n showAvatarMenu,\n className,\n simpleNavTheme,\n logo,\n logoElement,\n ...layoutProps\n}: RichLayoutProps) {\n const $ctx = useDataEnv();\n const ref = useRef<HTMLDivElement>(null);\n const isClient = useIsClient();\n const [pathname, setPathname] = useState<string | undefined>(undefined);\n const [openKeys, setOpenKeys] = useState<string[]>([]);\n const [ready, setReady] = useState(false);\n useEffect(() => {\n setTimeout(() => {\n setReady(true);\n }, 500);\n\n if (typeof location !== \"undefined\") {\n setPathname(location.pathname);\n }\n }, []);\n\n useEffect(() => {\n if (!ready) {\n return;\n }\n if (!ref.current) {\n return;\n }\n // open selected submenu (only opens the last one in the list!)\n const selectedSubmenus: string[] =\n (Array.from(\n ref.current.querySelectorAll(\n \"ul > li.ant-menu-submenu.ant-menu-submenu-selected > div\"\n )\n )\n .map((el) => el.getAttribute(\"data-menu-id\")?.split(\"/\").pop())\n .filter((i) => i)\n .map((i) => `/${i}`) as string[]) || [];\n setOpenKeys(selectedSubmenus);\n }, [ready]);\n\n // The usePlasmicLink function may be undefined, if host is not up to date\n const PlasmicLink = usePlasmicLink?.() ?? AnchorLink;\n const { token } = theme.useToken();\n const origTextColor = token.colorTextBase;\n function getNavBgColor(): string {\n const scheme = simpleNavTheme?.scheme ?? \"default\";\n switch (scheme) {\n case \"primary\":\n return token.colorPrimary;\n case \"dark\":\n // Ant default dark blue Menu color.\n return \"#011528\";\n case \"custom\":\n return simpleNavTheme?.customBgColor ?? token.colorBgBase;\n case \"light\":\n // Just use this sorta ugly gray if using 'light' scheme in 'dark' mode.\n // Otherwise using light scheme in light mode.\n return \"#fff\";\n case \"default\":\n return token.colorBgBase || \"#fff\";\n }\n }\n const navBgColor = getNavBgColor();\n // Dynamically determine whether we need to change the text to black/white or not, based on background color.\n // We don't want light-on-light or dark-on-dark, so if both isNavBgLight and isOrigTextLight are the same, then need to change.\n // If no need to change, we leave text color as is.\n const isNavBgLight = isLight(navBgColor);\n const isOrigTextLight = isLight(origTextColor);\n // Ant will interpret \"\" as defaulting to \"#fff\" for dark mode and \"#000\" in light mode.\n const navTextColor = isNavBgLight !== isOrigTextLight ? undefined : \"\";\n if (!isClient) {\n return null;\n }\n\n const layoutColorOverrides = isNavBgLight\n ? undefined\n : {\n colorBgCollapsedButton: navBgColor,\n colorTextCollapsedButtonHover: \"rgba(255,255,255,0.85)\",\n colorTextCollapsedButton: \"rgba(255,255,255,0.65)\",\n colorMenuBackground: navBgColor,\n colorBgMenuItemCollapsedHover: \"rgba(0,0,0,0.06)\",\n colorBgMenuItemCollapsedSelected: \"rgba(0,0,0,0.15)\",\n colorBgMenuItemCollapsedElevated: \"rgba(0,0,0,0.85)\",\n colorMenuItemDivider: \"rgba(255,255,255,0.15)\",\n colorBgMenuItemHover: \"rgba(0,0,0,0.06)\",\n colorBgMenuItemSelected: \"rgba(0,0,0,0.15)\",\n colorTextMenuSelected: \"#fff\",\n colorTextMenuItemHover: \"rgba(255,255,255,0.75)\",\n colorTextMenu: \"rgba(255,255,255,0.75)\",\n colorTextMenuSecondary: \"rgba(255,255,255,0.65)\",\n colorTextMenuTitle: \"rgba(255,255,255,0.95)\",\n colorTextMenuActive: \"rgba(255,255,255,0.95)\",\n colorTextSubMenuSelected: \"#fff\",\n };\n return (\n <div ref={ref} className={className} style={{ display: \"flex\" }}>\n {/* Remove the always-on fixed gradient background layer. */}\n <style>{baseStyles}</style>\n <ProLayout\n {...layoutProps}\n // This prevents setting a document title. Normally tries to set to either app title or page title (from routes meta).\n pageTitleRender={() => \"\"}\n logo={logo ?? logoElement}\n // Theme just the header. If you simply pass in navTheme=realDark, it affects all main content as well.\n //\n // What we're doing is telling Ant to use the dark mode algorithm. However, dark mode algorithm doesn't change\n // the seed tokens for colorTextBase and colorBgBase - it only fills in #fff and #000 for these if they are\n // unset (\"\"). So that's why further up we may be setting the text color to \"\".\n //\n // I think it doesn't matter too much what is the colorBgBase, since we are setting (Pro-specific) `tokens`\n // further down for actually setting the fill of the nav sections. What matters is the text color - if we're\n // showing a dark background, then we want the text to be white.\n //\n // We could specify darkAlgorithm to ConfigProvider, but IIRC Pro might be setting some of its own tokens\n // based on whether dark is being specified to the ProConfigProvider. So that's why we need that.\n //\n // ProConfigProvider does first read/inherit the theme/tokens from the surrounding ConfigProvider.\n headerRender={(_props, defaultDom) => (\n <ConfigProvider\n theme={{ token: omitUndefined({ colorTextBase: navTextColor }) }}\n >\n <ProConfigProvider dark={!isNavBgLight}>\n {defaultDom}\n </ProConfigProvider>\n </ConfigProvider>\n )}\n token={{\n header: omitUndefined({\n colorBgHeader: navBgColor,\n ...layoutColorOverrides,\n }),\n // Ideally, we'd do something similar to headerRender above, and just specify general dark mode to specify\n // whether all components/text should be light.\n // But for some reason it doesn't work, causing the bg color to be ignored (just the default dark Menu color),\n // *and* the text is just dark as well.\n // Haven't yet been able to unravel the pro components code to figure out the proper way to do this, so just\n // bluntly specifying tokens here, as recommended in some GitHub issue.\n sider: omitUndefined({\n colorMenuBackground: navBgColor,\n ...layoutColorOverrides,\n }),\n }}\n // Tweak defaults. ProLayout is janky and has terrible docs!\n layout={layoutProps.layout ?? \"top\"}\n fixedHeader={layoutProps.fixedHeader ?? false}\n fixSiderbar={\n // Doesn't stretch full height if you set this to false and you're in mix mode.\n layoutProps.layout === \"mix\"\n ? undefined\n : layoutProps.fixSiderbar ?? false\n }\n // This is always needed if you want layout mix to have effect and look any different from layout side - not clear why this should ever be false.\n splitMenus={layoutProps.layout === \"mix\"}\n route={{\n path: rootUrl,\n routes: navMenuItems ? processNavItems(navMenuItems) : undefined,\n }}\n location={{\n pathname,\n }}\n menu={{\n // collapsedShowGroupTitle: true,\n defaultOpenAll: false,\n // hideMenuWhenCollapsed: true,\n }}\n avatarProps={\n showAvatarMenu\n ? {\n src: avatarImage,\n size: \"small\",\n title: avatarLabel,\n render: (_props, dom) => {\n return (\n <Dropdown\n menu={{\n items: [\n {\n key: \"logout\",\n icon: <LogoutOutlined />,\n label: \"Sign out\",\n },\n ],\n }}\n >\n {dom}\n </Dropdown>\n );\n },\n }\n : undefined\n }\n actionsRender={(_props) => {\n return [actionsChildren];\n }}\n menuFooterRender={(props) => {\n if (props?.collapsed) {\n return undefined;\n }\n return footerChildren;\n }}\n onMenuHeaderClick={(e) => console.log(e)}\n openKeys={openKeys}\n onOpenChange={(keys) =>\n keys === false || !ready ? [] : setOpenKeys(keys)\n }\n selectedKeys={[$ctx?.pagePath]}\n menuItemRender={(item, dom) => (\n <PlasmicLink href={item.path}>{dom}</PlasmicLink>\n )}\n headerTitleRender={(logoEl, title, _) => {\n return (\n <PlasmicLink href={rootUrl}>\n {logoEl}\n {title}\n </PlasmicLink>\n );\n }}\n >\n {children}\n </ProLayout>\n </div>\n );\n}\n","import {\n ComponentMeta,\n JSONLikeType,\n} from \"@plasmicapp/host/registerComponent\";\nimport { capitalize } from \"../common\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\nimport { RichLayout, RichLayoutProps } from \"./RichLayout\";\n\nexport * from \"./RichLayout\";\nexport default RichLayout;\n\nfunction generateNavMenuType(\n isNested: boolean,\n remainingDepth: number,\n displayName?: string,\n defaultValue?: any[]\n): object & JSONLikeType<any> {\n return {\n displayName: displayName ? displayName : \"Nested items\",\n type: \"array\",\n defaultValue,\n advanced: isNested,\n itemType: {\n type: \"object\",\n nameFunc: (item: any) =>\n item.name || (!displayName ? \"Unnamed nested item\" : \"Unnamed item\"),\n fields: {\n path: \"href\",\n name: \"string\",\n condition: {\n advanced: true,\n displayName: \"Show only if\",\n type: \"exprEditor\" as any,\n },\n ...(remainingDepth === 0\n ? {}\n : {\n routes: generateNavMenuType(true, remainingDepth - 1),\n }),\n },\n },\n } as const;\n}\n\nconst richLayoutMeta: ComponentMeta<RichLayoutProps> = {\n name: \"hostless-rich-layout\",\n displayName: \"Rich App Layout\",\n props: {\n children: {\n type: \"slot\",\n unstable__isMainContentSlot: true,\n },\n actionsChildren: {\n type: \"slot\",\n hidePlaceholder: true,\n },\n title: {\n displayName: \"Title\",\n type: \"string\",\n defaultValue: \"App title\",\n },\n logo: {\n displayName: \"Logo\",\n type: \"imageUrl\",\n hidden: (ps) => !ps.logo,\n },\n logoElement: {\n type: \"slot\",\n displayName: \"Logo\",\n defaultValue: {\n type: \"img\",\n src: \"https://static1.plasmic.app/fake-logo.svg\",\n },\n hidden: (ps) => !!ps.logo,\n },\n navMenuItems: generateNavMenuType(false, 2, \"Nav menu items\", [\n {\n path: \"/\",\n name: \"Home\",\n },\n ]),\n\n layout: {\n displayName: \"Layout\",\n type: \"choice\",\n options: [\"side\", \"top\", \"mix\"].map((value) => ({\n value,\n label: capitalize(value),\n })),\n defaultValueHint: \"top\",\n },\n\n simpleNavTheme: {\n displayName: \"Theme\",\n type: \"object\",\n fields: {\n scheme: {\n type: \"choice\",\n options: [\"default\", \"primary\", \"light\", \"dark\", \"custom\"].map(\n (v) => ({\n label: capitalize(v),\n value: v,\n })\n ),\n defaultValueHint: \"default\",\n },\n customBgColor: {\n type: \"color\",\n displayName: \"Custom color\",\n hidden: (props) => !(props.simpleNavTheme?.scheme === \"custom\"),\n defaultValue: \"#D73B58\",\n },\n },\n },\n\n // Advanced, show later\n /*\n siderMenuType: {\n displayName: \"Sidebar mode\",\n type: \"choice\",\n options: [\"sub\", \"group\"].map((value) => ({\n value,\n label: capitalize(value),\n })),\n defaultValue: \"sub\",\n },\n contentWidth: {\n displayName: \"Content width\",\n type: \"choice\",\n options: [\"Fluid\", \"Fixed\"],\n defaultValueHint: \"Fluid\",\n },\n */\n fixedHeader: {\n displayName: \"Sticky header\",\n type: \"boolean\",\n hidden: (ps) => (ps.layout ?? \"top\") !== \"top\",\n defaultValueHint: false,\n },\n fixSiderbar: {\n displayName: \"Sticky sidebar\",\n type: \"boolean\",\n hidden: (ps) => (ps.layout ?? \"top\") !== \"side\",\n defaultValueHint: false,\n },\n /*\n showAvatarMenu: {\n displayName: \"Show avatar\",\n type: \"boolean\",\n defaultValue: true,\n },\n avatarLabel: {\n displayName: \"Avatar label\",\n type: \"string\",\n defaultValue: \"User Name\",\n },\n avatarImage: {\n displayName: \"Avatar image\",\n type: \"imageUrl\",\n defaultValue:\n \"https://gw.alipayobjects.com/zos/antfincdn/efFD%24IOql2/weixintupian_20170331104822.jpg\",\n },\n */\n menu: {\n displayName: \"Menu\",\n type: \"object\",\n fields: {\n defaultOpenAll: {\n displayName: \"Default open all\",\n type: \"boolean\",\n },\n hideMenuWhenCollapsed: {\n // displayName: \"\",\n type: \"boolean\",\n },\n },\n },\n },\n\n defaultStyles: {\n width: \"full-bleed\",\n height: \"stretch\",\n minHeight: \"100vh\",\n },\n\n importName: \"RichLayout\",\n importPath: \"@plasmicpkgs/plasmic-rich-components/skinny/rich-layout\",\n};\n\nexport function registerRichLayout(loader?: Registerable) {\n registerComponentHelper(loader, RichLayout, richLayoutMeta);\n}\n"],"names":["AnchorLink","__spreadProps","__spreadValues","_a","_b"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var commonPropTypes = require('../common-prop-types-193ce561.cjs.js');
5
+ var commonPropTypes = require('../common-prop-types-94b20130.cjs.js');
6
6
  var utils = require('../utils-65c486f0.cjs.js');
7
7
  var dataSources = require('@plasmicapp/data-sources');
8
8
  var antd = require('antd');
@@ -10,7 +10,7 @@ var classNames = require('classnames');
10
10
  var groupBy = require('lodash/groupBy');
11
11
  var React = require('react');
12
12
  var fieldReactUtils = require('../field-react-utils-c717ec94.cjs.js');
13
- var formatting = require('../formatting-6dc71cdd.cjs.js');
13
+ var formatting = require('../formatting-939d0aa3.cjs.js');
14
14
  require('../common-e1d76791.cjs.js');
15
15
  require('@ctrl/tinycolor');
16
16
  require('@plasmicapp/host/registerComponent');
@@ -132,7 +132,6 @@ function RichList(props) {
132
132
  header,
133
133
  footer,
134
134
  rowActions = [],
135
- title,
136
135
  pageSize = 10,
137
136
  hideSearch,
138
137
  rowKey,
@@ -147,7 +146,6 @@ function RichList(props) {
147
146
  "header",
148
147
  "footer",
149
148
  "rowActions",
150
- "title",
151
149
  "pageSize",
152
150
  "hideSearch",
153
151
  "rowKey",
@@ -165,9 +163,8 @@ function RichList(props) {
165
163
  data,
166
164
  props
167
165
  );
168
- React.useRef();
169
166
  const linkTo = typeof props.linkTo === "function" ? props.linkTo : void 0;
170
- const { finalData, search, setSearch, setSortState } = fieldReactUtils.useSortedFilteredData(
167
+ const { finalData, search, setSearch } = fieldReactUtils.useSortedFilteredData(
171
168
  data,
172
169
  normalized
173
170
  );
@@ -197,7 +194,7 @@ function RichList(props) {
197
194
  pageSize,
198
195
  showSizeChanger: false
199
196
  } : false,
200
- renderItem: (record, index) => {
197
+ renderItem: (record) => {
201
198
  var _a2;
202
199
  const actions = fieldReactUtils.renderActions(rowActions, record, data, rowKey);
203
200
  const image = utils.maybe(
@@ -223,11 +220,13 @@ function RichList(props) {
223
220
  }
224
221
  );
225
222
  function makeLinkWrapper() {
226
- if ((actions != null ? actions : []).length > 0)
223
+ if ((actions != null ? actions : []).length > 0) {
227
224
  return void 0;
225
+ }
228
226
  const href = linkTo == null ? void 0 : linkTo(record);
229
- if (!href && !onRowClick)
227
+ if (!href && !onRowClick) {
230
228
  return void 0;
229
+ }
231
230
  const _linkWrapper = (x) => /* @__PURE__ */ React__default.default.createElement(
232
231
  "a",
233
232
  {