public GraphQLContentOptions ConfigurePart(string partName, Action <GraphQLContentPartOption> action)
        {
            var option = new GraphQLContentPartOption(partName);

            action(option);

            PartOptions = PartOptions.Union(new[] { option });

            return(this);
        }
        public GraphQLContentOptions ConfigurePart <TContentPart>(Action <GraphQLContentPartOption> action)
            where TContentPart : ContentPart
        {
            var option = new GraphQLContentPartOption <TContentPart>();

            action(option);

            PartOptions = PartOptions.Union(new[] { option });

            return(this);
        }
        public bool IsCollapsedByDefault(ContentTypePartDefinition definition)
        {
            var contentType = definition.ContentTypeDefinition.Name;
            var partName    = definition.PartDefinition.Name;

            if (contentType == partName)
            {
                return(true);
            }

            var contentTypeOption = ContentTypeOptions.FirstOrDefault(ctp => ctp.ContentType == contentType);

            if (contentTypeOption != null)
            {
                if (contentTypeOption.Collapse)
                {
                    return(true);
                }

                var contentTypePartOption = contentTypeOption.PartOptions.FirstOrDefault(p => p.Name == partName);

                if (contentTypePartOption != null)
                {
                    if (contentTypePartOption.Collapse)
                    {
                        return(true);
                    }
                }
            }

            var contentPartOption = PartOptions.FirstOrDefault(p => p.Name == partName);

            if (contentPartOption != null)
            {
                if (contentPartOption.Collapse)
                {
                    return(true);
                }
            }

            return(false);
        }